Migrating to v5
Track and review changes to the Boosted source files, documentation, and components to help you migrate from v4 to v5.
v5.2.3
Boosted v5.2.3 has landed with a handful of urgent bug fixes from Bootstrap and with specific Boosted content.
If you need more details about the changes, please refer to the v5.2.3 release.
Accessibility
-
Focus visible
- Warning We completely refactored our focus visible management.
A
focus-visible()
mixin is provided to ensure a proper visible focus state. This visible focus state is defined by an outer outline and an inner box shadow. On light background, the outer outline is black and the inner box shadow is white. The latter will be invisible most of the time but is here to ensure a security on light background but that aren’t white. On dark background, these colors are inverted.We also removed the
:focus
style of our components that was mirroring the:hover
state, as well as the transition animation.Even if the generic case will be transparent for your project, please check this new behavior in your websites.
Components
-
Card
-
Warning We now apply font styles on our
.card-title
and.card-subtitle
, so you can use any<h*>
following your semantic structure inside a card. Please check and reflect if necessary this modification into your websites.More info
- <h4 class="card-title">Title</h4> + <h3 class="card-title">Title</h3>
-
Warning We now apply
.fw-bold
on some.card-text
when there is an image in the card to follow the design guidelines. Please check and reflect if necessary this modification into your websites.More info
- <p class="card-text">Description</p> + <p class="card-text fw-bold">Description</p>
-
-
Dropdowns
- Warning Dropdown menus y offset has slightly changed from 2px to 0. Please reflect this modification into your websites by changing each
data-bs-offset
or by adding them if needed and set it to 0.
- <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="0,y"> + <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="0,0">
- Warning Dropdown menus y offset has slightly changed from 2px to 0. Please reflect this modification into your websites by changing each
-
Footer
-
Warning Each footer accordion now uses an
aria-labelledby
attribute to be consistent with our accordion component. Please reflect these modifications into your websites.More info
- <div id="collapse" class="accordion-collapse collapse" data-bs-parent="#accordion"> + <div id="collapse" class="accordion-collapse collapse" data-bs-parent="#accordion" aria-labelledby="heading">
-
-
Navs & Tabs
-
Breaking Nested tabs variant changed its markup to ensure a greater accessibility and consistency over the documentation. Please reflect these modifications into your websites.
More info
- Ensure that the root element of the tablist is a
<ul>
. - Ensure that the
role="tablist"
is set on<ul>
. - Ensure that the
role="tablist"
has anaria-owns
set too with all the ids it owns. - Ensure that the
role="presentation"
is set on each<li>
inside arole="tablist"
. - Ensure that the
role="tabpanel"
is set on each child of.tab-content
. - Ensure that the
disabled
links only miss the[href]
attribute.
- Ensure that the root element of the tablist is a
-
-
Stepped Process
- Current step has been slightly changed for accessibility purpose; the link to this step has been converted to plain text. Please reflect this modification into your websites.
- <a class="stepped-process-link" href="#" title="2. Review" aria-current="step">Review</a> + <a class="stepped-process-link" title="2. Review" aria-current="step">Review</a>
Contents
- Tables
-
Warning Every table now has a caption with
.visually-hidden
on it. Please reflect this modification into your websites. -
New Tables now fully support striped rows and columns.
-
Forms
-
New Form helpers icon buttons will help you to provide extra help information with the
.form-helper
utility class. -
New Small size form controls are now available. Small inputs are defined by their
.form-control-sm
, small selects by their.form-select-sm
. They can be associated with.col-form-label-sm
to correctly follow their size if needed..input-group-sm
can also be used depending on the context.
Examples
-
Cards and Cards RTL
-
Warning We now use correctly
<button>
instead of<a>
. We now apply font style on our.card-title
so these examples have been modified to follow the right semantic header hierarchy. Furthermore, we dropped unnecessary.card-footer
and notice that size of icons has slightly changed. Please check and reflect if necessary this modification into your websites.Example
<div class="card"> <img src="..." alt="..."/> <div class="card-body"> - <h4 class="card-title">Title</h4> + <h3 class="card-title">Title</h3> - <h6 class="card-text">Caption</h6> + <p class="card-text fw-bold mb-4">Caption</p> - </div> - <div class="card-footer pt-2"> - <a class="btn btn-secondary" aria-label="Button description" title="Button description">Button</a> + <button class="btn btn-secondary" aria-label="Button description" title="Button description">Button</button> </div> </div>
-
-
Pages
- New A new section called ‘Pages’ has been added where you will find complete and reusable pages that can be found in the Design Guidelines.
- New A form page example is now available.
CSS and Sass variables
-
Breaking Deprecated CSS variables:
--bs-accordion-body-padding-x
--bs-accordion-body-padding-y
--bs-card-spacer-y
--bs-dropdown-toggle-bg
--bs-dropdown-toggle-border-color
--bs-dropdown-toggle-color
--bs-dropdown-toggle-hover-border-color
--bs-dropdown-toggle-padding-x
--bs-tag-outline-color
-
New CSS variables:
--bs-accordion-body-padding-bottom
--bs-accordion-body-padding-end
--bs-accordion-body-padding-start
--bs-accordion-body-padding-top
--bs-card-spacer-bottom
--bs-card-spacer-top
--bs-dropdown-line-height
--bs-focus-visible-inner-color
--bs-focus-visible-outer-color
--bs-table-accent-bg
--bs-table-striped-bg
--bs-table-striped-color
--bs-table-striped-hover-bg
--bs-table-striped-hover-color
-
Breaking Deprecated Sass variables:
$accordion-body-padding-x
$accordion-body-padding-y
$btn-close-focus-shadow
$card-spacer-y
$form-range-thumb-active-border
$form-star-focus-box-shadow
$form-star-focus-color
$form-star-focus-color-dark
$form-star-focus-outline
$form-star-focus-outline-dark
$outline-offset
$outline-width
-
New Sass variables:
$accordion-body-padding-bottom
$accordion-body-padding-end
$accordion-body-padding-start
$accordion-body-padding-top
$card-spacer-bottom
$card-spacer-top
$focus-visible-inner-color
$focus-visible-inner-color-dark
$focus-visible-inner-width
$focus-visible-outer-color
$focus-visible-outer-color-dark
$focus-visible-outer-offset
$focus-visible-outer-width
$focus-visible-zindex
$form-helper-label-margin-bottom
$form-helper-size
$form-select-border-radius-sm
$form-select-font-size-sm
$form-select-padding-x-sm
$form-select-padding-y-sm
$helper-icon
$input-border-radius-sm
$input-font-size-sm
$step-link-active-outline
$table-accent-bg
$table-striped-bg
$table-striped-bg-factor
$table-striped-color
$table-striped-columns-order
$table-striped-hover-bg
$table-striped-hover-bg-factor
$table-striped-hover-color
$table-striped-order
$table-variant-active-bg-factor
$table-variant-hover-bg-factor
$table-variant-striped-hover-bg
$table-variant-striped-hover-bg-factor
v5.2.2
Boosted v5.2.2 has landed with new bug fixes and documentation updates including a new RTL section in our examples.
If you need more details about the changes, please refer to the v5.2.2 release.
Components
-
Modals
- Warning Modals markups have changed to show that a modal dialog represents its own separate document/context, so most of the
.modal-title
s are now<h1>
s associated with a.h*
. Please reflect this modification into your websites by choosing the right header level.
- Warning Modals markups have changed to show that a modal dialog represents its own separate document/context, so most of the
-
Orange navbar
- Languages selection’s
aria-label
s have been slightly changed in some supra bars examples for accessibility purpose; visible name must be included in the accessible name. It might be a useful modification to propagate into your websites if you have this same kind of languages selection.
- <li class="nav-item"><a class="nav-link active" href="#" aria-label="English version">EN</a></li> + <li class="nav-item"><a class="nav-link active" href="#" aria-label="EN English version">EN</a></li>
- Languages selection’s
Forms
- Warning All forms examples have been modified to add a
.mt-2
to all submit buttons in order to always have 30px between the last form control and the button. Please reflect this modification into your websites.
Contents
- Tables
- Warning Reintroduction of
.has-checkbox
from v4 to correct spacing of first column when having row selection.
- Warning Reintroduction of
Examples
-
New There is a new RTL section in the examples.
-
RTL
- New Cards RTL example is now available.
CSS and Sass variables
-
@mixin button-size()
has a new interface including a new optional parameter for button letter spacing. -
New CSS variables:
--bs-btn-letter-spacing
--bs-primary-text-rgb
-
New Sass variables:
$btn-letter-spacing
$btn-letter-spacing-lg
$btn-letter-spacing-sm
$form-feedback-line-height
v5.2.1
Boosted v5.2.1 is here with fixes from our latest minor release, v5.2. These changes include bug fixes, documentation updates, and some dependency updates, but also a new Tags component and a lot of new dark variants for our components.
If you need more details about the changes, please refer to the v5.2.1 release.
Components
-
Back to top
- Breaking Back to top ‘Label inside’ variant was removed because not compliant with Orange Design System. Even if the rendering could still work, it is recommended to only use the versions presented in the documentation.
-
Breadcrumb
- New Breadcrumb now has a dark variant.
-
Footers
- Warning All Footers examples have been modified to use the “Terms and conditions” wording instead of “Terms & Conditions”. Please reflect this modification into your websites.
-
List group
- New List group now has a dark variant.
-
Pagination
- New Pagination now has a dark variant.
-
Scrollspy
- New Scrollspy has a new
data-bs-threshold
data attribute.
- New Scrollspy has a new
-
Stepped process
- New Stepped process now has a dark variant.
-
Tags
- New Tags are now a component.
-
Toasts
- Warning Changed the markup for Toasts with a custom content (toast message and close button). Please reflect this modification into your websites.
More info
<div class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true"> <div class="d-flex"> - <div class="toast-body"> + <div class="toast-body my-auto"> Hello, world! This is a toast message. </div> - <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast"><span class="visually-hidden">Close</span></button> + <button type="button" class="btn-close ms-auto" data-bs-dismiss="toast"><span class="visually-hidden">Close</span></button> </div> </div>
- Warning Changed the markup for Toasts with a custom content (toast message and close button). Please reflect this modification into your websites.
Contents
-
Warning Changed the rendering of
<mark>
(and so.mark
). Depending on your usage it may worth checking the impact in your websites. -
Warning Tooltips examples applied on SVGs have been updated to use
focusable="false"
andaria-hidden="true"
because SVGs do not carry any specific information so they should not be readable by screen readers. Please reflect this modification in your websites. By the way please check all the SVGs in your websites in order to apply this same modification if needed.More info
<a href="#" class="d-inline-block" data-bs-toggle="tooltip" data-bs-title="Default tooltip" aria-label="Default tooltip"> - <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 100 100"> + <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 100 100" focusable="false" aria-hidden="true"> <rect width="100%" height="100%" fill="#563d7c"/> <circle cx="50" cy="50" r="30" fill="#007bff"/> </svg> </a>
-
The close icon SVG rendering has changed in modals, offcanvases and close buttons. Although is has no direct impact, you might want apply this same modification within your websites.
Helpers and utilities
- New
.img-thumbnail
is now officially supported.
CSS and Sass variables
-
Breaking
--bs-pagination-margin-start
and--bs-pagination-focus-outline
are now deprecated. -
Warning
$accordion-color
was announced a deprecated in v5.2.0 but is finally not removed. -
New CSS variables:
--bs-alert-btn-close-offset
--bs-alert-dismissible-padding-right
--bs-alert-heading-font-weight
--bs-alert-icon-margin-y
--bs-alert-icon-size
--bs-alert-line-height
--bs-alert-link-font-weight
--bs-alert-logo-size
--bs-breadcrumb-color
--bs-btn-close-active-border-color
--bs-btn-close-active-color
--bs-btn-close-bg
--bs-btn-close-border-color
--bs-btn-close-border-width
--bs-btn-close-color
--bs-btn-close-disabled-color
--bs-btn-close-hover-color
--bs-btn-close-padding
--bs-btn-hover-border-color
--bs-dropdown-zindex
--bs-highlight-color
--bs-pagination-active-item-color
--bs-pagination-padding-end
--bs-tab-content-border-width
--bs-tab-content-padding-x
--bs-tab-content-padding-y
--bs-nav-tabs-link-border-width
--bs-nav-tabs-link-hover-bg
--bs-nav-tabs-link-hover-color
--bs-nav-tabs-link-padding-x
--bs-navbar-font-weight
--bs-navbar-toggler-icon-filter
--bs-stepped-process-link-next-color
--bs-toast-zindex
-
New Sass variables:
$alert-heading-font-weight
$alert-icon-size-sm
$breadcrumb-color
$breadcrumb-dark-active-color
$breadcrumb-dark-bg
$breadcrumb-dark-color
$breadcrumb-dark-divider-color
$btn-close-active-border-color
$btn-close-active-color
$btn-close-border-color
$btn-close-border-width
$btn-close-disabled-color
$btn-close-hover-color
$btn-close-white-active-border-color
$btn-close-white-active-color
$btn-close-white-bg
$btn-close-white-border-color
$btn-close-white-color
$btn-close-white-disabled-color
$btn-close-white-hover-color
$list-group-dark-action-active-bg
$list-group-dark-action-active-color
$list-group-dark-action-color
$list-group-dark-action-hover-color
$list-group-dark-active-bg
$list-group-dark-active-border-color
$list-group-dark-active-color
$list-group-dark-bg
$list-group-dark-border-color
$list-group-dark-color
$list-group-dark-disabled-bg
$list-group-dark-disabled-color
$mark-bg-dark
$mark-color
$mark-color-dark
$navbar-dark-border-color
$navbar-font-weight
$pagination-active-item-color
$pagination-dark-active-bg
$pagination-dark-active-border-color
$pagination-dark-active-color
$pagination-dark-active-item-bg
$pagination-dark-active-item-border-color
$pagination-dark-active-item-color
$pagination-dark-bg
$pagination-dark-border-color
$pagination-dark-color
$pagination-dark-disabled-bg
$pagination-dark-disabled-border-color
$pagination-dark-disabled-color
$pagination-dark-focus-bg
$pagination-dark-focus-color
$pagination-dark-hover-bg
$pagination-dark-hover-border-color
$pagination-dark-hover-color
$step-item-dark-active-bg
$step-item-dark-bg
$step-item-dark-drop-shadow
$step-item-dark-next-bg
$step-link-dark-active-color
$step-link-dark-color
$step-link-dark-next-color
$step-link-next-color
-
Dark text variants handling is now explained in Customize > CSS variables > Dark text rule.
v5.2.0
Refreshed design
Boosted v5.2.0 features a subtle design update for a handful of components and properties across the project, most notably through refined border-radius
values on buttons and form controls. Our documentation also has been updated with a new homepage and a simpler docs layout that no longer collapses sections of the sidebar.
More CSS variables
We’ve updated all our components to use CSS variables. While Sass still underpins everything, each component has been updated to include CSS variables on the component base classes (e.g., .btn
), allowing for more real-time customization of Bootstrap. In subsequent releases, we’ll continue to expand our use of CSS variables into our layout, forms, helpers, and utilities. Read more about CSS variables in each component on their respective documentation pages.
Our CSS variable usage will be somewhat incomplete until Boosted 6. While we’d love to fully implement these across the board, they do run the risk of causing breaking changes. For example, setting $alert-border-width: var(--bs-border-width)
in our source code breaks potential Sass in your own code if you were doing $alert-border-width * 2
for some reason.
As such, wherever possible, we will continue to push towards more CSS variables, but please recognize our implementation may be slightly limited in v5.
New _maps.scss
Boosted v5.2.0 introduced a new Sass file with _maps.scss
. It pulls out several Sass maps from _variables.scss
to fix an issue where updates to an original map were not applied to secondary maps that extend them. For example, updates to $theme-colors
were not being applied to other theme maps that relied on $theme-colors
, breaking key customization workflows. In short, Sass has a limitation where once a default variable or map has been used, it cannot be updated. There’s a similar shortcoming with CSS variables when they’re used to compose other CSS variables.
This is why variable customizations in Boosted have to come after @import "functions"
, but before @import "variables"
and the rest of our import stack. The same applies to Sass maps—you must override the defaults before they get used. The following maps have been moved to the new _maps.scss
:
$theme-colors-rgb
$utilities-colors
$utilities-text
$utilities-text-colors
$utilities-bg
$utilities-bg-colors
$negative-spacers
$gutters
Your custom Boosted CSS builds should now look something like this with a separate maps import.
// Functions come first
@import "functions";
// Optional variable overrides here
+ $custom-color: #df711b;
+ $custom-theme-colors: (
+ "custom": $custom-color
+ );
// Variables come next
@import "variables";
+ // Optional Sass map overrides here
+ $theme-colors: map-merge($theme-colors, $custom-theme-colors);
+
+ // Followed by our default maps
+ @import "maps";
+
// Rest of our imports
@import "mixins";
@import "utilities";
@import "root";
@import "reboot";
// etc
New utilities
- Expanded
font-weight
utilities to include.fw-semibold
for semibold fonts. - Expanded
border-radius
utilities to include two new sizes,.rounded-4
and.rounded-5
, for more options.
Additional changes
-
Introduced new
$enable-container-classes
option. — Now when opting into the experimental CSS Grid layout,.container-*
classes will still be compiled, unless this option is set tofalse
. Containers also now keep their gutter values. -
Offcanvas component now has responsive variations. The original
.offcanvas
class remains unchanged—it hides content across all viewports. To make it responsive, change that.offcanvas
class to any.offcanvas-{sm|md|lg|xl|xxl}
class. -
Thicker table dividers are now opt-in. — We’ve removed the thicker and more difficult to override border between table groups and moved it to an optional class you can apply,
.table-group-divider
. See the table docs for an example. -
Scrollspy has been rewritten to use the Intersection Observer API, which means you no longer need relative parent wrappers, deprecates
offset
config, and more. Look for your Scrollspy implementations to be more accurate and consistent in their nav highlighting. -
Popovers and tooltips now use CSS variables. Some CSS variables have been updated from their Sass counterparts to reduce the number of variables. As a result, three variables have been deprecated in this release:
$popover-arrow-color
,$popover-arrow-outer-color
, and$tooltip-arrow-color
. -
Added new
.text-bg-{color}
helpers. Instead of setting individual.text-*
and.bg-*
utilities, you can now use the.text-bg-*
helpers to set abackground-color
with contrasting foregroundcolor
. -
Added
.form-check-reverse
modifier to flip the order of labels and associated checkboxes/radios. -
Added striped columns support to tables via the new
.table-striped-columns
class. -
Breaking Changed
data-o-label
todata-bs-label
in Back to top component. -
Breaking Re-introduced footer component by tweaking a bit the classes: replaced
.o-footer-*
by.footer-*
.
For a complete list of changes, see the v5.2.0 project on GitHub.
v5.1.0
-
Breaking Changed the behavior of
.bg-success
,.bg-danger
,.bg-warning
and.bg-info
. You may prefer to use.bg-supporting-green
,.bg-supporting-pink
,.bg-supporting-yellow
and.bg-supporting-blue
instead (apart from badges).$supporting-colors
is replaced by$background-colors
. -
Added experimental support for CSS Grid layout. — This is a work in progress, and is not yet ready for production use, but you can opt into the new feature via Sass. To enable it, disable the default grid, by setting
$enable-grid-classes: false
and enable the CSS Grid by setting$enable-cssgrid: true
. -
Updated navbars to support offcanvas. — Add offcanvas drawers in any navbar with the responsive
.navbar-expand-*
classes and some offcanvas markup. -
Added new placeholder component. — Our newest component, a way to provide temporary blocks in lieu of real content to help indicate that something is still loading in your site or app.
-
Collapse plugin now supports horizontal collapsing. — Add
.collapse-horizontal
to your.collapse
to collapse thewidth
instead of theheight
. Avoid browser repainting by setting amin-height
orheight
. -
Added new stack and vertical rule helpers. — Quickly apply multiple flexbox properties to quickly create custom layouts with stacks. Choose from horizontal (
.hstack
) and vertical (.vstack
) stacks. Add vertical dividers similar to<hr>
elements with the new.vr
helpers. -
Added new global
:root
CSS variables. — Added several new CSS variables to the:root
level for controlling<body>
styles. More are in the works, including across our utilities and components, but for now read up CSS variables in the Customize section. -
Overhauled color and background utilities to use CSS variables, and added new text opacity and background opacity utilities. —
.text-*
and.bg-*
utilities are now built with CSS variables andrgba()
color values, allowing you to easily customize any utility with new opacity utilities. -
Added new snippet examples based to show how to customize our components. — Pull ready to use customized components and other common design patterns with our new Snippets examples.
-
Removed unused positioning styles from popovers and tooltips as these are handled solely by Popper.
$tooltip-margin
has been deprecated and set tonull
in the process.
Want more information? Read the v5.1.0 blog post.
Dependencies
- Dropped jQuery.
- Upgraded from Popper v1.x to Popper v2.x.
- Replaced Libsass with Dart Sass as our Sass compiler given Libsass was deprecated.
- Migrated from Jekyll to Hugo for building our documentation
Browser support
- Dropped Internet Explorer 10 and 11
- Dropped Microsoft Edge < 16 (Legacy Edge)
- Dropped Firefox < 60
- Dropped Safari < 12
- Dropped iOS Safari < 12
- Dropped Chrome < 60
Documentation changes
- Redesigned homepage, docs layout, and footer.
- Added new Parcel guide.
- Added new Customize section, replacing v4’s Theming page, with new details on Sass, global configuration options, color schemes, CSS variables, and more.
- Reorganized all form documentation into new Forms section, breaking apart the content into more focused pages.
- Similarly, updated the Layout section, to flesh out grid content more clearly.
- Renamed “Navs” component page to “Navs & Tabs”.
- Renamed “Checks” page to “Checks & radios”.
- Redesigned the navbar and added a new subnav to make it easier to get around our sites and docs versions.
- Added new keyboard shortcut for the search field: Ctrl + /.
Sass
-
We’ve ditched the default Sass map merges to make it easier to remove redundant values. Keep in mind you now have to define all values in the Sass maps like
$theme-colors
. Check out how to deal with Sass maps. -
Breaking Renamed
$orange-2
to$accessible-orange
. -
Breaking Removed
$container-fluid-margin-widths
. Please use$container-fluid-margin
instead. -
Breaking Renamed
color-yiq()
function and related variables tocolor-contrast()
as it’s no longer related to YIQ color space. See #30168.$yiq-contrasted-threshold
is renamed to$min-contrast-ratio
.$yiq-text-dark
and$yiq-text-light
are respectively renamed to$color-contrast-dark
and$color-contrast-light
.
-
Breaking Media query mixins parameters have changed for a more logical approach.
media-breakpoint-down()
uses the breakpoint itself instead of the next breakpoint (e.g.,media-breakpoint-down(lg)
instead ofmedia-breakpoint-down(md)
targets viewports smaller thanlg
).- Similarly, the second parameter in
media-breakpoint-between()
also uses the breakpoint itself instead of the next breakpoint (e.g.,media-between(sm, lg)
instead ofmedia-breakpoint-between(sm, md)
targets viewports betweensm
andlg
).
-
Breaking Removed print styles and
$enable-print-styles
variable. Print display classes are still around. See #28339. -
Breaking Dropped
color()
,theme-color()
, andgray()
functions in favor of variables. See #29083. -
Breaking Renamed
theme-color-level()
function tocolor-level()
and now accepts any color you want instead of only$theme-color
colors. See #29083 Watch out:color-level()
was later on dropped inv5.0.0-alpha3
. -
Breaking Renamed
$enable-prefers-reduced-motion-media-query
and$enable-pointer-cursor-for-buttons
to$enable-reduced-motion
and$enable-button-pointers
for brevity. -
Breaking Removed the
bg-gradient-variant()
mixin. Use the.bg-gradient
class to add gradients to elements instead of the generated.bg-gradient-*
classes. -
Breaking Removed previously deprecated mixins:
hover
,hover-focus
,plain-hover-focus
, andhover-focus-active
float()
form-control-mixin()
nav-divider()
retina-img()
text-hide()
(also dropped the associated utility class,.text-hide
)visibility()
form-control-focus()
-
Breaking Renamed
scale-color()
function toshift-color()
to avoid collision with Sass’s own color scaling function. -
box-shadow
mixins now allownull
values and dropnone
from multiple arguments. See #30394. -
The
border-radius()
mixin now has a default value.
Color system
-
The color system which worked with
color-level()
and$theme-color-interval
was removed in favor of a new color system. Alllighten()
anddarken()
functions in our codebase are replaced bytint-color()
andshade-color()
. These functions will mix the color with either white or black instead of changing its lightness by a fixed amount. Theshift-color()
will either tint or shade a color depending on whether its weight parameter is positive or negative. See #30622 for more details. -
Added new tints and shades for every color, providing nine separate colors for each base color, as new Sass variables.
-
Improved color contrast. Bumped color contrast ratio from 3:1 to 4.5:1 and updated blue, green, cyan, and pink colors to ensure WCAG 2.1 AA contrast. Also changed our color contrast color from
$gray-900
to$black
. -
To support our color system, we’ve added new custom
tint-color()
andshade-color()
functions to mix our colors appropriately.
Grid updates
-
New breakpoint! Added new
xxl
breakpoint for1400px
and up. No changes to all other breakpoints. -
Improved gutters. Gutters are now set in rems, and are narrower than v4 (
1.5rem
, or about24px
, down from30px
). This aligns our grid system’s gutters with our spacing utilities.- Added new gutter class (
.g-*
,.gx-*
, and.gy-*
) to control horizontal/vertical gutters, horizontal gutters, and vertical gutters. - Breaking Renamed
.no-gutters
to.g-0
to match new gutter utilities.
- Added new gutter class (
-
Columns no longer have
position: relative
applied, so you may have to add.position-relative
to some elements to restore that behavior. -
Breaking Dropped several
.order-*
classes that often went unused. We now only provide.order-1
to.order-5
out of the box. -
Breaking Dropped the
.media
component as it can be easily replicated with utilities. See #28265 and the flex utilities page for an example. -
Breaking
boosted-grid.css
now only appliesbox-sizing: border-box
to the column instead of resetting the global box-sizing. This way, our grid styles can be used in more places without interference. -
$enable-grid-classes
no longer disables the generation of container classes anymore. See #29146. -
Updated the
make-col
mixin to default to equal columns without a specified size.
Content, Reboot, etc
-
Breaking Orange Helvetica CSS file names changed from
orangeHelvetica.*.css
toorange-helvetica.*.css
. -
RFS is now enabled by default. Headings using the
font-size()
mixin will automatically adjust theirfont-size
to scale with the viewport. This feature was previously opt-in with v4. -
Breaking Overhauled our display typography to replace our
$display-*
variables and with a$display-font-sizes
Sass map. Also removed the individual$display-*-weight
variables for a single$display-font-weight
and adjustedfont-size
s. -
Added two new
.display-*
heading sizes,.display-5
and.display-6
. -
Links are underlined by default (not just on hover), unless they’re part of specific components.
-
Breaking
.o-link-arrow
is renamed to.link-chevron
..o-link-arrow.back
has been dropped. -
Redesigned tables to refresh their styles and rebuild them with CSS variables for more control over styling.
-
Breaking Nested tables do not inherit styles anymore.
-
Breaking
.thead-light
and.thead-dark
are dropped in favor of the.table-*
variant classes which can be used for all table elements (thead
,tbody
,tfoot
,tr
,th
andtd
). -
Breaking The
table-row-variant()
mixin is renamed totable-variant()
and accepts only 2 parameters:$color
(color name) and$value
(color code). The border color and accent colors are automatically calculated based on the table factor variables. -
Split table cell padding variables into
-y
and-x
. -
Breaking Dropped
.pre-scrollable
class. See #29135 -
Breaking
.text-*
utilities do not add hover and focus states to links anymore..link-*
helper classes can be used instead. See #29267 -
Breaking Dropped
.text-justify
class. See #29793 -
Breaking
<hr>
elements now useheight
instead ofborder
to better support thesize
attribute. This also enables use of padding utilities to create thicker dividers (e.g.,<hr class="py-1">
). -
Reset default horizontal
padding-left
on<ul>
and<ol>
elements from browser default40px
to2rem
. -
Added
$enable-smooth-scroll
, which appliesscroll-behavior: smooth
globally—except for users asking for reduced motion throughprefers-reduced-motion
media query. See #31877
RTL
- Horizontal direction specific variables, utilities, and mixins have all been renamed to use logical properties like those found in flexbox layouts—e.g.,
start
andend
in lieu ofleft
andright
.
Forms
-
Breaking Consolidated native and custom form elements. Checkboxes, radios, selects, and other inputs that had native and custom classes in v4 have been consolidated. Now nearly all our form elements are entirely custom, most without the need for custom HTML.
.custom-control.custom-checkbox
is now.form-check
..custom-control.custom-custom-radio
is now.form-check
..custom-control.custom-switch
is now.form-check.form-switch
..custom-select
is now.form-select
..custom-file
and.form-file
have been replaced by custom styles on top of.form-control
..custom-range
is now.form-range
.- Dropped native
.form-control-file
and.form-control-range
.
-
Breaking Dropped
.input-group-append
and.input-group-prepend
. You can now just add buttons and.input-group-text
as direct children of the input groups. -
The longstanding Missing border radius on input group with validation feedback bug is finally fixed by adding an additional
.has-validation
class to input groups with validation. -
Breaking Dropped form-specific layout classes for our grid system. Use our grid and utilities instead of
.form-group
,.form-row
, or.form-inline
. -
Breaking Form labels now require
.form-label
. -
Breaking
.form-text
no longer setsdisplay
, allowing you to create inline or block help text as you wish just by changing the HTML element. -
Form controls no longer used fixed
height
when possible, instead deferring tomin-height
to improve customization and compatibility with other components. -
Validation icons are no longer applied to
<select>
s withmultiple
. -
Rearranged source Sass files under
scss/forms/
, including input group styles.
Components
- Unified
padding
values for alerts, breadcrumbs, cards, dropdowns, list groups, modals, popovers, and tooltips to be based on our$spacer
variable. See #30564.
Accordion
- Added new accordion component.
Alerts
-
Alerts now have examples with icons.
-
Removed custom styles for
<hr>
s in each alert since they already usecurrentColor
.
Back to top
- Breaking Dropped
.o-scroll-up
, use the.back-to-top
class instead. Please check our Back to top page to use it properly. Back to top component doesn’t use JavaScript anymore.
Badges
-
Breaking Dropped all
.badge-*
color classes for background utilities (e.g., use.bg-primary
instead of.badge-primary
). -
Breaking Dropped
.badge-pill
—use the.rounded-pill
utility instead. -
Breaking Removed hover and focus styles for
<a>
and<button>
elements. -
Increased default padding for badges from
.25em
/.5em
to.35em
/.65em
.
Breadcrumbs
-
Simplified the default appearance of breadcrumbs by removing
padding
,background-color
, andborder-radius
. -
Added new CSS custom property
--bs-breadcrumb-divider
for easy customization without needing to recompile CSS.
Buttons
-
Breaking Toggle buttons, with checkboxes or radios, no longer require JavaScript and have new markup. We no longer require a wrapping element, add
.btn-check
to the<input>
, and pair it with any.btn
classes on the<label>
. See #30650. The docs for this has moved from our Buttons page to the new Forms section. -
Breaking Dropped
.btn-block
for utilities. Instead of using.btn-block
on the.btn
, wrap your buttons with.d-grid
and a.gap-*
utility to space them as needed. Switch to responsive classes for even more control over them. Read the docs for some examples. -
Breaking Social buttons now need an extra
.btn-icon
. -
Updated our
button-variant()
andbutton-outline-variant()
mixins to support additional parameters. -
Updated buttons to ensure increased contrast on hover and active states.
-
Disabled buttons now have
pointer-events: none;
.
Card
-
Breaking Dropped
.card-deck
in favor of our grid. Wrap your cards in column classes and add a parent.row-cols-*
container to recreate card decks (but with more control over responsive alignment). -
#31035: Added new
null
variables forfont-size
,font-weight
,color
, and:hover
color
to the.nav-link
class. -
Breaking Replaced the
.card
based accordion with a new Accordion component.
Carousel
-
Added new
.carousel-dark
variant for dark text, controls, and indicators (great for lighter backgrounds). -
Replaced chevron icons for carousel controls with new SVGs from Solaris.
Close button
-
Breaking Renamed
.close
to.btn-close
for a less generic name. -
Close buttons now use a
background-image
(embedded SVG) instead of a×
in the HTML, allowing for easier customization without the need to touch your markup. -
Added new
.btn-close-white
variant that usesfilter: invert(1)
to enable higher contrast dismiss icons against darker backgrounds.
Collapse
- Removed scroll anchoring for accordions.
Dropdowns
-
Added new
.dropdown-menu-dark
variant and associated variables for on-demand dark dropdowns. -
Added new variable for
$dropdown-padding-x
. -
Darkened the dropdown divider for improved contrast.
-
Breaking All the events for the dropdown are now triggered on the dropdown toggle button and then bubbled up to the parent element.
-
Dropdown menus now have a
data-bs-popper="static"
attribute set when the positioning of the dropdown is static, or dropdown is in the navbar. This is added by our JavaScript and helps us use custom position styles without interfering with Popper’s positioning. -
Breaking Dropped
flip
option for dropdown plugin in favor of native Popper configuration. You can now disable the flipping behavior by passing an empty array forfallbackPlacements
option in flip modifier. -
Dropdown menus can now be clickable with a new
autoClose
option to handle the auto close behavior. You can use this option to accept the click inside or outside the dropdown menu to make it interactive. -
Dropdowns now support
.dropdown-item
s wrapped in<li>
s.
Footer
- Breaking Footers’ HTML structure changed a lot as it works now with sub-components. They don’t require
.o-footer-*
classes anymore, they need.footer-*
classes.
Jumbotron
- Breaking Dropped the jumbotron component as it can be replicated with utilities.
List group
- Added new
.list-group-numbered
modifier to list groups.
Navs and tabs
- Added new
null
variables forfont-size
,font-weight
,color
, and:hover
color
to the.nav-link
class.
Navbars
- Breaking Navbars now require a container within (to drastically simplify spacing requirements and CSS required).
- Breaking The
.active
class can no longer be applied to.nav-item
s, it must be applied directly on.nav-link
s.
Offcanvas
- Added the new offcanvas component.
Orange navbar
-
Breaking Supra bars now require a
.bg-dark
class. -
Removed the
.global
class for the instantiation of global headers. You just need to declare your navbar with default.navbar-*
classes. -
Changed the handling of the minimizing on scroll behavior. Initialize it on your
<header>
element by adding the.sticky-top
class. -
Classes to handle titles in the bars have been added: use
.title
for a title on a single line, or.two-lined
for, as its name suggests, a title on two lines.
Pagination
-
Breaking Dropped
.has-label
support. -
Pagination links now have customizable
margin-left
that are dynamically rounded on all corners when separated from one another. -
Added
transition
s to pagination links.
Popovers
-
Breaking Renamed
.arrow
to.popover-arrow
in our default popover template. -
Renamed
whiteList
option toallowList
.
Spinners
-
Spinners now honor
prefers-reduced-motion: reduce
by slowing down animations. See #31882. -
Improved spinner vertical alignment.
Stepped process
-
Breaking Dropped
.o-stepbar
, use.stepped-process
instead. All other classes using.stepbar-*
should be replaced by.stepped-process-*
. -
Breaking Renamed respectively
$o-stepbar-margin-r
and$o-stepbar-arrow-width
to$step-item-margin-end
and$step-item-arrow-width
. -
Breaking Dropped
$o-stepbar-height
and lots of new variables were added.
Toasts
-
Toasts can now be positioned in a
.toast-container
with the help of positioning utilities. -
Changed default toast duration to 5 seconds.
-
Removed
overflow: hidden
from toasts and replaced with properborder-radius
s withcalc()
functions.
Tooltips
-
Breaking Renamed
.arrow
to.tooltip-arrow
in our default tooltip template. -
Breaking The default value for the
fallbackPlacements
is changed to['top', 'right', 'bottom', 'left']
for better placement of popper elements. -
Breaking Renamed
whiteList
option toallowList
.
Utilities
-
Breaking Renamed several utilities to use logical property names instead of directional names with the addition of RTL support:
- Renamed
.left-*
and.right-*
to.start-*
and.end-*
. - Renamed
.float-left
and.float-right
to.float-start
and.float-end
. - Renamed
.border-left
and.border-right
to.border-start
and.border-end
. - Renamed
.rounded-left
and.rounded-right
to.rounded-start
and.rounded-end
. - Renamed
.ml-*
and.mr-*
to.ms-*
and.me-*
. - Renamed
.pl-*
and.pr-*
to.ps-*
and.pe-*
. - Renamed
.text-left
and.text-right
to.text-start
and.text-end
.
- Renamed
-
Breaking Disabled negative margins by default.
-
Added new
.bg-body
class for quickly setting the<body>
’s background to additional elements. -
Added new position utilities for
top
,right
,bottom
, andleft
. Values include0
,50%
, and100%
for each property. -
Added new
.translate-middle-x
&.translate-middle-y
utilities to horizontally or vertically center absolute/fixed positioned elements. -
Added new
border-width
utilities. -
Breaking Renamed
.text-monospace
to.font-monospace
. -
Breaking Dropped
.rounded
,.rounded-top
,.rounded-right
,.rounded-bottom
,.rounded-left
,.rounded-0
,.rounded-sm
and.rounded-lg
to reduce bundle size since we shouldn’t use those classes in Boosted. -
Breaking Removed
.text-hide
as it’s an antiquated method for hiding text that shouldn’t be used anymore. -
Added
.fs-*
utilities forfont-size
utilities (with RFS enabled). These use the same scale as HTML’s default headings (1-6, large to small), and can be modified via Sass map. -
Breaking Renamed
.font-weight-*
utilities as.fw-*
for brevity and consistency. -
Breaking Renamed
.font-style-*
utilities as.fst-*
for brevity and consistency. -
Added
.d-grid
to display utilities and newgap
utilities (.gap
) for CSS Grid and flexbox layouts. -
Breaking Removed
.rounded-sm
androunded-lg
, and introduced a new scale of classes,.rounded-0
to.rounded-3
. See #31687. -
Added new
line-height
utilities:.lh-1
,.lh-sm
,.lh-base
and.lh-lg
. See here. -
Moved the
.d-none
utility in our CSS to give it more weight over other display utilities. -
Extended the
.visually-hidden-focusable
helper to also work on containers, using:focus-within
.
Helpers
-
Breaking Responsive embed helpers have been renamed to ratio helpers with new class names and improved behaviors, as well as a helpful CSS variable.
- Classes have been renamed to change
by
tox
in the aspect ratio. For example,.ratio-16by9
is now.ratio-16x9
. - We’ve dropped the
.embed-responsive-item
and element group selector in favor of a simpler.ratio > *
selector. No more class is needed, and the ratio helper now works with any HTML element. - The
$embed-responsive-aspect-ratios
Sass map has been renamed to$aspect-ratios
and its values have been simplified to include the class name and the percentage as thekey: value
pair. - CSS variables are now generated and included for each value in the Sass map. Modify the
--bs-aspect-ratio
variable on the.ratio
to create any custom aspect ratio.
- Classes have been renamed to change
-
Breaking “Screen reader” classes are now “visually hidden” classes.
- Changed the Sass file from
scss/helpers/_screenreaders.scss
toscss/helpers/_visually-hidden.scss
- Renamed
.sr-only
and.sr-only-focusable
to.visually-hidden
and.visually-hidden-focusable
- Renamed
sr-only()
andsr-only-focusable()
mixins tovisually-hidden()
andvisually-hidden-focusable()
.
- Changed the Sass file from
-
boosted-utilities.css
now also includes our helpers. Helpers don’t need to be imported in custom builds anymore.
JavaScript
-
Dropped jQuery dependency and rewrote plugins to be in regular JavaScript.
-
Breaking Data attributes for all JavaScript plugins are now namespaced to help distinguish Boosted functionality from third parties and your own code. For example, we use
data-bs-toggle
instead ofdata-toggle
. -
All plugins can now accept a CSS selector as the first argument. You can either pass a DOM element or any valid CSS selector to create a new instance of the plugin:
const modal = new boosted.Modal('#myModal') const dropdown = new boosted.Dropdown('[data-bs-toggle="dropdown"]')
-
popperConfig
can be passed as a function that accepts the Boosted’s default Popper config as an argument, so that you can merge this default configuration in your way. Applies to dropdowns, popovers, and tooltips. -
The default value for the
fallbackPlacements
is changed to['top', 'right', 'bottom', 'left']
for better placement of Popper elements. Applies to dropdowns, popovers, and tooltips. -
Removed underscore from public static methods like
_getInstance()
→getInstance()
.