Compare commits

...

143 Commits
v5.3.4 ... main

Author SHA1 Message Date
Louis-Maxime Piton
6d3345b24c
Docs: fix missing "Copy to clipboard" tooltips when <Example> was used, not just <Code> (#41582)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-08-10 19:38:15 +02:00
Julien Déramond
2acf59d89b
Build(deps-dev): Bump zod from 4.0.16 to 4.0.17 2025-08-10 08:37:46 +02:00
Julien Déramond
cb4fa22950
Build(deps-dev): Bump zod from 4.0.15 to 4.0.16 2025-08-09 08:33:38 +02:00
Julien Déramond
e52e3b1c95
Build(deps-dev): Bump astro from 5.12.8 to 5.12.9 2025-08-08 19:17:10 +02:00
Julien Déramond
3b9a4167ac
Build(deps-dev): Bump stylelint from 16.23.0 to 16.23.1 2025-08-07 21:01:35 +02:00
dependabot[bot]
c96c0ec523
Build(deps): Bump tmp from 0.2.3 to 0.2.4 (#41649)
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.3 to 0.2.4.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-06 21:44:11 +02:00
Julien Déramond
68afc56295
Build(deps-dev): Bump zod from 4.0.14 to 4.0.15 2025-08-06 07:26:04 +02:00
dependabot[bot]
89fbf03410
Build(deps): Bump github/codeql-action from 3.29.4 to 3.29.5 (#41640)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.4 to 3.29.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](4e828ff8d4...51f77329af)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 21:06:21 +02:00
Julien Déramond
1eccc810f0
Docs: unminify package example HTML files (#41637) 2025-08-05 20:55:52 +02:00
Julien Déramond
b850fcbe49
Build(deps-dev): Bump the development-dependencies group with 3 updates
- @astrojs/markdown-remark   ^6.3.4  →   ^6.3.5
- @astrojs/mdx               ^4.3.2  →   ^4.3.3
- astro                     ^5.12.7  →  ^5.12.8
2025-08-02 08:15:53 +02:00
Julien Déramond
9203712669
Build(deps-dev): Bump the development-dependencies group with 3 updates
- @astrojs/markdown-remark   ^6.3.3  →   ^6.3.4
- @astrojs/mdx               ^4.3.1  →   ^4.3.2
- astro                     ^5.12.6  →  ^5.12.7
2025-07-31 21:14:17 +02:00
Julien Déramond
e392fc500e
Build(deps-dev): Bump the development-dependencies group with 2 updates
- astro  ^5.12.5  →  ^5.12.6
- zod    ^4.0.13  →  ^4.0.14
2025-07-30 21:39:40 +02:00
Julien Déramond
c082695742
Build(deps-dev): Bump rollup from 4.46.1 to 4.46.2 2025-07-29 22:45:10 +02:00
dependabot[bot]
f0dc676ba1
Build(deps-dev): Bump the development-dependencies group across 1 directory with 3 updates (#41626)
Bumps the development-dependencies group with 3 updates in the / directory: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro), [stylelint](https://github.com/stylelint/stylelint) and [zod](https://github.com/colinhacks/zod).


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

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

Updates `zod` from 4.0.10 to 4.0.13
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.0.10...v4.0.13)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 5.12.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: stylelint
  dependency-version: 16.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: zod
  dependency-version: 4.0.13
  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>
2025-07-29 18:42:01 +02:00
dependabot[bot]
e8fdc4f614
Build(deps): Bump github/codeql-action from 3.29.3 to 3.29.4 (#41624)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.3 to 3.29.4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](d6bbdef45e...4e828ff8d4)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 18:36:04 +02:00
dependabot[bot]
caaa9150d3
Build(deps): Bump actions-cool/issues-helper from 3.6.0 to 3.6.2 (#41623)
Bumps [actions-cool/issues-helper](https://github.com/actions-cool/issues-helper) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/actions-cool/issues-helper/releases)
- [Changelog](https://github.com/actions-cool/issues-helper/blob/main/CHANGELOG.md)
- [Commits](a610082f8a...50068f49b7)

---
updated-dependencies:
- dependency-name: actions-cool/issues-helper
  dependency-version: 3.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 18:32:44 +02:00
dependabot[bot]
67a58f8a3c
Build(deps): Bump streetsidesoftware/cspell-action from 7.1.2 to 7.2.0 (#41625)
Bumps [streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action) from 7.1.2 to 7.2.0.
- [Release notes](https://github.com/streetsidesoftware/cspell-action/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md)
- [Commits](6f05386161...dcd03dc3e8)

---
updated-dependencies:
- dependency-name: streetsidesoftware/cspell-action
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-29 18:27:18 +02:00
Julien Déramond
e519be94a2
Build(deps-dev): Bump the development-dependencies group with 4 updates (#41621)
- @astrojs/sitemap   ^3.4.1  →   ^3.4.2
- astro             ^5.12.1  →  ^5.12.4
- cross-env          ^7.0.3  →  ^10.0.0
- rollup            ^4.45.1  →  ^4.46.1
2025-07-28 20:39:47 +02:00
dependabot[bot]
b711671231
Build(deps): Bump streetsidesoftware/cspell-action from 7.1.1 to 7.1.2 (#41610)
Bumps [streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/streetsidesoftware/cspell-action/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md)
- [Commits](1570489540...6f05386161)

---
updated-dependencies:
- dependency-name: streetsidesoftware/cspell-action
  dependency-version: 7.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-07-28 20:25:31 +02:00
Julien Déramond
2254aeef28
Build(deps-dev): Bump zod from 4.0.5 to 4.0.10 2025-07-28 20:22:48 +02:00
dependabot[bot]
45439923aa
Build(deps): Bump github/codeql-action from 3.29.2 to 3.29.3 (#41611)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.2 to 3.29.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](181d5eefc2...d6bbdef45e)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 20:00:18 +02:00
Julien Déramond
c985f821a7
Build(deps-dev): Bump the development-dependencies group with 2 updates (#41609)
- astro: 5.12.0 → 5.12.1
- jasmine: 5.8.0 → 5.9.0
2025-07-22 08:31:13 +02:00
Julien Déramond
86ffedb026
Build(deps-dev): Bump the development-dependencies group with 4 updates (#41599)
- @astrojs/markdown-remark: ^6.3.2  →    ^6.3.3
- @astrojs/mdx: ^4.3.0  →    ^4.3.1
- astro: ^5.11.1  →   ^5.12.0
- stylelint: ^16.21.1  →  ^16.22.0
2025-07-18 21:02:35 +02:00
Julien Déramond
117a248faa
Workflows: Use SHA-1 precise references for third-party actions (#41595) 2025-07-16 09:11:53 -07:00
Julien Déramond
3ec3e20440
Build(deps-dev): Bump rollup from 4.45.0 to 4.45.1 2025-07-15 20:10:47 +02:00
dependabot[bot]
307c625244
Build(deps): Bump actions/upload-artifact from 4.6.1 to 4.6.2 (#41594)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 4.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-15 20:01:18 +02:00
Julien Déramond
0c36327a99
Build(deps-dev): Bump astro from 5.11.0 to 5.11.1 2025-07-14 12:12:15 +02:00
Julien Déramond
1c0f359d30
Workflows: Bump ossf/scorecard-action to 2.4.2 2025-07-12 21:45:46 +02:00
Julien Déramond
1e4df1c651
Build(deps-dev): Bump rollup from 4.44.2 to 4.45.0 2025-07-12 21:38:02 +02:00
Mark Otto
876bf4afa7
OSSF Scorecard (#41571)
* Create scorecard.yml

* add shield for OSSF

* Update README.md
2025-07-12 09:39:57 -07:00
Julien Déramond
6ee8cfd964
Build(deps-dev): Bump zod from 4.0.2 to 4.0.5 2025-07-11 19:26:25 +02:00
Julien Déramond
fc44fd852e
Build(deps-dev): Bump zod from 4.0.0 to 4.0.2 2025-07-10 18:39:01 +02:00
Julien Déramond
b934bb4850
Build(deps-dev): Bump zod from 3.25.76 to 4.0.0 2025-07-09 22:45:10 +02:00
Julien Déramond
c4cb9ce2ed
Build(deps-dev): Bump zod from 3.25.75 to 3.25.76 2025-07-08 22:23:44 +02:00
Julien Déramond
7c23d46ef6
Build(deps-dev): Bump zod from 3.25.74 to 3.25.75 2025-07-07 18:42:25 +02:00
Julien Déramond
1ead2c96c5
Build(deps-dev): Bump the development-dependencies group with 2 updates
- rollup   ^4.44.1  →   ^4.44.2
 - zod     ^3.25.72  →  ^3.25.74
2025-07-05 12:56:45 +02:00
Julien Déramond
3bee7c15d4
Build(deps-dev): Bump zod from 3.25.71 to 3.25.72 2025-07-04 06:21:00 +02:00
Julien Déramond
99cd78e8ff
Build(deps-dev): Bump the development-dependencies group with 2 updates
- astro       ^5.10.2  →   ^5.11.0
- stylelint  ^16.21.0  →  ^16.21.1
2025-07-03 21:20:57 +02:00
Julien Déramond
b9e39c649c
Build(deps-dev): Bump zod from 3.25.69 to 3.25.71 2025-07-03 06:33:08 +02:00
Julien Déramond
f96aa4cbc0
Build(deps-dev): Bump zod from 3.25.67 to 3.25.69 2025-07-02 22:32:14 +02:00
Julien Déramond
b02d5ed72f
Fix color-contrast() function for WCAG 2.1 compliance (#41585) 2025-07-02 22:30:30 +02:00
Julien Déramond
64b340c37f
Build(deps-dev): Bump the development-dependencies group with 3 updates
- @babel/cli         ^7.27.2  →  ^7.28.0
- @babel/core        ^7.27.7  →  ^7.28.0
- @babel/preset-env  ^7.27.2  →  ^7.28.0
2025-07-02 18:36:08 +02:00
Maxime Lardenois
9566444580
Docs: Sass automatic recompilation in dev mode with Astro (#41574)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-07-02 12:58:34 +02:00
Julien Déramond
c5074c7c18
Fix typo in generated site/src/types/auto-import.d.ts 2025-07-01 23:10:52 +02:00
Julien Déramond
879d1d15dc
Fix several typos in comments within TypeScript files in site/src/libs 2025-07-01 23:06:58 +02:00
Julien Déramond
7d12ff7b3b
Fix typo in JsDocs and ScssDocs shortcodes comments 2025-07-01 22:58:50 +02:00
Julien Déramond
9fce97c4b2
Fix missing space between classes in Navbars example 2025-07-01 22:53:44 +02:00
Julien Déramond
aecf990fc5
Build(deps-dev): Bump astro from 5.10.1 to 5.10.2 2025-07-01 18:53:25 +02:00
Julien Déramond
8c975a4f0d
Build(deps-dev): Bump prettier from 3.6.1 to 3.6.2 2025-06-27 06:47:49 +02:00
Julien Déramond
f4296c71dc
Build(deps-dev): Bump @babel/core from 7.27.4 to 7.27.7 2025-06-26 17:39:04 +02:00
Julien Déramond
0593c2769b
Build(deps-dev): Bump rollup from 4.44.0 to 4.44.1 2025-06-26 06:48:18 +02:00
Julien Déramond
56ee1e3c40
Build(deps-dev): Bump prettier from 3.6.0 to 3.6.1 2025-06-25 19:29:46 +02:00
Julien Déramond
69e276e813
Build(deps-dev): Bump the development-dependencies group with 3 updates (#41566) 2025-06-23 21:14:30 +02:00
Julien Déramond
777f4c031f
Build(deps-dev): Bump eslint-plugin-import from 2.31.0 to 2.32.0 2025-06-21 10:32:26 +02:00
Julien Déramond
b851a994bd
Docs: use Example shortcode instead of divs with only .bd-example class (#41556) 2025-06-19 18:56:42 +02:00
Julien Déramond
094fb64680
Build(deps-dev): Bump the development-dependencies group with 4 updates (#41560) 2025-06-19 17:48:26 +02:00
Julien Déramond
6997db4d71
Build(deps-dev): Bump the development-dependencies group with 5 updates (#41552) 2025-06-17 17:38:12 +02:00
Patrice Chalin
e6eb77a442
Docs: restore local dev port to 9001 (#41545)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-06-16 23:56:15 +02:00
Julien Déramond
d83f33af3a
Build(deps-dev): Bump @rollup/plugin-commonjs from 28.0.3 to 28.0.5 2025-06-15 10:47:24 +02:00
Julien Déramond
a70e06ab71
Build(deps-dev): Bump stylelint-config-twbs-bootstrap from 16.0.0 to 16.1.0 (#41546) 2025-06-14 09:15:54 +02:00
Julien Déramond
bd4aa6f8bb
Build(deps-dev): Bump the development-dependencies group with 2 updates (#41544) 2025-06-13 13:43:54 +02:00
Mark Otto
b6f7ec7ddd
Streamline release prep script (#41539)
* Streamline release prep script

* Delete local branch if already existing

---------

Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-06-12 11:24:10 -07:00
Julien Déramond
f63e5494b0
Build(deps-dev): Bump the development-dependencies group with 3 updates (#41540) 2025-06-12 07:20:04 +02:00
Julien Déramond
6f1783df08
Build(deps-dev): Bump zod from 3.25.57 to 3.25.58 2025-06-11 06:41:05 +02:00
Julien Déramond
e0032ae6a5
Release v5.3.7 (#41509) 2025-06-10 08:44:49 -07:00
Julien Déramond
0f63de9e73
Build(deps-dev): Bump zod from 3.25.56 to 3.25.57 2025-06-10 07:03:07 +02:00
Julien Déramond
37f33ff678
Build(deps-dev): Bump the development-dependencies group with 2 updates (#41531) 2025-06-09 21:02:29 +02:00
Mark Otto
03f27a2b89
Docs: add example of showing dynamic range value with output (#41516)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-06-09 14:18:42 +02:00
Julien Déramond
f04b980e74
Docs: enhance floating labels placeholder usage description (#41526) 2025-06-09 13:57:57 +02:00
Julien Déramond
1c00b1fc88
Build(deps-dev): Bump the development-dependencies group with 3 updates (#41528) 2025-06-08 08:19:53 +02:00
Julien Déramond
590226f8f4
Build(deps-dev): Bump the development-dependencies group with 2 updates 2025-06-06 20:03:07 +02:00
Julien Déramond
0a9fa30c82
Build(deps-dev): Bump the development-dependencies group with 4 updates (#41525) 2025-06-05 20:59:46 +02:00
dependabot[bot]
0b6c09abb2
Build(deps-dev): Bump zod from 3.25.48 to 3.25.49 (#41513)
Bumps the development-dependencies group with 1 update: [zod](https://github.com/colinhacks/zod).


Updates `zod` from 3.25.48 to 3.25.49
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.48...v3.25.49)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 3.25.49
  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>
2025-06-04 07:23:25 +02:00
Mark Otto
e6fdd27b73
Mentions CDN integrity and crossorigin attributes in Intro docs page (#41515) 2025-06-03 14:53:40 -07:00
Amit Rathiesh
13aa16a99b
Fix: Popover with hover and click triggers closes on mouseleave (#41511)
* Fix: Popover with hover and click triggers closes on mouseleave

When a popover is configured with `trigger: 'hover click'`,
if you open it by a click, it would incorrectly close when the
mouse pointer leaves the trigger element. This was because the
`mouseleave` event (part of the hover trigger) would hide the
popover without adequately respecting the click trigger's intent
to keep it open.

This commit modifies the click event listener within `Tooltip.js`
(which Popover extends) to explicitly manage the `_activeTrigger[TRIGGER_CLICK]`
state:
- When a click opens the popover or makes a hover-opened popover
  sticky, `_activeTrigger[TRIGGER_CLICK]` is set to `true`.
- When a click closes an already click-activated popover,
  `_activeTrigger[TRIGGER_CLICK]` is set to `false`.

The `_leave()` method, called by `mouseleave`, already checks
`_isWithActiveTrigger()`. With `_activeTrigger[TRIGGER_CLICK]`
now accurately reflecting the click state, `_leave()` will not
hide a click-activated popover when the mouse leaves the trigger
element. The popover will now correctly remain open until a
subsequent click closes it.

* Removed `test-popover.html`

* Fix linting issues

* Add unit test

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-06-03 12:19:24 -07:00
Julien Déramond
3c1e17823a
Build(deps-dev): Bump zod from 3.25.42 to 3.25.48 2025-06-02 19:43:44 +02:00
Julien Déramond
fb5409b65f
Build(deps-dev): Bump @babel/core from 7.27.3 to 7.27.4 2025-05-31 10:32:04 +02:00
Julien Déramond
6b53c4464a Regenerate package-lock.json 2025-05-30 10:19:29 +02:00
Julien Déramond
39650db732 Update devDependencies 2025-05-30 10:19:29 +02:00
Mark Otto
12bc56aa11
fix linter (#41507) 2025-05-29 13:24:22 -07:00
Mark Otto
195a80686c
Add section to Download page for IntelliSense extension (#41492) 2025-05-29 12:06:58 -07:00
Christian Oliff
fd879c0779
Add VSCode Extensions & Settings Configs (#41498)
Fixes: #41496
2025-05-29 12:06:36 -07:00
Mark Otto
6b3649d369
Move ads to right sidebar to reduce reflow (#41506)
* Move ads to right sidebar to reduce reflow

* Adjust and fix linter

* More
2025-05-29 12:04:21 -07:00
Julien Déramond
29b45d4c28
CI: switch to Node.js 22 (#41503) 2025-05-27 21:36:03 +02:00
dependabot[bot]
c8b471b660
Build(deps-dev): Bump the development-dependencies group with 8 updates (#41502)
Bumps the development-dependencies group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@astrojs/markdown-remark](https://github.com/withastro/astro/tree/HEAD/packages/markdown/remark) | `6.3.1` | `6.3.2` |
| [@astrojs/mdx](https://github.com/withastro/astro/tree/HEAD/packages/integrations/mdx) | `4.2.6` | `4.3.0` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.27.1` | `7.27.3` |
| [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) | `5.7.13` | `5.8.0` |
| [npm-run-all2](https://github.com/bcomnes/npm-run-all2) | `8.0.2` | `8.0.4` |
| [rollup](https://github.com/rollup/rollup) | `4.41.0` | `4.41.1` |
| [terser](https://github.com/terser/terser) | `5.39.2` | `5.40.0` |
| [zod](https://github.com/colinhacks/zod) | `3.25.7` | `3.25.30` |



Updates `@astrojs/markdown-remark` from 6.3.1 to 6.3.2
- [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@6.3.2/packages/markdown/remark)

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

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

Updates `@babel/core` from 7.27.1 to 7.27.3
- [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.27.3/packages/babel-core)

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

Updates `npm-run-all2` from 8.0.2 to 8.0.4
- [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.2...v8.0.4)

Updates `rollup` from 4.41.0 to 4.41.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.41.0...v4.41.1)

Updates `terser` from 5.39.2 to 5.40.0
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.39.2...v5.40.0)

Updates `zod` from 3.25.7 to 3.25.30
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/commits/v3.25.30)

---
updated-dependencies:
- dependency-name: "@astrojs/markdown-remark"
  dependency-version: 6.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@astrojs/mdx"
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@astrojs/prism"
  dependency-version: 3.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@babel/core"
  dependency-version: 7.27.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: astro
  dependency-version: 5.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: npm-run-all2
  dependency-version: 8.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: rollup
  dependency-version: 4.41.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: terser
  dependency-version: 5.40.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: zod
  dependency-version: 3.25.30
  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>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-27 21:22:22 +02:00
Louis-Maxime Piton
81b815358f
Docs: clarify "Via JavaScript" usage example for Accordion Collapse (#41501) 2025-05-27 20:32:14 +02:00
Maxime Lardenois
3663e3a061
Docs: add aria label on section headings anchor links (#41487)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
Co-authored-by: Patrick H. Lauke <redux@splintered.co.uk>
2025-05-25 14:56:22 +02:00
Julien Déramond
a61555b6c2
Examples: remove unused myChart variable (#41494) 2025-05-25 14:29:41 +02:00
Julien Déramond
1e7a20a24c
Fix lint warnings in site/src/libs/path.ts 2025-05-25 14:23:16 +02:00
Louis-Maxime Piton
d6ca5ba35b
Docs: fix local assets path handling for Windows compatibility (#41485)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-25 14:20:20 +02:00
Maxime Lardenois
374c8a1e1f
Docs: fix typo in Masonry example (#41486)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-23 11:14:11 +02:00
Louis-Maxime Piton
a749136ce2
Docs: enhance 'On this page' ToC accessibility (#41483)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-23 11:06:18 +02:00
Louis-Maxime Piton
1c3b53bc0b
Docs: ensure stackblitz.js loads conditionally as intended (#41482)
Co-authored-by: Vincent Prothais <vincent.prothais@orange.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-23 09:47:55 +02:00
Bardi Harborow
eeb12099b6
Docs: Refine sanitizer documentation (#41434)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-05-22 21:48:52 +02:00
dependabot[bot]
c85346d0bc
Build(deps-dev): Bump the development-dependencies group with 6 updates (#41478)
Bumps the development-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) | `5.7.12` | `5.7.13` |
| [eslint-plugin-html](https://github.com/BenoitZugmeyer/eslint-plugin-html) | `8.1.2` | `8.1.3` |
| [npm-run-all2](https://github.com/bcomnes/npm-run-all2) | `8.0.1` | `8.0.2` |
| [rollup](https://github.com/rollup/rollup) | `4.40.2` | `4.41.0` |
| [terser](https://github.com/terser/terser) | `5.39.1` | `5.39.2` |
| [zod](https://github.com/colinhacks/zod) | `3.24.4` | `3.25.7` |


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

Updates `eslint-plugin-html` from 8.1.2 to 8.1.3
- [Changelog](https://github.com/BenoitZugmeyer/eslint-plugin-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/BenoitZugmeyer/eslint-plugin-html/compare/v8.1.2...v8.1.3)

Updates `npm-run-all2` from 8.0.1 to 8.0.2
- [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.1...v8.0.2)

Updates `rollup` from 4.40.2 to 4.41.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.40.2...v4.41.0)

Updates `terser` from 5.39.1 to 5.39.2
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.39.1...v5.39.2)

Updates `zod` from 3.24.4 to 3.25.7
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/commits)

---
updated-dependencies:
- dependency-name: astro
  dependency-version: 5.7.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: eslint-plugin-html
  dependency-version: 8.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: npm-run-all2
  dependency-version: 8.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: rollup
  dependency-version: 4.41.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: terser
  dependency-version: 5.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: zod
  dependency-version: 3.25.7
  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>
2025-05-20 19:17:43 +02:00
Julien Déramond
7f946d4241
Consolidate multiple 'none' values in box-shadow Sass mixin (#41469) 2025-05-19 20:53:18 -07:00
Julien Déramond
e5b9f37149
Fix HTML head content built from 'Download examples' button (#41468) 2025-05-19 12:52:34 -07:00
dependabot[bot]
0a005b3604
Build(deps-dev): Bump terser from 5.39.0 to 5.39.1 (#41467)
Bumps the development-dependencies group with 1 update in the / directory: [terser](https://github.com/terser/terser).


Updates `terser` from 5.39.0 to 5.39.1
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.39.0...v5.39.1)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 5.39.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>
2025-05-13 21:43:32 +02:00
Julien Déramond
e4720759c0
Update devDependencies (#41464) 2025-05-13 21:02:04 +02:00
dependabot[bot]
a74579119a
Build(deps): Bump streetsidesoftware/cspell-action from 6 to 7 (#41462)
Bumps [streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action) from 6 to 7.
- [Release notes](https://github.com/streetsidesoftware/cspell-action/releases)
- [Changelog](https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/streetsidesoftware/cspell-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: streetsidesoftware/cspell-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 20:39:39 +02:00
Julien Déramond
03f6129e6f
Realign package.json dev deps versions from lock file (#41461) 2025-05-12 22:55:38 +02:00
Julien Déramond
ac0e962d32
Drop ununsed @types/google.analytics dev dependency and bump @types dev dependencies (#41456)
Co-authored-by: Christian Oliff <christianoliff@pm.me>
2025-05-09 18:57:35 +02:00
Julien Déramond
0f19b06745
Update devDependencies (#41450) 2025-05-07 17:24:20 +02:00
Julien Déramond
06f4e79cc7
Update devDependencies (#41445) 2025-05-06 19:09:11 +02:00
Julien Déramond
33b1b0e7b8
Update devDependencies (#41443) 2025-05-06 18:55:23 +02:00
Julien Déramond
6fb43fb737
Add re-synchronization of gh-pages branch in 'docs-prep.sh' 2025-05-06 16:58:08 +02:00
AlexKoala
cababca0b9
Docs: fix broken "View on GitHub" URLs (#41440) 2025-05-06 16:46:51 +02:00
Mark Otto
f849680d16
Release v5.3.6 (#41406)
* Update to v5.3.6

* Rebuild

* Rebuild
2025-05-05 12:21:55 -07:00
Mark Otto
dddd792ffe
Add docs release prep script (#41435)
* Add docs release prep script

* Fix indentation

* Add argument

* Remote empty site dir, update completion text
2025-05-05 12:07:30 -07:00
Gaël Poupard
c5bec4ea7b
fix(visually-hidden): prevent overflowing children to become focusable (#41286) 2025-05-04 13:21:30 -07:00
Julien Déramond
4c98145482
Update devDependencies and regenerate package-lock.json (#41425) 2025-05-01 20:56:40 +02:00
MarkoOleksiyenko
ba5b5a6300
docs(pagination): put current page on link element for a11y (#41154)
* docs(pagination): put current page on link element for a11y

* Reorganize and rewrite

* Update pagination.mdx

---------

Co-authored-by: Mark Otto <markdotto@gmail.com>
2025-04-29 09:40:45 -07:00
chris
1184417397
remove link to sunset resource on accessibility.mdx (#41418) 2025-04-28 21:02:46 -07:00
Mohamad Salman
7bbbc492ef
Removed line break between // Private comment and function (#41218) 2025-04-25 10:22:58 -07:00
Mohamad Salman
3bb3c95188
Move _isShown() method to private section (#41220) 2025-04-25 10:21:47 -07:00
Christian Oliff
a03a9d6696
Docs: Remove some unneeded Twitter/X metatags (#41408) 2025-04-24 15:00:05 +02:00
Julien Déramond
9f4d383046
Remove files configuration from .cspell.json (#41400) 2025-04-22 09:16:54 +02:00
Jason Dent
a4b37547a3
Spell check .md and .mdx files (#41398)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-22 08:54:19 +02:00
Julien Déramond
bd09d21ed6
Fix typos and code indentation in Forms > Checks and radios (#41399) 2025-04-22 08:44:44 +02:00
Mark Otto
24305e7b18
Attempt to return focus explicitly to dropdown trigger (#41365)
Co-authored-by: Mark Otto <mdo@heypierre.app>
2025-04-21 21:20:09 -07:00
Tommaso Allegretti
1d441c7c7f
Docs: add Usage section with JavaScript guide for Accordion component (#40768)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
Co-authored-by: Tommaso Allegretti <tommasoallegretti@users.noreply.github.com>
2025-04-21 21:04:20 -07:00
Mark Otto
1a6175a1c6
Alternate for #41142, disabled list group items (#41397) 2025-04-21 21:03:10 -07:00
Mohamad Salman
5c5f2913df
Add private comment to BaseComponent Class (#41254) 2025-04-21 20:33:04 -07:00
Mark Otto
dd4e14499f
Add switch attribute to docs for switch checkbox (#41396)
* Add switch attribute to docs for switch checkbox

* tweak

* AI says this is the way

* fix
2025-04-21 20:32:40 -07:00
Julien Déramond
ed36faae9d
Bump image-size from 1.0.2 to 2.0.2 (#41384) 2025-04-15 21:18:13 +02:00
Julien Déramond
d01e66f5f7
Update devDependencies (#41383) 2025-04-15 21:09:29 +02:00
XhmikosR
2b55a457ce
Update dependabot.yml 2025-04-15 20:56:27 +03:00
Julien Déramond
a8ab19955b
Docs: migration from Hugo to Astro (#41251)
Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com>
Co-authored-by: Mark Otto <markdotto@gmail.com>
2025-04-15 18:37:47 +02:00
Johannes
99a0dc628a
Removed broken translation links (#41359)
* Removed broken translation links

* Remove v4 translations, consolidate v5 ones

---------

Co-authored-by: Mark Otto <markdotto@gmail.com>
2025-04-10 21:43:59 -07:00
Vinicius de Santana
02761cd59e
Doc: fix blockquote mismatch (#41295)
* fix: blockquote mismatch in card

Refs: #41292

* fix: blockquote mismatch in reboot

Refs: #41292
2025-04-10 21:40:30 -07:00
Julien Déramond
9c90c55543
Docs: move Cheatsheet RTL example to the RTL category (#41282) 2025-04-10 23:37:15 +02:00
Julien Déramond
0b5309bd30
Docs: use 'i.e.' instead of 'e.g.' in Floating Labels example description (#41364) 2025-04-10 18:23:18 +02:00
Tommaso Allegretti
c147a5d7d6
Docs: add "Border radius" section for Forms > Input group (#40776)
Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-09 20:29:54 +02:00
mscdex
c9cb0d679c
Limit selectors in .card-group to immediate children to fix border-radius bug (#41298) 2025-04-09 19:52:24 +02:00
Adam Schoenfeld
e029891967
Docs: mention data-bs-target for offcanvas close buttons (#41325)
Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-09 16:50:05 +02:00
Mohamad Salman
690fbfdbd4
docs: add 'skeleton loaders' to loading placeholders description (#41177) 2025-04-08 22:59:25 -07:00
Fox Piacenti
c9ad24b9b7
Docs: better indicate include options in Sass setup (#41143) 2025-04-08 19:29:15 +02:00
Maxime Lardenois
6f10a1edbb
Docs: add Sass deprecations notices (#41283)
Co-authored-by: Mark Otto <markdotto@gmail.com>
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-07 20:23:25 +02:00
Mark Otto
33bb9911e7
Docs: mention npm install and npm run dist in CONTRIBUTING.md (#41340)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-07 19:44:00 +02:00
William Entriken
9a01aa33de
Docs: fix specification for getInstance (#41297)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-06 12:56:43 -07:00
Ashcon Partovi
41cbd4d581
Docs: add Bun install instructions (#41277)
Co-authored-by: Julien Déramond <juderamond@gmail.com>
2025-04-04 21:34:27 +02:00
Mark Otto
85f23534bd
Bump to v5.3.5 (#41348)
* Bump to v5.3.5

* Undo comment version change

* undo comment

* release again
2025-04-04 11:20:30 -07:00
Julien Déramond
b1e16bd161 Fix floating labels rendering on Firefox 2025-04-04 10:46:01 -07:00
697 changed files with 27801 additions and 19412 deletions

View File

@ -9,3 +9,4 @@ Firefox ESR
iOS >= 12
Safari >= 12
not Explorer <= 11
not kaios <= 2.5 # fix floating label issues in Firefox (see https://github.com/postcss/autoprefixer/issues/1533)

View File

@ -87,6 +87,7 @@
"roboto",
"RTLCSS",
"ruleset",
"sassrc",
"screenreaders",
"scrollbars",
"scrollspy",
@ -119,9 +120,6 @@
"zindex"
],
"language": "en-US",
"files": [
"**/*.md"
],
"ignorePaths": [
".cspell.json",
"dist/",

View File

@ -2,6 +2,8 @@
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/
/site/static/sw.js
/site/static/docs/**/assets/sw.js
/site/layouts/partials/

View File

@ -95,6 +95,7 @@
"unicorn/prefer-array-flat": "off",
"unicorn/prefer-at": "off",
"unicorn/prefer-dom-node-dataset": "off",
"unicorn/prefer-global-this": "off",
"unicorn/prefer-module": "off",
"unicorn/prefer-query-selector": "off",
"unicorn/prefer-spread": "off",
@ -202,7 +203,12 @@
},
{
"files": [
"site/assets/js/**"
"site/src/assets/application.js",
"site/src/assets/partials/*.js",
"site/src/assets/search.js",
"site/src/assets/snippets.js",
"site/src/assets/stackblitz.js",
"site/src/plugins/*.js"
],
"parserOptions": {
"sourceType": "module",

View File

@ -1,6 +1,6 @@
# Contributing to Bootstrap
Looking to contribute something to Bootstrap? **Here's how you can help.**
Looking to contribute something to Bootstrap? **Heres how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
@ -33,14 +33,14 @@ restrictions:
## Issues assignment
The core team will be looking at the open issues, analyze them, and provide guidance on how to proceed. **Issues won't be assigned to anyone outside the core team.** However, contributors are welcome to participate in the discussion and provide their input on how to best solve the issue, and even submit a PR if they want to. Please wait that the issue is ready to be worked on before submitting a PR, we don't want to waste your time.
The core team will be looking at the open issues, analyze them, and provide guidance on how to proceed. **Issues wont be assigned to anyone outside the core team.** However, contributors are welcome to participate in the discussion and provide their input on how to best solve the issue, and even submit a PR if they want to. Please wait that the issue is ready to be worked on before submitting a PR, we dont want to waste your time.
Please keep in mind that the core team is small, has limited resources and that we are not always able to respond immediately. We will try to provide feedback as soon as possible, but please be patient. If you don't get a response immediately, it doesn't mean that we are ignoring you or that we don't care about your issue or PR. We will get back to you as soon as we can.
Please keep in mind that the core team is small, has limited resources and that we are not always able to respond immediately. We will try to provide feedback as soon as possible, but please be patient. If you dont get a response immediately, it doesnt mean that we are ignoring you or that we dont care about your issue or PR. We will get back to you as soon as we can.
## Issues and labels
Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them:
Our bug tracker utilizes several labels to help organize and identify issues. Heres what they represent and how we use them:
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
@ -64,7 +64,7 @@ Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
0. **[Validate your HTML](https://html5.validator.nu/)** to ensure your
problem isn't caused by a simple error in your own code.
problem isnt caused by a simple error in your own code.
1. **Use the GitHub issue search** &mdash; check if the issue has already been
reported.
@ -77,7 +77,7 @@ Guidelines for bug reports:
These [v4 CodePen](https://codepen.io/team/bootstrap/pen/yLabNQL) and [v5 CodePen](https://codepen.io/team/bootstrap/pen/qBamdLj) are helpful templates.
A good bug report shouldn't leave others needing to chase you up for more
A good bug report shouldnt leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? Do other browsers show the bug differently? What
@ -109,7 +109,7 @@ Sometimes bugs reported to us are actually caused by bugs in the browser(s) them
| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------ | -------------------------------------------------------- |
| Mozilla | Firefox | Gecko | <https://bugzilla.mozilla.org/enter_bug.cgi> | "Core" is normally the right product option to choose. |
| Apple | Safari | WebKit | <https://bugs.webkit.org/enter_bug.cgi?product=WebKit> | In Apple's bug reporter, choose "Safari" as the product. |
| Apple | Safari | WebKit | <https://bugs.webkit.org/enter_bug.cgi?product=WebKit> | In Apples bug reporter, choose "Safari" as the product. |
| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | <https://bugs.chromium.org/p/chromium/issues/list> | Click the "New issue" button. |
| Microsoft | Edge | Blink | <https://developer.microsoft.com/en-us/microsoft-edge/> | Go to "Help > Send Feedback" from the browser |
@ -117,8 +117,8 @@ Sometimes bugs reported to us are actually caused by bugs in the browser(s) them
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to _you_ to make a strong
case to convince the project's developers of the merits of this feature. Please
fits with the scope and aims of the project. Its up to _you_ to make a strong
case to convince the projects developers of the merits of this feature. Please
provide as much detail and context as possible.
@ -131,8 +131,8 @@ commits.
**Please ask first** before embarking on any **significant** pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project. For trivial
things, or things that don't require a lot of your time, you can go ahead and
projects developers might not want to merge into the project. For trivial
things, or things that dont require a lot of your time, you can go ahead and
make a PR.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the
@ -144,7 +144,7 @@ any dist files (`dist/` or `js/dist`).** Those files are automatically generated
edit the source files in [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/main/scss)
and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/main/js/src) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the
Similarly, when contributing to Bootstraps documentation, you should edit the
documentation source files in
[the `/bootstrap/site/content/docs/` directory of the `main` branch](https://github.com/twbs/bootstrap/tree/main/site/content/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the
@ -172,33 +172,47 @@ included in the project:
git pull upstream main
```
3. Create a new topic branch (off the main project development branch) to
3. Install or update project dependencies with npm:
```bash
npm install
```
4. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
```bash
git checkout -b <topic-branch-name>
```
4. Commit your changes in logical chunks. Please adhere to these [git commit
5. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Git's
or your code is unlikely be merged into the main project. Use Gits
[interactive rebase](https://help.github.com/articles/about-git-rebase/)
feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch:
6. Ensure your changes compile the dist CSS and JS files in the `dist/` directory. Verify
the build succeeds locally without errors.
```bash
npm run dist
```
7. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream main
```
6. Push your topic branch up to your fork:
8. Commit your changes, but **do not push compiled CSS and JS files in `dist` and `js/dist`**.
Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
7. [Open a Pull Request](https://help.github.com/articles/about-pull-requests/)
with a clear title and description against the `main` branch.
9. [Open a pull request](https://help.github.com/articles/about-pull-requests/)
with a clear title and description against the `main` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the terms of the [MIT License](../LICENSE) (if it
@ -214,7 +228,7 @@ includes code changes) and under the terms of the
[Adhere to the Code Guide.](https://codeguide.co/#html)
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags).
- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
- Use CDNs and HTTPS for third-party JS when possible. We dont use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility.
### CSS
@ -222,7 +236,7 @@ includes code changes) and under the terms of the
[Adhere to the Code Guide.](https://codeguide.co/#css)
- When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG/#distinguishable).
- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://www.a11yproject.com/posts/2013-01-25-never-remove-css-outlines/) for more details.
- Except in rare cases, dont remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://www.a11yproject.com/posts/2013-01-25-never-remove-css-outlines/) for more details.
### JS
@ -241,4 +255,4 @@ Run `npm run test` before committing to ensure your changes follow our coding st
By contributing your code, you agree to license your contribution under the [MIT License](../LICENSE).
By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).
Prior to v3.1.0, Bootstrap's code was released under the Apache License v2.0.
Prior to v3.1.0, Bootstraps code was released under the Apache License v2.0.

View File

@ -18,7 +18,7 @@
### Checklist
<!-- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
<!-- If youre unsure about any of these, dont hesitate to ask. Were here to help! -->
- [ ] I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
- [ ] My code follows the code style of the project _(using `npm run lint`)_

View File

@ -9,8 +9,6 @@ updates:
timezone: Europe/Athens
- package-ecosystem: npm
directory: "/"
reviewers:
- XhmikosR
labels:
- dependencies
- v5

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -22,12 +22,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"
cache: npm

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -20,12 +20,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"
cache: npm

View File

@ -22,11 +22,11 @@ jobs:
pull-requests: write
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Compress Images
uses: calibreapp/image-actions@1.1.0
uses: calibreapp/image-actions@737ceeaeed61e17b8d358358a303f1b8d177b779 # v1.1.0
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}

View File

@ -24,21 +24,21 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
config-file: ./.github/codeql/codeql-config.yml
languages: "javascript"
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
category: "/language:javascript"

View File

@ -23,14 +23,14 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Run cspell
uses: streetsidesoftware/cspell-action@v6
uses: streetsidesoftware/cspell-action@dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d # v7.2.0
with:
config: ".cspell.json"
files: "**/*.md"
files: "**/*.{md,mdx}"
inline: error
incremental_files_only: false

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -20,12 +20,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"
cache: npm

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -20,12 +20,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"
cache: npm
@ -42,9 +42,9 @@ jobs:
run: npm run docs-vnu
- name: Run linkinator
uses: JustinBeckwith/linkinator-action@v1
uses: JustinBeckwith/linkinator-action@3d5ba091319fa7b0ac14703761eebb7d100e6f6d # v1.11.0
with:
paths: _site
recurse: true
verbosity: error
skip: "^(?!http://localhost)"
skip: "^http://localhost"

View File

@ -17,7 +17,7 @@ jobs:
if: github.repository == 'twbs/bootstrap'
steps:
- name: awaiting reply
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2
with:
actions: "close-issues"
labels: "awaiting-reply"

View File

@ -18,7 +18,7 @@ jobs:
steps:
- name: awaiting reply
if: github.event.label.name == 'needs-example'
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@50068f49b7b2b3857270ead65e2d02e4459b022c # v3.6.2
with:
actions: "create-comment"
token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -25,12 +25,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ env.NODE }}
cache: npm
@ -45,7 +45,7 @@ jobs:
run: npm run js-test
- name: Run Coveralls
uses: coverallsapp/github-action@v2
uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
if: ${{ !github.event.repository.fork }}
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -20,12 +20,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"
cache: npm

View File

@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 22
permissions:
contents: read
@ -20,12 +20,12 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "${{ env.NODE }}"

View File

@ -18,6 +18,6 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'twbs/bootstrap'
steps:
- uses: release-drafter/release-drafter@v6
- uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

78
.github/workflows/scorecard.yml vendored Normal file
View File

@ -0,0 +1,78 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '27 12 * * 2'
push:
branches: [ "main" ]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
# `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request'
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read
steps:
- name: "Checkout code"
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
# file_mode: git
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
with:
sarif_file: results.sarif

10
.gitignore vendored
View File

@ -1,8 +1,5 @@
# Ignore docs files
/_site/
# Hugo files
/resources/
/.hugo_build.lock
# Numerous always-ignore extensions
*.diff
@ -29,7 +26,6 @@
*.sublime-workspace
nbproject
Thumbs.db
/.vscode/
# Local Netlify folder
.netlify
@ -41,3 +37,9 @@ Thumbs.db
/dist-sass/
/js/coverage/
/node_modules/
# Site
/site/dist
/site/node_modules
/site/.astro
/site/public

12
.prettierignore Normal file
View File

@ -0,0 +1,12 @@
# Prettier is only used for the website
site/.astro
site/dist
site/public
site/src/assets
site/src/scss
site/src/pages/**/*.md
site/src/pages/**/*.mdx
site/src/content/**/*.mdx
site/src/layouts/RedirectLayout.astro
site/static

View File

@ -2,4 +2,5 @@
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/

10
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
"recommendations": [
"astro-build.astro-vscode",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"hossaini.bootstrap-intellisense",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint"
]
}

10
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": "always"
},
"editor.renderWhitespace": "all",
"scss.validate": false,
"stylelint.enable": true,
"stylelint.validate": ["scss"]
}

View File

@ -31,7 +31,7 @@ Examples of unacceptable behavior include:
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
- Publishing others private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

View File

@ -31,7 +31,7 @@ Our default branch is for development of our Bootstrap 5 release. Head to the [`
- [Quick start](#quick-start)
- [Status](#status)
- [What's included](#whats-included)
- [Whats included](#whats-included)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Contributing](#contributing)
@ -46,11 +46,12 @@ Our default branch is for development of our Bootstrap 5 release. Head to the [`
Several quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.4.zip)
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.7.zip)
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.4`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.4`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.4`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.7`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.7`
- Install with [Bun](https://bun.sh/): `bun add bootstrap@v5.3.7`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.7`
- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass`
Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-started/introduction/) for information on the framework contents, templates, examples, and more.
@ -69,13 +70,14 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.3/getting-starte
[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js)
![Open Source Security Foundation Scorecard](https://img.shields.io/ossf-scorecard/github.com/twbs/bootstrap)
[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap?logo=opencollective&logoColor=fff)](#backers)
[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap?logo=opencollective&logoColor=fff)](#sponsors)
## What's included
## Whats included
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
Within the download youll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.
<details>
<summary>Download contents</summary>
@ -131,7 +133,7 @@ Within the download you'll find the following directories and files, logically g
```
</details>
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/docs/v2/).
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/docs/v2/).
## Bugs and feature requests
@ -141,18 +143,18 @@ Have a bug or a feature request? Please first read the [issue guidelines](https:
## Documentation
Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
Bootstraps documentation, included in this repo in the root directory, is built with [Astro](https://astro.build/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
Documentation search is powered by [Algolia's DocSearch](https://docsearch.algolia.com/).
### Running documentation locally
1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder).
1. Run `npm install` to install the Node.js dependencies, including Astro (the site builder).
2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.
4. Open `http://localhost:9001/` in your browser, and voilà.
4. Open <http://localhost:9001> in your browser, and voilà.
Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/).
Learn more about using Astro by reading its [documentation](https://docs.astro.build/en/getting-started/).
### Documentation for previous releases
@ -172,7 +174,7 @@ Editor preferences are available in the [editor config](https://github.com/twbs/
## Community
Get updates on Bootstrap's development and chat with the project maintainers and community members.
Get updates on Bootstraps development and chat with the project maintainers and community members.
- Follow [@getbootstrap on X](https://x.com/getbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).

View File

@ -16,7 +16,7 @@ const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-r
// These are the files we only care about replacing the version
const FILES = [
'README.md',
'hugo.yml',
'config.yml',
'js/src/base-component.js',
'package.js',
'scss/mixins/_banner.scss',

157
build/docs-prep.sh Executable file
View File

@ -0,0 +1,157 @@
#!/bin/bash
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Default branch suffix
BRANCH_SUFFIX="release"
# Check if a custom version parameter was provided
if [ $# -eq 1 ]; then
BRANCH_SUFFIX="$1"
fi
# Branch name to create
NEW_BRANCH="gh-pages-${BRANCH_SUFFIX}"
# Get the current docs version from config
DOCS_VERSION=$(node -p "require('js-yaml').load(require('fs').readFileSync('config.yml', 'utf8')).docs_version")
# Function to print colored messages
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
exit 1
}
print_info() {
echo -e "${BLUE} $1${NC}"
}
print_warning() {
echo -e "${YELLOW}$1${NC}"
}
# Function to execute command with error handling
execute() {
print_info "Running: $1"
eval $1
if [ $? -ne 0 ]; then
print_error "Failed to execute: $1"
else
print_success "Successfully executed: $1"
fi
}
# Check if /tmp/_site directory exists from a previous run
if [ -d "/tmp/_site" ]; then
print_warning "Found existing /tmp/_site directory. Removing it…"
rm -rf /tmp/_site
fi
# Main process
print_info "Starting documentation deployment process…"
# Step 1: Build documentation
print_info "Building documentation with npm run docs…"
npm run docs
if [ $? -ne 0 ]; then
print_error "Documentation build failed!"
fi
print_success "Documentation built successfully"
# Step 2: Move _site to /tmp/
print_info "Moving _site to temporary location…"
execute "mv _site /tmp/"
# Step 3: Switch to gh-pages branch
print_info "Checking out gh-pages branch…"
git checkout gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to checkout gh-pages branch. Make sure it exists."
fi
print_success "Switched to gh-pages branch"
git reset --hard origin/gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to reset to origin/gh-pages. Check your git configuration."
fi
print_success "Reset to origin/gh-pages"
git pull origin gh-pages
if [ $? -ne 0 ]; then
print_error "Failed to pull from origin/gh-pages. Check your network connection and git configuration."
fi
print_success "Pulled latest changes from origin/gh-pages"
# Step 4: Create a new branch for the update
print_info "Checking if branch ${NEW_BRANCH} exists and deleting it if it does…"
if git show-ref --verify --quiet refs/heads/${NEW_BRANCH}; then
execute "git branch -D ${NEW_BRANCH}"
else
print_info "Branch ${NEW_BRANCH} does not exist, proceeding with creation…"
fi
print_info "Creating new branch ${NEW_BRANCH}"
execute "git checkout -b ${NEW_BRANCH}"
# Step 5: Move all root-level files from Astro build
find /tmp/_site -maxdepth 1 -type f -exec mv {} . \;
# Step 6: Move all top-level directories except 'docs' (which needs special handling)
find /tmp/_site -maxdepth 1 -type d ! -name "_site" ! -name "docs" -exec sh -c 'dir=$(basename "$1"); rm -rf "$dir"; mv "$1" .' _ {} \;
# Step 7: Handle docs directory specially
if [ -d "/tmp/_site/docs" ]; then
# Replace only the current version's docs
if [ -d "docs/$DOCS_VERSION" ]; then
rm -rf "docs/$DOCS_VERSION"
fi
mv "/tmp/_site/docs/$DOCS_VERSION" "docs/"
# Handle docs root files
find /tmp/_site/docs -maxdepth 1 -type f -exec mv {} docs/ \;
# Handle special docs directories (getting-started, versions)
for special_dir in getting-started versions; do
if [ -d "/tmp/_site/docs/$special_dir" ]; then
rm -rf "docs/$special_dir"
mv "/tmp/_site/docs/$special_dir" "docs/"
fi
done
fi
# Clean up remaining files in /tmp/_site if any
if [ -d "/tmp/_site" ]; then
remaining_files=$(find /tmp/_site -type f | wc -l)
remaining_dirs=$(find /tmp/_site -type d | wc -l)
if [ $remaining_files -gt 0 ] || [ $remaining_dirs -gt 1 ]; then
print_warning "There are still some files or directories in /tmp/_site that weren't moved."
print_warning "You may want to inspect /tmp/_site to see if anything important was missed."
else
print_info "Cleaning up temporary directory…"
rm -rf /tmp/_site
print_success "Temporary directory cleaned up"
fi
fi
# Step 10: Remove empty site directory if it exists
if [ -d "site" ]; then
print_info "Removing empty site directory…"
execute "rm -rf site"
fi
print_success "Docs prep complete!"
print_info "Review changes before committing and pushing."
print_info "Next steps:"
print_info " 1. Run a local server to review changes"
print_info " 2. Check browser and web inspector for any errors"
print_info " 3. git add ."
print_info " 4. git commit -m \"Update documentation\""
print_info " 5. git push origin ${NEW_BRANCH}"

View File

@ -19,11 +19,11 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url))
sh.config.fatal = true
const configFile = path.join(__dirname, '../hugo.yml')
const configFile = path.join(__dirname, '../config.yml')
// Array of objects which holds the files to generate SRI hashes for.
// `file` is the path from the root folder
// `configPropertyName` is the hugo.yml variable's name of the file
// `configPropertyName` is the config.yml variable's name of the file
const files = [
{
file: 'dist/css/bootstrap.min.css',

View File

@ -30,7 +30,14 @@ execFile('java', ['-version'], (error, stdout, stderr) => {
// Per https://www.w3.org/TR/html-aria/#docconformance having "aria-disabled" on a link is
// NOT RECOMMENDED, but it's still valid - we explain in the docs that it's not ideal,
// and offer more robust alternatives, but also need to show a less-than-ideal example
'An “aria-disabled” attribute whose value is “true” should not be specified on an “a” element that has an “href” attribute.'
'An “aria-disabled” attribute whose value is “true” should not be specified on an “a” element that has an “href” attribute.',
// A `code` element with the `is:raw` attribute coming from remark-prismjs (Astro upstream possible bug)
'Attribute “is:raw” is not serializable as XML 1.0.',
'Attribute “is:raw” not allowed on element “code” at this point.',
// Astro's expecting trailing slashes on HTML tags such as <br />
'Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.',
// Allow `switch` attribute.
'Attribute “switch” not allowed on element “input” at this point.'
].join('|')
const args = [

View File

@ -11,6 +11,7 @@ import fs from 'node:fs/promises'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import sh from 'shelljs'
import { format } from 'prettier'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@ -83,16 +84,34 @@ for (const file of staticJsFiles) {
sh.rm(`${distFolder}/index.html`)
// get all examples' HTML files
for (const file of sh.find(`${distFolder}/**/*.html`)) {
const htmlFiles = sh.find(`${distFolder}/**/*.html`)
const formatPromises = htmlFiles.map(async file => {
const fileContents = sh.cat(file)
.toString()
.replace(new RegExp(`"/docs/${versionShort}/`, 'g'), '"../')
.replace(/"..\/dist\//g, '"../assets/dist/')
.replace(/(<link href="\.\.\/.*) integrity=".*>/g, '$1>')
.replace(/(<script src="\.\.\/.*) integrity=".*>/g, '$1></script>')
.replace(/( +)<!-- favicons(.|\n)+<style>/i, ' <style>')
new sh.ShellString(fileContents).to(file)
}
.replace(/(<link href="\.\.\/[^"]*"[^>]*) integrity="[^"]*"/g, '$1')
.replace(/<link[^>]*href="\.\.\/assets\/img\/favicons\/[^"]*"[^>]*>/g, '')
.replace(/(<script src="\.\.\/[^"]*"[^>]*) integrity="[^"]*"/g, '$1')
let formattedHTML
try {
formattedHTML = await format(fileContents, {
parser: 'html',
filepath: file
})
} catch (error) {
console.error(`\nError formatting ${file}:`)
console.error(`Message: ${error.message}`)
console.error('\nSkipping formatting for this file...\n')
formattedHTML = fileContents
}
new sh.ShellString(formattedHTML).to(file)
})
await Promise.all(formatPromises)
// create the zip file
sh.exec(`zip -qr9 "${distFolder}.zip" "${distFolder}"`)

56
config.yml Normal file
View File

@ -0,0 +1,56 @@
title: "Bootstrap"
baseURL: "https://getbootstrap.com"
docsDir: "site"
subtitle: "The most popular HTML, CSS, and JS library in the world."
description: "Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins."
authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors"
current_version: "5.3.7"
current_ruby_version: "5.3.7"
docs_version: "5.3"
rfs_version: "v10.0.0"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/bootstrap"
x: "getbootstrap"
opencollective: "https://opencollective.com/bootstrap"
blog: "https://blog.getbootstrap.com/"
themes: "https://themes.getbootstrap.com/"
icons: "https://icons.getbootstrap.com/"
swag: "https://cottonbureau.com/people/bootstrap"
analytics:
fathom_site: "ITUSEYJG"
algolia:
app_id: "AK7KMZKZHQ"
api_key: "3151f502c7b9e9dafd5e6372b691a24e"
index_name: "bootstrap"
download:
source: "https://github.com/twbs/bootstrap/archive/v5.3.7.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.3.7/bootstrap-5.3.7-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.3.7/bootstrap-5.3.7-examples.zip"
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css"
css_hash: "sha384-LN+7fdVzj6u52u30Kp6M/trliBMCMKTyK833zpbD+pXdCLuTusPj697FH4R/5mcr"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-Xbg45MqvDIk1e563NLpGEulpX6AvL404DP+/iCgW9eFa2BqztiwTexswJo2jLMue"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.min.js"
js_hash: "sha384-7qAoOXltbVP82dhxHAUje59V5r2YsVfBafyUDxEdApLPmcdhBPg1DKg1ERo0BZlK"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-ndDqU0Gzau9qJ1lfW4pNLlhNTkCfHzAVBReH9diLvGRem5+R9g2FzA8ZGN954O5Q"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
popper_hash: "sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
popper_esm: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js"
anchors:
min: 2
max: 5
toc:
min: 2
max: 6

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Grid v5.3.4 (https://getbootstrap.com/)
* Bootstrap Grid v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Grid v5.3.4 (https://getbootstrap.com/)
* Bootstrap Grid v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Reboot v5.3.4 (https://getbootstrap.com/)
* Bootstrap Reboot v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Reboot v5.3.4 (https://getbootstrap.com/)
* Bootstrap Reboot v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Utilities v5.3.4 (https://getbootstrap.com/)
* Bootstrap Utilities v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -519,6 +519,10 @@
.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
position: absolute !important;
}
.visually-hidden *,
.visually-hidden-focusable:not(:focus):not(:focus-within) * {
overflow: hidden !important;
}
.stretched-link::after {
position: absolute;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap Utilities v5.3.4 (https://getbootstrap.com/)
* Bootstrap Utilities v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -519,6 +519,10 @@
.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
position: absolute !important;
}
.visually-hidden *,
.visually-hidden-focusable:not(:focus):not(:focus-within) * {
overflow: hidden !important;
}
.stretched-link::after {
position: absolute;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* Bootstrap v5.3.4 (https://getbootstrap.com/)
* Bootstrap v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -2156,10 +2156,6 @@ progress {
display: block;
padding: 0;
}
.form-control::-moz-placeholder {
color: var(--bs-secondary-color);
opacity: 1;
}
.form-control::placeholder {
color: var(--bs-secondary-color);
opacity: 1;
@ -2629,17 +2625,10 @@ textarea.form-control-lg {
.form-floating > .form-control-plaintext {
padding: 1rem 0.75rem;
}
.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
color: transparent;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
color: transparent;
}
.form-floating > .form-control:not(:-moz-placeholder), .form-floating > .form-control-plaintext:not(:-moz-placeholder) {
padding-top: 1.625rem;
padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
@ -2656,9 +2645,6 @@ textarea.form-control-lg {
padding-bottom: 0.625rem;
padding-left: 0.75rem;
}
.form-floating > .form-control:not(:-moz-placeholder) ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
@ -2668,15 +2654,6 @@ textarea.form-control-lg {
.form-floating > .form-control:-webkit-autofill ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
.form-floating > textarea:not(:-moz-placeholder) ~ label::after {
position: absolute;
inset: 1rem 0.375rem;
z-index: -1;
height: 1.5em;
content: "";
background-color: var(--bs-body-bg);
border-radius: var(--bs-border-radius);
}
.form-floating > textarea:focus ~ label::after,
.form-floating > textarea:not(:placeholder-shown) ~ label::after {
position: absolute;
@ -4540,24 +4517,24 @@ textarea.form-control-lg {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-top,
.card-group > .card:not(:last-child) .card-header {
.card-group > .card:not(:last-child) > .card-img-top,
.card-group > .card:not(:last-child) > .card-header {
border-top-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-bottom,
.card-group > .card:not(:last-child) .card-footer {
.card-group > .card:not(:last-child) > .card-img-bottom,
.card-group > .card:not(:last-child) > .card-footer {
border-bottom-right-radius: 0;
}
.card-group > .card:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-top,
.card-group > .card:not(:first-child) .card-header {
.card-group > .card:not(:first-child) > .card-img-top,
.card-group > .card:not(:first-child) > .card-header {
border-top-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-bottom,
.card-group > .card:not(:first-child) .card-footer {
.card-group > .card:not(:first-child) > .card-img-bottom,
.card-group > .card:not(:first-child) > .card-footer {
border-bottom-left-radius: 0;
}
}
@ -7179,6 +7156,10 @@ textarea.form-control-lg {
.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
position: absolute !important;
}
.visually-hidden *,
.visually-hidden-focusable:not(:focus):not(:focus-within) * {
overflow: hidden !important;
}
.stretched-link::after {
position: absolute;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
@charset "UTF-8";
/*!
* Bootstrap v5.3.4 (https://getbootstrap.com/)
* Bootstrap v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -2154,10 +2154,6 @@ progress {
display: block;
padding: 0;
}
.form-control::-moz-placeholder {
color: var(--bs-secondary-color);
opacity: 1;
}
.form-control::placeholder {
color: var(--bs-secondary-color);
opacity: 1;
@ -2627,17 +2623,10 @@ textarea.form-control-lg {
.form-floating > .form-control-plaintext {
padding: 1rem 0.75rem;
}
.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
color: transparent;
}
.form-floating > .form-control::placeholder,
.form-floating > .form-control-plaintext::placeholder {
color: transparent;
}
.form-floating > .form-control:not(:-moz-placeholder), .form-floating > .form-control-plaintext:not(:-moz-placeholder) {
padding-top: 1.625rem;
padding-bottom: 0.625rem;
}
.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
.form-floating > .form-control-plaintext:focus,
.form-floating > .form-control-plaintext:not(:placeholder-shown) {
@ -2654,9 +2643,6 @@ textarea.form-control-lg {
padding-bottom: 0.625rem;
padding-right: 0.75rem;
}
.form-floating > .form-control:not(:-moz-placeholder) ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-control-plaintext ~ label,
@ -2666,15 +2652,6 @@ textarea.form-control-lg {
.form-floating > .form-control:-webkit-autofill ~ label {
transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);
}
.form-floating > textarea:not(:-moz-placeholder) ~ label::after {
position: absolute;
inset: 1rem 0.375rem;
z-index: -1;
height: 1.5em;
content: "";
background-color: var(--bs-body-bg);
border-radius: var(--bs-border-radius);
}
.form-floating > textarea:focus ~ label::after,
.form-floating > textarea:not(:placeholder-shown) ~ label::after {
position: absolute;
@ -4538,24 +4515,24 @@ textarea.form-control-lg {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-top,
.card-group > .card:not(:last-child) .card-header {
.card-group > .card:not(:last-child) > .card-img-top,
.card-group > .card:not(:last-child) > .card-header {
border-top-left-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-bottom,
.card-group > .card:not(:last-child) .card-footer {
.card-group > .card:not(:last-child) > .card-img-bottom,
.card-group > .card:not(:last-child) > .card-footer {
border-bottom-left-radius: 0;
}
.card-group > .card:not(:first-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-top,
.card-group > .card:not(:first-child) .card-header {
.card-group > .card:not(:first-child) > .card-img-top,
.card-group > .card:not(:first-child) > .card-header {
border-top-right-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-bottom,
.card-group > .card:not(:first-child) .card-footer {
.card-group > .card:not(:first-child) > .card-img-bottom,
.card-group > .card:not(:first-child) > .card-footer {
border-bottom-right-radius: 0;
}
}
@ -7161,6 +7138,10 @@ textarea.form-control-lg {
.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
position: absolute !important;
}
.visually-hidden *,
.visually-hidden-focusable:not(:focus):not(:focus-within) * {
overflow: hidden !important;
}
.stretched-link::after {
position: absolute;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.4 (https://getbootstrap.com/)
* Bootstrap v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -647,7 +647,7 @@
* Constants
*/
const VERSION = '5.3.4';
const VERSION = '5.3.7';
/**
* Class definition
@ -673,6 +673,8 @@
this[propertyName] = null;
}
}
// Private
_queueCallback(callback, element, isAnimated = true) {
executeAfterTransition(callback, element, isAnimated);
}
@ -1604,11 +1606,11 @@
this._element.style[dimension] = '';
this._queueCallback(complete, this._element, true);
}
// Private
_isShown(element = this._element) {
return element.classList.contains(CLASS_NAME_SHOW$7);
}
// Private
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
config.parent = getElement(config.parent);
@ -3688,6 +3690,9 @@
this._element.setAttribute('aria-expanded', 'false');
Manipulator.removeDataAttribute(this._menu, 'popper');
EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
// Explicitly return focus to the trigger element
this._element.focus();
}
_getConfig(config) {
config = super._getConfig(config);
@ -4800,7 +4805,6 @@
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
@ -5344,6 +5348,7 @@
if (trigger === 'click') {
EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
const context = this._initializeOnDelegatedTarget(event);
context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
context.toggle();
});
} else if (trigger !== TRIGGER_MANUAL) {
@ -6209,7 +6214,6 @@
}
// Private
_maybeScheduleHide() {
if (!this._config.autohide) {
return;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.4 (https://getbootstrap.com/)
* Bootstrap v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -643,7 +643,7 @@ class Config {
* Constants
*/
const VERSION = '5.3.4';
const VERSION = '5.3.7';
/**
* Class definition
@ -669,6 +669,8 @@ class BaseComponent extends Config {
this[propertyName] = null;
}
}
// Private
_queueCallback(callback, element, isAnimated = true) {
executeAfterTransition(callback, element, isAnimated);
}
@ -1600,11 +1602,11 @@ class Collapse extends BaseComponent {
this._element.style[dimension] = '';
this._queueCallback(complete, this._element, true);
}
// Private
_isShown(element = this._element) {
return element.classList.contains(CLASS_NAME_SHOW$7);
}
// Private
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
config.parent = getElement(config.parent);
@ -1847,6 +1849,9 @@ class Dropdown extends BaseComponent {
this._element.setAttribute('aria-expanded', 'false');
Manipulator.removeDataAttribute(this._menu, 'popper');
EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
// Explicitly return focus to the trigger element
this._element.focus();
}
_getConfig(config) {
config = super._getConfig(config);
@ -2959,7 +2964,6 @@ const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longde
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
@ -3503,6 +3507,7 @@ class Tooltip extends BaseComponent {
if (trigger === 'click') {
EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
const context = this._initializeOnDelegatedTarget(event);
context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
context.toggle();
});
} else if (trigger !== TRIGGER_MANUAL) {
@ -4368,7 +4373,6 @@ class Toast extends BaseComponent {
}
// Private
_maybeScheduleHide() {
if (!this._config.autohide) {
return;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.4 (https://getbootstrap.com/)
* Bootstrap v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -666,7 +666,7 @@
* Constants
*/
const VERSION = '5.3.4';
const VERSION = '5.3.7';
/**
* Class definition
@ -692,6 +692,8 @@
this[propertyName] = null;
}
}
// Private
_queueCallback(callback, element, isAnimated = true) {
executeAfterTransition(callback, element, isAnimated);
}
@ -1623,11 +1625,11 @@
this._element.style[dimension] = '';
this._queueCallback(complete, this._element, true);
}
// Private
_isShown(element = this._element) {
return element.classList.contains(CLASS_NAME_SHOW$7);
}
// Private
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
config.parent = getElement(config.parent);
@ -1870,6 +1872,9 @@
this._element.setAttribute('aria-expanded', 'false');
Manipulator.removeDataAttribute(this._menu, 'popper');
EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
// Explicitly return focus to the trigger element
this._element.focus();
}
_getConfig(config) {
config = super._getConfig(config);
@ -2982,7 +2987,6 @@
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
@ -3526,6 +3530,7 @@
if (trigger === 'click') {
EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
const context = this._initializeOnDelegatedTarget(event);
context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
context.toggle();
});
} else if (trigger !== TRIGGER_MANUAL) {
@ -4391,7 +4396,6 @@
}
// Private
_maybeScheduleHide() {
if (!this._config.autohide) {
return;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

102
hugo.yml
View File

@ -1,102 +0,0 @@
languageCode: "en"
title: "Bootstrap"
baseURL: "https://getbootstrap.com"
security:
enableInlineShortcodes: true
funcs:
getenv:
- ^HUGO_
- NETLIFY
markup:
goldmark:
renderer:
unsafe: true
highlight:
noClasses: false
tableOfContents:
startLevel: 2
endLevel: 6
build:
noJSConfigInAssets: true
buildDrafts: true
buildFuture: true
enableRobotsTXT: true
metaDataFormat: "yaml"
disableKinds: ["404", "taxonomy", "term", "RSS"]
publishDir: "_site"
module:
mounts:
- source: dist
target: static/docs/5.3/dist
- source: site/assets
target: assets
- source: site/content
target: content
- source: site/data
target: data
- source: site/layouts
target: layouts
- source: site/static
target: static
- source: node_modules/@docsearch/css
target: assets/scss/@docsearch/css
- source: site/static/docs/5.3/assets/img/favicons/apple-touch-icon.png
target: static/apple-touch-icon.png
- source: site/static/docs/5.3/assets/img/favicons/favicon.ico
target: static/favicon.ico
params:
subtitle: "The most popular HTML, CSS, and JS library in the world."
description: "Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins."
authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors"
current_version: "5.3.4"
current_ruby_version: "5.3.4"
docs_version: "5.3"
rfs_version: "v10.0.0"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/bootstrap"
x: "getbootstrap"
opencollective: "https://opencollective.com/bootstrap"
blog: "https://blog.getbootstrap.com/"
themes: "https://themes.getbootstrap.com/"
icons: "https://icons.getbootstrap.com/"
swag: "https://cottonbureau.com/people/bootstrap"
analytics:
fathom_site: "ITUSEYJG"
algolia:
appId: "AK7KMZKZHQ"
apiKey: "3151f502c7b9e9dafd5e6372b691a24e"
indexName: "bootstrap"
download:
source: "https://github.com/twbs/bootstrap/archive/v5.3.4.zip"
dist: "https://github.com/twbs/bootstrap/releases/download/v5.3.4/bootstrap-5.3.4-dist.zip"
dist_examples: "https://github.com/twbs/bootstrap/releases/download/v5.3.4/bootstrap-5.3.4-examples.zip"
cdn:
# See https://www.srihash.org for info on how to generate the hashes
css: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.4/dist/css/bootstrap.min.css"
css_hash: "sha384-DQvkBjpPgn7RC31MCQoOeC9TI2kdqa4+BSgNMNj8v77fdC77Kj5zpWFTJaaAoMbC"
css_rtl: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.4/dist/css/bootstrap.rtl.min.css"
css_rtl_hash: "sha384-x4rAmXUquSwgvbjTfCFTigt/sWtZnmHFrQdhIpahxHhQ0T6bWRwZAlbXPSVvkKY9"
js: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.4/dist/js/bootstrap.min.js"
js_hash: "sha384-Re460s1NeyAhufAM5JwfIGWosokaQ7CH15ti6W5Y4wC/m4eJ5opJ2ivohxVM05Wd"
js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@5.3.4/dist/js/bootstrap.bundle.min.js"
js_bundle_hash: "sha384-YUe2LzesAfftltw+PEaao2tjU/QATaW/rOitAq67e0CT0Zi2VVRL0oC4+gAaeBKu"
popper: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"
popper_hash: "sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r"
popper_esm: "https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/esm/popper.min.js"
anchors:
min: 2
max: 5

2
js/dist/alert.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap alert.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap alert.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap base-component.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap base-component.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -21,7 +21,7 @@
* Constants
*/
const VERSION = '5.3.4';
const VERSION = '5.3.7';
/**
* Class definition
@ -47,6 +47,8 @@
this[propertyName] = null;
}
}
// Private
_queueCallback(callback, element, isAnimated = true) {
index_js.executeAfterTransition(callback, element, isAnimated);
}

View File

@ -1 +1 @@
{"version":3,"file":"base-component.js","sources":["../src/base-component.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.4'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n"],"names":["VERSION","BaseComponent","Config","constructor","element","config","getElement","_element","_config","_getConfig","Data","set","DATA_KEY","dispose","remove","EventHandler","off","EVENT_KEY","propertyName","Object","getOwnPropertyNames","_queueCallback","callback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","get","getOrCreateInstance","NAME","eventName","name"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;;EAOA;EACA;EACA;;EAEA,MAAMA,OAAO,GAAG,OAAO;;EAEvB;EACA;EACA;;EAEA,MAAMC,aAAa,SAASC,MAAM,CAAC;EACjCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;EAC3B,IAAA,KAAK,EAAE;EAEPD,IAAAA,OAAO,GAAGE,mBAAU,CAACF,OAAO,CAAC;MAC7B,IAAI,CAACA,OAAO,EAAE;EACZ,MAAA;EACF;MAEA,IAAI,CAACG,QAAQ,GAAGH,OAAO;MACvB,IAAI,CAACI,OAAO,GAAG,IAAI,CAACC,UAAU,CAACJ,MAAM,CAAC;EAEtCK,IAAAA,IAAI,CAACC,GAAG,CAAC,IAAI,CAACJ,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,EAAE,IAAI,CAAC;EAC1D;;EAEA;EACAC,EAAAA,OAAOA,GAAG;EACRH,IAAAA,IAAI,CAACI,MAAM,CAAC,IAAI,CAACP,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,CAAC;EACrDG,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACT,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACc,SAAS,CAAC;MAE3D,KAAK,MAAMC,YAAY,IAAIC,MAAM,CAACC,mBAAmB,CAAC,IAAI,CAAC,EAAE;EAC3D,MAAA,IAAI,CAACF,YAAY,CAAC,GAAG,IAAI;EAC3B;EACF;IAEAG,cAAcA,CAACC,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,GAAG,IAAI,EAAE;EACnDC,IAAAA,+BAAsB,CAACF,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,CAAC;EACvD;IAEAd,UAAUA,CAACJ,MAAM,EAAE;MACjBA,MAAM,GAAG,IAAI,CAACoB,eAAe,CAACpB,MAAM,EAAE,IAAI,CAACE,QAAQ,CAAC;EACpDF,IAAAA,MAAM,GAAG,IAAI,CAACqB,iBAAiB,CAACrB,MAAM,CAAC;EACvC,IAAA,IAAI,CAACsB,gBAAgB,CAACtB,MAAM,CAAC;EAC7B,IAAA,OAAOA,MAAM;EACf;;EAEA;IACA,OAAOuB,WAAWA,CAACxB,OAAO,EAAE;EAC1B,IAAA,OAAOM,IAAI,CAACmB,GAAG,CAACvB,mBAAU,CAACF,OAAO,CAAC,EAAE,IAAI,CAACQ,QAAQ,CAAC;EACrD;IAEA,OAAOkB,mBAAmBA,CAAC1B,OAAO,EAAEC,MAAM,GAAG,EAAE,EAAE;MAC/C,OAAO,IAAI,CAACuB,WAAW,CAACxB,OAAO,CAAC,IAAI,IAAI,IAAI,CAACA,OAAO,EAAE,OAAOC,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,IAAI,CAAC;EACnG;IAEA,WAAWL,OAAOA,GAAG;EACnB,IAAA,OAAOA,OAAO;EAChB;IAEA,WAAWY,QAAQA,GAAG;EACpB,IAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAACmB,IAAI,CAAE,CAAA;EAC1B;IAEA,WAAWd,SAASA,GAAG;EACrB,IAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAACL,QAAQ,CAAE,CAAA;EAC5B;IAEA,OAAOoB,SAASA,CAACC,IAAI,EAAE;EACrB,IAAA,OAAO,GAAGA,IAAI,CAAA,EAAG,IAAI,CAAChB,SAAS,CAAE,CAAA;EACnC;EACF;;;;;;;;"}
{"version":3,"file":"base-component.js","sources":["../src/base-component.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.7'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n // Private\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n"],"names":["VERSION","BaseComponent","Config","constructor","element","config","getElement","_element","_config","_getConfig","Data","set","DATA_KEY","dispose","remove","EventHandler","off","EVENT_KEY","propertyName","Object","getOwnPropertyNames","_queueCallback","callback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","get","getOrCreateInstance","NAME","eventName","name"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;;;EAOA;EACA;EACA;;EAEA,MAAMA,OAAO,GAAG,OAAO;;EAEvB;EACA;EACA;;EAEA,MAAMC,aAAa,SAASC,MAAM,CAAC;EACjCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;EAC3B,IAAA,KAAK,EAAE;EAEPD,IAAAA,OAAO,GAAGE,mBAAU,CAACF,OAAO,CAAC;MAC7B,IAAI,CAACA,OAAO,EAAE;EACZ,MAAA;EACF;MAEA,IAAI,CAACG,QAAQ,GAAGH,OAAO;MACvB,IAAI,CAACI,OAAO,GAAG,IAAI,CAACC,UAAU,CAACJ,MAAM,CAAC;EAEtCK,IAAAA,IAAI,CAACC,GAAG,CAAC,IAAI,CAACJ,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,EAAE,IAAI,CAAC;EAC1D;;EAEA;EACAC,EAAAA,OAAOA,GAAG;EACRH,IAAAA,IAAI,CAACI,MAAM,CAAC,IAAI,CAACP,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,CAAC;EACrDG,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACT,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACc,SAAS,CAAC;MAE3D,KAAK,MAAMC,YAAY,IAAIC,MAAM,CAACC,mBAAmB,CAAC,IAAI,CAAC,EAAE;EAC3D,MAAA,IAAI,CAACF,YAAY,CAAC,GAAG,IAAI;EAC3B;EACF;;EAEA;IACAG,cAAcA,CAACC,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,GAAG,IAAI,EAAE;EACnDC,IAAAA,+BAAsB,CAACF,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,CAAC;EACvD;IAEAd,UAAUA,CAACJ,MAAM,EAAE;MACjBA,MAAM,GAAG,IAAI,CAACoB,eAAe,CAACpB,MAAM,EAAE,IAAI,CAACE,QAAQ,CAAC;EACpDF,IAAAA,MAAM,GAAG,IAAI,CAACqB,iBAAiB,CAACrB,MAAM,CAAC;EACvC,IAAA,IAAI,CAACsB,gBAAgB,CAACtB,MAAM,CAAC;EAC7B,IAAA,OAAOA,MAAM;EACf;;EAEA;IACA,OAAOuB,WAAWA,CAACxB,OAAO,EAAE;EAC1B,IAAA,OAAOM,IAAI,CAACmB,GAAG,CAACvB,mBAAU,CAACF,OAAO,CAAC,EAAE,IAAI,CAACQ,QAAQ,CAAC;EACrD;IAEA,OAAOkB,mBAAmBA,CAAC1B,OAAO,EAAEC,MAAM,GAAG,EAAE,EAAE;MAC/C,OAAO,IAAI,CAACuB,WAAW,CAACxB,OAAO,CAAC,IAAI,IAAI,IAAI,CAACA,OAAO,EAAE,OAAOC,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,IAAI,CAAC;EACnG;IAEA,WAAWL,OAAOA,GAAG;EACnB,IAAA,OAAOA,OAAO;EAChB;IAEA,WAAWY,QAAQA,GAAG;EACpB,IAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAACmB,IAAI,CAAE,CAAA;EAC1B;IAEA,WAAWd,SAASA,GAAG;EACrB,IAAA,OAAO,CAAI,CAAA,EAAA,IAAI,CAACL,QAAQ,CAAE,CAAA;EAC5B;IAEA,OAAOoB,SAASA,CAACC,IAAI,EAAE;EACrB,IAAA,OAAO,GAAGA,IAAI,CAAA,EAAG,IAAI,CAAChB,SAAS,CAAE,CAAA;EACnC;EACF;;;;;;;;"}

2
js/dist/button.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap button.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap button.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

2
js/dist/carousel.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap carousel.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap carousel.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

6
js/dist/collapse.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap collapse.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap collapse.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -163,11 +163,11 @@
this._element.style[dimension] = '';
this._queueCallback(complete, this._element, true);
}
// Private
_isShown(element = this._element) {
return element.classList.contains(CLASS_NAME_SHOW);
}
// Private
_configAfterMerge(config) {
config.toggle = Boolean(config.toggle); // Coerce string values
config.parent = index_js.getElement(config.parent);

File diff suppressed because one or more lines are too long

2
js/dist/dom/data.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap data.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap data.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap event-handler.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap event-handler.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap manipulator.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap manipulator.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap selector-engine.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap selector-engine.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

5
js/dist/dropdown.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap dropdown.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap dropdown.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -195,6 +195,9 @@
this._element.setAttribute('aria-expanded', 'false');
Manipulator.removeDataAttribute(this._menu, 'popper');
EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget);
// Explicitly return focus to the trigger element
this._element.focus();
}
_getConfig(config) {
config = super._getConfig(config);

File diff suppressed because one or more lines are too long

2
js/dist/modal.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap modal.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap modal.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap offcanvas.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap offcanvas.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

2
js/dist/popover.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap popover.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap popover.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

View File

@ -1,5 +1,5 @@
/*!
* Bootstrap scrollspy.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap scrollspy.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

2
js/dist/tab.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap tab.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap tab.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

3
js/dist/toast.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap toast.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap toast.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -119,7 +119,6 @@
}
// Private
_maybeScheduleHide() {
if (!this._config.autohide) {
return;

File diff suppressed because one or more lines are too long

3
js/dist/tooltip.js vendored
View File

@ -1,5 +1,5 @@
/*!
* Bootstrap tooltip.js v5.3.4 (https://getbootstrap.com/)
* Bootstrap tooltip.js v5.3.7 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -395,6 +395,7 @@
if (trigger === 'click') {
EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {
const context = this._initializeOnDelegatedTarget(event);
context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
context.toggle();
});
} else if (trigger !== TRIGGER_MANUAL) {

Some files were not shown because too many files have changed in this diff Show More