Full Code of twbs/bootstrap for AI

main 060ff24924a2 cached
609 files
4.5 MB
1.2M tokens
2198 symbols
3 requests
Download .txt
Showing preview only (4,870K chars total). Download the full file or copy to clipboard to get everything.
Repository: twbs/bootstrap
Branch: main
Commit: 060ff24924a2
Files: 609
Total size: 4.5 MB

Directory structure:
gitextract_muvc3lnh/

├── .babelrc.js
├── .browserslistrc
├── .bundlewatch.config.json
├── .cspell.json
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── INCIDENT_RESPONSE.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SUPPORT.md
│   ├── codeql/
│   │   └── codeql-config.yml
│   ├── dependabot.yml
│   ├── release-drafter.yml
│   └── workflows/
│       ├── browserstack.yml
│       ├── bundlewatch.yml
│       ├── calibreapp-image-actions.yml
│       ├── codeql.yml
│       ├── cspell.yml
│       ├── css.yml
│       ├── docs.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       ├── js.yml
│       ├── lint.yml
│       ├── node-sass.yml
│       ├── publish-nuget.yml
│       ├── release-notes.yml
│       └── scorecard.yml
├── .gitignore
├── .prettierignore
├── .stylelintignore
├── .stylelintrc.json
├── .vscode/
│   ├── extensions.json
│   └── settings.json
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── SECURITY.md
├── build/
│   ├── banner.mjs
│   ├── build-plugins.mjs
│   ├── change-version.mjs
│   ├── docs-prep.sh
│   ├── generate-sri.mjs
│   ├── postcss.config.mjs
│   ├── rollup.config.mjs
│   ├── vnu-jar.mjs
│   └── zip-examples.mjs
├── composer.json
├── config.yml
├── dist/
│   ├── css/
│   │   ├── bootstrap-grid.css
│   │   ├── bootstrap-grid.rtl.css
│   │   ├── bootstrap-reboot.css
│   │   ├── bootstrap-reboot.rtl.css
│   │   ├── bootstrap-utilities.css
│   │   ├── bootstrap-utilities.rtl.css
│   │   ├── bootstrap.css
│   │   └── bootstrap.rtl.css
│   └── js/
│       ├── bootstrap.bundle.js
│       ├── bootstrap.esm.js
│       └── bootstrap.js
├── js/
│   ├── dist/
│   │   ├── alert.js
│   │   ├── base-component.js
│   │   ├── button.js
│   │   ├── carousel.js
│   │   ├── collapse.js
│   │   ├── dom/
│   │   │   ├── data.js
│   │   │   ├── event-handler.js
│   │   │   ├── manipulator.js
│   │   │   └── selector-engine.js
│   │   ├── dropdown.js
│   │   ├── modal.js
│   │   ├── offcanvas.js
│   │   ├── popover.js
│   │   ├── scrollspy.js
│   │   ├── tab.js
│   │   ├── toast.js
│   │   ├── tooltip.js
│   │   └── util/
│   │       ├── backdrop.js
│   │       ├── component-functions.js
│   │       ├── config.js
│   │       ├── focustrap.js
│   │       ├── index.js
│   │       ├── sanitizer.js
│   │       ├── scrollbar.js
│   │       ├── swipe.js
│   │       └── template-factory.js
│   ├── index.esm.js
│   ├── index.umd.js
│   ├── src/
│   │   ├── alert.js
│   │   ├── base-component.js
│   │   ├── button.js
│   │   ├── carousel.js
│   │   ├── collapse.js
│   │   ├── dom/
│   │   │   ├── data.js
│   │   │   ├── event-handler.js
│   │   │   ├── manipulator.js
│   │   │   └── selector-engine.js
│   │   ├── dropdown.js
│   │   ├── modal.js
│   │   ├── offcanvas.js
│   │   ├── popover.js
│   │   ├── scrollspy.js
│   │   ├── tab.js
│   │   ├── toast.js
│   │   ├── tooltip.js
│   │   └── util/
│   │       ├── backdrop.js
│   │       ├── component-functions.js
│   │       ├── config.js
│   │       ├── focustrap.js
│   │       ├── index.js
│   │       ├── sanitizer.js
│   │       ├── scrollbar.js
│   │       ├── swipe.js
│   │       └── template-factory.js
│   └── tests/
│       ├── README.md
│       ├── browsers.js
│       ├── helpers/
│       │   └── fixture.js
│       ├── integration/
│       │   ├── bundle-modularity.js
│       │   ├── bundle.js
│       │   ├── index.html
│       │   ├── rollup.bundle-modularity.js
│       │   └── rollup.bundle.js
│       ├── karma.conf.js
│       ├── unit/
│       │   ├── alert.spec.js
│       │   ├── base-component.spec.js
│       │   ├── button.spec.js
│       │   ├── carousel.spec.js
│       │   ├── collapse.spec.js
│       │   ├── dom/
│       │   │   ├── data.spec.js
│       │   │   ├── event-handler.spec.js
│       │   │   ├── manipulator.spec.js
│       │   │   └── selector-engine.spec.js
│       │   ├── dropdown.spec.js
│       │   ├── jquery.spec.js
│       │   ├── modal.spec.js
│       │   ├── offcanvas.spec.js
│       │   ├── popover.spec.js
│       │   ├── scrollspy.spec.js
│       │   ├── tab.spec.js
│       │   ├── toast.spec.js
│       │   ├── tooltip.spec.js
│       │   └── util/
│       │       ├── backdrop.spec.js
│       │       ├── component-functions.spec.js
│       │       ├── config.spec.js
│       │       ├── focustrap.spec.js
│       │       ├── index.spec.js
│       │       ├── sanitizer.spec.js
│       │       ├── scrollbar.spec.js
│       │       ├── swipe.spec.js
│       │       └── template-factory.spec.js
│       └── visual/
│           ├── alert.html
│           ├── button.html
│           ├── carousel.html
│           ├── collapse.html
│           ├── dropdown.html
│           ├── floating-label.html
│           ├── input.html
│           ├── modal.html
│           ├── popover.html
│           ├── scrollspy.html
│           ├── tab.html
│           ├── toast.html
│           └── tooltip.html
├── nuget/
│   ├── bootstrap.nuspec
│   └── bootstrap.sass.nuspec
├── package.js
├── package.json
├── scss/
│   ├── _accordion.scss
│   ├── _alert.scss
│   ├── _badge.scss
│   ├── _breadcrumb.scss
│   ├── _button-group.scss
│   ├── _buttons.scss
│   ├── _card.scss
│   ├── _carousel.scss
│   ├── _close.scss
│   ├── _containers.scss
│   ├── _dropdown.scss
│   ├── _forms.scss
│   ├── _functions.scss
│   ├── _grid.scss
│   ├── _helpers.scss
│   ├── _images.scss
│   ├── _list-group.scss
│   ├── _maps.scss
│   ├── _mixins.scss
│   ├── _modal.scss
│   ├── _nav.scss
│   ├── _navbar.scss
│   ├── _offcanvas.scss
│   ├── _pagination.scss
│   ├── _placeholders.scss
│   ├── _popover.scss
│   ├── _progress.scss
│   ├── _reboot.scss
│   ├── _root.scss
│   ├── _spinners.scss
│   ├── _tables.scss
│   ├── _toasts.scss
│   ├── _tooltip.scss
│   ├── _transitions.scss
│   ├── _type.scss
│   ├── _utilities.scss
│   ├── _variables-dark.scss
│   ├── _variables.scss
│   ├── bootstrap-grid.scss
│   ├── bootstrap-reboot.scss
│   ├── bootstrap-utilities.scss
│   ├── bootstrap.scss
│   ├── forms/
│   │   ├── _floating-labels.scss
│   │   ├── _form-check.scss
│   │   ├── _form-control.scss
│   │   ├── _form-range.scss
│   │   ├── _form-select.scss
│   │   ├── _form-text.scss
│   │   ├── _input-group.scss
│   │   ├── _labels.scss
│   │   └── _validation.scss
│   ├── helpers/
│   │   ├── _clearfix.scss
│   │   ├── _color-bg.scss
│   │   ├── _colored-links.scss
│   │   ├── _focus-ring.scss
│   │   ├── _icon-link.scss
│   │   ├── _position.scss
│   │   ├── _ratio.scss
│   │   ├── _stacks.scss
│   │   ├── _stretched-link.scss
│   │   ├── _text-truncation.scss
│   │   ├── _visually-hidden.scss
│   │   └── _vr.scss
│   ├── mixins/
│   │   ├── _alert.scss
│   │   ├── _backdrop.scss
│   │   ├── _banner.scss
│   │   ├── _border-radius.scss
│   │   ├── _box-shadow.scss
│   │   ├── _breakpoints.scss
│   │   ├── _buttons.scss
│   │   ├── _caret.scss
│   │   ├── _clearfix.scss
│   │   ├── _color-mode.scss
│   │   ├── _color-scheme.scss
│   │   ├── _container.scss
│   │   ├── _deprecate.scss
│   │   ├── _forms.scss
│   │   ├── _gradients.scss
│   │   ├── _grid.scss
│   │   ├── _image.scss
│   │   ├── _list-group.scss
│   │   ├── _lists.scss
│   │   ├── _pagination.scss
│   │   ├── _reset-text.scss
│   │   ├── _resize.scss
│   │   ├── _table-variants.scss
│   │   ├── _text-truncate.scss
│   │   ├── _transition.scss
│   │   ├── _utilities.scss
│   │   └── _visually-hidden.scss
│   ├── tests/
│   │   ├── jasmine.js
│   │   ├── mixins/
│   │   │   ├── _auto-import-of-variables-dark.test.scss
│   │   │   ├── _box-shadow.test.scss
│   │   │   ├── _color-contrast.test.scss
│   │   │   ├── _color-modes.test.scss
│   │   │   ├── _media-query-color-mode-full.test.scss
│   │   │   └── _utilities.test.scss
│   │   ├── sass-true/
│   │   │   ├── register.js
│   │   │   └── runner.js
│   │   └── utilities/
│   │       └── _api.test.scss
│   ├── utilities/
│   │   └── _api.scss
│   └── vendor/
│       └── _rfs.scss
└── site/
    ├── .prettierrc.json
    ├── astro.config.ts
    ├── data/
    │   ├── breakpoints.yml
    │   ├── colors.yml
    │   ├── core-team.yml
    │   ├── docs-versions.yml
    │   ├── examples.yml
    │   ├── grays.yml
    │   ├── icons.yml
    │   ├── plugins.yml
    │   ├── sidebar.yml
    │   ├── theme-colors.yml
    │   └── translations.yml
    ├── postcss.config.cjs
    ├── src/
    │   ├── assets/
    │   │   ├── application.js
    │   │   ├── examples/
    │   │   │   ├── album/
    │   │   │   │   └── index.astro
    │   │   │   ├── album-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── badges/
    │   │   │   │   ├── badges.css
    │   │   │   │   └── index.astro
    │   │   │   ├── blog/
    │   │   │   │   ├── blog.css
    │   │   │   │   ├── blog.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── blog-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── breadcrumbs/
    │   │   │   │   ├── breadcrumbs.css
    │   │   │   │   └── index.astro
    │   │   │   ├── buttons/
    │   │   │   │   └── index.astro
    │   │   │   ├── carousel/
    │   │   │   │   ├── carousel.css
    │   │   │   │   ├── carousel.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── carousel-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── cheatsheet/
    │   │   │   │   ├── cheatsheet.css
    │   │   │   │   ├── cheatsheet.js
    │   │   │   │   ├── cheatsheet.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── cheatsheet-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── checkout/
    │   │   │   │   ├── checkout.css
    │   │   │   │   ├── checkout.js
    │   │   │   │   └── index.astro
    │   │   │   ├── checkout-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── cover/
    │   │   │   │   ├── cover.css
    │   │   │   │   └── index.astro
    │   │   │   ├── dashboard/
    │   │   │   │   ├── dashboard.css
    │   │   │   │   ├── dashboard.js
    │   │   │   │   ├── dashboard.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── dashboard-rtl/
    │   │   │   │   ├── dashboard.js
    │   │   │   │   └── index.astro
    │   │   │   ├── dropdowns/
    │   │   │   │   ├── dropdowns.css
    │   │   │   │   └── index.astro
    │   │   │   ├── features/
    │   │   │   │   ├── features.css
    │   │   │   │   └── index.astro
    │   │   │   ├── footers/
    │   │   │   │   └── index.astro
    │   │   │   ├── grid/
    │   │   │   │   ├── grid.css
    │   │   │   │   └── index.astro
    │   │   │   ├── headers/
    │   │   │   │   ├── headers.css
    │   │   │   │   └── index.astro
    │   │   │   ├── heroes/
    │   │   │   │   ├── heroes.css
    │   │   │   │   └── index.astro
    │   │   │   ├── jumbotron/
    │   │   │   │   └── index.astro
    │   │   │   ├── jumbotrons/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── jumbotrons.css
    │   │   │   ├── list-groups/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── list-groups.css
    │   │   │   ├── masonry/
    │   │   │   │   └── index.astro
    │   │   │   ├── modals/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── modals.css
    │   │   │   ├── navbar-bottom/
    │   │   │   │   └── index.astro
    │   │   │   ├── navbar-fixed/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbar-fixed.css
    │   │   │   ├── navbar-static/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbar-static.css
    │   │   │   ├── navbars/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbars.css
    │   │   │   ├── navbars-offcanvas/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbars-offcanvas.css
    │   │   │   ├── offcanvas-navbar/
    │   │   │   │   ├── index.astro
    │   │   │   │   ├── offcanvas-navbar.css
    │   │   │   │   └── offcanvas-navbar.js
    │   │   │   ├── pricing/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── pricing.css
    │   │   │   ├── product/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── product.css
    │   │   │   ├── sidebars/
    │   │   │   │   ├── index.astro
    │   │   │   │   ├── sidebars.css
    │   │   │   │   └── sidebars.js
    │   │   │   ├── sign-in/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── sign-in.css
    │   │   │   ├── starter-template/
    │   │   │   │   └── index.astro
    │   │   │   ├── sticky-footer/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── sticky-footer.css
    │   │   │   └── sticky-footer-navbar/
    │   │   │       ├── index.astro
    │   │   │       └── sticky-footer-navbar.css
    │   │   ├── partials/
    │   │   │   ├── sidebar.js
    │   │   │   └── snippets.js
    │   │   ├── search.js
    │   │   ├── snippets.js
    │   │   └── stackblitz.js
    │   ├── components/
    │   │   ├── Ads.astro
    │   │   ├── DocsScripts.astro
    │   │   ├── DocsSidebar.astro
    │   │   ├── Scripts.astro
    │   │   ├── TableOfContents.astro
    │   │   ├── footer/
    │   │   │   └── Footer.astro
    │   │   ├── head/
    │   │   │   ├── Analytics.astro
    │   │   │   ├── Favicons.astro
    │   │   │   ├── Head.astro
    │   │   │   ├── Scss.astro
    │   │   │   ├── ScssProd.astro
    │   │   │   ├── Social.astro
    │   │   │   └── Stylesheet.astro
    │   │   ├── header/
    │   │   │   ├── Header.astro
    │   │   │   ├── LinkItem.astro
    │   │   │   ├── Navigation.astro
    │   │   │   ├── Skippy.astro
    │   │   │   └── Versions.astro
    │   │   ├── home/
    │   │   │   ├── CSSVariables.astro
    │   │   │   ├── ComponentUtilities.astro
    │   │   │   ├── Customize.astro
    │   │   │   ├── GetStarted.astro
    │   │   │   ├── Icons.astro
    │   │   │   ├── MastHead.astro
    │   │   │   └── Plugins.astro
    │   │   ├── icons/
    │   │   │   ├── BootstrapWhiteFillIcon.astro
    │   │   │   ├── CircleSquareIcon.astro
    │   │   │   ├── DropletFillIcon.astro
    │   │   │   ├── GitHubIcon.astro
    │   │   │   ├── HamburgerIcon.astro
    │   │   │   ├── OpenCollectiveIcon.astro
    │   │   │   ├── Symbols.astro
    │   │   │   └── XIcon.astro
    │   │   └── shortcodes/
    │   │       ├── AddedIn.astro
    │   │       ├── BsTable.astro
    │   │       ├── Callout.astro
    │   │       ├── CalloutDeprecatedDarkVariants.astro
    │   │       ├── Code.astro
    │   │       ├── DeprecatedIn.astro
    │   │       ├── Example.astro
    │   │       ├── GuideFooter.mdx
    │   │       ├── JsDataAttributes.mdx
    │   │       ├── JsDismiss.astro
    │   │       ├── JsDocs.astro
    │   │       ├── Placeholder.astro
    │   │       ├── ScssDocs.astro
    │   │       ├── Table.astro
    │   │       └── TableContent.md
    │   ├── content/
    │   │   ├── callouts/
    │   │   │   ├── danger-async-methods.md
    │   │   │   ├── info-mediaqueries-breakpoints.md
    │   │   │   ├── info-npm-starter.md
    │   │   │   ├── info-prefersreducedmotion.md
    │   │   │   ├── info-sanitizer.md
    │   │   │   ├── warning-color-assistive-technologies.md
    │   │   │   ├── warning-data-bs-title-vs-title.md
    │   │   │   └── warning-input-support.md
    │   │   ├── config.ts
    │   │   └── docs/
    │   │       ├── about/
    │   │       │   ├── brand.mdx
    │   │       │   ├── license.mdx
    │   │       │   ├── overview.mdx
    │   │       │   ├── team.mdx
    │   │       │   └── translations.mdx
    │   │       ├── components/
    │   │       │   ├── accordion.mdx
    │   │       │   ├── alerts.mdx
    │   │       │   ├── badge.mdx
    │   │       │   ├── breadcrumb.mdx
    │   │       │   ├── button-group.mdx
    │   │       │   ├── buttons.mdx
    │   │       │   ├── card.mdx
    │   │       │   ├── carousel.mdx
    │   │       │   ├── close-button.mdx
    │   │       │   ├── collapse.mdx
    │   │       │   ├── dropdowns.mdx
    │   │       │   ├── list-group.mdx
    │   │       │   ├── modal.mdx
    │   │       │   ├── navbar.mdx
    │   │       │   ├── navs-tabs.mdx
    │   │       │   ├── offcanvas.mdx
    │   │       │   ├── pagination.mdx
    │   │       │   ├── placeholders.mdx
    │   │       │   ├── popovers.mdx
    │   │       │   ├── progress.mdx
    │   │       │   ├── scrollspy.mdx
    │   │       │   ├── spinners.mdx
    │   │       │   ├── toasts.mdx
    │   │       │   └── tooltips.mdx
    │   │       ├── content/
    │   │       │   ├── figures.mdx
    │   │       │   ├── images.mdx
    │   │       │   ├── reboot.mdx
    │   │       │   ├── tables.mdx
    │   │       │   └── typography.mdx
    │   │       ├── customize/
    │   │       │   ├── color-modes.mdx
    │   │       │   ├── color.mdx
    │   │       │   ├── components.mdx
    │   │       │   ├── css-variables.mdx
    │   │       │   ├── optimize.mdx
    │   │       │   ├── options.mdx
    │   │       │   ├── overview.mdx
    │   │       │   └── sass.mdx
    │   │       ├── docsref.mdx
    │   │       ├── extend/
    │   │       │   ├── approach.mdx
    │   │       │   └── icons.mdx
    │   │       ├── forms/
    │   │       │   ├── checks-radios.mdx
    │   │       │   ├── floating-labels.mdx
    │   │       │   ├── form-control.mdx
    │   │       │   ├── input-group.mdx
    │   │       │   ├── layout.mdx
    │   │       │   ├── overview.mdx
    │   │       │   ├── range.mdx
    │   │       │   ├── select.mdx
    │   │       │   └── validation.mdx
    │   │       ├── getting-started/
    │   │       │   ├── accessibility.mdx
    │   │       │   ├── best-practices.mdx
    │   │       │   ├── browsers-devices.mdx
    │   │       │   ├── contents.mdx
    │   │       │   ├── contribute.mdx
    │   │       │   ├── download.mdx
    │   │       │   ├── introduction.mdx
    │   │       │   ├── javascript.mdx
    │   │       │   ├── parcel.mdx
    │   │       │   ├── rfs.mdx
    │   │       │   ├── rtl.mdx
    │   │       │   ├── vite.mdx
    │   │       │   └── webpack.mdx
    │   │       ├── helpers/
    │   │       │   ├── clearfix.mdx
    │   │       │   ├── color-background.mdx
    │   │       │   ├── colored-links.mdx
    │   │       │   ├── focus-ring.mdx
    │   │       │   ├── icon-link.mdx
    │   │       │   ├── position.mdx
    │   │       │   ├── ratio.mdx
    │   │       │   ├── stacks.mdx
    │   │       │   ├── stretched-link.mdx
    │   │       │   ├── text-truncation.mdx
    │   │       │   ├── vertical-rule.mdx
    │   │       │   └── visually-hidden.mdx
    │   │       ├── layout/
    │   │       │   ├── breakpoints.mdx
    │   │       │   ├── columns.mdx
    │   │       │   ├── containers.mdx
    │   │       │   ├── css-grid.mdx
    │   │       │   ├── grid.mdx
    │   │       │   ├── gutters.mdx
    │   │       │   ├── utilities.mdx
    │   │       │   └── z-index.mdx
    │   │       ├── migration.mdx
    │   │       └── utilities/
    │   │           ├── api.mdx
    │   │           ├── background.mdx
    │   │           ├── borders.mdx
    │   │           ├── colors.mdx
    │   │           ├── display.mdx
    │   │           ├── flex.mdx
    │   │           ├── float.mdx
    │   │           ├── interactions.mdx
    │   │           ├── link.mdx
    │   │           ├── object-fit.mdx
    │   │           ├── opacity.mdx
    │   │           ├── overflow.mdx
    │   │           ├── position.mdx
    │   │           ├── shadows.mdx
    │   │           ├── sizing.mdx
    │   │           ├── spacing.mdx
    │   │           ├── text.mdx
    │   │           ├── vertical-align.mdx
    │   │           ├── visibility.mdx
    │   │           └── z-index.mdx
    │   ├── env.d.ts
    │   ├── layouts/
    │   │   ├── BaseLayout.astro
    │   │   ├── DocsLayout.astro
    │   │   ├── ExamplesLayout.astro
    │   │   ├── RedirectLayout.astro
    │   │   ├── SingleLayout.astro
    │   │   └── partials/
    │   │       ├── ExamplesMain.astro
    │   │       ├── Icons.astro
    │   │       ├── ResponsiveImage.astro
    │   │       └── ThemeToggler.astro
    │   ├── libs/
    │   │   ├── astro.ts
    │   │   ├── bootstrap.ts
    │   │   ├── config.ts
    │   │   ├── content.ts
    │   │   ├── data.ts
    │   │   ├── examples.ts
    │   │   ├── icon.ts
    │   │   ├── image.ts
    │   │   ├── layout.ts
    │   │   ├── path.ts
    │   │   ├── placeholder.ts
    │   │   ├── prism.ts
    │   │   ├── rehype.ts
    │   │   ├── remark.ts
    │   │   ├── toc.ts
    │   │   ├── utils.ts
    │   │   └── validation.ts
    │   ├── pages/
    │   │   ├── 404.astro
    │   │   ├── [...alias].astro
    │   │   ├── docs/
    │   │   │   ├── [version]/
    │   │   │   │   ├── [...slug].astro
    │   │   │   │   ├── examples/
    │   │   │   │   │   ├── [...asset].ts
    │   │   │   │   │   ├── [...example].astro
    │   │   │   │   │   └── index.astro
    │   │   │   │   └── index.astro
    │   │   │   ├── index.astro
    │   │   │   └── versions.astro
    │   │   ├── examples.astro
    │   │   ├── index.astro
    │   │   └── robots.txt.ts
    │   ├── plugins/
    │   │   ├── algolia-plugin.js
    │   │   └── stackblitz-plugin.js
    │   ├── scss/
    │   │   ├── _ads.scss
    │   │   ├── _anchor.scss
    │   │   ├── _brand.scss
    │   │   ├── _buttons.scss
    │   │   ├── _callouts.scss
    │   │   ├── _clipboard-js.scss
    │   │   ├── _colors.scss
    │   │   ├── _component-examples.scss
    │   │   ├── _content.scss
    │   │   ├── _footer.scss
    │   │   ├── _layout.scss
    │   │   ├── _masthead.scss
    │   │   ├── _navbar.scss
    │   │   ├── _placeholder-img.scss
    │   │   ├── _scrolling.scss
    │   │   ├── _search.scss
    │   │   ├── _sidebar.scss
    │   │   ├── _skippy.scss
    │   │   ├── _syntax.scss
    │   │   ├── _toc.scss
    │   │   ├── _variables.scss
    │   │   ├── docs.scss
    │   │   └── docs_search.scss
    │   └── types/
    │       ├── auto-import.d.ts
    │       └── window.d.ts
    ├── static/
    │   ├── CNAME
    │   ├── docs/
    │   │   └── [version]/
    │   │       └── assets/
    │   │           ├── img/
    │   │           │   └── favicons/
    │   │           │       └── manifest.json
    │   │           └── js/
    │   │               ├── color-modes.js
    │   │               └── validate-forms.js
    │   └── sw.js
    └── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .babelrc.js
================================================
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        loose: true,
        bugfixes: true,
        modules: false
      }
    ]
  ]
};


================================================
FILE: .browserslistrc
================================================
# https://github.com/browserslist/browserslist#readme

>= 0.5%
last 2 major versions
not dead
Chrome >= 60
Firefox >= 60
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)


================================================
FILE: .bundlewatch.config.json
================================================
{
  "files": [
    {
      "path": "./dist/css/bootstrap-grid.css",
      "maxSize": "6.5 kB"
    },
    {
      "path": "./dist/css/bootstrap-grid.min.css",
      "maxSize": "6.0 kB"
    },
    {
      "path": "./dist/css/bootstrap-reboot.css",
      "maxSize": "3.5 kB"
    },
    {
      "path": "./dist/css/bootstrap-reboot.min.css",
      "maxSize": "3.25 kB"
    },
    {
      "path": "./dist/css/bootstrap-utilities.css",
      "maxSize": "11.75 kB"
    },
    {
      "path": "./dist/css/bootstrap-utilities.min.css",
      "maxSize": "10.75 kB"
    },
    {
      "path": "./dist/css/bootstrap.css",
      "maxSize": "32.5 kB"
    },
    {
      "path": "./dist/css/bootstrap.min.css",
      "maxSize": "30.25 kB"
    },
    {
      "path": "./dist/js/bootstrap.bundle.js",
      "maxSize": "43.0 kB"
    },
    {
      "path": "./dist/js/bootstrap.bundle.min.js",
      "maxSize": "23.5 kB"
    },
    {
      "path": "./dist/js/bootstrap.esm.js",
      "maxSize": "28.0 kB"
    },
    {
      "path": "./dist/js/bootstrap.esm.min.js",
      "maxSize": "18.25 kB"
    },
    {
      "path": "./dist/js/bootstrap.js",
      "maxSize": "28.75 kB"
    },
    {
      "path": "./dist/js/bootstrap.min.js",
      "maxSize": "16.25 kB"
    }
  ],
  "ci": {
    "trackBranches": [
      "main",
      "v4-dev"
    ]
  }
}


================================================
FILE: .cspell.json
================================================
{
  "version": "0.2",
  "words": [
    "affordance",
    "allowfullscreen",
    "Analyser",
    "autohide",
    "autohiding",
    "autoplay",
    "autoplays",
    "autoplaying",
    "blazingly",
    "Blockquotes",
    "Bootstrappers",
    "borderless",
    "Brotli",
    "browserslist",
    "browserslistrc",
    "btncheck",
    "btnradio",
    "callout",
    "callouts",
    "camelCase",
    "clearfix",
    "Codesniffer",
    "combinator",
    "Contentful",
    "Cpath",
    "Crossfade",
    "crossfading",
    "cssgrid",
    "Csvg",
    "Datalists",
    "Deque",
    "discoverability",
    "docsearch",
    "docsref",
    "dropend",
    "dropleft",
    "dropright",
    "dropstart",
    "dropup",
    "dgst",
    "errorf",
    "favicon",
    "favicons",
    "fieldsets",
    "flexbox",
    "fullscreen",
    "getbootstrap",
    "Grayscale",
    "Hoverable",
    "hreflang",
    "hstack",
    "importmap",
    "jsdelivr",
    "Jumpstart",
    "keyframes",
    "libera",
    "libman",
    "Libsass",
    "lightboxes",
    "Lowercased",
    "markdownify",
    "mediaqueries",
    "minifiers",
    "misfunction",
    "mkdir",
    "monospace",
    "mouseleave",
    "navbars",
    "navs",
    "Neue",
    "noindex",
    "Noto",
    "offcanvas",
    "offcanvases",
    "Packagist",
    "popperjs",
    "prebuild",
    "prefersreducedmotion",
    "prepended",
    "printf",
    "rects",
    "relref",
    "rgba",
    "roboto",
    "RTLCSS",
    "ruleset",
    "sassrc",
    "screenreaders",
    "scrollbars",
    "scrollspy",
    "Segoe",
    "semibold",
    "socio",
    "srcset",
    "stackblitz",
    "stickied",
    "Stylelint",
    "subnav",
    "tabbable",
    "textareas",
    "toggleable",
    "topbar",
    "touchend",
    "twbs",
    "unitless",
    "unstylable",
    "unstyled",
    "Uppercased",
    "urlize",
    "urlquery",
    "vbtn",
    "viewports",
    "Vite",
    "vstack",
    "walkthroughs",
    "WCAG",
    "zindex"
  ],
  "language": "en-US",
  "ignorePaths": [
    ".cspell.json",
    "dist/",
    "*.min.*",
    "**/*rtl*",
    "**/tests/**"
  ],
  "useGitignore": true
}


================================================
FILE: .editorconfig
================================================
# editorconfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true


================================================
FILE: .eslintignore
================================================
**/*.min.js
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/
/site/static/sw.js
/site/static/docs/**/assets/sw.js
/site/layouts/partials/


================================================
FILE: .eslintrc.json
================================================
{
  "root": true,
  "extends": [
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:unicorn/recommended",
    "xo",
    "xo/browser"
  ],
  "rules": {
    "arrow-body-style": "off",
    "capitalized-comments": "off",
    "comma-dangle": [
      "error",
      "never"
    ],
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "always"
      }
    ],
    "import/first": "error",
    "import/newline-after-import": "error",
    "import/no-absolute-path": "error",
    "import/no-amd": "error",
    "import/no-cycle": [
      "error",
      {
        "ignoreExternal": true
      }
    ],
    "import/no-duplicates": "error",
    "import/no-extraneous-dependencies": "error",
    "import/no-mutable-exports": "error",
    "import/no-named-as-default": "error",
    "import/no-named-as-default-member": "error",
    "import/no-named-default": "error",
    "import/no-self-import": "error",
    "import/no-unassigned-import": [
      "error"
    ],
    "import/no-useless-path-segments": "error",
    "import/order": "error",
    "indent": [
      "error",
      2,
      {
        "MemberExpression": "off",
        "SwitchCase": 1
      }
    ],
    "logical-assignment-operators": "off",
    "max-params": [
      "warn",
      5
    ],
    "multiline-ternary": [
      "error",
      "always-multiline"
    ],
    "new-cap": [
      "error",
      {
        "properties": false
      }
    ],
    "no-console": "error",
    "no-negated-condition": "off",
    "object-curly-spacing": [
      "error",
      "always"
    ],
    "operator-linebreak": [
      "error",
      "after"
    ],
    "prefer-object-has-own": "off",
    "prefer-template": "error",
    "semi": [
      "error",
      "never"
    ],
    "strict": "error",
    "unicorn/explicit-length-check": "off",
    "unicorn/filename-case": "off",
    "unicorn/no-anonymous-default-export": "off",
    "unicorn/no-array-callback-reference": "off",
    "unicorn/no-array-method-this-argument": "off",
    "unicorn/no-null": "off",
    "unicorn/no-typeof-undefined": "off",
    "unicorn/no-unused-properties": "error",
    "unicorn/numeric-separators-style": "off",
    "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",
    "unicorn/prefer-string-raw": "off",
    "unicorn/prefer-string-replace-all": "off",
    "unicorn/prefer-structured-clone": "off",
    "unicorn/prevent-abbreviations": "off"
  },
  "overrides": [
    {
      "files": [
        "build/**"
      ],
      "env": {
        "browser": false,
        "node": true
      },
      "parserOptions": {
        "sourceType": "module"
      },
      "rules": {
        "no-console": "off",
        "unicorn/prefer-top-level-await": "off"
      }
    },
    {
      "files": [
        "js/**"
      ],
      "parserOptions": {
        "sourceType": "module"
      }
    },
    {
      "files": [
        "js/tests/*.js",
        "js/tests/integration/rollup*.js"
      ],
      "env": {
        "node": true
      },
      "parserOptions": {
        "sourceType": "script"
      }
    },
    {
      "files": [
        "js/tests/unit/**"
      ],
      "env": {
        "jasmine": true
      },
      "rules": {
        "no-console": "off",
        "unicorn/consistent-function-scoping": "off",
        "unicorn/no-useless-undefined": "off",
        "unicorn/prefer-add-event-listener": "off"
      }
    },
    {
      "files": [
        "js/tests/visual/**"
      ],
      "plugins": [
        "html"
      ],
      "settings": {
        "html/html-extensions": [
          ".html"
        ]
      },
      "rules": {
        "no-console": "off",
        "no-new": "off",
        "unicorn/no-array-for-each": "off"
      }
    },
    {
      "files": [
        "scss/tests/**"
      ],
      "env": {
        "node": true
      },
      "parserOptions": {
        "sourceType": "script"
      }
    },
    {
      "files": [
        "site/**"
      ],
      "env": {
        "browser": true,
        "node": false
      },
      "parserOptions": {
        "sourceType": "script",
        "ecmaVersion": 2019
      },
      "rules": {
        "no-new": "off",
        "unicorn/no-array-for-each": "off"
      }
    },
    {
      "files": [
        "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",
        "ecmaVersion": 2020
      }
    },
    {
      "files": [
        "**/*.md"
      ],
      "plugins": [
        "markdown"
      ],
      "processor": "markdown/markdown"
    },
    {
      "files": [
        "**/*.md/*.js",
        "**/*.md/*.mjs"
      ],
      "extends": "plugin:markdown/recommended-legacy",
      "parserOptions": {
        "sourceType": "module"
      },
      "rules": {
        "unicorn/prefer-node-protocol": "off"
      }
    }
  ]
}


================================================
FILE: .gitattributes
================================================
# Enforce Unix newlines
* text=auto eol=lf

# Don't diff or textually merge source maps
*.map binary

bootstrap.css linguist-vendored=false
bootstrap.js linguist-vendored=false


================================================
FILE: .github/CODEOWNERS
================================================
*.js    @twbs/js-review
*.css   @twbs/css-review
*.scss  @twbs/css-review


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to Bootstrap

Looking to contribute something to Bootstrap? **Here’s 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.

Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.


## Using the issue tracker

The [issue tracker](https://github.com/twbs/bootstrap/issues) is
the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:

- Please **do not** use the issue tracker for personal support requests. Stack Overflow ([`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag), [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions) or [IRC](/README.md#community) are better places to get help.

- Please **do not** derail or troll issues. Keep the discussion on topic and
  respect the opinions of others.

- Please **do not** post comments consisting solely of "+1" or ":thumbsup:".
  Use [GitHub's "reactions" feature](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/)
  instead. We reserve the right to delete comments which violate this rule.


## 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.

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.


## 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:

- `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.
- `css` - Issues stemming from our compiled CSS or source Sass files.
- `docs` - Issues for improving or updating our documentation.
- `examples` - Issues involving the example templates included in our docs.
- `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`).
- `build` - Issues with our build system, which is used to run all our tests, concatenate and compile source files, and more.
- `help wanted` - Issues we need or would love help from the community to resolve.
- `js` - Issues stemming from our compiled or source JavaScript files.
- `meta` - Issues with the project itself or our GitHub repository.

For a complete look at our labels, see the [project labels page](https://github.com/twbs/bootstrap/labels).


## Bug reports

A bug is a _demonstrable problem_ that is caused by the code in the repository.
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.

1. **Use the GitHub issue search** &mdash; check if the issue has already been
   reported.

2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
   latest `main` (or `v4-dev` branch if the issue is about v4) in the repository.

3. **Isolate the problem** &mdash; ideally create a [reduced test
   case](https://css-tricks.com/reduced-test-cases/) and a live example.
   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
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
would you expect to be the outcome? All these details will help people to fix
any potential bugs.

Example:

> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).

### Reporting upstream browser bugs

Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se.

| 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. |
| 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            |


## 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
provide as much detail and context as possible.


## Pull requests

Good pull requests—patches, improvements, new features—are a fantastic
help. They should remain focused in scope and avoid containing unrelated
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
make a PR.

Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).

**Do not edit `bootstrap.css` or `bootstrap.js`, and do not commit
any dist files (`dist/` or `js/dist`).** Those files are automatically generated by our build tools. You should
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
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
documentation source files and is managed separately by the Bootstrap Core Team.

Adhering to the following process is the best way to get your work
included in the project:

1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your fork,
   and configure the remotes:

   ```bash
   # Clone your fork of the repo into the current directory
   git clone https://github.com/<your-username>/bootstrap.git
   # Navigate to the newly cloned directory
   cd bootstrap
   # Assign the original repo to a remote called "upstream"
   git remote add upstream https://github.com/twbs/bootstrap.git
   ```

2. If you cloned a while ago, get the latest changes from upstream:

   ```bash
   git checkout main
   git pull upstream main
   ```

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>
   ```

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
   [interactive rebase](https://help.github.com/articles/about-git-rebase/)
   feature to tidy up your commits before making them public.

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
   ```

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>
   ```

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
includes code changes) and under the terms of the
[Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/)
(if it includes documentation changes).


## Code guidelines

### HTML

[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 [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility.

### CSS

[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.

### JS

- No semicolons (in client-side JS)
- 2 spaces (no tabs)
- strict mode
- "Attractive"

### Checking coding style

Run `npm run test` before committing to ensure your changes follow our coding standards.


## License

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.


================================================
FILE: .github/INCIDENT_RESPONSE.md
================================================
# Incident response plan

This document describes how the Bootstrap maintainers respond to and manage security or operational incidents affecting the project, its website, or its distributed releases. This plan is public to promote transparency and community trust. Operational details (e.g., private contacts, credentials, or internal coordination tools) are maintained separately in the maintainers’ private documentation.

---

## 1. Purpose & Scope

This plan defines how Bootstrap maintainers will:

- Identify, triage, and manage security or integrity incidents affecting project code, releases, or infrastructure.
- Communicate with the community and downstream consumers during and after an incident.
- Record lessons learned and update processes to reduce future risk.

It applies to:

- The Bootstrap source code, documentation, and build pipelines.
- Release artifacts (npm, CDN, GitHub releases).
- The main website ([https://getbootstrap.com](https://getbootstrap.com)).
- Any official Bootstrap GitHub organization infrastructure.

It does **not** cover unrelated third-party forks or integrations.

---

## 2. Definitions

- **Incident**: Any event that could compromise the confidentiality, integrity, or availability of Bootstrap code, releases, or users. Examples include:
  - A discovered security vulnerability.
  - A compromised GitHub account or CI/CD token.
  - A malicious dependency or injected code in a release.
  - Website defacement or unauthorized modification of documentation.
  - Leaked secrets related to the project infrastructure.

- **Incident Commander (IC)**: The maintainer responsible for coordinating the overall response.

---

## 3. Roles & Responsibilities

| Role | Responsibilities |
|------|-------------------|
| **Incident Commander (IC)** | Coordinate the response, assign tasks, ensure timely communication. |
| **Security Maintainers** | Triage reported vulnerabilities, assess impact, create fixes, handle embargoes. |
| **Infrastructure Lead** | Manage CI/CD, website, and release infrastructure. |
| **Communications Lead** | Manage public announcements, blog posts, and social updates. |
| **Contributors & Community** | Promptly report suspected security issues and follow responsible disclosure guidelines. |

In practice, Bootstrap’s core team fulfills these roles collectively, assigning an IC on a per-incident basis.

---

## 4. Incident workflow

### 4.1 Detection & Reporting

- All security issues should be **privately reported** via the contact method in [`SECURITY.md`](../SECURITY.md) or through GitHub’s Security Advisory mechanism.
- Maintainers also monitor:
  - Automated dependency scanners (e.g., Dependabot, npm audit).
  - GitHub notifications and vulnerability alerts.
  - Community channels for suspicious activity.

### 4.2 Initial triage

Upon receiving a report:

1. A maintainer acknowledges receipt within 3 business days (or sooner, when possible).  
   Bootstrap is maintained by a small volunteer team; response times may vary slightly outside normal working hours.
2. The IC assesses severity and impact:
   - **Critical:** immediate compromise of release infrastructure or code integrity.
   - **High:** exploitable vulnerability in distributed assets.
   - **Medium:** minor vulnerability or low-likelihood attack vector.
   - **Low:** informational, no direct risk.
3. If confirmed as an incident, the IC opens a private coordination channel for maintainers and begins containment.

### 4.3 Containment & Eradication

- Revoke or rotate any affected credentials.
- Disable compromised infrastructure or build pipelines if necessary.
- Patch affected branches or dependencies.
- Verify integrity of artifacts and releases.

### 4.4 Communication

- Keep the reporting party informed (when applicable).
- For major incidents, the Communications Lead drafts a public advisory describing:
  - What happened
  - What was impacted
  - How users can verify or mitigate
  - What actions were taken
- Communications occur after containment to avoid amplifying risk.

Public disclosures are posted via:

- GitHub Security Advisory if appropriate
- [blog.getbootstrap.com/](https://blog.getbootstrap.com/)
- [Bootstrap GitHub discussions](https://github.com/orgs/twbs/discussions)
- [@getbootstrap](https://x.com/getbootstrap) on X (formerly Twitter) for critical security notices.

### 4.5 Recovery

- Validate all systems and releases are secure.
- Resume normal operations.
- Tag patched releases and notify affected users.

### 4.6 Post-incident review

Within two weeks after resolution:

- Conduct an internal debrief.
- Record:
  - Root cause
  - What worked / what didn’t
  - Remediation steps
  - Documentation or automation updates needed
- Summarize lessons learned in the private maintainers’ wiki (with optional public summary if appropriate).

---

## 5. Severity levels & Response targets

| Severity | Example | Target response (volunteer team) |
|-----------|----------|----------------------------------|
| **Critical** | Compromised release, stolen signing keys | Acknowledge ≤ 24h (best effort), containment ≤ 48h, fix ideally ≤ 14d |
| **High** | Vulnerability enabling arbitrary code execution | Acknowledge ≤ 3 business days, fix ideally ≤ 14–21d |
| **Medium** | XSS or content injection on docs site | Acknowledge ≤ 5 business days, fix in next release cycle |
| **Low** | Minor issue with limited risk | Acknowledge ≤ 7 business days, fix as scheduled |

**Note:** Timelines represent good-faith targets for a small volunteer core team, not hard SLAs. The maintainers will always prioritize public safety and transparency, even if timing varies.

---

## 6. Public disclosure principles

Bootstrap follows a responsible disclosure approach:

- Work privately with reporters and affected parties before publishing details.
- Never name reporters without consent.
- Coordinate embargo periods with downstream consumers when needed.
- Publish advisories only after patches or mitigations are available.

---

## 7. Communication Channels

| Purpose | Channel |
|----------|----------|
| Private reporting | Email address in [`SECURITY.md`](./SECURITY.md) or GitHub advisory form |
| General updates | [blog.getbootstrap.com/](https://blog.getbootstrap.com/) blog |
| Security advisories | GitHub Security Advisory dashboard |
| Social alerts | [@getbootstrap](https://x.com/getbootstrap) |
| GitHub discussion alerts | [github.com/orgs/twbs/discussions](https://github.com/orgs/twbs/discussions) |

---

## 8. Plan Maintenance

This plan is reviewed at least annually or after any major incident. Changes are approved by the Core Team and recorded in Git history.

---

_The Bootstrap maintainers are committed to transparency, user trust, and continuous improvement in our security and response practices._


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Report a bug
description: Tell us about a bug or issue you may have identified in Bootstrap.
title: "Provide a general summary of the issue"
labels: [bug]
assignees: "-"
body:
  - type: checkboxes
    attributes:
      label: Prerequisites
      description: Take a couple minutes to help our maintainers work faster.
      options:
        - label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed issues
          required: true
        - label: I have [validated](https://html5.validator.nu/) any HTML to avoid common problems
          required: true
        - label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
          required: true
  - type: textarea
    id: what-happened
    attributes:
      label: Describe the issue
      description: Provide a summary of the issue and what you expected to happen, including specific steps to reproduce.
    validations:
      required: true
  - type: textarea
    id: reduced-test-case
    attributes:
      label: Reduced test cases
      description: Include links [reduced test case](https://css-tricks.com/reduced-test-cases/) links or suggested fixes using CodePen ([v4 template](https://codepen.io/team/bootstrap/pen/yLabNQL) or [v5 template](https://codepen.io/team/bootstrap/pen/qBamdLj)).
    validations:
      required: true
  - type: dropdown
    id: os
    attributes:
      label: What operating system(s) are you seeing the problem on?
      multiple: true
      options:
        - Windows
        - macOS
        - Android
        - iOS
        - Linux
    validations:
      required: true
  - type: dropdown
    id: browser
    attributes:
      label: What browser(s) are you seeing the problem on?
      multiple: true
      options:
        - Chrome
        - Safari
        - Firefox
        - Microsoft Edge
        - Opera
  - type: input
    id: version
    attributes:
      label: What version of Bootstrap are you using?
      placeholder: "e.g., v5.1.0 or v4.5.2"
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
  - name: Ask the community
    url: https://github.com/twbs/bootstrap/discussions/new
    about: Ask and discuss questions with other Bootstrap community members.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: Feature request
description: Suggest new or updated features to include in Bootstrap.
title: "Suggest a new feature"
labels: [feature]
assignees: []
body:
  - type: checkboxes
    attributes:
      label: Prerequisites
      description: Take a couple minutes to help our maintainers work faster.
      options:
        - label: I have [searched](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue) for duplicate or closed feature requests
          required: true
        - label: I have read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md)
          required: true
  - type: textarea
    id: proposal
    attributes:
      label: Proposal
      description: Provide detailed information for what we should add, including relevant links to prior art, screenshots, or live demos whenever possible.
    validations:
      required: true
  - type: textarea
    id: motivation
    attributes:
      label: Motivation and context
      description: Tell us why this change is needed or helpful, and what problems it may help solve.
    validations:
      required: true


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
### Description

<!-- Describe your changes in detail -->

### Motivation & Context

<!-- Why is this change required? What problem does it solve? -->

### Type of changes

<!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Refactoring (non-breaking change)
- [ ] Breaking change (fix or feature that would change existing functionality)

### 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! -->

- [ ] 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`)_
- [ ] My change introduces changes to the documentation
- [ ] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] All new and existing tests passed

#### Live previews

<!-- Please add direct links where your modifications can be seen in the documentation -->

- <https://deploy-preview-{your_pr_number}--twbs-bootstrap.netlify.app/>

### Related issues

<!-- Please link any related issues here. -->


================================================
FILE: .github/SUPPORT.md
================================================
### Bug reports

See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports.

### How-to

For general troubleshooting or help getting started:

- Ask and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
- Ask and explore Stack Overflow with the [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5) tag.


================================================
FILE: .github/codeql/codeql-config.yml
================================================
name: "CodeQL config"
paths-ignore:
  - dist


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: weekly
      day: tuesday
      time: "12:00"
      timezone: Europe/Athens
    groups:
      github-actions:
        patterns:
          - "*"
  - package-ecosystem: npm
    directory: "/"
    labels:
      - dependencies
      - v5
    schedule:
      interval: weekly
      day: tuesday
      time: "12:00"
      timezone: Europe/Athens
    versioning-strategy: increase
    rebase-strategy: disabled
    groups:
      production-dependencies:
        dependency-type: "production"
      development-dependencies:
        dependency-type: "development"


================================================
FILE: .github/release-drafter.yml
================================================
name-template: 'v$NEXT_MAJOR_VERSION'
tag-template: 'v$NEXT_MAJOR_VERSION'
prerelease: true
exclude-labels:
  - 'skip-changelog'
categories:
  - title: '❗ Breaking Changes'
    labels:
      - 'breaking-change'
  - title: '🚀 Highlights'
    labels:
      - 'release-highlight'
  - title: '🚀 Features'
    labels:
      - 'new-feature'
      - 'feature'
      - 'enhancement'
  - title: '🐛 Bug fixes'
    labels:
      - 'fix'
      - 'bugfix'
      - 'bug'
  - title: '⚡ Performance improvements'
    labels:
      - 'performance'
  - title: '🎨 CSS'
    labels:
      - 'css'
  - title: '☕️ JavaScript'
    labels:
      - 'js'
  - title: '📖 Docs'
    labels:
      - 'docs'
  - title: '🛠 Examples'
    labels:
      - 'examples'
  - title: '🌎 Accessibility'
    labels:
      - 'accessibility'
  - title: '🔧 Utility API'
    labels:
      - 'utility API'
      - 'utilities'
  - title: '🏭 Tests'
    labels:
      - 'tests'
  - title: '🧰 Misc'
    labels:
      - 'build'
      - 'meta'
      - 'chore'
      - 'CI'
  - title: '📦 Dependencies'
    labels:
      - 'dependencies'
change-template: '- #$NUMBER: $TITLE'
template: |
  ## Changes
  $CHANGES


================================================
FILE: .github/workflows/browserstack.yml
================================================
name: BrowserStack

on:
  push:
    branches:
      - "**"
      - "!dependabot/**"
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  browserstack:
    runs-on: ubuntu-latest
    if: github.repository == 'twbs/bootstrap'
    timeout-minutes: 30

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Run dist
        run: npm run dist

      - name: Run BrowserStack tests
        run: npm run js-test-cloud
        env:
          BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}"
          BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}"
          GITHUB_SHA: "${{ github.sha }}"


================================================
FILE: .github/workflows/bundlewatch.yml
================================================
name: Bundlewatch

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  bundlewatch:
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Run dist
        run: npm run dist

      - name: Run bundlewatch
        run: npm run bundlewatch
        env:
          BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}"
          CI_BRANCH_BASE: main


================================================
FILE: .github/workflows/calibreapp-image-actions.yml
================================================
name: Compress Images

on:
  pull_request:
    paths:
      - '**.jpg'
      - '**.jpeg'
      - '**.png'
      - '**.webp'

permissions:
  contents: read

jobs:
  build:
    # Only run on Pull Requests within the same repository, and not from forks.
    if: github.event.pull_request.head.repo.full_name == github.repository
    name: calibreapp/image-actions
    runs-on: ubuntu-latest
    permissions:
      # allow calibreapp/image-actions to update PRs
      pull-requests: write
    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Compress Images
        uses: calibreapp/image-actions@f32575787d333b0579f0b7d506ff03be63a669d1 # v1.4.1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"

on:
  push:
    branches:
      - main
      - v4-dev
      - "!dependabot/**"
  pull_request:
    branches:
      - main
      - v4-dev
      - "!dependabot/**"
  schedule:
    - cron: "0 2 * * 4"
  workflow_dispatch:

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      security-events: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Initialize CodeQL
        uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
        with:
          config-file: ./.github/codeql/codeql-config.yml
          languages: "javascript"
          queries: +security-and-quality

      - name: Autobuild
        uses: github/codeql-action/autobuild@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
        with:
          category: "/language:javascript"


================================================
FILE: .github/workflows/cspell.yml
================================================
name: cspell

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2

permissions:
  contents: read

jobs:
  cspell:
    permissions:
      # allow streetsidesoftware/cspell-action to fetch files for commits and PRs
      contents: read
      pull-requests: read
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Run cspell
        uses: streetsidesoftware/cspell-action@9cd41bb518a24fefdafd9880cbab8f0ceba04d28 # v8.3.0
        with:
          config: ".cspell.json"
          files: "**/*.{md,mdx}"
          inline: error
          incremental_files_only: false


================================================
FILE: .github/workflows/css.yml
================================================
name: CSS

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  css:
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Build CSS
        run: npm run css

      - name: Run CSS tests
        run: npm run css-test


================================================
FILE: .github/workflows/docs.yml
================================================
name: Docs

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  docs:
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"
          cache: npm

      - run: java -version

      - name: Install npm dependencies
        run: npm ci

      - name: Build docs
        run: npm run docs-build

      - name: Validate HTML
        run: npm run docs-vnu

      - name: Run linkinator
        uses: JustinBeckwith/linkinator-action@f62ba0c110a76effb2ee6022cc6ce4ab161085e3 # v2.4
        with:
          paths: _site
          recurse: true
          verbosity: error
          skip: "^http://localhost"


================================================
FILE: .github/workflows/issue-close-require.yml
================================================
name: Close Issue Awaiting Reply

on:
  schedule:
    - cron: "0 0 * * *"

permissions:
  contents: read

jobs:
  issue-close-require:
    permissions:
      # allow actions-cool/issues-helper to update issues and PRs
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: github.repository == 'twbs/bootstrap'
    steps:
      - name: awaiting reply
        uses: actions-cool/issues-helper@200c78641dbf33838311e5a1e0c31bbdb92d7cf0 # v3.8.0
        with:
          actions: "close-issues"
          labels: "awaiting-reply"
          inactive-day: 14
          body: |
            As the issue was labeled with `awaiting-reply`, but there has been no response in 14 days, this issue will be closed. If you have any questions, you can comment/reply.


================================================
FILE: .github/workflows/issue-labeled.yml
================================================
name: Issue Labeled

on:
  issues:
    types: [labeled]

permissions:
  contents: read

jobs:
  issue-labeled:
    permissions:
      # allow actions-cool/issues-helper to update issues and PRs
      issues: write
      pull-requests: write
    if: github.repository == 'twbs/bootstrap'
    runs-on: ubuntu-latest
    steps:
      - name: awaiting reply
        if: github.event.label.name == 'needs-example'
        uses: actions-cool/issues-helper@200c78641dbf33838311e5a1e0c31bbdb92d7cf0 # v3.8.0
        with:
          actions: "create-comment"
          token: ${{ secrets.GITHUB_TOKEN }}
          body: |
            Hello @${{ github.event.issue.user.login }}. Bug reports must include a **live demo** of the issue. Per our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md), please create a reduced test case on [CodePen](https://codepen.io/) or [StackBlitz](https://stackblitz.com/) and report back with your link, Bootstrap version, and specific browser and Operating System details.


================================================
FILE: .github/workflows/js.yml
================================================
name: JS Tests

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  run:
    permissions:
      # allow coverallsapp/github-action to create new checks issues and fetch code
      checks: write
      contents: read
    name: JS Tests
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: ${{ env.NODE }}
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Run dist
        run: npm run js

      - name: Run JS tests
        run: npm run js-test

      - name: Run Coveralls
        uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e # v2.3.7
        if: ${{ !github.event.repository.fork }}
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
          path-to-lcov: "./js/coverage/lcov.info"


================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"
          cache: npm

      - name: Install npm dependencies
        run: npm ci

      - name: Lint
        run: npm run lint


================================================
FILE: .github/workflows/node-sass.yml
================================================
name: CSS (node-sass)

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

env:
  FORCE_COLOR: 2
  NODE: 22

permissions:
  contents: read

jobs:
  css:
    runs-on: ubuntu-latest

    steps:
      - name: Clone repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
        with:
          node-version: "${{ env.NODE }}"

      - name: Build CSS with node-sass
        run: |
          npx --package node-sass@latest node-sass --version
          npx --package node-sass@latest node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist-sass/css/
          ls -Al dist-sass/css

      - name: Check built CSS files for Sass variables
        shell: bash
        run: |
          SASS_VARS_FOUND=$(find "dist-sass/css/" -type f -name "*.css" -print0 | xargs -0 --no-run-if-empty grep -F "\$" || true)
          if [[ -z "$SASS_VARS_FOUND" ]]; then
            echo "All good, no Sass variables found!"
            exit 0
          else
            echo "Found $(echo "$SASS_VARS_FOUND" | wc -l | bc) Sass variables:"
            echo "$SASS_VARS_FOUND"
            exit 1
          fi


================================================
FILE: .github/workflows/publish-nuget.yml
================================================
name: Publish NuGet Packages

on:
  release:
    types: [published]

permissions:
  contents: read

jobs:
  package-nuget:
    runs-on: windows-latest
    if: ${{ github.repository == 'twbs/bootstrap' && startsWith(github.event.release.tag_name, 'v') }}
    env:
      GITHUB_REF_NAME: ${{ github.ref_name }}
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Set up NuGet
        uses: nuget/setup-nuget@12c57947e9458a5b976961b08ea0706a17dd71ae # v3.0.0
        with:
          nuget-api-key: ${{ secrets.NuGetAPIKey }}
          nuget-version: '5.x'

      - name: Pack NuGet packages
        shell: pwsh
        run: |
          $bsversion = $env:GITHUB_REF_NAME.Substring(1)
          nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -BasePath . -Version $bsversion
          nuget pack "nuget\bootstrap.sass.nuspec" -Verbosity detailed -NonInteractive -BasePath . -Version $bsversion
          nuget push "bootstrap.$bsversion.nupkg" -Verbosity detailed -NonInteractive -Source "https://api.nuget.org/v3/index.json"
          nuget push "bootstrap.sass.$bsversion.nupkg" -Verbosity detailed -NonInteractive -Source "https://api.nuget.org/v3/index.json"


================================================
FILE: .github/workflows/release-notes.yml
================================================
name: Release notes

on:
  push:
    branches:
      - main
  workflow_dispatch:

permissions:
  contents: read

jobs:
  update_release_draft:
    permissions:
      # allow release-drafter/release-drafter to create GitHub releases and add labels to PRs
      contents: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: github.repository == 'twbs/bootstrap'
    steps:
      - uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2 # v7.1.1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/scorecard.yml
================================================
# 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: "Run analysis"
        uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
        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@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
        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@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
        with:
          sarif_file: results.sarif


================================================
FILE: .gitignore
================================================
# Ignore docs files
/_site/

# Numerous always-ignore extensions
*.diff
*.err
*.log
*.orig
*.rej
*.swo
*.swp
*.vi
*.zip
*~

# OS or Editor folders
._*
.cache
.DS_Store
.idea
.project
.settings
.tmproj
*.esproj
*.sublime-project
*.sublime-workspace
nbproject
Thumbs.db
# Local Netlify folder
.netlify

# Komodo
.komodotools
*.komodoproject

# Folders to ignore
/dist-sass/
/js/coverage/
/node_modules/

# Site
/site/dist
/site/node_modules
/site/.astro
/site/public


================================================
FILE: .prettierignore
================================================
# 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


================================================
FILE: .stylelintignore
================================================
**/*.min.css
**/dist/
**/vendor/
/_site/
/site/public/
/js/coverage/


================================================
FILE: .stylelintrc.json
================================================
{
  "extends": [
    "stylelint-config-twbs-bootstrap"
  ],
  "reportInvalidScopeDisables": true,
  "reportNeedlessDisables": true,
  "overrides": [
    {
      "files": "**/*.scss",
      "rules": {
        "declaration-property-value-disallowed-list": {
          "border": "none",
          "outline": "none"
        },
        "function-disallowed-list": [
          "calc",
          "lighten",
          "darken"
        ],
        "property-disallowed-list": [
          "border-radius",
          "border-top-left-radius",
          "border-top-right-radius",
          "border-bottom-right-radius",
          "border-bottom-left-radius",
          "transition"
        ],
        "scss/dollar-variable-default": [
          true,
          {
            "ignore": "local"
          }
        ],
        "scss/selector-no-union-class-name": true
      }
    },
    {
      "files": "scss/**/*.{test,spec}.scss",
      "rules": {
        "scss/dollar-variable-default": null,
        "declaration-no-important": null
      }
    },
    {
      "files": "site/**/*.scss",
      "rules": {
        "scss/dollar-variable-default": null
      }
    },
    {
      "files": "site/**/examples/**/*.css",
      "rules": {
        "comment-empty-line-before": null,
        "property-no-vendor-prefix": null,
        "selector-no-qualifying-type": null,
        "value-no-vendor-prefix": null
      }
    }
  ]
}


================================================
FILE: .vscode/extensions.json
================================================
{
  "recommendations": [
    "astro-build.astro-vscode",
    "dbaeumer.vscode-eslint",
    "EditorConfig.EditorConfig",
    "hossaini.bootstrap-intellisense",
    "streetsidesoftware.code-spell-checker",
    "stylelint.vscode-stylelint"
  ]
}


================================================
FILE: .vscode/settings.json
================================================
{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.fixAll.stylelint": "always"
  },
  "editor.renderWhitespace": "all",
  "scss.validate": false,
  "stylelint.enable": true,
  "stylelint.validate": ["scss"]
}


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
  community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of
  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,
  without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
mdo@getbootstrap.com.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2011-2026 The Bootstrap Authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
  <a href="https://getbootstrap.com/">
    <img src="https://getbootstrap.com/docs/5.3/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
  </a>
</p>

<h3 align="center">Bootstrap</h3>

<p align="center">
  Sleek, intuitive, and powerful front-end framework for faster and easier web development.
  <br>
  <a href="https://getbootstrap.com/docs/5.3/"><strong>Explore Bootstrap docs »</strong></a>
  <br>
  <br>
  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=-&labels=bug&template=bug_report.yml">Report bug</a>
  ·
  <a href="https://github.com/twbs/bootstrap/issues/new?assignees=&labels=feature&template=feature_request.yml">Request feature</a>
  ·
  <a href="https://blog.getbootstrap.com/">Blog</a>
</p>


## Bootstrap 5

Our default branch is for development of our Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4.


## Table of contents

- [Quick start](#quick-start)
- [Status](#status)
- [What’s included](#whats-included)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Community](#community)
- [Versioning](#versioning)
- [Creators](#creators)
- [Thanks](#thanks)
- [Copyright and license](#copyright-and-license)


## Quick start

Several quick start options are available:

- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.3.8.zip)
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`
- Install with [npm](https://www.npmjs.com/): `npm install bootstrap@v5.3.8`
- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap@v5.3.8`
- Install with [Bun](https://bun.sh/): `bun add bootstrap@v5.3.8`
- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.3.8`
- 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.


## Status

[![Build Status](https://img.shields.io/github/actions/workflow/status/twbs/bootstrap/js.yml?branch=main&label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions/workflows/js.yml?query=workflow%3AJS+branch%3Amain)
[![npm version](https://img.shields.io/npm/v/bootstrap?logo=npm&logoColor=fff)](https://www.npmjs.com/package/bootstrap)
[![Gem version](https://img.shields.io/gem/v/bootstrap?logo=rubygems&logoColor=fff)](https://rubygems.org/gems/bootstrap)
[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue?logo=meteor&logoColor=fff)](https://atmospherejs.com/twbs/bootstrap)
[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap?logo=packagist&logoColor=fff)](https://packagist.org/packages/twbs/bootstrap)
[![NuGet](https://img.shields.io/nuget/vpre/bootstrap?logo=nuget&logoColor=fff)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main?logo=coveralls&logoColor=fff)](https://coveralls.io/github/twbs/bootstrap?branch=main)
[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css)
[![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

Within the download you’ll find the following directories and files, logically grouping common assets and providing both compiled and minified variations.

<details>
  <summary>Download contents</summary>

  ```text
  bootstrap/
  ├── css/
  │   ├── bootstrap-grid.css
  │   ├── bootstrap-grid.css.map
  │   ├── bootstrap-grid.min.css
  │   ├── bootstrap-grid.min.css.map
  │   ├── bootstrap-grid.rtl.css
  │   ├── bootstrap-grid.rtl.css.map
  │   ├── bootstrap-grid.rtl.min.css
  │   ├── bootstrap-grid.rtl.min.css.map
  │   ├── bootstrap-reboot.css
  │   ├── bootstrap-reboot.css.map
  │   ├── bootstrap-reboot.min.css
  │   ├── bootstrap-reboot.min.css.map
  │   ├── bootstrap-reboot.rtl.css
  │   ├── bootstrap-reboot.rtl.css.map
  │   ├── bootstrap-reboot.rtl.min.css
  │   ├── bootstrap-reboot.rtl.min.css.map
  │   ├── bootstrap-utilities.css
  │   ├── bootstrap-utilities.css.map
  │   ├── bootstrap-utilities.min.css
  │   ├── bootstrap-utilities.min.css.map
  │   ├── bootstrap-utilities.rtl.css
  │   ├── bootstrap-utilities.rtl.css.map
  │   ├── bootstrap-utilities.rtl.min.css
  │   ├── bootstrap-utilities.rtl.min.css.map
  │   ├── bootstrap.css
  │   ├── bootstrap.css.map
  │   ├── bootstrap.min.css
  │   ├── bootstrap.min.css.map
  │   ├── bootstrap.rtl.css
  │   ├── bootstrap.rtl.css.map
  │   ├── bootstrap.rtl.min.css
  │   └── bootstrap.rtl.min.css.map
  └── js/
      ├── bootstrap.bundle.js
      ├── bootstrap.bundle.js.map
      ├── bootstrap.bundle.min.js
      ├── bootstrap.bundle.min.js.map
      ├── bootstrap.esm.js
      ├── bootstrap.esm.js.map
      ├── bootstrap.esm.min.js
      ├── bootstrap.esm.min.js.map
      ├── bootstrap.js
      ├── bootstrap.js.map
      ├── bootstrap.min.js
      └── bootstrap.min.js.map
  ```
</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/).


## Bugs and feature requests

Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new/choose).


## Documentation

Bootstrap’s 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 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à.

Learn more about using Astro by reading its [documentation](https://docs.astro.build/en/getting-started/).

### Documentation for previous releases

You can find all our previous releases docs on <https://getbootstrap.com/docs/versions/>.

[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.


## Contributing

Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.

Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).

Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.


## Community

Get updates on Bootstrap’s 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/).
- Ask questions and explore [our GitHub Discussions](https://github.com/twbs/bootstrap/discussions).
- Discuss, ask questions, and more on [the community Discord](https://discord.gg/bZUvakRU3M) or [Bootstrap subreddit](https://www.reddit.com/r/bootstrap/).
- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)).
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.


## Versioning

For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible.

See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.


## Creators

**Mark Otto**

- <https://x.com/mdo>
- <https://github.com/mdo>

**Jacob Thornton**

- <https://x.com/fat>
- <https://github.com/fat>


## Thanks

<a href="https://www.browserstack.com/">
  <img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack" width="192" height="42">
</a>

Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!

<a href="https://www.netlify.com/">
  <img src="https://www.netlify.com/v3/img/components/full-logo-light.svg" alt="Netlify" width="147" height="40">
</a>

Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews!


## Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)]

[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website)
[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website)
[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website)
[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website)
[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website)
[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website)
[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website)
[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website)
[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website)
[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website)


## Backers

Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)]

[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers)


## Copyright and license

Code and documentation copyright 2011-2026 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).


================================================
FILE: SECURITY.md
================================================
# Reporting Security Issues

The Bootstrap team and community take security issues in Bootstrap seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.

To report a security issue, email [security@getbootstrap.com](mailto:security@getbootstrap.com) and include the word "SECURITY" in the subject line.

We'll endeavor to respond quickly, and will keep you updated throughout the process.


================================================
FILE: build/banner.mjs
================================================
import fs from 'node:fs/promises'
import path from 'node:path'
import { fileURLToPath } from 'node:url'

const __dirname = path.dirname(fileURLToPath(import.meta.url))

const pkgJson = path.join(__dirname, '../package.json')
const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8'))

const year = new Date().getFullYear()

function getBanner(pluginFilename) {
  return `/*!
  * Bootstrap${pluginFilename ? ` ${pluginFilename}` : ''} v${pkg.version} (${pkg.homepage})
  * Copyright 2011-${year} ${pkg.author}
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */`
}

export default getBanner


================================================
FILE: build/build-plugins.mjs
================================================
#!/usr/bin/env node

/*!
 * Script to build our plugins to use them separately.
 * Copyright 2020-2026 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { globby } from 'globby'
import { rollup } from 'rollup'
import banner from './banner.mjs'

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(fileURLToPath(import.meta.url))

const sourcePath = path.resolve(__dirname, '../js/src/').replace(/\\/g, '/')
const jsFiles = await globby(`${sourcePath}/**/*.js`)

// Array which holds the resolved plugins
const resolvedPlugins = []

// Trims the "js" extension and uppercases => first letter, hyphens, backslashes & slashes
const filenameToEntity = filename => filename.replace('.js', '')
  .replace(/(?:^|-|\/|\\)[a-z]/g, str => str.slice(-1).toUpperCase())

for (const file of jsFiles) {
  resolvedPlugins.push({
    src: file,
    dist: file.replace('src', 'dist'),
    fileName: path.basename(file),
    className: filenameToEntity(path.basename(file))
    // safeClassName: filenameToEntity(path.relative(sourcePath, file))
  })
}

const build = async plugin => {
  /**
   * @type {import('rollup').GlobalsOption}
   */
  const globals = {}

  const bundle = await rollup({
    input: plugin.src,
    plugins: [
      babel({
        // Only transpile our source code
        exclude: 'node_modules/**',
        // Include the helpers in each file, at most one copy of each
        babelHelpers: 'bundled'
      })
    ],
    external(source) {
      // Pattern to identify local files
      const pattern = /^(\.{1,2})\//

      // It's not a local file, e.g a Node.js package
      if (!pattern.test(source)) {
        globals[source] = source
        return true
      }

      const usedPlugin = resolvedPlugins.find(plugin => {
        return plugin.src.includes(source.replace(pattern, ''))
      })

      if (!usedPlugin) {
        throw new Error(`Source ${source} is not mapped!`)
      }

      // We can change `Index` with `UtilIndex` etc if we use
      // `safeClassName` instead of `className` everywhere
      globals[path.normalize(usedPlugin.src)] = usedPlugin.className
      return true
    }
  })

  await bundle.write({
    banner: banner(plugin.fileName),
    format: 'umd',
    name: plugin.className,
    sourcemap: true,
    globals,
    generatedCode: 'es2015',
    file: plugin.dist
  })

  console.log(`Built ${plugin.className}`)
}

(async () => {
  try {
    const basename = path.basename(__filename)
    const timeLabel = `[${basename}] finished`

    console.log('Building individual plugins...')
    console.time(timeLabel)

    await Promise.all(Object.values(resolvedPlugins).map(plugin => build(plugin)))

    console.timeEnd(timeLabel)
  } catch (error) {
    console.error(error)
    process.exit(1)
  }
})()


================================================
FILE: build/change-version.mjs
================================================
#!/usr/bin/env node

/*!
 * Script to update version number references in the project.
 * Copyright 2017-2026 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

import { execFile } from 'node:child_process'
import fs from 'node:fs/promises'
import process from 'node:process'

const VERBOSE = process.argv.includes('--verbose')
const DRY_RUN = process.argv.includes('--dry') || process.argv.includes('--dry-run')

// These are the files we only care about replacing the version
const FILES = [
  'README.md',
  'config.yml',
  'js/src/base-component.js',
  'package.js',
  'scss/mixins/_banner.scss',
  'site/data/docs-versions.yml'
]

// Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
function regExpQuote(string) {
  return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
}

function regExpQuoteReplacement(string) {
  return string.replace(/\$/g, '$$')
}

async function replaceRecursively(file, oldVersion, newVersion) {
  const originalString = await fs.readFile(file, 'utf8')
  const newString = originalString
    .replace(
      new RegExp(regExpQuote(oldVersion), 'g'),
      regExpQuoteReplacement(newVersion)
    )
    // Also replace the version used by the rubygem,
    // which is using periods (`.`) instead of hyphens (`-`)
    .replace(
      new RegExp(regExpQuote(oldVersion.replace(/-/g, '.')), 'g'),
      regExpQuoteReplacement(newVersion.replace(/-/g, '.'))
    )

  // No need to move any further if the strings are identical
  if (originalString === newString) {
    return
  }

  if (VERBOSE) {
    console.log(`Found ${oldVersion} in ${file}`)
  }

  if (DRY_RUN) {
    return
  }

  await fs.writeFile(file, newString, 'utf8')
}

function bumpNpmVersion(newVersion) {
  if (DRY_RUN) {
    return
  }

  execFile('npm', ['version', newVersion, '--no-git-tag'], { shell: true }, error => {
    if (error) {
      console.error(error)
      process.exit(1)
    }
  })
}

function showUsage(args) {
  console.error('USAGE: change-version old_version new_version [--verbose] [--dry[-run]]')
  console.error('Got arguments:', args)
  process.exit(1)
}

async function main(args) {
  let [oldVersion, newVersion] = args

  if (!oldVersion || !newVersion) {
    showUsage(args)
  }

  // Strip any leading `v` from arguments because
  // otherwise we will end up with duplicate `v`s
  [oldVersion, newVersion] = [oldVersion, newVersion].map(arg => {
    return arg.startsWith('v') ? arg.slice(1) : arg
  })

  if (oldVersion === newVersion) {
    showUsage(args)
  }

  bumpNpmVersion(newVersion)

  try {
    await Promise.all(
      FILES.map(file => replaceRecursively(file, oldVersion, newVersion))
    )
  } catch (error) {
    console.error(error)
    process.exit(1)
  }
}

main(process.argv.slice(2))


================================================
FILE: build/docs-prep.sh
================================================
#!/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}"


================================================
FILE: build/generate-sri.mjs
================================================
#!/usr/bin/env node

/*!
 * Script to generate SRI hashes for use in our docs.
 * Remember to use the same vendor files as the CDN ones,
 * otherwise the hashes won't match!
 *
 * Copyright 2017-2026 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

import crypto from 'node:crypto'
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import sh from 'shelljs'

const __dirname = path.dirname(fileURLToPath(import.meta.url))

sh.config.fatal = true

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 config.yml variable's name of the file
const files = [
  {
    file: 'dist/css/bootstrap.min.css',
    configPropertyName: 'css_hash'
  },
  {
    file: 'dist/css/bootstrap.rtl.min.css',
    configPropertyName: 'css_rtl_hash'
  },
  {
    file: 'dist/js/bootstrap.min.js',
    configPropertyName: 'js_hash'
  },
  {
    file: 'dist/js/bootstrap.bundle.min.js',
    configPropertyName: 'js_bundle_hash'
  },
  {
    file: 'node_modules/@popperjs/core/dist/umd/popper.min.js',
    configPropertyName: 'popper_hash'
  }
]

for (const { file, configPropertyName } of files) {
  fs.readFile(file, 'utf8', (error, data) => {
    if (error) {
      throw error
    }

    const algorithm = 'sha384'
    const hash = crypto.createHash(algorithm).update(data, 'utf8').digest('base64')
    const integrity = `${algorithm}-${hash}`

    console.log(`${configPropertyName}: ${integrity}`)

    sh.sed('-i', new RegExp(`^(\\s+${configPropertyName}:\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
  })
}


================================================
FILE: build/postcss.config.mjs
================================================
const mapConfig = {
  inline: false,
  annotation: true,
  sourcesContent: true
}

export default context => {
  return {
    map: context.file.dirname.includes('examples') ? false : mapConfig,
    plugins: {
      autoprefixer: {
        cascade: false
      },
      rtlcss: context.env === 'RTL'
    }
  }
}


================================================
FILE: build/rollup.config.mjs
================================================
import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import banner from './banner.mjs'

const __dirname = path.dirname(fileURLToPath(import.meta.url))

const BUNDLE = process.env.BUNDLE === 'true'
const ESM = process.env.ESM === 'true'

let destinationFile = `bootstrap${ESM ? '.esm' : ''}`
const external = ['@popperjs/core']
const plugins = [
  babel({
    // Only transpile our source code
    exclude: 'node_modules/**',
    // Include the helpers in the bundle, at most one copy of each
    babelHelpers: 'bundled'
  })
]
const globals = {
  '@popperjs/core': 'Popper'
}

if (BUNDLE) {
  destinationFile += '.bundle'
  // Remove last entry in external array to bundle Popper
  external.pop()
  delete globals['@popperjs/core']
  plugins.push(
    replace({
      'process.env.NODE_ENV': '"production"',
      preventAssignment: true
    }),
    nodeResolve()
  )
}

const rollupConfig = {
  input: path.resolve(__dirname, `../js/index.${ESM ? 'esm' : 'umd'}.js`),
  output: {
    banner: banner(),
    file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
    format: ESM ? 'esm' : 'umd',
    globals,
    generatedCode: 'es2015'
  },
  external,
  plugins
}

if (!ESM) {
  rollupConfig.output.name = 'bootstrap'
}

export default rollupConfig


================================================
FILE: build/vnu-jar.mjs
================================================
#!/usr/bin/env node

/*!
 * Script to run vnu-jar if Java is available.
 * Copyright 2017-2026 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

import { execFile, spawn } from 'node:child_process'
import vnu from 'vnu-jar'

execFile('java', ['-version'], (error, stdout, stderr) => {
  if (error) {
    console.error('Skipping vnu-jar test; Java is probably missing.')
    console.error(error)
    return
  }

  console.log('Running vnu-jar validation...')

  const is32bitJava = !/64-Bit/.test(stderr)

  // vnu-jar accepts multiple ignores joined with a `|`.
  // Also note that the ignores are string regular expressions.
  const ignores = [
    // "autocomplete" is included in <button> and checkboxes and radio <input>s due to
    // Firefox's non-standard autocomplete behavior - see https://bugzilla.mozilla.org/show_bug.cgi?id=654072
    'Attribute “autocomplete” is only allowed when the input type is.*',
    'Attribute “autocomplete” not allowed on element “button” at this point.',
    // 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.',
    // 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 = [
    '-jar',
    `"${vnu}"`,
    '--asciiquotes',
    '--skip-non-html',
    '--Werror',
    `--filterpattern "${ignores}"`,
    '_site/',
    'js/tests/'
  ]

  // For the 32-bit Java we need to pass `-Xss512k`
  if (is32bitJava) {
    args.splice(0, 0, '-Xss512k')
  }

  console.log(`command used: java ${args.join(' ')}`)

  return spawn('java', args, {
    shell: true,
    stdio: 'inherit'
  })
    .on('exit', process.exit)
})


================================================
FILE: build/zip-examples.mjs
================================================
#!/usr/bin/env node

/*!
 * Script to create the built examples zip archive;
 * requires the `zip` command to be present!
 * Copyright 2020-2026 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

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))

const pkgJson = path.join(__dirname, '../package.json')
const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8'))

const versionShort = pkg.config.version_short
const distFolder = `bootstrap-${pkg.version}-examples`
const rootDocsDir = '_site'
const docsDir = `${rootDocsDir}/docs/${versionShort}/`

// these are the files we need in the examples
const cssFiles = [
  'bootstrap.min.css',
  'bootstrap.min.css.map',
  'bootstrap.rtl.min.css',
  'bootstrap.rtl.min.css.map'
]
const jsFiles = [
  'bootstrap.bundle.min.js',
  'bootstrap.bundle.min.js.map'
]
const imgFiles = [
  'bootstrap-logo.svg',
  'bootstrap-logo-white.svg'
]
const staticJsFiles = [
  'color-modes.js'
]

sh.config.fatal = true

if (!sh.test('-d', rootDocsDir)) {
  throw new Error(`The "${rootDocsDir}" folder does not exist, did you forget building the docs?`)
}

// switch to the root dir
sh.cd(path.join(__dirname, '..'))

// remove any previously created folder/zip with the same name
sh.rm('-rf', [distFolder, `${distFolder}.zip`])

// create any folders so that `cp` works
sh.mkdir('-p', [
  distFolder,
  `${distFolder}/assets/brand/`,
  `${distFolder}/assets/dist/css/`,
  `${distFolder}/assets/dist/js/`,
  `${distFolder}/assets/js/`
])

sh.cp('-Rf', `${docsDir}/examples/*`, distFolder)

for (const file of cssFiles) {
  sh.cp('-f', `${docsDir}/dist/css/${file}`, `${distFolder}/assets/dist/css/`)
}

for (const file of jsFiles) {
  sh.cp('-f', `${docsDir}/dist/js/${file}`, `${distFolder}/assets/dist/js/`)
}

for (const file of imgFiles) {
  sh.cp('-f', `${docsDir}/assets/brand/${file}`, `${distFolder}/assets/brand/`)
}

for (const file of staticJsFiles) {
  sh.cp('-f', `${docsDir}/assets/js/${file}`, `${distFolder}/assets/js/`)
}

sh.rm(`${distFolder}/index.html`)

// get all examples' HTML files
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(/<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}"`)

// remove the folder we created
sh.rm('-rf', distFolder)


================================================
FILE: composer.json
================================================
{
  "name": "twbs/bootstrap",
  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
  "keywords": [
    "css",
    "js",
    "sass",
    "mobile-first",
    "responsive",
    "front-end",
    "framework",
    "web"
  ],
  "homepage": "https://getbootstrap.com/",
  "authors": [
    {
      "name": "Mark Otto",
      "email": "markdotto@gmail.com"
    },
    {
      "name": "Jacob Thornton",
      "email": "jacobthornton@gmail.com"
    }
  ],
  "support": {
    "issues": "https://github.com/twbs/bootstrap/issues"
  },
  "license": "MIT",
  "replace": {
    "twitter/bootstrap": "self.version"
  }
}


================================================
FILE: config.yml
================================================
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.8"
current_ruby_version:   "5.3.8"
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/"
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.8.zip"
  dist:                 "https://github.com/twbs/bootstrap/releases/download/v5.3.8/bootstrap-5.3.8-dist.zip"
  dist_examples:        "https://github.com/twbs/bootstrap/releases/download/v5.3.8/bootstrap-5.3.8-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.8/dist/css/bootstrap.min.css"
  css_hash:             "sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB"
  css_rtl:              "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.rtl.min.css"
  css_rtl_hash:         "sha384-CfCrinSRH2IR6a4e6fy2q6ioOX7O6Mtm1L9vRvFZ1trBncWmMePhzvafv7oIcWiW"
  js:                   "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.min.js"
  js_hash:              "sha384-G/EV+4j2dNv+tEPo3++6LCgdCROaejBqfUeNjuKAiuXbjrxilcCdDz6ZAVfHWe1Y"
  js_bundle:            "https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
  js_bundle_hash:       "sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
  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


================================================
FILE: dist/css/bootstrap-grid.css
================================================
/*!
 * Bootstrap Grid v5.3.8 (https://getbootstrap.com/)
 * Copyright 2011-2025 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-right: auto;
  margin-left: auto;
}

@media (min-width: 576px) {
  .container-sm, .container {
    max-width: 540px;
  }
}
@media (min-width: 768px) {
  .container-md, .container-sm, .container {
    max-width: 720px;
  }
}
@media (min-width: 992px) {
  .container-lg, .container-md, .container-sm, .container {
    max-width: 960px;
  }
}
@media (min-width: 1200px) {
  .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1140px;
  }
}
@media (min-width: 1400px) {
  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1320px;
  }
}
:root {
  --bs-breakpoint-xs: 0;
  --bs-breakpoint-sm: 576px;
  --bs-breakpoint-md: 768px;
  --bs-breakpoint-lg: 992px;
  --bs-breakpoint-xl: 1200px;
  --bs-breakpoint-xxl: 1400px;
}

.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
  box-sizing: border-box;
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

.col {
  flex: 1 0 0;
}

.row-cols-auto > * {
  flex: 0 0 auto;
  width: auto;
}

.row-cols-1 > * {
  flex: 0 0 auto;
  width: 100%;
}

.row-cols-2 > * {
  flex: 0 0 auto;
  width: 50%;
}

.row-cols-3 > * {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.row-cols-4 > * {
  flex: 0 0 auto;
  width: 25%;
}

.row-cols-5 > * {
  flex: 0 0 auto;
  width: 20%;
}

.row-cols-6 > * {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-auto {
  flex: 0 0 auto;
  width: auto;
}

.col-1 {
  flex: 0 0 auto;
  width: 8.33333333%;
}

.col-2 {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-3 {
  flex: 0 0 auto;
  width: 25%;
}

.col-4 {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.col-5 {
  flex: 0 0 auto;
  width: 41.66666667%;
}

.col-6 {
  flex: 0 0 auto;
  width: 50%;
}

.col-7 {
  flex: 0 0 auto;
  width: 58.33333333%;
}

.col-8 {
  flex: 0 0 auto;
  width: 66.66666667%;
}

.col-9 {
  flex: 0 0 auto;
  width: 75%;
}

.col-10 {
  flex: 0 0 auto;
  width: 83.33333333%;
}

.col-11 {
  flex: 0 0 auto;
  width: 91.66666667%;
}

.col-12 {
  flex: 0 0 auto;
  width: 100%;
}

.offset-1 {
  margin-left: 8.33333333%;
}

.offset-2 {
  margin-left: 16.66666667%;
}

.offset-3 {
  margin-left: 25%;
}

.offset-4 {
  margin-left: 33.33333333%;
}

.offset-5 {
  margin-left: 41.66666667%;
}

.offset-6 {
  margin-left: 50%;
}

.offset-7 {
  margin-left: 58.33333333%;
}

.offset-8 {
  margin-left: 66.66666667%;
}

.offset-9 {
  margin-left: 75%;
}

.offset-10 {
  margin-left: 83.33333333%;
}

.offset-11 {
  margin-left: 91.66666667%;
}

.g-0,
.gx-0 {
  --bs-gutter-x: 0;
}

.g-0,
.gy-0 {
  --bs-gutter-y: 0;
}

.g-1,
.gx-1 {
  --bs-gutter-x: 0.25rem;
}

.g-1,
.gy-1 {
  --bs-gutter-y: 0.25rem;
}

.g-2,
.gx-2 {
  --bs-gutter-x: 0.5rem;
}

.g-2,
.gy-2 {
  --bs-gutter-y: 0.5rem;
}

.g-3,
.gx-3 {
  --bs-gutter-x: 1rem;
}

.g-3,
.gy-3 {
  --bs-gutter-y: 1rem;
}

.g-4,
.gx-4 {
  --bs-gutter-x: 1.5rem;
}

.g-4,
.gy-4 {
  --bs-gutter-y: 1.5rem;
}

.g-5,
.gx-5 {
  --bs-gutter-x: 3rem;
}

.g-5,
.gy-5 {
  --bs-gutter-y: 3rem;
}

@media (min-width: 576px) {
  .col-sm {
    flex: 1 0 0;
  }
  .row-cols-sm-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-sm-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-sm-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-sm-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-sm-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-sm-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-sm-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-sm-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-sm-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-sm-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-sm-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-sm-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-sm-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-sm-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-sm-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-sm-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-sm-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-sm-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-sm-0 {
    margin-left: 0;
  }
  .offset-sm-1 {
    margin-left: 8.33333333%;
  }
  .offset-sm-2 {
    margin-left: 16.66666667%;
  }
  .offset-sm-3 {
    margin-left: 25%;
  }
  .offset-sm-4 {
    margin-left: 33.33333333%;
  }
  .offset-sm-5 {
    margin-left: 41.66666667%;
  }
  .offset-sm-6 {
    margin-left: 50%;
  }
  .offset-sm-7 {
    margin-left: 58.33333333%;
  }
  .offset-sm-8 {
    margin-left: 66.66666667%;
  }
  .offset-sm-9 {
    margin-left: 75%;
  }
  .offset-sm-10 {
    margin-left: 83.33333333%;
  }
  .offset-sm-11 {
    margin-left: 91.66666667%;
  }
  .g-sm-0,
  .gx-sm-0 {
    --bs-gutter-x: 0;
  }
  .g-sm-0,
  .gy-sm-0 {
    --bs-gutter-y: 0;
  }
  .g-sm-1,
  .gx-sm-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-sm-1,
  .gy-sm-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-sm-2,
  .gx-sm-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-sm-2,
  .gy-sm-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-sm-3,
  .gx-sm-3 {
    --bs-gutter-x: 1rem;
  }
  .g-sm-3,
  .gy-sm-3 {
    --bs-gutter-y: 1rem;
  }
  .g-sm-4,
  .gx-sm-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-sm-4,
  .gy-sm-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-sm-5,
  .gx-sm-5 {
    --bs-gutter-x: 3rem;
  }
  .g-sm-5,
  .gy-sm-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 768px) {
  .col-md {
    flex: 1 0 0;
  }
  .row-cols-md-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-md-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-md-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-md-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-md-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-md-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-md-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-md-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-md-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-md-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-md-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-md-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-md-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-md-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-md-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-md-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-md-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-md-0 {
    margin-left: 0;
  }
  .offset-md-1 {
    margin-left: 8.33333333%;
  }
  .offset-md-2 {
    margin-left: 16.66666667%;
  }
  .offset-md-3 {
    margin-left: 25%;
  }
  .offset-md-4 {
    margin-left: 33.33333333%;
  }
  .offset-md-5 {
    margin-left: 41.66666667%;
  }
  .offset-md-6 {
    margin-left: 50%;
  }
  .offset-md-7 {
    margin-left: 58.33333333%;
  }
  .offset-md-8 {
    margin-left: 66.66666667%;
  }
  .offset-md-9 {
    margin-left: 75%;
  }
  .offset-md-10 {
    margin-left: 83.33333333%;
  }
  .offset-md-11 {
    margin-left: 91.66666667%;
  }
  .g-md-0,
  .gx-md-0 {
    --bs-gutter-x: 0;
  }
  .g-md-0,
  .gy-md-0 {
    --bs-gutter-y: 0;
  }
  .g-md-1,
  .gx-md-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-md-1,
  .gy-md-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-md-2,
  .gx-md-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-md-2,
  .gy-md-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-md-3,
  .gx-md-3 {
    --bs-gutter-x: 1rem;
  }
  .g-md-3,
  .gy-md-3 {
    --bs-gutter-y: 1rem;
  }
  .g-md-4,
  .gx-md-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-md-4,
  .gy-md-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-md-5,
  .gx-md-5 {
    --bs-gutter-x: 3rem;
  }
  .g-md-5,
  .gy-md-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 992px) {
  .col-lg {
    flex: 1 0 0;
  }
  .row-cols-lg-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-lg-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-lg-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-lg-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-lg-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-lg-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-lg-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-lg-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-lg-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-lg-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-lg-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-lg-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-lg-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-lg-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-lg-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-lg-0 {
    margin-left: 0;
  }
  .offset-lg-1 {
    margin-left: 8.33333333%;
  }
  .offset-lg-2 {
    margin-left: 16.66666667%;
  }
  .offset-lg-3 {
    margin-left: 25%;
  }
  .offset-lg-4 {
    margin-left: 33.33333333%;
  }
  .offset-lg-5 {
    margin-left: 41.66666667%;
  }
  .offset-lg-6 {
    margin-left: 50%;
  }
  .offset-lg-7 {
    margin-left: 58.33333333%;
  }
  .offset-lg-8 {
    margin-left: 66.66666667%;
  }
  .offset-lg-9 {
    margin-left: 75%;
  }
  .offset-lg-10 {
    margin-left: 83.33333333%;
  }
  .offset-lg-11 {
    margin-left: 91.66666667%;
  }
  .g-lg-0,
  .gx-lg-0 {
    --bs-gutter-x: 0;
  }
  .g-lg-0,
  .gy-lg-0 {
    --bs-gutter-y: 0;
  }
  .g-lg-1,
  .gx-lg-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-lg-1,
  .gy-lg-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-lg-2,
  .gx-lg-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-lg-2,
  .gy-lg-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-lg-3,
  .gx-lg-3 {
    --bs-gutter-x: 1rem;
  }
  .g-lg-3,
  .gy-lg-3 {
    --bs-gutter-y: 1rem;
  }
  .g-lg-4,
  .gx-lg-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-lg-4,
  .gy-lg-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-lg-5,
  .gx-lg-5 {
    --bs-gutter-x: 3rem;
  }
  .g-lg-5,
  .gy-lg-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1200px) {
  .col-xl {
    flex: 1 0 0;
  }
  .row-cols-xl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xl-0 {
    margin-left: 0;
  }
  .offset-xl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xl-3 {
    margin-left: 25%;
  }
  .offset-xl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xl-6 {
    margin-left: 50%;
  }
  .offset-xl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xl-9 {
    margin-left: 75%;
  }
  .offset-xl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xl-11 {
    margin-left: 91.66666667%;
  }
  .g-xl-0,
  .gx-xl-0 {
    --bs-gutter-x: 0;
  }
  .g-xl-0,
  .gy-xl-0 {
    --bs-gutter-y: 0;
  }
  .g-xl-1,
  .gx-xl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xl-1,
  .gy-xl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xl-2,
  .gx-xl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xl-2,
  .gy-xl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xl-3,
  .gx-xl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xl-3,
  .gy-xl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xl-4,
  .gx-xl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xl-4,
  .gy-xl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xl-5,
  .gx-xl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xl-5,
  .gy-xl-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1400px) {
  .col-xxl {
    flex: 1 0 0;
  }
  .row-cols-xxl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xxl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xxl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xxl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xxl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xxl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xxl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xxl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xxl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xxl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xxl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xxl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xxl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xxl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xxl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xxl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xxl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xxl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xxl-0 {
    margin-left: 0;
  }
  .offset-xxl-1 {
    margin-left: 8.33333333%;
  }
  .offset-xxl-2 {
    margin-left: 16.66666667%;
  }
  .offset-xxl-3 {
    margin-left: 25%;
  }
  .offset-xxl-4 {
    margin-left: 33.33333333%;
  }
  .offset-xxl-5 {
    margin-left: 41.66666667%;
  }
  .offset-xxl-6 {
    margin-left: 50%;
  }
  .offset-xxl-7 {
    margin-left: 58.33333333%;
  }
  .offset-xxl-8 {
    margin-left: 66.66666667%;
  }
  .offset-xxl-9 {
    margin-left: 75%;
  }
  .offset-xxl-10 {
    margin-left: 83.33333333%;
  }
  .offset-xxl-11 {
    margin-left: 91.66666667%;
  }
  .g-xxl-0,
  .gx-xxl-0 {
    --bs-gutter-x: 0;
  }
  .g-xxl-0,
  .gy-xxl-0 {
    --bs-gutter-y: 0;
  }
  .g-xxl-1,
  .gx-xxl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xxl-1,
  .gy-xxl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xxl-2,
  .gx-xxl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xxl-2,
  .gy-xxl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xxl-3,
  .gx-xxl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xxl-3,
  .gy-xxl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xxl-4,
  .gx-xxl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xxl-4,
  .gy-xxl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xxl-5,
  .gx-xxl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xxl-5,
  .gy-xxl-5 {
    --bs-gutter-y: 3rem;
  }
}
.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-block {
  display: block !important;
}

.d-grid {
  display: grid !important;
}

.d-inline-grid {
  display: inline-grid !important;
}

.d-table {
  display: table !important;
}

.d-table-row {
  display: table-row !important;
}

.d-table-cell {
  display: table-cell !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-none {
  display: none !important;
}

.flex-fill {
  flex: 1 1 auto !important;
}

.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-row-reverse {
  flex-direction: row-reverse !important;
}

.flex-column-reverse {
  flex-direction: column-reverse !important;
}

.flex-grow-0 {
  flex-grow: 0 !important;
}

.flex-grow-1 {
  flex-grow: 1 !important;
}

.flex-shrink-0 {
  flex-shrink: 0 !important;
}

.flex-shrink-1 {
  flex-shrink: 1 !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.justify-content-evenly {
  justify-content: space-evenly !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-baseline {
  align-items: baseline !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.align-content-start {
  align-content: flex-start !important;
}

.align-content-end {
  align-content: flex-end !important;
}

.align-content-center {
  align-content: center !important;
}

.align-content-between {
  align-content: space-between !important;
}

.align-content-around {
  align-content: space-around !important;
}

.align-content-stretch {
  align-content: stretch !important;
}

.align-self-auto {
  align-self: auto !important;
}

.align-self-start {
  align-self: flex-start !important;
}

.align-self-end {
  align-self: flex-end !important;
}

.align-self-center {
  align-self: center !important;
}

.align-self-baseline {
  align-self: baseline !important;
}

.align-self-stretch {
  align-self: stretch !important;
}

.order-first {
  order: -1 !important;
}

.order-0 {
  order: 0 !important;
}

.order-1 {
  order: 1 !important;
}

.order-2 {
  order: 2 !important;
}

.order-3 {
  order: 3 !important;
}

.order-4 {
  order: 4 !important;
}

.order-5 {
  order: 5 !important;
}

.order-last {
  order: 6 !important;
}

.m-0 {
  margin: 0 !important;
}

.m-1 {
  margin: 0.25rem !important;
}

.m-2 {
  margin: 0.5rem !important;
}

.m-3 {
  margin: 1rem !important;
}

.m-4 {
  margin: 1.5rem !important;
}

.m-5 {
  margin: 3rem !important;
}

.m-auto {
  margin: auto !important;
}

.mx-0 {
  margin-right: 0 !important;
  margin-left: 0 !important;
}

.mx-1 {
  margin-right: 0.25rem !important;
  margin-left: 0.25rem !important;
}

.mx-2 {
  margin-right: 0.5rem !important;
  margin-left: 0.5rem !important;
}

.mx-3 {
  margin-right: 1rem !important;
  margin-left: 1rem !important;
}

.mx-4 {
  margin-right: 1.5rem !important;
  margin-left: 1.5rem !important;
}

.mx-5 {
  margin-right: 3rem !important;
  margin-left: 3rem !important;
}

.mx-auto {
  margin-right: auto !important;
  margin-left: auto !important;
}

.my-0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.my-1 {
  margin-top: 0.25rem !important;
  margin-bottom: 0.25rem !important;
}

.my-2 {
  margin-top: 0.5rem !important;
  margin-bottom: 0.5rem !important;
}

.my-3 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}

.my-4 {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important;
}

.my-5 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}

.my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important;
}

.mt-0 {
  margin-top: 0 !important;
}

.mt-1 {
  margin-top: 0.25rem !important;
}

.mt-2 {
  margin-top: 0.5rem !important;
}

.mt-3 {
  margin-top: 1rem !important;
}

.mt-4 {
  margin-top: 1.5rem !important;
}

.mt-5 {
  margin-top: 3rem !important;
}

.mt-auto {
  margin-top: auto !important;
}

.me-0 {
  margin-right: 0 !important;
}

.me-1 {
  margin-right: 0.25rem !important;
}

.me-2 {
  margin-right: 0.5rem !important;
}

.me-3 {
  margin-right: 1rem !important;
}

.me-4 {
  margin-right: 1.5rem !important;
}

.me-5 {
  margin-right: 3rem !important;
}

.me-auto {
  margin-right: auto !important;
}

.mb-0 {
  margin-bottom: 0 !important;
}

.mb-1 {
  margin-bottom: 0.25rem !important;
}

.mb-2 {
  margin-bottom: 0.5rem !important;
}

.mb-3 {
  margin-bottom: 1rem !important;
}

.mb-4 {
  margin-bottom: 1.5rem !important;
}

.mb-5 {
  margin-bottom: 3rem !important;
}

.mb-auto {
  margin-bottom: auto !important;
}

.ms-0 {
  margin-left: 0 !important;
}

.ms-1 {
  margin-left: 0.25rem !important;
}

.ms-2 {
  margin-left: 0.5rem !important;
}

.ms-3 {
  margin-left: 1rem !important;
}

.ms-4 {
  margin-left: 1.5rem !important;
}

.ms-5 {
  margin-left: 3rem !important;
}

.ms-auto {
  margin-left: auto !important;
}

.p-0 {
  padding: 0 !important;
}

.p-1 {
  padding: 0.25rem !important;
}

.p-2 {
  padding: 0.5rem !important;
}

.p-3 {
  padding: 1rem !important;
}

.p-4 {
  padding: 1.5rem !important;
}

.p-5 {
  padding: 3rem !important;
}

.px-0 {
  padding-right: 0 !important;
  padding-left: 0 !important;
}

.px-1 {
  padding-right: 0.25rem !important;
  padding-left: 0.25rem !important;
}

.px-2 {
  padding-right: 0.5rem !important;
  padding-left: 0.5rem !important;
}

.px-3 {
  padding-right: 1rem !important;
  padding-left: 1rem !important;
}

.px-4 {
  padding-right: 1.5rem !important;
  padding-left: 1.5rem !important;
}

.px-5 {
  padding-right: 3rem !important;
  padding-left: 3rem !important;
}

.py-0 {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.py-1 {
  padding-top: 0.25rem !important;
  padding-bottom: 0.25rem !important;
}

.py-2 {
  padding-top: 0.5rem !important;
  padding-bottom: 0.5rem !important;
}

.py-3 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important;
}

.py-4 {
  padding-top: 1.5rem !important;
  padding-bottom: 1.5rem !important;
}

.py-5 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important;
}

.pt-0 {
  padding-top: 0 !important;
}

.pt-1 {
  padding-top: 0.25rem !important;
}

.pt-2 {
  padding-top: 0.5rem !important;
}

.pt-3 {
  padding-top: 1rem !important;
}

.pt-4 {
  padding-top: 1.5rem !important;
}

.pt-5 {
  padding-top: 3rem !important;
}

.pe-0 {
  padding-right: 0 !important;
}

.pe-1 {
  padding-right: 0.25rem !important;
}

.pe-2 {
  padding-right: 0.5rem !important;
}

.pe-3 {
  padding-right: 1rem !important;
}

.pe-4 {
  padding-right: 1.5rem !important;
}

.pe-5 {
  padding-right: 3rem !important;
}

.pb-0 {
  padding-bottom: 0 !important;
}

.pb-1 {
  padding-bottom: 0.25rem !important;
}

.pb-2 {
  padding-bottom: 0.5rem !important;
}

.pb-3 {
  padding-bottom: 1rem !important;
}

.pb-4 {
  padding-bottom: 1.5rem !important;
}

.pb-5 {
  padding-bottom: 3rem !important;
}

.ps-0 {
  padding-left: 0 !important;
}

.ps-1 {
  padding-left: 0.25rem !important;
}

.ps-2 {
  padding-left: 0.5rem !important;
}

.ps-3 {
  padding-left: 1rem !important;
}

.ps-4 {
  padding-left: 1.5rem !important;
}

.ps-5 {
  padding-left: 3rem !important;
}

@media (min-width: 576px) {
  .d-sm-inline {
    display: inline !important;
  }
  .d-sm-inline-block {
    display: inline-block !important;
  }
  .d-sm-block {
    display: block !important;
  }
  .d-sm-grid {
    display: grid !important;
  }
  .d-sm-inline-grid {
    display: inline-grid !important;
  }
  .d-sm-table {
    display: table !important;
  }
  .d-sm-table-row {
    display: table-row !important;
  }
  .d-sm-table-cell {
    display: table-cell !important;
  }
  .d-sm-flex {
    display: flex !important;
  }
  .d-sm-inline-flex {
    display: inline-flex !important;
  }
  .d-sm-none {
    display: none !important;
  }
  .flex-sm-fill {
    flex: 1 1 auto !important;
  }
  .flex-sm-row {
    flex-direction: row !important;
  }
  .flex-sm-column {
    flex-direction: column !important;
  }
  .flex-sm-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-sm-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-sm-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-sm-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-sm-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-sm-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-sm-wrap {
    flex-wrap: wrap !important;
  }
  .flex-sm-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-sm-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-sm-start {
    justify-content: flex-start !important;
  }
  .justify-content-sm-end {
    justify-content: flex-end !important;
  }
  .justify-content-sm-center {
    justify-content: center !important;
  }
  .justify-content-sm-between {
    justify-content: space-between !important;
  }
  .justify-content-sm-around {
    justify-content: space-around !important;
  }
  .justify-content-sm-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-sm-start {
    align-items: flex-start !important;
  }
  .align-items-sm-end {
    align-items: flex-end !important;
  }
  .align-items-sm-center {
    align-items: center !important;
  }
  .align-items-sm-baseline {
    align-items: baseline !important;
  }
  .align-items-sm-stretch {
    align-items: stretch !important;
  }
  .align-content-sm-start {
    align-content: flex-start !important;
  }
  .align-content-sm-end {
    align-content: flex-end !important;
  }
  .align-content-sm-center {
    align-content: center !important;
  }
  .align-content-sm-between {
    align-content: space-between !important;
  }
  .align-content-sm-around {
    align-content: space-around !important;
  }
  .align-content-sm-stretch {
    align-content: stretch !important;
  }
  .align-self-sm-auto {
    align-self: auto !important;
  }
  .align-self-sm-start {
    align-self: flex-start !important;
  }
  .align-self-sm-end {
    align-self: flex-end !important;
  }
  .align-self-sm-center {
    align-self: center !important;
  }
  .align-self-sm-baseline {
    align-self: baseline !important;
  }
  .align-self-sm-stretch {
    align-self: stretch !important;
  }
  .order-sm-first {
    order: -1 !important;
  }
  .order-sm-0 {
    order: 0 !important;
  }
  .order-sm-1 {
    order: 1 !important;
  }
  .order-sm-2 {
    order: 2 !important;
  }
  .order-sm-3 {
    order: 3 !important;
  }
  .order-sm-4 {
    order: 4 !important;
  }
  .order-sm-5 {
    order: 5 !important;
  }
  .order-sm-last {
    order: 6 !important;
  }
  .m-sm-0 {
    margin: 0 !important;
  }
  .m-sm-1 {
    margin: 0.25rem !important;
  }
  .m-sm-2 {
    margin: 0.5rem !important;
  }
  .m-sm-3 {
    margin: 1rem !important;
  }
  .m-sm-4 {
    margin: 1.5rem !important;
  }
  .m-sm-5 {
    margin: 3rem !important;
  }
  .m-sm-auto {
    margin: auto !important;
  }
  .mx-sm-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-sm-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-sm-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-sm-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-sm-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-sm-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-sm-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-sm-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-sm-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-sm-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-sm-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-sm-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-sm-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-sm-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-sm-0 {
    margin-top: 0 !important;
  }
  .mt-sm-1 {
    margin-top: 0.25rem !important;
  }
  .mt-sm-2 {
    margin-top: 0.5rem !important;
  }
  .mt-sm-3 {
    margin-top: 1rem !important;
  }
  .mt-sm-4 {
    margin-top: 1.5rem !important;
  }
  .mt-sm-5 {
    margin-top: 3rem !important;
  }
  .mt-sm-auto {
    margin-top: auto !important;
  }
  .me-sm-0 {
    margin-right: 0 !important;
  }
  .me-sm-1 {
    margin-right: 0.25rem !important;
  }
  .me-sm-2 {
    margin-right: 0.5rem !important;
  }
  .me-sm-3 {
    margin-right: 1rem !important;
  }
  .me-sm-4 {
    margin-right: 1.5rem !important;
  }
  .me-sm-5 {
    margin-right: 3rem !important;
  }
  .me-sm-auto {
    margin-right: auto !important;
  }
  .mb-sm-0 {
    margin-bottom: 0 !important;
  }
  .mb-sm-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-sm-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-sm-3 {
    margin-bottom: 1rem !important;
  }
  .mb-sm-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-sm-5 {
    margin-bottom: 3rem !important;
  }
  .mb-sm-auto {
    margin-bottom: auto !important;
  }
  .ms-sm-0 {
    margin-left: 0 !important;
  }
  .ms-sm-1 {
    margin-left: 0.25rem !important;
  }
  .ms-sm-2 {
    margin-left: 0.5rem !important;
  }
  .ms-sm-3 {
    margin-left: 1rem !important;
  }
  .ms-sm-4 {
    margin-left: 1.5rem !important;
  }
  .ms-sm-5 {
    margin-left: 3rem !important;
  }
  .ms-sm-auto {
    margin-left: auto !important;
  }
  .p-sm-0 {
    padding: 0 !important;
  }
  .p-sm-1 {
    padding: 0.25rem !important;
  }
  .p-sm-2 {
    padding: 0.5rem !important;
  }
  .p-sm-3 {
    padding: 1rem !important;
  }
  .p-sm-4 {
    padding: 1.5rem !important;
  }
  .p-sm-5 {
    padding: 3rem !important;
  }
  .px-sm-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-sm-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-sm-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-sm-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-sm-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-sm-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-sm-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-sm-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-sm-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-sm-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-sm-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-sm-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-sm-0 {
    padding-top: 0 !important;
  }
  .pt-sm-1 {
    padding-top: 0.25rem !important;
  }
  .pt-sm-2 {
    padding-top: 0.5rem !important;
  }
  .pt-sm-3 {
    padding-top: 1rem !important;
  }
  .pt-sm-4 {
    padding-top: 1.5rem !important;
  }
  .pt-sm-5 {
    padding-top: 3rem !important;
  }
  .pe-sm-0 {
    padding-right: 0 !important;
  }
  .pe-sm-1 {
    padding-right: 0.25rem !important;
  }
  .pe-sm-2 {
    padding-right: 0.5rem !important;
  }
  .pe-sm-3 {
    padding-right: 1rem !important;
  }
  .pe-sm-4 {
    padding-right: 1.5rem !important;
  }
  .pe-sm-5 {
    padding-right: 3rem !important;
  }
  .pb-sm-0 {
    padding-bottom: 0 !important;
  }
  .pb-sm-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-sm-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-sm-3 {
    padding-bottom: 1rem !important;
  }
  .pb-sm-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-sm-5 {
    padding-bottom: 3rem !important;
  }
  .ps-sm-0 {
    padding-left: 0 !important;
  }
  .ps-sm-1 {
    padding-left: 0.25rem !important;
  }
  .ps-sm-2 {
    padding-left: 0.5rem !important;
  }
  .ps-sm-3 {
    padding-left: 1rem !important;
  }
  .ps-sm-4 {
    padding-left: 1.5rem !important;
  }
  .ps-sm-5 {
    padding-left: 3rem !important;
  }
}
@media (min-width: 768px) {
  .d-md-inline {
    display: inline !important;
  }
  .d-md-inline-block {
    display: inline-block !important;
  }
  .d-md-block {
    display: block !important;
  }
  .d-md-grid {
    display: grid !important;
  }
  .d-md-inline-grid {
    display: inline-grid !important;
  }
  .d-md-table {
    display: table !important;
  }
  .d-md-table-row {
    display: table-row !important;
  }
  .d-md-table-cell {
    display: table-cell !important;
  }
  .d-md-flex {
    display: flex !important;
  }
  .d-md-inline-flex {
    display: inline-flex !important;
  }
  .d-md-none {
    display: none !important;
  }
  .flex-md-fill {
    flex: 1 1 auto !important;
  }
  .flex-md-row {
    flex-direction: row !important;
  }
  .flex-md-column {
    flex-direction: column !important;
  }
  .flex-md-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-md-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-md-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-md-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-md-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-md-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-md-wrap {
    flex-wrap: wrap !important;
  }
  .flex-md-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-md-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-md-start {
    justify-content: flex-start !important;
  }
  .justify-content-md-end {
    justify-content: flex-end !important;
  }
  .justify-content-md-center {
    justify-content: center !important;
  }
  .justify-content-md-between {
    justify-content: space-between !important;
  }
  .justify-content-md-around {
    justify-content: space-around !important;
  }
  .justify-content-md-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-md-start {
    align-items: flex-start !important;
  }
  .align-items-md-end {
    align-items: flex-end !important;
  }
  .align-items-md-center {
    align-items: center !important;
  }
  .align-items-md-baseline {
    align-items: baseline !important;
  }
  .align-items-md-stretch {
    align-items: stretch !important;
  }
  .align-content-md-start {
    align-content: flex-start !important;
  }
  .align-content-md-end {
    align-content: flex-end !important;
  }
  .align-content-md-center {
    align-content: center !important;
  }
  .align-content-md-between {
    align-content: space-between !important;
  }
  .align-content-md-around {
    align-content: space-around !important;
  }
  .align-content-md-stretch {
    align-content: stretch !important;
  }
  .align-self-md-auto {
    align-self: auto !important;
  }
  .align-self-md-start {
    align-self: flex-start !important;
  }
  .align-self-md-end {
    align-self: flex-end !important;
  }
  .align-self-md-center {
    align-self: center !important;
  }
  .align-self-md-baseline {
    align-self: baseline !important;
  }
  .align-self-md-stretch {
    align-self: stretch !important;
  }
  .order-md-first {
    order: -1 !important;
  }
  .order-md-0 {
    order: 0 !important;
  }
  .order-md-1 {
    order: 1 !important;
  }
  .order-md-2 {
    order: 2 !important;
  }
  .order-md-3 {
    order: 3 !important;
  }
  .order-md-4 {
    order: 4 !important;
  }
  .order-md-5 {
    order: 5 !important;
  }
  .order-md-last {
    order: 6 !important;
  }
  .m-md-0 {
    margin: 0 !important;
  }
  .m-md-1 {
    margin: 0.25rem !important;
  }
  .m-md-2 {
    margin: 0.5rem !important;
  }
  .m-md-3 {
    margin: 1rem !important;
  }
  .m-md-4 {
    margin: 1.5rem !important;
  }
  .m-md-5 {
    margin: 3rem !important;
  }
  .m-md-auto {
    margin: auto !important;
  }
  .mx-md-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-md-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-md-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-md-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-md-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-md-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-md-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-md-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-md-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-md-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-md-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-md-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-md-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-md-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-md-0 {
    margin-top: 0 !important;
  }
  .mt-md-1 {
    margin-top: 0.25rem !important;
  }
  .mt-md-2 {
    margin-top: 0.5rem !important;
  }
  .mt-md-3 {
    margin-top: 1rem !important;
  }
  .mt-md-4 {
    margin-top: 1.5rem !important;
  }
  .mt-md-5 {
    margin-top: 3rem !important;
  }
  .mt-md-auto {
    margin-top: auto !important;
  }
  .me-md-0 {
    margin-right: 0 !important;
  }
  .me-md-1 {
    margin-right: 0.25rem !important;
  }
  .me-md-2 {
    margin-right: 0.5rem !important;
  }
  .me-md-3 {
    margin-right: 1rem !important;
  }
  .me-md-4 {
    margin-right: 1.5rem !important;
  }
  .me-md-5 {
    margin-right: 3rem !important;
  }
  .me-md-auto {
    margin-right: auto !important;
  }
  .mb-md-0 {
    margin-bottom: 0 !important;
  }
  .mb-md-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-md-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-md-3 {
    margin-bottom: 1rem !important;
  }
  .mb-md-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-md-5 {
    margin-bottom: 3rem !important;
  }
  .mb-md-auto {
    margin-bottom: auto !important;
  }
  .ms-md-0 {
    margin-left: 0 !important;
  }
  .ms-md-1 {
    margin-left: 0.25rem !important;
  }
  .ms-md-2 {
    margin-left: 0.5rem !important;
  }
  .ms-md-3 {
    margin-left: 1rem !important;
  }
  .ms-md-4 {
    margin-left: 1.5rem !important;
  }
  .ms-md-5 {
    margin-left: 3rem !important;
  }
  .ms-md-auto {
    margin-left: auto !important;
  }
  .p-md-0 {
    padding: 0 !important;
  }
  .p-md-1 {
    padding: 0.25rem !important;
  }
  .p-md-2 {
    padding: 0.5rem !important;
  }
  .p-md-3 {
    padding: 1rem !important;
  }
  .p-md-4 {
    padding: 1.5rem !important;
  }
  .p-md-5 {
    padding: 3rem !important;
  }
  .px-md-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-md-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-md-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-md-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-md-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-md-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-md-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-md-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-md-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-md-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-md-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-md-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-md-0 {
    padding-top: 0 !important;
  }
  .pt-md-1 {
    padding-top: 0.25rem !important;
  }
  .pt-md-2 {
    padding-top: 0.5rem !important;
  }
  .pt-md-3 {
    padding-top: 1rem !important;
  }
  .pt-md-4 {
    padding-top: 1.5rem !important;
  }
  .pt-md-5 {
    padding-top: 3rem !important;
  }
  .pe-md-0 {
    padding-right: 0 !important;
  }
  .pe-md-1 {
    padding-right: 0.25rem !important;
  }
  .pe-md-2 {
    padding-right: 0.5rem !important;
  }
  .pe-md-3 {
    padding-right: 1rem !important;
  }
  .pe-md-4 {
    padding-right: 1.5rem !important;
  }
  .pe-md-5 {
    padding-right: 3rem !important;
  }
  .pb-md-0 {
    padding-bottom: 0 !important;
  }
  .pb-md-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-md-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-md-3 {
    padding-bottom: 1rem !important;
  }
  .pb-md-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-md-5 {
    padding-bottom: 3rem !important;
  }
  .ps-md-0 {
    padding-left: 0 !important;
  }
  .ps-md-1 {
    padding-left: 0.25rem !important;
  }
  .ps-md-2 {
    padding-left: 0.5rem !important;
  }
  .ps-md-3 {
    padding-left: 1rem !important;
  }
  .ps-md-4 {
    padding-left: 1.5rem !important;
  }
  .ps-md-5 {
    padding-left: 3rem !important;
  }
}
@media (min-width: 992px) {
  .d-lg-inline {
    display: inline !important;
  }
  .d-lg-inline-block {
    display: inline-block !important;
  }
  .d-lg-block {
    display: block !important;
  }
  .d-lg-grid {
    display: grid !important;
  }
  .d-lg-inline-grid {
    display: inline-grid !important;
  }
  .d-lg-table {
    display: table !important;
  }
  .d-lg-table-row {
    display: table-row !important;
  }
  .d-lg-table-cell {
    display: table-cell !important;
  }
  .d-lg-flex {
    display: flex !important;
  }
  .d-lg-inline-flex {
    display: inline-flex !important;
  }
  .d-lg-none {
    display: none !important;
  }
  .flex-lg-fill {
    flex: 1 1 auto !important;
  }
  .flex-lg-row {
    flex-direction: row !important;
  }
  .flex-lg-column {
    flex-direction: column !important;
  }
  .flex-lg-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-lg-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-lg-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-lg-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-lg-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-lg-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-lg-wrap {
    flex-wrap: wrap !important;
  }
  .flex-lg-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-lg-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-lg-start {
    justify-content: flex-start !important;
  }
  .justify-content-lg-end {
    justify-content: flex-end !important;
  }
  .justify-content-lg-center {
    justify-content: center !important;
  }
  .justify-content-lg-between {
    justify-content: space-between !important;
  }
  .justify-content-lg-around {
    justify-content: space-around !important;
  }
  .justify-content-lg-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-lg-start {
    align-items: flex-start !important;
  }
  .align-items-lg-end {
    align-items: flex-end !important;
  }
  .align-items-lg-center {
    align-items: center !important;
  }
  .align-items-lg-baseline {
    align-items: baseline !important;
  }
  .align-items-lg-stretch {
    align-items: stretch !important;
  }
  .align-content-lg-start {
    align-content: flex-start !important;
  }
  .align-content-lg-end {
    align-content: flex-end !important;
  }
  .align-content-lg-center {
    align-content: center !important;
  }
  .align-content-lg-between {
    align-content: space-between !important;
  }
  .align-content-lg-around {
    align-content: space-around !important;
  }
  .align-content-lg-stretch {
    align-content: stretch !important;
  }
  .align-self-lg-auto {
    align-self: auto !important;
  }
  .align-self-lg-start {
    align-self: flex-start !important;
  }
  .align-self-lg-end {
    align-self: flex-end !important;
  }
  .align-self-lg-center {
    align-self: center !important;
  }
  .align-self-lg-baseline {
    align-self: baseline !important;
  }
  .align-self-lg-stretch {
    align-self: stretch !important;
  }
  .order-lg-first {
    order: -1 !important;
  }
  .order-lg-0 {
    order: 0 !important;
  }
  .order-lg-1 {
    order: 1 !important;
  }
  .order-lg-2 {
    order: 2 !important;
  }
  .order-lg-3 {
    order: 3 !important;
  }
  .order-lg-4 {
    order: 4 !important;
  }
  .order-lg-5 {
    order: 5 !important;
  }
  .order-lg-last {
    order: 6 !important;
  }
  .m-lg-0 {
    margin: 0 !important;
  }
  .m-lg-1 {
    margin: 0.25rem !important;
  }
  .m-lg-2 {
    margin: 0.5rem !important;
  }
  .m-lg-3 {
    margin: 1rem !important;
  }
  .m-lg-4 {
    margin: 1.5rem !important;
  }
  .m-lg-5 {
    margin: 3rem !important;
  }
  .m-lg-auto {
    margin: auto !important;
  }
  .mx-lg-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-lg-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-lg-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-lg-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-lg-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-lg-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-lg-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-lg-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-lg-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-lg-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-lg-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-lg-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-lg-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-lg-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-lg-0 {
    margin-top: 0 !important;
  }
  .mt-lg-1 {
    margin-top: 0.25rem !important;
  }
  .mt-lg-2 {
    margin-top: 0.5rem !important;
  }
  .mt-lg-3 {
    margin-top: 1rem !important;
  }
  .mt-lg-4 {
    margin-top: 1.5rem !important;
  }
  .mt-lg-5 {
    margin-top: 3rem !important;
  }
  .mt-lg-auto {
    margin-top: auto !important;
  }
  .me-lg-0 {
    margin-right: 0 !important;
  }
  .me-lg-1 {
    margin-right: 0.25rem !important;
  }
  .me-lg-2 {
    margin-right: 0.5rem !important;
  }
  .me-lg-3 {
    margin-right: 1rem !important;
  }
  .me-lg-4 {
    margin-right: 1.5rem !important;
  }
  .me-lg-5 {
    margin-right: 3rem !important;
  }
  .me-lg-auto {
    margin-right: auto !important;
  }
  .mb-lg-0 {
    margin-bottom: 0 !important;
  }
  .mb-lg-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-lg-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-lg-3 {
    margin-bottom: 1rem !important;
  }
  .mb-lg-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-lg-5 {
    margin-bottom: 3rem !important;
  }
  .mb-lg-auto {
    margin-bottom: auto !important;
  }
  .ms-lg-0 {
    margin-left: 0 !important;
  }
  .ms-lg-1 {
    margin-left: 0.25rem !important;
  }
  .ms-lg-2 {
    margin-left: 0.5rem !important;
  }
  .ms-lg-3 {
    margin-left: 1rem !important;
  }
  .ms-lg-4 {
    margin-left: 1.5rem !important;
  }
  .ms-lg-5 {
    margin-left: 3rem !important;
  }
  .ms-lg-auto {
    margin-left: auto !important;
  }
  .p-lg-0 {
    padding: 0 !important;
  }
  .p-lg-1 {
    padding: 0.25rem !important;
  }
  .p-lg-2 {
    padding: 0.5rem !important;
  }
  .p-lg-3 {
    padding: 1rem !important;
  }
  .p-lg-4 {
    padding: 1.5rem !important;
  }
  .p-lg-5 {
    padding: 3rem !important;
  }
  .px-lg-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-lg-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-lg-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-lg-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-lg-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-lg-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-lg-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-lg-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-lg-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-lg-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-lg-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-lg-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-lg-0 {
    padding-top: 0 !important;
  }
  .pt-lg-1 {
    padding-top: 0.25rem !important;
  }
  .pt-lg-2 {
    padding-top: 0.5rem !important;
  }
  .pt-lg-3 {
    padding-top: 1rem !important;
  }
  .pt-lg-4 {
    padding-top: 1.5rem !important;
  }
  .pt-lg-5 {
    padding-top: 3rem !important;
  }
  .pe-lg-0 {
    padding-right: 0 !important;
  }
  .pe-lg-1 {
    padding-right: 0.25rem !important;
  }
  .pe-lg-2 {
    padding-right: 0.5rem !important;
  }
  .pe-lg-3 {
    padding-right: 1rem !important;
  }
  .pe-lg-4 {
    padding-right: 1.5rem !important;
  }
  .pe-lg-5 {
    padding-right: 3rem !important;
  }
  .pb-lg-0 {
    padding-bottom: 0 !important;
  }
  .pb-lg-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-lg-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-lg-3 {
    padding-bottom: 1rem !important;
  }
  .pb-lg-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-lg-5 {
    padding-bottom: 3rem !important;
  }
  .ps-lg-0 {
    padding-left: 0 !important;
  }
  .ps-lg-1 {
    padding-left: 0.25rem !important;
  }
  .ps-lg-2 {
    padding-left: 0.5rem !important;
  }
  .ps-lg-3 {
    padding-left: 1rem !important;
  }
  .ps-lg-4 {
    padding-left: 1.5rem !important;
  }
  .ps-lg-5 {
    padding-left: 3rem !important;
  }
}
@media (min-width: 1200px) {
  .d-xl-inline {
    display: inline !important;
  }
  .d-xl-inline-block {
    display: inline-block !important;
  }
  .d-xl-block {
    display: block !important;
  }
  .d-xl-grid {
    display: grid !important;
  }
  .d-xl-inline-grid {
    display: inline-grid !important;
  }
  .d-xl-table {
    display: table !important;
  }
  .d-xl-table-row {
    display: table-row !important;
  }
  .d-xl-table-cell {
    display: table-cell !important;
  }
  .d-xl-flex {
    display: flex !important;
  }
  .d-xl-inline-flex {
    display: inline-flex !important;
  }
  .d-xl-none {
    display: none !important;
  }
  .flex-xl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xl-row {
    flex-direction: row !important;
  }
  .flex-xl-column {
    flex-direction: column !important;
  }
  .flex-xl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xl-center {
    justify-content: center !important;
  }
  .justify-content-xl-between {
    justify-content: space-between !important;
  }
  .justify-content-xl-around {
    justify-content: space-around !important;
  }
  .justify-content-xl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xl-start {
    align-items: flex-start !important;
  }
  .align-items-xl-end {
    align-items: flex-end !important;
  }
  .align-items-xl-center {
    align-items: center !important;
  }
  .align-items-xl-baseline {
    align-items: baseline !important;
  }
  .align-items-xl-stretch {
    align-items: stretch !important;
  }
  .align-content-xl-start {
    align-content: flex-start !important;
  }
  .align-content-xl-end {
    align-content: flex-end !important;
  }
  .align-content-xl-center {
    align-content: center !important;
  }
  .align-content-xl-between {
    align-content: space-between !important;
  }
  .align-content-xl-around {
    align-content: space-around !important;
  }
  .align-content-xl-stretch {
    align-content: stretch !important;
  }
  .align-self-xl-auto {
    align-self: auto !important;
  }
  .align-self-xl-start {
    align-self: flex-start !important;
  }
  .align-self-xl-end {
    align-self: flex-end !important;
  }
  .align-self-xl-center {
    align-self: center !important;
  }
  .align-self-xl-baseline {
    align-self: baseline !important;
  }
  .align-self-xl-stretch {
    align-self: stretch !important;
  }
  .order-xl-first {
    order: -1 !important;
  }
  .order-xl-0 {
    order: 0 !important;
  }
  .order-xl-1 {
    order: 1 !important;
  }
  .order-xl-2 {
    order: 2 !important;
  }
  .order-xl-3 {
    order: 3 !important;
  }
  .order-xl-4 {
    order: 4 !important;
  }
  .order-xl-5 {
    order: 5 !important;
  }
  .order-xl-last {
    order: 6 !important;
  }
  .m-xl-0 {
    margin: 0 !important;
  }
  .m-xl-1 {
    margin: 0.25rem !important;
  }
  .m-xl-2 {
    margin: 0.5rem !important;
  }
  .m-xl-3 {
    margin: 1rem !important;
  }
  .m-xl-4 {
    margin: 1.5rem !important;
  }
  .m-xl-5 {
    margin: 3rem !important;
  }
  .m-xl-auto {
    margin: auto !important;
  }
  .mx-xl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xl-0 {
    margin-top: 0 !important;
  }
  .mt-xl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xl-3 {
    margin-top: 1rem !important;
  }
  .mt-xl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xl-5 {
    margin-top: 3rem !important;
  }
  .mt-xl-auto {
    margin-top: auto !important;
  }
  .me-xl-0 {
    margin-right: 0 !important;
  }
  .me-xl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xl-3 {
    margin-right: 1rem !important;
  }
  .me-xl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xl-5 {
    margin-right: 3rem !important;
  }
  .me-xl-auto {
    margin-right: auto !important;
  }
  .mb-xl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xl-auto {
    margin-bottom: auto !important;
  }
  .ms-xl-0 {
    margin-left: 0 !important;
  }
  .ms-xl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xl-3 {
    margin-left: 1rem !important;
  }
  .ms-xl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xl-5 {
    margin-left: 3rem !important;
  }
  .ms-xl-auto {
    margin-left: auto !important;
  }
  .p-xl-0 {
    padding: 0 !important;
  }
  .p-xl-1 {
    padding: 0.25rem !important;
  }
  .p-xl-2 {
    padding: 0.5rem !important;
  }
  .p-xl-3 {
    padding: 1rem !important;
  }
  .p-xl-4 {
    padding: 1.5rem !important;
  }
  .p-xl-5 {
    padding: 3rem !important;
  }
  .px-xl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xl-0 {
    padding-top: 0 !important;
  }
  .pt-xl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xl-3 {
    padding-top: 1rem !important;
  }
  .pt-xl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xl-5 {
    padding-top: 3rem !important;
  }
  .pe-xl-0 {
    padding-right: 0 !important;
  }
  .pe-xl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xl-3 {
    padding-right: 1rem !important;
  }
  .pe-xl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xl-5 {
    padding-right: 3rem !important;
  }
  .pb-xl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xl-0 {
    padding-left: 0 !important;
  }
  .ps-xl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xl-3 {
    padding-left: 1rem !important;
  }
  .ps-xl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xl-5 {
    padding-left: 3rem !important;
  }
}
@media (min-width: 1400px) {
  .d-xxl-inline {
    display: inline !important;
  }
  .d-xxl-inline-block {
    display: inline-block !important;
  }
  .d-xxl-block {
    display: block !important;
  }
  .d-xxl-grid {
    display: grid !important;
  }
  .d-xxl-inline-grid {
    display: inline-grid !important;
  }
  .d-xxl-table {
    display: table !important;
  }
  .d-xxl-table-row {
    display: table-row !important;
  }
  .d-xxl-table-cell {
    display: table-cell !important;
  }
  .d-xxl-flex {
    display: flex !important;
  }
  .d-xxl-inline-flex {
    display: inline-flex !important;
  }
  .d-xxl-none {
    display: none !important;
  }
  .flex-xxl-fill {
    flex: 1 1 auto !important;
  }
  .flex-xxl-row {
    flex-direction: row !important;
  }
  .flex-xxl-column {
    flex-direction: column !important;
  }
  .flex-xxl-row-reverse {
    flex-direction: row-reverse !important;
  }
  .flex-xxl-column-reverse {
    flex-direction: column-reverse !important;
  }
  .flex-xxl-grow-0 {
    flex-grow: 0 !important;
  }
  .flex-xxl-grow-1 {
    flex-grow: 1 !important;
  }
  .flex-xxl-shrink-0 {
    flex-shrink: 0 !important;
  }
  .flex-xxl-shrink-1 {
    flex-shrink: 1 !important;
  }
  .flex-xxl-wrap {
    flex-wrap: wrap !important;
  }
  .flex-xxl-nowrap {
    flex-wrap: nowrap !important;
  }
  .flex-xxl-wrap-reverse {
    flex-wrap: wrap-reverse !important;
  }
  .justify-content-xxl-start {
    justify-content: flex-start !important;
  }
  .justify-content-xxl-end {
    justify-content: flex-end !important;
  }
  .justify-content-xxl-center {
    justify-content: center !important;
  }
  .justify-content-xxl-between {
    justify-content: space-between !important;
  }
  .justify-content-xxl-around {
    justify-content: space-around !important;
  }
  .justify-content-xxl-evenly {
    justify-content: space-evenly !important;
  }
  .align-items-xxl-start {
    align-items: flex-start !important;
  }
  .align-items-xxl-end {
    align-items: flex-end !important;
  }
  .align-items-xxl-center {
    align-items: center !important;
  }
  .align-items-xxl-baseline {
    align-items: baseline !important;
  }
  .align-items-xxl-stretch {
    align-items: stretch !important;
  }
  .align-content-xxl-start {
    align-content: flex-start !important;
  }
  .align-content-xxl-end {
    align-content: flex-end !important;
  }
  .align-content-xxl-center {
    align-content: center !important;
  }
  .align-content-xxl-between {
    align-content: space-between !important;
  }
  .align-content-xxl-around {
    align-content: space-around !important;
  }
  .align-content-xxl-stretch {
    align-content: stretch !important;
  }
  .align-self-xxl-auto {
    align-self: auto !important;
  }
  .align-self-xxl-start {
    align-self: flex-start !important;
  }
  .align-self-xxl-end {
    align-self: flex-end !important;
  }
  .align-self-xxl-center {
    align-self: center !important;
  }
  .align-self-xxl-baseline {
    align-self: baseline !important;
  }
  .align-self-xxl-stretch {
    align-self: stretch !important;
  }
  .order-xxl-first {
    order: -1 !important;
  }
  .order-xxl-0 {
    order: 0 !important;
  }
  .order-xxl-1 {
    order: 1 !important;
  }
  .order-xxl-2 {
    order: 2 !important;
  }
  .order-xxl-3 {
    order: 3 !important;
  }
  .order-xxl-4 {
    order: 4 !important;
  }
  .order-xxl-5 {
    order: 5 !important;
  }
  .order-xxl-last {
    order: 6 !important;
  }
  .m-xxl-0 {
    margin: 0 !important;
  }
  .m-xxl-1 {
    margin: 0.25rem !important;
  }
  .m-xxl-2 {
    margin: 0.5rem !important;
  }
  .m-xxl-3 {
    margin: 1rem !important;
  }
  .m-xxl-4 {
    margin: 1.5rem !important;
  }
  .m-xxl-5 {
    margin: 3rem !important;
  }
  .m-xxl-auto {
    margin: auto !important;
  }
  .mx-xxl-0 {
    margin-right: 0 !important;
    margin-left: 0 !important;
  }
  .mx-xxl-1 {
    margin-right: 0.25rem !important;
    margin-left: 0.25rem !important;
  }
  .mx-xxl-2 {
    margin-right: 0.5rem !important;
    margin-left: 0.5rem !important;
  }
  .mx-xxl-3 {
    margin-right: 1rem !important;
    margin-left: 1rem !important;
  }
  .mx-xxl-4 {
    margin-right: 1.5rem !important;
    margin-left: 1.5rem !important;
  }
  .mx-xxl-5 {
    margin-right: 3rem !important;
    margin-left: 3rem !important;
  }
  .mx-xxl-auto {
    margin-right: auto !important;
    margin-left: auto !important;
  }
  .my-xxl-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
  .my-xxl-1 {
    margin-top: 0.25rem !important;
    margin-bottom: 0.25rem !important;
  }
  .my-xxl-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
  }
  .my-xxl-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
  }
  .my-xxl-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
  }
  .my-xxl-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
  }
  .my-xxl-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
  }
  .mt-xxl-0 {
    margin-top: 0 !important;
  }
  .mt-xxl-1 {
    margin-top: 0.25rem !important;
  }
  .mt-xxl-2 {
    margin-top: 0.5rem !important;
  }
  .mt-xxl-3 {
    margin-top: 1rem !important;
  }
  .mt-xxl-4 {
    margin-top: 1.5rem !important;
  }
  .mt-xxl-5 {
    margin-top: 3rem !important;
  }
  .mt-xxl-auto {
    margin-top: auto !important;
  }
  .me-xxl-0 {
    margin-right: 0 !important;
  }
  .me-xxl-1 {
    margin-right: 0.25rem !important;
  }
  .me-xxl-2 {
    margin-right: 0.5rem !important;
  }
  .me-xxl-3 {
    margin-right: 1rem !important;
  }
  .me-xxl-4 {
    margin-right: 1.5rem !important;
  }
  .me-xxl-5 {
    margin-right: 3rem !important;
  }
  .me-xxl-auto {
    margin-right: auto !important;
  }
  .mb-xxl-0 {
    margin-bottom: 0 !important;
  }
  .mb-xxl-1 {
    margin-bottom: 0.25rem !important;
  }
  .mb-xxl-2 {
    margin-bottom: 0.5rem !important;
  }
  .mb-xxl-3 {
    margin-bottom: 1rem !important;
  }
  .mb-xxl-4 {
    margin-bottom: 1.5rem !important;
  }
  .mb-xxl-5 {
    margin-bottom: 3rem !important;
  }
  .mb-xxl-auto {
    margin-bottom: auto !important;
  }
  .ms-xxl-0 {
    margin-left: 0 !important;
  }
  .ms-xxl-1 {
    margin-left: 0.25rem !important;
  }
  .ms-xxl-2 {
    margin-left: 0.5rem !important;
  }
  .ms-xxl-3 {
    margin-left: 1rem !important;
  }
  .ms-xxl-4 {
    margin-left: 1.5rem !important;
  }
  .ms-xxl-5 {
    margin-left: 3rem !important;
  }
  .ms-xxl-auto {
    margin-left: auto !important;
  }
  .p-xxl-0 {
    padding: 0 !important;
  }
  .p-xxl-1 {
    padding: 0.25rem !important;
  }
  .p-xxl-2 {
    padding: 0.5rem !important;
  }
  .p-xxl-3 {
    padding: 1rem !important;
  }
  .p-xxl-4 {
    padding: 1.5rem !important;
  }
  .p-xxl-5 {
    padding: 3rem !important;
  }
  .px-xxl-0 {
    padding-right: 0 !important;
    padding-left: 0 !important;
  }
  .px-xxl-1 {
    padding-right: 0.25rem !important;
    padding-left: 0.25rem !important;
  }
  .px-xxl-2 {
    padding-right: 0.5rem !important;
    padding-left: 0.5rem !important;
  }
  .px-xxl-3 {
    padding-right: 1rem !important;
    padding-left: 1rem !important;
  }
  .px-xxl-4 {
    padding-right: 1.5rem !important;
    padding-left: 1.5rem !important;
  }
  .px-xxl-5 {
    padding-right: 3rem !important;
    padding-left: 3rem !important;
  }
  .py-xxl-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .py-xxl-1 {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  .py-xxl-2 {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
  }
  .py-xxl-3 {
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
  }
  .py-xxl-4 {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  .py-xxl-5 {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
  .pt-xxl-0 {
    padding-top: 0 !important;
  }
  .pt-xxl-1 {
    padding-top: 0.25rem !important;
  }
  .pt-xxl-2 {
    padding-top: 0.5rem !important;
  }
  .pt-xxl-3 {
    padding-top: 1rem !important;
  }
  .pt-xxl-4 {
    padding-top: 1.5rem !important;
  }
  .pt-xxl-5 {
    padding-top: 3rem !important;
  }
  .pe-xxl-0 {
    padding-right: 0 !important;
  }
  .pe-xxl-1 {
    padding-right: 0.25rem !important;
  }
  .pe-xxl-2 {
    padding-right: 0.5rem !important;
  }
  .pe-xxl-3 {
    padding-right: 1rem !important;
  }
  .pe-xxl-4 {
    padding-right: 1.5rem !important;
  }
  .pe-xxl-5 {
    padding-right: 3rem !important;
  }
  .pb-xxl-0 {
    padding-bottom: 0 !important;
  }
  .pb-xxl-1 {
    padding-bottom: 0.25rem !important;
  }
  .pb-xxl-2 {
    padding-bottom: 0.5rem !important;
  }
  .pb-xxl-3 {
    padding-bottom: 1rem !important;
  }
  .pb-xxl-4 {
    padding-bottom: 1.5rem !important;
  }
  .pb-xxl-5 {
    padding-bottom: 3rem !important;
  }
  .ps-xxl-0 {
    padding-left: 0 !important;
  }
  .ps-xxl-1 {
    padding-left: 0.25rem !important;
  }
  .ps-xxl-2 {
    padding-left: 0.5rem !important;
  }
  .ps-xxl-3 {
    padding-left: 1rem !important;
  }
  .ps-xxl-4 {
    padding-left: 1.5rem !important;
  }
  .ps-xxl-5 {
    padding-left: 3rem !important;
  }
}
@media print {
  .d-print-inline {
    display: inline !important;
  }
  .d-print-inline-block {
    display: inline-block !important;
  }
  .d-print-block {
    display: block !important;
  }
  .d-print-grid {
    display: grid !important;
  }
  .d-print-inline-grid {
    display: inline-grid !important;
  }
  .d-print-table {
    display: table !important;
  }
  .d-print-table-row {
    display: table-row !important;
  }
  .d-print-table-cell {
    display: table-cell !important;
  }
  .d-print-flex {
    display: flex !important;
  }
  .d-print-inline-flex {
    display: inline-flex !important;
  }
  .d-print-none {
    display: none !important;
  }
}

/*# sourceMappingURL=bootstrap-grid.css.map */

================================================
FILE: dist/css/bootstrap-grid.rtl.css
================================================
/*!
 * Bootstrap Grid v5.3.8 (https://getbootstrap.com/)
 * Copyright 2011-2025 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
.container,
.container-fluid,
.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  width: 100%;
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 576px) {
  .container-sm, .container {
    max-width: 540px;
  }
}
@media (min-width: 768px) {
  .container-md, .container-sm, .container {
    max-width: 720px;
  }
}
@media (min-width: 992px) {
  .container-lg, .container-md, .container-sm, .container {
    max-width: 960px;
  }
}
@media (min-width: 1200px) {
  .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1140px;
  }
}
@media (min-width: 1400px) {
  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
    max-width: 1320px;
  }
}
:root {
  --bs-breakpoint-xs: 0;
  --bs-breakpoint-sm: 576px;
  --bs-breakpoint-md: 768px;
  --bs-breakpoint-lg: 992px;
  --bs-breakpoint-xl: 1200px;
  --bs-breakpoint-xxl: 1400px;
}

.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
  margin-right: calc(-0.5 * var(--bs-gutter-x));
}
.row > * {
  box-sizing: border-box;
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

.col {
  flex: 1 0 0;
}

.row-cols-auto > * {
  flex: 0 0 auto;
  width: auto;
}

.row-cols-1 > * {
  flex: 0 0 auto;
  width: 100%;
}

.row-cols-2 > * {
  flex: 0 0 auto;
  width: 50%;
}

.row-cols-3 > * {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.row-cols-4 > * {
  flex: 0 0 auto;
  width: 25%;
}

.row-cols-5 > * {
  flex: 0 0 auto;
  width: 20%;
}

.row-cols-6 > * {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-auto {
  flex: 0 0 auto;
  width: auto;
}

.col-1 {
  flex: 0 0 auto;
  width: 8.33333333%;
}

.col-2 {
  flex: 0 0 auto;
  width: 16.66666667%;
}

.col-3 {
  flex: 0 0 auto;
  width: 25%;
}

.col-4 {
  flex: 0 0 auto;
  width: 33.33333333%;
}

.col-5 {
  flex: 0 0 auto;
  width: 41.66666667%;
}

.col-6 {
  flex: 0 0 auto;
  width: 50%;
}

.col-7 {
  flex: 0 0 auto;
  width: 58.33333333%;
}

.col-8 {
  flex: 0 0 auto;
  width: 66.66666667%;
}

.col-9 {
  flex: 0 0 auto;
  width: 75%;
}

.col-10 {
  flex: 0 0 auto;
  width: 83.33333333%;
}

.col-11 {
  flex: 0 0 auto;
  width: 91.66666667%;
}

.col-12 {
  flex: 0 0 auto;
  width: 100%;
}

.offset-1 {
  margin-right: 8.33333333%;
}

.offset-2 {
  margin-right: 16.66666667%;
}

.offset-3 {
  margin-right: 25%;
}

.offset-4 {
  margin-right: 33.33333333%;
}

.offset-5 {
  margin-right: 41.66666667%;
}

.offset-6 {
  margin-right: 50%;
}

.offset-7 {
  margin-right: 58.33333333%;
}

.offset-8 {
  margin-right: 66.66666667%;
}

.offset-9 {
  margin-right: 75%;
}

.offset-10 {
  margin-right: 83.33333333%;
}

.offset-11 {
  margin-right: 91.66666667%;
}

.g-0,
.gx-0 {
  --bs-gutter-x: 0;
}

.g-0,
.gy-0 {
  --bs-gutter-y: 0;
}

.g-1,
.gx-1 {
  --bs-gutter-x: 0.25rem;
}

.g-1,
.gy-1 {
  --bs-gutter-y: 0.25rem;
}

.g-2,
.gx-2 {
  --bs-gutter-x: 0.5rem;
}

.g-2,
.gy-2 {
  --bs-gutter-y: 0.5rem;
}

.g-3,
.gx-3 {
  --bs-gutter-x: 1rem;
}

.g-3,
.gy-3 {
  --bs-gutter-y: 1rem;
}

.g-4,
.gx-4 {
  --bs-gutter-x: 1.5rem;
}

.g-4,
.gy-4 {
  --bs-gutter-y: 1.5rem;
}

.g-5,
.gx-5 {
  --bs-gutter-x: 3rem;
}

.g-5,
.gy-5 {
  --bs-gutter-y: 3rem;
}

@media (min-width: 576px) {
  .col-sm {
    flex: 1 0 0;
  }
  .row-cols-sm-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-sm-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-sm-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-sm-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-sm-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-sm-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-sm-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-sm-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-sm-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-sm-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-sm-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-sm-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-sm-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-sm-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-sm-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-sm-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-sm-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-sm-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-sm-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-sm-0 {
    margin-right: 0;
  }
  .offset-sm-1 {
    margin-right: 8.33333333%;
  }
  .offset-sm-2 {
    margin-right: 16.66666667%;
  }
  .offset-sm-3 {
    margin-right: 25%;
  }
  .offset-sm-4 {
    margin-right: 33.33333333%;
  }
  .offset-sm-5 {
    margin-right: 41.66666667%;
  }
  .offset-sm-6 {
    margin-right: 50%;
  }
  .offset-sm-7 {
    margin-right: 58.33333333%;
  }
  .offset-sm-8 {
    margin-right: 66.66666667%;
  }
  .offset-sm-9 {
    margin-right: 75%;
  }
  .offset-sm-10 {
    margin-right: 83.33333333%;
  }
  .offset-sm-11 {
    margin-right: 91.66666667%;
  }
  .g-sm-0,
  .gx-sm-0 {
    --bs-gutter-x: 0;
  }
  .g-sm-0,
  .gy-sm-0 {
    --bs-gutter-y: 0;
  }
  .g-sm-1,
  .gx-sm-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-sm-1,
  .gy-sm-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-sm-2,
  .gx-sm-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-sm-2,
  .gy-sm-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-sm-3,
  .gx-sm-3 {
    --bs-gutter-x: 1rem;
  }
  .g-sm-3,
  .gy-sm-3 {
    --bs-gutter-y: 1rem;
  }
  .g-sm-4,
  .gx-sm-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-sm-4,
  .gy-sm-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-sm-5,
  .gx-sm-5 {
    --bs-gutter-x: 3rem;
  }
  .g-sm-5,
  .gy-sm-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 768px) {
  .col-md {
    flex: 1 0 0;
  }
  .row-cols-md-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-md-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-md-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-md-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-md-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-md-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-md-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-md-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-md-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-md-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-md-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-md-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-md-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-md-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-md-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-md-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-md-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-md-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-md-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-md-0 {
    margin-right: 0;
  }
  .offset-md-1 {
    margin-right: 8.33333333%;
  }
  .offset-md-2 {
    margin-right: 16.66666667%;
  }
  .offset-md-3 {
    margin-right: 25%;
  }
  .offset-md-4 {
    margin-right: 33.33333333%;
  }
  .offset-md-5 {
    margin-right: 41.66666667%;
  }
  .offset-md-6 {
    margin-right: 50%;
  }
  .offset-md-7 {
    margin-right: 58.33333333%;
  }
  .offset-md-8 {
    margin-right: 66.66666667%;
  }
  .offset-md-9 {
    margin-right: 75%;
  }
  .offset-md-10 {
    margin-right: 83.33333333%;
  }
  .offset-md-11 {
    margin-right: 91.66666667%;
  }
  .g-md-0,
  .gx-md-0 {
    --bs-gutter-x: 0;
  }
  .g-md-0,
  .gy-md-0 {
    --bs-gutter-y: 0;
  }
  .g-md-1,
  .gx-md-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-md-1,
  .gy-md-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-md-2,
  .gx-md-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-md-2,
  .gy-md-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-md-3,
  .gx-md-3 {
    --bs-gutter-x: 1rem;
  }
  .g-md-3,
  .gy-md-3 {
    --bs-gutter-y: 1rem;
  }
  .g-md-4,
  .gx-md-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-md-4,
  .gy-md-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-md-5,
  .gx-md-5 {
    --bs-gutter-x: 3rem;
  }
  .g-md-5,
  .gy-md-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 992px) {
  .col-lg {
    flex: 1 0 0;
  }
  .row-cols-lg-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-lg-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-lg-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-lg-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-lg-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-lg-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-lg-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-lg-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-lg-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-lg-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-lg-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-lg-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-lg-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-lg-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-lg-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-lg-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-lg-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-lg-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-lg-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-lg-0 {
    margin-right: 0;
  }
  .offset-lg-1 {
    margin-right: 8.33333333%;
  }
  .offset-lg-2 {
    margin-right: 16.66666667%;
  }
  .offset-lg-3 {
    margin-right: 25%;
  }
  .offset-lg-4 {
    margin-right: 33.33333333%;
  }
  .offset-lg-5 {
    margin-right: 41.66666667%;
  }
  .offset-lg-6 {
    margin-right: 50%;
  }
  .offset-lg-7 {
    margin-right: 58.33333333%;
  }
  .offset-lg-8 {
    margin-right: 66.66666667%;
  }
  .offset-lg-9 {
    margin-right: 75%;
  }
  .offset-lg-10 {
    margin-right: 83.33333333%;
  }
  .offset-lg-11 {
    margin-right: 91.66666667%;
  }
  .g-lg-0,
  .gx-lg-0 {
    --bs-gutter-x: 0;
  }
  .g-lg-0,
  .gy-lg-0 {
    --bs-gutter-y: 0;
  }
  .g-lg-1,
  .gx-lg-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-lg-1,
  .gy-lg-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-lg-2,
  .gx-lg-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-lg-2,
  .gy-lg-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-lg-3,
  .gx-lg-3 {
    --bs-gutter-x: 1rem;
  }
  .g-lg-3,
  .gy-lg-3 {
    --bs-gutter-y: 1rem;
  }
  .g-lg-4,
  .gx-lg-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-lg-4,
  .gy-lg-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-lg-5,
  .gx-lg-5 {
    --bs-gutter-x: 3rem;
  }
  .g-lg-5,
  .gy-lg-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1200px) {
  .col-xl {
    flex: 1 0 0;
  }
  .row-cols-xl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xl-0 {
    margin-right: 0;
  }
  .offset-xl-1 {
    margin-right: 8.33333333%;
  }
  .offset-xl-2 {
    margin-right: 16.66666667%;
  }
  .offset-xl-3 {
    margin-right: 25%;
  }
  .offset-xl-4 {
    margin-right: 33.33333333%;
  }
  .offset-xl-5 {
    margin-right: 41.66666667%;
  }
  .offset-xl-6 {
    margin-right: 50%;
  }
  .offset-xl-7 {
    margin-right: 58.33333333%;
  }
  .offset-xl-8 {
    margin-right: 66.66666667%;
  }
  .offset-xl-9 {
    margin-right: 75%;
  }
  .offset-xl-10 {
    margin-right: 83.33333333%;
  }
  .offset-xl-11 {
    margin-right: 91.66666667%;
  }
  .g-xl-0,
  .gx-xl-0 {
    --bs-gutter-x: 0;
  }
  .g-xl-0,
  .gy-xl-0 {
    --bs-gutter-y: 0;
  }
  .g-xl-1,
  .gx-xl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xl-1,
  .gy-xl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xl-2,
  .gx-xl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xl-2,
  .gy-xl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xl-3,
  .gx-xl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xl-3,
  .gy-xl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xl-4,
  .gx-xl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xl-4,
  .gy-xl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xl-5,
  .gx-xl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xl-5,
  .gy-xl-5 {
    --bs-gutter-y: 3rem;
  }
}
@media (min-width: 1400px) {
  .col-xxl {
    flex: 1 0 0;
  }
  .row-cols-xxl-auto > * {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-xxl-1 > * {
    flex: 0 0 auto;
    width: 100%;
  }
  .row-cols-xxl-2 > * {
    flex: 0 0 auto;
    width: 50%;
  }
  .row-cols-xxl-3 > * {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .row-cols-xxl-4 > * {
    flex: 0 0 auto;
    width: 25%;
  }
  .row-cols-xxl-5 > * {
    flex: 0 0 auto;
    width: 20%;
  }
  .row-cols-xxl-6 > * {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .col-xxl-1 {
    flex: 0 0 auto;
    width: 8.33333333%;
  }
  .col-xxl-2 {
    flex: 0 0 auto;
    width: 16.66666667%;
  }
  .col-xxl-3 {
    flex: 0 0 auto;
    width: 25%;
  }
  .col-xxl-4 {
    flex: 0 0 auto;
    width: 33.33333333%;
  }
  .col-xxl-5 {
    flex: 0 0 auto;
    width: 41.66666667%;
  }
  .col-xxl-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-xxl-7 {
    flex: 0 0 auto;
    width: 58.33333333%;
  }
  .col-xxl-8 {
    flex: 0 0 auto;
    width: 66.66666667%;
  }
  .col-xxl-9 {
    flex: 0 0 auto;
    width: 75%;
  }
  .col-xxl-10 {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
  .col-xxl-11 {
    flex: 0 0 auto;
    width: 91.66666667%;
  }
  .col-xxl-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .offset-xxl-0 {
    margin-right: 0;
  }
  .offset-xxl-1 {
    margin-right: 8.33333333%;
  }
  .offset-xxl-2 {
    margin-right: 16.66666667%;
  }
  .offset-xxl-3 {
    margin-right: 25%;
  }
  .offset-xxl-4 {
    margin-right: 33.33333333%;
  }
  .offset-xxl-5 {
    margin-right: 41.66666667%;
  }
  .offset-xxl-6 {
    margin-right: 50%;
  }
  .offset-xxl-7 {
    margin-right: 58.33333333%;
  }
  .offset-xxl-8 {
    margin-right: 66.66666667%;
  }
  .offset-xxl-9 {
    margin-right: 75%;
  }
  .offset-xxl-10 {
    margin-right: 83.33333333%;
  }
  .offset-xxl-11 {
    margin-right: 91.66666667%;
  }
  .g-xxl-0,
  .gx-xxl-0 {
    --bs-gutter-x: 0;
  }
  .g-xxl-0,
  .gy-xxl-0 {
    --bs-gutter-y: 0;
  }
  .g-xxl-1,
  .gx-xxl-1 {
    --bs-gutter-x: 0.25rem;
  }
  .g-xxl-1,
  .gy-xxl-1 {
    --bs-gutter-y: 0.25rem;
  }
  .g-xxl-2,
  .gx-xxl-2 {
    --bs-gutter-x: 0.5rem;
  }
  .g-xxl-2,
  .gy-xxl-2 {
    --bs-gutter-y: 0.5rem;
  }
  .g-xxl-3,
  .gx-xxl-3 {
    --bs-gutter-x: 1rem;
  }
  .g-xxl-3,
  .gy-xxl-3 {
    --bs-gutter-y: 1rem;
  }
  .g-xxl-4,
  .gx-xxl-4 {
    --bs-gutter-x: 1.5rem;
  }
  .g-xxl-4,
  .gy-xxl-4 {
    --bs-gutter-y: 1.5rem;
  }
  .g-xxl-5,
  .gx-xxl-5 {
    --bs-gutter-x: 3rem;
  }
  .g-xxl-5,
  .gy-xxl-5 {
    --bs-gutter-y: 3rem;
  }
}
.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-block {
  display: block !important;
}

.d-grid {
  display: grid !important;
}

.d-inline-grid {
  display: inline-grid !important;
}

.d-table {
  display: table !important;
}

.d-table-row {
  display: table-row !important;
}

.d-table-cell {
  display: table-cell !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-none {
  display: none !important;
}

.flex-fill {
  flex: 1 1 auto !important;
}

.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-row-reverse {
  flex-direction: row-reverse !important;
}

.flex-column-reverse {
  flex-direction: column-reverse !important;
}

.flex-grow-0 {
  flex-grow: 0 !important;
}

.flex-grow-1 {
  flex-grow: 1 !important;
}

.flex-shrink-0 {
  flex-shrink: 0 !important;
}

.flex-shrink-1 {
  flex-shrink: 1 !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.justify-content-evenly {
  justify-content: space-evenly !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-baseline {
  align-items: baseline !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.align-content-start {
  align-content: flex-start !important;
}

.align-content-end {
  align-content: flex-end !important;
}

.align-content-center {
  align-content: center !important;
}

.align-content-between {
  align-content: space-between !important;
}

.align-content-around {
  align-content: space-around !important;
}

.align-content-stretch {
  align-content: stretch !important;
}

.align-self-auto {
  align-self: auto !important;
}

.align-self-start {
  align-self: flex-start !important;
}

.align-self-end {
  align-self: flex-end !important;
}

.align-self-center {
  align-self: center !important;
}

.align-self-baseline {
  align-self: baseline !important;
}

.align-self-stretch {
  align-self: stretch !important;
}

.order-first {
  order: -1 !important;
}

.order-0 {
  order: 0 !important;
}

.order-1 {
  order: 1 !important;
}

.order-2 {
  order: 2 !important;
}

.order-3 {
  order: 3 !important;
}

.order-4 {
  order: 4 !important;
}

.order-5 {
  order: 5 !important;
}

.order-last {
  order: 6 !important;
}

.m-0 {
  margin: 0 !important;
}

.m-1 {
  margin: 0.25rem !important;
}

.m-2 {
  margin: 0.5rem !important;
}

.m-3 {
  margin: 1rem !important;
}

.m-4 {
  margin: 1.5rem !important;
}

.m-5 {
  margin: 3rem !important;
}

.m-auto {
  margin: auto !important;
}

.mx-0 {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.mx-1 {
  margin-left: 0.25rem !important;
  margin-right: 0.25rem !important;
}

.mx-2 {
  margin-left: 0.5rem !important;
  margin-right: 0.5rem !important;
}

.mx-3 {
  margin-left: 1rem !important;
  margin-right: 1rem !important;
}

.mx-4 {
  margin-left: 1.5rem !important;
  margin-right: 1.5rem !important;
}

.mx-5 {
  margin-left: 3rem !important;
  margin-right: 3rem !important;
}

.mx-auto {
  margin-left: auto !important;
  margin-right: auto !important;
}

.my-0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.my-1 {
  margin-top: 0.25rem !important;
  margin-bottom: 0.25rem !important;
}

.my-2 {
  margin-top: 0.5rem !important;
  margin-bottom: 0.5rem !important;
}

.my-3 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}

.my-4 {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important;
}

.my-5 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}

.my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important;
}

.mt-0 {
  margin-top: 0 !important;
}

.mt-1 {
  margin-top: 0.25rem !important;
}

.mt-2 {
  margin-top: 0.5rem !important;
}

.mt-3 {
  margin-top: 1rem !important;
}

.mt-4 {
  margin-top: 1.5rem !important;
}

.mt-5 {
  margin-top: 3rem !important;
}

.mt-auto {
  margin-top: auto !important;
}

.me-0 {
  margin-left: 0 !important;
}

.me-1 {
  margin-left: 0.25rem !important;
}

.me-2 {
  margin-left: 0.5rem !important;
}

.me-3 {
  margin-left: 1rem !important;
}

.me-4 {
  margin-left: 1.5rem !important;
}

.me-5 {
  margin-left: 3rem !important;
}

.me-auto {
  margin-left: auto !important;
}

.mb-0 {
  margin-bottom: 0 !important;
}

.mb-1 {
  margin-bottom: 0.25rem !important;
}

.mb-2 {
  margin-bottom: 0.5rem !important;
}

.mb-3 {
  margin-bottom: 1rem !important;
}

.mb-4 {
  margin-bottom: 1.5rem !important;
}

.mb-5 {
  margin-bottom: 3rem !important;
}

.mb-auto {
  margin-bottom: auto !important;
}

.ms-0 {
  margin-right: 0 !important;
}

.ms-1 {
  margin-right: 0.25rem !important;
}

.ms-2 {
  margin-right: 0.5rem !important;
}

.ms-3 {
  margin-right: 1rem !important;
}

.ms-4 {
  margin-right: 1.5rem !important;
}

.ms-5 {
  margin-right: 3rem !important;
}

.ms-auto {
  margin-right: auto !important;
}

.p-0 {
  padding: 0 !important;
}

.p-1 {
  padding: 0.25rem !important;
}

.p-2 {
  padding: 0.5rem !important;
}

.p-3 {
  padding: 1rem !important;
}

.p-4 {
  padding: 1.5rem !important;
}

.p-5 {
  padding: 3rem !important;
}

.px-0 {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.px-1 {
  padding-left: 0.25rem !important;
  padding-right: 0.25rem !important;
}

.px-2 {
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
}

.px-3 {
  padding-left: 1rem !important;
  padding-right: 1rem !important;
}

.px-4 {
  padding-left: 1.5rem !important;
  padding-right: 1.5rem !important;
}

.px-5 {
  padding-left: 3rem !important;
  padding-right: 3rem !important;
}

.py-0 {
  padding-top: 0 !important;
  padding-bottom: 0 !i
Download .txt
gitextract_muvc3lnh/

├── .babelrc.js
├── .browserslistrc
├── .bundlewatch.config.json
├── .cspell.json
├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── INCIDENT_RESPONSE.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── SUPPORT.md
│   ├── codeql/
│   │   └── codeql-config.yml
│   ├── dependabot.yml
│   ├── release-drafter.yml
│   └── workflows/
│       ├── browserstack.yml
│       ├── bundlewatch.yml
│       ├── calibreapp-image-actions.yml
│       ├── codeql.yml
│       ├── cspell.yml
│       ├── css.yml
│       ├── docs.yml
│       ├── issue-close-require.yml
│       ├── issue-labeled.yml
│       ├── js.yml
│       ├── lint.yml
│       ├── node-sass.yml
│       ├── publish-nuget.yml
│       ├── release-notes.yml
│       └── scorecard.yml
├── .gitignore
├── .prettierignore
├── .stylelintignore
├── .stylelintrc.json
├── .vscode/
│   ├── extensions.json
│   └── settings.json
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── SECURITY.md
├── build/
│   ├── banner.mjs
│   ├── build-plugins.mjs
│   ├── change-version.mjs
│   ├── docs-prep.sh
│   ├── generate-sri.mjs
│   ├── postcss.config.mjs
│   ├── rollup.config.mjs
│   ├── vnu-jar.mjs
│   └── zip-examples.mjs
├── composer.json
├── config.yml
├── dist/
│   ├── css/
│   │   ├── bootstrap-grid.css
│   │   ├── bootstrap-grid.rtl.css
│   │   ├── bootstrap-reboot.css
│   │   ├── bootstrap-reboot.rtl.css
│   │   ├── bootstrap-utilities.css
│   │   ├── bootstrap-utilities.rtl.css
│   │   ├── bootstrap.css
│   │   └── bootstrap.rtl.css
│   └── js/
│       ├── bootstrap.bundle.js
│       ├── bootstrap.esm.js
│       └── bootstrap.js
├── js/
│   ├── dist/
│   │   ├── alert.js
│   │   ├── base-component.js
│   │   ├── button.js
│   │   ├── carousel.js
│   │   ├── collapse.js
│   │   ├── dom/
│   │   │   ├── data.js
│   │   │   ├── event-handler.js
│   │   │   ├── manipulator.js
│   │   │   └── selector-engine.js
│   │   ├── dropdown.js
│   │   ├── modal.js
│   │   ├── offcanvas.js
│   │   ├── popover.js
│   │   ├── scrollspy.js
│   │   ├── tab.js
│   │   ├── toast.js
│   │   ├── tooltip.js
│   │   └── util/
│   │       ├── backdrop.js
│   │       ├── component-functions.js
│   │       ├── config.js
│   │       ├── focustrap.js
│   │       ├── index.js
│   │       ├── sanitizer.js
│   │       ├── scrollbar.js
│   │       ├── swipe.js
│   │       └── template-factory.js
│   ├── index.esm.js
│   ├── index.umd.js
│   ├── src/
│   │   ├── alert.js
│   │   ├── base-component.js
│   │   ├── button.js
│   │   ├── carousel.js
│   │   ├── collapse.js
│   │   ├── dom/
│   │   │   ├── data.js
│   │   │   ├── event-handler.js
│   │   │   ├── manipulator.js
│   │   │   └── selector-engine.js
│   │   ├── dropdown.js
│   │   ├── modal.js
│   │   ├── offcanvas.js
│   │   ├── popover.js
│   │   ├── scrollspy.js
│   │   ├── tab.js
│   │   ├── toast.js
│   │   ├── tooltip.js
│   │   └── util/
│   │       ├── backdrop.js
│   │       ├── component-functions.js
│   │       ├── config.js
│   │       ├── focustrap.js
│   │       ├── index.js
│   │       ├── sanitizer.js
│   │       ├── scrollbar.js
│   │       ├── swipe.js
│   │       └── template-factory.js
│   └── tests/
│       ├── README.md
│       ├── browsers.js
│       ├── helpers/
│       │   └── fixture.js
│       ├── integration/
│       │   ├── bundle-modularity.js
│       │   ├── bundle.js
│       │   ├── index.html
│       │   ├── rollup.bundle-modularity.js
│       │   └── rollup.bundle.js
│       ├── karma.conf.js
│       ├── unit/
│       │   ├── alert.spec.js
│       │   ├── base-component.spec.js
│       │   ├── button.spec.js
│       │   ├── carousel.spec.js
│       │   ├── collapse.spec.js
│       │   ├── dom/
│       │   │   ├── data.spec.js
│       │   │   ├── event-handler.spec.js
│       │   │   ├── manipulator.spec.js
│       │   │   └── selector-engine.spec.js
│       │   ├── dropdown.spec.js
│       │   ├── jquery.spec.js
│       │   ├── modal.spec.js
│       │   ├── offcanvas.spec.js
│       │   ├── popover.spec.js
│       │   ├── scrollspy.spec.js
│       │   ├── tab.spec.js
│       │   ├── toast.spec.js
│       │   ├── tooltip.spec.js
│       │   └── util/
│       │       ├── backdrop.spec.js
│       │       ├── component-functions.spec.js
│       │       ├── config.spec.js
│       │       ├── focustrap.spec.js
│       │       ├── index.spec.js
│       │       ├── sanitizer.spec.js
│       │       ├── scrollbar.spec.js
│       │       ├── swipe.spec.js
│       │       └── template-factory.spec.js
│       └── visual/
│           ├── alert.html
│           ├── button.html
│           ├── carousel.html
│           ├── collapse.html
│           ├── dropdown.html
│           ├── floating-label.html
│           ├── input.html
│           ├── modal.html
│           ├── popover.html
│           ├── scrollspy.html
│           ├── tab.html
│           ├── toast.html
│           └── tooltip.html
├── nuget/
│   ├── bootstrap.nuspec
│   └── bootstrap.sass.nuspec
├── package.js
├── package.json
├── scss/
│   ├── _accordion.scss
│   ├── _alert.scss
│   ├── _badge.scss
│   ├── _breadcrumb.scss
│   ├── _button-group.scss
│   ├── _buttons.scss
│   ├── _card.scss
│   ├── _carousel.scss
│   ├── _close.scss
│   ├── _containers.scss
│   ├── _dropdown.scss
│   ├── _forms.scss
│   ├── _functions.scss
│   ├── _grid.scss
│   ├── _helpers.scss
│   ├── _images.scss
│   ├── _list-group.scss
│   ├── _maps.scss
│   ├── _mixins.scss
│   ├── _modal.scss
│   ├── _nav.scss
│   ├── _navbar.scss
│   ├── _offcanvas.scss
│   ├── _pagination.scss
│   ├── _placeholders.scss
│   ├── _popover.scss
│   ├── _progress.scss
│   ├── _reboot.scss
│   ├── _root.scss
│   ├── _spinners.scss
│   ├── _tables.scss
│   ├── _toasts.scss
│   ├── _tooltip.scss
│   ├── _transitions.scss
│   ├── _type.scss
│   ├── _utilities.scss
│   ├── _variables-dark.scss
│   ├── _variables.scss
│   ├── bootstrap-grid.scss
│   ├── bootstrap-reboot.scss
│   ├── bootstrap-utilities.scss
│   ├── bootstrap.scss
│   ├── forms/
│   │   ├── _floating-labels.scss
│   │   ├── _form-check.scss
│   │   ├── _form-control.scss
│   │   ├── _form-range.scss
│   │   ├── _form-select.scss
│   │   ├── _form-text.scss
│   │   ├── _input-group.scss
│   │   ├── _labels.scss
│   │   └── _validation.scss
│   ├── helpers/
│   │   ├── _clearfix.scss
│   │   ├── _color-bg.scss
│   │   ├── _colored-links.scss
│   │   ├── _focus-ring.scss
│   │   ├── _icon-link.scss
│   │   ├── _position.scss
│   │   ├── _ratio.scss
│   │   ├── _stacks.scss
│   │   ├── _stretched-link.scss
│   │   ├── _text-truncation.scss
│   │   ├── _visually-hidden.scss
│   │   └── _vr.scss
│   ├── mixins/
│   │   ├── _alert.scss
│   │   ├── _backdrop.scss
│   │   ├── _banner.scss
│   │   ├── _border-radius.scss
│   │   ├── _box-shadow.scss
│   │   ├── _breakpoints.scss
│   │   ├── _buttons.scss
│   │   ├── _caret.scss
│   │   ├── _clearfix.scss
│   │   ├── _color-mode.scss
│   │   ├── _color-scheme.scss
│   │   ├── _container.scss
│   │   ├── _deprecate.scss
│   │   ├── _forms.scss
│   │   ├── _gradients.scss
│   │   ├── _grid.scss
│   │   ├── _image.scss
│   │   ├── _list-group.scss
│   │   ├── _lists.scss
│   │   ├── _pagination.scss
│   │   ├── _reset-text.scss
│   │   ├── _resize.scss
│   │   ├── _table-variants.scss
│   │   ├── _text-truncate.scss
│   │   ├── _transition.scss
│   │   ├── _utilities.scss
│   │   └── _visually-hidden.scss
│   ├── tests/
│   │   ├── jasmine.js
│   │   ├── mixins/
│   │   │   ├── _auto-import-of-variables-dark.test.scss
│   │   │   ├── _box-shadow.test.scss
│   │   │   ├── _color-contrast.test.scss
│   │   │   ├── _color-modes.test.scss
│   │   │   ├── _media-query-color-mode-full.test.scss
│   │   │   └── _utilities.test.scss
│   │   ├── sass-true/
│   │   │   ├── register.js
│   │   │   └── runner.js
│   │   └── utilities/
│   │       └── _api.test.scss
│   ├── utilities/
│   │   └── _api.scss
│   └── vendor/
│       └── _rfs.scss
└── site/
    ├── .prettierrc.json
    ├── astro.config.ts
    ├── data/
    │   ├── breakpoints.yml
    │   ├── colors.yml
    │   ├── core-team.yml
    │   ├── docs-versions.yml
    │   ├── examples.yml
    │   ├── grays.yml
    │   ├── icons.yml
    │   ├── plugins.yml
    │   ├── sidebar.yml
    │   ├── theme-colors.yml
    │   └── translations.yml
    ├── postcss.config.cjs
    ├── src/
    │   ├── assets/
    │   │   ├── application.js
    │   │   ├── examples/
    │   │   │   ├── album/
    │   │   │   │   └── index.astro
    │   │   │   ├── album-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── badges/
    │   │   │   │   ├── badges.css
    │   │   │   │   └── index.astro
    │   │   │   ├── blog/
    │   │   │   │   ├── blog.css
    │   │   │   │   ├── blog.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── blog-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── breadcrumbs/
    │   │   │   │   ├── breadcrumbs.css
    │   │   │   │   └── index.astro
    │   │   │   ├── buttons/
    │   │   │   │   └── index.astro
    │   │   │   ├── carousel/
    │   │   │   │   ├── carousel.css
    │   │   │   │   ├── carousel.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── carousel-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── cheatsheet/
    │   │   │   │   ├── cheatsheet.css
    │   │   │   │   ├── cheatsheet.js
    │   │   │   │   ├── cheatsheet.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── cheatsheet-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── checkout/
    │   │   │   │   ├── checkout.css
    │   │   │   │   ├── checkout.js
    │   │   │   │   └── index.astro
    │   │   │   ├── checkout-rtl/
    │   │   │   │   └── index.astro
    │   │   │   ├── cover/
    │   │   │   │   ├── cover.css
    │   │   │   │   └── index.astro
    │   │   │   ├── dashboard/
    │   │   │   │   ├── dashboard.css
    │   │   │   │   ├── dashboard.js
    │   │   │   │   ├── dashboard.rtl.css
    │   │   │   │   └── index.astro
    │   │   │   ├── dashboard-rtl/
    │   │   │   │   ├── dashboard.js
    │   │   │   │   └── index.astro
    │   │   │   ├── dropdowns/
    │   │   │   │   ├── dropdowns.css
    │   │   │   │   └── index.astro
    │   │   │   ├── features/
    │   │   │   │   ├── features.css
    │   │   │   │   └── index.astro
    │   │   │   ├── footers/
    │   │   │   │   └── index.astro
    │   │   │   ├── grid/
    │   │   │   │   ├── grid.css
    │   │   │   │   └── index.astro
    │   │   │   ├── headers/
    │   │   │   │   ├── headers.css
    │   │   │   │   └── index.astro
    │   │   │   ├── heroes/
    │   │   │   │   ├── heroes.css
    │   │   │   │   └── index.astro
    │   │   │   ├── jumbotron/
    │   │   │   │   └── index.astro
    │   │   │   ├── jumbotrons/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── jumbotrons.css
    │   │   │   ├── list-groups/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── list-groups.css
    │   │   │   ├── masonry/
    │   │   │   │   └── index.astro
    │   │   │   ├── modals/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── modals.css
    │   │   │   ├── navbar-bottom/
    │   │   │   │   └── index.astro
    │   │   │   ├── navbar-fixed/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbar-fixed.css
    │   │   │   ├── navbar-static/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbar-static.css
    │   │   │   ├── navbars/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbars.css
    │   │   │   ├── navbars-offcanvas/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── navbars-offcanvas.css
    │   │   │   ├── offcanvas-navbar/
    │   │   │   │   ├── index.astro
    │   │   │   │   ├── offcanvas-navbar.css
    │   │   │   │   └── offcanvas-navbar.js
    │   │   │   ├── pricing/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── pricing.css
    │   │   │   ├── product/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── product.css
    │   │   │   ├── sidebars/
    │   │   │   │   ├── index.astro
    │   │   │   │   ├── sidebars.css
    │   │   │   │   └── sidebars.js
    │   │   │   ├── sign-in/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── sign-in.css
    │   │   │   ├── starter-template/
    │   │   │   │   └── index.astro
    │   │   │   ├── sticky-footer/
    │   │   │   │   ├── index.astro
    │   │   │   │   └── sticky-footer.css
    │   │   │   └── sticky-footer-navbar/
    │   │   │       ├── index.astro
    │   │   │       └── sticky-footer-navbar.css
    │   │   ├── partials/
    │   │   │   ├── sidebar.js
    │   │   │   └── snippets.js
    │   │   ├── search.js
    │   │   ├── snippets.js
    │   │   └── stackblitz.js
    │   ├── components/
    │   │   ├── Ads.astro
    │   │   ├── DocsScripts.astro
    │   │   ├── DocsSidebar.astro
    │   │   ├── Scripts.astro
    │   │   ├── TableOfContents.astro
    │   │   ├── footer/
    │   │   │   └── Footer.astro
    │   │   ├── head/
    │   │   │   ├── Analytics.astro
    │   │   │   ├── Favicons.astro
    │   │   │   ├── Head.astro
    │   │   │   ├── Scss.astro
    │   │   │   ├── ScssProd.astro
    │   │   │   ├── Social.astro
    │   │   │   └── Stylesheet.astro
    │   │   ├── header/
    │   │   │   ├── Header.astro
    │   │   │   ├── LinkItem.astro
    │   │   │   ├── Navigation.astro
    │   │   │   ├── Skippy.astro
    │   │   │   └── Versions.astro
    │   │   ├── home/
    │   │   │   ├── CSSVariables.astro
    │   │   │   ├── ComponentUtilities.astro
    │   │   │   ├── Customize.astro
    │   │   │   ├── GetStarted.astro
    │   │   │   ├── Icons.astro
    │   │   │   ├── MastHead.astro
    │   │   │   └── Plugins.astro
    │   │   ├── icons/
    │   │   │   ├── BootstrapWhiteFillIcon.astro
    │   │   │   ├── CircleSquareIcon.astro
    │   │   │   ├── DropletFillIcon.astro
    │   │   │   ├── GitHubIcon.astro
    │   │   │   ├── HamburgerIcon.astro
    │   │   │   ├── OpenCollectiveIcon.astro
    │   │   │   ├── Symbols.astro
    │   │   │   └── XIcon.astro
    │   │   └── shortcodes/
    │   │       ├── AddedIn.astro
    │   │       ├── BsTable.astro
    │   │       ├── Callout.astro
    │   │       ├── CalloutDeprecatedDarkVariants.astro
    │   │       ├── Code.astro
    │   │       ├── DeprecatedIn.astro
    │   │       ├── Example.astro
    │   │       ├── GuideFooter.mdx
    │   │       ├── JsDataAttributes.mdx
    │   │       ├── JsDismiss.astro
    │   │       ├── JsDocs.astro
    │   │       ├── Placeholder.astro
    │   │       ├── ScssDocs.astro
    │   │       ├── Table.astro
    │   │       └── TableContent.md
    │   ├── content/
    │   │   ├── callouts/
    │   │   │   ├── danger-async-methods.md
    │   │   │   ├── info-mediaqueries-breakpoints.md
    │   │   │   ├── info-npm-starter.md
    │   │   │   ├── info-prefersreducedmotion.md
    │   │   │   ├── info-sanitizer.md
    │   │   │   ├── warning-color-assistive-technologies.md
    │   │   │   ├── warning-data-bs-title-vs-title.md
    │   │   │   └── warning-input-support.md
    │   │   ├── config.ts
    │   │   └── docs/
    │   │       ├── about/
    │   │       │   ├── brand.mdx
    │   │       │   ├── license.mdx
    │   │       │   ├── overview.mdx
    │   │       │   ├── team.mdx
    │   │       │   └── translations.mdx
    │   │       ├── components/
    │   │       │   ├── accordion.mdx
    │   │       │   ├── alerts.mdx
    │   │       │   ├── badge.mdx
    │   │       │   ├── breadcrumb.mdx
    │   │       │   ├── button-group.mdx
    │   │       │   ├── buttons.mdx
    │   │       │   ├── card.mdx
    │   │       │   ├── carousel.mdx
    │   │       │   ├── close-button.mdx
    │   │       │   ├── collapse.mdx
    │   │       │   ├── dropdowns.mdx
    │   │       │   ├── list-group.mdx
    │   │       │   ├── modal.mdx
    │   │       │   ├── navbar.mdx
    │   │       │   ├── navs-tabs.mdx
    │   │       │   ├── offcanvas.mdx
    │   │       │   ├── pagination.mdx
    │   │       │   ├── placeholders.mdx
    │   │       │   ├── popovers.mdx
    │   │       │   ├── progress.mdx
    │   │       │   ├── scrollspy.mdx
    │   │       │   ├── spinners.mdx
    │   │       │   ├── toasts.mdx
    │   │       │   └── tooltips.mdx
    │   │       ├── content/
    │   │       │   ├── figures.mdx
    │   │       │   ├── images.mdx
    │   │       │   ├── reboot.mdx
    │   │       │   ├── tables.mdx
    │   │       │   └── typography.mdx
    │   │       ├── customize/
    │   │       │   ├── color-modes.mdx
    │   │       │   ├── color.mdx
    │   │       │   ├── components.mdx
    │   │       │   ├── css-variables.mdx
    │   │       │   ├── optimize.mdx
    │   │       │   ├── options.mdx
    │   │       │   ├── overview.mdx
    │   │       │   └── sass.mdx
    │   │       ├── docsref.mdx
    │   │       ├── extend/
    │   │       │   ├── approach.mdx
    │   │       │   └── icons.mdx
    │   │       ├── forms/
    │   │       │   ├── checks-radios.mdx
    │   │       │   ├── floating-labels.mdx
    │   │       │   ├── form-control.mdx
    │   │       │   ├── input-group.mdx
    │   │       │   ├── layout.mdx
    │   │       │   ├── overview.mdx
    │   │       │   ├── range.mdx
    │   │       │   ├── select.mdx
    │   │       │   └── validation.mdx
    │   │       ├── getting-started/
    │   │       │   ├── accessibility.mdx
    │   │       │   ├── best-practices.mdx
    │   │       │   ├── browsers-devices.mdx
    │   │       │   ├── contents.mdx
    │   │       │   ├── contribute.mdx
    │   │       │   ├── download.mdx
    │   │       │   ├── introduction.mdx
    │   │       │   ├── javascript.mdx
    │   │       │   ├── parcel.mdx
    │   │       │   ├── rfs.mdx
    │   │       │   ├── rtl.mdx
    │   │       │   ├── vite.mdx
    │   │       │   └── webpack.mdx
    │   │       ├── helpers/
    │   │       │   ├── clearfix.mdx
    │   │       │   ├── color-background.mdx
    │   │       │   ├── colored-links.mdx
    │   │       │   ├── focus-ring.mdx
    │   │       │   ├── icon-link.mdx
    │   │       │   ├── position.mdx
    │   │       │   ├── ratio.mdx
    │   │       │   ├── stacks.mdx
    │   │       │   ├── stretched-link.mdx
    │   │       │   ├── text-truncation.mdx
    │   │       │   ├── vertical-rule.mdx
    │   │       │   └── visually-hidden.mdx
    │   │       ├── layout/
    │   │       │   ├── breakpoints.mdx
    │   │       │   ├── columns.mdx
    │   │       │   ├── containers.mdx
    │   │       │   ├── css-grid.mdx
    │   │       │   ├── grid.mdx
    │   │       │   ├── gutters.mdx
    │   │       │   ├── utilities.mdx
    │   │       │   └── z-index.mdx
    │   │       ├── migration.mdx
    │   │       └── utilities/
    │   │           ├── api.mdx
    │   │           ├── background.mdx
    │   │           ├── borders.mdx
    │   │           ├── colors.mdx
    │   │           ├── display.mdx
    │   │           ├── flex.mdx
    │   │           ├── float.mdx
    │   │           ├── interactions.mdx
    │   │           ├── link.mdx
    │   │           ├── object-fit.mdx
    │   │           ├── opacity.mdx
    │   │           ├── overflow.mdx
    │   │           ├── position.mdx
    │   │           ├── shadows.mdx
    │   │           ├── sizing.mdx
    │   │           ├── spacing.mdx
    │   │           ├── text.mdx
    │   │           ├── vertical-align.mdx
    │   │           ├── visibility.mdx
    │   │           └── z-index.mdx
    │   ├── env.d.ts
    │   ├── layouts/
    │   │   ├── BaseLayout.astro
    │   │   ├── DocsLayout.astro
    │   │   ├── ExamplesLayout.astro
    │   │   ├── RedirectLayout.astro
    │   │   ├── SingleLayout.astro
    │   │   └── partials/
    │   │       ├── ExamplesMain.astro
    │   │       ├── Icons.astro
    │   │       ├── ResponsiveImage.astro
    │   │       └── ThemeToggler.astro
    │   ├── libs/
    │   │   ├── astro.ts
    │   │   ├── bootstrap.ts
    │   │   ├── config.ts
    │   │   ├── content.ts
    │   │   ├── data.ts
    │   │   ├── examples.ts
    │   │   ├── icon.ts
    │   │   ├── image.ts
    │   │   ├── layout.ts
    │   │   ├── path.ts
    │   │   ├── placeholder.ts
    │   │   ├── prism.ts
    │   │   ├── rehype.ts
    │   │   ├── remark.ts
    │   │   ├── toc.ts
    │   │   ├── utils.ts
    │   │   └── validation.ts
    │   ├── pages/
    │   │   ├── 404.astro
    │   │   ├── [...alias].astro
    │   │   ├── docs/
    │   │   │   ├── [version]/
    │   │   │   │   ├── [...slug].astro
    │   │   │   │   ├── examples/
    │   │   │   │   │   ├── [...asset].ts
    │   │   │   │   │   ├── [...example].astro
    │   │   │   │   │   └── index.astro
    │   │   │   │   └── index.astro
    │   │   │   ├── index.astro
    │   │   │   └── versions.astro
    │   │   ├── examples.astro
    │   │   ├── index.astro
    │   │   └── robots.txt.ts
    │   ├── plugins/
    │   │   ├── algolia-plugin.js
    │   │   └── stackblitz-plugin.js
    │   ├── scss/
    │   │   ├── _ads.scss
    │   │   ├── _anchor.scss
    │   │   ├── _brand.scss
    │   │   ├── _buttons.scss
    │   │   ├── _callouts.scss
    │   │   ├── _clipboard-js.scss
    │   │   ├── _colors.scss
    │   │   ├── _component-examples.scss
    │   │   ├── _content.scss
    │   │   ├── _footer.scss
    │   │   ├── _layout.scss
    │   │   ├── _masthead.scss
    │   │   ├── _navbar.scss
    │   │   ├── _placeholder-img.scss
    │   │   ├── _scrolling.scss
    │   │   ├── _search.scss
    │   │   ├── _sidebar.scss
    │   │   ├── _skippy.scss
    │   │   ├── _syntax.scss
    │   │   ├── _toc.scss
    │   │   ├── _variables.scss
    │   │   ├── docs.scss
    │   │   └── docs_search.scss
    │   └── types/
    │       ├── auto-import.d.ts
    │       └── window.d.ts
    ├── static/
    │   ├── CNAME
    │   ├── docs/
    │   │   └── [version]/
    │   │       └── assets/
    │   │           ├── img/
    │   │           │   └── favicons/
    │   │           │       └── manifest.json
    │   │           └── js/
    │   │               ├── color-modes.js
    │   │               └── validate-forms.js
    │   └── sw.js
    └── tsconfig.json
Download .txt
SYMBOL INDEX (2198 symbols across 95 files)

FILE: build/banner.mjs
  function getBanner (line 12) | function getBanner(pluginFilename) {

FILE: build/build-plugins.mjs
  method external (line 55) | external(source) {

FILE: build/change-version.mjs
  constant VERBOSE (line 13) | const VERBOSE = process.argv.includes('--verbose')
  constant DRY_RUN (line 14) | const DRY_RUN = process.argv.includes('--dry') || process.argv.includes(...
  constant FILES (line 17) | const FILES = [
  function regExpQuote (line 27) | function regExpQuote(string) {
  function regExpQuoteReplacement (line 31) | function regExpQuoteReplacement(string) {
  function replaceRecursively (line 35) | async function replaceRecursively(file, oldVersion, newVersion) {
  function bumpNpmVersion (line 65) | function bumpNpmVersion(newVersion) {
  function showUsage (line 78) | function showUsage(args) {
  function main (line 84) | async function main(args) {

FILE: build/rollup.config.mjs
  constant BUNDLE (line 11) | const BUNDLE = process.env.BUNDLE === 'true'
  constant ESM (line 12) | const ESM = process.env.ESM === 'true'

FILE: dist/js/bootstrap.bundle.js
  method set (line 25) | set(element, key, instance) {
  method get (line 40) | get(element, key) {
  method remove (line 46) | remove(element, key) {
  function makeEventUid (line 333) | function makeEventUid(element, uid) {
  function getElementEvents (line 336) | function getElementEvents(element) {
  function bootstrapHandler (line 342) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 353) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 374) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 377) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 387) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 421) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 429) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 437) | function getTypeEvent(event) {
  method on (line 443) | on(element, event, handler, delegationFunction) {
  method one (line 446) | one(element, event, handler, delegationFunction) {
  method off (line 449) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 478) | trigger(element, event, args) {
  function hydrateObj (line 512) | function hydrateObj(obj, meta = {}) {
  function normalizeData (line 535) | function normalizeData(value) {
  function normalizeDataKey (line 557) | function normalizeDataKey(key) {
  method setDataAttribute (line 561) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 564) | removeDataAttribute(element, key) {
  method getDataAttributes (line 567) | getDataAttributes(element) {
  method getDataAttribute (line 580) | getDataAttribute(element, key) {
  class Config (line 597) | class Config {
    method Default (line 599) | static get Default() {
    method DefaultType (line 602) | static get DefaultType() {
    method NAME (line 605) | static get NAME() {
    method _getConfig (line 608) | _getConfig(config) {
    method _configAfterMerge (line 614) | _configAfterMerge(config) {
    method _mergeConfigObj (line 617) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 627) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
  class BaseComponent (line 656) | class BaseComponent extends Config {
    method constructor (line 657) | constructor(element, config) {
    method dispose (line 669) | dispose() {
    method _queueCallback (line 678) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 681) | _getConfig(config) {
    method getInstance (line 689) | static getInstance(element) {
    method getOrCreateInstance (line 692) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 695) | static get VERSION() {
    method DATA_KEY (line 698) | static get DATA_KEY() {
    method EVENT_KEY (line 701) | static get EVENT_KEY() {
    method eventName (line 704) | static eventName(name) {
  method find (line 738) | find(selector, element = document.documentElement) {
  method findOne (line 741) | findOne(selector, element = document.documentElement) {
  method children (line 744) | children(element, selector) {
  method parents (line 747) | parents(element, selector) {
  method prev (line 756) | prev(element, selector) {
  method next (line 767) | next(element, selector) {
  method focusableChildren (line 777) | focusableChildren(element) {
  method getSelectorFromElement (line 781) | getSelectorFromElement(element) {
  method getElementFromSelector (line 788) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 792) | getMultipleElementsFromSelector(element) {
  class Alert (line 847) | class Alert extends BaseComponent {
    method NAME (line 849) | static get NAME() {
    method close (line 854) | close() {
    method _destroyElement (line 865) | _destroyElement() {
    method jQueryInterface (line 872) | static jQueryInterface(config) {
  class Button (line 922) | class Button extends BaseComponent {
    method NAME (line 924) | static get NAME() {
    method toggle (line 929) | toggle() {
    method jQueryInterface (line 935) | static jQueryInterface(config) {
  class Swipe (line 1000) | class Swipe extends Config {
    method constructor (line 1001) | constructor(element, config) {
    method Default (line 1014) | static get Default() {
    method DefaultType (line 1017) | static get DefaultType() {
    method NAME (line 1020) | static get NAME() {
    method dispose (line 1025) | dispose() {
    method _start (line 1030) | _start(event) {
    method _end (line 1039) | _end(event) {
    method _move (line 1046) | _move(event) {
    method _handleSwipe (line 1049) | _handleSwipe() {
    method _initEvents (line 1061) | _initEvents() {
    method _eventIsPointerPenTouch (line 1072) | _eventIsPointerPenTouch(event) {
    method isSupported (line 1077) | static isSupported() {
  class Carousel (line 1154) | class Carousel extends BaseComponent {
    method constructor (line 1155) | constructor(element, config) {
    method Default (line 1170) | static get Default() {
    method DefaultType (line 1173) | static get DefaultType() {
    method NAME (line 1176) | static get NAME() {
    method next (line 1181) | next() {
    method nextWhenVisible (line 1184) | nextWhenVisible() {
    method prev (line 1192) | prev() {
    method pause (line 1195) | pause() {
    method cycle (line 1201) | cycle() {
    method _maybeEnableCycle (line 1206) | _maybeEnableCycle() {
    method to (line 1216) | to(index) {
    method dispose (line 1232) | dispose() {
    method _configAfterMerge (line 1240) | _configAfterMerge(config) {
    method _addEventListeners (line 1244) | _addEventListeners() {
    method _addTouchEventListeners (line 1256) | _addTouchEventListeners() {
    method _keydown (line 1286) | _keydown(event) {
    method _getItemIndex (line 1296) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 1299) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 1312) | _updateInterval() {
    method _slide (line 1320) | _slide(order, element = null) {
    method _isAnimated (line 1371) | _isAnimated() {
    method _getActive (line 1374) | _getActive() {
    method _getItems (line 1377) | _getItems() {
    method _clearInterval (line 1380) | _clearInterval() {
    method _directionToOrder (line 1386) | _directionToOrder(direction) {
    method _orderToDirection (line 1392) | _orderToDirection(order) {
    method jQueryInterface (line 1400) | static jQueryInterface(config) {
  class Collapse (line 1499) | class Collapse extends BaseComponent {
    method constructor (line 1500) | constructor(element, config) {
    method Default (line 1522) | static get Default() {
    method DefaultType (line 1525) | static get DefaultType() {
    method NAME (line 1528) | static get NAME() {
    method toggle (line 1533) | toggle() {
    method show (line 1540) | show() {
    method hide (line 1580) | hide() {
    method _isShown (line 1611) | _isShown(element = this._element) {
    method _configAfterMerge (line 1614) | _configAfterMerge(config) {
    method _getDimension (line 1619) | _getDimension() {
    method _initializeChildren (line 1622) | _initializeChildren() {
    method _getFirstLevelChildren (line 1634) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 1639) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 1650) | static jQueryInterface(config) {
  function getNodeName (line 1721) | function getNodeName(element) {
  function getWindow (line 1725) | function getWindow(node) {
  function isElement (line 1738) | function isElement(node) {
  function isHTMLElement (line 1743) | function isHTMLElement(node) {
  function isShadowRoot (line 1748) | function isShadowRoot(node) {
  function applyStyles (line 1760) | function applyStyles(_ref) {
  function effect$2 (line 1787) | function effect$2(_ref2) {
  function getBasePlacement (line 1841) | function getBasePlacement(placement) {
  function getUAString (line 1849) | function getUAString() {
  function isLayoutViewport (line 1861) | function isLayoutViewport() {
  function getBoundingClientRect (line 1865) | function getBoundingClientRect(element, includeScale, isFixedStrategy) {
  function getLayoutRect (line 1905) | function getLayoutRect(element) {
  function contains (line 1928) | function contains(parent, child) {
  function getComputedStyle$1 (line 1951) | function getComputedStyle$1(element) {
  function isTableElement (line 1955) | function isTableElement(element) {
  function getDocumentElement (line 1959) | function getDocumentElement(element) {
  function getParentNode (line 1965) | function getParentNode(element) {
  function getTrueOffsetParent (line 1982) | function getTrueOffsetParent(element) {
  function getContainingBlock (line 1993) | function getContainingBlock(element) {
  function getOffsetParent (line 2029) | function getOffsetParent(element) {
  function getMainAxisFromPlacement (line 2044) | function getMainAxisFromPlacement(placement) {
  function within (line 2048) | function within(min$1, value, max$1) {
  function withinMaxClamp (line 2051) | function withinMaxClamp(min, value, max) {
  function getFreshSideObject (line 2056) | function getFreshSideObject() {
  function mergePaddingObject (line 2065) | function mergePaddingObject(paddingObject) {
  function expandToHashMap (line 2069) | function expandToHashMap(value, keys) {
  function arrow (line 2083) | function arrow(_ref) {
  function effect$1 (line 2120) | function effect$1(_ref2) {
  function getVariation (line 2157) | function getVariation(placement) {
  function roundOffsetsByDPR (line 2170) | function roundOffsetsByDPR(_ref, win) {
  function mapToStyles (line 2180) | function mapToStyles(_ref2) {
  function computeStyles (line 2272) | function computeStyles(_ref5) {
  function effect (line 2326) | function effect(_ref) {
  function getOppositePlacement (line 2376) | function getOppositePlacement(placement) {
  function getOppositeVariationPlacement (line 2386) | function getOppositeVariationPlacement(placement) {
  function getWindowScroll (line 2392) | function getWindowScroll(node) {
  function getWindowScrollBarX (line 2402) | function getWindowScrollBarX(element) {
  function getViewportRect (line 2413) | function getViewportRect(element, strategy) {
  function getDocumentRect (line 2443) | function getDocumentRect(element) {
  function isScrollParent (line 2466) | function isScrollParent(element) {
  function getScrollParent (line 2476) | function getScrollParent(node) {
  function listScrollParents (line 2496) | function listScrollParents(element, list) {
  function rectToClientRect (line 2512) | function rectToClientRect(rect) {
  function getInnerBoundingClientRect (line 2521) | function getInnerBoundingClientRect(element, strategy) {
  function getClientRectFromMixedType (line 2534) | function getClientRectFromMixedType(element, clippingParent, strategy) {
  function getClippingParents (line 2541) | function getClippingParents(element) {
  function getClippingRect (line 2558) | function getClippingRect(element, boundary, rootBoundary, strategy) {
  function computeOffsets (line 2577) | function computeOffsets(_ref) {
  function detectOverflow (line 2642) | function detectOverflow(state, options) {
  function computeAutoPlacement (line 2697) | function computeAutoPlacement(state, options) {
  function getExpandedFallbackPlacements (line 2737) | function getExpandedFallbackPlacements(placement) {
  function flip (line 2746) | function flip(_ref) {
  function getSideOffsets (line 2877) | function getSideOffsets(overflow, rect, preventedOffsets) {
  function isAnySideFullyClipped (line 2893) | function isAnySideFullyClipped(overflow) {
  function hide (line 2899) | function hide(_ref) {
  function distanceAndSkiddingToXY (line 2936) | function distanceAndSkiddingToXY(placement, rects, offset) {
  function offset (line 2957) | function offset(_ref2) {
  function popperOffsets (line 2988) | function popperOffsets(_ref) {
  function getAltAxis (line 3011) | function getAltAxis(axis) {
  function preventOverflow (line 3015) | function preventOverflow(_ref) {
  function getHTMLElementScroll (line 3146) | function getHTMLElementScroll(element) {
  function getNodeScroll (line 3153) | function getNodeScroll(node) {
  function isElementScaled (line 3161) | function isElementScaled(element) {
  function getCompositeRect (line 3170) | function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
  function order (line 3211) | function order(modifiers) {
  function orderModifiers (line 3243) | function orderModifiers(modifiers) {
  function debounce (line 3254) | function debounce(fn) {
  function mergeByName (line 3270) | function mergeByName(modifiers) {
  function areValidElements (line 3291) | function areValidElements() {
  function popperGenerator (line 3301) | function popperGenerator(generatorOptions) {
  class Dropdown (line 3596) | class Dropdown extends BaseComponent {
    method constructor (line 3597) | constructor(element, config) {
    method Default (line 3607) | static get Default() {
    method DefaultType (line 3610) | static get DefaultType() {
    method NAME (line 3613) | static get NAME() {
    method toggle (line 3618) | toggle() {
    method show (line 3621) | show() {
    method hide (line 3649) | hide() {
    method dispose (line 3658) | dispose() {
    method update (line 3664) | update() {
    method _completeHide (line 3672) | _completeHide(relatedTarget) {
    method _getConfig (line 3694) | _getConfig(config) {
    method _createPopper (line 3702) | _createPopper() {
    method _isShown (line 3717) | _isShown() {
    method _getPlacement (line 3720) | _getPlacement() {
    method _detectNavbar (line 3742) | _detectNavbar() {
    method _getOffset (line 3745) | _getOffset() {
    method _getPopperConfig (line 3757) | _getPopperConfig() {
    method _selectMenuItem (line 3786) | _selectMenuItem({
    method jQueryInterface (line 3801) | static jQueryInterface(config) {
    method clearMenus (line 3813) | static clearMenus(event) {
    method dataApiKeydownHandler (line 3842) | static dataApiKeydownHandler(event) {
  class Backdrop (line 3930) | class Backdrop extends Config {
    method constructor (line 3931) | constructor(config) {
    method Default (line 3939) | static get Default() {
    method DefaultType (line 3942) | static get DefaultType() {
    method NAME (line 3945) | static get NAME() {
    method show (line 3950) | show(callback) {
    method hide (line 3965) | hide(callback) {
    method dispose (line 3976) | dispose() {
    method _getElement (line 3986) | _getElement() {
    method _configAfterMerge (line 3997) | _configAfterMerge(config) {
    method _append (line 4002) | _append() {
    method _emulateAnimation (line 4013) | _emulateAnimation(callback) {
  class FocusTrap (line 4051) | class FocusTrap extends Config {
    method constructor (line 4052) | constructor(config) {
    method Default (line 4060) | static get Default() {
    method DefaultType (line 4063) | static get DefaultType() {
    method NAME (line 4066) | static get NAME() {
    method activate (line 4071) | activate() {
    method deactivate (line 4083) | deactivate() {
    method _handleFocusin (line 4092) | _handleFocusin(event) {
    method _handleKeydown (line 4108) | _handleKeydown(event) {
  class ScrollBarHelper (line 4137) | class ScrollBarHelper {
    method constructor (line 4138) | constructor() {
    method getWidth (line 4143) | getWidth() {
    method hide (line 4148) | hide() {
    method reset (line 4157) | reset() {
    method isOverflowing (line 4163) | isOverflowing() {
    method _disableOverFlow (line 4168) | _disableOverFlow() {
    method _setElementAttributes (line 4172) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 4184) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 4190) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 4203) | _applyManipulationCallback(selector, callBack) {
  class Modal (line 4264) | class Modal extends BaseComponent {
    method constructor (line 4265) | constructor(element, config) {
    method Default (line 4277) | static get Default() {
    method DefaultType (line 4280) | static get DefaultType() {
    method NAME (line 4283) | static get NAME() {
    method toggle (line 4288) | toggle(relatedTarget) {
    method show (line 4291) | show(relatedTarget) {
    method hide (line 4308) | hide() {
    method dispose (line 4322) | dispose() {
    method handleUpdate (line 4329) | handleUpdate() {
    method _initializeBackDrop (line 4334) | _initializeBackDrop() {
    method _initializeFocusTrap (line 4341) | _initializeFocusTrap() {
    method _showElement (line 4346) | _showElement(relatedTarget) {
    method _addEventListeners (line 4373) | _addEventListeners() {
    method _hideModal (line 4405) | _hideModal() {
    method _isAnimated (line 4418) | _isAnimated() {
    method _triggerBackdropTransition (line 4421) | _triggerBackdropTransition() {
    method _adjustDialog (line 4449) | _adjustDialog() {
    method _resetAdjustments (line 4462) | _resetAdjustments() {
    method jQueryInterface (line 4468) | static jQueryInterface(config, relatedTarget) {
  class Offcanvas (line 4566) | class Offcanvas extends BaseComponent {
    method constructor (line 4567) | constructor(element, config) {
    method Default (line 4576) | static get Default() {
    method DefaultType (line 4579) | static get DefaultType() {
    method NAME (line 4582) | static get NAME() {
    method toggle (line 4587) | toggle(relatedTarget) {
    method show (line 4590) | show(relatedTarget) {
    method hide (line 4620) | hide() {
    method dispose (line 4644) | dispose() {
    method _initializeBackDrop (line 4651) | _initializeBackDrop() {
    method _initializeFocusTrap (line 4670) | _initializeFocusTrap() {
    method _addEventListeners (line 4675) | _addEventListeners() {
    method jQueryInterface (line 4689) | static jQueryInterface(config) {
  function sanitizeHtml (line 4818) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
  class TemplateFactory (line 4886) | class TemplateFactory extends Config {
    method constructor (line 4887) | constructor(config) {
    method Default (line 4893) | static get Default() {
    method DefaultType (line 4896) | static get DefaultType() {
    method NAME (line 4899) | static get NAME() {
    method getContent (line 4904) | getContent() {
    method hasContent (line 4907) | hasContent() {
    method changeContent (line 4910) | changeContent(content) {
    method toHtml (line 4918) | toHtml() {
    method _typeCheckConfig (line 4933) | _typeCheckConfig(config) {
    method _checkContent (line 4937) | _checkContent(arg) {
    method _setContent (line 4945) | _setContent(template, content, selector) {
    method _maybeSanitize (line 4965) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 4968) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 4971) | _putElementInTemplate(element, templateElement) {
  class Tooltip (line 5065) | class Tooltip extends BaseComponent {
    method constructor (line 5066) | constructor(element, config) {
    method Default (line 5090) | static get Default() {
    method DefaultType (line 5093) | static get DefaultType() {
    method NAME (line 5096) | static get NAME() {
    method enable (line 5101) | enable() {
    method disable (line 5104) | disable() {
    method toggleEnabled (line 5107) | toggleEnabled() {
    method toggle (line 5110) | toggle() {
    method dispose (line 5120) | dispose() {
    method show (line 5129) | show() {
    method hide (line 5175) | hide() {
    method update (line 5210) | update() {
    method _isWithContent (line 5217) | _isWithContent() {
    method _getTipElement (line 5220) | _getTipElement() {
    method _createTipElement (line 5226) | _createTipElement(content) {
    method setContent (line 5243) | setContent(content) {
    method _getTemplateFactory (line 5250) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 5264) | _getContentForTemplate() {
    method _getTitle (line 5269) | _getTitle() {
    method _initializeOnDelegatedTarget (line 5274) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 5277) | _isAnimated() {
    method _isShown (line 5280) | _isShown() {
    method _createPopper (line 5283) | _createPopper(tip) {
    method _getOffset (line 5288) | _getOffset() {
    method _resolvePossibleFunction (line 5300) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 5303) | _getPopperConfig(attachment) {
    method _setListeners (line 5342) | _setListeners() {
    method _fixTitle (line 5373) | _fixTitle() {
    method _enter (line 5384) | _enter() {
    method _leave (line 5396) | _leave() {
    method _setTimeout (line 5407) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 5411) | _isWithActiveTrigger() {
    method _getConfig (line 5414) | _getConfig(config) {
    method _configAfterMerge (line 5430) | _configAfterMerge(config) {
    method _getDelegateConfig (line 5446) | _getDelegateConfig() {
    method _disposePopper (line 5461) | _disposePopper() {
    method jQueryInterface (line 5473) | static jQueryInterface(config) {
  class Popover (line 5525) | class Popover extends Tooltip {
    method Default (line 5527) | static get Default() {
    method DefaultType (line 5530) | static get DefaultType() {
    method NAME (line 5533) | static get NAME() {
    method _isWithContent (line 5538) | _isWithContent() {
    method _getContentForTemplate (line 5543) | _getContentForTemplate() {
    method _getContent (line 5549) | _getContent() {
    method jQueryInterface (line 5554) | static jQueryInterface(config) {
  class ScrollSpy (line 5625) | class ScrollSpy extends BaseComponent {
    method constructor (line 5626) | constructor(element, config) {
    method Default (line 5643) | static get Default() {
    method DefaultType (line 5646) | static get DefaultType() {
    method NAME (line 5649) | static get NAME() {
    method refresh (line 5654) | refresh() {
    method dispose (line 5666) | dispose() {
    method _configAfterMerge (line 5672) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 5683) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 5709) | _getNewObserver() {
    method _observerCallback (line 5719) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 5751) | _initializeTargetsAndObservables() {
    method _process (line 5769) | _process(target) {
    method _activateParents (line 5781) | _activateParents(target) {
    method _clearActiveClass (line 5795) | _clearActiveClass(parent) {
    method jQueryInterface (line 5804) | static jQueryInterface(config) {
  class Tab (line 5880) | class Tab extends BaseComponent {
    method constructor (line 5881) | constructor(element) {
    method NAME (line 5896) | static get NAME() {
    method show (line 5901) | show() {
    method _activate (line 5924) | _activate(element, relatedElem) {
    method _deactivate (line 5945) | _deactivate(element, relatedElem) {
    method _keydown (line 5967) | _keydown(event) {
    method _getChildren (line 5988) | _getChildren() {
    method _getActiveElem (line 5992) | _getActiveElem() {
    method _setInitialAttributes (line 5995) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 6001) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 6017) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 6027) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 6042) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 6047) | _elemIsActive(elem) {
    method _getInnerElement (line 6052) | _getInnerElement(elem) {
    method _getOuterElement (line 6057) | _getOuterElement(elem) {
    method jQueryInterface (line 6062) | static jQueryInterface(config) {
  class Toast (line 6146) | class Toast extends BaseComponent {
    method constructor (line 6147) | constructor(element, config) {
    method Default (line 6156) | static get Default() {
    method DefaultType (line 6159) | static get DefaultType() {
    method NAME (line 6162) | static get NAME() {
    method show (line 6167) | show() {
    method hide (line 6186) | hide() {
    method dispose (line 6202) | dispose() {
    method isShown (line 6209) | isShown() {
    method _maybeScheduleHide (line 6214) | _maybeScheduleHide() {
    method _onInteraction (line 6225) | _onInteraction(event, isInteracting) {
    method _setListeners (line 6250) | _setListeners() {
    method _clearTimeout (line 6256) | _clearTimeout() {
    method jQueryInterface (line 6262) | static jQueryInterface(config) {

FILE: dist/js/bootstrap.esm.js
  method set (line 21) | set(element, key, instance) {
  method get (line 36) | get(element, key) {
  method remove (line 42) | remove(element, key) {
  constant MAX_UID (line 63) | const MAX_UID = 1000000;
  constant MILLISECONDS_MULTIPLIER (line 64) | const MILLISECONDS_MULTIPLIER = 1000;
  constant TRANSITION_END (line 65) | const TRANSITION_END = 'transitionend';
  function makeEventUid (line 329) | function makeEventUid(element, uid) {
  function getElementEvents (line 332) | function getElementEvents(element) {
  function bootstrapHandler (line 338) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 349) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 370) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 373) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 383) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 417) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 425) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 433) | function getTypeEvent(event) {
  method on (line 439) | on(element, event, handler, delegationFunction) {
  method one (line 442) | one(element, event, handler, delegationFunction) {
  method off (line 445) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 474) | trigger(element, event, args) {
  function hydrateObj (line 508) | function hydrateObj(obj, meta = {}) {
  function normalizeData (line 531) | function normalizeData(value) {
  function normalizeDataKey (line 553) | function normalizeDataKey(key) {
  method setDataAttribute (line 557) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 560) | removeDataAttribute(element, key) {
  method getDataAttributes (line 563) | getDataAttributes(element) {
  method getDataAttribute (line 576) | getDataAttribute(element, key) {
  class Config (line 593) | class Config {
    method Default (line 595) | static get Default() {
    method DefaultType (line 598) | static get DefaultType() {
    method NAME (line 601) | static get NAME() {
    method _getConfig (line 604) | _getConfig(config) {
    method _configAfterMerge (line 610) | _configAfterMerge(config) {
    method _mergeConfigObj (line 613) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 623) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
  constant VERSION (line 646) | const VERSION = '5.3.8';
  class BaseComponent (line 652) | class BaseComponent extends Config {
    method constructor (line 653) | constructor(element, config) {
    method dispose (line 665) | dispose() {
    method _queueCallback (line 674) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 677) | _getConfig(config) {
    method getInstance (line 685) | static getInstance(element) {
    method getOrCreateInstance (line 688) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 691) | static get VERSION() {
    method DATA_KEY (line 694) | static get DATA_KEY() {
    method EVENT_KEY (line 697) | static get EVENT_KEY() {
    method eventName (line 700) | static eventName(name) {
  method find (line 734) | find(selector, element = document.documentElement) {
  method findOne (line 737) | findOne(selector, element = document.documentElement) {
  method children (line 740) | children(element, selector) {
  method parents (line 743) | parents(element, selector) {
  method prev (line 752) | prev(element, selector) {
  method next (line 763) | next(element, selector) {
  method focusableChildren (line 773) | focusableChildren(element) {
  method getSelectorFromElement (line 777) | getSelectorFromElement(element) {
  method getElementFromSelector (line 784) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 788) | getMultipleElementsFromSelector(element) {
  constant EVENT_CLOSE (line 834) | const EVENT_CLOSE = `close${EVENT_KEY$b}`;
  constant EVENT_CLOSED (line 835) | const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
  class Alert (line 843) | class Alert extends BaseComponent {
    method NAME (line 845) | static get NAME() {
    method close (line 850) | close() {
    method _destroyElement (line 861) | _destroyElement() {
    method jQueryInterface (line 868) | static jQueryInterface(config) {
  class Button (line 918) | class Button extends BaseComponent {
    method NAME (line 920) | static get NAME() {
    method toggle (line 925) | toggle() {
    method jQueryInterface (line 931) | static jQueryInterface(config) {
  constant EVENT_TOUCHSTART (line 972) | const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
  constant EVENT_TOUCHMOVE (line 973) | const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
  constant EVENT_TOUCHEND (line 974) | const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
  constant EVENT_POINTERDOWN (line 975) | const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
  constant EVENT_POINTERUP (line 976) | const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
  constant POINTER_TYPE_TOUCH (line 977) | const POINTER_TYPE_TOUCH = 'touch';
  constant POINTER_TYPE_PEN (line 978) | const POINTER_TYPE_PEN = 'pen';
  constant CLASS_NAME_POINTER_EVENT (line 979) | const CLASS_NAME_POINTER_EVENT = 'pointer-event';
  constant SWIPE_THRESHOLD (line 980) | const SWIPE_THRESHOLD = 40;
  class Swipe (line 996) | class Swipe extends Config {
    method constructor (line 997) | constructor(element, config) {
    method Default (line 1010) | static get Default() {
    method DefaultType (line 1013) | static get DefaultType() {
    method NAME (line 1016) | static get NAME() {
    method dispose (line 1021) | dispose() {
    method _start (line 1026) | _start(event) {
    method _end (line 1035) | _end(event) {
    method _move (line 1042) | _move(event) {
    method _handleSwipe (line 1045) | _handleSwipe() {
    method _initEvents (line 1057) | _initEvents() {
    method _eventIsPointerPenTouch (line 1068) | _eventIsPointerPenTouch(event) {
    method isSupported (line 1073) | static isSupported() {
  constant TOUCHEVENT_COMPAT_WAIT (line 1096) | const TOUCHEVENT_COMPAT_WAIT = 500;
  constant ORDER_NEXT (line 1098) | const ORDER_NEXT = 'next';
  constant ORDER_PREV (line 1099) | const ORDER_PREV = 'prev';
  constant DIRECTION_LEFT (line 1100) | const DIRECTION_LEFT = 'left';
  constant DIRECTION_RIGHT (line 1101) | const DIRECTION_RIGHT = 'right';
  constant EVENT_SLIDE (line 1102) | const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
  constant EVENT_SLID (line 1103) | const EVENT_SLID = `slid${EVENT_KEY$8}`;
  constant EVENT_DRAG_START (line 1107) | const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
  constant CLASS_NAME_CAROUSEL (line 1110) | const CLASS_NAME_CAROUSEL = 'carousel';
  constant CLASS_NAME_SLIDE (line 1112) | const CLASS_NAME_SLIDE = 'slide';
  constant CLASS_NAME_END (line 1113) | const CLASS_NAME_END = 'carousel-item-end';
  constant CLASS_NAME_START (line 1114) | const CLASS_NAME_START = 'carousel-item-start';
  constant CLASS_NAME_NEXT (line 1115) | const CLASS_NAME_NEXT = 'carousel-item-next';
  constant CLASS_NAME_PREV (line 1116) | const CLASS_NAME_PREV = 'carousel-item-prev';
  constant SELECTOR_ACTIVE (line 1117) | const SELECTOR_ACTIVE = '.active';
  constant SELECTOR_ITEM (line 1118) | const SELECTOR_ITEM = '.carousel-item';
  constant SELECTOR_ACTIVE_ITEM (line 1119) | const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
  constant SELECTOR_ITEM_IMG (line 1120) | const SELECTOR_ITEM_IMG = '.carousel-item img';
  constant SELECTOR_INDICATORS (line 1121) | const SELECTOR_INDICATORS = '.carousel-indicators';
  constant SELECTOR_DATA_SLIDE (line 1122) | const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
  constant SELECTOR_DATA_RIDE (line 1123) | const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
  constant KEY_TO_DIRECTION (line 1124) | const KEY_TO_DIRECTION = {
  class Carousel (line 1150) | class Carousel extends BaseComponent {
    method constructor (line 1151) | constructor(element, config) {
    method Default (line 1166) | static get Default() {
    method DefaultType (line 1169) | static get DefaultType() {
    method NAME (line 1172) | static get NAME() {
    method next (line 1177) | next() {
    method nextWhenVisible (line 1180) | nextWhenVisible() {
    method prev (line 1188) | prev() {
    method pause (line 1191) | pause() {
    method cycle (line 1197) | cycle() {
    method _maybeEnableCycle (line 1202) | _maybeEnableCycle() {
    method to (line 1212) | to(index) {
    method dispose (line 1228) | dispose() {
    method _configAfterMerge (line 1236) | _configAfterMerge(config) {
    method _addEventListeners (line 1240) | _addEventListeners() {
    method _addTouchEventListeners (line 1252) | _addTouchEventListeners() {
    method _keydown (line 1282) | _keydown(event) {
    method _getItemIndex (line 1292) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 1295) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 1308) | _updateInterval() {
    method _slide (line 1316) | _slide(order, element = null) {
    method _isAnimated (line 1367) | _isAnimated() {
    method _getActive (line 1370) | _getActive() {
    method _getItems (line 1373) | _getItems() {
    method _clearInterval (line 1376) | _clearInterval() {
    method _directionToOrder (line 1382) | _directionToOrder(direction) {
    method _orderToDirection (line 1388) | _orderToDirection(order) {
    method jQueryInterface (line 1396) | static jQueryInterface(config) {
  constant CLASS_NAME_COLLAPSE (line 1473) | const CLASS_NAME_COLLAPSE = 'collapse';
  constant CLASS_NAME_COLLAPSING (line 1474) | const CLASS_NAME_COLLAPSING = 'collapsing';
  constant CLASS_NAME_COLLAPSED (line 1475) | const CLASS_NAME_COLLAPSED = 'collapsed';
  constant CLASS_NAME_DEEPER_CHILDREN (line 1476) | const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CL...
  constant CLASS_NAME_HORIZONTAL (line 1477) | const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
  constant WIDTH (line 1478) | const WIDTH = 'width';
  constant HEIGHT (line 1479) | const HEIGHT = 'height';
  constant SELECTOR_ACTIVES (line 1480) | const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
  class Collapse (line 1495) | class Collapse extends BaseComponent {
    method constructor (line 1496) | constructor(element, config) {
    method Default (line 1518) | static get Default() {
    method DefaultType (line 1521) | static get DefaultType() {
    method NAME (line 1524) | static get NAME() {
    method toggle (line 1529) | toggle() {
    method show (line 1536) | show() {
    method hide (line 1576) | hide() {
    method _isShown (line 1607) | _isShown(element = this._element) {
    method _configAfterMerge (line 1610) | _configAfterMerge(config) {
    method _getDimension (line 1615) | _getDimension() {
    method _initializeChildren (line 1618) | _initializeChildren() {
    method _getFirstLevelChildren (line 1630) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 1635) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 1646) | static jQueryInterface(config) {
  constant RIGHT_MOUSE_BUTTON (line 1705) | const RIGHT_MOUSE_BUTTON = 2;
  constant EVENT_KEYDOWN_DATA_API (line 1712) | const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
  constant EVENT_KEYUP_DATA_API (line 1713) | const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
  constant CLASS_NAME_DROPUP (line 1715) | const CLASS_NAME_DROPUP = 'dropup';
  constant CLASS_NAME_DROPEND (line 1716) | const CLASS_NAME_DROPEND = 'dropend';
  constant CLASS_NAME_DROPSTART (line 1717) | const CLASS_NAME_DROPSTART = 'dropstart';
  constant CLASS_NAME_DROPUP_CENTER (line 1718) | const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
  constant CLASS_NAME_DROPDOWN_CENTER (line 1719) | const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
  constant SELECTOR_DATA_TOGGLE_SHOWN (line 1721) | const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NA...
  constant SELECTOR_MENU (line 1722) | const SELECTOR_MENU = '.dropdown-menu';
  constant SELECTOR_NAVBAR (line 1723) | const SELECTOR_NAVBAR = '.navbar';
  constant SELECTOR_NAVBAR_NAV (line 1724) | const SELECTOR_NAVBAR_NAV = '.navbar-nav';
  constant SELECTOR_VISIBLE_ITEMS (line 1725) | const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disab...
  constant PLACEMENT_TOP (line 1726) | const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
  constant PLACEMENT_TOPEND (line 1727) | const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
  constant PLACEMENT_BOTTOM (line 1728) | const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
  constant PLACEMENT_BOTTOMEND (line 1729) | const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
  constant PLACEMENT_RIGHT (line 1730) | const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
  constant PLACEMENT_LEFT (line 1731) | const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
  constant PLACEMENT_TOPCENTER (line 1732) | const PLACEMENT_TOPCENTER = 'top';
  constant PLACEMENT_BOTTOMCENTER (line 1733) | const PLACEMENT_BOTTOMCENTER = 'bottom';
  class Dropdown (line 1755) | class Dropdown extends BaseComponent {
    method constructor (line 1756) | constructor(element, config) {
    method Default (line 1766) | static get Default() {
    method DefaultType (line 1769) | static get DefaultType() {
    method NAME (line 1772) | static get NAME() {
    method toggle (line 1777) | toggle() {
    method show (line 1780) | show() {
    method hide (line 1808) | hide() {
    method dispose (line 1817) | dispose() {
    method update (line 1823) | update() {
    method _completeHide (line 1831) | _completeHide(relatedTarget) {
    method _getConfig (line 1853) | _getConfig(config) {
    method _createPopper (line 1861) | _createPopper() {
    method _isShown (line 1876) | _isShown() {
    method _getPlacement (line 1879) | _getPlacement() {
    method _detectNavbar (line 1901) | _detectNavbar() {
    method _getOffset (line 1904) | _getOffset() {
    method _getPopperConfig (line 1916) | _getPopperConfig() {
    method _selectMenuItem (line 1945) | _selectMenuItem({
    method jQueryInterface (line 1960) | static jQueryInterface(config) {
    method clearMenus (line 1972) | static clearMenus(event) {
    method dataApiKeydownHandler (line 2001) | static dataApiKeydownHandler(event) {
  constant EVENT_MOUSEDOWN (line 2068) | const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
  class Backdrop (line 2089) | class Backdrop extends Config {
    method constructor (line 2090) | constructor(config) {
    method Default (line 2098) | static get Default() {
    method DefaultType (line 2101) | static get DefaultType() {
    method NAME (line 2104) | static get NAME() {
    method show (line 2109) | show(callback) {
    method hide (line 2124) | hide(callback) {
    method dispose (line 2135) | dispose() {
    method _getElement (line 2145) | _getElement() {
    method _configAfterMerge (line 2156) | _configAfterMerge(config) {
    method _append (line 2161) | _append() {
    method _emulateAnimation (line 2172) | _emulateAnimation(callback) {
  constant EVENT_KEYDOWN_TAB (line 2193) | const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
  constant TAB_KEY (line 2194) | const TAB_KEY = 'Tab';
  constant TAB_NAV_FORWARD (line 2195) | const TAB_NAV_FORWARD = 'forward';
  constant TAB_NAV_BACKWARD (line 2196) | const TAB_NAV_BACKWARD = 'backward';
  class FocusTrap (line 2210) | class FocusTrap extends Config {
    method constructor (line 2211) | constructor(config) {
    method Default (line 2219) | static get Default() {
    method DefaultType (line 2222) | static get DefaultType() {
    method NAME (line 2225) | static get NAME() {
    method activate (line 2230) | activate() {
    method deactivate (line 2242) | deactivate() {
    method _handleFocusin (line 2251) | _handleFocusin(event) {
    method _handleKeydown (line 2267) | _handleKeydown(event) {
  constant SELECTOR_FIXED_CONTENT (line 2287) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
  constant SELECTOR_STICKY_CONTENT (line 2288) | const SELECTOR_STICKY_CONTENT = '.sticky-top';
  constant PROPERTY_PADDING (line 2289) | const PROPERTY_PADDING = 'padding-right';
  constant PROPERTY_MARGIN (line 2290) | const PROPERTY_MARGIN = 'margin-right';
  class ScrollBarHelper (line 2296) | class ScrollBarHelper {
    method constructor (line 2297) | constructor() {
    method getWidth (line 2302) | getWidth() {
    method hide (line 2307) | hide() {
    method reset (line 2316) | reset() {
    method isOverflowing (line 2322) | isOverflowing() {
    method _disableOverFlow (line 2327) | _disableOverFlow() {
    method _setElementAttributes (line 2331) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 2343) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 2349) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 2362) | _applyManipulationCallback(selector, callBack) {
  constant EVENT_CLICK_DISMISS (line 2396) | const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
  constant EVENT_MOUSEDOWN_DISMISS (line 2397) | const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
  constant CLASS_NAME_OPEN (line 2400) | const CLASS_NAME_OPEN = 'modal-open';
  constant CLASS_NAME_STATIC (line 2403) | const CLASS_NAME_STATIC = 'modal-static';
  constant SELECTOR_DIALOG (line 2405) | const SELECTOR_DIALOG = '.modal-dialog';
  constant SELECTOR_MODAL_BODY (line 2406) | const SELECTOR_MODAL_BODY = '.modal-body';
  class Modal (line 2423) | class Modal extends BaseComponent {
    method constructor (line 2424) | constructor(element, config) {
    method Default (line 2436) | static get Default() {
    method DefaultType (line 2439) | static get DefaultType() {
    method NAME (line 2442) | static get NAME() {
    method toggle (line 2447) | toggle(relatedTarget) {
    method show (line 2450) | show(relatedTarget) {
    method hide (line 2467) | hide() {
    method dispose (line 2481) | dispose() {
    method handleUpdate (line 2488) | handleUpdate() {
    method _initializeBackDrop (line 2493) | _initializeBackDrop() {
    method _initializeFocusTrap (line 2500) | _initializeFocusTrap() {
    method _showElement (line 2505) | _showElement(relatedTarget) {
    method _addEventListeners (line 2532) | _addEventListeners() {
    method _hideModal (line 2564) | _hideModal() {
    method _isAnimated (line 2577) | _isAnimated() {
    method _triggerBackdropTransition (line 2580) | _triggerBackdropTransition() {
    method _adjustDialog (line 2608) | _adjustDialog() {
    method _resetAdjustments (line 2621) | _resetAdjustments() {
    method jQueryInterface (line 2627) | static jQueryInterface(config, relatedTarget) {
  constant ESCAPE_KEY (line 2695) | const ESCAPE_KEY = 'Escape';
  constant CLASS_NAME_HIDING (line 2698) | const CLASS_NAME_HIDING = 'hiding';
  constant CLASS_NAME_BACKDROP (line 2699) | const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
  constant OPEN_SELECTOR (line 2700) | const OPEN_SELECTOR = '.offcanvas.show';
  constant EVENT_HIDE_PREVENTED (line 2704) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
  constant EVENT_RESIZE (line 2706) | const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
  constant EVENT_KEYDOWN_DISMISS (line 2708) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
  class Offcanvas (line 2725) | class Offcanvas extends BaseComponent {
    method constructor (line 2726) | constructor(element, config) {
    method Default (line 2735) | static get Default() {
    method DefaultType (line 2738) | static get DefaultType() {
    method NAME (line 2741) | static get NAME() {
    method toggle (line 2746) | toggle(relatedTarget) {
    method show (line 2749) | show(relatedTarget) {
    method hide (line 2779) | hide() {
    method dispose (line 2803) | dispose() {
    method _initializeBackDrop (line 2810) | _initializeBackDrop() {
    method _initializeFocusTrap (line 2829) | _initializeFocusTrap() {
    method _addEventListeners (line 2834) | _addEventListeners() {
    method jQueryInterface (line 2848) | static jQueryInterface(config) {
  constant ARIA_ATTRIBUTE_PATTERN (line 2917) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
  constant SAFE_URL_PATTERN (line 2964) | const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[...
  function sanitizeHtml (line 2977) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
  class TemplateFactory (line 3045) | class TemplateFactory extends Config {
    method constructor (line 3046) | constructor(config) {
    method Default (line 3052) | static get Default() {
    method DefaultType (line 3055) | static get DefaultType() {
    method NAME (line 3058) | static get NAME() {
    method getContent (line 3063) | getContent() {
    method hasContent (line 3066) | hasContent() {
    method changeContent (line 3069) | changeContent(content) {
    method toHtml (line 3077) | toHtml() {
    method _typeCheckConfig (line 3092) | _typeCheckConfig(config) {
    method _checkContent (line 3096) | _checkContent(arg) {
    method _setContent (line 3104) | _setContent(template, content, selector) {
    method _maybeSanitize (line 3124) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 3127) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 3130) | _putElementInTemplate(element, templateElement) {
  constant DISALLOWED_ATTRIBUTES (line 3153) | const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitiz...
  constant CLASS_NAME_MODAL (line 3155) | const CLASS_NAME_MODAL = 'modal';
  constant SELECTOR_TOOLTIP_INNER (line 3157) | const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
  constant SELECTOR_MODAL (line 3158) | const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
  constant EVENT_MODAL_HIDE (line 3159) | const EVENT_MODAL_HIDE = 'hide.bs.modal';
  constant TRIGGER_HOVER (line 3160) | const TRIGGER_HOVER = 'hover';
  constant TRIGGER_FOCUS (line 3161) | const TRIGGER_FOCUS = 'focus';
  constant TRIGGER_CLICK (line 3162) | const TRIGGER_CLICK = 'click';
  constant TRIGGER_MANUAL (line 3163) | const TRIGGER_MANUAL = 'manual';
  constant EVENT_INSERTED (line 3168) | const EVENT_INSERTED = 'inserted';
  constant EVENT_MOUSEENTER (line 3172) | const EVENT_MOUSEENTER = 'mouseenter';
  constant EVENT_MOUSELEAVE (line 3173) | const EVENT_MOUSELEAVE = 'mouseleave';
  class Tooltip (line 3224) | class Tooltip extends BaseComponent {
    method constructor (line 3225) | constructor(element, config) {
    method Default (line 3249) | static get Default() {
    method DefaultType (line 3252) | static get DefaultType() {
    method NAME (line 3255) | static get NAME() {
    method enable (line 3260) | enable() {
    method disable (line 3263) | disable() {
    method toggleEnabled (line 3266) | toggleEnabled() {
    method toggle (line 3269) | toggle() {
    method dispose (line 3279) | dispose() {
    method show (line 3288) | show() {
    method hide (line 3334) | hide() {
    method update (line 3369) | update() {
    method _isWithContent (line 3376) | _isWithContent() {
    method _getTipElement (line 3379) | _getTipElement() {
    method _createTipElement (line 3385) | _createTipElement(content) {
    method setContent (line 3402) | setContent(content) {
    method _getTemplateFactory (line 3409) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 3423) | _getContentForTemplate() {
    method _getTitle (line 3428) | _getTitle() {
    method _initializeOnDelegatedTarget (line 3433) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 3436) | _isAnimated() {
    method _isShown (line 3439) | _isShown() {
    method _createPopper (line 3442) | _createPopper(tip) {
    method _getOffset (line 3447) | _getOffset() {
    method _resolvePossibleFunction (line 3459) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 3462) | _getPopperConfig(attachment) {
    method _setListeners (line 3501) | _setListeners() {
    method _fixTitle (line 3532) | _fixTitle() {
    method _enter (line 3543) | _enter() {
    method _leave (line 3555) | _leave() {
    method _setTimeout (line 3566) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 3570) | _isWithActiveTrigger() {
    method _getConfig (line 3573) | _getConfig(config) {
    method _configAfterMerge (line 3589) | _configAfterMerge(config) {
    method _getDelegateConfig (line 3605) | _getDelegateConfig() {
    method _disposePopper (line 3620) | _disposePopper() {
    method jQueryInterface (line 3632) | static jQueryInterface(config) {
  constant SELECTOR_TITLE (line 3665) | const SELECTOR_TITLE = '.popover-header';
  constant SELECTOR_CONTENT (line 3666) | const SELECTOR_CONTENT = '.popover-body';
  class Popover (line 3684) | class Popover extends Tooltip {
    method Default (line 3686) | static get Default() {
    method DefaultType (line 3689) | static get DefaultType() {
    method NAME (line 3692) | static get NAME() {
    method _isWithContent (line 3697) | _isWithContent() {
    method _getContentForTemplate (line 3702) | _getContentForTemplate() {
    method _getContent (line 3708) | _getContent() {
    method jQueryInterface (line 3713) | static jQueryInterface(config) {
  constant DATA_API_KEY (line 3748) | const DATA_API_KEY = '.data-api';
  constant EVENT_ACTIVATE (line 3749) | const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
  constant EVENT_CLICK (line 3750) | const EVENT_CLICK = `click${EVENT_KEY$2}`;
  constant CLASS_NAME_DROPDOWN_ITEM (line 3752) | const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
  constant SELECTOR_DATA_SPY (line 3754) | const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
  constant SELECTOR_TARGET_LINKS (line 3755) | const SELECTOR_TARGET_LINKS = '[href]';
  constant SELECTOR_NAV_LIST_GROUP (line 3756) | const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
  constant SELECTOR_NAV_LINKS (line 3757) | const SELECTOR_NAV_LINKS = '.nav-link';
  constant SELECTOR_NAV_ITEMS (line 3758) | const SELECTOR_NAV_ITEMS = '.nav-item';
  constant SELECTOR_LIST_ITEMS (line 3759) | const SELECTOR_LIST_ITEMS = '.list-group-item';
  constant SELECTOR_LINK_ITEMS (line 3760) | const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS...
  constant SELECTOR_DROPDOWN (line 3761) | const SELECTOR_DROPDOWN = '.dropdown';
  class ScrollSpy (line 3784) | class ScrollSpy extends BaseComponent {
    method constructor (line 3785) | constructor(element, config) {
    method Default (line 3802) | static get Default() {
    method DefaultType (line 3805) | static get DefaultType() {
    method NAME (line 3808) | static get NAME() {
    method refresh (line 3813) | refresh() {
    method dispose (line 3825) | dispose() {
    method _configAfterMerge (line 3831) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 3842) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 3868) | _getNewObserver() {
    method _observerCallback (line 3878) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 3910) | _initializeTargetsAndObservables() {
    method _process (line 3928) | _process(target) {
    method _activateParents (line 3940) | _activateParents(target) {
    method _clearActiveClass (line 3954) | _clearActiveClass(parent) {
    method jQueryInterface (line 3963) | static jQueryInterface(config) {
  constant EVENT_CLICK_DATA_API (line 4012) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
  constant EVENT_KEYDOWN (line 4013) | const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
  constant EVENT_LOAD_DATA_API (line 4014) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
  constant ARROW_LEFT_KEY (line 4015) | const ARROW_LEFT_KEY = 'ArrowLeft';
  constant ARROW_RIGHT_KEY (line 4016) | const ARROW_RIGHT_KEY = 'ArrowRight';
  constant ARROW_UP_KEY (line 4017) | const ARROW_UP_KEY = 'ArrowUp';
  constant ARROW_DOWN_KEY (line 4018) | const ARROW_DOWN_KEY = 'ArrowDown';
  constant HOME_KEY (line 4019) | const HOME_KEY = 'Home';
  constant END_KEY (line 4020) | const END_KEY = 'End';
  constant CLASS_NAME_ACTIVE (line 4021) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_DROPDOWN (line 4024) | const CLASS_DROPDOWN = 'dropdown';
  constant SELECTOR_DROPDOWN_TOGGLE (line 4025) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  constant SELECTOR_DROPDOWN_MENU (line 4026) | const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
  constant NOT_SELECTOR_DROPDOWN_TOGGLE (line 4027) | const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
  constant SELECTOR_TAB_PANEL (line 4028) | const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
  constant SELECTOR_OUTER (line 4029) | const SELECTOR_OUTER = '.nav-item, .list-group-item';
  constant SELECTOR_INNER (line 4030) | const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-...
  constant SELECTOR_DATA_TOGGLE (line 4031) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="p...
  constant SELECTOR_INNER_ELEM (line 4032) | const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
  constant SELECTOR_DATA_TOGGLE_ACTIVE (line 4033) | const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggl...
  class Tab (line 4039) | class Tab extends BaseComponent {
    method constructor (line 4040) | constructor(element) {
    method NAME (line 4055) | static get NAME() {
    method show (line 4060) | show() {
    method _activate (line 4083) | _activate(element, relatedElem) {
    method _deactivate (line 4104) | _deactivate(element, relatedElem) {
    method _keydown (line 4126) | _keydown(event) {
    method _getChildren (line 4147) | _getChildren() {
    method _getActiveElem (line 4151) | _getActiveElem() {
    method _setInitialAttributes (line 4154) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 4160) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 4176) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 4186) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 4201) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 4206) | _elemIsActive(elem) {
    method _getInnerElement (line 4211) | _getInnerElement(elem) {
    method _getOuterElement (line 4216) | _getOuterElement(elem) {
    method jQueryInterface (line 4221) | static jQueryInterface(config) {
  constant NAME (line 4275) | const NAME = 'toast';
  constant DATA_KEY (line 4276) | const DATA_KEY = 'bs.toast';
  constant EVENT_KEY (line 4277) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_MOUSEOVER (line 4278) | const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
  constant EVENT_MOUSEOUT (line 4279) | const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
  constant EVENT_FOCUSIN (line 4280) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  constant EVENT_FOCUSOUT (line 4281) | const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
  constant EVENT_HIDE (line 4282) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 4283) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 4284) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 4285) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant CLASS_NAME_FADE (line 4286) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_HIDE (line 4287) | const CLASS_NAME_HIDE = 'hide';
  constant CLASS_NAME_SHOW (line 4288) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_SHOWING (line 4289) | const CLASS_NAME_SHOWING = 'showing';
  class Toast (line 4305) | class Toast extends BaseComponent {
    method constructor (line 4306) | constructor(element, config) {
    method Default (line 4315) | static get Default() {
    method DefaultType (line 4318) | static get DefaultType() {
    method NAME (line 4321) | static get NAME() {
    method show (line 4326) | show() {
    method hide (line 4345) | hide() {
    method dispose (line 4361) | dispose() {
    method isShown (line 4368) | isShown() {
    method _maybeScheduleHide (line 4373) | _maybeScheduleHide() {
    method _onInteraction (line 4384) | _onInteraction(event, isInteracting) {
    method _setListeners (line 4409) | _setListeners() {
    method _clearTimeout (line 4415) | _clearTimeout() {
    method jQueryInterface (line 4421) | static jQueryInterface(config) {

FILE: dist/js/bootstrap.js
  function _interopNamespaceDefault (line 12) | function _interopNamespaceDefault(e) {
  method set (line 44) | set(element, key, instance) {
  method get (line 59) | get(element, key) {
  method remove (line 65) | remove(element, key) {
  function makeEventUid (line 352) | function makeEventUid(element, uid) {
  function getElementEvents (line 355) | function getElementEvents(element) {
  function bootstrapHandler (line 361) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 372) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 393) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 396) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 406) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 440) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 448) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 456) | function getTypeEvent(event) {
  method on (line 462) | on(element, event, handler, delegationFunction) {
  method one (line 465) | one(element, event, handler, delegationFunction) {
  method off (line 468) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 497) | trigger(element, event, args) {
  function hydrateObj (line 531) | function hydrateObj(obj, meta = {}) {
  function normalizeData (line 554) | function normalizeData(value) {
  function normalizeDataKey (line 576) | function normalizeDataKey(key) {
  method setDataAttribute (line 580) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 583) | removeDataAttribute(element, key) {
  method getDataAttributes (line 586) | getDataAttributes(element) {
  method getDataAttribute (line 599) | getDataAttribute(element, key) {
  class Config (line 616) | class Config {
    method Default (line 618) | static get Default() {
    method DefaultType (line 621) | static get DefaultType() {
    method NAME (line 624) | static get NAME() {
    method _getConfig (line 627) | _getConfig(config) {
    method _configAfterMerge (line 633) | _configAfterMerge(config) {
    method _mergeConfigObj (line 636) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 646) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
  class BaseComponent (line 675) | class BaseComponent extends Config {
    method constructor (line 676) | constructor(element, config) {
    method dispose (line 688) | dispose() {
    method _queueCallback (line 697) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 700) | _getConfig(config) {
    method getInstance (line 708) | static getInstance(element) {
    method getOrCreateInstance (line 711) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 714) | static get VERSION() {
    method DATA_KEY (line 717) | static get DATA_KEY() {
    method EVENT_KEY (line 720) | static get EVENT_KEY() {
    method eventName (line 723) | static eventName(name) {
  method find (line 757) | find(selector, element = document.documentElement) {
  method findOne (line 760) | findOne(selector, element = document.documentElement) {
  method children (line 763) | children(element, selector) {
  method parents (line 766) | parents(element, selector) {
  method prev (line 775) | prev(element, selector) {
  method next (line 786) | next(element, selector) {
  method focusableChildren (line 796) | focusableChildren(element) {
  method getSelectorFromElement (line 800) | getSelectorFromElement(element) {
  method getElementFromSelector (line 807) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 811) | getMultipleElementsFromSelector(element) {
  class Alert (line 866) | class Alert extends BaseComponent {
    method NAME (line 868) | static get NAME() {
    method close (line 873) | close() {
    method _destroyElement (line 884) | _destroyElement() {
    method jQueryInterface (line 891) | static jQueryInterface(config) {
  class Button (line 941) | class Button extends BaseComponent {
    method NAME (line 943) | static get NAME() {
    method toggle (line 948) | toggle() {
    method jQueryInterface (line 954) | static jQueryInterface(config) {
  class Swipe (line 1019) | class Swipe extends Config {
    method constructor (line 1020) | constructor(element, config) {
    method Default (line 1033) | static get Default() {
    method DefaultType (line 1036) | static get DefaultType() {
    method NAME (line 1039) | static get NAME() {
    method dispose (line 1044) | dispose() {
    method _start (line 1049) | _start(event) {
    method _end (line 1058) | _end(event) {
    method _move (line 1065) | _move(event) {
    method _handleSwipe (line 1068) | _handleSwipe() {
    method _initEvents (line 1080) | _initEvents() {
    method _eventIsPointerPenTouch (line 1091) | _eventIsPointerPenTouch(event) {
    method isSupported (line 1096) | static isSupported() {
  class Carousel (line 1173) | class Carousel extends BaseComponent {
    method constructor (line 1174) | constructor(element, config) {
    method Default (line 1189) | static get Default() {
    method DefaultType (line 1192) | static get DefaultType() {
    method NAME (line 1195) | static get NAME() {
    method next (line 1200) | next() {
    method nextWhenVisible (line 1203) | nextWhenVisible() {
    method prev (line 1211) | prev() {
    method pause (line 1214) | pause() {
    method cycle (line 1220) | cycle() {
    method _maybeEnableCycle (line 1225) | _maybeEnableCycle() {
    method to (line 1235) | to(index) {
    method dispose (line 1251) | dispose() {
    method _configAfterMerge (line 1259) | _configAfterMerge(config) {
    method _addEventListeners (line 1263) | _addEventListeners() {
    method _addTouchEventListeners (line 1275) | _addTouchEventListeners() {
    method _keydown (line 1305) | _keydown(event) {
    method _getItemIndex (line 1315) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 1318) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 1331) | _updateInterval() {
    method _slide (line 1339) | _slide(order, element = null) {
    method _isAnimated (line 1390) | _isAnimated() {
    method _getActive (line 1393) | _getActive() {
    method _getItems (line 1396) | _getItems() {
    method _clearInterval (line 1399) | _clearInterval() {
    method _directionToOrder (line 1405) | _directionToOrder(direction) {
    method _orderToDirection (line 1411) | _orderToDirection(order) {
    method jQueryInterface (line 1419) | static jQueryInterface(config) {
  class Collapse (line 1518) | class Collapse extends BaseComponent {
    method constructor (line 1519) | constructor(element, config) {
    method Default (line 1541) | static get Default() {
    method DefaultType (line 1544) | static get DefaultType() {
    method NAME (line 1547) | static get NAME() {
    method toggle (line 1552) | toggle() {
    method show (line 1559) | show() {
    method hide (line 1599) | hide() {
    method _isShown (line 1630) | _isShown(element = this._element) {
    method _configAfterMerge (line 1633) | _configAfterMerge(config) {
    method _getDimension (line 1638) | _getDimension() {
    method _initializeChildren (line 1641) | _initializeChildren() {
    method _getFirstLevelChildren (line 1653) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 1658) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 1669) | static jQueryInterface(config) {
  class Dropdown (line 1778) | class Dropdown extends BaseComponent {
    method constructor (line 1779) | constructor(element, config) {
    method Default (line 1789) | static get Default() {
    method DefaultType (line 1792) | static get DefaultType() {
    method NAME (line 1795) | static get NAME() {
    method toggle (line 1800) | toggle() {
    method show (line 1803) | show() {
    method hide (line 1831) | hide() {
    method dispose (line 1840) | dispose() {
    method update (line 1846) | update() {
    method _completeHide (line 1854) | _completeHide(relatedTarget) {
    method _getConfig (line 1876) | _getConfig(config) {
    method _createPopper (line 1884) | _createPopper() {
    method _isShown (line 1899) | _isShown() {
    method _getPlacement (line 1902) | _getPlacement() {
    method _detectNavbar (line 1924) | _detectNavbar() {
    method _getOffset (line 1927) | _getOffset() {
    method _getPopperConfig (line 1939) | _getPopperConfig() {
    method _selectMenuItem (line 1968) | _selectMenuItem({
    method jQueryInterface (line 1983) | static jQueryInterface(config) {
    method clearMenus (line 1995) | static clearMenus(event) {
    method dataApiKeydownHandler (line 2024) | static dataApiKeydownHandler(event) {
  class Backdrop (line 2112) | class Backdrop extends Config {
    method constructor (line 2113) | constructor(config) {
    method Default (line 2121) | static get Default() {
    method DefaultType (line 2124) | static get DefaultType() {
    method NAME (line 2127) | static get NAME() {
    method show (line 2132) | show(callback) {
    method hide (line 2147) | hide(callback) {
    method dispose (line 2158) | dispose() {
    method _getElement (line 2168) | _getElement() {
    method _configAfterMerge (line 2179) | _configAfterMerge(config) {
    method _append (line 2184) | _append() {
    method _emulateAnimation (line 2195) | _emulateAnimation(callback) {
  class FocusTrap (line 2233) | class FocusTrap extends Config {
    method constructor (line 2234) | constructor(config) {
    method Default (line 2242) | static get Default() {
    method DefaultType (line 2245) | static get DefaultType() {
    method NAME (line 2248) | static get NAME() {
    method activate (line 2253) | activate() {
    method deactivate (line 2265) | deactivate() {
    method _handleFocusin (line 2274) | _handleFocusin(event) {
    method _handleKeydown (line 2290) | _handleKeydown(event) {
  class ScrollBarHelper (line 2319) | class ScrollBarHelper {
    method constructor (line 2320) | constructor() {
    method getWidth (line 2325) | getWidth() {
    method hide (line 2330) | hide() {
    method reset (line 2339) | reset() {
    method isOverflowing (line 2345) | isOverflowing() {
    method _disableOverFlow (line 2350) | _disableOverFlow() {
    method _setElementAttributes (line 2354) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 2366) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 2372) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 2385) | _applyManipulationCallback(selector, callBack) {
  class Modal (line 2446) | class Modal extends BaseComponent {
    method constructor (line 2447) | constructor(element, config) {
    method Default (line 2459) | static get Default() {
    method DefaultType (line 2462) | static get DefaultType() {
    method NAME (line 2465) | static get NAME() {
    method toggle (line 2470) | toggle(relatedTarget) {
    method show (line 2473) | show(relatedTarget) {
    method hide (line 2490) | hide() {
    method dispose (line 2504) | dispose() {
    method handleUpdate (line 2511) | handleUpdate() {
    method _initializeBackDrop (line 2516) | _initializeBackDrop() {
    method _initializeFocusTrap (line 2523) | _initializeFocusTrap() {
    method _showElement (line 2528) | _showElement(relatedTarget) {
    method _addEventListeners (line 2555) | _addEventListeners() {
    method _hideModal (line 2587) | _hideModal() {
    method _isAnimated (line 2600) | _isAnimated() {
    method _triggerBackdropTransition (line 2603) | _triggerBackdropTransition() {
    method _adjustDialog (line 2631) | _adjustDialog() {
    method _resetAdjustments (line 2644) | _resetAdjustments() {
    method jQueryInterface (line 2650) | static jQueryInterface(config, relatedTarget) {
  class Offcanvas (line 2748) | class Offcanvas extends BaseComponent {
    method constructor (line 2749) | constructor(element, config) {
    method Default (line 2758) | static get Default() {
    method DefaultType (line 2761) | static get DefaultType() {
    method NAME (line 2764) | static get NAME() {
    method toggle (line 2769) | toggle(relatedTarget) {
    method show (line 2772) | show(relatedTarget) {
    method hide (line 2802) | hide() {
    method dispose (line 2826) | dispose() {
    method _initializeBackDrop (line 2833) | _initializeBackDrop() {
    method _initializeFocusTrap (line 2852) | _initializeFocusTrap() {
    method _addEventListeners (line 2857) | _addEventListeners() {
    method jQueryInterface (line 2871) | static jQueryInterface(config) {
  function sanitizeHtml (line 3000) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
  class TemplateFactory (line 3068) | class TemplateFactory extends Config {
    method constructor (line 3069) | constructor(config) {
    method Default (line 3075) | static get Default() {
    method DefaultType (line 3078) | static get DefaultType() {
    method NAME (line 3081) | static get NAME() {
    method getContent (line 3086) | getContent() {
    method hasContent (line 3089) | hasContent() {
    method changeContent (line 3092) | changeContent(content) {
    method toHtml (line 3100) | toHtml() {
    method _typeCheckConfig (line 3115) | _typeCheckConfig(config) {
    method _checkContent (line 3119) | _checkContent(arg) {
    method _setContent (line 3127) | _setContent(template, content, selector) {
    method _maybeSanitize (line 3147) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 3150) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 3153) | _putElementInTemplate(element, templateElement) {
  class Tooltip (line 3247) | class Tooltip extends BaseComponent {
    method constructor (line 3248) | constructor(element, config) {
    method Default (line 3272) | static get Default() {
    method DefaultType (line 3275) | static get DefaultType() {
    method NAME (line 3278) | static get NAME() {
    method enable (line 3283) | enable() {
    method disable (line 3286) | disable() {
    method toggleEnabled (line 3289) | toggleEnabled() {
    method toggle (line 3292) | toggle() {
    method dispose (line 3302) | dispose() {
    method show (line 3311) | show() {
    method hide (line 3357) | hide() {
    method update (line 3392) | update() {
    method _isWithContent (line 3399) | _isWithContent() {
    method _getTipElement (line 3402) | _getTipElement() {
    method _createTipElement (line 3408) | _createTipElement(content) {
    method setContent (line 3425) | setContent(content) {
    method _getTemplateFactory (line 3432) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 3446) | _getContentForTemplate() {
    method _getTitle (line 3451) | _getTitle() {
    method _initializeOnDelegatedTarget (line 3456) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 3459) | _isAnimated() {
    method _isShown (line 3462) | _isShown() {
    method _createPopper (line 3465) | _createPopper(tip) {
    method _getOffset (line 3470) | _getOffset() {
    method _resolvePossibleFunction (line 3482) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 3485) | _getPopperConfig(attachment) {
    method _setListeners (line 3524) | _setListeners() {
    method _fixTitle (line 3555) | _fixTitle() {
    method _enter (line 3566) | _enter() {
    method _leave (line 3578) | _leave() {
    method _setTimeout (line 3589) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 3593) | _isWithActiveTrigger() {
    method _getConfig (line 3596) | _getConfig(config) {
    method _configAfterMerge (line 3612) | _configAfterMerge(config) {
    method _getDelegateConfig (line 3628) | _getDelegateConfig() {
    method _disposePopper (line 3643) | _disposePopper() {
    method jQueryInterface (line 3655) | static jQueryInterface(config) {
  class Popover (line 3707) | class Popover extends Tooltip {
    method Default (line 3709) | static get Default() {
    method DefaultType (line 3712) | static get DefaultType() {
    method NAME (line 3715) | static get NAME() {
    method _isWithContent (line 3720) | _isWithContent() {
    method _getContentForTemplate (line 3725) | _getContentForTemplate() {
    method _getContent (line 3731) | _getContent() {
    method jQueryInterface (line 3736) | static jQueryInterface(config) {
  class ScrollSpy (line 3807) | class ScrollSpy extends BaseComponent {
    method constructor (line 3808) | constructor(element, config) {
    method Default (line 3825) | static get Default() {
    method DefaultType (line 3828) | static get DefaultType() {
    method NAME (line 3831) | static get NAME() {
    method refresh (line 3836) | refresh() {
    method dispose (line 3848) | dispose() {
    method _configAfterMerge (line 3854) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 3865) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 3891) | _getNewObserver() {
    method _observerCallback (line 3901) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 3933) | _initializeTargetsAndObservables() {
    method _process (line 3951) | _process(target) {
    method _activateParents (line 3963) | _activateParents(target) {
    method _clearActiveClass (line 3977) | _clearActiveClass(parent) {
    method jQueryInterface (line 3986) | static jQueryInterface(config) {
  class Tab (line 4062) | class Tab extends BaseComponent {
    method constructor (line 4063) | constructor(element) {
    method NAME (line 4078) | static get NAME() {
    method show (line 4083) | show() {
    method _activate (line 4106) | _activate(element, relatedElem) {
    method _deactivate (line 4127) | _deactivate(element, relatedElem) {
    method _keydown (line 4149) | _keydown(event) {
    method _getChildren (line 4170) | _getChildren() {
    method _getActiveElem (line 4174) | _getActiveElem() {
    method _setInitialAttributes (line 4177) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 4183) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 4199) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 4209) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 4224) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 4229) | _elemIsActive(elem) {
    method _getInnerElement (line 4234) | _getInnerElement(elem) {
    method _getOuterElement (line 4239) | _getOuterElement(elem) {
    method jQueryInterface (line 4244) | static jQueryInterface(config) {
  class Toast (line 4328) | class Toast extends BaseComponent {
    method constructor (line 4329) | constructor(element, config) {
    method Default (line 4338) | static get Default() {
    method DefaultType (line 4341) | static get DefaultType() {
    method NAME (line 4344) | static get NAME() {
    method show (line 4349) | show() {
    method hide (line 4368) | hide() {
    method dispose (line 4384) | dispose() {
    method isShown (line 4391) | isShown() {
    method _maybeScheduleHide (line 4396) | _maybeScheduleHide() {
    method _onInteraction (line 4407) | _onInteraction(event, isInteracting) {
    method _setListeners (line 4432) | _setListeners() {
    method _clearTimeout (line 4438) | _clearTimeout() {
    method jQueryInterface (line 4444) | static jQueryInterface(config) {

FILE: js/dist/alert.js
  class Alert (line 36) | class Alert extends BaseComponent {
    method NAME (line 38) | static get NAME() {
    method close (line 43) | close() {
    method _destroyElement (line 54) | _destroyElement() {
    method jQueryInterface (line 61) | static jQueryInterface(config) {

FILE: js/dist/base-component.js
  class BaseComponent (line 30) | class BaseComponent extends Config {
    method constructor (line 31) | constructor(element, config) {
    method dispose (line 43) | dispose() {
    method _queueCallback (line 52) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 55) | _getConfig(config) {
    method getInstance (line 63) | static getInstance(element) {
    method getOrCreateInstance (line 66) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 69) | static get VERSION() {
    method DATA_KEY (line 72) | static get DATA_KEY() {
    method EVENT_KEY (line 75) | static get EVENT_KEY() {
    method eventName (line 78) | static eventName(name) {

FILE: js/dist/button.js
  class Button (line 36) | class Button extends BaseComponent {
    method NAME (line 38) | static get NAME() {
    method toggle (line 43) | toggle() {
    method jQueryInterface (line 49) | static jQueryInterface(config) {

FILE: js/dist/carousel.js
  class Carousel (line 84) | class Carousel extends BaseComponent {
    method constructor (line 85) | constructor(element, config) {
    method Default (line 100) | static get Default() {
    method DefaultType (line 103) | static get DefaultType() {
    method NAME (line 106) | static get NAME() {
    method next (line 111) | next() {
    method nextWhenVisible (line 114) | nextWhenVisible() {
    method prev (line 122) | prev() {
    method pause (line 125) | pause() {
    method cycle (line 131) | cycle() {
    method _maybeEnableCycle (line 136) | _maybeEnableCycle() {
    method to (line 146) | to(index) {
    method dispose (line 162) | dispose() {
    method _configAfterMerge (line 170) | _configAfterMerge(config) {
    method _addEventListeners (line 174) | _addEventListeners() {
    method _addTouchEventListeners (line 186) | _addTouchEventListeners() {
    method _keydown (line 216) | _keydown(event) {
    method _getItemIndex (line 226) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 229) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 242) | _updateInterval() {
    method _slide (line 250) | _slide(order, element = null) {
    method _isAnimated (line 301) | _isAnimated() {
    method _getActive (line 304) | _getActive() {
    method _getItems (line 307) | _getItems() {
    method _clearInterval (line 310) | _clearInterval() {
    method _directionToOrder (line 316) | _directionToOrder(direction) {
    method _orderToDirection (line 322) | _orderToDirection(order) {
    method jQueryInterface (line 330) | static jQueryInterface(config) {

FILE: js/dist/collapse.js
  class Collapse (line 56) | class Collapse extends BaseComponent {
    method constructor (line 57) | constructor(element, config) {
    method Default (line 79) | static get Default() {
    method DefaultType (line 82) | static get DefaultType() {
    method NAME (line 85) | static get NAME() {
    method toggle (line 90) | toggle() {
    method show (line 97) | show() {
    method hide (line 137) | hide() {
    method _isShown (line 168) | _isShown(element = this._element) {
    method _configAfterMerge (line 171) | _configAfterMerge(config) {
    method _getDimension (line 176) | _getDimension() {
    method _initializeChildren (line 179) | _initializeChildren() {
    method _getFirstLevelChildren (line 191) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 196) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 207) | static jQueryInterface(config) {

FILE: js/dist/dom/data.js
  method set (line 25) | set(element, key, instance) {
  method get (line 40) | get(element, key) {
  method remove (line 46) | remove(element, key) {

FILE: js/dist/dom/event-handler.js
  function makeEventUid (line 39) | function makeEventUid(element, uid) {
  function getElementEvents (line 42) | function getElementEvents(element) {
  function bootstrapHandler (line 48) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 59) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 80) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 83) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 93) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 127) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 135) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 143) | function getTypeEvent(event) {
  method on (line 149) | on(element, event, handler, delegationFunction) {
  method one (line 152) | one(element, event, handler, delegationFunction) {
  method off (line 155) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 184) | trigger(element, event, args) {
  function hydrateObj (line 218) | function hydrateObj(obj, meta = {}) {

FILE: js/dist/dom/manipulator.js
  function normalizeData (line 19) | function normalizeData(value) {
  function normalizeDataKey (line 41) | function normalizeDataKey(key) {
  method setDataAttribute (line 45) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 48) | removeDataAttribute(element, key) {
  method getDataAttributes (line 51) | getDataAttributes(element) {
  method getDataAttribute (line 64) | getDataAttribute(element, key) {

FILE: js/dist/dom/selector-engine.js
  method find (line 41) | find(selector, element = document.documentElement) {
  method findOne (line 44) | findOne(selector, element = document.documentElement) {
  method children (line 47) | children(element, selector) {
  method parents (line 50) | parents(element, selector) {
  method prev (line 59) | prev(element, selector) {
  method next (line 70) | next(element, selector) {
  method focusableChildren (line 80) | focusableChildren(element) {
  method getSelectorFromElement (line 84) | getSelectorFromElement(element) {
  method getElementFromSelector (line 91) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 95) | getMultipleElementsFromSelector(element) {

FILE: js/dist/dropdown.js
  function _interopNamespaceDefault (line 12) | function _interopNamespaceDefault(e) {
  class Dropdown (line 101) | class Dropdown extends BaseComponent {
    method constructor (line 102) | constructor(element, config) {
    method Default (line 112) | static get Default() {
    method DefaultType (line 115) | static get DefaultType() {
    method NAME (line 118) | static get NAME() {
    method toggle (line 123) | toggle() {
    method show (line 126) | show() {
    method hide (line 154) | hide() {
    method dispose (line 163) | dispose() {
    method update (line 169) | update() {
    method _completeHide (line 177) | _completeHide(relatedTarget) {
    method _getConfig (line 199) | _getConfig(config) {
    method _createPopper (line 207) | _createPopper() {
    method _isShown (line 222) | _isShown() {
    method _getPlacement (line 225) | _getPlacement() {
    method _detectNavbar (line 247) | _detectNavbar() {
    method _getOffset (line 250) | _getOffset() {
    method _getPopperConfig (line 262) | _getPopperConfig() {
    method _selectMenuItem (line 291) | _selectMenuItem({
    method jQueryInterface (line 306) | static jQueryInterface(config) {
    method clearMenus (line 318) | static clearMenus(event) {
    method dataApiKeydownHandler (line 347) | static dataApiKeydownHandler(event) {

FILE: js/dist/modal.js
  class Modal (line 62) | class Modal extends BaseComponent {
    method constructor (line 63) | constructor(element, config) {
    method Default (line 75) | static get Default() {
    method DefaultType (line 78) | static get DefaultType() {
    method NAME (line 81) | static get NAME() {
    method toggle (line 86) | toggle(relatedTarget) {
    method show (line 89) | show(relatedTarget) {
    method hide (line 106) | hide() {
    method dispose (line 120) | dispose() {
    method handleUpdate (line 127) | handleUpdate() {
    method _initializeBackDrop (line 132) | _initializeBackDrop() {
    method _initializeFocusTrap (line 139) | _initializeFocusTrap() {
    method _showElement (line 144) | _showElement(relatedTarget) {
    method _addEventListeners (line 171) | _addEventListeners() {
    method _hideModal (line 203) | _hideModal() {
    method _isAnimated (line 216) | _isAnimated() {
    method _triggerBackdropTransition (line 219) | _triggerBackdropTransition() {
    method _adjustDialog (line 247) | _adjustDialog() {
    method _resetAdjustments (line 260) | _resetAdjustments() {
    method jQueryInterface (line 266) | static jQueryInterface(config, relatedTarget) {

FILE: js/dist/offcanvas.js
  class Offcanvas (line 59) | class Offcanvas extends BaseComponent {
    method constructor (line 60) | constructor(element, config) {
    method Default (line 69) | static get Default() {
    method DefaultType (line 72) | static get DefaultType() {
    method NAME (line 75) | static get NAME() {
    method toggle (line 80) | toggle(relatedTarget) {
    method show (line 83) | show(relatedTarget) {
    method hide (line 113) | hide() {
    method dispose (line 137) | dispose() {
    method _initializeBackDrop (line 144) | _initializeBackDrop() {
    method _initializeFocusTrap (line 163) | _initializeFocusTrap() {
    method _addEventListeners (line 168) | _addEventListeners() {
    method jQueryInterface (line 182) | static jQueryInterface(config) {

FILE: js/dist/popover.js
  class Popover (line 44) | class Popover extends Tooltip {
    method Default (line 46) | static get Default() {
    method DefaultType (line 49) | static get DefaultType() {
    method NAME (line 52) | static get NAME() {
    method _isWithContent (line 57) | _isWithContent() {
    method _getContentForTemplate (line 62) | _getContentForTemplate() {
    method _getContent (line 68) | _getContent() {
    method jQueryInterface (line 73) | static jQueryInterface(config) {

FILE: js/dist/scrollspy.js
  class ScrollSpy (line 63) | class ScrollSpy extends BaseComponent {
    method constructor (line 64) | constructor(element, config) {
    method Default (line 81) | static get Default() {
    method DefaultType (line 84) | static get DefaultType() {
    method NAME (line 87) | static get NAME() {
    method refresh (line 92) | refresh() {
    method dispose (line 104) | dispose() {
    method _configAfterMerge (line 110) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 121) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 147) | _getNewObserver() {
    method _observerCallback (line 157) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 189) | _initializeTargetsAndObservables() {
    method _process (line 207) | _process(target) {
    method _activateParents (line 219) | _activateParents(target) {
    method _clearActiveClass (line 233) | _clearActiveClass(parent) {
    method jQueryInterface (line 242) | static jQueryInterface(config) {

FILE: js/dist/tab.js
  class Tab (line 58) | class Tab extends BaseComponent {
    method constructor (line 59) | constructor(element) {
    method NAME (line 74) | static get NAME() {
    method show (line 79) | show() {
    method _activate (line 102) | _activate(element, relatedElem) {
    method _deactivate (line 123) | _deactivate(element, relatedElem) {
    method _keydown (line 145) | _keydown(event) {
    method _getChildren (line 166) | _getChildren() {
    method _getActiveElem (line 170) | _getActiveElem() {
    method _setInitialAttributes (line 173) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 179) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 195) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 205) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 220) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 225) | _elemIsActive(elem) {
    method _getInnerElement (line 230) | _getInnerElement(elem) {
    method _getOuterElement (line 235) | _getOuterElement(elem) {
    method jQueryInterface (line 240) | static jQueryInterface(config) {

FILE: js/dist/toast.js
  class Toast (line 54) | class Toast extends BaseComponent {
    method constructor (line 55) | constructor(element, config) {
    method Default (line 64) | static get Default() {
    method DefaultType (line 67) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method show (line 75) | show() {
    method hide (line 94) | hide() {
    method dispose (line 110) | dispose() {
    method isShown (line 117) | isShown() {
    method _maybeScheduleHide (line 122) | _maybeScheduleHide() {
    method _onInteraction (line 133) | _onInteraction(event, isInteracting) {
    method _setListeners (line 158) | _setListeners() {
    method _clearTimeout (line 164) | _clearTimeout() {
    method jQueryInterface (line 170) | static jQueryInterface(config) {

FILE: js/dist/tooltip.js
  function _interopNamespaceDefault (line 12) | function _interopNamespaceDefault(e) {
  class Tooltip (line 115) | class Tooltip extends BaseComponent {
    method constructor (line 116) | constructor(element, config) {
    method Default (line 140) | static get Default() {
    method DefaultType (line 143) | static get DefaultType() {
    method NAME (line 146) | static get NAME() {
    method enable (line 151) | enable() {
    method disable (line 154) | disable() {
    method toggleEnabled (line 157) | toggleEnabled() {
    method toggle (line 160) | toggle() {
    method dispose (line 170) | dispose() {
    method show (line 179) | show() {
    method hide (line 225) | hide() {
    method update (line 260) | update() {
    method _isWithContent (line 267) | _isWithContent() {
    method _getTipElement (line 270) | _getTipElement() {
    method _createTipElement (line 276) | _createTipElement(content) {
    method setContent (line 293) | setContent(content) {
    method _getTemplateFactory (line 300) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 314) | _getContentForTemplate() {
    method _getTitle (line 319) | _getTitle() {
    method _initializeOnDelegatedTarget (line 324) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 327) | _isAnimated() {
    method _isShown (line 330) | _isShown() {
    method _createPopper (line 333) | _createPopper(tip) {
    method _getOffset (line 338) | _getOffset() {
    method _resolvePossibleFunction (line 350) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 353) | _getPopperConfig(attachment) {
    method _setListeners (line 392) | _setListeners() {
    method _fixTitle (line 423) | _fixTitle() {
    method _enter (line 434) | _enter() {
    method _leave (line 446) | _leave() {
    method _setTimeout (line 457) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 461) | _isWithActiveTrigger() {
    method _getConfig (line 464) | _getConfig(config) {
    method _configAfterMerge (line 480) | _configAfterMerge(config) {
    method _getDelegateConfig (line 496) | _getDelegateConfig() {
    method _disposePopper (line 511) | _disposePopper() {
    method jQueryInterface (line 523) | static jQueryInterface(config) {

FILE: js/dist/util/backdrop.js
  class Backdrop (line 48) | class Backdrop extends Config {
    method constructor (line 49) | constructor(config) {
    method Default (line 57) | static get Default() {
    method DefaultType (line 60) | static get DefaultType() {
    method NAME (line 63) | static get NAME() {
    method show (line 68) | show(callback) {
    method hide (line 83) | hide(callback) {
    method dispose (line 94) | dispose() {
    method _getElement (line 104) | _getElement() {
    method _configAfterMerge (line 115) | _configAfterMerge(config) {
    method _append (line 120) | _append() {
    method _emulateAnimation (line 131) | _emulateAnimation(callback) {

FILE: js/dist/util/config.js
  class Config (line 24) | class Config {
    method Default (line 26) | static get Default() {
    method DefaultType (line 29) | static get DefaultType() {
    method NAME (line 32) | static get NAME() {
    method _getConfig (line 35) | _getConfig(config) {
    method _configAfterMerge (line 41) | _configAfterMerge(config) {
    method _mergeConfigObj (line 44) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 54) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

FILE: js/dist/util/focustrap.js
  class FocusTrap (line 45) | class FocusTrap extends Config {
    method constructor (line 46) | constructor(config) {
    method Default (line 54) | static get Default() {
    method DefaultType (line 57) | static get DefaultType() {
    method NAME (line 60) | static get NAME() {
    method activate (line 65) | activate() {
    method deactivate (line 77) | deactivate() {
    method _handleFocusin (line 86) | _handleFocusin(event) {
    method _handleKeydown (line 102) | _handleKeydown(event) {

FILE: js/dist/util/sanitizer.js
  function sanitizeHtml (line 80) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {

FILE: js/dist/util/scrollbar.js
  class ScrollBarHelper (line 33) | class ScrollBarHelper {
    method constructor (line 34) | constructor() {
    method getWidth (line 39) | getWidth() {
    method hide (line 44) | hide() {
    method reset (line 53) | reset() {
    method isOverflowing (line 59) | isOverflowing() {
    method _disableOverFlow (line 64) | _disableOverFlow() {
    method _setElementAttributes (line 68) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 80) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 86) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 99) | _applyManipulationCallback(selector, callBack) {

FILE: js/dist/util/swipe.js
  class Swipe (line 50) | class Swipe extends Config {
    method constructor (line 51) | constructor(element, config) {
    method Default (line 64) | static get Default() {
    method DefaultType (line 67) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method dispose (line 75) | dispose() {
    method _start (line 80) | _start(event) {
    method _end (line 89) | _end(event) {
    method _move (line 96) | _move(event) {
    method _handleSwipe (line 99) | _handleSwipe() {
    method _initEvents (line 111) | _initEvents() {
    method _eventIsPointerPenTouch (line 122) | _eventIsPointerPenTouch(event) {
    method isSupported (line 127) | static isSupported() {

FILE: js/dist/util/template-factory.js
  class TemplateFactory (line 53) | class TemplateFactory extends Config {
    method constructor (line 54) | constructor(config) {
    method Default (line 60) | static get Default() {
    method DefaultType (line 63) | static get DefaultType() {
    method NAME (line 66) | static get NAME() {
    method getContent (line 71) | getContent() {
    method hasContent (line 74) | hasContent() {
    method changeContent (line 77) | changeContent(content) {
    method toHtml (line 85) | toHtml() {
    method _typeCheckConfig (line 100) | _typeCheckConfig(config) {
    method _checkContent (line 104) | _checkContent(arg) {
    method _setContent (line 112) | _setContent(template, content, selector) {
    method _maybeSanitize (line 132) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 135) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 138) | _putElementInTemplate(element, templateElement) {

FILE: js/src/alert.js
  constant NAME (line 17) | const NAME = 'alert'
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.alert'
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`
  constant EVENT_CLOSE (line 21) | const EVENT_CLOSE = `close${EVENT_KEY}`
  constant EVENT_CLOSED (line 22) | const EVENT_CLOSED = `closed${EVENT_KEY}`
  constant CLASS_NAME_FADE (line 23) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_SHOW (line 24) | const CLASS_NAME_SHOW = 'show'
  class Alert (line 30) | class Alert extends BaseComponent {
    method NAME (line 32) | static get NAME() {
    method close (line 37) | close() {
    method _destroyElement (line 51) | _destroyElement() {
    method jQueryInterface (line 58) | static jQueryInterface(config) {

FILE: js/src/base-component.js
  constant VERSION (line 17) | const VERSION = '5.3.8'
  class BaseComponent (line 23) | class BaseComponent extends Config {
    method constructor (line 24) | constructor(element, config) {
    method dispose (line 39) | dispose() {
    method _queueCallback (line 49) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 53) | _getConfig(config) {
    method getInstance (line 61) | static getInstance(element) {
    method getOrCreateInstance (line 65) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 69) | static get VERSION() {
    method DATA_KEY (line 73) | static get DATA_KEY() {
    method EVENT_KEY (line 77) | static get EVENT_KEY() {
    method eventName (line 81) | static eventName(name) {

FILE: js/src/button.js
  constant NAME (line 16) | const NAME = 'button'
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.button'
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 19) | const DATA_API_KEY = '.data-api'
  constant CLASS_NAME_ACTIVE (line 21) | const CLASS_NAME_ACTIVE = 'active'
  constant SELECTOR_DATA_TOGGLE (line 22) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]'
  constant EVENT_CLICK_DATA_API (line 23) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  class Button (line 29) | class Button extends BaseComponent {
    method NAME (line 31) | static get NAME() {
    method toggle (line 36) | toggle() {
    method jQueryInterface (line 42) | static jQueryInterface(config) {

FILE: js/src/carousel.js
  constant NAME (line 26) | const NAME = 'carousel'
  constant DATA_KEY (line 27) | const DATA_KEY = 'bs.carousel'
  constant EVENT_KEY (line 28) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 29) | const DATA_API_KEY = '.data-api'
  constant ARROW_LEFT_KEY (line 31) | const ARROW_LEFT_KEY = 'ArrowLeft'
  constant ARROW_RIGHT_KEY (line 32) | const ARROW_RIGHT_KEY = 'ArrowRight'
  constant TOUCHEVENT_COMPAT_WAIT (line 33) | const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fi...
  constant ORDER_NEXT (line 35) | const ORDER_NEXT = 'next'
  constant ORDER_PREV (line 36) | const ORDER_PREV = 'prev'
  constant DIRECTION_LEFT (line 37) | const DIRECTION_LEFT = 'left'
  constant DIRECTION_RIGHT (line 38) | const DIRECTION_RIGHT = 'right'
  constant EVENT_SLIDE (line 40) | const EVENT_SLIDE = `slide${EVENT_KEY}`
  constant EVENT_SLID (line 41) | const EVENT_SLID = `slid${EVENT_KEY}`
  constant EVENT_KEYDOWN (line 42) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`
  constant EVENT_MOUSEENTER (line 43) | const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`
  constant EVENT_MOUSELEAVE (line 44) | const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`
  constant EVENT_DRAG_START (line 45) | const EVENT_DRAG_START = `dragstart${EVENT_KEY}`
  constant EVENT_LOAD_DATA_API (line 46) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
  constant EVENT_CLICK_DATA_API (line 47) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  constant CLASS_NAME_CAROUSEL (line 49) | const CLASS_NAME_CAROUSEL = 'carousel'
  constant CLASS_NAME_ACTIVE (line 50) | const CLASS_NAME_ACTIVE = 'active'
  constant CLASS_NAME_SLIDE (line 51) | const CLASS_NAME_SLIDE = 'slide'
  constant CLASS_NAME_END (line 52) | const CLASS_NAME_END = 'carousel-item-end'
  constant CLASS_NAME_START (line 53) | const CLASS_NAME_START = 'carousel-item-start'
  constant CLASS_NAME_NEXT (line 54) | const CLASS_NAME_NEXT = 'carousel-item-next'
  constant CLASS_NAME_PREV (line 55) | const CLASS_NAME_PREV = 'carousel-item-prev'
  constant SELECTOR_ACTIVE (line 57) | const SELECTOR_ACTIVE = '.active'
  constant SELECTOR_ITEM (line 58) | const SELECTOR_ITEM = '.carousel-item'
  constant SELECTOR_ACTIVE_ITEM (line 59) | const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM
  constant SELECTOR_ITEM_IMG (line 60) | const SELECTOR_ITEM_IMG = '.carousel-item img'
  constant SELECTOR_INDICATORS (line 61) | const SELECTOR_INDICATORS = '.carousel-indicators'
  constant SELECTOR_DATA_SLIDE (line 62) | const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'
  constant SELECTOR_DATA_RIDE (line 63) | const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'
  constant KEY_TO_DIRECTION (line 65) | const KEY_TO_DIRECTION = {
  class Carousel (line 92) | class Carousel extends BaseComponent {
    method constructor (line 93) | constructor(element, config) {
    method Default (line 111) | static get Default() {
    method DefaultType (line 115) | static get DefaultType() {
    method NAME (line 119) | static get NAME() {
    method next (line 124) | next() {
    method nextWhenVisible (line 128) | nextWhenVisible() {
    method prev (line 137) | prev() {
    method pause (line 141) | pause() {
    method cycle (line 149) | cycle() {
    method _maybeEnableCycle (line 156) | _maybeEnableCycle() {
    method to (line 169) | to(index) {
    method dispose (line 190) | dispose() {
    method _configAfterMerge (line 199) | _configAfterMerge(config) {
    method _addEventListeners (line 204) | _addEventListeners() {
    method _addTouchEventListeners (line 219) | _addTouchEventListeners() {
    method _keydown (line 254) | _keydown(event) {
    method _getItemIndex (line 266) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 270) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 288) | _updateInterval() {
    method _slide (line 300) | _slide(order, element = null) {
    method _isAnimated (line 372) | _isAnimated() {
    method _getActive (line 376) | _getActive() {
    method _getItems (line 380) | _getItems() {
    method _clearInterval (line 384) | _clearInterval() {
    method _directionToOrder (line 391) | _directionToOrder(direction) {
    method _orderToDirection (line 399) | _orderToDirection(order) {
    method jQueryInterface (line 408) | static jQueryInterface(config) {

FILE: js/src/collapse.js
  constant NAME (line 21) | const NAME = 'collapse'
  constant DATA_KEY (line 22) | const DATA_KEY = 'bs.collapse'
  constant EVENT_KEY (line 23) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 24) | const DATA_API_KEY = '.data-api'
  constant EVENT_SHOW (line 26) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 27) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant EVENT_HIDE (line 28) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDDEN (line 29) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_CLICK_DATA_API (line 30) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  constant CLASS_NAME_SHOW (line 32) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_NAME_COLLAPSE (line 33) | const CLASS_NAME_COLLAPSE = 'collapse'
  constant CLASS_NAME_COLLAPSING (line 34) | const CLASS_NAME_COLLAPSING = 'collapsing'
  constant CLASS_NAME_COLLAPSED (line 35) | const CLASS_NAME_COLLAPSED = 'collapsed'
  constant CLASS_NAME_DEEPER_CHILDREN (line 36) | const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CL...
  constant CLASS_NAME_HORIZONTAL (line 37) | const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'
  constant WIDTH (line 39) | const WIDTH = 'width'
  constant HEIGHT (line 40) | const HEIGHT = 'height'
  constant SELECTOR_ACTIVES (line 42) | const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'
  constant SELECTOR_DATA_TOGGLE (line 43) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'
  class Collapse (line 59) | class Collapse extends BaseComponent {
    method constructor (line 60) | constructor(element, config) {
    method Default (line 90) | static get Default() {
    method DefaultType (line 94) | static get DefaultType() {
    method NAME (line 98) | static get NAME() {
    method toggle (line 103) | toggle() {
    method show (line 111) | show() {
    method hide (line 166) | hide() {
    method _isShown (line 208) | _isShown(element = this._element) {
    method _configAfterMerge (line 212) | _configAfterMerge(config) {
    method _getDimension (line 218) | _getDimension() {
    method _initializeChildren (line 222) | _initializeChildren() {
    method _getFirstLevelChildren (line 238) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 244) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 256) | static jQueryInterface(config) {

FILE: js/src/dom/data.js
  method set (line 15) | set(element, key, instance) {
  method get (line 33) | get(element, key) {
  method remove (line 41) | remove(element, key) {

FILE: js/src/dom/event-handler.js
  function makeEventUid (line 77) | function makeEventUid(element, uid) {
  function getElementEvents (line 81) | function getElementEvents(element) {
  function bootstrapHandler (line 90) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 102) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 124) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 129) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 142) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 187) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 198) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 208) | function getTypeEvent(event) {
  method on (line 215) | on(element, event, handler, delegationFunction) {
  method one (line 219) | one(element, event, handler, delegationFunction) {
  method off (line 223) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 259) | trigger(element, event, args) {
  function hydrateObj (line 300) | function hydrateObj(obj, meta = {}) {

FILE: js/src/dom/manipulator.js
  function normalizeData (line 8) | function normalizeData(value) {
  function normalizeDataKey (line 36) | function normalizeDataKey(key) {
  method setDataAttribute (line 41) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 45) | removeDataAttribute(element, key) {
  method getDataAttributes (line 49) | getDataAttributes(element) {
  method getDataAttribute (line 66) | getDataAttribute(element, key) {

FILE: js/src/dom/selector-engine.js
  method find (line 36) | find(selector, element = document.documentElement) {
  method findOne (line 40) | findOne(selector, element = document.documentElement) {
  method children (line 44) | children(element, selector) {
  method parents (line 48) | parents(element, selector) {
  method prev (line 60) | prev(element, selector) {
  method next (line 74) | next(element, selector) {
  method focusableChildren (line 88) | focusableChildren(element) {
  method getSelectorFromElement (line 103) | getSelectorFromElement(element) {
  method getElementFromSelector (line 113) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 119) | getMultipleElementsFromSelector(element) {

FILE: js/src/dropdown.js
  constant NAME (line 29) | const NAME = 'dropdown'
  constant DATA_KEY (line 30) | const DATA_KEY = 'bs.dropdown'
  constant EVENT_KEY (line 31) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 32) | const DATA_API_KEY = '.data-api'
  constant ESCAPE_KEY (line 34) | const ESCAPE_KEY = 'Escape'
  constant TAB_KEY (line 35) | const TAB_KEY = 'Tab'
  constant ARROW_UP_KEY (line 36) | const ARROW_UP_KEY = 'ArrowUp'
  constant ARROW_DOWN_KEY (line 37) | const ARROW_DOWN_KEY = 'ArrowDown'
  constant RIGHT_MOUSE_BUTTON (line 38) | const RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondar...
  constant EVENT_HIDE (line 40) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDDEN (line 41) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_SHOW (line 42) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 43) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant EVENT_CLICK_DATA_API (line 44) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  constant EVENT_KEYDOWN_DATA_API (line 45) | const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`
  constant EVENT_KEYUP_DATA_API (line 46) | const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`
  constant CLASS_NAME_SHOW (line 48) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_NAME_DROPUP (line 49) | const CLASS_NAME_DROPUP = 'dropup'
  constant CLASS_NAME_DROPEND (line 50) | const CLASS_NAME_DROPEND = 'dropend'
  constant CLASS_NAME_DROPSTART (line 51) | const CLASS_NAME_DROPSTART = 'dropstart'
  constant CLASS_NAME_DROPUP_CENTER (line 52) | const CLASS_NAME_DROPUP_CENTER = 'dropup-center'
  constant CLASS_NAME_DROPDOWN_CENTER (line 53) | const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'
  constant SELECTOR_DATA_TOGGLE (line 55) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled)...
  constant SELECTOR_DATA_TOGGLE_SHOWN (line 56) | const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME...
  constant SELECTOR_MENU (line 57) | const SELECTOR_MENU = '.dropdown-menu'
  constant SELECTOR_NAVBAR (line 58) | const SELECTOR_NAVBAR = '.navbar'
  constant SELECTOR_NAVBAR_NAV (line 59) | const SELECTOR_NAVBAR_NAV = '.navbar-nav'
  constant SELECTOR_VISIBLE_ITEMS (line 60) | const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disab...
  constant PLACEMENT_TOP (line 62) | const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'
  constant PLACEMENT_TOPEND (line 63) | const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'
  constant PLACEMENT_BOTTOM (line 64) | const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'
  constant PLACEMENT_BOTTOMEND (line 65) | const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'
  constant PLACEMENT_RIGHT (line 66) | const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'
  constant PLACEMENT_LEFT (line 67) | const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'
  constant PLACEMENT_TOPCENTER (line 68) | const PLACEMENT_TOPCENTER = 'top'
  constant PLACEMENT_BOTTOMCENTER (line 69) | const PLACEMENT_BOTTOMCENTER = 'bottom'
  class Dropdown (line 93) | class Dropdown extends BaseComponent {
    method constructor (line 94) | constructor(element, config) {
    method Default (line 107) | static get Default() {
    method DefaultType (line 111) | static get DefaultType() {
    method NAME (line 115) | static get NAME() {
    method toggle (line 120) | toggle() {
    method show (line 124) | show() {
    method hide (line 159) | hide() {
    method dispose (line 171) | dispose() {
    method update (line 179) | update() {
    method _completeHide (line 187) | _completeHide(relatedTarget) {
    method _getConfig (line 212) | _getConfig(config) {
    method _createPopper (line 225) | _createPopper() {
    method _isShown (line 244) | _isShown() {
    method _getPlacement (line 248) | _getPlacement() {
    method _detectNavbar (line 277) | _detectNavbar() {
    method _getOffset (line 281) | _getOffset() {
    method _getPopperConfig (line 295) | _getPopperConfig() {
    method _selectMenuItem (line 327) | _selectMenuItem({ key, target }) {
    method jQueryInterface (line 340) | static jQueryInterface(config) {
    method clearMenus (line 356) | static clearMenus(event) {
    method dataApiKeydownHandler (line 394) | static dataApiKeydownHandler(event) {

FILE: js/src/modal.js
  constant NAME (line 23) | const NAME = 'modal'
  constant DATA_KEY (line 24) | const DATA_KEY = 'bs.modal'
  constant EVENT_KEY (line 25) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 26) | const DATA_API_KEY = '.data-api'
  constant ESCAPE_KEY (line 27) | const ESCAPE_KEY = 'Escape'
  constant EVENT_HIDE (line 29) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDE_PREVENTED (line 30) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`
  constant EVENT_HIDDEN (line 31) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_SHOW (line 32) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 33) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant EVENT_RESIZE (line 34) | const EVENT_RESIZE = `resize${EVENT_KEY}`
  constant EVENT_CLICK_DISMISS (line 35) | const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`
  constant EVENT_MOUSEDOWN_DISMISS (line 36) | const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`
  constant EVENT_KEYDOWN_DISMISS (line 37) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`
  constant EVENT_CLICK_DATA_API (line 38) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  constant CLASS_NAME_OPEN (line 40) | const CLASS_NAME_OPEN = 'modal-open'
  constant CLASS_NAME_FADE (line 41) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_SHOW (line 42) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_NAME_STATIC (line 43) | const CLASS_NAME_STATIC = 'modal-static'
  constant OPEN_SELECTOR (line 45) | const OPEN_SELECTOR = '.modal.show'
  constant SELECTOR_DIALOG (line 46) | const SELECTOR_DIALOG = '.modal-dialog'
  constant SELECTOR_MODAL_BODY (line 47) | const SELECTOR_MODAL_BODY = '.modal-body'
  constant SELECTOR_DATA_TOGGLE (line 48) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]'
  class Modal (line 66) | class Modal extends BaseComponent {
    method constructor (line 67) | constructor(element, config) {
    method Default (line 81) | static get Default() {
    method DefaultType (line 85) | static get DefaultType() {
    method NAME (line 89) | static get NAME() {
    method toggle (line 94) | toggle(relatedTarget) {
    method show (line 98) | show(relatedTarget) {
    method hide (line 123) | hide() {
    method dispose (line 143) | dispose() {
    method handleUpdate (line 153) | handleUpdate() {
    method _initializeBackDrop (line 158) | _initializeBackDrop() {
    method _initializeFocusTrap (line 165) | _initializeFocusTrap() {
    method _showElement (line 171) | _showElement(relatedTarget) {
    method _addEventListeners (line 206) | _addEventListeners() {
    method _hideModal (line 245) | _hideModal() {
    method _isAnimated (line 260) | _isAnimated() {
    method _triggerBackdropTransition (line 264) | _triggerBackdropTransition() {
    method _adjustDialog (line 296) | _adjustDialog() {
    method _resetAdjustments (line 312) | _resetAdjustments() {
    method jQueryInterface (line 318) | static jQueryInterface(config, relatedTarget) {

FILE: js/src/offcanvas.js
  constant NAME (line 25) | const NAME = 'offcanvas'
  constant DATA_KEY (line 26) | const DATA_KEY = 'bs.offcanvas'
  constant EVENT_KEY (line 27) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 28) | const DATA_API_KEY = '.data-api'
  constant EVENT_LOAD_DATA_API (line 29) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
  constant ESCAPE_KEY (line 30) | const ESCAPE_KEY = 'Escape'
  constant CLASS_NAME_SHOW (line 32) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_NAME_SHOWING (line 33) | const CLASS_NAME_SHOWING = 'showing'
  constant CLASS_NAME_HIDING (line 34) | const CLASS_NAME_HIDING = 'hiding'
  constant CLASS_NAME_BACKDROP (line 35) | const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'
  constant OPEN_SELECTOR (line 36) | const OPEN_SELECTOR = '.offcanvas.show'
  constant EVENT_SHOW (line 38) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 39) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant EVENT_HIDE (line 40) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDE_PREVENTED (line 41) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`
  constant EVENT_HIDDEN (line 42) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_RESIZE (line 43) | const EVENT_RESIZE = `resize${EVENT_KEY}`
  constant EVENT_CLICK_DATA_API (line 44) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
  constant EVENT_KEYDOWN_DISMISS (line 45) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`
  constant SELECTOR_DATA_TOGGLE (line 47) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]'
  class Offcanvas (line 65) | class Offcanvas extends BaseComponent {
    method constructor (line 66) | constructor(element, config) {
    method Default (line 76) | static get Default() {
    method DefaultType (line 80) | static get DefaultType() {
    method NAME (line 84) | static get NAME() {
    method toggle (line 89) | toggle(relatedTarget) {
    method show (line 93) | show(relatedTarget) {
    method hide (line 128) | hide() {
    method dispose (line 160) | dispose() {
    method _initializeBackDrop (line 167) | _initializeBackDrop() {
    method _initializeFocusTrap (line 189) | _initializeFocusTrap() {
    method _addEventListeners (line 195) | _addEventListeners() {
    method jQueryInterface (line 211) | static jQueryInterface(config) {

FILE: js/src/popover.js
  constant NAME (line 15) | const NAME = 'popover'
  constant SELECTOR_TITLE (line 17) | const SELECTOR_TITLE = '.popover-header'
  constant SELECTOR_CONTENT (line 18) | const SELECTOR_CONTENT = '.popover-body'
  class Popover (line 42) | class Popover extends Tooltip {
    method Default (line 44) | static get Default() {
    method DefaultType (line 48) | static get DefaultType() {
    method NAME (line 52) | static get NAME() {
    method _isWithContent (line 57) | _isWithContent() {
    method _getContentForTemplate (line 62) | _getContentForTemplate() {
    method _getContent (line 69) | _getContent() {
    method jQueryInterface (line 74) | static jQueryInterface(config) {

FILE: js/src/scrollspy.js
  constant NAME (line 19) | const NAME = 'scrollspy'
  constant DATA_KEY (line 20) | const DATA_KEY = 'bs.scrollspy'
  constant EVENT_KEY (line 21) | const EVENT_KEY = `.${DATA_KEY}`
  constant DATA_API_KEY (line 22) | const DATA_API_KEY = '.data-api'
  constant EVENT_ACTIVATE (line 24) | const EVENT_ACTIVATE = `activate${EVENT_KEY}`
  constant EVENT_CLICK (line 25) | const EVENT_CLICK = `click${EVENT_KEY}`
  constant EVENT_LOAD_DATA_API (line 26) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
  constant CLASS_NAME_DROPDOWN_ITEM (line 28) | const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'
  constant CLASS_NAME_ACTIVE (line 29) | const CLASS_NAME_ACTIVE = 'active'
  constant SELECTOR_DATA_SPY (line 31) | const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'
  constant SELECTOR_TARGET_LINKS (line 32) | const SELECTOR_TARGET_LINKS = '[href]'
  constant SELECTOR_NAV_LIST_GROUP (line 33) | const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'
  constant SELECTOR_NAV_LINKS (line 34) | const SELECTOR_NAV_LINKS = '.nav-link'
  constant SELECTOR_NAV_ITEMS (line 35) | const SELECTOR_NAV_ITEMS = '.nav-item'
  constant SELECTOR_LIST_ITEMS (line 36) | const SELECTOR_LIST_ITEMS = '.list-group-item'
  constant SELECTOR_LINK_ITEMS (line 37) | const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS...
  constant SELECTOR_DROPDOWN (line 38) | const SELECTOR_DROPDOWN = '.dropdown'
  constant SELECTOR_DROPDOWN_TOGGLE (line 39) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'
  class ScrollSpy (line 61) | class ScrollSpy extends BaseComponent {
    method constructor (line 62) | constructor(element, config) {
    method Default (line 79) | static get Default() {
    method DefaultType (line 83) | static get DefaultType() {
    method NAME (line 87) | static get NAME() {
    method refresh (line 92) | refresh() {
    method dispose (line 107) | dispose() {
    method _configAfterMerge (line 113) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 127) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 152) | _getNewObserver() {
    method _observerCallback (line 163) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 201) | _initializeTargetsAndObservables() {
    method _process (line 223) | _process(target) {
    method _activateParents (line 236) | _activateParents(target) {
    method _clearActiveClass (line 253) | _clearActiveClass(parent) {
    method jQueryInterface (line 263) | static jQueryInterface(config) {

FILE: js/src/tab.js
  constant NAME (line 17) | const NAME = 'tab'
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.tab'
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`
  constant EVENT_HIDE (line 21) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDDEN (line 22) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_SHOW (line 23) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 24) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant EVENT_CLICK_DATA_API (line 25) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`
  constant EVENT_KEYDOWN (line 26) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`
  constant EVENT_LOAD_DATA_API (line 27) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`
  constant ARROW_LEFT_KEY (line 29) | const ARROW_LEFT_KEY = 'ArrowLeft'
  constant ARROW_RIGHT_KEY (line 30) | const ARROW_RIGHT_KEY = 'ArrowRight'
  constant ARROW_UP_KEY (line 31) | const ARROW_UP_KEY = 'ArrowUp'
  constant ARROW_DOWN_KEY (line 32) | const ARROW_DOWN_KEY = 'ArrowDown'
  constant HOME_KEY (line 33) | const HOME_KEY = 'Home'
  constant END_KEY (line 34) | const END_KEY = 'End'
  constant CLASS_NAME_ACTIVE (line 36) | const CLASS_NAME_ACTIVE = 'active'
  constant CLASS_NAME_FADE (line 37) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_SHOW (line 38) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_DROPDOWN (line 39) | const CLASS_DROPDOWN = 'dropdown'
  constant SELECTOR_DROPDOWN_TOGGLE (line 41) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'
  constant SELECTOR_DROPDOWN_MENU (line 42) | const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'
  constant NOT_SELECTOR_DROPDOWN_TOGGLE (line 43) | const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`
  constant SELECTOR_TAB_PANEL (line 45) | const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'
  constant SELECTOR_OUTER (line 46) | const SELECTOR_OUTER = '.nav-item, .list-group-item'
  constant SELECTOR_INNER (line 47) | const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-...
  constant SELECTOR_DATA_TOGGLE (line 48) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="p...
  constant SELECTOR_INNER_ELEM (line 49) | const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`
  constant SELECTOR_DATA_TOGGLE_ACTIVE (line 51) | const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggl...
  class Tab (line 57) | class Tab extends BaseComponent {
    method constructor (line 58) | constructor(element) {
    method NAME (line 75) | static get NAME() {
    method show (line 80) | show() { // Shows this elem and deactivate the active sibling if exists
    method _activate (line 104) | _activate(element, relatedElem) {
    method _deactivate (line 130) | _deactivate(element, relatedElem) {
    method _keydown (line 155) | _keydown(event) {
    method _getChildren (line 179) | _getChildren() { // collection of inner elements
    method _getActiveElem (line 183) | _getActiveElem() {
    method _setInitialAttributes (line 187) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 195) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 215) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 229) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 247) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 253) | _elemIsActive(elem) {
    method _getInnerElement (line 258) | _getInnerElement(elem) {
    method _getOuterElement (line 263) | _getOuterElement(elem) {
    method jQueryInterface (line 268) | static jQueryInterface(config) {

FILE: js/src/toast.js
  constant NAME (line 17) | const NAME = 'toast'
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.toast'
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`
  constant EVENT_MOUSEOVER (line 21) | const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`
  constant EVENT_MOUSEOUT (line 22) | const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`
  constant EVENT_FOCUSIN (line 23) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`
  constant EVENT_FOCUSOUT (line 24) | const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`
  constant EVENT_HIDE (line 25) | const EVENT_HIDE = `hide${EVENT_KEY}`
  constant EVENT_HIDDEN (line 26) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`
  constant EVENT_SHOW (line 27) | const EVENT_SHOW = `show${EVENT_KEY}`
  constant EVENT_SHOWN (line 28) | const EVENT_SHOWN = `shown${EVENT_KEY}`
  constant CLASS_NAME_FADE (line 30) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_HIDE (line 31) | const CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backw...
  constant CLASS_NAME_SHOW (line 32) | const CLASS_NAME_SHOW = 'show'
  constant CLASS_NAME_SHOWING (line 33) | const CLASS_NAME_SHOWING = 'showing'
  class Toast (line 51) | class Toast extends BaseComponent {
    method constructor (line 52) | constructor(element, config) {
    method Default (line 62) | static get Default() {
    method DefaultType (line 66) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method show (line 75) | show() {
    method hide (line 102) | hide() {
    method dispose (line 123) | dispose() {
    method isShown (line 133) | isShown() {
    method _maybeScheduleHide (line 138) | _maybeScheduleHide() {
    method _onInteraction (line 152) | _onInteraction(event, isInteracting) {
    method _setListeners (line 184) | _setListeners() {
    method _clearTimeout (line 191) | _clearTimeout() {
    method jQueryInterface (line 197) | static jQueryInterface(config) {

FILE: js/src/tooltip.js
  constant NAME (line 22) | const NAME = 'tooltip'
  constant DISALLOWED_ATTRIBUTES (line 23) | const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitiz...
  constant CLASS_NAME_FADE (line 25) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_MODAL (line 26) | const CLASS_NAME_MODAL = 'modal'
  constant CLASS_NAME_SHOW (line 27) | const CLASS_NAME_SHOW = 'show'
  constant SELECTOR_TOOLTIP_INNER (line 29) | const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'
  constant SELECTOR_MODAL (line 30) | const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`
  constant EVENT_MODAL_HIDE (line 32) | const EVENT_MODAL_HIDE = 'hide.bs.modal'
  constant TRIGGER_HOVER (line 34) | const TRIGGER_HOVER = 'hover'
  constant TRIGGER_FOCUS (line 35) | const TRIGGER_FOCUS = 'focus'
  constant TRIGGER_CLICK (line 36) | const TRIGGER_CLICK = 'click'
  constant TRIGGER_MANUAL (line 37) | const TRIGGER_MANUAL = 'manual'
  constant EVENT_HIDE (line 39) | const EVENT_HIDE = 'hide'
  constant EVENT_HIDDEN (line 40) | const EVENT_HIDDEN = 'hidden'
  constant EVENT_SHOW (line 41) | const EVENT_SHOW = 'show'
  constant EVENT_SHOWN (line 42) | const EVENT_SHOWN = 'shown'
  constant EVENT_INSERTED (line 43) | const EVENT_INSERTED = 'inserted'
  constant EVENT_CLICK (line 44) | const EVENT_CLICK = 'click'
  constant EVENT_FOCUSIN (line 45) | const EVENT_FOCUSIN = 'focusin'
  constant EVENT_FOCUSOUT (line 46) | const EVENT_FOCUSOUT = 'focusout'
  constant EVENT_MOUSEENTER (line 47) | const EVENT_MOUSEENTER = 'mouseenter'
  constant EVENT_MOUSELEAVE (line 48) | const EVENT_MOUSELEAVE = 'mouseleave'
  class Tooltip (line 105) | class Tooltip extends BaseComponent {
    method constructor (line 106) | constructor(element, config) {
    method Default (line 133) | static get Default() {
    method DefaultType (line 137) | static get DefaultType() {
    method NAME (line 141) | static get NAME() {
    method enable (line 146) | enable() {
    method disable (line 150) | disable() {
    method toggleEnabled (line 154) | toggleEnabled() {
    method toggle (line 158) | toggle() {
    method dispose (line 171) | dispose() {
    method show (line 184) | show() {
    method hide (line 242) | hide() {
    method update (line 284) | update() {
    method _isWithContent (line 291) | _isWithContent() {
    method _getTipElement (line 295) | _getTipElement() {
    method _createTipElement (line 303) | _createTipElement(content) {
    method setContent (line 326) | setContent(content) {
    method _getTemplateFactory (line 334) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 350) | _getContentForTemplate() {
    method _getTitle (line 356) | _getTitle() {
    method _initializeOnDelegatedTarget (line 361) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 365) | _isAnimated() {
    method _isShown (line 369) | _isShown() {
    method _createPopper (line 373) | _createPopper(tip) {
    method _getOffset (line 379) | _getOffset() {
    method _resolvePossibleFunction (line 393) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 397) | _getPopperConfig(attachment) {
    method _setListeners (line 444) | _setListeners() {
    method _fixTitle (line 486) | _fixTitle() {
    method _enter (line 501) | _enter() {
    method _leave (line 516) | _leave() {
    method _setTimeout (line 530) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 535) | _isWithActiveTrigger() {
    method _getConfig (line 539) | _getConfig(config) {
    method _configAfterMerge (line 558) | _configAfterMerge(config) {
    method _getDelegateConfig (line 579) | _getDelegateConfig() {
    method _disposePopper (line 597) | _disposePopper() {
    method jQueryInterface (line 610) | static jQueryInterface(config) {

FILE: js/src/util/backdrop.js
  constant NAME (line 18) | const NAME = 'backdrop'
  constant CLASS_NAME_FADE (line 19) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_SHOW (line 20) | const CLASS_NAME_SHOW = 'show'
  constant EVENT_MOUSEDOWN (line 21) | const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`
  class Backdrop (line 43) | class Backdrop extends Config {
    method constructor (line 44) | constructor(config) {
    method Default (line 52) | static get Default() {
    method DefaultType (line 56) | static get DefaultType() {
    method NAME (line 60) | static get NAME() {
    method show (line 65) | show(callback) {
    method hide (line 85) | hide(callback) {
    method dispose (line 99) | dispose() {
    method _getElement (line 111) | _getElement() {
    method _configAfterMerge (line 125) | _configAfterMerge(config) {
    method _append (line 131) | _append() {
    method _emulateAnimation (line 146) | _emulateAnimation(callback) {

FILE: js/src/util/config.js
  class Config (line 15) | class Config {
    method Default (line 17) | static get Default() {
    method DefaultType (line 21) | static get DefaultType() {
    method NAME (line 25) | static get NAME() {
    method _getConfig (line 29) | _getConfig(config) {
    method _configAfterMerge (line 36) | _configAfterMerge(config) {
    method _mergeConfigObj (line 40) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 51) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

FILE: js/src/util/focustrap.js
  constant NAME (line 16) | const NAME = 'focustrap'
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.focustrap'
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`
  constant EVENT_FOCUSIN (line 19) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`
  constant EVENT_KEYDOWN_TAB (line 20) | const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`
  constant TAB_KEY (line 22) | const TAB_KEY = 'Tab'
  constant TAB_NAV_FORWARD (line 23) | const TAB_NAV_FORWARD = 'forward'
  constant TAB_NAV_BACKWARD (line 24) | const TAB_NAV_BACKWARD = 'backward'
  class FocusTrap (line 40) | class FocusTrap extends Config {
    method constructor (line 41) | constructor(config) {
    method Default (line 49) | static get Default() {
    method DefaultType (line 53) | static get DefaultType() {
    method NAME (line 57) | static get NAME() {
    method activate (line 62) | activate() {
    method deactivate (line 78) | deactivate() {
    method _handleFocusin (line 88) | _handleFocusin(event) {
    method _handleKeydown (line 106) | _handleKeydown(event) {

FILE: js/src/util/index.js
  constant MAX_UID (line 8) | const MAX_UID = 1_000_000
  constant MILLISECONDS_MULTIPLIER (line 9) | const MILLISECONDS_MULTIPLIER = 1000
  constant TRANSITION_END (line 10) | const TRANSITION_END = 'transitionend'

FILE: js/src/util/sanitizer.js
  constant ARIA_ATTRIBUTE_PATTERN (line 9) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
  constant SAFE_URL_PATTERN (line 66) | const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[...
  function sanitizeHtml (line 84) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {

FILE: js/src/util/scrollbar.js
  constant SELECTOR_FIXED_CONTENT (line 16) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
  constant SELECTOR_STICKY_CONTENT (line 17) | const SELECTOR_STICKY_CONTENT = '.sticky-top'
  constant PROPERTY_PADDING (line 18) | const PROPERTY_PADDING = 'padding-right'
  constant PROPERTY_MARGIN (line 19) | const PROPERTY_MARGIN = 'margin-right'
  class ScrollBarHelper (line 25) | class ScrollBarHelper {
    method constructor (line 26) | constructor() {
    method getWidth (line 31) | getWidth() {
    method hide (line 37) | hide() {
    method reset (line 47) | reset() {
    method isOverflowing (line 54) | isOverflowing() {
    method _disableOverFlow (line 59) | _disableOverFlow() {
    method _setElementAttributes (line 64) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 79) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 86) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 102) | _applyManipulationCallback(selector, callBack) {

FILE: js/src/util/swipe.js
  constant NAME (line 16) | const NAME = 'swipe'
  constant EVENT_KEY (line 17) | const EVENT_KEY = '.bs.swipe'
  constant EVENT_TOUCHSTART (line 18) | const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`
  constant EVENT_TOUCHMOVE (line 19) | const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`
  constant EVENT_TOUCHEND (line 20) | const EVENT_TOUCHEND = `touchend${EVENT_KEY}`
  constant EVENT_POINTERDOWN (line 21) | const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`
  constant EVENT_POINTERUP (line 22) | const EVENT_POINTERUP = `pointerup${EVENT_KEY}`
  constant POINTER_TYPE_TOUCH (line 23) | const POINTER_TYPE_TOUCH = 'touch'
  constant POINTER_TYPE_PEN (line 24) | const POINTER_TYPE_PEN = 'pen'
  constant CLASS_NAME_POINTER_EVENT (line 25) | const CLASS_NAME_POINTER_EVENT = 'pointer-event'
  constant SWIPE_THRESHOLD (line 26) | const SWIPE_THRESHOLD = 40
  class Swipe (line 44) | class Swipe extends Config {
    method constructor (line 45) | constructor(element, config) {
    method Default (line 60) | static get Default() {
    method DefaultType (line 64) | static get DefaultType() {
    method NAME (line 68) | static get NAME() {
    method dispose (line 73) | dispose() {
    method _start (line 78) | _start(event) {
    method _end (line 90) | _end(event) {
    method _move (line 99) | _move(event) {
    method _handleSwipe (line 105) | _handleSwipe() {
    method _initEvents (line 123) | _initEvents() {
    method _eventIsPointerPenTouch (line 136) | _eventIsPointerPenTouch(event) {
    method isSupported (line 141) | static isSupported() {

FILE: js/src/util/template-factory.js
  constant NAME (line 17) | const NAME = 'TemplateFactory'
  class TemplateFactory (line 48) | class TemplateFactory extends Config {
    method constructor (line 49) | constructor(config) {
    method Default (line 55) | static get Default() {
    method DefaultType (line 59) | static get DefaultType() {
    method NAME (line 63) | static get NAME() {
    method getContent (line 68) | getContent() {
    method hasContent (line 74) | hasContent() {
    method changeContent (line 78) | changeContent(content) {
    method toHtml (line 84) | toHtml() {
    method _typeCheckConfig (line 103) | _typeCheckConfig(config) {
    method _checkContent (line 108) | _checkContent(arg) {
    method _setContent (line 114) | _setContent(template, content, selector) {
    method _maybeSanitize (line 141) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 145) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 149) | _putElementInTemplate(element, templateElement) {

FILE: js/tests/helpers/fixture.js
  constant FIXTURE_ID (line 1) | const FIXTURE_ID = 'fixture'
  method each (line 33) | each(fn) {

FILE: js/tests/karma.conf.js
  constant ENV (line 11) | const ENV = process.env
  constant BROWSERSTACK (line 12) | const BROWSERSTACK = Boolean(ENV.BROWSERSTACK)
  constant DEBUG (line 13) | const DEBUG = Boolean(ENV.DEBUG)
  constant JQUERY_TEST (line 14) | const JQUERY_TEST = Boolean(ENV.JQUERY)
  method postDetection (line 29) | postDetection(availableBrowser) {

FILE: js/tests/unit/base-component.spec.js
  class DummyClass (line 6) | class DummyClass extends BaseComponent {
    method constructor (line 7) | constructor(element) {
    method NAME (line 13) | static get NAME() {

FILE: js/tests/unit/collapse.spec.js
  function firstTest (line 771) | function firstTest() {
  function secondTest (line 781) | function secondTest() {
  function handlerCollapseOne (line 855) | function handlerCollapseOne() {
  function handlerNestedCollapseOne (line 865) | function handlerNestedCollapseOne() {

FILE: js/tests/unit/dom/event-handler.spec.js
  method oneListener (line 167) | oneListener() {
  method oneListener (line 191) | oneListener() {
  method get (line 465) | get() {

FILE: js/tests/unit/dropdown.spec.js
  method onFirstUpdate (line 101) | onFirstUpdate(state) {
  method getBoundingClientRect (line 551) | getBoundingClientRect() {
  method onFirstUpdate (line 577) | onFirstUpdate() {

FILE: js/tests/unit/popover.spec.js
  method title (line 126) | title(el) {
  method content (line 129) | content(el) {
  method title (line 153) | title() {
  method content (line 156) | content() {

FILE: js/tests/unit/scrollspy.spec.js
  method cb (line 363) | cb() {
  method cb (line 402) | cb() {
  method cb (line 441) | cb() {
  method cb (line 579) | cb() {

FILE: js/tests/unit/tooltip.spec.js
  method onFirstUpdate (line 126) | onFirstUpdate(state) {
  method title (line 1352) | title(el) {
  method title (line 1365) | title() {

FILE: js/tests/unit/util/backdrop.spec.js
  constant CLASS_BACKDROP (line 5) | const CLASS_BACKDROP = '.modal-backdrop'
  constant CLASS_NAME_FADE (line 6) | const CLASS_NAME_FADE = 'fade'
  constant CLASS_NAME_SHOW (line 7) | const CLASS_NAME_SHOW = 'show'

FILE: js/tests/unit/util/component-functions.spec.js
  class DummyClass2 (line 5) | class DummyClass2 extends BaseComponent {
    method NAME (line 6) | static get NAME() {
    method hide (line 10) | hide() {
    method testMethod (line 14) | testMethod() {

FILE: js/tests/unit/util/config.spec.js
  class DummyConfigClass (line 4) | class DummyConfigClass extends Config {
    method NAME (line 5) | static get NAME() {

FILE: js/tests/unit/util/index.spec.js
  method trigger (line 429) | trigger() {}

FILE: js/tests/unit/util/sanitizer.spec.js
  function mySanitize (line 141) | function mySanitize(htmlUnsafe) {

FILE: js/tests/unit/util/swipe.spec.js
  method leftCallback (line 88) | leftCallback() {
  method rightCallback (line 110) | rightCallback() {
  method rightCallback (line 193) | rightCallback() {
  method leftCallback (line 218) | leftCallback() {

FILE: js/tests/unit/util/template-factory.spec.js
  method extraClass (line 102) | extraClass(arg) {

FILE: site/src/assets/examples/cheatsheet/cheatsheet.js
  function setActiveItem (line 36) | function setActiveItem() {

FILE: site/src/assets/search.js
  method transformItems (line 38) | transformItems(items) {

FILE: site/src/assets/stackblitz.js
  constant CONFIG (line 19) | const CONFIG = {

FILE: site/src/env.d.ts
  type ImportMetaEnv (line 4) | interface ImportMetaEnv {
  type ImportMeta (line 8) | interface ImportMeta {

FILE: site/src/libs/astro.ts
  function bootstrap (line 38) | function bootstrap(): AstroIntegration[] {
  function bootstrap_auto_import (line 94) | function bootstrap_auto_import() {
  function cleanPublicDirectory (line 139) | function cleanPublicDirectory() {
  function copyBootstrap (line 145) | function copyBootstrap() {
  function copyStatic (line 156) | function copyStatic() {
  function aliasStatic (line 164) | function aliasStatic() {
  function copyStaticRecursively (line 174) | function copyStaticRecursively(source: string, destination: string) {
  function replacePathVersionPlaceholder (line 188) | function replacePathVersionPlaceholder(name: string) {
  function sitemapFilter (line 192) | function sitemapFilter(page: string, excludedUrls: string[]) {

FILE: site/src/libs/bootstrap.ts
  function getVersionedBsCssProps (line 5) | function getVersionedBsCssProps(direction: 'rtl' | undefined) {
  function getVersionedBsJsProps (line 30) | function getVersionedBsJsProps() {

FILE: site/src/libs/config.ts
  function getConfig (line 65) | function getConfig(): Config {
  type Config (line 88) | type Config = z.infer<typeof configSchema>

FILE: site/src/libs/content.ts
  function getCalloutByName (line 10) | function getCalloutByName(name: string) {

FILE: site/src/libs/data.ts
  function getData (line 117) | function getData<TType extends DataType>(type: TType): z.infer<(typeof d...
  type DataType (line 145) | type DataType = keyof typeof dataDefinitions
  type DataSchema (line 146) | type DataSchema = z.ZodTypeAny

FILE: site/src/libs/examples.ts
  type ExampleFrontmatter (line 24) | type ExampleFrontmatter = z.infer<typeof exampleFrontmatterSchema>
  function getExamplesAssets (line 26) | function getExamplesAssets() {
  function getAliasedExamplesPages (line 32) | function getAliasedExamplesPages(pages: AstroInstance[]) {
  function getExampleNameFromPagePath (line 36) | function getExampleNameFromPagePath(examplePath: string) {
  function getExamplesAssetsRecursively (line 46) | function getExamplesAssetsRecursively(source: string, assets: string[] =...
  function sanitizeAssetPath (line 60) | function sanitizeAssetPath(assetPath: string) {
  function isAliasedAstroInstance (line 70) | function isAliasedAstroInstance(page: AstroInstance): page is AliasedAst...
  type AliasedAstroInstance (line 74) | type AliasedAstroInstance = AstroInstance & { aliases: string | string[] }

FILE: site/src/libs/icon.ts
  type SvgIconProps (line 1) | interface SvgIconProps {

FILE: site/src/libs/image.ts
  function getStaticImageSize (line 6) | async function getStaticImageSize(imagePath: string) {

FILE: site/src/libs/layout.ts
  type Layout (line 3) | type Layout = 'docs' | 'examples' | 'single' | undefined
  type LayoutOverridesHTMLAttributes (line 5) | type LayoutOverridesHTMLAttributes<TTag extends HTMLTag> = HTMLAttribute...

FILE: site/src/libs/path.ts
  function getVersionedDocsPath (line 12) | function getVersionedDocsPath(docsPath: string): string {
  function validateVersionedDocsPaths (line 31) | function validateVersionedDocsPaths(distUrl: URL) {
  function getDocsRelativePath (line 46) | function getDocsRelativePath(docsPath: string) {
  function getDocsStaticFsPath (line 50) | function getDocsStaticFsPath() {
  function getDocsPublicFsPath (line 54) | function getDocsPublicFsPath() {
  function getDocsFsPath (line 58) | function getDocsFsPath() {
  function sanitizeVersionedDocsPathForValidation (line 62) | function sanitizeVersionedDocsPathForValidation(docsPath: string) {

FILE: site/src/libs/placeholder.ts
  function getPlaceholder (line 11) | function getPlaceholder(userOptions: Partial<PlaceholderOptions>): Place...
  function replacePlaceholdersInHtml (line 74) | function replacePlaceholdersInHtml(html: string) {
  function renderPlaceholderToString (line 94) | function renderPlaceholderToString(placeholder: Placeholder) {
  function getOptionsWithDefaults (line 124) | function getOptionsWithDefaults(options: Partial<PlaceholderOptions>) {
  function getPlaceholderSrc (line 145) | function getPlaceholderSrc(
  function sanitizeHtmlAttributesFromMdx (line 174) | function sanitizeHtmlAttributesFromMdx(attributes: Record<string, unknow...
  type PlaceholderOptions (line 192) | interface PlaceholderOptions {
  type PlaceholderVisibilities (line 236) | interface PlaceholderVisibilities {
  type Placeholder (line 241) | type Placeholder =

FILE: site/src/libs/prism.ts
  function configurePrism (line 6) | function configurePrism() {
  function lineWrapPlugin (line 17) | function lineWrapPlugin(env: hooks.HookEnvironmentMap['after-tokenize']) {

FILE: site/src/libs/remark.ts
  function replaceConfigInText (line 89) | function replaceConfigInText(text: string) {
  function replaceConfigInAttributes (line 101) | function replaceConfigInAttributes(attributes: (MdxJsxAttribute | MdxJsx...
  function replaceDocsrefInText (line 111) | function replaceDocsrefInText(text: string) {
  function replaceDocsrefInAttributes (line 117) | function replaceDocsrefInAttributes(attributes: (MdxJsxAttribute | MdxJs...
  function getConfigValueAtPath (line 127) | function getConfigValueAtPath(path: string) {
  function replaceInFrontmatter (line 141) | function replaceInFrontmatter(record: Record<string, unknown>, replacer:...
  function containsFrontmatter (line 159) | function containsFrontmatter(data: unknown): data is { frontmatter: Reco...

FILE: site/src/libs/toc.ts
  function generateToc (line 5) | function generateToc(allHeadings: MarkdownHeading[]) {
  function getEntryChildrenAtDepth (line 32) | function getEntryChildrenAtDepth(entry: TocEntry, depth: number): TocEnt...
  type TocEntry (line 40) | interface TocEntry extends MarkdownHeading {

FILE: site/src/libs/utils.ts
  function capitalizeFirstLetter (line 7) | function capitalizeFirstLetter(str: string) {
  function getSequence (line 11) | function getSequence(start: number, end: number, step = 1) {
  function getSlug (line 28) | function getSlug(str: string) {
  function trimLeadingAndTrailingSlashes (line 32) | function trimLeadingAndTrailingSlashes(str: string) {
  function stripMarkdown (line 36) | function stripMarkdown(str: string) {
  function processMarkdownToHtml (line 40) | function processMarkdownToHtml(markdown: string): string {

FILE: site/src/pages/docs/[version]/examples/[...asset].ts
  function getStaticPaths (line 9) | function getStaticPaths() {

FILE: site/src/plugins/algolia-plugin.js
  function algoliaPlugin (line 6) | function algoliaPlugin() {

FILE: site/src/plugins/stackblitz-plugin.js
  function stackblitzPlugin (line 6) | function stackblitzPlugin() {

FILE: site/src/types/window.d.ts
  type Window (line 21) | interface Window {
Condensed preview — 609 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,996K chars).
[
  {
    "path": ".babelrc.js",
    "chars": 162,
    "preview": "module.exports = {\n  presets: [\n    [\n      '@babel/preset-env',\n      {\n        loose: true,\n        bugfixes: true,\n  "
  },
  {
    "path": ".browserslistrc",
    "chars": 289,
    "preview": "# https://github.com/browserslist/browserslist#readme\n\n>= 0.5%\nlast 2 major versions\nnot dead\nChrome >= 60\nFirefox >= 60"
  },
  {
    "path": ".bundlewatch.config.json",
    "chars": 1326,
    "preview": "{\n  \"files\": [\n    {\n      \"path\": \"./dist/css/bootstrap-grid.css\",\n      \"maxSize\": \"6.5 kB\"\n    },\n    {\n      \"path\":"
  },
  {
    "path": ".cspell.json",
    "chars": 2093,
    "preview": "{\n  \"version\": \"0.2\",\n  \"words\": [\n    \"affordance\",\n    \"allowfullscreen\",\n    \"Analyser\",\n    \"autohide\",\n    \"autohid"
  },
  {
    "path": ".editorconfig",
    "chars": 167,
    "preview": "# editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_"
  },
  {
    "path": ".eslintignore",
    "chars": 145,
    "preview": "**/*.min.js\n**/dist/\n**/vendor/\n/_site/\n/site/public/\n/js/coverage/\n/site/static/sw.js\n/site/static/docs/**/assets/sw.js"
  },
  {
    "path": ".eslintrc.json",
    "chars": 5204,
    "preview": "{\n  \"root\": true,\n  \"extends\": [\n    \"plugin:import/errors\",\n    \"plugin:import/warnings\",\n    \"plugin:unicorn/recommend"
  },
  {
    "path": ".gitattributes",
    "chars": 177,
    "preview": "# Enforce Unix newlines\n* text=auto eol=lf\n\n# Don't diff or textually merge source maps\n*.map binary\n\nbootstrap.css ling"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 74,
    "preview": "*.js    @twbs/js-review\n*.css   @twbs/css-review\n*.scss  @twbs/css-review\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 12390,
    "preview": "# Contributing to Bootstrap\n\nLooking to contribute something to Bootstrap? **Here’s how you can help.**\n\nPlease take a m"
  },
  {
    "path": ".github/INCIDENT_RESPONSE.md",
    "chars": 6812,
    "preview": "# Incident response plan\n\nThis document describes how the Bootstrap maintainers respond to and manage security or operat"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 2116,
    "preview": "name: Report a bug\ndescription: Tell us about a bug or issue you may have identified in Bootstrap.\ntitle: \"Provide a gen"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 179,
    "preview": "contact_links:\n  - name: Ask the community\n    url: https://github.com/twbs/bootstrap/discussions/new\n    about: Ask and"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1141,
    "preview": "name: Feature request\ndescription: Suggest new or updated features to include in Bootstrap.\ntitle: \"Suggest a new featur"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1345,
    "preview": "### Description\n\n<!-- Describe your changes in detail -->\n\n### Motivation & Context\n\n<!-- Why is this change required? W"
  },
  {
    "path": ".github/SUPPORT.md",
    "chars": 473,
    "preview": "### Bug reports\n\nSee the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports.\n\n### How-to\n\nFor general tr"
  },
  {
    "path": ".github/codeql/codeql-config.yml",
    "chars": 45,
    "preview": "name: \"CodeQL config\"\npaths-ignore:\n  - dist\n"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 665,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: weekly\n    "
  },
  {
    "path": ".github/release-drafter.yml",
    "chars": 1154,
    "preview": "name-template: 'v$NEXT_MAJOR_VERSION'\ntag-template: 'v$NEXT_MAJOR_VERSION'\nprerelease: true\nexclude-labels:\n  - 'skip-ch"
  },
  {
    "path": ".github/workflows/browserstack.yml",
    "chars": 1045,
    "preview": "name: BrowserStack\n\non:\n  push:\n    branches:\n      - \"**\"\n      - \"!dependabot/**\"\n  workflow_dispatch:\n\nenv:\n  FORCE_C"
  },
  {
    "path": ".github/workflows/bundlewatch.yml",
    "chars": 870,
    "preview": "name: Bundlewatch\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n  "
  },
  {
    "path": ".github/workflows/calibreapp-image-actions.yml",
    "chars": 845,
    "preview": "name: Compress Images\n\non:\n  pull_request:\n    paths:\n      - '**.jpg'\n      - '**.jpeg'\n      - '**.png'\n      - '**.we"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 1104,
    "preview": "name: \"CodeQL\"\n\non:\n  push:\n    branches:\n      - main\n      - v4-dev\n      - \"!dependabot/**\"\n  pull_request:\n    branc"
  },
  {
    "path": ".github/workflows/cspell.yml",
    "chars": 776,
    "preview": "name: cspell\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n\npermis"
  },
  {
    "path": ".github/workflows/css.yml",
    "chars": 727,
    "preview": "name: CSS\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n  NODE: 22"
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 1014,
    "preview": "name: Docs\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n  NODE: 2"
  },
  {
    "path": ".github/workflows/issue-close-require.yml",
    "chars": 777,
    "preview": "name: Close Issue Awaiting Reply\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\npermissions:\n  contents: read\n\njobs:\n  issue-"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "chars": 1040,
    "preview": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\npermissions:\n  contents: read\n\njobs:\n  issue-labeled:\n    permi"
  },
  {
    "path": ".github/workflows/js.yml",
    "chars": 1174,
    "preview": "name: JS Tests\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n  NOD"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 666,
    "preview": "name: Lint\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: 2\n  NODE: 2"
  },
  {
    "path": ".github/workflows/node-sass.yml",
    "chars": 1360,
    "preview": "name: CSS (node-sass)\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FORCE_COLOR: "
  },
  {
    "path": ".github/workflows/publish-nuget.yml",
    "chars": 1288,
    "preview": "name: Publish NuGet Packages\n\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: read\n\njobs:\n  package-nuge"
  },
  {
    "path": ".github/workflows/release-notes.yml",
    "chars": 548,
    "preview": "name: Release notes\n\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n "
  },
  {
    "path": ".github/workflows/scorecard.yml",
    "chars": 3476,
    "preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
  },
  {
    "path": ".gitignore",
    "chars": 465,
    "preview": "# Ignore docs files\n/_site/\n\n# Numerous always-ignore extensions\n*.diff\n*.err\n*.log\n*.orig\n*.rej\n*.swo\n*.swp\n*.vi\n*.zip\n"
  },
  {
    "path": ".prettierignore",
    "chars": 228,
    "preview": "# Prettier is only used for the website\n\nsite/.astro\nsite/dist\nsite/public\nsite/src/assets\nsite/src/scss\nsite/src/pages/"
  },
  {
    "path": ".stylelintignore",
    "chars": 69,
    "preview": "**/*.min.css\n**/dist/\n**/vendor/\n/_site/\n/site/public/\n/js/coverage/\n"
  },
  {
    "path": ".stylelintrc.json",
    "chars": 1412,
    "preview": "{\n  \"extends\": [\n    \"stylelint-config-twbs-bootstrap\"\n  ],\n  \"reportInvalidScopeDisables\": true,\n  \"reportNeedlessDisab"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 243,
    "preview": "{\n  \"recommendations\": [\n    \"astro-build.astro-vscode\",\n    \"dbaeumer.vscode-eslint\",\n    \"EditorConfig.EditorConfig\",\n"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 244,
    "preview": "{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\",\n    \"source.fixAll.stylelint\": \"always\"\n  },\n "
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5485,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "LICENSE",
    "chars": 1093,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2011-2026 The Bootstrap Authors\n\nPermission is hereby granted, free of charge, to a"
  },
  {
    "path": "README.md",
    "chars": 13262,
    "preview": "<p align=\"center\">\n  <a href=\"https://getbootstrap.com/\">\n    <img src=\"https://getbootstrap.com/docs/5.3/assets/brand/b"
  },
  {
    "path": "SECURITY.md",
    "chars": 471,
    "preview": "# Reporting Security Issues\n\nThe Bootstrap team and community take security issues in Bootstrap seriously. We appreciate"
  },
  {
    "path": "build/banner.mjs",
    "chars": 620,
    "preview": "import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst __dirname"
  },
  {
    "path": "build/build-plugins.mjs",
    "chars": 2958,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to build our plugins to use them separately.\n * Copyright 2020-2026 The Bootstrap Aut"
  },
  {
    "path": "build/change-version.mjs",
    "chars": 2801,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to update version number references in the project.\n * Copyright 2017-2026 The Bootst"
  },
  {
    "path": "build/docs-prep.sh",
    "chars": 4618,
    "preview": "#!/bin/bash\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[0;33m'\nBLUE='\\033[0;34m'\nNC='\\033[0m' "
  },
  {
    "path": "build/generate-sri.mjs",
    "chars": 1744,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to generate SRI hashes for use in our docs.\n * Remember to use the same vendor files "
  },
  {
    "path": "build/postcss.config.mjs",
    "chars": 311,
    "preview": "const mapConfig = {\n  inline: false,\n  annotation: true,\n  sourcesContent: true\n}\n\nexport default context => {\n  return "
  },
  {
    "path": "build/rollup.config.mjs",
    "chars": 1462,
    "preview": "import path from 'node:path'\nimport process from 'node:process'\nimport { fileURLToPath } from 'node:url'\nimport { babel "
  },
  {
    "path": "build/vnu-jar.mjs",
    "chars": 2437,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to run vnu-jar if Java is available.\n * Copyright 2017-2026 The Bootstrap Authors\n * "
  },
  {
    "path": "build/zip-examples.mjs",
    "chars": 3328,
    "preview": "#!/usr/bin/env node\n\n/*!\n * Script to create the built examples zip archive;\n * requires the `zip` command to be present"
  },
  {
    "path": "composer.json",
    "chars": 667,
    "preview": "{\n  \"name\": \"twbs/bootstrap\",\n  \"description\": \"The most popular front-end framework for developing responsive, mobile f"
  },
  {
    "path": "config.yml",
    "chars": 2821,
    "preview": "title:                  \"Bootstrap\"\nbaseURL:                \"https://getbootstrap.com\"\n\ndocsDir:                \"site\"\n\n"
  },
  {
    "path": "dist/css/bootstrap-grid.css",
    "chars": 70323,
    "preview": "/*!\n * Bootstrap Grid v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under "
  },
  {
    "path": "dist/css/bootstrap-grid.rtl.css",
    "chars": 70397,
    "preview": "/*!\n * Bootstrap Grid v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under "
  },
  {
    "path": "dist/css/bootstrap-reboot.css",
    "chars": 12156,
    "preview": "/*!\n * Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed unde"
  },
  {
    "path": "dist/css/bootstrap-reboot.rtl.css",
    "chars": 12149,
    "preview": "/*!\n * Bootstrap Reboot v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed unde"
  },
  {
    "path": "dist/css/bootstrap-utilities.css",
    "chars": 107938,
    "preview": "/*!\n * Bootstrap Utilities v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed u"
  },
  {
    "path": "dist/css/bootstrap-utilities.rtl.css",
    "chars": 107806,
    "preview": "/*!\n * Bootstrap Utilities v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed u"
  },
  {
    "path": "dist/css/bootstrap.css",
    "chars": 280308,
    "preview": "@charset \"UTF-8\";\n/*!\n * Bootstrap  v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * L"
  },
  {
    "path": "dist/css/bootstrap.rtl.css",
    "chars": 279523,
    "preview": "@charset \"UTF-8\";\n/*!\n * Bootstrap  v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * L"
  },
  {
    "path": "dist/js/bootstrap.bundle.js",
    "chars": 207830,
    "preview": "/*!\n  * Bootstrap v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
  },
  {
    "path": "dist/js/bootstrap.esm.js",
    "chars": 135902,
    "preview": "/*!\n  * Bootstrap v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
  },
  {
    "path": "dist/js/bootstrap.js",
    "chars": 145474,
    "preview": "/*!\n  * Bootstrap v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/t"
  },
  {
    "path": "js/dist/alert.js",
    "chars": 2835,
    "preview": "/*!\n  * Bootstrap alert.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://git"
  },
  {
    "path": "js/dist/base-component.js",
    "chars": 2841,
    "preview": "/*!\n  * Bootstrap base-component.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (ht"
  },
  {
    "path": "js/dist/button.js",
    "chars": 2463,
    "preview": "/*!\n  * Bootstrap button.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://gi"
  },
  {
    "path": "js/dist/carousel.js",
    "chars": 13420,
    "preview": "/*!\n  * Bootstrap carousel.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://"
  },
  {
    "path": "js/dist/collapse.js",
    "chars": 8838,
    "preview": "/*!\n  * Bootstrap collapse.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://"
  },
  {
    "path": "js/dist/dom/data.js",
    "chars": 2115,
    "preview": "/*!\n  * Bootstrap data.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://gith"
  },
  {
    "path": "js/dist/dom/event-handler.js",
    "chars": 9438,
    "preview": "/*!\n  * Bootstrap event-handler.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (htt"
  },
  {
    "path": "js/dist/dom/manipulator.js",
    "chars": 2399,
    "preview": "/*!\n  * Bootstrap manipulator.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https"
  },
  {
    "path": "js/dist/dom/selector-engine.js",
    "chars": 4220,
    "preview": "/*!\n  * Bootstrap selector-engine.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (h"
  },
  {
    "path": "js/dist/dropdown.js",
    "chars": 15374,
    "preview": "/*!\n  * Bootstrap dropdown.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://"
  },
  {
    "path": "js/dist/modal.js",
    "chars": 11198,
    "preview": "/*!\n  * Bootstrap modal.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://git"
  },
  {
    "path": "js/dist/offcanvas.js",
    "chars": 8264,
    "preview": "/*!\n  * Bootstrap offcanvas.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https:/"
  },
  {
    "path": "js/dist/popover.js",
    "chars": 2669,
    "preview": "/*!\n  * Bootstrap popover.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://g"
  },
  {
    "path": "js/dist/scrollspy.js",
    "chars": 9818,
    "preview": "/*!\n  * Bootstrap scrollspy.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https:/"
  },
  {
    "path": "js/dist/tab.js",
    "chars": 10426,
    "preview": "/*!\n  * Bootstrap tab.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://githu"
  },
  {
    "path": "js/dist/toast.js",
    "chars": 6198,
    "preview": "/*!\n  * Bootstrap toast.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://git"
  },
  {
    "path": "js/dist/tooltip.js",
    "chars": 18484,
    "preview": "/*!\n  * Bootstrap tooltip.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://g"
  },
  {
    "path": "js/dist/util/backdrop.js",
    "chars": 4117,
    "preview": "/*!\n  * Bootstrap backdrop.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://"
  },
  {
    "path": "js/dist/util/component-functions.js",
    "chars": 2050,
    "preview": "/*!\n  * Bootstrap component-functions.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Author"
  },
  {
    "path": "js/dist/util/config.js",
    "chars": 2566,
    "preview": "/*!\n  * Bootstrap config.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://gi"
  },
  {
    "path": "js/dist/util/focustrap.js",
    "chars": 3464,
    "preview": "/*!\n  * Bootstrap focustrap.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https:/"
  },
  {
    "path": "js/dist/util/index.js",
    "chars": 9321,
    "preview": "/*!\n  * Bootstrap index.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://git"
  },
  {
    "path": "js/dist/util/sanitizer.js",
    "chars": 3871,
    "preview": "/*!\n  * Bootstrap sanitizer.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https:/"
  },
  {
    "path": "js/dist/util/scrollbar.js",
    "chars": 4698,
    "preview": "/*!\n  * Bootstrap scrollbar.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https:/"
  },
  {
    "path": "js/dist/util/swipe.js",
    "chars": 4360,
    "preview": "/*!\n  * Bootstrap swipe.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors (https://git"
  },
  {
    "path": "js/dist/util/template-factory.js",
    "chars": 4695,
    "preview": "/*!\n  * Bootstrap template-factory.js v5.3.8 (https://getbootstrap.com/)\n  * Copyright 2011-2025 The Bootstrap Authors ("
  },
  {
    "path": "js/index.esm.js",
    "chars": 907,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap index.esm.js\n * Licensed "
  },
  {
    "path": "js/index.umd.js",
    "chars": 874,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap index.umd.js\n * Licensed "
  },
  {
    "path": "js/src/alert.js",
    "chars": 1903,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed unde"
  },
  {
    "path": "js/src/base-component.js",
    "chars": 1945,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Lice"
  },
  {
    "path": "js/src/button.js",
    "chars": 1625,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed und"
  },
  {
    "path": "js/src/carousel.js",
    "chars": 11817,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed u"
  },
  {
    "path": "js/src/collapse.js",
    "chars": 7594,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed u"
  },
  {
    "path": "js/src/dom/data.js",
    "chars": 1395,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed u"
  },
  {
    "path": "js/src/dom/event-handler.js",
    "chars": 8351,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * L"
  },
  {
    "path": "js/src/dom/manipulator.js",
    "chars": 1642,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Lic"
  },
  {
    "path": "js/src/dom/selector-engine.js",
    "chars": 3436,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n *"
  },
  {
    "path": "js/src/dropdown.js",
    "chars": 13225,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed u"
  },
  {
    "path": "js/src/modal.js",
    "chars": 9583,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed unde"
  },
  {
    "path": "js/src/offcanvas.js",
    "chars": 6806,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed "
  },
  {
    "path": "js/src/popover.js",
    "chars": 1870,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed un"
  },
  {
    "path": "js/src/scrollspy.js",
    "chars": 8474,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed "
  },
  {
    "path": "js/src/tab.js",
    "chars": 9068,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under "
  },
  {
    "path": "js/src/toast.js",
    "chars": 5038,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed unde"
  },
  {
    "path": "js/src/tooltip.js",
    "chars": 16120,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed un"
  },
  {
    "path": "js/src/util/backdrop.js",
    "chars": 3127,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licen"
  },
  {
    "path": "js/src/util/component-functions.js",
    "chars": 1114,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions."
  },
  {
    "path": "js/src/util/config.js",
    "chars": 1784,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * License"
  },
  {
    "path": "js/src/util/focustrap.js",
    "chars": 2518,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Lice"
  },
  {
    "path": "js/src/util/index.js",
    "chars": 7645,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed"
  },
  {
    "path": "js/src/util/sanitizer.js",
    "chars": 2914,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Lice"
  },
  {
    "path": "js/src/util/scrollbar.js",
    "chars": 3754,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Lice"
  },
  {
    "path": "js/src/util/swipe.js",
    "chars": 3409,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed"
  },
  {
    "path": "js/src/util/template-factory.js",
    "chars": 3623,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n"
  },
  {
    "path": "js/tests/README.md",
    "chars": 3131,
    "preview": "## How does Bootstrap’s test suite work?\n\nBootstrap uses [Jasmine](https://jasmine.github.io/). Each plugin has a file d"
  },
  {
    "path": "js/tests/browsers.js",
    "chars": 1503,
    "preview": "/* eslint-disable camelcase */\n\n'use strict'\n\nconst browsers = {\n  safariMac: {\n    base: 'BrowserStack',\n    os: 'OS X'"
  },
  {
    "path": "js/tests/helpers/fixture.js",
    "chars": 1159,
    "preview": "const FIXTURE_ID = 'fixture'\n\nexport const getFixture = () => {\n  let fixtureElement = document.getElementById(FIXTURE_I"
  },
  {
    "path": "js/tests/integration/bundle-modularity.js",
    "chars": 305,
    "preview": "/* eslint-disable import/extensions, import/no-unassigned-import */\n\nimport Tooltip from '../../dist/tooltip'\nimport '.."
  },
  {
    "path": "js/tests/integration/bundle.js",
    "chars": 226,
    "preview": "import { Tooltip } from '../../../dist/js/bootstrap.esm.js'\n\nwindow.addEventListener('load', () => {\n  [].concat(...docu"
  },
  {
    "path": "js/tests/integration/index.html",
    "chars": 4274,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <!-- Required meta tags -->\n    <meta charset=\"utf-8\">\n    <meta name=\"vie"
  },
  {
    "path": "js/tests/integration/rollup.bundle-modularity.js",
    "chars": 352,
    "preview": "'use strict'\n\nconst commonjs = require('@rollup/plugin-commonjs')\nconst configRollup = require('./rollup.bundle.js')\n\nco"
  },
  {
    "path": "js/tests/integration/rollup.bundle.js",
    "chars": 530,
    "preview": "'use strict'\n\nconst { babel } = require('@rollup/plugin-babel')\nconst { nodeResolve } = require('@rollup/plugin-node-res"
  },
  {
    "path": "js/tests/karma.conf.js",
    "chars": 4086,
    "preview": "'use strict'\n\nconst path = require('node:path')\nconst ip = require('ip')\nconst { babel } = require('@rollup/plugin-babel"
  },
  {
    "path": "js/tests/unit/alert.spec.js",
    "chars": 7580,
    "preview": "import Alert from '../../src/alert.js'\nimport { getTransitionDurationFromElement } from '../../src/util/index.js'\nimport"
  },
  {
    "path": "js/tests/unit/base-component.spec.js",
    "chars": 4946,
    "preview": "import BaseComponent from '../../src/base-component.js'\nimport EventHandler from '../../src/dom/event-handler.js'\nimport"
  },
  {
    "path": "js/tests/unit/button.spec.js",
    "chars": 5430,
    "preview": "import Button from '../../src/button.js'\nimport { clearFixture, getFixture, jQueryMock } from '../helpers/fixture.js'\n\nd"
  },
  {
    "path": "js/tests/unit/carousel.spec.js",
    "chars": 52633,
    "preview": "import Carousel from '../../src/carousel.js'\nimport EventHandler from '../../src/dom/event-handler.js'\nimport { isRTL, n"
  },
  {
    "path": "js/tests/unit/collapse.spec.js",
    "chars": 37938,
    "preview": "import Collapse from '../../src/collapse.js'\nimport EventHandler from '../../src/dom/event-handler.js'\nimport { clearFix"
  },
  {
    "path": "js/tests/unit/dom/data.spec.js",
    "chars": 2560,
    "preview": "import Data from '../../../src/dom/data.js'\nimport { clearFixture, getFixture } from '../../helpers/fixture.js'\n\ndescrib"
  },
  {
    "path": "js/tests/unit/dom/event-handler.spec.js",
    "chars": 13125,
    "preview": "import EventHandler from '../../../src/dom/event-handler.js'\nimport { noop } from '../../../src/util/index.js'\nimport { "
  },
  {
    "path": "js/tests/unit/dom/manipulator.spec.js",
    "chars": 4622,
    "preview": "import Manipulator from '../../../src/dom/manipulator.js'\nimport { clearFixture, getFixture } from '../../helpers/fixtur"
  },
  {
    "path": "js/tests/unit/dom/selector-engine.spec.js",
    "chars": 12968,
    "preview": "import SelectorEngine from '../../../src/dom/selector-engine.js'\nimport { clearFixture, getFixture } from '../../helpers"
  },
  {
    "path": "js/tests/unit/dropdown.spec.js",
    "chars": 86042,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport Dropdown from '../../src/dropdown.js'\nimport { noop } f"
  },
  {
    "path": "js/tests/unit/jquery.spec.js",
    "chars": 2027,
    "preview": "/* eslint-env jquery */\n\nimport Alert from '../../src/alert.js'\nimport Button from '../../src/button.js'\nimport Carousel"
  },
  {
    "path": "js/tests/unit/modal.spec.js",
    "chars": 40997,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport Modal from '../../src/modal.js'\nimport ScrollBarHelper "
  },
  {
    "path": "js/tests/unit/offcanvas.spec.js",
    "chars": 29805,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport Offcanvas from '../../src/offcanvas.js'\nimport { isVisi"
  },
  {
    "path": "js/tests/unit/popover.spec.js",
    "chars": 16882,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport Popover from '../../src/popover.js'\nimport {\n  clearFix"
  },
  {
    "path": "js/tests/unit/scrollspy.spec.js",
    "chars": 34203,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport ScrollSpy from '../../src/scrollspy.js'\nimport {\n  clea"
  },
  {
    "path": "js/tests/unit/tab.spec.js",
    "chars": 47730,
    "preview": "import Tab from '../../src/tab.js'\nimport {\n  clearFixture, createEvent, getFixture, jQueryMock\n} from '../helpers/fixtu"
  },
  {
    "path": "js/tests/unit/toast.spec.js",
    "chars": 19316,
    "preview": "import Toast from '../../src/toast.js'\nimport {\n  clearFixture, createEvent, getFixture, jQueryMock\n} from '../helpers/f"
  },
  {
    "path": "js/tests/unit/tooltip.spec.js",
    "chars": 50497,
    "preview": "import EventHandler from '../../src/dom/event-handler.js'\nimport Tooltip from '../../src/tooltip.js'\nimport { noop } fro"
  },
  {
    "path": "js/tests/unit/util/backdrop.spec.js",
    "chars": 9351,
    "preview": "import Backdrop from '../../../src/util/backdrop.js'\nimport { getTransitionDurationFromElement } from '../../../src/util"
  },
  {
    "path": "js/tests/unit/util/component-functions.spec.js",
    "chars": 3411,
    "preview": "import BaseComponent from '../../../src/base-component.js'\nimport { enableDismissTrigger } from '../../../src/util/compo"
  },
  {
    "path": "js/tests/unit/util/config.spec.js",
    "chars": 5504,
    "preview": "import Config from '../../../src/util/config.js'\nimport { clearFixture, getFixture } from '../../helpers/fixture.js'\n\ncl"
  },
  {
    "path": "js/tests/unit/util/focustrap.spec.js",
    "chars": 6913,
    "preview": "import EventHandler from '../../../src/dom/event-handler.js'\nimport SelectorEngine from '../../../src/dom/selector-engin"
  },
  {
    "path": "js/tests/unit/util/index.spec.js",
    "chars": 22563,
    "preview": "import * as Util from '../../../src/util/index.js'\nimport { noop } from '../../../src/util/index.js'\nimport { clearFixtu"
  },
  {
    "path": "js/tests/unit/util/sanitizer.spec.js",
    "chars": 5188,
    "preview": "import { DefaultAllowlist, sanitizeHtml } from '../../../src/util/sanitizer.js'\n\ndescribe('Sanitizer', () => {\n  describ"
  },
  {
    "path": "js/tests/unit/util/scrollbar.spec.js",
    "chars": 13972,
    "preview": "import Manipulator from '../../../src/dom/manipulator.js'\nimport ScrollBarHelper from '../../../src/util/scrollbar.js'\ni"
  },
  {
    "path": "js/tests/unit/util/swipe.spec.js",
    "chars": 8125,
    "preview": "import EventHandler from '../../../src/dom/event-handler.js'\nimport { noop } from '../../../src/util/index.js'\nimport Sw"
  },
  {
    "path": "js/tests/unit/util/template-factory.spec.js",
    "chars": 8935,
    "preview": "import TemplateFactory from '../../../src/util/template-factory.js'\nimport { clearFixture, getFixture } from '../../help"
  },
  {
    "path": "js/tests/visual/alert.html",
    "chars": 2189,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/button.html",
    "chars": 2956,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/carousel.html",
    "chars": 2860,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/collapse.html",
    "chars": 5326,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/dropdown.html",
    "chars": 9958,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/floating-label.html",
    "chars": 48490,
    "preview": "<!doctype html>\n<html lang=\"zxx\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "js/tests/visual/input.html",
    "chars": 1821,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/modal.html",
    "chars": 15791,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/popover.html",
    "chars": 1853,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/scrollspy.html",
    "chars": 21902,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/tab.html",
    "chars": 32244,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/toast.html",
    "chars": 2589,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "js/tests/visual/tooltip.html",
    "chars": 6303,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-wid"
  },
  {
    "path": "nuget/bootstrap.nuspec",
    "chars": 1623,
    "preview": "<?xml version=\"1.0\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n  <metadata>\n    <id>b"
  },
  {
    "path": "nuget/bootstrap.sass.nuspec",
    "chars": 1649,
    "preview": "<?xml version=\"1.0\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n  <metadata>\n    <id>b"
  },
  {
    "path": "package.js",
    "chars": 484,
    "preview": "// package metadata file for Meteor.js\n\n/* eslint-env meteor */\n\nPackage.describe({\n  name: 'twbs:bootstrap', // https:/"
  },
  {
    "path": "package.json",
    "chars": 10543,
    "preview": "{\n  \"name\": \"bootstrap\",\n  \"description\": \"The most popular front-end framework for developing responsive, mobile first "
  },
  {
    "path": "scss/_accordion.scss",
    "chars": 5050,
    "preview": "//\n// Base styles\n//\n\n.accordion {\n  // scss-docs-start accordion-css-vars\n  --#{$prefix}accordion-color: #{$accordion-c"
  },
  {
    "path": "scss/_alert.scss",
    "chars": 2073,
    "preview": "//\n// Base styles\n//\n\n.alert {\n  // scss-docs-start alert-css-vars\n  --#{$prefix}alert-bg: transparent;\n  --#{$prefix}al"
  },
  {
    "path": "scss/_badge.scss",
    "chars": 1118,
    "preview": "// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badg"
  },
  {
    "path": "scss/_breadcrumb.scss",
    "chars": 1751,
    "preview": ".breadcrumb {\n  // scss-docs-start breadcrumb-css-vars\n  --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};\n  -"
  },
  {
    "path": "scss/_button-group.scss",
    "chars": 3483,
    "preview": "// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  v"
  },
  {
    "path": "scss/_buttons.scss",
    "chars": 7057,
    "preview": "//\n// Base styles\n//\n\n.btn {\n  // scss-docs-start btn-css-vars\n  --#{$prefix}btn-padding-x: #{$btn-padding-x};\n  --#{$pr"
  },
  {
    "path": "scss/_card.scss",
    "chars": 6921,
    "preview": "//\n// Base styles\n//\n\n.card {\n  // scss-docs-start card-css-vars\n  --#{$prefix}card-spacer-y: #{$card-spacer-y};\n  --#{$"
  },
  {
    "path": "scss/_carousel.scss",
    "chars": 5992,
    "preview": "// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertical"
  },
  {
    "path": "scss/_close.scss",
    "chars": 2076,
    "preview": "// Transparent background and border properties included for button version.\n// iOS requires the button element instead "
  },
  {
    "path": "scss/_containers.scss",
    "chars": 1201,
    "preview": "// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-cont"
  },
  {
    "path": "scss/_dropdown.scss",
    "chars": 8093,
    "preview": "// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n  positio"
  },
  {
    "path": "scss/_forms.scss",
    "chars": 256,
    "preview": "@import \"forms/labels\";\n@import \"forms/form-text\";\n@import \"forms/form-control\";\n@import \"forms/form-select\";\n@import \"f"
  },
  {
    "path": "scss/_functions.scss",
    "chars": 10555,
    "preview": "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mix"
  },
  {
    "path": "scss/_grid.scss",
    "chars": 683,
    "preview": "// Row\n//\n// Rows contain your columns.\n\n:root {\n  @each $name, $value in $grid-breakpoints {\n    --#{$prefix}breakpoint"
  },
  {
    "path": "scss/_helpers.scss",
    "chars": 353,
    "preview": "@import \"helpers/clearfix\";\n@import \"helpers/color-bg\";\n@import \"helpers/colored-links\";\n@import \"helpers/focus-ring\";\n@"
  },
  {
    "path": "scss/_images.scss",
    "chars": 1158,
    "preview": "// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit "
  },
  {
    "path": "scss/_list-group.scss",
    "chars": 6899,
    "preview": "// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // scss-docs-start list-group-css-vars\n  --#"
  },
  {
    "path": "scss/_maps.scss",
    "chars": 6005,
    "preview": "// Re-assigned maps\n//\n// Placed here so that others can override the default Sass maps and see automatic updates to uti"
  },
  {
    "path": "scss/_mixins.scss",
    "chars": 875,
    "preview": "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import \"vendor/"
  },
  {
    "path": "scss/_modal.scss",
    "chars": 7794,
    "preview": "// stylelint-disable function-disallowed-list\n\n// .modal-open      - body class for killing the scroll\n// .modal        "
  },
  {
    "path": "scss/_nav.scss",
    "chars": 5211,
    "preview": "// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<"
  },
  {
    "path": "scss/_navbar.scss",
    "chars": 9155,
    "preview": "// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations"
  },
  {
    "path": "scss/_offcanvas.scss",
    "chars": 4785,
    "preview": "// stylelint-disable function-disallowed-list\n\n%offcanvas-css-vars {\n  // scss-docs-start offcanvas-css-vars\n  --#{$pref"
  },
  {
    "path": "scss/_pagination.scss",
    "chars": 3947,
    "preview": ".pagination {\n  // scss-docs-start pagination-css-vars\n  --#{$prefix}pagination-padding-x: #{$pagination-padding-x};\n  -"
  },
  {
    "path": "scss/_placeholders.scss",
    "chars": 859,
    "preview": ".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color:"
  },
  {
    "path": "scss/_popover.scss",
    "chars": 6907,
    "preview": ".popover {\n  // scss-docs-start popover-css-vars\n  --#{$prefix}popover-zindex: #{$zindex-popover};\n  --#{$prefix}popover"
  },
  {
    "path": "scss/_progress.scss",
    "chars": 2032,
    "preview": "// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @key"
  }
]

// ... and 409 more files (download for full content)

About this extraction

This page contains the full source code of the twbs/bootstrap GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 609 files (4.5 MB), approximately 1.2M tokens, and a symbol index with 2198 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!