🚀 Highlights

  • #33079: Revamp tabs & follow ARIA 1.1 practices
  • #33354: Column Striping Feature for Tables
  • #33421: Revamp Scrollspy using Intersection observer
  • #33606: Add .form-check-reverse modifier class
  • #34334: make-col-ready(): remove the unused $gutter variable
  • #34443: Convert navbar to CSS variables
  • #34487: Docs offcanvas navbar
  • #34547: Prefer Linux-specific fonts over Arial
  • #34600: Convert buttons to CSS variables
  • #34622: Convert tooltips and popovers to CSS vars
  • #34644: Always set the CSS variables for gutters in containers
  • #34942: Move reassigned Sass maps for colors to another stylesheet
  • #35055: Add color and border-color CSS variables to tables
  • #35077: Manipulator: Add JSON parse support
  • #35153: Reset z-index on .navbar-expand .offcanvas and prevent box-shadow when collapsed
  • #35399: Convert pagination component to CSS variables
  • #35401: Convert alerts to CSS variables
  • #35402: Convert badges to CSS variables
  • #35409: Convert dropdowns to CSS variables
  • #35514: Popover.js: Accept empty content through data-bs-content
  • #35518: Add sticky bottom utility
  • #35736: v5.2.0 design refresh, plus responsive offcanvas classes
  • #35893: Add centered dropdown and dropup options
  • #35908: Remove thicker border on table thead elements
  • #35979: Adjust border-radius values and add some new utilities
  • #36242: Add new .text-bg-{color} helpers

🚀 Features

  • #33354: Column Striping Feature for Tables
  • #33421: Revamp Scrollspy using Intersection observer
  • #33606: Add .form-check-reverse modifier class
  • #34519: Add a template factory helper to handle all template cases
  • #35077: Manipulator: Add JSON parse support
  • #35514: Popover.js: Accept empty content through data-bs-content
  • #35518: Add sticky bottom utility
  • #35893: Add centered dropdown and dropup options
  • #36272: Toast: provide isShown method

🎨 CSS

  • #32840: Support floating labels on .form-control-plaintext
  • #33606: Add .form-check-reverse modifier class
  • #34334: make-col-ready(): remove the unused $gutter variable
  • #34443: Convert navbar to CSS variables
  • #34547: Prefer Linux-specific fonts over Arial
  • #34600: Convert buttons to CSS variables
  • #34622: Convert tooltips and popovers to CSS vars
  • #34627: Remove tooltip and popover styling as it is handled by Popper
  • #34644: Always set the CSS variables for gutters in containers
  • #34863: Color input validation icon
  • #34942: Move reassigned Sass maps for colors to another stylesheet
  • #35055: Add color and border-color CSS variables to tables
  • #35082: Set cursor: default on disabled .form-check-label
  • #35085: Fixes missing variable issue with media-breakpoint-only
  • #35153: Reset z-index on .navbar-expand .offcanvas and prevent box-shadow when collapsed
  • #35230: Don't override CSS direction in code elements
  • #35231: Ensure sufficient contrast in accordion-item
  • #35232: Drop prefixed version of ::file-selector-button
  • #35326: Correctly implement RFS in :root CSS variable for $body-font-size
  • #35399: Convert pagination component to CSS variables
  • #35401: Convert alerts to CSS variables
  • #35402: Convert badges to CSS variables
  • #35403: Convert breadcrumbs to CSS variables
  • #35406: Bring back webkit calendar picker indicator for datalists
  • #35409: Convert dropdowns to CSS variables
  • #35428: Convert border utilities to CSS variables
  • #35466: Fix typo in $purples
  • #35467: Add missing border-radius for btn-group
  • #35484: Reprocess inline SVGs with the latest SVGO
  • #35491: Rely on border-width for <hr> size
  • #35518: Add sticky bottom utility
  • #35533: docs: Move gap utility API from "Flex" to "Spacing"
  • #35554: Separate modal click functionality, utilizing backdrop callback
  • #35571: Fix alerts color
  • #35592: move theme-colors (vars+map) after color tints definitions
  • #35676: Add black to colors map
  • #35740: Add !important property to colored links
  • #35759: Fix position of .list-group-item-action
  • #35804: Allow to set active and disabled class also to .page-link
  • #35822: Apply list group numbering to all items
  • #35825: Correct the horizontal padding on grid containers
  • #35829: New CSS variable for Navbars
  • #35844: Fixed border radius var name and .show target in buttons
  • #35850: Rename dropdown-shadow to dropdown-box-shadow for consistency
  • #35858: Add null modal-footer-bg variable
  • #35859: Add z-index for .toast-container
  • #35862: Convert list group to CSS variables
  • #35886: Replace non-existent --bs-btn-padding by --bs-btn-padding-{x|y}
  • #35894: Base .text-muted on body color
  • #35907: Use all dropdowns CSS variables
  • #35908: Remove thicker border on table thead elements
  • #35914: Fix dropdowns
  • #35917: Define Pagination font size CSS var
  • #35918: RTL arrows for popovers and tooltips
  • #35921: Split CSS vars for padding values
  • #35932: v5.2 border-width is disabled
  • #35943: Add missing root border opacity CSS var
  • #35960: Convert spinners to CSS variables
  • #35961: Convert toasts to CSS variables
  • #35962: Convert progress bars to CSS variables
  • #35973: Fix dropdowns
  • #35976: Fix space between popover's arrow and triggering element
  • #35979: Adjust border-radius values and add some new utilities
  • #35981: Add additional root variables, rename $variable-prefix to $prefix
  • #35984: Update docs syntax colors head of dark mode
  • #35994: Update $border-color to use rgba()
  • #35995: Ignore warning for .navbar-light deprecation
  • #35996: Add some calc() for manipulating new CSS variable version of border-width
  • #36003: Set opacity on dropdown-divider for now
  • #36018: Some CSS fixes
  • #36038: v5.2.0 migration updates
  • #36058: Fix proposal for .dropstart
  • #36070: Popover : New CSS var
  • #36071: Train PR: CSS variables for accordion, cards, navs, and modals
  • #36082: Fix duplicate border radius CSS var definition
  • #36083: Reuse all breadcrumb CSS vars available
  • #36093: Adding @include font-size when not
  • #36098: Use new CSS vars
  • #36100: Adding CSS var to list-group-item-action
  • #36105: Fix for missing CSS variables on .navbar-nav
  • #36126: Use the border-color property instead of the CSS variable in border color utilities
  • #36145: Improve use of CSS vars in Toasts
  • #36148: Add CSS vars for accordions
  • #36149: Modal : Changing the CSS var management
  • #36157: Add $input-disabled-color Sass variable
  • #36179: CSS : Minor fixes
  • #36202: Update _breakpoints.scss
  • #36220: Clean up last $variable-prefix usages
  • #36238: Revert border-color change
  • #36239: Iterate on border utilities
  • #36242: Add new .text-bg-{color} helpers
  • #36277: Fix proposal for Tooltips
  • #36296: Remove leftover abbr styles in Reboot for tooltips

️ JavaScript

  • #31607: Use Babel and ES6 in docs JS files
  • #32692: Clean tooltip component unneeded functionality
  • #32999: Extract Carousel's swipe functionality to a separate Class
  • #33079: Revamp tabs & follow ARIA 1.1 practices
  • #33421: Revamp Scrollspy using Intersection observer
  • #33872: Extract Component config functionality to a separate class
  • #34509: build: read & dynamically resolve imports on plugins build
  • #34519: Add a template factory helper to handle all template cases
  • #34945: Carousel cleanup & refactoring
  • #35077: Manipulator: Add JSON parse support
  • #35127: tooltip.js: use array.includes instead of for iteration
  • #35141: Modal tweaks & cleanup
  • #35156: Collapse: refactor active children handling
  • #35157: Dropdown remove redundant code
  • #35161: Swipe: add test to ensure that it ignores pinch events
  • #35183: JS: minor refactoring
  • #35388: Scrollbar: remove margin/padding properties properly
  • #35400: Tooltip: Some more changes
  • #35410: BaseComponent: add a couple more tests
  • #35419: Alert: add a couple more tests
  • #35440: Tooltip: remove leftover method
  • #35441: Fix popover arrow & tooltip template after the setContent addition
  • #35448: Dropdown tests: Use a function to improve readability
  • #35456: Tooltip: remove title attribute before show & add tests
  • #35492: ScrollBar.js. Minor refactoring and add test
  • #35500: Dropdown: fix toggle focus after dropdown is hidden using the ESC button
  • #35506: build/postcss.config.js: minor tweaks
  • #35507: Toast: join multiple classList calls
  • #35510: util/index.js: minor refactoring
  • #35511: Tab: minor refactoring
  • #35512: Scrollspy: minor refactoring
  • #35514: Popover.js: Accept empty content through data-bs-content
  • #35527: Popover/Tooltip: Fix vertical alignment on arrow of tip elements
  • #35540: Tooltip: remove extraneous call to _getConfig()
  • #35546: More tooltip refactoring
  • #35554: Separate modal click functionality, utilizing backdrop callback
  • #35559: Event handler: replace deprecated function & merge new Event with new CustomEvent
  • #35589: Remove explicit use of aria-hidden for offcanvas when closed
  • #35590: Assorted JS cleanup
  • #35682: fix isVisible behavior with new chrome version
  • #35684: Selector Engine: improve parents method to utilize newer JS native methods
  • #35689: Optimize jQueryInterface in Collapse
  • #35734: src/tooltip.js Optimization
  • #35748: Dropdown.js optimizations
  • #35752: Dropdown cleanup and fixes
  • #35753: Carousel tweaks
  • #35754: Event Handler cleanup
  • #35766: Dropdown: use a combined selector to filter not shown instances
  • #35832: Add static backdrop to offcanvas
  • #35856: Make event name helper and use it on tooltip & popover to reduce dist sizes
  • #35866: Dropdown: use a better selector to avoid triggering click if button is disabled
  • #35870: Dropdown: Simplify dataKeyApiHandler
  • #35871: Carousel tweaks
  • #35893: Add centered dropdown and dropup options
  • #35902: Modal: refactor listeners to reduce some code noise
  • #35930: Carousel patches
  • #35973: Fix dropdowns
  • #35983: Carousel tweaks
  • #35990: Carousel patches
  • #35991: Patch dropdown.js
  • #36028: Dropdown test
  • #36169: Handle disabled focused tabs with tab JavaScript plugin
  • #36186: EventHandler: change check method for custom events, avoiding regex
  • #36217: Document incompatibilities between Bootstrap JS and React/.etc
  • #36272: Toast: provide isShown method
  • #36273: Separate docs js assets
  • #36324: Revert backdrop utilization, handling clicks over modal

📖 Docs

  • #31337: JS docs formatting tweaks
  • #31607: Use Babel and ES6 in docs JS files
  • #32953: Replace AnchorJS with a Hugo render hook
  • #34487: Docs offcanvas navbar
  • #35124: Update NuGet docs to specify only .NET Framework projects are supported
  • #35154: Add top placement info to offcanvas docs
  • #35160: Update typography.md to remove an unnecessary <abbr> tag
  • #35223: Add missing role="search" and type="search" in navbar doc and examples
  • #35234: images.md: remove zero-width space
  • #35236: Fix typo in RTL Hello World! sentence
  • #35264: fix(offcanvas): Add missing titles class
  • #35320: Update import stacks required for modifying utilities
  • #35327: floating-labels: remove aria-label in the select example
  • #35328: Fix spacing utility classes mentioned in navbar supported content documentation
  • #35348: Fix typo in vertical alignment of table cells
  • #35373: Add missing scss/maps imports
  • #35414: Fix variable name in Sass customizing section
  • #35434: Breadcrumb docs: drop confusing currentColor and add new callout
  • #35446: Update edge-to-edge design instructions
  • #35468: Fix variable name in form overview docs
  • #35486: Update api.md
  • #35497: docs: add Tabler Icons to list of icon packs
  • #35532: docs: Add responsive variations for align-content-between
  • #35556: docs: Use param to set Bootstrap version in Contents page
  • #35563: docs: A fix for CSS Variables and some proposal
  • #35579: docs: add reference to sticky-xxl utils
  • #35587: Add note to carousel crossfade docs about bg color
  • #35588: Docs: Strengthen and expand note about dynamic tabs with dropdown menus
  • #35644: docs: add a StackBlitz "Try It" button in code examples
  • #35647: Update cspell config
  • #35649: Docs: group together reusable CSS for examples in a single stylesheet
  • #35696: Docs - Remove duplicate Octicons entry in icons list
  • #35713: Remove incorrect statement about the disabled attribute on <form>
  • #35730: Add Spanish translation
  • #35735: Change X to Extra
  • #35736: v5.2.0 design refresh, plus responsive offcanvas classes
  • #35741: docs: remove moot autocomplete attributes
  • #35775: Fix dropdown docs about autoclose and esc key.
  • #35778: Fixed typo in documentation form validation section
  • #35814: Remove remaining .navbar-light classes
  • #35818: code indentation in readme
  • #35827: Fixes #32082
  • #35828: Fix typo in Badges CSS variables description
  • #35837: Update reboot.md
  • #35878: Improve modal component doc
  • #35895: Mention form height change in migration guide
  • #35903: Separate override for hr's in component examples
  • #35905: Site assets: .bd-bg-purple-bright.bd-bg-violet and drop unused .bd-text-purple-bright
  • #35909: update ionicons link
  • #35931: Remove unneeded classes from toasts docs
  • #35942: update google material icons link
  • #35948: docs: add missing .dropup in dropup centered example
  • #35955: docs: Update Japanese translation
  • #35980: Redesign the "Added in" badges in the docs
  • #35984: Update docs syntax colors head of dark mode
  • #36002: Fix docs error after #35644
  • #36007: Convert added in badges to shortcode
  • #36008: Add v5.1.0 to migration guide, update v5.2.0 additions
  • #36013: Remove duplicate entry in migration.md
  • #36030: Update parcel.md
  • #36038: v5.2.0 migration updates
  • #36040: Fix migration guide typos
  • #36058: Fix proposal for .dropstart
  • #36073: Fix typo for StackBlitz edit button's tooltip
  • #36088: Fix StackBlitz edit feature by selecting the closest example
  • #36092: Doc fixes
  • #36099: Changing to btnTitle and btnEdit
  • #36101: Move "Navbar" before "Navs & Tabs" in sidebar
  • #36112: Fix CSpell by adding 'Analyser'
  • #36123: Doc: Reorder alphabetically lists of components
  • #36137: Change second example of dropdown form
  • #36144: Doc: fix modals and navs CSS vars description
  • #36151: Update offcanvas example to include .show class
  • #36163: Doc: Uniformization of nav tabs content panes
  • #36173: Fix Chroma line highlight style
  • #36176: v5.2.0: Migrate to DocSearch 3
  • #36182: Fix containers page in docs to re-order list so it matches sections b…
  • #36188: example: change .border-right to .border-end
  • #36190: Fix spacing of code snippets
  • #36191: Do some CSS and Migration guide cleanup
  • #36192: One more code snippet fix
  • #36194: Refactor some docs examples CSS
  • #36195: Doc: minor modifications in Scrollspy
  • #36196: Realign Cheatsheet nav tabs example rendering with the doc examples
  • #36199: Minor fixes
  • #36203: Docs: update documentation js examples, using es6
  • #36204: Rewrite Getting Started > Introduction page to be more guide-like
  • #36212: Doc: remove role="group" from some split drop* buttons
  • #36217: Document incompatibilities between Bootstrap JS and React/.etc
  • #36218: Doc: mention Popper instead of Popper.js
  • #36219: Doc: fix offset content for examples page
  • #36245: Update new docs version picker to work on home and examples pages
  • #36252: Doc: update path to @popperjs/core in parcel.md
  • #36260: Docs(Scrollspy): minor changes to be aligned with new version of javascript
  • #36273: Separate docs js assets
  • #36276: Add proper markup on modal's page tooltips and popovers
  • #36307: Fix search with xs to md breakpoints
  • #36322: Fix contents.md
  • #36328: Remove unused .border-right rule from modal example CSS file
  • #36333: Doc: fix text overflow example
  • #36335: Minor changes in 'Usage with JavaScript frameworks' description
  • #36337: docs: drop Scratch usage
  • #36340: Fix a11y keyboard access to docs navigation
  • #36344: docs: link to the root page for the homepage

🛠 Examples

  • #35223: Add missing role="search" and type="search" in navbar doc and examples
  • #35308: update grid example docs
  • #35365: Make footer examples responsive to mobile screens
  • #35483: Replace inline styles in example "Dropdowns"
  • #35699: Docs: replace CSS by utilities in examples
  • #35704: Fix spelling mistake in footer example
  • #35733: examples: fix a couple typos found with codespell
  • #35877: remove opacity utilities from example CSS
  • #35898: Remove border of disabled calendar buttons in Dropdowns example
  • #35919: RTL carousel example
  • #35997: Add another list-group snippet example
  • #36075: Fix duplicate .rounded-* and .fw-semibold defs in examples

🌎 Accessibility

  • #33079: Revamp tabs & follow ARIA 1.1 practices
  • #35223: Add missing role="search" and type="search" in navbar doc and examples
  • #35231: Ensure sufficient contrast in accordion-item
  • #35588: Docs: Strengthen and expand note about dynamic tabs with dropdown menus
  • #35589: Remove explicit use of aria-hidden for offcanvas when closed

🔧 Utility API

  • #35428: Convert border utilities to CSS variables

🏭 Tests

  • #35161: Swipe: add test to ensure that it ignores pinch events
  • #35184: tests: try to fix a few random failures
  • #35410: BaseComponent: add a couple more tests
  • #35419: Alert: add a couple more tests
  • #35431: Tests: consistency changes
  • #35448: Dropdown tests: Use a function to improve readability
  • #35455: Tests: Minor fixes
  • #35456: Tooltip: remove title attribute before show & add tests
  • #35492: ScrollBar.js. Minor refactoring and add test
  • #35501: Fix tests fixture type
  • #35585: Fix visual tests
  • #35659: tests: replace 'done' callback with 'Promise' to fix deprecation errors
  • #35757: Fix Popover test that randomly fails on BrowserStack
  • #35765: tests: revisit all tests using Promise.reject instead of throwing an error
  • #36028: Dropdown test

🧰 Misc

  • #31607: Use Babel and ES6 in docs JS files
  • #34509: build: read & dynamically resolve imports on plugins build
  • #35178: Switch to Node.js 16 and npm 8.
  • #35313: README.md remove broken "David DM" dependency badges
  • #35395: build/change-version.js: fix wrong map usage
  • #35447: Remove the now outdated build/svgo.yml
  • #35451: package.json: add GitHub Sponsors and reorder properties
  • #35452: README.md: wrap file contents in a details element
  • #35454: CI: add workflow_dispatch
  • #35481: JS tests: only test one Node.js version
  • #35573: Move linkinator to GitHub Actions.
  • #35586: build-plugins.js: use globby package
  • #35593: Move cspell to Actions
  • #35641: Update nuget/bootstrap.png
  • #35647: Update cspell config
  • #35680: Update cspell config
  • #35846: CI: add issues-helper
  • #35910: Release Drafter: add highlights
  • #36185: Update CODE_OF_CONDUCT.md

📦 Dependencies