]> git.ipfire.org Git - thirdparty/bootstrap.git/log
thirdparty/bootstrap.git
34 min agoBump Node in `.nvmrc` from 24.17.0 to 24.18.0 v6-dev
Julien Déramond [Thu, 25 Jun 2026 17:54:51 +0000 (19:54 +0200)] 
Bump Node in `.nvmrc` from 24.17.0 to 24.18.0

19 hours agodist
Mark Otto [Wed, 24 Jun 2026 22:55:52 +0000 (15:55 -0700)] 
dist

2 days agoFloating labels: place label before control for screen readers (#42539)
Mark Otto [Tue, 23 Jun 2026 17:27:23 +0000 (10:27 -0700)] 
Floating labels: place label before control for screen readers (#42539)

Floating labels required the control to precede the `<label>` in the DOM
so the floating animation could use a sibling (`~`) selector. That order
made screen readers (e.g. NVDA) announce the label after the field's
value instead of before it.

Switch the SCSS to look forward with `:has()` so the `<label>` can come
first in the DOM while the CSS still reacts to the control's state
(focus, value, disabled, autofill). Reorder all examples, docs, and the
visual test to label-first markup to match.

Also give `.form-control-plaintext` its own copy of the control tokens so
its `var(--control-*)` references resolve, fixing phantom borders and
label misalignment.

Fixes #41362

2 days agoBump release-drafter/release-drafter from 7.3.1 to 7.4.0 (#42542)
dependabot[bot] [Tue, 23 Jun 2026 11:47:32 +0000 (13:47 +0200)] 
Bump release-drafter/release-drafter from 7.3.1 to 7.4.0 (#42542)

Bumps the github-actions group with 1 update: [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter).

Updates `release-drafter/release-drafter` from 7.3.1 to 7.4.0
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/693d20e7c1ce1a81d3a41962f85914253b518449...ed4bc48ec97379be2258e7b7ac2624a3e26ab809)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 days agoAdd Range plugin for track fill, value bubble, and tick marks (#42525)
Mark Otto [Mon, 22 Jun 2026 17:51:31 +0000 (10:51 -0700)] 
Add Range plugin for track fill, value bubble, and tick marks (#42525)

* Add Range plugin for track fill, value bubble, and tick marks

Adds an opt-in JavaScript plugin (`data-bs-range`) that enhances
`<input type="range">`. A consistent cross-browser fill can't be done
with pseudo-elements alone (only Firefox has `::-moz-range-progress`),
so the plugin publishes the current value as a `--bs-range-value`
custom property that the track gradient consumes.

- Fill: colored track up to the thumb, themeable via `--range-fill-bg`
- Value bubble (`data-bs-bubble`): floating value that tracks the thumb
- Tick marks (`data-bs-ticks`): generated from a linked `<datalist>`

The bubble and ticks are siblings of the input, so they don't inherit
the input's `--range-fill-bg`; the plugin copies the resolved value onto
them and the CSS falls back to `--primary-base` so they're never blank.

Plain `.form-range` inputs are untouched. Includes unit tests and docs.

* Range: anchor positioning on .form-range and rename track fill token

- Make `.form-range` the positioning context (`position: relative`) and
  drop the JS-added `.range-anchored` class; the bubble and ticks are
  siblings of the input, so they already share its offset parent.
- Rename `--range-fill-bg` to `--range-track-fill-bg` for accuracy.
- Keep SCSS custom properties unprefixed (the build adds `--bs-`) and
  have the plugin read/write the prefixed names, matching the codebase.
- Trim obvious comments.

* Bump bundlewatch JS size limits for the Range plugin

* Range: make it a JS component with a wrapper, consolidate the CSS

Restructure range as an always-JS component so the fill, value bubble,
and tick marks are driven by a single `--bs-range-fill` ratio in CSS.

- `.form-range` is now a wrapper that owns the tokens; the input takes
  `.form-range-input`. Children inherit the tokens, so the old JS color
  copying and px positioning are gone.
- The plugin only sets `--bs-range-fill` (0–1) and the bubble text; the
  track gradient, bubble position, and tick positions are pure CSS calc.
  Drops `_thumbWidth`, `_inheritFillColor`, the resize listener, and the
  `.range-anchored` class.
- Value bubble reuses the tooltip markup/styles instead of duplicating a
  pill and arrow. Tick marks are generated from the linked `<datalist>`
  and positioned per-value (handles uneven values); tick coloring dropped.
- Auto-inits every `.form-range`; rename fill token to
  `--range-track-fill-bg`.
- Validation moves to `.form-range-input` with a `:has()` feedback toggle.
- Add the "New" badge to the Range sidebar item and document the breaking
  changes in the migration guide.

* Range: lay out tick marks with CSS grid instead of absolute positioning

Build `grid-template-columns` from the gaps between the datalist values
so each tick lands on a grid line — this handles unevenly-spaced values
just like the old per-tick calc did, but keeps the ticks and their labels
in normal flow (the container sizes to fit the labels instead of them
overflowing an absolutely-positioned box). Inset by half the thumb so the
end ticks align with the thumb travel.

Also wraps the token map in the `custom-property-no-missing-var-function`
stylelint disable (matching _strength.scss). Includes the disabled-track
fill styling.

* Nudge bundlewatch JS limits after rebasing onto v6-dev

* fix bubble, grid, ticks, and more

* comment

4 days agoMenus: support nested toggles and fix submenu position flash (#42533)
Mark Otto [Sun, 21 Jun 2026 04:59:54 +0000 (21:59 -0700)] 
Menus: support nested toggles and fix submenu position flash (#42533)

* fix that

* update

4 days agofeat(a11y): use list-style-type "" instead of list-style none (#42526)
Mark Otto [Sun, 21 Jun 2026 04:52:17 +0000 (21:52 -0700)] 
feat(a11y): use list-style-type "" instead of list-style none (#42526)

In Safari, "list-style: none" removes the list semantic role, so lists are
no longer announced by screen readers. Using "list-style-type: \"\"" keeps the
same visual result while preserving the list role.

Ports twbs/bootstrap#41778 to v6, plus the new v6 list containers (stepper,
menu, docs search results). Summary marker removals (accordion header,
details summary) are intentionally left as "list-style: none".

4 days agoDrop deprecated `.card-link` remaining usage (#42529)
Julien Déramond [Sat, 20 Jun 2026 20:58:05 +0000 (22:58 +0200)] 
Drop deprecated `.card-link` remaining usage (#42529)

4 days agoDocs: remove mentions of deprecated `.btn-primary` and `.btn-success` (#42535)
Julien Déramond [Sat, 20 Jun 2026 20:57:46 +0000 (22:57 +0200)] 
Docs: remove mentions of deprecated `.btn-primary` and `.btn-success` (#42535)

4 days agoDrop deprecated `.modal-backdrop` class, and unused `util/backdrop.js` (#42538)
Julien Déramond [Sat, 20 Jun 2026 20:57:31 +0000 (22:57 +0200)] 
Drop deprecated `.modal-backdrop` class, and unused `util/backdrop.js` (#42538)

4 days agoDrop deprecated `.table-primary` and `.table-dark` remaining usage (#42537)
Julien Déramond [Sat, 20 Jun 2026 18:40:37 +0000 (20:40 +0200)] 
Drop deprecated `.table-primary` and `.table-dark` remaining usage (#42537)

5 days agoDrop deprecated `.m-{breakpoint}` remaining usage (#42536)
Julien Déramond [Sat, 20 Jun 2026 18:18:42 +0000 (20:18 +0200)] 
Drop deprecated `.m-{breakpoint}` remaining usage (#42536)

5 days agoBump Node in `.nvmrc` from 24.16.0 to 24.17.0
Julien Déramond [Sat, 20 Jun 2026 18:10:21 +0000 (20:10 +0200)] 
Bump Node in `.nvmrc` from 24.16.0 to 24.17.0

5 days agoDrop deprecated `.col-{breakpoint}` remaining usage (#42534)
Julien Déramond [Sat, 20 Jun 2026 17:52:20 +0000 (19:52 +0200)] 
Drop deprecated `.col-{breakpoint}` remaining usage (#42534)

5 days agoDrop deprecated `.dropup` remaining usage (#42532)
Julien Déramond [Sat, 20 Jun 2026 07:24:33 +0000 (09:24 +0200)] 
Drop deprecated `.dropup` remaining usage (#42532)

5 days agoFix visual JavaScript tests to load `bootstrap.bundle.js` as a module (#42531)
Julien Déramond [Sat, 20 Jun 2026 06:58:27 +0000 (08:58 +0200)] 
Fix visual JavaScript tests to load `bootstrap.bundle.js` as a module (#42531)

5 days agoDrop deprecated `.navbar-dark` remaining usage (#42530)
Julien Déramond [Sat, 20 Jun 2026 06:42:17 +0000 (08:42 +0200)] 
Drop deprecated `.navbar-dark` remaining usage (#42530)

7 days agoV6 more form fixes (#42523)
Mark Otto [Thu, 18 Jun 2026 03:54:48 +0000 (20:54 -0700)] 
V6 more form fixes (#42523)

* fix switch disabled checked

* fix selector for select bg

* fix radio disabled

* match disabled demos

* autocomplete off for date inputs

* fix floating label custom height

* fix disabled

7 days agoDrop deprecated `.alert-dismissible` remaining usage (#42520)
Julien Déramond [Thu, 18 Jun 2026 02:31:36 +0000 (04:31 +0200)] 
Drop deprecated `.alert-dismissible` remaining usage (#42520)

7 days agoConvert list group and card group to container queries (#42512)
Mark Otto [Thu, 18 Jun 2026 02:31:20 +0000 (19:31 -0700)] 
Convert list group and card group to container queries (#42512)

* Convert list group and card group to container queries

Replace viewport media queries with container queries for the responsive
.*:list-group-horizontal variants and the .card-group row layout, using the
existing container-breakpoint-up mixins. Both now respond to the width of a
parent query container (e.g., .contains-inline) rather than the viewport.

Update the docs to reflect the new behavior, flip css_media to container, and
list both components under the container queries guide.

* Document container query migration for card group and list group

* Fix doubled card-group borders by overlapping adjacent cards

The v6 border model moved borders off the outer .card onto the inner
segments (.card-header, .card-body, .card-list, .card-footer) and the card
images use outlines. The card-group seam code still removed border-inline-start
from .card, which no longer has a border, so adjacent cards rendered doubled
borders at every seam (body, header, and footer).

Pull each subsequent card back by one border width with a negative inline
margin so its leading edges overlap the previous card's trailing edge,
collapsing every seam into a single line.

* Fix doubled border between card body and footer

A middle .card-body/.card-list draws a bottom border to divide itself from the
next segment, but .card-footer draws a full border including its top edge, so
the shared seam rendered as a doubled border whenever a footer followed a body
that wasn't the first child (e.g. image + body + footer, or header + body +
footer). Drop the body/list bottom border when a footer immediately follows so
the footer owns that divider.

* Add icon, fix some copy

* fix

7 days agoDispose existing instance when a component is re-instantiated on an element (#42509)
Mark Otto [Thu, 18 Jun 2026 02:25:44 +0000 (19:25 -0700)] 
Dispose existing instance when a component is re-instantiated on an element (#42509)

Re-creating a component on an element that already has one (e.g. `new
Toast(el)` twice) silently overwrote the instances registry, orphaning the
previous instance with its event listeners and timers still attached. Dispose
the existing instance before registering the new one so it is cleaned up
instead of leaking, while keeping `getInstance()` returning the latest instance.

Also guard `_queueCallback` so a transition completion callback is skipped once
the instance has been disposed, preventing the `this._element is null` error
when `dispose()` is called mid-transition.

Closes #37245
Closes #41473

7 days agoCarousel: fix Safari zoom scroll overshoot with a JS-driven slide animation (#42506)
Mark Otto [Thu, 18 Jun 2026 02:20:58 +0000 (19:20 -0700)] 
Carousel: fix Safari zoom scroll overshoot with a JS-driven slide animation (#42506)

Under Safari page zoom, programmatic smooth scrolls (scrollBy/scrollTo with
behavior smooth) mis-scale and overshoot the target: a one-slide jump sails
well past it and the restored scroll-snap visibly yanks the slide back. This
happens whether or not snapping is suspended during the scroll, so no
snap-configuration tweak avoids it - native smooth scrolling driven by user
gestures is fine, but any programmatic smooth scroll is affected.

Replace the native smooth scroll + settle-watcher with a JS-driven rAF
animation (_animateScroll): step scrollLeft to the target over SCROLL_DURATION
(300ms) with an ease-in-out cubic, using instant scrolls per frame. This
sidesteps Safari's bug entirely and gives every programmatic jump (prev/next,
indicators, wrap, and the seamless loop) a consistent duration. Reduced motion
and the no-requestAnimationFrame path jump straight to target.

Removes the now-unneeded _restoreSnapWhenSettled/_afterScrollSettles
overshoot-detection machinery. Reworks the unit tests to the new seam and adds
coverage for the animator: eased stepping, frame cancellation, reduced motion,
and the no-rAF fallback.

7 days agoUse min/max width to prevent Close button collapsing in flex containers (#42518)
Julien Déramond [Wed, 17 Jun 2026 23:53:10 +0000 (01:53 +0200)] 
Use min/max width to prevent Close button collapsing in flex containers (#42518)

9 days agoBuild(deps-dev): Bump form-data from 4.0.5 to 4.0.6 (#42516)
dependabot[bot] [Tue, 16 Jun 2026 13:22:53 +0000 (15:22 +0200)] 
Build(deps-dev): Bump form-data from 4.0.5 to 4.0.6 (#42516)

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.5...v4.0.6)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9 days agoBuild(deps-dev): Bump dependencies with 3 updates (#42517)
dependabot[bot] [Tue, 16 Jun 2026 13:15:32 +0000 (15:15 +0200)] 
Build(deps-dev): Bump dependencies with 3 updates (#42517)

Bumps the development-dependencies group with 3 updates in the / directory: [jasmine](https://github.com/jasmine/jasmine-npm), [prettier](https://github.com/prettier/prettier) and [rollup](https://github.com/rollup/rollup).

Updates `jasmine` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/jasmine/jasmine-npm/releases)
- [Changelog](https://github.com/jasmine/jasmine-npm/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine-npm/compare/v6.2.0...v6.3.0)

Updates `prettier` from 3.8.3 to 3.8.4
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.3...3.8.4)

Updates `rollup` from 4.61.0 to 4.61.1
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.61.0...v4.61.1)

---
updated-dependencies:
- dependency-name: jasmine
  dependency-version: 6.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: prettier
  dependency-version: 3.8.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: rollup
  dependency-version: 4.61.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9 days agoBuild(deps): Bump github/codeql-action from 4.36.1 to 4.36.2 (#42515)
dependabot[bot] [Tue, 16 Jun 2026 13:00:44 +0000 (15:00 +0200)] 
Build(deps): Bump github/codeql-action from 4.36.1 to 4.36.2 (#42515)

Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 4.36.1 to 4.36.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/87557b9c84dde89fdd9b10e88954ac2f4248e463...8aad20d150bbac5944a9f9d289da16a4b0d87c1e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
13 days agoRe-run dist with latest browser support, plus some fixes (#42505)
Mark Otto [Fri, 12 Jun 2026 04:24:29 +0000 (21:24 -0700)] 
Re-run dist with latest browser support, plus some fixes (#42505)

* Rebuild dist with latest changes

* Remove unused carousel items utils

* Prevent duplicate mask properties with webkit prefix that is unnecessary

* Remove unused stacked submenu code

* Clean up some incomplete sizing

* Remove more redundant shit

13 days agoAllow dismissing tooltips and popovers with the Escape key (#42472)
Mark Otto [Thu, 11 Jun 2026 18:57:03 +0000 (11:57 -0700)] 
Allow dismissing tooltips and popovers with the Escape key (#42472)

* Allow dismissing tooltips and popovers with the Escape key

* update

2 weeks agoRework OTP input as a single accessible input with rendered slots (#42500)
Mark Otto [Thu, 11 Jun 2026 16:56:38 +0000 (09:56 -0700)] 
Rework OTP input as a single accessible input with rendered slots (#42500)

* Rework OTP input as a single accessible input with rendered slots

Rebuild the OTP component around one real <input> rendered as separate
digit slots (the input-otp/shadcn model) so assistive tech, password
managers, and SMS autofill treat it as a single field — addressing the
accessibility feedback in twbs/discussions#42486.

- Replace the six-input markup and per-digit aria-labels with one labelled input
- Add a type option (numeric/alphanumeric/alpha) and glyph-based masking
- Make length a real option (falls back to maxlength); add groups/separator
- Standardize naming on bs.otpInput; events complete.bs.otpInput /
  input.bs.otpInput now expose event.value
- Move validation styling onto the rendered .otp-slot elements
- Rewrite docs and unit tests for the single-input model

* Fix bundlewatch sizes and cspell dictionary for OTP input

- Bump bundlewatch maxSize thresholds to account for the OTP component
- Add "autofilled" to the cspell dictionary used in the OTP docs

* bump bundle

2 weeks agoFix dark mode on built site by bumping browserslist (#42471)
Mark Otto [Thu, 11 Jun 2026 16:48:28 +0000 (09:48 -0700)] 
Fix dark mode on built site by bumping browserslist (#42471)

* Fix dark mode on built site by avoiding Lightning CSS light-dark() polyfill

Lightning CSS was lowering native light-dark() to a --lightningcss-light/dark
custom-property toggle because our browserslist floors predated native support.
That polyfill breaks data-bs-theme dark mode on the minified (production) CSS,
so dark examples rendered light on Netlify while working in dev.

- Bump browserslist floors to the first versions with native light-dark()
  (Chrome/Edge 123, Safari/iOS 17.5; Firefox 121 already covered)
- Exclude Features.LightDark in css-minify as a guard against regressions

* Update .browserslistrc for browser support and comments

Removed comment about CSS light-dark polyfill and updated browser support.

* Bump browserslist floors to Chrome/Edge 130, Firefox 132, Safari/iOS 18

Raises support floors as far as possible while keeping ~90.8% global
coverage, staying on versions with native light-dark() so Lightning CSS
does no polyfilling.

2 weeks agoCarousel: scroll-snap rebuild, opt-in autoplay, play/pause, and UI redesign (#42484)
Mark Otto [Thu, 11 Jun 2026 16:46:59 +0000 (09:46 -0700)] 
Carousel: scroll-snap rebuild, opt-in autoplay, play/pause, and UI redesign (#42484)

* Make carousel autoplay opt-in via boolean `autoplay` option

Replace the `ride` option with a boolean `autoplay` option (default
`false`), so carousels are static by default and only autoplay when
explicitly opted in with `data-bs-autoplay="true"`.

This removes the confusing `ride="true"` behavior that started
autoplaying only after the first user interaction, and the cryptic
`ride="carousel"` string value. Addresses the first two points of #32649.

* Stop carousel autoplay on interaction and add play/pause control

Address the WCAG 2.2.2 (Pause, Stop, Hide) concern in #32649.

Behavior: once a user takes control of an autoplaying carousel — clicking
a control or indicator, using the keyboard, or swiping — autoplay stops
for good instead of resuming, respecting their intent. A new runtime
`_playing` flag tracks autoplay intent and gates `_maybeEnableCycle()`.

Control: add a `.carousel-control-play-pause` button as the discoverable
pause/stop mechanism WCAG actually requires (a hover-only pause does not
qualify). It toggles autoplay, reflects state by swapping its icon (via
pause-fill/play-fill CSS mask icons) and `aria-label`, and can also start
autoplay on an otherwise static carousel.

Includes unit tests, SCSS tokens/styles with dark-mode support, docs, and
a migration note.

* Rebuild carousel on CSS scroll snap

Replace the float/translateX engine and custom swipe handler with a native
horizontal scroll-snap container. Sliding, touch dragging, momentum, and
keyboard scrolling now come from the browser; JavaScript only layers on
autoplay, the prev/next/indicator controls, and active-slide syncing via an
IntersectionObserver.

This unlocks features the old engine couldn't do, all via CSS custom
properties on `.carousel`:

- Multiple slides per view (`--carousel-items`) with responsive
  `.carousel-items-*` utilities
- Peek of adjacent slides (`--carousel-peek`) and gaps (`--carousel-gap`)
- Variable-width slides (`.carousel-auto`) and center mode (`.carousel-center`)

`.carousel-fade` becomes a stacked-opacity mode that upgrades to a View
Transition where supported. `touch: false` now applies `touch-action: pan-y`.
The markup, public JS API, and slide/slid events are preserved; the
transitional `.carousel-item-{start,end,next,prev}` classes and the
`.carousel.pointer-event` helper are removed.

Includes a full unit-test rewrite, SCSS engine, docs with multi-item/peek/
variable-width examples, and a migration entry.

* Add carousel stacked layout and dot indicator variants

Rename the per-slide layout tokens for clarity and add new layout options:

- `--carousel-peek` -> `--carousel-items-peek`, `--carousel-gap` ->
  `--carousel-items-gap` (both now carry a length unit so they're safe inside
  the flex-basis `calc()`)
- New `--carousel-gap` for spacing the stacked layout's rows
- New `.carousel-stacked` layout (controls outside the inner viewport, above or
  below) and `.carousel-indicators-dots` round indicator style
- Fix the `.carousel-item` flex-basis so the peek isn't subtracted twice (the
  `padding-inline` already insets the content box)

* Add carousel `ends` option (stop/wrap/loop) and robust scroll navigation

Replace the `wrap` boolean with an `ends` option taking `stop`, `wrap`
(default), or `loop`:

- `stop` disables the prev/next controls at each end (moving focus to the
  opposite control first, so focus is never lost)
- `wrap` jumps from the last slide back to the first (and vice versa)
- `loop` continues seamlessly into a transient clone of the destination slide,
  then teleports to the real one with no visible backward jump (single-slide
  scroll layouts only; otherwise falls back to `wrap`)

Rework programmatic navigation to scroll the viewport directly with `scrollBy`
instead of `scrollIntoView`, suspending scroll-snap for the duration and
restoring it once the scroll settles. This fixes multi-slide jumps (indicator
clicks, reaching the last slide) that `scroll-snap-stop: always` previously
clamped to one slide, avoids yanking the page to an off-screen carousel, and
works in RTL. Navigation steps are now measured from the live scroll position
so a stale active index can't make a control silently no-op.

Includes unit tests covering the ends modes, the loop transition, end-control
disabling, and the scroll-settle behavior.

* Document carousel end behavior, stacked layout, and indicator variants

Add docs and examples for the new stacked carousels (top, bottom, and with
dot indicators), the `ends` option (wrap/stop/loop) under a new "End behavior"
section, and refresh the options table and intro for the scroll-snap model.

* Redesign carousel controls, indicators, and layout

- `.carousel` is now a flex column by default (controls/indicators sit in the
  flow above or below the slides); overlaying them on top of the slides moves
  to a new `.carousel-overlay` modifier.
- Rename the control-icon classes to `.carousel-icon-{prev,next,pause,play}`,
  painted with `currentcolor` so they inherit the surrounding text/button color
  and work inside `.btn-*`. `.carousel-control-play-pause` is now just a
  behavior hook that shows the matching glyph via `.paused`.
- Redesign indicators as pills: the active one widens, and while autoplaying it
  fills like a progress bar over the slide's interval
  (`carousel-indicator-progress` keyframes driven by `--carousel-interval`).
- Remove `.carousel-caption` and its `--carousel-caption-*` tokens.

* Add carousel autoplay progress, drop `touch` option and View Transitions

- While cycling, toggle a `.carousel-playing` class and expose the wait as
  `--carousel-interval` so CSS can animate the active indicator's progress
  fill. Schedule each tick from the slide being navigated *to*, so per-item
  `data-bs-interval`s don't lag a slide behind.
- Remove the `touch` option: horizontal dragging is part of the native
  scroll-snap container, so there's nothing left for JavaScript to toggle.
- Fade is now a plain CSS opacity crossfade; drop the View Transition path,
  which double-animated against the CSS transition and visibly stuttered.

* Update carousel docs, examples, and fixtures for the redesign

Switch the docs examples, homepage/cheatsheet examples, and test fixtures to
`.carousel-overlay` + `.carousel-icon-*` and drop `.carousel-caption`. Document
the stacked-by-default layout, the `.carousel-overlay` modifier, the renamed
control-icon classes, the autoplay progress indicator, and the removed `touch`
option and captions in the migration guide.

* fix bundlewatch

* Fix MDX emphasis-style lint error in migration guide

* Default carousel `ends` to `loop`

Change the default end behavior from `wrap` to `loop`, so carousels scroll
seamlessly past the ends by default (falling back to `wrap` where seamless
looping doesn't apply). Tests that exercise the wrap jump now request it
explicitly.

* Clean up carousel styles and refresh docs

- Remove the legacy `--carousel-control-*` tokens and the entire
  `carousel-dark-*` token map / `.carousel-dark` block and dark color-mode
  rule; dark styling now rides on `light-dark()` in `.carousel-overlay`.
- Flip RTL prev/next icons with `transform: scaleX(-1)` instead of swapping
  mask images, and drop the dead commented-out overlay rules.
- Drop the now-unused `colors` and `color-mode` Sass imports.
- Docs: lead the end-behavior section with `loop` (the new default), rework
  the dark example onto `.carousel-overlay-controls` + `.btn-*` controls, and
  round the slide corners.

* Remove unused `$enable-dark-mode` Sass flag

Its last consumer was the carousel's dark color-mode block, now removed in
favor of `light-dark()`, so the flag is no longer referenced anywhere.

* Clean up carousel autoplay timer and listeners on dispose

Clear the pending autoplay timer in `dispose()` so a queued tick can't fire
after teardown and throw on the now-null `_element`, and remove the
`pointerdown` listener bound to the viewport (`.carousel-inner`)—which
`super.dispose()` doesn't cover, since it only drops listeners on `_element`.
Adds tests for both.

* Simplify carousel active indicator tokens

Drop the `--carousel-indicator-active-width` and `--carousel-indicator-active-bg`
tokens, which only carried `null` fallbacks, and inline their values directly on
the active indicator.

* Use button controls in carousel examples, fixtures, and docs

Replace the removed `.carousel-control-prev`/`.carousel-control-next` classes
with `.btn-icon btn-sm` buttons across the docs examples, homepage and cheatsheet
examples, and JS test fixtures. Also drop the leftover `.carousel-indicators-dots`
class and the obsolete "Custom transition" docs section, and correct the
peek/gap token names (`--carousel-items-peek`/`-gap`) in the migration guide.

* Remove `$enable-dark-mode` from the customization docs

Follow-up to removing the now-unused flag: drop its row from the global options
table and the sentence about disabling dark mode via Sass.

* Bump JS bundlewatch size limits for the carousel rewrite

* Harden carousel navigation, looping, and autoplay edge cases

Audit fixes:
- Measure the "current" slide in `to()` from the live scroll position
  (`_navIndex()`) rather than the async `_activeIndex`, so an indicator/control
  used mid-scroll compares against where the viewport actually rests.
- Validate the `ends` option in `_configAfterMerge`, falling back to the
  default (`loop`) for unknown values so navigation and end-control logic agree.
- Strip ids from the entire cloned subtree during a loop transition, not just
  the clone root, to avoid duplicate ids while the clone is on screen.
- Sync the active slide and fire `slid` after a programmatic scroll settles
  when no IntersectionObserver is available.
- Stop autoplay at the last slide under `ends: 'stop'` instead of re-arming a
  timer that can never advance.

Adds tests for each, plus hover-pause and dispose-mid-loop coverage.

* Remove unused `--carousel-indicator-opacity` token

The redesigned pill indicators no longer fade via opacity, so the token has no
remaining consumers.

* Expand carousel docs, examples, and migration notes

- Document the `ends` option, the removed `.carousel-control-*` / `.carousel-dark`
  classes and v5 tokens, and the removed `$enable-dark-mode` flag in the
  migration guide.
- Clarify the `.active` starting-slide and indicator notes, theme the overlay
  example controls (`.btn-subtle .theme-secondary`), rework the per-item
  interval example with a play/pause control, and sharpen the `slid` event
  description.
- Add a play/pause control to the integration fixture, and fix a corrupted
  custom-property reference in the homepage carousel example CSS.

* Bump JS bundlewatch limits for carousel audit fixes

2 weeks agoAdd `.fg-reset` text utility (#42495)
Julien Déramond [Thu, 11 Jun 2026 05:21:38 +0000 (07:21 +0200)] 
Add `.fg-reset` text utility (#42495)

2 weeks agoDocs: fix 'Icon link > Sass utilities API' example (#42498)
Julien Déramond [Wed, 10 Jun 2026 19:04:26 +0000 (21:04 +0200)] 
Docs: fix 'Icon link > Sass utilities API' example (#42498)

2 weeks agoReplaced deprecated `.text-light` remaining usage by `.fg-body`
Julien Déramond [Wed, 10 Jun 2026 18:48:13 +0000 (20:48 +0200)] 
Replaced deprecated `.text-light` remaining usage by `.fg-body`

2 weeks agoDrop deprecated `.text-muted` remaining usage (#42496)
Julien Déramond [Wed, 10 Jun 2026 18:21:22 +0000 (20:21 +0200)] 
Drop deprecated `.text-muted` remaining usage (#42496)

2 weeks agoDrop deprecated `.has-validation` remaining usage (#42494)
Julien Déramond [Wed, 10 Jun 2026 17:43:31 +0000 (19:43 +0200)] 
Drop deprecated `.has-validation` remaining usage (#42494)

2 weeks agoBuild(deps-dev): Bump shell-quote from 1.8.3 to 1.8.4 (#42493)
dependabot[bot] [Tue, 9 Jun 2026 20:11:51 +0000 (22:11 +0200)] 
Build(deps-dev): Bump shell-quote from 1.8.3 to 1.8.4 (#42493)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 weeks agoBuild(deps-dev): Bump dependencies with 2 updates (#42491)
dependabot[bot] [Tue, 9 Jun 2026 20:02:10 +0000 (22:02 +0200)] 
Build(deps-dev): Bump dependencies with 2 updates (#42491)

Bumps the development-dependencies group with 2 updates in the / directory: [js-yaml](https://github.com/nodeca/js-yaml) and [rollup](https://github.com/rollup/rollup).

Updates `js-yaml` from 4.1.1 to 4.2.0
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/commits)

Updates `rollup` from 4.60.4 to 4.61.0
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.60.4...v4.61.0)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: rollup
  dependency-version: 4.61.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 weeks agoBuild(deps): Bump the github-actions group with 2 updates (#42492)
dependabot[bot] [Tue, 9 Jun 2026 19:44:32 +0000 (21:44 +0200)] 
Build(deps): Bump the github-actions group with 2 updates (#42492)

Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [github/codeql-action](https://github.com/github/codeql-action).

Updates `actions/checkout` from 6.0.2 to 6.0.3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)

Updates `github/codeql-action` from 4.36.0 to 4.36.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/7211b7c8077ea37d8641b6271f6a365a22a5fbfa...87557b9c84dde89fdd9b10e88954ac2f4248e463)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.36.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 weeks agoReplaced deprecated `.bg-opacity-*` remaining usage by `.bg-*` (#42490)
Julien Déramond [Mon, 8 Jun 2026 19:17:08 +0000 (21:17 +0200)] 
Replaced deprecated `.bg-opacity-*` remaining usage by `.bg-*` (#42490)

2 weeks agoDrop deprecated `.accordion-collapse` remaining usage (#42489)
Julien Déramond [Mon, 8 Jun 2026 18:18:27 +0000 (20:18 +0200)] 
Drop deprecated `.accordion-collapse` remaining usage (#42489)

2 weeks agoDrop deprecated `.accordion-button` remaining usage (#42488)
Julien Déramond [Mon, 8 Jun 2026 18:11:59 +0000 (20:11 +0200)] 
Drop deprecated `.accordion-button` remaining usage (#42488)

2 weeks agoImprove Security Policy score (#42481)
Julien Déramond [Mon, 8 Jun 2026 04:33:04 +0000 (06:33 +0200)] 
Improve Security Policy score (#42481)

2 weeks agoDocs: add missing `role='button'` to `<a>` menus (#42483)
Julien Déramond [Sun, 7 Jun 2026 20:00:38 +0000 (22:00 +0200)] 
Docs: add missing `role='button'` to `<a>` menus (#42483)

2 weeks agoFix `falsie` → `falsely` typo in `js/src/util/index.js` comment (#42478)
ANDI FAUZAN HEDIANTORO [Sun, 7 Jun 2026 17:53:20 +0000 (00:53 +0700)] 
Fix `falsie` → `falsely` typo in `js/src/util/index.js` comment (#42478)

2 weeks agoDocs: fix Incident Response link to `SECURITY.md` (#42468)
ifer47 [Sun, 7 Jun 2026 09:15:44 +0000 (17:15 +0800)] 
Docs: fix Incident Response link to `SECURITY.md` (#42468)

Co-authored-by: yangkangkang <yangkangkang@wps.cn>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2 weeks agoUse `node-version-file` in GitHub workflows (#42416)
Rishikesh183 [Sun, 7 Jun 2026 08:45:43 +0000 (14:15 +0530)] 
Use `node-version-file` in GitHub workflows (#42416)

Co-authored-by: Julien Déramond <juderamond@gmail.com>
2 weeks agoBump dependencies (#42475)
Julien Déramond [Sat, 6 Jun 2026 15:19:38 +0000 (17:19 +0200)] 
Bump dependencies (#42475)

- `@astrojs/mdx`: 5.0.6 → 6.0.1
- `@shikijs/transformers`: 4.0.2 → 4.1.0
- `astro`: 6.3.7 → 6.4.3
- `eslint`: 10.2.1 → 10.4.1
- `eslint-config-xo`: 0.51.0 → 0.52.0
- `globals`: 17.5.0 → 17.6.0
- `html-validate`: 10.13.1 → 11.4.0
- `pagefind`: 1.5.0 → 1.5.2
- `playwright`: 1.59.1 → 1.60.0
- `sass`: 1.99.0 → 1.100.0
- `yaml`: 2.8.3 → 2.9.0

2 weeks agoBuild(deps-dev): Bump dependencies with 9 updates (#42474)
dependabot[bot] [Sat, 6 Jun 2026 14:43:25 +0000 (16:43 +0200)] 
Build(deps-dev): Bump dependencies with 9 updates (#42474)

Bumps the development-dependencies group with 9 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@astrojs/markdown-remark](https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark) | `7.1.2` | `7.2.0` |
| [@astrojs/sitemap](https://github.com/withastro/astro/tree/HEAD/packages/integrations/sitemap) | `3.7.2` | `3.7.3` |
| [@babel/cli](https://github.com/babel/babel/tree/HEAD/packages/babel-cli) | `7.28.6` | `7.29.7` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.29.0` | `7.29.7` |
| [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) | `7.29.5` | `7.29.7` |
| [@rollup/plugin-babel](https://github.com/rollup/plugins/tree/HEAD/packages/babel) | `7.0.0` | `7.1.0` |
| [find-unused-sass-variables](https://github.com/XhmikosR/find-unused-sass-variables) | `6.2.0` | `6.2.1` |
| [npm-run-all2](https://github.com/bcomnes/npm-run-all2) | `9.0.0` | `9.0.1` |
| [terser](https://github.com/terser/terser) | `5.47.1` | `5.48.0` |

Updates `@astrojs/markdown-remark` from 7.1.2 to 7.2.0
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/markdown/remark/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/markdown-remark@7.2.0/packages/markdown/remark)

Updates `@astrojs/sitemap` from 3.7.2 to 3.7.3
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/sitemap/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/sitemap@3.7.3/packages/integrations/sitemap)

Updates `@babel/cli` from 7.28.6 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-cli)

Updates `@babel/core` from 7.29.0 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)

Updates `@babel/preset-env` from 7.29.5 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-preset-env)

Updates `@rollup/plugin-babel` from 7.0.0 to 7.1.0
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/babel/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/babel-v7.1.0/packages/babel)

Updates `find-unused-sass-variables` from 6.2.0 to 6.2.1
- [Release notes](https://github.com/XhmikosR/find-unused-sass-variables/releases)
- [Commits](https://github.com/XhmikosR/find-unused-sass-variables/compare/v6.2.0...v6.2.1)

Updates `npm-run-all2` from 9.0.0 to 9.0.1
- [Release notes](https://github.com/bcomnes/npm-run-all2/releases)
- [Changelog](https://github.com/bcomnes/npm-run-all2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bcomnes/npm-run-all2/compare/v9.0.0...v9.0.1)

Updates `terser` from 5.47.1 to 5.48.0
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.47.1...v5.48.0)

---
updated-dependencies:
- dependency-name: "@astrojs/markdown-remark"
  dependency-version: 7.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@astrojs/sitemap"
  dependency-version: 3.7.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@babel/cli"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@babel/core"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@rollup/plugin-babel"
  dependency-version: 7.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: find-unused-sass-variables
  dependency-version: 6.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: npm-run-all2
  dependency-version: 9.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: terser
  dependency-version: 5.48.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 weeks agoBuild(deps): Bump the github-actions group with 2 updates (#42464)
dependabot[bot] [Sat, 6 Jun 2026 14:33:29 +0000 (16:33 +0200)] 
Build(deps): Bump the github-actions group with 2 updates (#42464)

Bumps the github-actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter).

Updates `github/codeql-action` from 4.35.5 to 4.36.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/9e0d7b8d25671d64c341c19c0152d693099fb5ba...7211b7c8077ea37d8641b6271f6a365a22a5fbfa)

Updates `release-drafter/release-drafter` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/c2e2804cc59f45f57076a99af580d0fedb697927...693d20e7c1ce1a81d3a41962f85914253b518449)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: release-drafter/release-drafter
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 weeks agoMove SVGs to CSS masks (#42465)
Mark Otto [Fri, 5 Jun 2026 03:09:03 +0000 (20:09 -0700)] 
Move SVGs to CSS masks (#42465)

* Move SVGs to CSS masks

* update migration, remove unused, fix a couple things

* Format

* Bump bundlewatch

* Properly size btn-close with mask

* Apply .check class directly to checkbox input, drop wrapper

The .check wrapper existed only to host the checkmark pseudo-element.
Since appearance: none controls render pseudo-elements (as .radio already
relies on), move .check onto the <input> itself and draw the checked/
indeterminate mark via a masked ::before. Removes the grid/:has machinery
and makes checkbox and radio markup symmetric.

* Use .form-field for list group radio example, matching checkboxes

2 weeks agodocs: fix menu clipping in resizable examples + configurable dev port (#42470)
Mark Otto [Thu, 4 Jun 2026 23:19:56 +0000 (16:19 -0700)] 
docs: fix menu clipping in resizable examples + configurable dev port (#42470)

* docs: prevent menus from being clipped in resizable examples

The resizable container needs overflow: hidden for the CSS resize handle to
work, which clips menus/dropdowns when they open. Render them with a fixed
positioning strategy in the live preview only so they can spill outside the
container, leaving the displayed markup untouched.

* docs: make the Astro dev server port configurable via PORT

Default to 9001 but allow PORT to override the dev/preview server port so
multiple worktrees can run side by side without colliding.

3 weeks agodocs: fix wording and responsive utility examples (#42458)
Christian Oliff [Wed, 3 Jun 2026 21:14:37 +0000 (06:14 +0900)] 
docs: fix wording and responsive utility examples (#42458)

Copy edits across several docs pages: clarify .btn usage and theme classes (button.mdx); correct repeated/awkward 'drawer' phrasing and update responsive breakpoint syntax to the colon form (drawer.mdx); remove duplicated 'drawer' wording and clean navbar responsive copy (navbar.mdx); update Sass guidance from @import to @use/@forward terminology (customize/optimize.mdx); clarify 'modal' → 'modal dialog' and update form validation guidance to use data-bs-validate and :user-invalid (getting-started/approach.mdx); and revise display utility docs to show the new .{breakpoint}:d-{value} syntax with example adjustments (utilities/display.mdx).

3 weeks agoWiden custom switch component (#42460)
Mark Otto [Wed, 3 Jun 2026 20:57:39 +0000 (13:57 -0700)] 
Widen custom switch component (#42460)

Increase --switch-width multiplier from 1.5 to 1.75 of the switch
height for a wider track.

3 weeks agoFix Prettier formatting in spacing docs shortcodes (#42461)
Mark Otto [Wed, 3 Jun 2026 20:45:02 +0000 (13:45 -0700)] 
Fix Prettier formatting in spacing docs shortcodes (#42461)

Reformats the SpacingNotation and SpacingResponsive Astro shortcodes to
satisfy docs-prettier-check, fixing the failing Lint CI job on v6-dev.

3 weeks agov6: remove figure-img from image docs (#42457)
Christian Oliff [Tue, 2 Jun 2026 15:25:35 +0000 (00:25 +0900)] 
v6: remove figure-img from image docs (#42457)

3 weeks agoMake spacing docs less annoying to update (#42454)
Mark Otto [Tue, 2 Jun 2026 15:25:14 +0000 (08:25 -0700)] 
Make spacing docs less annoying to update (#42454)

3 weeks agoUpdate avatars (#42456)
Mark Otto [Tue, 2 Jun 2026 06:19:49 +0000 (23:19 -0700)] 
Update avatars (#42456)

* Use image dimensions, update for labels on avatar status

* More bulletproof

* update

3 weeks agoUpdate ampm-field to meridiem-field (#42397)
Jonas Pardeyke [Tue, 2 Jun 2026 06:19:28 +0000 (08:19 +0200)] 
Update ampm-field to meridiem-field (#42397)

* Update ampm-field to meridiem-field

The wrong specifier was used so the actual fix was no applied.

::-webkit-datetime-edit-ampm-field -> ::-webkit-datetime-edit-meridiem-field

* Enhance datetime fields for WebKit and Chromium

Added support for am/pm field in WebKit datetime edit.

3 weeks agov6: More docs updates (#42450)
Mark Otto [Tue, 2 Jun 2026 06:12:17 +0000 (23:12 -0700)] 
v6: More docs updates (#42450)

* Add "new" badge to Stepper

It's new.

* Remove commented out

* Rearrange docs sidebar again to remove components groups, tweak a few things

* New default components page

* Fix swatch, update some content

* Revamp how we're doing themes in docs to be more instant

---------

Co-authored-by: nextgenthemes <nextgenthemes@users.noreply.github.com>
3 weeks agoRestore `border-radius` to `.card` (#42449)
Mark Otto [Mon, 1 Jun 2026 18:03:33 +0000 (11:03 -0700)] 
Restore `border-radius` to `.card` (#42449)

* restore border-radius to .card

* bw fix

3 weeks agov6: docs: fix typos, examples, and utility class docs (#42430)
Christian Oliff [Mon, 1 Jun 2026 17:51:58 +0000 (02:51 +0900)] 
v6: docs: fix typos, examples, and utility class docs (#42430)

Minor documentation fixes across multiple site files:
- examples/sign-in: add meaningful alt text for the logo image for accessibility.
- components/dialog: add missing space in example button markup.
- components/navbar: update navbar example to use new prefix-style responsive class (`.{breakpoint}:navbar-expand`).
- forms/layout: update horizontal form docs to recommend `.{breakpoint}:col-*` usage.
- getting-started/approach: fix grammar/typos, correct docsref path, and clarify component modifier/variant naming (mention `.btn-solid` and `.theme-primary`).
- getting-started/javascript: adjust JS-required components list (add Dialog, remove Accordions/Modals lines).
- guides/migration: fix possessive "its" typos in breakpoint/container notes.
- helpers/stretched-link: correct placeholder title text.
- utilities/background: update example to use `fg-contrast-{name}` / `fg-{name}` classes instead of previous `color-*` naming.

These changes improve clarity, accessibility, and align docs with updated class naming conventions.

v6: docs: fix typos, examples, and utility class docs

text would always be white on black background
Update example code for background gradient usage
Update margin utilities docs for v6 spacers
Docs updated to reflect the v6 spacing scale: sizes now range from 0 through 9 (`.m-0`–`.m-9`) and the multiplier values for sizes 3–9 were adjusted.

Negative margin docs were changed to note that v6 only supports negative inline margins (`.ms--1`, `.me--2`) using `-1` and `-2` spacers and that the v5-style full negative utilities (e.g. `.mt-n1`) were removed.

The responsive examples were updated to list `.{breakpoint}m-0` through `.{breakpoint}m-9` and `.{breakpoint}m-auto`.

3 weeks agoUse new bg/fg utilities and data-bs-theme (#42451)
Christian Oliff [Mon, 1 Jun 2026 17:50:29 +0000 (02:50 +0900)] 
Use new bg/fg utilities and data-bs-theme (#42451)

Replace legacy theme classes across examples with new utility classes and theme attributes. Changes include swapping .bg-dark/.navbar-dark/.text-bg-dark/.link-body-emphasis for bg-black, bg-90, fg-white, fg-body, adding data-bs-theme="dark" where appropriate, removing nav-pills, adjusting icon nav links to use flex-column and removing svg mb-1 spacing, and simplifying sidebar nav classes. Updated example files: album, cheatsheet, headers, navbar-static, navbars, and sidebars.

3 weeks agov6: Refine examples - headings, themes, and layout (#42432)
Christian Oliff [Fri, 29 May 2026 22:51:35 +0000 (07:51 +0900)] 
v6: Refine examples - headings, themes, and layout (#42432)

Reduce heading sizes and remove emphasis in feature examples. Unify
dark-theme styling, improve accessibility and layout, update Chart.js,
and replace text-white/text-secondary with fg-* utilities across
example pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
3 weeks agoUpdate monospace font stack (#42448)
Mark Otto [Fri, 29 May 2026 22:09:00 +0000 (15:09 -0700)] 
Update monospace font stack (#42448)

* Update monospace font stack

* Update _root.scss

4 weeks agoBuild(deps): Bump tmp from 0.2.5 to 0.2.7 (#42446)
dependabot[bot] [Wed, 27 May 2026 19:21:56 +0000 (21:21 +0200)] 
Build(deps): Bump tmp from 0.2.5 to 0.2.7 (#42446)

Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.5 to 0.2.7.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.5...v0.2.7)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoBuild(deps-dev): Bump npm-run-all2 (#42441)
dependabot[bot] [Wed, 27 May 2026 19:15:04 +0000 (21:15 +0200)] 
Build(deps-dev): Bump npm-run-all2 (#42441)

Bumps the development-dependencies group with 1 update in the / directory: [npm-run-all2](https://github.com/bcomnes/npm-run-all2).

Updates `npm-run-all2` from 8.0.4 to 9.0.0
- [Release notes](https://github.com/bcomnes/npm-run-all2/releases)
- [Changelog](https://github.com/bcomnes/npm-run-all2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bcomnes/npm-run-all2/compare/v8.0.4...v9.0.0)

---
updated-dependencies:
- dependency-name: npm-run-all2
  dependency-version: 9.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoBuild(deps): Bump calibreapp/image-actions (#42442)
dependabot[bot] [Wed, 27 May 2026 19:01:20 +0000 (21:01 +0200)] 
Build(deps): Bump calibreapp/image-actions (#42442)

Bumps the github-actions group with 1 update in the / directory: [calibreapp/image-actions](https://github.com/calibreapp/image-actions).

Updates `calibreapp/image-actions` from 1.4.1 to 1.5.0
- [Release notes](https://github.com/calibreapp/image-actions/releases)
- [Commits](https://github.com/calibreapp/image-actions/compare/f32575787d333b0579f0b7d506ff03be63a669d1...9d037c06280028c110ff61c433ad4dc7d33c3c43)

---
updated-dependencies:
- dependency-name: calibreapp/image-actions
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoIncrease awaiting-reply stale period from 1 to 14 days
Julien Déramond [Tue, 26 May 2026 20:20:59 +0000 (22:20 +0200)] 
Increase awaiting-reply stale period from 1 to 14 days

4 weeks agoReplace actions-cool/issues-helper by actions/stale (#42433)
Julien Déramond [Sun, 24 May 2026 08:28:38 +0000 (10:28 +0200)] 
Replace actions-cool/issues-helper by actions/stale (#42433)

4 weeks agoBump Node in `.nvmrc` from 24.15 to 24.16
Julien Déramond [Sun, 24 May 2026 20:51:56 +0000 (22:51 +0200)] 
Bump Node in `.nvmrc` from 24.15 to 24.16

4 weeks agoBump `astro` from 6.1.8 to 6.3.7 and `@astrojs/mdx` from 5.0.3 to 5.0.6 (#42437)
Christian Oliff [Sun, 24 May 2026 20:50:14 +0000 (05:50 +0900)] 
Bump `astro` from 6.1.8 to 6.3.7 and `@astrojs/mdx` from 5.0.3 to 5.0.6 (#42437)

4 weeks agoBuild(deps-dev): Bump dependencies with 7 updates (#42439)
Julien Déramond [Sun, 24 May 2026 20:38:01 +0000 (22:38 +0200)] 
Build(deps-dev): Bump dependencies with 7 updates (#42439)

4 weeks agoBuild(deps): Bump the GitHub Actions dependencies with 2 updates (#42409)
dependabot[bot] [Sun, 24 May 2026 19:42:41 +0000 (21:42 +0200)] 
Build(deps): Bump the GitHub Actions dependencies with 2 updates (#42409)

Bumps the github-actions group with 2 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action) and [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter).

Updates `github/codeql-action` from 4.35.2 to 4.35.5
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/95e58e9a2cdfd71adc6e0353d5c52f41a045d225...9e0d7b8d25671d64c341c19c0152d693099fb5ba)

Updates `release-drafter/release-drafter` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/5de93583980a40bd78603b6dfdcda5b4df377b32...c2e2804cc59f45f57076a99af580d0fedb697927)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: release-drafter/release-drafter
  dependency-version: 7.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoBuild(deps-dev): Bump @babel/plugin-transform-modules-systemjs (#42404)
dependabot[bot] [Sun, 24 May 2026 19:34:12 +0000 (21:34 +0200)] 
Build(deps-dev): Bump @babel/plugin-transform-modules-systemjs (#42404)

Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.29.0 to 7.29.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-modules-systemjs"
  dependency-version: 7.29.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoBuild(deps): Bump fast-uri from 3.1.0 to 3.1.2 (#42403)
dependabot[bot] [Sun, 24 May 2026 19:25:20 +0000 (21:25 +0200)] 
Build(deps): Bump fast-uri from 3.1.0 to 3.1.2 (#42403)

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4 weeks agoReplace actions-cool/issues-helper by actions/github-script (#42435)
Julien Déramond [Sun, 24 May 2026 08:47:06 +0000 (10:47 +0200)] 
Replace actions-cool/issues-helper by actions/github-script (#42435)

4 weeks agov6: Animate accordion details content (#42047)
Christian Oliff [Fri, 22 May 2026 19:28:27 +0000 (04:28 +0900)] 
v6: Animate accordion details content (#42047)

Use interpolate-size and ::details-content transitions so accordions
open and close smoothly when motion is not reduced.

Co-authored-by: Cursor <cursoragent@cursor.com>
4 weeks agov6: docs - Update utility class names in docs and examples (#42418)
Christian Oliff [Fri, 22 May 2026 19:28:09 +0000 (04:28 +0900)] 
v6: docs - Update utility class names in docs and examples (#42418)

Replace deprecated utility classes with the updated names across site docs and examples. Changes include switching text-* classes to fg-*, text-bg-* badge classes to theme-*, and replacing clearfix with d-flow-root. Affected files: cover and drawer-navbar examples, spinner example, reboot, accessibility, columns docs, and versions page to keep examples consistent with the new utility naming.

Add btn-icon class to navbar toggler

Add the btn-icon utility class to the navbar toggler button in the navbar-fixed example to apply icon button styling. This change updates site/src/assets/examples/navbar-fixed/index.astro and keeps the existing SVG toggler markup and collapse behavior unchanged.

4 weeks agov6: Albums Example layout fixes (#42357)
Christian Oliff [Fri, 22 May 2026 19:25:51 +0000 (04:25 +0900)] 
v6: Albums Example layout fixes (#42357)

* Albums Example layout fixes

- navbar hamburger button - add btn-icon class
- align content at bottom of cards
- use a valid background color for albums (main content)

* Change link text color from text-white to fg-white

4 weeks agov6: docs - remove unneeded word-break page (Content moved to text-wrapping page)...
Christian Oliff [Fri, 22 May 2026 00:18:48 +0000 (09:18 +0900)] 
v6: docs - remove unneeded word-break page (Content moved to text-wrapping page) (#42426)

* v6: remove unneeded word-break page

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
5 weeks agorebuilt dist
Mark Otto [Fri, 15 May 2026 04:26:01 +0000 (21:26 -0700)] 
rebuilt dist

5 weeks agoCouple chips follow ups (#42411)
Mark Otto [Fri, 15 May 2026 03:25:39 +0000 (20:25 -0700)] 
Couple chips follow ups (#42411)

* Fix some disabled

* Disable smooth scroll to start

5 weeks agov6: docs updates (#42394)
Christian Oliff [Fri, 15 May 2026 03:25:17 +0000 (12:25 +0900)] 
v6: docs updates (#42394)

5 weeks agov6: accordions - hide default WebKit details marker (#42401)
Christian Oliff [Fri, 15 May 2026 03:24:01 +0000 (12:24 +0900)] 
v6: accordions - hide default WebKit details marker (#42401)

Suppress the native disclosure marker in WebKit by adding &::-webkit-details-marker { display: none; } to the accordion button styles. This prevents the browser's default triangle from overlapping the custom .accordion-icon and ensures consistent appearance across browsers

Issue discovered using Browserstack.
See comment: https://github.com/orgs/twbs/discussions/42398#discussion-10018925

6 weeks agov6: Chips & Badges updates, remove Badges example page (#42400)
Mark Otto [Fri, 8 May 2026 04:09:01 +0000 (21:09 -0700)] 
v6: Chips & Badges updates, remove Badges example page (#42400)

* Rename chip-input to chips

* More edits

* Remove the badges example

7 weeks agov6: More utilities API, docs, tests (#42381)
Mark Otto [Tue, 5 May 2026 23:09:38 +0000 (16:09 -0700)] 
v6: More utilities API, docs, tests (#42381)

* Utilities API and class improvements

* Expand utility API test coverage

* Update utilities API and border-radius docs

* Fix bundlewatch

* Introduce `@mixin generate-utilities-loop()`

* Add text wrapping utilities in Sass utilities API in the docs

* Copy updates, links, callout for postcss prefix, fix a border-radius

* inline warning

* error over warn

* Fix bundlewatch

* more copy edits

* fix layout and headings

* lint

---------

Co-authored-by: Julien Déramond <juderamond@gmail.com>
7 weeks agoBuild(deps-dev): Bump axios from 1.15.0 to 1.16.0 (#42396)
dependabot[bot] [Tue, 5 May 2026 16:19:56 +0000 (18:19 +0200)] 
Build(deps-dev): Bump axios from 1.15.0 to 1.16.0 (#42396)

Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7 weeks agoBuild(deps-dev): Bump the dev dependencies with 2 updates (#42395)
dependabot[bot] [Tue, 5 May 2026 16:14:57 +0000 (18:14 +0200)] 
Build(deps-dev): Bump the dev dependencies with 2 updates (#42395)

Bumps the development-dependencies group with 2 updates: [postcss](https://github.com/postcss/postcss) and [terser](https://github.com/terser/terser).

Updates `postcss` from 8.5.10 to 8.5.12
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.10...8.5.12)

Updates `terser` from 5.46.1 to 5.46.2
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.46.1...v5.46.2)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: terser
  dependency-version: 5.46.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7 weeks agoDocs: remove About group of pages (#42386)
Julien Déramond [Tue, 5 May 2026 15:58:04 +0000 (17:58 +0200)] 
Docs: remove About group of pages (#42386)

7 weeks agov6: Update alignment examples text and widths (#42392)
Christian Oliff [Mon, 4 May 2026 18:39:49 +0000 (03:39 +0900)] 
v6: Update alignment examples text and widths (#42392)

Replace generic "Flex item"/"Grid item" placeholders with descriptive words (e.g. "Align", "Items", "Start/End/Center/Stretch") across align-items, justify-items, and place-items docs. Add w-5 utility to flex examples to give consistent item widths so alignment demos render more clearly. Files updated: site/src/content/docs/utilities/align-items.mdx, justify-items.mdx, place-items.mdx.

7 weeks agoDocs: add missing mandatory `type` in Shiki config themes
Julien Déramond [Sun, 3 May 2026 19:13:29 +0000 (21:13 +0200)] 
Docs: add missing mandatory `type` in Shiki config themes

7 weeks agov6: minor docs fixes (#42385)
Christian Oliff [Sun, 3 May 2026 04:06:45 +0000 (13:06 +0900)] 
v6: minor docs fixes (#42385)

* Adjust toast copy, placeholder, and font var

Update docs and styles: change toast example text to use "accent" wording, mark the default toast placement option as disabled to prevent it being selected as a valid value, and switch the table font variable from --bs-font-monospace to the standardized --bs-font-mono in _content.scss.

* fix typo

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
7 weeks agoDocs: fix aliases/redirections of main sections (#42387)
Julien Déramond [Sun, 3 May 2026 04:04:24 +0000 (06:04 +0200)] 
Docs: fix aliases/redirections of main sections (#42387)

7 weeks agolint fix
Mark Otto [Fri, 1 May 2026 18:55:41 +0000 (11:55 -0700)] 
lint fix

7 weeks agoFix dialog scrollbar shifting
Mark Otto [Fri, 1 May 2026 18:10:17 +0000 (11:10 -0700)] 
Fix dialog scrollbar shifting

7 weeks agoImprove masthead code snippet
Mark Otto [Fri, 1 May 2026 17:48:07 +0000 (10:48 -0700)] 
Improve masthead code snippet

7 weeks agoDocs: fix theme selector on direct load (Cheatsheet/Sidebars examples) (#42382)
Julien Déramond [Fri, 1 May 2026 17:28:06 +0000 (19:28 +0200)] 
Docs: fix theme selector on direct load (Cheatsheet/Sidebars examples) (#42382)

7 weeks agoDocs: drop some mentions of Bootstrap 5 (#42380)
Julien Déramond [Fri, 1 May 2026 17:25:55 +0000 (19:25 +0200)] 
Docs: drop some mentions of Bootstrap 5 (#42380)

7 weeks agoCtrl instead of ^ for Windows search
Mark Otto [Fri, 1 May 2026 16:32:30 +0000 (09:32 -0700)] 
Ctrl instead of ^ for Windows search