From 022c3abc8fb8f1c5c6f0de8b2e31b0c3ae2638be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 20:53:17 +0100 Subject: [PATCH 01/11] Add astro-broken-links-checker to detect broken internal links --- package-lock.json | 132 +++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- site/astro.config.ts | 11 +++- 3 files changed, 144 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 753fd7d7422f..ef300a5d60fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,7 @@ "@types/prismjs": "^1.26.5", "astro": "^5.16.6", "astro-auto-import": "^0.4.5", + "astro-broken-links-checker": "^1.0.6", "autoprefixer": "^10.4.23", "bootstrap-vscode-theme": "^0.0.9", "bundlewatch": "^0.4.1", @@ -5712,6 +5713,19 @@ "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" } }, + "node_modules/astro-broken-links-checker": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/astro-broken-links-checker/-/astro-broken-links-checker-1.0.6.tgz", + "integrity": "sha512-otAodaegzAeEPCRJB+ED2IyHlxTQcFsJDP+2O3kGk/MDYbhr+u7qxZQHtZuSfg9p5aGu40Ayk7z7ayVR6kQSpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "fast-glob": "^3.3.2", + "node-fetch": "^3.3.2", + "node-html-parser": "^6.1.13", + "p-limit": "^6.1.0" + } + }, "node_modules/astro/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -7001,6 +7015,16 @@ "dev": true, "license": "MIT" }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -8540,6 +8564,30 @@ } } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -8834,6 +8882,19 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fraction.js": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", @@ -9736,6 +9797,16 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/hookified": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.0.tgz", @@ -14487,6 +14558,46 @@ "license": "MIT", "optional": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/node-fetch-native": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", @@ -14494,6 +14605,17 @@ "dev": true, "license": "MIT" }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, "node_modules/node-mock-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", @@ -19891,6 +20013,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 736209f048a8..10d17955abbd 100644 --- a/package.json +++ b/package.json @@ -129,10 +129,10 @@ "@types/prismjs": "^1.26.5", "astro": "^5.16.6", "astro-auto-import": "^0.4.5", + "astro-broken-links-checker": "^1.0.6", "autoprefixer": "^10.4.23", "bootstrap-vscode-theme": "^0.0.9", "bundlewatch": "^0.4.1", - "lightningcss": "^1.30.2", "clipboard": "^2.0.11", "cross-env": "^10.1.0", "eslint": "8.57.1", @@ -160,6 +160,7 @@ "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "karma-rollup-preprocessor": "7.0.7", + "lightningcss": "^1.30.2", "lockfile-lint": "^4.14.1", "markdownlint-cli": "^0.45.0", "mime": "^4.1.0", diff --git a/site/astro.config.ts b/site/astro.config.ts index d5f3cbdc91f5..7f17f5ec13c9 100644 --- a/site/astro.config.ts +++ b/site/astro.config.ts @@ -1,4 +1,5 @@ import { defineConfig } from 'astro/config' +import astroBrokenLinksChecker from 'astro-broken-links-checker'; import bootstrapLight from 'bootstrap-vscode-theme/themes/bootstrap-light.json' import bootstrapDark from 'bootstrap-vscode-theme/themes/bootstrap-dark.json' import { transformerNotationDiff } from '@shikijs/transformers' @@ -24,7 +25,15 @@ export default defineConfig({ build: { assets: `docs/${getConfig().docs_version}/assets` }, - integrations: [bootstrap()], + integrations: [ + bootstrap(), + astroBrokenLinksChecker({ + checkExternalLinks: false, + cacheExternalLinks: false, + throwError: true, + linkCheckerDir: '.link-checker' + }), + ], markdown: { smartypants: false, syntaxHighlight: 'shiki', From 1f50a65b8a7477ed333b5262382e23102f4d8387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:05:39 +0100 Subject: [PATCH 02/11] Fix /docs/6.0/components/modal/ broken link found in /index --- site/data/plugins.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/site/data/plugins.yml b/site/data/plugins.yml index bee8e690fcbe..3077d3a36c20 100644 --- a/site/data/plugins.yml +++ b/site/data/plugins.yml @@ -14,14 +14,14 @@ description: Expand and collapse areas of content, or create accordions. link: components/collapse/ +- name: Dialog + description: Add flexible and responsive dialogs to your project. + link: components/dialog/ + - name: Dropdown description: Create menus of links, actions, forms, and more. link: components/dropdowns/ -- name: Modal - description: Add flexible and responsive dialogs to your project. - link: components/modal/ - - name: Offcanvas description: Build and toggle hidden sidebars into any page. link: components/offcanvas/ From 529f508f163a6e3cb901a15147242899b0183c7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:08:28 +0100 Subject: [PATCH 03/11] Fix linting issues --- site/astro.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/astro.config.ts b/site/astro.config.ts index 7f17f5ec13c9..263cf7fef5de 100644 --- a/site/astro.config.ts +++ b/site/astro.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from 'astro/config' -import astroBrokenLinksChecker from 'astro-broken-links-checker'; +import astroBrokenLinksChecker from 'astro-broken-links-checker' import bootstrapLight from 'bootstrap-vscode-theme/themes/bootstrap-light.json' import bootstrapDark from 'bootstrap-vscode-theme/themes/bootstrap-dark.json' import { transformerNotationDiff } from '@shikijs/transformers' @@ -32,7 +32,7 @@ export default defineConfig({ cacheExternalLinks: false, throwError: true, linkCheckerDir: '.link-checker' - }), + }) ], markdown: { smartypants: false, From 375aba80b55b0f5c8d4f0ef74b5df88cb4b298d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:14:01 +0100 Subject: [PATCH 04/11] Fix /docs/6.0/assets/img/examples/dialogs.png broken link found in /docs/6.0/examples/ --- .../assets/img/examples/{modals.png => dialogs.png} | Bin .../img/examples/{modals@2x.png => dialogs@2x.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename site/static/docs/[version]/assets/img/examples/{modals.png => dialogs.png} (100%) rename site/static/docs/[version]/assets/img/examples/{modals@2x.png => dialogs@2x.png} (100%) diff --git a/site/static/docs/[version]/assets/img/examples/modals.png b/site/static/docs/[version]/assets/img/examples/dialogs.png similarity index 100% rename from site/static/docs/[version]/assets/img/examples/modals.png rename to site/static/docs/[version]/assets/img/examples/dialogs.png diff --git a/site/static/docs/[version]/assets/img/examples/modals@2x.png b/site/static/docs/[version]/assets/img/examples/dialogs@2x.png similarity index 100% rename from site/static/docs/[version]/assets/img/examples/modals@2x.png rename to site/static/docs/[version]/assets/img/examples/dialogs@2x.png From a6923cf80b8550b5d990550aefdb757585586494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:18:01 +0100 Subject: [PATCH 05/11] Fix broken links found in /docs/6.0/content/typography/ - %5B%5Bdocsref:/utilities/text-alignment%5D - %5B%5Bdocsref:/utilities/text-transform%5D - %5B%5Bdocsref:/utilities/text-decoration%5D - %5B%5Bdocsref:/utilities/text-wrapping%5D --- site/src/content/docs/content/typography.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/site/src/content/docs/content/typography.mdx b/site/src/content/docs/content/typography.mdx index 33565ff6dc6c..b16273423666 100644 --- a/site/src/content/docs/content/typography.mdx +++ b/site/src/content/docs/content/typography.mdx @@ -98,10 +98,10 @@ Utility classes are available for most common text-related CSS properties. - [Font style]([[docsref:/utilities/font-style]]) - [Font weight]([[docsref:/utilities/font-weight]]) - [Line height]([[docsref:/utilities/line-height]]) -- [Text alignment]([[docsref:/utilities/text-alignment]) -- [Text transform]([[docsref:/utilities/text-transform]) -- [Text decoration]([[docsref:/utilities/text-decoration]) -- [Text wrapping]([[docsref:/utilities/text-wrapping]) +- [Text alignment]([[docsref:/utilities/text-alignment]]) +- [Text transform]([[docsref:/utilities/text-transform]]) +- [Text decoration]([[docsref:/utilities/text-decoration]]) +- [Text wrapping]([[docsref:/utilities/text-wrapping]]) - [Vertical alignment]([[docsref:/utilities/vertical-align]]) Change text alignment, transform, style, weight, line-height, decoration and color with our text and [color utilities]([[docsref:/utilities/colors]]). From 9149de90fabd7fac2b625135d7ac81bab7098611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:23:31 +0100 Subject: [PATCH 06/11] Fix /docs/forms/form-adorn broken link in /docs/6.0/forms/datepicker/ --- site/src/content/docs/forms/datepicker.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/content/docs/forms/datepicker.mdx b/site/src/content/docs/forms/datepicker.mdx index 00e6b77b8a08..e7dbfffc9082 100644 --- a/site/src/content/docs/forms/datepicker.mdx +++ b/site/src/content/docs/forms/datepicker.mdx @@ -26,7 +26,7 @@ Note that we're using a width utility of `.w-12` to ensure the input is wide eno ### With icon -Use the [form adorn component](/docs/forms/form-adorn) to add a calendar icon alongside the datepicker input. When the input is inside a `.form-adorn` wrapper, the calendar automatically positions relative to the wrapper instead of the input. +Use the [form adorn component]([[docsref:/forms/form-adorn]]) to add a calendar icon alongside the datepicker input. When the input is inside a `.form-adorn` wrapper, the calendar automatically positions relative to the wrapper instead of the input. Select date
From fca3e5a1ce3b1aed31382368652d4b0f27b36219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:25:04 +0100 Subject: [PATCH 07/11] Fix /docs/forms/input-group/ broken link found in /docs/6.0/forms/otp-input/ --- site/src/content/docs/forms/otp-input.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/content/docs/forms/otp-input.mdx b/site/src/content/docs/forms/otp-input.mdx index 74db701504e8..8225f72e55fd 100644 --- a/site/src/content/docs/forms/otp-input.mdx +++ b/site/src/content/docs/forms/otp-input.mdx @@ -31,7 +31,7 @@ Wrap your inputs in a container with `.otp` and add `data-bs-otp` to enable the ## Connected inputs -Add `.input-group` to visually connect the inputs into a single cohesive field, leveraging Bootstrap's [input group](/docs/forms/input-group/) styles. +Add `.input-group` to visually connect the inputs into a single cohesive field, leveraging Bootstrap's [input group]([[docsref:/forms/input-group]]) styles. From 423476a30b402c7e4b60ec7c4d1d19f867a6c3f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:27:48 +0100 Subject: [PATCH 08/11] Fix [[config:download.dist]] and [[config:download.source]] broken links found in /docs/6.0/getting-started/install/ --- site/src/content/docs/getting-started/install.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/content/docs/getting-started/install.mdx b/site/src/content/docs/getting-started/install.mdx index 7e15e4baa091..fa6bed9d4732 100644 --- a/site/src/content/docs/getting-started/install.mdx +++ b/site/src/content/docs/getting-started/install.mdx @@ -130,8 +130,8 @@ You can also do the old fashioned thing and download Bootstrap manually. Choose | Type | Description | Link | | --- | --- | --- | -| Distribution files | Ready-to-use compiled and minified CSS and JavaScript files. Doesn't include documentation, source files, or dependencies like Floating UI. | Download | -| Source files | Sass, JavaScript, and documentation files for compiling with your own asset pipeline. Requires [Sass compiler]([[docsref:/guides/contribute#sass]]), [Autoprefixer](https://github.com/postcss/autoprefixer), and a JavaScript bundler like [Rollup](https://rollupjs.org/) or [Webpack](https://webpack.js.org/). | Download | +| Distribution files | Ready-to-use compiled and minified CSS and JavaScript files. Doesn't include documentation, source files, or dependencies like Floating UI. | {/*Download*/} | +| Source files | Sass, JavaScript, and documentation files for compiling with your own asset pipeline. Requires [Sass compiler]([[docsref:/guides/contribute#sass]]), [Autoprefixer](https://github.com/postcss/autoprefixer), and a JavaScript bundler like [Rollup](https://rollupjs.org/) or [Webpack](https://webpack.js.org/). | {/*Download*/} | Should you require our full set of [build tools]([[docsref:/guides/contribute#tooling-setup]]), they are included for developing Bootstrap and its docs, but they’re likely unsuitable for your own purposes. From 9b9a99a7a04983f628e27886a3fb31834e0ca41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:29:18 +0100 Subject: [PATCH 09/11] Fix /docs/6.0/forms/select/ broken link found in /docs/6.0/forms/overview/ --- site/src/content/docs/forms/overview.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/site/src/content/docs/forms/overview.mdx b/site/src/content/docs/forms/overview.mdx index 7e8e52e29f87..a2c084ca8093 100644 --- a/site/src/content/docs/forms/overview.mdx +++ b/site/src/content/docs/forms/overview.mdx @@ -6,8 +6,6 @@ aliases: "/docs/[[config:docs_version]]/forms/" sections: - title: Form control description: Style textual inputs and textareas with support for multiple states. - - title: Select - description: Improve browser default select elements with a custom initial appearance. - title: Checks & radios description: Use our custom radio buttons and checkboxes in forms for selecting input options. - title: Range From 77524b4d5329b9852257d573585f47405c6fcdb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20D=C3=A9ramond?= Date: Tue, 24 Feb 2026 21:30:27 +0100 Subject: [PATCH 10/11] Fix /docs/6.0/forms/checks-radios/ broken link found in /docs/6.0/forms/overview/ --- site/src/content/docs/forms/overview.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/site/src/content/docs/forms/overview.mdx b/site/src/content/docs/forms/overview.mdx index a2c084ca8093..3366121cf35f 100644 --- a/site/src/content/docs/forms/overview.mdx +++ b/site/src/content/docs/forms/overview.mdx @@ -6,8 +6,10 @@ aliases: "/docs/[[config:docs_version]]/forms/" sections: - title: Form control description: Style textual inputs and textareas with support for multiple states. - - title: Checks & radios - description: Use our custom radio buttons and checkboxes in forms for selecting input options. + - title: Checkbox + description: Use our custom checkboxes in forms for selecting input options. + - title: Radio + description: Use our custom radio buttons in forms for selecting input options. - title: Range description: Replace browser default range inputs with our custom version. - title: Input group From 34af067b720e35c659a4a6433da0c89ced333d28 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 20:32:40 +0000 Subject: [PATCH 11/11] Optimised images with calibre/image-actions --- .../[version]/assets/img/examples/dialogs.png | Bin 4814 -> 2844 bytes .../assets/img/examples/dialogs@2x.png | Bin 11623 -> 8332 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/site/static/docs/[version]/assets/img/examples/dialogs.png b/site/static/docs/[version]/assets/img/examples/dialogs.png index 0c8876a6769da7bb690eff1a1013682e75ac43a8..a9b6723dfb5e2ac41e517a06201d61e83e885ec0 100644 GIT binary patch literal 2844 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 literal 4814 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 Cts8Ry