From b46f05a948490799df175b58e9ca2994c06db105 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Nov 2020 16:39:29 +0200 Subject: Switch to Hugo This commit includes all the needed workarounds and most changes from the main branch for everything to work, like: * removing empty lines in raw HTML that break output * read .browserslistrc, CSS variables from disk instead of duplicating it * using Hugo mounts * using Hugo for the docs CSS/JS * move ToC Sass code to a separate file while adapting it for Hugo Thus, this patch makes our npm scripts faster since lint runs on one step and there's no separate docs assets processing. --- .eslintignore | 2 +- .github/CONTRIBUTING.md | 2 +- .github/workflows/docs.yml | 32 +- .gitignore | 8 - .stylelintignore | 1 + CNAME | 1 - Gemfile | 9 - Gemfile.lock | 89 -- README.md | 12 +- _config.yml | 77 -- build/generate-sri.js | 6 +- config.yml | 79 ++ package-lock.json | 1246 ++++++++++++++++- package.json | 66 +- scss/_root.scss | 1 - site/_data/breakpoints.yml | 29 - site/_data/browser-bugs.yml | 411 ------ site/_data/browser-features.yml | 139 -- site/_data/colors.yml | 26 - site/_data/core-team.yml | 32 - site/_data/docs-versions.yml | 46 - site/_data/examples.yml | 55 - site/_data/grays.yml | 18 - site/_data/nav.yml | 92 -- site/_data/theme-colors.yml | 16 - site/_data/translations.yml | 29 - site/_includes/ads.html | 1 - site/_includes/analytics.html | 7 - site/_includes/bugify.html | 42 - site/_includes/callout-danger-async-methods.md | 8 - .../callout-info-mediaqueries-breakpoints.md | 4 - .../_includes/callout-info-prefersreducedmotion.md | 4 - ...callout-warning-color-assistive-technologies.md | 6 - site/_includes/callout.html | 9 - site/_includes/docs-navbar.html | 70 - site/_includes/docs-sidebar.html | 45 - site/_includes/example.html | 51 - site/_includes/favicons.html | 9 - site/_includes/footer.html | 12 - site/_includes/header.html | 23 - site/_includes/icons/bootstrap-stack.svg | 1 - site/_includes/icons/bootstrap.svg | 1 - site/_includes/icons/circle-square.svg | 4 - site/_includes/icons/cloud-fill.svg | 3 - site/_includes/icons/code.svg | 3 - site/_includes/icons/droplet-fill.svg | 3 - site/_includes/icons/github.svg | 1 - site/_includes/icons/menu.svg | 1 - site/_includes/icons/opencollective.svg | 1 - site/_includes/icons/placeholder.svg | 35 - site/_includes/icons/slack.svg | 1 - site/_includes/icons/twitter.svg | 1 - site/_includes/scripts.html | 23 - site/_includes/skippy.html | 8 - site/_includes/social.html | 17 - site/_includes/stylesheet.html | 16 - site/_layouts/default.html | 22 - site/_layouts/docs.html | 37 - site/_layouts/examples.html | 56 - site/_layouts/home.html | 16 - site/_layouts/simple.html | 21 - site/assets/js/application.js | 112 ++ site/assets/js/ie-emulation-modes-warning.js | 52 + site/assets/js/search.js | 60 + site/assets/js/vendor/anchor.min.js | 9 + site/assets/js/vendor/bs-custom-file-input.min.js | 7 + site/assets/js/vendor/clipboard.min.js | 7 + site/assets/scss/_ads.scss | 39 + site/assets/scss/_algolia.scss | 155 +++ site/assets/scss/_anchor.scss | 11 + site/assets/scss/_brand.scss | 88 ++ site/assets/scss/_browser-bugs.scss | 12 + site/assets/scss/_buttons.scss | 55 + site/assets/scss/_callouts.scss | 40 + site/assets/scss/_clipboard-js.scss | 36 + site/assets/scss/_colors.scss | 17 + site/assets/scss/_component-examples.scss | 374 ++++++ site/assets/scss/_content.scss | 127 ++ site/assets/scss/_footer.scss | 40 + site/assets/scss/_masthead.scss | 74 + site/assets/scss/_nav.scss | 71 + site/assets/scss/_placeholder-img.scss | 15 + site/assets/scss/_sidebar.scss | 112 ++ site/assets/scss/_skippy.scss | 20 + site/assets/scss/_syntax.scss | 94 ++ site/assets/scss/_toc.scss | 54 + site/assets/scss/_variables.scss | 15 + site/assets/scss/docs.scss | 53 + site/content/docs/4.5/_index.html | 5 + site/content/docs/4.5/about/brand.md | 78 ++ site/content/docs/4.5/about/license.md | 34 + site/content/docs/4.5/about/overview.md | 27 + site/content/docs/4.5/about/team.md | 23 + site/content/docs/4.5/about/translations.md | 20 + site/content/docs/4.5/browser-bugs.md | 57 + site/content/docs/4.5/components/alerts.md | 122 ++ site/content/docs/4.5/components/badge.md | 76 ++ site/content/docs/4.5/components/breadcrumb.md | 57 + site/content/docs/4.5/components/button-group.md | 202 +++ site/content/docs/4.5/components/buttons.md | 166 +++ site/content/docs/4.5/components/card.md | 851 ++++++++++++ site/content/docs/4.5/components/carousel.md | 368 +++++ site/content/docs/4.5/components/collapse.md | 252 ++++ site/content/docs/4.5/components/dropdowns.md | 895 +++++++++++++ site/content/docs/4.5/components/forms.md | 1360 +++++++++++++++++++ site/content/docs/4.5/components/input-group.md | 373 ++++++ site/content/docs/4.5/components/jumbotron.md | 29 + site/content/docs/4.5/components/list-group.md | 391 ++++++ site/content/docs/4.5/components/media-object.md | 136 ++ site/content/docs/4.5/components/modal.md | 826 ++++++++++++ site/content/docs/4.5/components/navbar.md | 557 ++++++++ site/content/docs/4.5/components/navs.md | 652 +++++++++ site/content/docs/4.5/components/pagination.md | 157 +++ site/content/docs/4.5/components/popovers.md | 422 ++++++ site/content/docs/4.5/components/progress.md | 139 ++ site/content/docs/4.5/components/scrollspy.md | 343 +++++ site/content/docs/4.5/components/spinners.md | 181 +++ site/content/docs/4.5/components/toasts.md | 335 +++++ site/content/docs/4.5/components/tooltips.md | 403 ++++++ site/content/docs/4.5/content/code.md | 50 + site/content/docs/4.5/content/figures.md | 26 + site/content/docs/4.5/content/images.md | 83 ++ site/content/docs/4.5/content/reboot.md | 370 +++++ site/content/docs/4.5/content/tables.md | 837 ++++++++++++ site/content/docs/4.5/content/typography.md | 289 ++++ site/content/docs/4.5/examples/.stylelintrc | 15 + site/content/docs/4.5/examples/_index.md | 31 + site/content/docs/4.5/examples/album/album.css | 33 + site/content/docs/4.5/examples/album/index.html | 208 +++ site/content/docs/4.5/examples/blog/blog.css | 106 ++ site/content/docs/4.5/examples/blog/index.html | 201 +++ .../docs/4.5/examples/carousel/carousel.css | 90 ++ site/content/docs/4.5/examples/carousel/index.html | 164 +++ .../docs/4.5/examples/checkout/form-validation.css | 5 + .../docs/4.5/examples/checkout/form-validation.js | 21 + site/content/docs/4.5/examples/checkout/index.html | 225 ++++ site/content/docs/4.5/examples/cover/cover.css | 106 ++ site/content/docs/4.5/examples/cover/index.html | 35 + .../docs/4.5/examples/dashboard/dashboard.css | 103 ++ .../docs/4.5/examples/dashboard/dashboard.js | 53 + .../content/docs/4.5/examples/dashboard/index.html | 250 ++++ .../examples/floating-labels/floating-labels.css | 130 ++ .../docs/4.5/examples/floating-labels/index.html | 33 + site/content/docs/4.5/examples/grid/grid.css | 13 + site/content/docs/4.5/examples/grid/index.html | 139 ++ .../content/docs/4.5/examples/jumbotron/index.html | 80 ++ .../docs/4.5/examples/jumbotron/jumbotron.css | 4 + .../docs/4.5/examples/navbar-bottom/index.html | 39 + .../docs/4.5/examples/navbar-fixed/index.html | 38 + .../4.5/examples/navbar-fixed/navbar-top-fixed.css | 5 + .../docs/4.5/examples/navbar-static/index.html | 38 + .../docs/4.5/examples/navbar-static/navbar-top.css | 4 + site/content/docs/4.5/examples/navbars/index.html | 362 +++++ site/content/docs/4.5/examples/navbars/navbar.css | 7 + .../content/docs/4.5/examples/offcanvas/index.html | 137 ++ .../docs/4.5/examples/offcanvas/offcanvas.css | 76 ++ .../docs/4.5/examples/offcanvas/offcanvas.js | 7 + site/content/docs/4.5/examples/pricing/index.html | 111 ++ site/content/docs/4.5/examples/pricing/pricing.css | 20 + site/content/docs/4.5/examples/product/index.html | 146 ++ site/content/docs/4.5/examples/product/product.css | 74 + site/content/docs/4.5/examples/sign-in/index.html | 24 + site/content/docs/4.5/examples/sign-in/signin.css | 44 + .../docs/4.5/examples/starter-template/index.html | 48 + .../examples/starter-template/starter-template.css | 7 + .../4.5/examples/sticky-footer-navbar/index.html | 50 + .../sticky-footer-navbar/sticky-footer-navbar.css | 20 + .../docs/4.5/examples/sticky-footer/index.html | 24 + .../4.5/examples/sticky-footer/sticky-footer.css | 13 + site/content/docs/4.5/extend/approach.md | 77 ++ site/content/docs/4.5/extend/icons.md | 43 + .../docs/4.5/getting-started/accessibility.md | 57 + .../docs/4.5/getting-started/best-practices.md | 20 + .../docs/4.5/getting-started/browsers-devices.md | 182 +++ .../docs/4.5/getting-started/build-tools.md | 53 + site/content/docs/4.5/getting-started/contents.md | 141 ++ site/content/docs/4.5/getting-started/download.md | 115 ++ .../docs/4.5/getting-started/introduction.md | 162 +++ .../content/docs/4.5/getting-started/javascript.md | 209 +++ site/content/docs/4.5/getting-started/theming.md | 474 +++++++ site/content/docs/4.5/getting-started/webpack.md | 93 ++ site/content/docs/4.5/layout/grid.md | 876 ++++++++++++ site/content/docs/4.5/layout/overview.md | 277 ++++ .../docs/4.5/layout/utilities-for-layout.md | 25 + site/content/docs/4.5/migration.md | 337 +++++ site/content/docs/4.5/utilities/borders.md | 89 ++ site/content/docs/4.5/utilities/clearfix.md | 37 + site/content/docs/4.5/utilities/close-icon.md | 14 + site/content/docs/4.5/utilities/colors.md | 70 + site/content/docs/4.5/utilities/display.md | 98 ++ site/content/docs/4.5/utilities/embed.md | 60 + site/content/docs/4.5/utilities/flex.md | 613 +++++++++ site/content/docs/4.5/utilities/float.md | 60 + .../docs/4.5/utilities/image-replacement.md | 35 + site/content/docs/4.5/utilities/interactions.md | 18 + site/content/docs/4.5/utilities/overflow.md | 24 + site/content/docs/4.5/utilities/position.md | 45 + site/content/docs/4.5/utilities/screen-readers.md | 20 + site/content/docs/4.5/utilities/shadows.md | 17 + site/content/docs/4.5/utilities/sizing.md | 52 + site/content/docs/4.5/utilities/spacing.md | 104 ++ site/content/docs/4.5/utilities/stretched-link.md | 76 ++ site/content/docs/4.5/utilities/text.md | 121 ++ site/content/docs/4.5/utilities/vertical-align.md | 38 + site/content/docs/4.5/utilities/visibility.md | 34 + site/content/docs/_index.html | 5 + site/content/docs/versions.md | 28 + site/data/breakpoints.yml | 29 + site/data/browser-bugs.yml | 411 ++++++ site/data/browser-features.yml | 139 ++ site/data/colors.yml | 26 + site/data/core-team.yml | 32 + site/data/docs-versions.yml | 46 + site/data/examples.yml | 55 + site/data/grays.yml | 18 + site/data/sidebar.yml | 92 ++ site/data/theme-colors.yml | 16 + site/data/translations.yml | 29 + site/docs/4.5/about/brand.md | 78 -- site/docs/4.5/about/license.md | 34 - site/docs/4.5/about/overview.md | 27 - site/docs/4.5/about/team.md | 21 - site/docs/4.5/about/translations.md | 18 - site/docs/4.5/assets/brand/bootstrap-outline.svg | 5 - site/docs/4.5/assets/brand/bootstrap-punchout.svg | 5 - .../4.5/assets/brand/bootstrap-social-logo.png | Bin 23959 -> 0 bytes site/docs/4.5/assets/brand/bootstrap-social.png | Bin 231733 -> 0 bytes site/docs/4.5/assets/brand/bootstrap-solid.svg | 5 - site/docs/4.5/assets/css/docs.min.css | 8 - site/docs/4.5/assets/css/docs.min.css.map | 1 - site/docs/4.5/assets/img/bootstrap-icons.png | Bin 40798 -> 0 bytes site/docs/4.5/assets/img/bootstrap-icons@2x.png | Bin 125571 -> 0 bytes .../4.5/assets/img/bootstrap-themes-collage.png | Bin 74876 -> 0 bytes .../4.5/assets/img/bootstrap-themes-collage@2x.png | Bin 244640 -> 0 bytes site/docs/4.5/assets/img/bootstrap-themes.png | Bin 88695 -> 0 bytes site/docs/4.5/assets/img/bootstrap-themes@2x.png | Bin 278159 -> 0 bytes site/docs/4.5/assets/img/examples/album.png | Bin 21740 -> 0 bytes site/docs/4.5/assets/img/examples/album@2x.png | Bin 26370 -> 0 bytes site/docs/4.5/assets/img/examples/blog.png | Bin 32843 -> 0 bytes site/docs/4.5/assets/img/examples/blog@2x.png | Bin 36944 -> 0 bytes site/docs/4.5/assets/img/examples/carousel.png | Bin 21450 -> 0 bytes site/docs/4.5/assets/img/examples/carousel@2x.png | Bin 31465 -> 0 bytes site/docs/4.5/assets/img/examples/checkout.png | Bin 25151 -> 0 bytes site/docs/4.5/assets/img/examples/checkout@2x.png | Bin 28180 -> 0 bytes site/docs/4.5/assets/img/examples/cover.png | Bin 7240 -> 0 bytes site/docs/4.5/assets/img/examples/cover@2x.png | Bin 17953 -> 0 bytes site/docs/4.5/assets/img/examples/dashboard.png | Bin 24376 -> 0 bytes site/docs/4.5/assets/img/examples/dashboard@2x.png | Bin 26556 -> 0 bytes .../4.5/assets/img/examples/floating-labels.png | Bin 10516 -> 0 bytes .../4.5/assets/img/examples/floating-labels@2x.png | Bin 11053 -> 0 bytes site/docs/4.5/assets/img/examples/grid.png | Bin 37960 -> 0 bytes site/docs/4.5/assets/img/examples/grid@2x.png | Bin 34834 -> 0 bytes site/docs/4.5/assets/img/examples/jumbotron.png | Bin 31403 -> 0 bytes site/docs/4.5/assets/img/examples/jumbotron@2x.png | Bin 38408 -> 0 bytes .../docs/4.5/assets/img/examples/navbar-bottom.png | Bin 9774 -> 0 bytes .../4.5/assets/img/examples/navbar-bottom@2x.png | Bin 11316 -> 0 bytes site/docs/4.5/assets/img/examples/navbar-fixed.png | Bin 11569 -> 0 bytes .../4.5/assets/img/examples/navbar-fixed@2x.png | Bin 13616 -> 0 bytes .../docs/4.5/assets/img/examples/navbar-static.png | Bin 12523 -> 0 bytes .../4.5/assets/img/examples/navbar-static@2x.png | Bin 14893 -> 0 bytes site/docs/4.5/assets/img/examples/navbars.png | Bin 24748 -> 0 bytes site/docs/4.5/assets/img/examples/navbars@2x.png | Bin 27187 -> 0 bytes site/docs/4.5/assets/img/examples/offcanvas.png | Bin 20148 -> 0 bytes site/docs/4.5/assets/img/examples/offcanvas@2x.png | Bin 23975 -> 0 bytes site/docs/4.5/assets/img/examples/pricing.png | Bin 25033 -> 0 bytes site/docs/4.5/assets/img/examples/pricing@2x.png | Bin 29128 -> 0 bytes site/docs/4.5/assets/img/examples/product.png | Bin 24977 -> 0 bytes site/docs/4.5/assets/img/examples/product@2x.png | Bin 27953 -> 0 bytes site/docs/4.5/assets/img/examples/sign-in.png | Bin 5704 -> 0 bytes site/docs/4.5/assets/img/examples/sign-in@2x.png | Bin 5680 -> 0 bytes .../4.5/assets/img/examples/starter-template.png | Bin 9761 -> 0 bytes .../assets/img/examples/starter-template@2x.png | Bin 11334 -> 0 bytes .../assets/img/examples/sticky-footer-navbar.png | Bin 14167 -> 0 bytes .../img/examples/sticky-footer-navbar@2x.png | Bin 15836 -> 0 bytes .../docs/4.5/assets/img/examples/sticky-footer.png | Bin 8170 -> 0 bytes .../4.5/assets/img/examples/sticky-footer@2x.png | Bin 9665 -> 0 bytes .../assets/img/favicons/android-chrome-192x192.png | Bin 1935 -> 0 bytes .../assets/img/favicons/android-chrome-512x512.png | Bin 4269 -> 0 bytes .../4.5/assets/img/favicons/apple-touch-icon.png | Bin 1738 -> 0 bytes .../docs/4.5/assets/img/favicons/browserconfig.xml | 9 - .../docs/4.5/assets/img/favicons/favicon-16x16.png | Bin 310 -> 0 bytes .../docs/4.5/assets/img/favicons/favicon-32x32.png | Bin 491 -> 0 bytes site/docs/4.5/assets/img/favicons/favicon.ico | Bin 5430 -> 0 bytes site/docs/4.5/assets/img/favicons/manifest.json | 20 - .../4.5/assets/img/favicons/mstile-144x144.png | Bin 1479 -> 0 bytes .../4.5/assets/img/favicons/mstile-150x150.png | Bin 1428 -> 0 bytes .../4.5/assets/img/favicons/mstile-310x150.png | Bin 1746 -> 0 bytes .../4.5/assets/img/favicons/mstile-310x310.png | Bin 3085 -> 0 bytes site/docs/4.5/assets/img/favicons/mstile-70x70.png | Bin 1104 -> 0 bytes .../4.5/assets/img/favicons/safari-pinned-tab.svg | 4 - site/docs/4.5/assets/js/docs.min.js | 22 - site/docs/4.5/assets/js/src/application.js | 112 -- .../assets/js/src/ie-emulation-modes-warning.js | 52 - site/docs/4.5/assets/js/src/search.js | 60 - site/docs/4.5/assets/js/vendor/anchor.min.js | 9 - .../assets/js/vendor/bs-custom-file-input.min.js | 7 - site/docs/4.5/assets/js/vendor/clipboard.min.js | 7 - site/docs/4.5/assets/js/vendor/jquery.slim.min.js | 2 - site/docs/4.5/assets/scss/_ads.scss | 39 - site/docs/4.5/assets/scss/_algolia.scss | 155 --- site/docs/4.5/assets/scss/_anchor.scss | 11 - site/docs/4.5/assets/scss/_brand.scss | 88 -- site/docs/4.5/assets/scss/_browser-bugs.scss | 12 - site/docs/4.5/assets/scss/_buttons.scss | 55 - site/docs/4.5/assets/scss/_callouts.scss | 40 - site/docs/4.5/assets/scss/_clipboard-js.scss | 36 - site/docs/4.5/assets/scss/_colors.scss | 17 - site/docs/4.5/assets/scss/_component-examples.scss | 374 ------ site/docs/4.5/assets/scss/_content.scss | 127 -- site/docs/4.5/assets/scss/_footer.scss | 40 - site/docs/4.5/assets/scss/_masthead.scss | 74 - site/docs/4.5/assets/scss/_nav.scss | 71 - site/docs/4.5/assets/scss/_placeholder-img.scss | 15 - site/docs/4.5/assets/scss/_sidebar.scss | 155 --- site/docs/4.5/assets/scss/_skippy.scss | 20 - site/docs/4.5/assets/scss/_syntax.scss | 78 -- site/docs/4.5/assets/scss/_variables.scss | 15 - site/docs/4.5/assets/scss/docs.scss | 52 - site/docs/4.5/browser-bugs.md | 72 - site/docs/4.5/components/alerts.md | 118 -- site/docs/4.5/components/badge.md | 74 - site/docs/4.5/components/breadcrumb.md | 58 - site/docs/4.5/components/button-group.md | 207 --- site/docs/4.5/components/buttons.md | 172 --- site/docs/4.5/components/card.md | 875 ------------ site/docs/4.5/components/carousel.md | 370 ----- site/docs/4.5/components/collapse.md | 251 ---- site/docs/4.5/components/dropdowns.md | 916 ------------- site/docs/4.5/components/forms.md | 1415 -------------------- site/docs/4.5/components/input-group.md | 384 ------ site/docs/4.5/components/jumbotron.md | 31 - site/docs/4.5/components/list-group.md | 393 ------ site/docs/4.5/components/media-object.md | 144 -- site/docs/4.5/components/modal.md | 815 ----------- site/docs/4.5/components/navbar.md | 581 -------- site/docs/4.5/components/navs.md | 666 --------- site/docs/4.5/components/pagination.md | 165 --- site/docs/4.5/components/popovers.md | 409 ------ site/docs/4.5/components/progress.md | 146 -- site/docs/4.5/components/scrollspy.md | 345 ----- site/docs/4.5/components/spinners.md | 187 --- site/docs/4.5/components/toasts.md | 332 ----- site/docs/4.5/components/tooltips.md | 388 ------ site/docs/4.5/content/code.md | 55 - site/docs/4.5/content/figures.md | 28 - site/docs/4.5/content/images.md | 84 -- site/docs/4.5/content/reboot.md | 383 ------ site/docs/4.5/content/tables.md | 831 ------------ site/docs/4.5/content/typography.md | 301 ----- site/docs/4.5/examples/.stylelintrc | 15 - site/docs/4.5/examples/album/album.css | 33 - site/docs/4.5/examples/album/index.html | 207 --- site/docs/4.5/examples/blog/blog.css | 106 -- site/docs/4.5/examples/blog/index.html | 201 --- site/docs/4.5/examples/carousel/carousel.css | 90 -- site/docs/4.5/examples/carousel/index.html | 163 --- .../docs/4.5/examples/checkout/form-validation.css | 5 - site/docs/4.5/examples/checkout/form-validation.js | 21 - site/docs/4.5/examples/checkout/index.html | 223 --- site/docs/4.5/examples/cover/cover.css | 106 -- site/docs/4.5/examples/cover/index.html | 34 - site/docs/4.5/examples/dashboard/dashboard.css | 103 -- site/docs/4.5/examples/dashboard/dashboard.js | 53 - site/docs/4.5/examples/dashboard/index.html | 249 ---- .../examples/floating-labels/floating-labels.css | 130 -- site/docs/4.5/examples/floating-labels/index.html | 32 - site/docs/4.5/examples/grid/grid.css | 13 - site/docs/4.5/examples/grid/index.html | 138 -- site/docs/4.5/examples/index.html | 44 - site/docs/4.5/examples/jumbotron/index.html | 79 -- site/docs/4.5/examples/jumbotron/jumbotron.css | 4 - site/docs/4.5/examples/navbar-bottom/index.html | 39 - site/docs/4.5/examples/navbar-fixed/index.html | 37 - .../4.5/examples/navbar-fixed/navbar-top-fixed.css | 5 - site/docs/4.5/examples/navbar-static/index.html | 37 - .../docs/4.5/examples/navbar-static/navbar-top.css | 4 - site/docs/4.5/examples/navbars/index.html | 361 ----- site/docs/4.5/examples/navbars/navbar.css | 7 - site/docs/4.5/examples/offcanvas/index.html | 135 -- site/docs/4.5/examples/offcanvas/offcanvas.css | 76 -- site/docs/4.5/examples/offcanvas/offcanvas.js | 7 - site/docs/4.5/examples/pricing/index.html | 110 -- site/docs/4.5/examples/pricing/pricing.css | 20 - site/docs/4.5/examples/product/index.html | 145 -- site/docs/4.5/examples/product/product.css | 74 - site/docs/4.5/examples/sign-in/index.html | 23 - site/docs/4.5/examples/sign-in/signin.css | 44 - site/docs/4.5/examples/starter-template/index.html | 47 - .../examples/starter-template/starter-template.css | 7 - .../4.5/examples/sticky-footer-navbar/index.html | 49 - .../sticky-footer-navbar/sticky-footer-navbar.css | 20 - site/docs/4.5/examples/sticky-footer/index.html | 23 - .../4.5/examples/sticky-footer/sticky-footer.css | 13 - site/docs/4.5/extend/approach.md | 77 -- site/docs/4.5/extend/icons.md | 43 - site/docs/4.5/getting-started/accessibility.md | 57 - site/docs/4.5/getting-started/best-practices.md | 21 - site/docs/4.5/getting-started/browsers-devices.md | 192 --- site/docs/4.5/getting-started/build-tools.md | 58 - site/docs/4.5/getting-started/contents.md | 140 -- site/docs/4.5/getting-started/download.md | 115 -- site/docs/4.5/getting-started/introduction.md | 166 --- site/docs/4.5/getting-started/javascript.md | 211 --- site/docs/4.5/getting-started/theming.md | 488 ------- site/docs/4.5/getting-started/webpack.md | 93 -- site/docs/4.5/layout/grid.md | 904 ------------- site/docs/4.5/layout/overview.md | 275 ---- site/docs/4.5/layout/utilities-for-layout.md | 25 - site/docs/4.5/migration.md | 337 ----- site/docs/4.5/utilities/borders.md | 91 -- site/docs/4.5/utilities/clearfix.md | 38 - site/docs/4.5/utilities/close-icon.md | 15 - site/docs/4.5/utilities/colors.md | 58 - site/docs/4.5/utilities/display.md | 102 -- site/docs/4.5/utilities/embed.md | 61 - site/docs/4.5/utilities/flex.md | 570 -------- site/docs/4.5/utilities/float.md | 57 - site/docs/4.5/utilities/image-replacement.md | 36 - site/docs/4.5/utilities/interactions.md | 19 - site/docs/4.5/utilities/overflow.md | 24 - site/docs/4.5/utilities/position.md | 45 - site/docs/4.5/utilities/screen-readers.md | 25 - site/docs/4.5/utilities/shadows.md | 18 - site/docs/4.5/utilities/sizing.md | 56 - site/docs/4.5/utilities/spacing.md | 105 -- site/docs/4.5/utilities/stretched-link.md | 80 -- site/docs/4.5/utilities/text.md | 132 -- site/docs/4.5/utilities/vertical-align.md | 40 - site/docs/4.5/utilities/visibility.md | 34 - site/docs/versions.html | 30 - site/favicon.ico | Bin 5430 -> 0 bytes site/index.html | 126 -- site/layouts/_default/docs.html | 37 + site/layouts/_default/examples.html | 60 + site/layouts/_default/home.html | 19 + site/layouts/_default/redirect.html | 11 + site/layouts/_default/single.html | 52 + site/layouts/alias.html | 11 + site/layouts/partials/ads.html | 1 + site/layouts/partials/analytics.html | 7 + site/layouts/partials/bugify.html | 40 + .../partials/callout-danger-async-methods.md | 5 + .../callout-info-mediaqueries-breakpoints.md | 1 + .../partials/callout-info-prefersreducedmotion.md | 1 + ...callout-warning-color-assistive-technologies.md | 3 + site/layouts/partials/docs-navbar.html | 70 + site/layouts/partials/docs-sidebar.html | 45 + site/layouts/partials/favicons.html | 9 + site/layouts/partials/footer.html | 12 + site/layouts/partials/header.html | 21 + site/layouts/partials/home/masthead-followup.html | 90 ++ site/layouts/partials/home/masthead.html | 23 + site/layouts/partials/icons/bootstrap-stack.svg | 1 + site/layouts/partials/icons/bootstrap.svg | 1 + site/layouts/partials/icons/circle-square.svg | 4 + site/layouts/partials/icons/cloud-fill.svg | 3 + site/layouts/partials/icons/code.svg | 3 + site/layouts/partials/icons/droplet-fill.svg | 3 + site/layouts/partials/icons/github.svg | 1 + site/layouts/partials/icons/menu.svg | 1 + site/layouts/partials/icons/opencollective.svg | 1 + site/layouts/partials/icons/slack.svg | 1 + site/layouts/partials/icons/twitter.svg | 1 + site/layouts/partials/scripts.html | 23 + site/layouts/partials/skippy.html | 8 + site/layouts/partials/social.html | 17 + site/layouts/partials/stylesheet.html | 25 + site/layouts/robots.txt | 12 + site/layouts/shortcodes/callout.html | 10 + site/layouts/shortcodes/docsref.html | 1 + site/layouts/shortcodes/example.html | 26 + site/layouts/shortcodes/markdown.html | 1 + site/layouts/shortcodes/param.html | 12 + site/layouts/shortcodes/partial.html | 1 + site/layouts/shortcodes/placeholder.html | 30 + site/layouts/shortcodes/year.html | 5 + site/layouts/sitemap.xml | 10 + site/robots.txt | 11 - site/static/CNAME | 1 + .../docs/4.5/assets/brand/bootstrap-outline.svg | 5 + .../docs/4.5/assets/brand/bootstrap-punchout.svg | 5 + .../4.5/assets/brand/bootstrap-social-logo.png | Bin 0 -> 23959 bytes .../docs/4.5/assets/brand/bootstrap-social.png | Bin 0 -> 231733 bytes .../docs/4.5/assets/brand/bootstrap-solid.svg | 5 + .../static/docs/4.5/assets/img/bootstrap-icons.png | Bin 0 -> 40798 bytes .../docs/4.5/assets/img/bootstrap-icons@2x.png | Bin 0 -> 125571 bytes .../4.5/assets/img/bootstrap-themes-collage.png | Bin 0 -> 74876 bytes .../4.5/assets/img/bootstrap-themes-collage@2x.png | Bin 0 -> 244640 bytes .../docs/4.5/assets/img/bootstrap-themes.png | Bin 0 -> 88695 bytes .../docs/4.5/assets/img/bootstrap-themes@2x.png | Bin 0 -> 278159 bytes site/static/docs/4.5/assets/img/examples/album.png | Bin 0 -> 21740 bytes .../docs/4.5/assets/img/examples/album@2x.png | Bin 0 -> 26370 bytes site/static/docs/4.5/assets/img/examples/blog.png | Bin 0 -> 32843 bytes .../docs/4.5/assets/img/examples/blog@2x.png | Bin 0 -> 36944 bytes .../docs/4.5/assets/img/examples/carousel.png | Bin 0 -> 21450 bytes .../docs/4.5/assets/img/examples/carousel@2x.png | Bin 0 -> 31465 bytes .../docs/4.5/assets/img/examples/checkout.png | Bin 0 -> 25151 bytes .../docs/4.5/assets/img/examples/checkout@2x.png | Bin 0 -> 28180 bytes site/static/docs/4.5/assets/img/examples/cover.png | Bin 0 -> 7240 bytes .../docs/4.5/assets/img/examples/cover@2x.png | Bin 0 -> 17953 bytes .../docs/4.5/assets/img/examples/dashboard.png | Bin 0 -> 24376 bytes .../docs/4.5/assets/img/examples/dashboard@2x.png | Bin 0 -> 26556 bytes .../4.5/assets/img/examples/floating-labels.png | Bin 0 -> 10516 bytes .../4.5/assets/img/examples/floating-labels@2x.png | Bin 0 -> 11053 bytes site/static/docs/4.5/assets/img/examples/grid.png | Bin 0 -> 37960 bytes .../docs/4.5/assets/img/examples/grid@2x.png | Bin 0 -> 34834 bytes .../docs/4.5/assets/img/examples/jumbotron.png | Bin 0 -> 31403 bytes .../docs/4.5/assets/img/examples/jumbotron@2x.png | Bin 0 -> 38408 bytes .../docs/4.5/assets/img/examples/navbar-bottom.png | Bin 0 -> 9774 bytes .../4.5/assets/img/examples/navbar-bottom@2x.png | Bin 0 -> 11316 bytes .../docs/4.5/assets/img/examples/navbar-fixed.png | Bin 0 -> 11569 bytes .../4.5/assets/img/examples/navbar-fixed@2x.png | Bin 0 -> 13616 bytes .../docs/4.5/assets/img/examples/navbar-static.png | Bin 0 -> 12523 bytes .../4.5/assets/img/examples/navbar-static@2x.png | Bin 0 -> 14893 bytes .../docs/4.5/assets/img/examples/navbars.png | Bin 0 -> 24748 bytes .../docs/4.5/assets/img/examples/navbars@2x.png | Bin 0 -> 27187 bytes .../docs/4.5/assets/img/examples/offcanvas.png | Bin 0 -> 20148 bytes .../docs/4.5/assets/img/examples/offcanvas@2x.png | Bin 0 -> 23975 bytes .../docs/4.5/assets/img/examples/pricing.png | Bin 0 -> 25033 bytes .../docs/4.5/assets/img/examples/pricing@2x.png | Bin 0 -> 29128 bytes .../docs/4.5/assets/img/examples/product.png | Bin 0 -> 24977 bytes .../docs/4.5/assets/img/examples/product@2x.png | Bin 0 -> 27953 bytes .../docs/4.5/assets/img/examples/sign-in.png | Bin 0 -> 5704 bytes .../docs/4.5/assets/img/examples/sign-in@2x.png | Bin 0 -> 5680 bytes .../4.5/assets/img/examples/starter-template.png | Bin 0 -> 9761 bytes .../assets/img/examples/starter-template@2x.png | Bin 0 -> 11334 bytes .../assets/img/examples/sticky-footer-navbar.png | Bin 0 -> 14167 bytes .../img/examples/sticky-footer-navbar@2x.png | Bin 0 -> 15836 bytes .../docs/4.5/assets/img/examples/sticky-footer.png | Bin 0 -> 8170 bytes .../4.5/assets/img/examples/sticky-footer@2x.png | Bin 0 -> 9665 bytes .../assets/img/favicons/android-chrome-192x192.png | Bin 0 -> 1935 bytes .../assets/img/favicons/android-chrome-512x512.png | Bin 0 -> 4269 bytes .../4.5/assets/img/favicons/apple-touch-icon.png | Bin 0 -> 1738 bytes .../docs/4.5/assets/img/favicons/browserconfig.xml | 9 + .../docs/4.5/assets/img/favicons/favicon-16x16.png | Bin 0 -> 310 bytes .../docs/4.5/assets/img/favicons/favicon-32x32.png | Bin 0 -> 491 bytes .../docs/4.5/assets/img/favicons/favicon.ico | Bin 0 -> 5430 bytes .../docs/4.5/assets/img/favicons/manifest.json | 20 + .../4.5/assets/img/favicons/mstile-144x144.png | Bin 0 -> 1479 bytes .../4.5/assets/img/favicons/mstile-150x150.png | Bin 0 -> 1428 bytes .../4.5/assets/img/favicons/mstile-310x150.png | Bin 0 -> 1746 bytes .../4.5/assets/img/favicons/mstile-310x310.png | Bin 0 -> 3085 bytes .../docs/4.5/assets/img/favicons/mstile-70x70.png | Bin 0 -> 1104 bytes .../4.5/assets/img/favicons/safari-pinned-tab.svg | 4 + .../docs/4.5/assets/js/vendor/jquery.slim.min.js | 2 + site/static/sw.js | 27 + site/sw.js | 27 - 547 files changed, 24116 insertions(+), 23249 deletions(-) delete mode 100644 CNAME delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 _config.yml create mode 100644 config.yml delete mode 100644 site/_data/breakpoints.yml delete mode 100644 site/_data/browser-bugs.yml delete mode 100644 site/_data/browser-features.yml delete mode 100644 site/_data/colors.yml delete mode 100644 site/_data/core-team.yml delete mode 100644 site/_data/docs-versions.yml delete mode 100644 site/_data/examples.yml delete mode 100644 site/_data/grays.yml delete mode 100644 site/_data/nav.yml delete mode 100644 site/_data/theme-colors.yml delete mode 100644 site/_data/translations.yml delete mode 100644 site/_includes/ads.html delete mode 100644 site/_includes/analytics.html delete mode 100644 site/_includes/bugify.html delete mode 100644 site/_includes/callout-danger-async-methods.md delete mode 100644 site/_includes/callout-info-mediaqueries-breakpoints.md delete mode 100644 site/_includes/callout-info-prefersreducedmotion.md delete mode 100644 site/_includes/callout-warning-color-assistive-technologies.md delete mode 100644 site/_includes/callout.html delete mode 100644 site/_includes/docs-navbar.html delete mode 100644 site/_includes/docs-sidebar.html delete mode 100644 site/_includes/example.html delete mode 100644 site/_includes/favicons.html delete mode 100644 site/_includes/footer.html delete mode 100644 site/_includes/header.html delete mode 100644 site/_includes/icons/bootstrap-stack.svg delete mode 100644 site/_includes/icons/bootstrap.svg delete mode 100644 site/_includes/icons/circle-square.svg delete mode 100644 site/_includes/icons/cloud-fill.svg delete mode 100644 site/_includes/icons/code.svg delete mode 100644 site/_includes/icons/droplet-fill.svg delete mode 100644 site/_includes/icons/github.svg delete mode 100644 site/_includes/icons/menu.svg delete mode 100644 site/_includes/icons/opencollective.svg delete mode 100644 site/_includes/icons/placeholder.svg delete mode 100644 site/_includes/icons/slack.svg delete mode 100644 site/_includes/icons/twitter.svg delete mode 100644 site/_includes/scripts.html delete mode 100644 site/_includes/skippy.html delete mode 100644 site/_includes/social.html delete mode 100644 site/_includes/stylesheet.html delete mode 100644 site/_layouts/default.html delete mode 100644 site/_layouts/docs.html delete mode 100644 site/_layouts/examples.html delete mode 100644 site/_layouts/home.html delete mode 100644 site/_layouts/simple.html create mode 100644 site/assets/js/application.js create mode 100644 site/assets/js/ie-emulation-modes-warning.js create mode 100644 site/assets/js/search.js create mode 100644 site/assets/js/vendor/anchor.min.js create mode 100644 site/assets/js/vendor/bs-custom-file-input.min.js create mode 100644 site/assets/js/vendor/clipboard.min.js create mode 100644 site/assets/scss/_ads.scss create mode 100644 site/assets/scss/_algolia.scss create mode 100644 site/assets/scss/_anchor.scss create mode 100644 site/assets/scss/_brand.scss create mode 100644 site/assets/scss/_browser-bugs.scss create mode 100644 site/assets/scss/_buttons.scss create mode 100644 site/assets/scss/_callouts.scss create mode 100644 site/assets/scss/_clipboard-js.scss create mode 100644 site/assets/scss/_colors.scss create mode 100644 site/assets/scss/_component-examples.scss create mode 100644 site/assets/scss/_content.scss create mode 100644 site/assets/scss/_footer.scss create mode 100644 site/assets/scss/_masthead.scss create mode 100644 site/assets/scss/_nav.scss create mode 100644 site/assets/scss/_placeholder-img.scss create mode 100644 site/assets/scss/_sidebar.scss create mode 100644 site/assets/scss/_skippy.scss create mode 100644 site/assets/scss/_syntax.scss create mode 100644 site/assets/scss/_toc.scss create mode 100644 site/assets/scss/_variables.scss create mode 100644 site/assets/scss/docs.scss create mode 100644 site/content/docs/4.5/_index.html create mode 100644 site/content/docs/4.5/about/brand.md create mode 100644 site/content/docs/4.5/about/license.md create mode 100644 site/content/docs/4.5/about/overview.md create mode 100644 site/content/docs/4.5/about/team.md create mode 100644 site/content/docs/4.5/about/translations.md create mode 100644 site/content/docs/4.5/browser-bugs.md create mode 100644 site/content/docs/4.5/components/alerts.md create mode 100644 site/content/docs/4.5/components/badge.md create mode 100644 site/content/docs/4.5/components/breadcrumb.md create mode 100644 site/content/docs/4.5/components/button-group.md create mode 100644 site/content/docs/4.5/components/buttons.md create mode 100644 site/content/docs/4.5/components/card.md create mode 100644 site/content/docs/4.5/components/carousel.md create mode 100644 site/content/docs/4.5/components/collapse.md create mode 100644 site/content/docs/4.5/components/dropdowns.md create mode 100644 site/content/docs/4.5/components/forms.md create mode 100644 site/content/docs/4.5/components/input-group.md create mode 100644 site/content/docs/4.5/components/jumbotron.md create mode 100644 site/content/docs/4.5/components/list-group.md create mode 100644 site/content/docs/4.5/components/media-object.md create mode 100644 site/content/docs/4.5/components/modal.md create mode 100644 site/content/docs/4.5/components/navbar.md create mode 100644 site/content/docs/4.5/components/navs.md create mode 100644 site/content/docs/4.5/components/pagination.md create mode 100644 site/content/docs/4.5/components/popovers.md create mode 100644 site/content/docs/4.5/components/progress.md create mode 100644 site/content/docs/4.5/components/scrollspy.md create mode 100644 site/content/docs/4.5/components/spinners.md create mode 100644 site/content/docs/4.5/components/toasts.md create mode 100644 site/content/docs/4.5/components/tooltips.md create mode 100644 site/content/docs/4.5/content/code.md create mode 100644 site/content/docs/4.5/content/figures.md create mode 100644 site/content/docs/4.5/content/images.md create mode 100644 site/content/docs/4.5/content/reboot.md create mode 100644 site/content/docs/4.5/content/tables.md create mode 100644 site/content/docs/4.5/content/typography.md create mode 100644 site/content/docs/4.5/examples/.stylelintrc create mode 100644 site/content/docs/4.5/examples/_index.md create mode 100644 site/content/docs/4.5/examples/album/album.css create mode 100644 site/content/docs/4.5/examples/album/index.html create mode 100644 site/content/docs/4.5/examples/blog/blog.css create mode 100644 site/content/docs/4.5/examples/blog/index.html create mode 100644 site/content/docs/4.5/examples/carousel/carousel.css create mode 100644 site/content/docs/4.5/examples/carousel/index.html create mode 100644 site/content/docs/4.5/examples/checkout/form-validation.css create mode 100644 site/content/docs/4.5/examples/checkout/form-validation.js create mode 100644 site/content/docs/4.5/examples/checkout/index.html create mode 100644 site/content/docs/4.5/examples/cover/cover.css create mode 100644 site/content/docs/4.5/examples/cover/index.html create mode 100644 site/content/docs/4.5/examples/dashboard/dashboard.css create mode 100644 site/content/docs/4.5/examples/dashboard/dashboard.js create mode 100644 site/content/docs/4.5/examples/dashboard/index.html create mode 100644 site/content/docs/4.5/examples/floating-labels/floating-labels.css create mode 100644 site/content/docs/4.5/examples/floating-labels/index.html create mode 100644 site/content/docs/4.5/examples/grid/grid.css create mode 100644 site/content/docs/4.5/examples/grid/index.html create mode 100644 site/content/docs/4.5/examples/jumbotron/index.html create mode 100644 site/content/docs/4.5/examples/jumbotron/jumbotron.css create mode 100644 site/content/docs/4.5/examples/navbar-bottom/index.html create mode 100644 site/content/docs/4.5/examples/navbar-fixed/index.html create mode 100644 site/content/docs/4.5/examples/navbar-fixed/navbar-top-fixed.css create mode 100644 site/content/docs/4.5/examples/navbar-static/index.html create mode 100644 site/content/docs/4.5/examples/navbar-static/navbar-top.css create mode 100644 site/content/docs/4.5/examples/navbars/index.html create mode 100644 site/content/docs/4.5/examples/navbars/navbar.css create mode 100644 site/content/docs/4.5/examples/offcanvas/index.html create mode 100644 site/content/docs/4.5/examples/offcanvas/offcanvas.css create mode 100644 site/content/docs/4.5/examples/offcanvas/offcanvas.js create mode 100644 site/content/docs/4.5/examples/pricing/index.html create mode 100644 site/content/docs/4.5/examples/pricing/pricing.css create mode 100644 site/content/docs/4.5/examples/product/index.html create mode 100644 site/content/docs/4.5/examples/product/product.css create mode 100644 site/content/docs/4.5/examples/sign-in/index.html create mode 100644 site/content/docs/4.5/examples/sign-in/signin.css create mode 100644 site/content/docs/4.5/examples/starter-template/index.html create mode 100644 site/content/docs/4.5/examples/starter-template/starter-template.css create mode 100644 site/content/docs/4.5/examples/sticky-footer-navbar/index.html create mode 100644 site/content/docs/4.5/examples/sticky-footer-navbar/sticky-footer-navbar.css create mode 100644 site/content/docs/4.5/examples/sticky-footer/index.html create mode 100644 site/content/docs/4.5/examples/sticky-footer/sticky-footer.css create mode 100644 site/content/docs/4.5/extend/approach.md create mode 100644 site/content/docs/4.5/extend/icons.md create mode 100644 site/content/docs/4.5/getting-started/accessibility.md create mode 100644 site/content/docs/4.5/getting-started/best-practices.md create mode 100644 site/content/docs/4.5/getting-started/browsers-devices.md create mode 100644 site/content/docs/4.5/getting-started/build-tools.md create mode 100644 site/content/docs/4.5/getting-started/contents.md create mode 100644 site/content/docs/4.5/getting-started/download.md create mode 100644 site/content/docs/4.5/getting-started/introduction.md create mode 100644 site/content/docs/4.5/getting-started/javascript.md create mode 100644 site/content/docs/4.5/getting-started/theming.md create mode 100644 site/content/docs/4.5/getting-started/webpack.md create mode 100644 site/content/docs/4.5/layout/grid.md create mode 100644 site/content/docs/4.5/layout/overview.md create mode 100644 site/content/docs/4.5/layout/utilities-for-layout.md create mode 100644 site/content/docs/4.5/migration.md create mode 100644 site/content/docs/4.5/utilities/borders.md create mode 100644 site/content/docs/4.5/utilities/clearfix.md create mode 100644 site/content/docs/4.5/utilities/close-icon.md create mode 100644 site/content/docs/4.5/utilities/colors.md create mode 100644 site/content/docs/4.5/utilities/display.md create mode 100644 site/content/docs/4.5/utilities/embed.md create mode 100644 site/content/docs/4.5/utilities/flex.md create mode 100644 site/content/docs/4.5/utilities/float.md create mode 100644 site/content/docs/4.5/utilities/image-replacement.md create mode 100644 site/content/docs/4.5/utilities/interactions.md create mode 100644 site/content/docs/4.5/utilities/overflow.md create mode 100644 site/content/docs/4.5/utilities/position.md create mode 100644 site/content/docs/4.5/utilities/screen-readers.md create mode 100644 site/content/docs/4.5/utilities/shadows.md create mode 100644 site/content/docs/4.5/utilities/sizing.md create mode 100644 site/content/docs/4.5/utilities/spacing.md create mode 100644 site/content/docs/4.5/utilities/stretched-link.md create mode 100644 site/content/docs/4.5/utilities/text.md create mode 100644 site/content/docs/4.5/utilities/vertical-align.md create mode 100644 site/content/docs/4.5/utilities/visibility.md create mode 100644 site/content/docs/_index.html create mode 100644 site/content/docs/versions.md create mode 100644 site/data/breakpoints.yml create mode 100644 site/data/browser-bugs.yml create mode 100644 site/data/browser-features.yml create mode 100644 site/data/colors.yml create mode 100644 site/data/core-team.yml create mode 100644 site/data/docs-versions.yml create mode 100644 site/data/examples.yml create mode 100644 site/data/grays.yml create mode 100644 site/data/sidebar.yml create mode 100644 site/data/theme-colors.yml create mode 100644 site/data/translations.yml delete mode 100644 site/docs/4.5/about/brand.md delete mode 100644 site/docs/4.5/about/license.md delete mode 100644 site/docs/4.5/about/overview.md delete mode 100644 site/docs/4.5/about/team.md delete mode 100644 site/docs/4.5/about/translations.md delete mode 100644 site/docs/4.5/assets/brand/bootstrap-outline.svg delete mode 100644 site/docs/4.5/assets/brand/bootstrap-punchout.svg delete mode 100644 site/docs/4.5/assets/brand/bootstrap-social-logo.png delete mode 100644 site/docs/4.5/assets/brand/bootstrap-social.png delete mode 100644 site/docs/4.5/assets/brand/bootstrap-solid.svg delete mode 100644 site/docs/4.5/assets/css/docs.min.css delete mode 100644 site/docs/4.5/assets/css/docs.min.css.map delete mode 100644 site/docs/4.5/assets/img/bootstrap-icons.png delete mode 100644 site/docs/4.5/assets/img/bootstrap-icons@2x.png delete mode 100644 site/docs/4.5/assets/img/bootstrap-themes-collage.png delete mode 100644 site/docs/4.5/assets/img/bootstrap-themes-collage@2x.png delete mode 100644 site/docs/4.5/assets/img/bootstrap-themes.png delete mode 100644 site/docs/4.5/assets/img/bootstrap-themes@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/album.png delete mode 100644 site/docs/4.5/assets/img/examples/album@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/blog.png delete mode 100644 site/docs/4.5/assets/img/examples/blog@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/carousel.png delete mode 100644 site/docs/4.5/assets/img/examples/carousel@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/checkout.png delete mode 100644 site/docs/4.5/assets/img/examples/checkout@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/cover.png delete mode 100644 site/docs/4.5/assets/img/examples/cover@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/dashboard.png delete mode 100644 site/docs/4.5/assets/img/examples/dashboard@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/floating-labels.png delete mode 100644 site/docs/4.5/assets/img/examples/floating-labels@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/grid.png delete mode 100644 site/docs/4.5/assets/img/examples/grid@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/jumbotron.png delete mode 100644 site/docs/4.5/assets/img/examples/jumbotron@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-bottom.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-bottom@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-fixed.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-fixed@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-static.png delete mode 100644 site/docs/4.5/assets/img/examples/navbar-static@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/navbars.png delete mode 100644 site/docs/4.5/assets/img/examples/navbars@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/offcanvas.png delete mode 100644 site/docs/4.5/assets/img/examples/offcanvas@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/pricing.png delete mode 100644 site/docs/4.5/assets/img/examples/pricing@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/product.png delete mode 100644 site/docs/4.5/assets/img/examples/product@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/sign-in.png delete mode 100644 site/docs/4.5/assets/img/examples/sign-in@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/starter-template.png delete mode 100644 site/docs/4.5/assets/img/examples/starter-template@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/sticky-footer-navbar.png delete mode 100644 site/docs/4.5/assets/img/examples/sticky-footer-navbar@2x.png delete mode 100644 site/docs/4.5/assets/img/examples/sticky-footer.png delete mode 100644 site/docs/4.5/assets/img/examples/sticky-footer@2x.png delete mode 100644 site/docs/4.5/assets/img/favicons/android-chrome-192x192.png delete mode 100644 site/docs/4.5/assets/img/favicons/android-chrome-512x512.png delete mode 100644 site/docs/4.5/assets/img/favicons/apple-touch-icon.png delete mode 100644 site/docs/4.5/assets/img/favicons/browserconfig.xml delete mode 100644 site/docs/4.5/assets/img/favicons/favicon-16x16.png delete mode 100644 site/docs/4.5/assets/img/favicons/favicon-32x32.png delete mode 100644 site/docs/4.5/assets/img/favicons/favicon.ico delete mode 100644 site/docs/4.5/assets/img/favicons/manifest.json delete mode 100644 site/docs/4.5/assets/img/favicons/mstile-144x144.png delete mode 100644 site/docs/4.5/assets/img/favicons/mstile-150x150.png delete mode 100644 site/docs/4.5/assets/img/favicons/mstile-310x150.png delete mode 100644 site/docs/4.5/assets/img/favicons/mstile-310x310.png delete mode 100644 site/docs/4.5/assets/img/favicons/mstile-70x70.png delete mode 100644 site/docs/4.5/assets/img/favicons/safari-pinned-tab.svg delete mode 100644 site/docs/4.5/assets/js/docs.min.js delete mode 100644 site/docs/4.5/assets/js/src/application.js delete mode 100644 site/docs/4.5/assets/js/src/ie-emulation-modes-warning.js delete mode 100644 site/docs/4.5/assets/js/src/search.js delete mode 100644 site/docs/4.5/assets/js/vendor/anchor.min.js delete mode 100644 site/docs/4.5/assets/js/vendor/bs-custom-file-input.min.js delete mode 100644 site/docs/4.5/assets/js/vendor/clipboard.min.js delete mode 100644 site/docs/4.5/assets/js/vendor/jquery.slim.min.js delete mode 100644 site/docs/4.5/assets/scss/_ads.scss delete mode 100644 site/docs/4.5/assets/scss/_algolia.scss delete mode 100644 site/docs/4.5/assets/scss/_anchor.scss delete mode 100644 site/docs/4.5/assets/scss/_brand.scss delete mode 100644 site/docs/4.5/assets/scss/_browser-bugs.scss delete mode 100644 site/docs/4.5/assets/scss/_buttons.scss delete mode 100644 site/docs/4.5/assets/scss/_callouts.scss delete mode 100644 site/docs/4.5/assets/scss/_clipboard-js.scss delete mode 100644 site/docs/4.5/assets/scss/_colors.scss delete mode 100644 site/docs/4.5/assets/scss/_component-examples.scss delete mode 100644 site/docs/4.5/assets/scss/_content.scss delete mode 100644 site/docs/4.5/assets/scss/_footer.scss delete mode 100644 site/docs/4.5/assets/scss/_masthead.scss delete mode 100644 site/docs/4.5/assets/scss/_nav.scss delete mode 100644 site/docs/4.5/assets/scss/_placeholder-img.scss delete mode 100644 site/docs/4.5/assets/scss/_sidebar.scss delete mode 100644 site/docs/4.5/assets/scss/_skippy.scss delete mode 100644 site/docs/4.5/assets/scss/_syntax.scss delete mode 100644 site/docs/4.5/assets/scss/_variables.scss delete mode 100644 site/docs/4.5/assets/scss/docs.scss delete mode 100644 site/docs/4.5/browser-bugs.md delete mode 100644 site/docs/4.5/components/alerts.md delete mode 100644 site/docs/4.5/components/badge.md delete mode 100644 site/docs/4.5/components/breadcrumb.md delete mode 100644 site/docs/4.5/components/button-group.md delete mode 100644 site/docs/4.5/components/buttons.md delete mode 100644 site/docs/4.5/components/card.md delete mode 100644 site/docs/4.5/components/carousel.md delete mode 100644 site/docs/4.5/components/collapse.md delete mode 100644 site/docs/4.5/components/dropdowns.md delete mode 100644 site/docs/4.5/components/forms.md delete mode 100644 site/docs/4.5/components/input-group.md delete mode 100644 site/docs/4.5/components/jumbotron.md delete mode 100644 site/docs/4.5/components/list-group.md delete mode 100644 site/docs/4.5/components/media-object.md delete mode 100644 site/docs/4.5/components/modal.md delete mode 100644 site/docs/4.5/components/navbar.md delete mode 100644 site/docs/4.5/components/navs.md delete mode 100644 site/docs/4.5/components/pagination.md delete mode 100644 site/docs/4.5/components/popovers.md delete mode 100644 site/docs/4.5/components/progress.md delete mode 100644 site/docs/4.5/components/scrollspy.md delete mode 100644 site/docs/4.5/components/spinners.md delete mode 100644 site/docs/4.5/components/toasts.md delete mode 100644 site/docs/4.5/components/tooltips.md delete mode 100644 site/docs/4.5/content/code.md delete mode 100644 site/docs/4.5/content/figures.md delete mode 100644 site/docs/4.5/content/images.md delete mode 100644 site/docs/4.5/content/reboot.md delete mode 100644 site/docs/4.5/content/tables.md delete mode 100644 site/docs/4.5/content/typography.md delete mode 100644 site/docs/4.5/examples/.stylelintrc delete mode 100644 site/docs/4.5/examples/album/album.css delete mode 100644 site/docs/4.5/examples/album/index.html delete mode 100644 site/docs/4.5/examples/blog/blog.css delete mode 100644 site/docs/4.5/examples/blog/index.html delete mode 100644 site/docs/4.5/examples/carousel/carousel.css delete mode 100644 site/docs/4.5/examples/carousel/index.html delete mode 100644 site/docs/4.5/examples/checkout/form-validation.css delete mode 100644 site/docs/4.5/examples/checkout/form-validation.js delete mode 100644 site/docs/4.5/examples/checkout/index.html delete mode 100644 site/docs/4.5/examples/cover/cover.css delete mode 100644 site/docs/4.5/examples/cover/index.html delete mode 100644 site/docs/4.5/examples/dashboard/dashboard.css delete mode 100644 site/docs/4.5/examples/dashboard/dashboard.js delete mode 100644 site/docs/4.5/examples/dashboard/index.html delete mode 100644 site/docs/4.5/examples/floating-labels/floating-labels.css delete mode 100644 site/docs/4.5/examples/floating-labels/index.html delete mode 100644 site/docs/4.5/examples/grid/grid.css delete mode 100644 site/docs/4.5/examples/grid/index.html delete mode 100644 site/docs/4.5/examples/index.html delete mode 100644 site/docs/4.5/examples/jumbotron/index.html delete mode 100644 site/docs/4.5/examples/jumbotron/jumbotron.css delete mode 100644 site/docs/4.5/examples/navbar-bottom/index.html delete mode 100644 site/docs/4.5/examples/navbar-fixed/index.html delete mode 100644 site/docs/4.5/examples/navbar-fixed/navbar-top-fixed.css delete mode 100644 site/docs/4.5/examples/navbar-static/index.html delete mode 100644 site/docs/4.5/examples/navbar-static/navbar-top.css delete mode 100644 site/docs/4.5/examples/navbars/index.html delete mode 100644 site/docs/4.5/examples/navbars/navbar.css delete mode 100644 site/docs/4.5/examples/offcanvas/index.html delete mode 100644 site/docs/4.5/examples/offcanvas/offcanvas.css delete mode 100644 site/docs/4.5/examples/offcanvas/offcanvas.js delete mode 100644 site/docs/4.5/examples/pricing/index.html delete mode 100644 site/docs/4.5/examples/pricing/pricing.css delete mode 100644 site/docs/4.5/examples/product/index.html delete mode 100644 site/docs/4.5/examples/product/product.css delete mode 100644 site/docs/4.5/examples/sign-in/index.html delete mode 100644 site/docs/4.5/examples/sign-in/signin.css delete mode 100644 site/docs/4.5/examples/starter-template/index.html delete mode 100644 site/docs/4.5/examples/starter-template/starter-template.css delete mode 100644 site/docs/4.5/examples/sticky-footer-navbar/index.html delete mode 100644 site/docs/4.5/examples/sticky-footer-navbar/sticky-footer-navbar.css delete mode 100644 site/docs/4.5/examples/sticky-footer/index.html delete mode 100644 site/docs/4.5/examples/sticky-footer/sticky-footer.css delete mode 100644 site/docs/4.5/extend/approach.md delete mode 100644 site/docs/4.5/extend/icons.md delete mode 100644 site/docs/4.5/getting-started/accessibility.md delete mode 100644 site/docs/4.5/getting-started/best-practices.md delete mode 100644 site/docs/4.5/getting-started/browsers-devices.md delete mode 100644 site/docs/4.5/getting-started/build-tools.md delete mode 100644 site/docs/4.5/getting-started/contents.md delete mode 100644 site/docs/4.5/getting-started/download.md delete mode 100644 site/docs/4.5/getting-started/introduction.md delete mode 100644 site/docs/4.5/getting-started/javascript.md delete mode 100644 site/docs/4.5/getting-started/theming.md delete mode 100644 site/docs/4.5/getting-started/webpack.md delete mode 100644 site/docs/4.5/layout/grid.md delete mode 100644 site/docs/4.5/layout/overview.md delete mode 100644 site/docs/4.5/layout/utilities-for-layout.md delete mode 100644 site/docs/4.5/migration.md delete mode 100644 site/docs/4.5/utilities/borders.md delete mode 100644 site/docs/4.5/utilities/clearfix.md delete mode 100644 site/docs/4.5/utilities/close-icon.md delete mode 100644 site/docs/4.5/utilities/colors.md delete mode 100644 site/docs/4.5/utilities/display.md delete mode 100644 site/docs/4.5/utilities/embed.md delete mode 100644 site/docs/4.5/utilities/flex.md delete mode 100644 site/docs/4.5/utilities/float.md delete mode 100644 site/docs/4.5/utilities/image-replacement.md delete mode 100644 site/docs/4.5/utilities/interactions.md delete mode 100644 site/docs/4.5/utilities/overflow.md delete mode 100644 site/docs/4.5/utilities/position.md delete mode 100644 site/docs/4.5/utilities/screen-readers.md delete mode 100644 site/docs/4.5/utilities/shadows.md delete mode 100644 site/docs/4.5/utilities/sizing.md delete mode 100644 site/docs/4.5/utilities/spacing.md delete mode 100644 site/docs/4.5/utilities/stretched-link.md delete mode 100644 site/docs/4.5/utilities/text.md delete mode 100644 site/docs/4.5/utilities/vertical-align.md delete mode 100644 site/docs/4.5/utilities/visibility.md delete mode 100644 site/docs/versions.html delete mode 100644 site/favicon.ico delete mode 100644 site/index.html create mode 100644 site/layouts/_default/docs.html create mode 100644 site/layouts/_default/examples.html create mode 100644 site/layouts/_default/home.html create mode 100644 site/layouts/_default/redirect.html create mode 100644 site/layouts/_default/single.html create mode 100644 site/layouts/alias.html create mode 100644 site/layouts/partials/ads.html create mode 100644 site/layouts/partials/analytics.html create mode 100644 site/layouts/partials/bugify.html create mode 100644 site/layouts/partials/callout-danger-async-methods.md create mode 100644 site/layouts/partials/callout-info-mediaqueries-breakpoints.md create mode 100644 site/layouts/partials/callout-info-prefersreducedmotion.md create mode 100644 site/layouts/partials/callout-warning-color-assistive-technologies.md create mode 100644 site/layouts/partials/docs-navbar.html create mode 100644 site/layouts/partials/docs-sidebar.html create mode 100644 site/layouts/partials/favicons.html create mode 100644 site/layouts/partials/footer.html create mode 100644 site/layouts/partials/header.html create mode 100644 site/layouts/partials/home/masthead-followup.html create mode 100644 site/layouts/partials/home/masthead.html create mode 100644 site/layouts/partials/icons/bootstrap-stack.svg create mode 100644 site/layouts/partials/icons/bootstrap.svg create mode 100644 site/layouts/partials/icons/circle-square.svg create mode 100644 site/layouts/partials/icons/cloud-fill.svg create mode 100644 site/layouts/partials/icons/code.svg create mode 100644 site/layouts/partials/icons/droplet-fill.svg create mode 100644 site/layouts/partials/icons/github.svg create mode 100644 site/layouts/partials/icons/menu.svg create mode 100644 site/layouts/partials/icons/opencollective.svg create mode 100644 site/layouts/partials/icons/slack.svg create mode 100644 site/layouts/partials/icons/twitter.svg create mode 100644 site/layouts/partials/scripts.html create mode 100644 site/layouts/partials/skippy.html create mode 100644 site/layouts/partials/social.html create mode 100644 site/layouts/partials/stylesheet.html create mode 100644 site/layouts/robots.txt create mode 100644 site/layouts/shortcodes/callout.html create mode 100644 site/layouts/shortcodes/docsref.html create mode 100644 site/layouts/shortcodes/example.html create mode 100644 site/layouts/shortcodes/markdown.html create mode 100644 site/layouts/shortcodes/param.html create mode 100644 site/layouts/shortcodes/partial.html create mode 100644 site/layouts/shortcodes/placeholder.html create mode 100644 site/layouts/shortcodes/year.html create mode 100644 site/layouts/sitemap.xml delete mode 100644 site/robots.txt create mode 100644 site/static/CNAME create mode 100644 site/static/docs/4.5/assets/brand/bootstrap-outline.svg create mode 100644 site/static/docs/4.5/assets/brand/bootstrap-punchout.svg create mode 100644 site/static/docs/4.5/assets/brand/bootstrap-social-logo.png create mode 100644 site/static/docs/4.5/assets/brand/bootstrap-social.png create mode 100644 site/static/docs/4.5/assets/brand/bootstrap-solid.svg create mode 100644 site/static/docs/4.5/assets/img/bootstrap-icons.png create mode 100644 site/static/docs/4.5/assets/img/bootstrap-icons@2x.png create mode 100644 site/static/docs/4.5/assets/img/bootstrap-themes-collage.png create mode 100644 site/static/docs/4.5/assets/img/bootstrap-themes-collage@2x.png create mode 100644 site/static/docs/4.5/assets/img/bootstrap-themes.png create mode 100644 site/static/docs/4.5/assets/img/bootstrap-themes@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/album.png create mode 100644 site/static/docs/4.5/assets/img/examples/album@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/blog.png create mode 100644 site/static/docs/4.5/assets/img/examples/blog@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/carousel.png create mode 100644 site/static/docs/4.5/assets/img/examples/carousel@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/checkout.png create mode 100644 site/static/docs/4.5/assets/img/examples/checkout@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/cover.png create mode 100644 site/static/docs/4.5/assets/img/examples/cover@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/dashboard.png create mode 100644 site/static/docs/4.5/assets/img/examples/dashboard@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/floating-labels.png create mode 100644 site/static/docs/4.5/assets/img/examples/floating-labels@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/grid.png create mode 100644 site/static/docs/4.5/assets/img/examples/grid@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/jumbotron.png create mode 100644 site/static/docs/4.5/assets/img/examples/jumbotron@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-bottom.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-bottom@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-fixed.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-fixed@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-static.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbar-static@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbars.png create mode 100644 site/static/docs/4.5/assets/img/examples/navbars@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/offcanvas.png create mode 100644 site/static/docs/4.5/assets/img/examples/offcanvas@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/pricing.png create mode 100644 site/static/docs/4.5/assets/img/examples/pricing@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/product.png create mode 100644 site/static/docs/4.5/assets/img/examples/product@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/sign-in.png create mode 100644 site/static/docs/4.5/assets/img/examples/sign-in@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/starter-template.png create mode 100644 site/static/docs/4.5/assets/img/examples/starter-template@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/sticky-footer-navbar.png create mode 100644 site/static/docs/4.5/assets/img/examples/sticky-footer-navbar@2x.png create mode 100644 site/static/docs/4.5/assets/img/examples/sticky-footer.png create mode 100644 site/static/docs/4.5/assets/img/examples/sticky-footer@2x.png create mode 100644 site/static/docs/4.5/assets/img/favicons/android-chrome-192x192.png create mode 100644 site/static/docs/4.5/assets/img/favicons/android-chrome-512x512.png create mode 100644 site/static/docs/4.5/assets/img/favicons/apple-touch-icon.png create mode 100644 site/static/docs/4.5/assets/img/favicons/browserconfig.xml create mode 100644 site/static/docs/4.5/assets/img/favicons/favicon-16x16.png create mode 100644 site/static/docs/4.5/assets/img/favicons/favicon-32x32.png create mode 100644 site/static/docs/4.5/assets/img/favicons/favicon.ico create mode 100644 site/static/docs/4.5/assets/img/favicons/manifest.json create mode 100644 site/static/docs/4.5/assets/img/favicons/mstile-144x144.png create mode 100644 site/static/docs/4.5/assets/img/favicons/mstile-150x150.png create mode 100644 site/static/docs/4.5/assets/img/favicons/mstile-310x150.png create mode 100644 site/static/docs/4.5/assets/img/favicons/mstile-310x310.png create mode 100644 site/static/docs/4.5/assets/img/favicons/mstile-70x70.png create mode 100644 site/static/docs/4.5/assets/img/favicons/safari-pinned-tab.svg create mode 100644 site/static/docs/4.5/assets/js/vendor/jquery.slim.min.js create mode 100644 site/static/sw.js delete mode 100644 site/sw.js diff --git a/.eslintignore b/.eslintignore index 8747d5460d..ae6baae7e1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,4 +3,4 @@ **/vendor/ /_gh_pages/ /js/coverage/ -/site/sw.js +/site/static/sw.js diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 49639a16da..d0acbc4237 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -142,7 +142,7 @@ and/or [`/bootstrap/js/src/`](https://github.com/twbs/bootstrap/tree/v4-dev/js/s Similarly, when contributing to Bootstrap's documentation, you should edit the documentation source files in -[the `/bootstrap/site/docs/` directory of the `v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev/site/docs). +[the `/bootstrap/site/content/docs/` directory of the `v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev/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. diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5f2e3b9622..ac38d97ea5 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -9,7 +9,6 @@ on: env: CI: true NODE: 14.x - RUBY: 2.7.x jobs: docs: @@ -24,25 +23,7 @@ jobs: with: node-version: "${{ env.NODE }}" - - name: Set up Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: ${{ env.RUBY }} - - - name: Set up Ruby env - run: | - echo "gem: --no-document" > ~/.gemrc # Disable gem docs - bundle config set clean 'true' - bundle config set deployment 'true' - - - name: Set up Ruby cache - uses: actions/cache@v2 - with: - path: vendor/bundle - key: ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} - ${{ runner.os }}-ruby-v${{ env.RUBY }}- + - run: java -version - name: Set up npm cache uses: actions/cache@v2 @@ -53,19 +34,8 @@ jobs: ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} ${{ runner.OS }}-node-v${{ env.NODE }}- - - run: ruby --version - - run: gem --version - - run: bundle --version - - run: java -version - - name: Install npm dependencies run: npm ci - - name: Install bundler dependencies - run: bundle install --deployment --jobs=4 --retry=3 --clean - - - name: Copy CSS and JS - run: npm run css-copy && npm run js-copy - - name: Test docs run: npm run docs diff --git a/.gitignore b/.gitignore index a3437b8a5c..ef7b47d4b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,8 @@ # Ignore docs files /_gh_pages/ -/site/.jekyll-cache -/site/.jekyll-metadata -/site/docs/**/dist/ # Hugo folders /resources/ -# Ignore ruby/bundler files -/.bundle/ -/vendor/ -/.ruby-version - # Numerous always-ignore extensions *.diff *.err diff --git a/.stylelintignore b/.stylelintignore index 7bc488e5f8..e42e889384 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -2,3 +2,4 @@ **/dist/ **/vendor/ /_gh_pages/ +/js/coverage/ diff --git a/CNAME b/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 952b9dc777..0000000000 --- a/Gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source 'https://rubygems.org' - -group :development, :test do - gem 'jekyll', '~> 4.1.1' - gem 'jekyll-redirect-from', '~> 0.16.0' - gem 'jekyll-sitemap', '~> 1.4.0' - gem 'jekyll-toc', '~> 0.15.0' - gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform? -end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 194bad6b6e..0000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,89 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) - colorator (1.1.0) - concurrent-ruby (1.1.7) - em-websocket (0.5.2) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) - eventmachine (1.2.7) - eventmachine (1.2.7-x64-mingw32) - ffi (1.13.1) - ffi (1.13.1-x64-mingw32) - forwardable-extended (2.6.0) - http_parser.rb (0.6.0) - i18n (1.8.5) - concurrent-ruby (~> 1.0) - jekyll (4.1.1) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.4.0) - pathutil (~> 0.9) - rouge (~> 3.0) - safe_yaml (~> 1.0) - terminal-table (~> 1.8) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (2.1.0) - sassc (> 2.0.1, < 3.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-toc (0.15.0) - jekyll (>= 3.8) - nokogiri (~> 1.10) - jekyll-watch (2.2.1) - listen (~> 3.0) - kramdown (2.3.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.3) - listen (3.3.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - mini_portile2 (2.4.0) - nokogiri (1.10.10) - mini_portile2 (~> 2.4.0) - nokogiri (1.10.10-x64-mingw32) - mini_portile2 (~> 2.4.0) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (4.0.6) - rb-fsevent (0.10.4) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.4) - rouge (3.25.0) - safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - sassc (2.4.0-x64-mingw32) - ffi (~> 1.9) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - unicode-display_width (1.7.0) - wdm (0.1.1) - -PLATFORMS - ruby - x64-mingw32 - -DEPENDENCIES - jekyll (~> 4.1.1) - jekyll-redirect-from (~> 0.16.0) - jekyll-sitemap (~> 1.4.0) - jekyll-toc (~> 0.15.0) - wdm (~> 0.1.1) - -BUNDLED WITH - 2.1.4 diff --git a/README.md b/README.md index 35ce9feaac..7afa4abf70 100644 --- a/README.md +++ b/README.md @@ -111,18 +111,18 @@ Have a bug or a feature request? Please first read the [issue guidelines](https: ## Documentation -Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at . The docs may also be run locally. +Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. -Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/docs/4.5/assets/js/src/search.js` file. +Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/src/search.js` file. ### Running documentation locally -1. Run through the [tooling setup](https://getbootstrap.com/docs/4.5/getting-started/build-tools/#tooling-setup) to install Jekyll (the site builder) and other Ruby dependencies with `bundle install`. -2. Run `npm install` to install Node.js dependencies. +1. Run `npm install` to install the Node.js dependencies, including Hugo (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. Run `npm start` to compile CSS and JavaScript files, generate our docs, and watch for changes. -4. Open `http://localhost:9001` in your browser, and voilà. +4. Open `http://localhost:9001/` in your browser, and voilà. -Learn more about using Jekyll by reading its [documentation](https://jekyllrb.com/docs/). +Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/). ### Documentation for previous releases diff --git a/_config.yml b/_config.yml deleted file mode 100644 index d22dba867f..0000000000 --- a/_config.yml +++ /dev/null @@ -1,77 +0,0 @@ -# Dependencies -markdown: kramdown -highlighter: rouge - -kramdown: - auto_ids: true - -# Permalinks -permalink: pretty - -# Server -source: "site" -destination: ./_gh_pages -host: "localhost" -port: 9001 -baseurl: "" -url: "https://getbootstrap.com" -encoding: UTF-8 -exclude: - - docs/4.5/assets/scss/ - -liquid: - error_mode: strict - -plugins: - - jekyll-redirect-from - - jekyll-sitemap - - jekyll-toc - -redirect_from: - json: false - -# Social -title: Bootstrap -description: "The most popular HTML, CSS, and JS library in the world." -twitter: getbootstrap -authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors" -social_image_path: /docs/4.5/assets/brand/bootstrap-social.png -social_logo_path: /docs/4.5/assets/brand/bootstrap-social-logo.png - -# Custom variables -current_version: 4.5.3 -current_ruby_version: 4.5.3 -docs_version: 4.5 -github_org: "https://github.com/twbs" -repo: "https://github.com/twbs/bootstrap" -slack: "https://bootstrap-slack.herokuapp.com" -opencollective: "https://opencollective.com/bootstrap" -blog: "https://blog.getbootstrap.com" -expo: "https://expo.getbootstrap.com" -themes: "https://themes.getbootstrap.com" -icons: "https://icons.getbootstrap.com" - -download: - source: "https://github.com/twbs/bootstrap/archive/v4.5.3.zip" - dist: "https://github.com/twbs/bootstrap/releases/download/v4.5.3/bootstrap-4.5.3-dist.zip" - dist_examples: "https://github.com/twbs/bootstrap/releases/download/v4.5.3/bootstrap-4.5.3-examples.zip" - -cdn: - # See https://www.srihash.org for info on how to generate the hashes - css: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" - css_hash: "sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" - js: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" - js_hash: "sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" - js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" - js_bundle_hash: "sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" - jquery: "https://code.jquery.com/jquery-3.5.1.slim.min.js" - jquery_hash: "sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" - popper: "https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" - popper_hash: "sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" - -toc: - min_level: 2 - max_level: 4 - no_toc_section_class: - - "bd-callout" - - "bd-example" diff --git a/build/generate-sri.js b/build/generate-sri.js index 972f8622ef..74264a2a0a 100644 --- a/build/generate-sri.js +++ b/build/generate-sri.js @@ -21,11 +21,11 @@ const pkg = require('../package.json') sh.config.fatal = true -const configFile = path.join(__dirname, '../_config.yml') +const configFile = path.join(__dirname, '../config.yml') // Array of objects which holds the files to generate SRI hashes for. // `file` is the path from the root folder -// `configPropertyName` is the _config.yml variable's name of the file +// `configPropertyName` is the config.yml variable's name of the file const files = [ { file: 'dist/css/bootstrap.min.css', @@ -40,7 +40,7 @@ const files = [ configPropertyName: 'js_bundle_hash' }, { - file: `site/docs/${pkg.version_short}/assets/js/vendor/jquery.slim.min.js`, + file: `site/static/docs/${pkg.version_short}/assets/js/vendor/jquery.slim.min.js`, configPropertyName: 'jquery_hash' }, { diff --git a/config.yml b/config.yml new file mode 100644 index 0000000000..5ad2ac042f --- /dev/null +++ b/config.yml @@ -0,0 +1,79 @@ +languageCode: "en" +title: "Bootstrap" +baseURL: "https://getbootstrap.com" +enableInlineShortcodes: true + +markup: + goldmark: + renderer: + unsafe: true + highlight: + noClasses: false + tableOfContents: + startLevel: 2 + endLevel: 6 + +buildDrafts: true +buildFuture: true + +enableRobotsTXT: true +metaDataFormat: "yaml" +disableKinds: ["404", "taxonomy", "taxonomyTerm", "RSS"] + +publishDir: "_gh_pages" + +module: + mounts: + - source: dist + target: static/docs/4.5/dist + - source: site/assets + target: assets + - source: site/content + target: content + - source: site/data + target: data + - source: site/layouts + target: layouts + - source: site/static + target: static + - source: site/static/docs/4.5/assets/img/favicons/apple-touch-icon.png + target: static/apple-touch-icon.png + - source: site/static/docs/4.5/assets/img/favicons/favicon.ico + target: static/favicon.ico + +params: + description: "The most popular HTML, CSS, and JS library in the world." + authors: "Mark Otto, Jacob Thornton, and Bootstrap contributors" + social_image_path: /docs/4.5/assets/brand/bootstrap-social.png + social_logo_path: /docs/4.5/assets/brand/bootstrap-social-logo.png + + current_version: "4.5.3" + current_ruby_version: "4.5.3" + docs_version: "4.5" + github_org: "https://github.com/twbs" + repo: "https://github.com/twbs/bootstrap" + twitter: "getbootstrap" + slack: "https://bootstrap-slack.herokuapp.com/" + opencollective: "https://opencollective.com/bootstrap" + blog: "https://blog.getbootstrap.com/" + expo: "https://expo.getbootstrap.com/" + themes: "https://themes.getbootstrap.com/" + icons: "https://icons.getbootstrap.com/" + + download: + source: "https://github.com/twbs/bootstrap/archive/v4.5.3.zip" + dist: "https://github.com/twbs/bootstrap/releases/download/v4.5.3/bootstrap-4.5.3-dist.zip" + dist_examples: "https://github.com/twbs/bootstrap/releases/download/v4.5.3/bootstrap-4.5.3-examples.zip" + + cdn: + # See https://www.srihash.org for info on how to generate the hashes + css: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" + css_hash: "sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" + js: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" + js_hash: "sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" + js_bundle: "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" + js_bundle_hash: "sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" + jquery: "https://code.jquery.com/jquery-3.5.1.slim.min.js" + jquery_hash: "sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" + popper: "https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" + popper_hash: "sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" diff --git a/package-lock.json b/package-lock.json index 6edc8501e1..48ad7d9cbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1497,6 +1497,29 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "dev": true, + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + } + } + }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", @@ -1824,6 +1847,12 @@ "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", @@ -1854,6 +1883,125 @@ "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", "dev": true }, + "bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "executable": "^4.1.0" + } + }, + "bin-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", + "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "find-versions": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "bin-version-check": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", + "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", + "dev": true, + "requires": { + "bin-version": "^3.0.0", + "semver": "^5.6.0", + "semver-truncate": "^1.1.2" + } + }, + "bin-wrapper": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "dev": true, + "requires": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "dependencies": { + "import-lazy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "dev": true + } + } + }, "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", @@ -1881,6 +2029,16 @@ "file-uri-to-path": "1.0.0" } }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -2080,6 +2238,44 @@ "unzipper": "^0.9.3" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2286,6 +2482,18 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + } + }, "ccount": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", @@ -2715,6 +2923,16 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, "configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", @@ -2776,6 +2994,15 @@ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -2966,8 +3193,48 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, - "optional": true + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } }, "decompress-response": { "version": "3.3.0", @@ -2978,6 +3245,119 @@ "mimic-response": "^1.0.0" } }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -3189,6 +3569,153 @@ "is-obj": "^2.0.0" } }, + "download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dev": true, + "requires": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -3916,6 +4443,86 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, "execall": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", @@ -3925,6 +4532,23 @@ "clone-regexp": "^2.1.0" } }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -3963,6 +4587,25 @@ } } }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -4170,6 +4813,24 @@ "reusify": "^1.0.4" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", @@ -4179,6 +4840,12 @@ "flat-cache": "^2.0.1" } }, + "file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "dev": true + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -4186,6 +4853,23 @@ "dev": true, "optional": true }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -4314,6 +4998,15 @@ "path-exists": "^4.0.0" } }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -4391,6 +5084,22 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -4598,6 +5307,15 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "^1.1.0" + } + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -4896,12 +5614,27 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -5070,6 +5803,29 @@ } } }, + "hugo-bin": { + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.66.2.tgz", + "integrity": "sha512-T/U35qAnzKubHzMi10uolB50e+RgHigHyAEnhGy6upCEp2H1sbDtsmqyzIhc+gMK8VIzJoU3vg/nqfpkFKOwsA==", + "dev": true, + "requires": { + "bin-wrapper": "^4.1.0", + "pkg-conf": "^3.1.0", + "rimraf": "^3.0.2", + "signale": "^1.4.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5079,6 +5835,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -5191,6 +5953,16 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -5411,6 +6183,12 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", @@ -5451,6 +6229,12 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-path-inside": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", @@ -5497,6 +6281,12 @@ "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -5716,6 +6506,16 @@ "istanbul-lib-report": "^3.0.0" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -7250,6 +8050,24 @@ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", "dev": true }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -7360,6 +8178,23 @@ } } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -7615,18 +8450,53 @@ } } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, + "os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "dev": true, + "requires": { + "arch": "^2.1.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dev": true, + "requires": { + "p-timeout": "^2.0.1" + }, + "dependencies": { + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + } + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -7830,6 +8700,12 @@ } } }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -7869,6 +8745,81 @@ "pinkie": "^2.0.0" } }, + "pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -8439,6 +9390,18 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -8494,6 +9457,17 @@ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -9162,6 +10136,23 @@ } } }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dev": true, + "requires": { + "commander": "^2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -9185,6 +10176,21 @@ } } }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -9313,22 +10319,112 @@ "rechoir": "^0.6.2" } }, - "shx": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz", - "integrity": "sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==", - "dev": true, - "requires": { - "minimist": "^1.2.3", - "shelljs": "^0.8.4" - } - }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "requires": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + } + } + } + }, "sinon": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", @@ -9646,6 +10742,24 @@ } } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -9846,6 +10960,12 @@ } } }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -9983,6 +11103,21 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -9998,6 +11133,15 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -10550,6 +11694,21 @@ } } }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -10598,6 +11757,18 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, "tiny-glob": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.6.tgz", @@ -10634,6 +11805,12 @@ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", "dev": true }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -10746,6 +11923,15 @@ "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", "dev": true }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "trim-trailing-lines": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", @@ -10851,6 +12037,16 @@ "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", "dev": true }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", @@ -11192,6 +12388,12 @@ "prepend-http": "^2.0.0" } }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -11576,6 +12778,16 @@ "decamelize": "^1.2.0" } }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/package.json b/package.json index 87ff00cba7..2a66705d54 100644 --- a/package.json +++ b/package.json @@ -20,40 +20,25 @@ "scripts": { "start": "npm-run-all --parallel watch docs-serve", "bundlewatch": "bundlewatch --config .bundlewatch.config.json", - "css": "npm-run-all css-compile css-prefix css-minify css-copy", - "css-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/css/ site/docs/$npm_package_version_short/dist/", - "css-main": "npm-run-all css-lint css-compile-main css-prefix-main css-minify-main css-copy", - "css-docs": "npm-run-all css-compile-docs css-prefix-docs css-minify-docs", - "css-compile": "npm-run-all --parallel css-compile-*", - "css-compile-main": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist/css/ && npm run css-copy", - "css-compile-docs": "cross-env-shell node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 site/docs/$npm_package_version_short/assets/scss/docs.scss site/docs/$npm_package_version_short/assets/css/docs.min.css", + "css": "npm-run-all css-compile css-prefix css-minify", + "css-compile": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/ -o dist/css/", "css-lint": "npm-run-all --continue-on-error --parallel css-lint-*", - "css-lint-main": "stylelint \"scss/**/*.scss\" --cache --cache-location .cache/.stylelintcache --rd", - "css-lint-docs": "stylelint \"site/docs/**/assets/scss/*.scss\" \"site/docs/**/*.css\" --cache --cache-location .cache/.stylelintcache", - "css-lint-vars": "fusv scss/ site/docs/", - "css-minify": "npm-run-all --parallel css-minify-*", - "css-minify-main": "cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css", - "css-minify-docs": "cross-env-shell cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output site/docs/$npm_package_version_short/assets/css/docs.min.css site/docs/$npm_package_version_short/assets/css/docs.min.css", + "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd", + "css-lint-vars": "fusv scss/ site/assets/scss/", + "css-minify": "cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css", "css-prefix": "npm-run-all --parallel css-prefix-*", "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.min.css\"", - "css-prefix-docs": "postcss --config build/postcss.config.js --replace \"site/docs/**/*.css\"", - "js": "npm-run-all js-compile js-minify js-copy", - "js-copy": "cross-env-shell shx mkdir -p site/docs/$npm_package_version_short/dist/ && cross-env-shell shx cp -r dist/js/ site/docs/$npm_package_version_short/dist/", - "js-main": "npm-run-all js-lint js-compile js-minify-main", - "js-docs": "npm-run-all js-lint-docs js-minify-docs", - "js-compile": "npm-run-all --parallel js-compile-* --sequential js-copy", + "css-prefix-examples": "postcss --config build/postcss.config.js --replace \"site/content/**/*.css\"", + "js": "npm-run-all js-compile js-minify", + "js-compile": "npm-run-all --parallel js-compile-*", "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap", "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap", "js-compile-plugins": "node build/build-plugins.js", "js-compile-plugins-coverage": "cross-env NODE_ENV=test node build/build-plugins.js", - "js-lint": "npm-run-all --continue-on-error --parallel js-lint-*", - "js-lint-main": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache js/src js/tests build/", - "js-lint-docs": "eslint --report-unused-disable-directives --cache --cache-location .cache/.eslintcache site/", - "js-minify": "npm-run-all --parallel js-minify-main js-minify-docs", - "js-minify-main": "npm-run-all js-minify-standalone js-minify-bundle", + "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives .", + "js-minify": "npm-run-all --parallel js-minify-*", "js-minify-standalone": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js", "js-minify-bundle": "terser --compress typeofs=false --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js", - "js-minify-docs": "cross-env-shell terser --mangle --comments \\\"/^!/\\\" --output site/docs/$npm_package_version_short/assets/js/docs.min.js site/docs/$npm_package_version_short/assets/js/vendor/anchor.min.js site/docs/$npm_package_version_short/assets/js/vendor/clipboard.min.js site/docs/$npm_package_version_short/assets/js/vendor/bs-custom-file-input.min.js \"site/docs/$npm_package_version_short/assets/js/src/*.js\"", "js-test": "npm-run-all js-test-karma* js-test-integration", "js-test-karma": "karma start js/tests/karma.conf.js", "js-test-karma-old": "cross-env USE_OLD_JQUERY=true npm run js-test-karma", @@ -62,31 +47,29 @@ "js-test-integration": "rollup --config js/tests/integration/rollup.bundle.js", "js-test-cloud": "cross-env BROWSER=true npm run js-test-karma", "lint": "npm-run-all --parallel js-lint css-lint lockfile-lint", - "docs": "npm-run-all css-docs js-docs docs-build docs-lint", - "docs-build": "bundle exec jekyll build", + "docs": "npm-run-all docs-build docs-lint", + "docs-build": "hugo --cleanDestinationDir", "docs-compile": "npm run docs-build", - "docs-production": "cross-env JEKYLL_ENV=production npm run docs-build", - "docs-netlify": "cross-env JEKYLL_ENV=netlify npm run docs-build", "docs-linkinator": "linkinator _gh_pages --recurse --silent --skip \"^(?!http://localhost)\"", "docs-vnu": "node build/vnu-jar.js", "docs-lint": "npm-run-all --parallel docs-vnu docs-linkinator", - "docs-serve": "bundle exec jekyll serve", - "docs-serve-only": "npm run docs-serve -- --skip-initial-build --no-watch", + "docs-serve": "hugo server --port 9001 --disableFastRender", + "docs-serve-only": "npx sirv-cli _gh_pages --port 9001", "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json", - "update-deps": "ncu -u -x \"jquery,karma-browserstack-launcher,sinon,terser\" && npm update && bundle update && cross-env-shell echo Manually update \\\"site/docs/$npm_package_version_short/assets/js/vendor/\\\"", - "release": "npm-run-all dist release-sri docs-production release-zip*", + "update-deps": "ncu -u -x \"jquery,karma-browserstack-launcher,sinon,terser\" && npm update && echo Manually update site/assets/js/vendor", + "release": "npm-run-all dist release-sri docs-build release-zip*", "release-sri": "node build/generate-sri.js", "release-version": "node build/change-version.js", - "release-zip": "cross-env-shell \"shx rm -rf bootstrap-$npm_package_version-dist && shx cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && shx rm -rf bootstrap-$npm_package_version-dist\"", + "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist && cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"", "release-zip-examples": "node build/zip-examples.js", "dist": "npm-run-all --parallel css js", "test": "npm-run-all lint dist js-test docs-build docs-lint", - "netlify": "npm-run-all dist release-sri docs-netlify", + "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build", "watch": "npm-run-all --parallel watch-*", - "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm run css-main\"", - "watch-css-docs": "nodemon --watch \"site/docs/**/assets/scss/\" --ext scss --exec \"npm run css-docs\"", - "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm run js-compile\"", - "watch-js-docs": "nodemon --watch \"site/docs/**/assets/js/src/\" --ext js --exec \"npm run js-docs\"" + "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"", + "watch-css-docs": "nodemon --watch site/assets/scss/ --ext scss --exec \"npm run css-lint\"", + "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"", + "watch-js-docs": "nodemon --watch site/assets/js/ --ext js --exec \"npm run js-lint\"" }, "style": "dist/css/bootstrap.css", "sass": "scss/bootstrap.scss", @@ -127,6 +110,7 @@ "find-unused-sass-variables": "^3.0.0", "glob": "^7.1.6", "hammer-simulator": "0.0.1", + "hugo-bin": "^0.66.2", "ip": "^1.1.5", "jquery": "^3.5.1", "karma": "^5.2.3", @@ -148,7 +132,6 @@ "qunit": "^2.12.0", "rollup": "^2.33.1", "shelljs": "^0.8.4", - "shx": "^0.3.3", "sinon": "^7.5.0", "stylelint": "^13.7.2", "stylelint-config-twbs-bootstrap": "^2.1.0", @@ -160,6 +143,9 @@ "js/{src,dist}/**/*.{js,map}", "scss/**/*.scss" ], + "hugo-bin": { + "buildTags": "extended" + }, "jspm": { "registry": "npm", "main": "js/bootstrap", diff --git a/scss/_root.scss b/scss/_root.scss index 8110030c64..ad550df3b4 100644 --- a/scss/_root.scss +++ b/scss/_root.scss @@ -1,4 +1,3 @@ -// Do not forget to update getting-started/theming.md! :root { // Custom variable values only support SassScript inside `#{}`. @each $color, $value in $colors { diff --git a/site/_data/breakpoints.yml b/site/_data/breakpoints.yml deleted file mode 100644 index 3c8cfe293c..0000000000 --- a/site/_data/breakpoints.yml +++ /dev/null @@ -1,29 +0,0 @@ -- breakpoint: xs - abbr: "" - name: Extra small - min-width: 0px - container: "" - -- breakpoint: sm - abbr: -sm - name: Small - min-width: 576px - container: 540px - -- breakpoint: md - abbr: -md - name: Medium - min-width: 768px - container: 720px - -- breakpoint: lg - abbr: -lg - name: Large - min-width: 992px - container: 960px - -- breakpoint: xl - abbr: -xl - name: Extra large - min-width: 1200px - container: 1140px diff --git a/site/_data/browser-bugs.yml b/site/_data/browser-bugs.yml deleted file mode 100644 index 7138c75b42..0000000000 --- a/site/_data/browser-bugs.yml +++ /dev/null @@ -1,411 +0,0 @@ -- - browser: > - Edge - summary: > - Visual artifacts in scrollable modal dialogs - upstream_bug: > - Edge#9011176 - origin: > - Bootstrap#20755 - -- - browser: > - Edge - summary: > - Native browser tooltip for `title` shows on first keyboard focus (in addition to custom tooltip component) - upstream_bug: > - Edge#6793560 - origin: > - Bootstrap#18692 - -- - browser: > - Edge - summary: > - Hovered element still remains in `:hover` state after scrolling away. - upstream_bug: > - Edge#5381673 - origin: > - Bootstrap#14211 - -- - browser: > - Edge - summary: > - CSS `border-radius` sometimes causes lines of bleed-through of the `background-color` of the parent element. - upstream_bug: > - Edge#3342037 - origin: > - Bootstrap#16671 - -- - browser: > - Edge - summary: > - `background` of `` is only applied to first child cell instead of all cells in the row - upstream_bug: > - Edge#5865620 - origin: > - Bootstrap#18504 - -- - browser: > - Edge - summary: > - Background color from lower layer bleeds through transparent border in some cases - upstream_bug: > - Edge#6274505 - origin: > - Bootstrap#18228 - -- - browser: > - Edge - summary: > - Hovering over descendant SVG element fires `mouseleave` event at ancestor - upstream_bug: > - Edge#7787318 - origin: > - Bootstrap#19670 - -- - browser: > - Edge - summary: > - Active `position: fixed;` ` - - -
- -
diff --git a/site/_includes/example.html b/site/_includes/example.html deleted file mode 100644 index dcd148b02a..0000000000 --- a/site/_includes/example.html +++ /dev/null @@ -1,51 +0,0 @@ -{%- comment -%} - Usage: include example.html content=markup [args], - where content is a capture with the HTML content - - args can be one of the following: - id - null (default) - class - "bd-example" (default) - optional: hide_preview - disabled (default) - optional: hide_markup - disabled (default) -{%- endcomment -%} - -{%- assign id = include.id -%} -{%- assign class = include.class -%} - -{%- if include.hide_preview == null -%} - - {{- include.content -}} - -{%- endif -%} - -{%- if include.hide_markup == null -%} - {%- highlight html -%} - {%- if include.content contains ' - {%- endcapture -%} - {{- img_placeholder -}} - {%- else -%} - {{- content_chunk -}} - {%- endif -%} - {%- endfor -%} - {%- else -%} - {{- include.content -}} - {%- endif -%} - {%- endhighlight -%} -{%- endif -%} diff --git a/site/_includes/favicons.html b/site/_includes/favicons.html deleted file mode 100644 index 051259d991..0000000000 --- a/site/_includes/favicons.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/site/_includes/footer.html b/site/_includes/footer.html deleted file mode 100644 index cb15d77393..0000000000 --- a/site/_includes/footer.html +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/site/_includes/header.html b/site/_includes/header.html deleted file mode 100644 index 985918bd69..0000000000 --- a/site/_includes/header.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - {%- if page.title -%} - {{ page.title | smartify }} · {{ site.title | smartify }} v{{ site.docs_version }} - {%- else -%} - {{ site.title | smartify }} · {{ site.description | smartify }} - {%- endif -%} - - - - -{% include stylesheet.html %} -{% include favicons.html %} -{% include social.html %} -{% include analytics.html %} diff --git a/site/_includes/icons/bootstrap-stack.svg b/site/_includes/icons/bootstrap-stack.svg deleted file mode 100644 index 2e3abbfc4d..0000000000 --- a/site/_includes/icons/bootstrap-stack.svg +++ /dev/null @@ -1 +0,0 @@ -Bootstrap \ No newline at end of file diff --git a/site/_includes/icons/bootstrap.svg b/site/_includes/icons/bootstrap.svg deleted file mode 100644 index ec6da152f1..0000000000 --- a/site/_includes/icons/bootstrap.svg +++ /dev/null @@ -1 +0,0 @@ -Bootstrap \ No newline at end of file diff --git a/site/_includes/icons/circle-square.svg b/site/_includes/icons/circle-square.svg deleted file mode 100644 index c76b9c3c6b..0000000000 --- a/site/_includes/icons/circle-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/site/_includes/icons/cloud-fill.svg b/site/_includes/icons/cloud-fill.svg deleted file mode 100644 index 10143ccda0..0000000000 --- a/site/_includes/icons/cloud-fill.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/site/_includes/icons/code.svg b/site/_includes/icons/code.svg deleted file mode 100644 index 7bce0a1439..0000000000 --- a/site/_includes/icons/code.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/site/_includes/icons/droplet-fill.svg b/site/_includes/icons/droplet-fill.svg deleted file mode 100644 index c006f12606..0000000000 --- a/site/_includes/icons/droplet-fill.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/site/_includes/icons/github.svg b/site/_includes/icons/github.svg deleted file mode 100644 index 0243df5a24..0000000000 --- a/site/_includes/icons/github.svg +++ /dev/null @@ -1 +0,0 @@ -GitHub \ No newline at end of file diff --git a/site/_includes/icons/menu.svg b/site/_includes/icons/menu.svg deleted file mode 100644 index f6c47035a2..0000000000 --- a/site/_includes/icons/menu.svg +++ /dev/null @@ -1 +0,0 @@ -Menu \ No newline at end of file diff --git a/site/_includes/icons/opencollective.svg b/site/_includes/icons/opencollective.svg deleted file mode 100644 index 090d41dff1..0000000000 --- a/site/_includes/icons/opencollective.svg +++ /dev/null @@ -1 +0,0 @@ -Open Collective \ No newline at end of file diff --git a/site/_includes/icons/placeholder.svg b/site/_includes/icons/placeholder.svg deleted file mode 100644 index 36883e82db..0000000000 --- a/site/_includes/icons/placeholder.svg +++ /dev/null @@ -1,35 +0,0 @@ -{%- comment -%} - Usage: include icons/placeholder.svg args - - args can be one of the following: - title: Used in the SVG `title` tag - text: The text to show in the image - default: 'width x height' - class: default: 'bd-placeholder-img' - color: The text color (foreground) - default: '#dee2e6' - background: The background color - default: '#868e96' - width: default: 100% - height: default: 180px -{%- endcomment -%} - -{%- assign title = include.title | default: 'Placeholder' -%} -{%- assign class = include.class | default: '' -%} -{%- assign color = include.color | default: site.data.grays[2].hex -%} -{%- assign background = include.background | default: site.data.grays[5].hex -%} -{%- assign width = include.width | default: '100%' -%} -{%- assign height = include.height | default: '180' -%} - -{%- if include.text -%} - {%- assign text = include.text -%} -{%- else -%} - {%- assign text = width | append: 'x' | append: height -%} -{%- endif -%} - -{%- capture svg -%} - - {% if title != ' ' %}{{ title }}{% endif %} - - {% if text != ' ' %}{{ text }}{% endif %} - -{%- endcapture -%} - -{{- svg | replace: ' ', '' | strip_newlines -}} diff --git a/site/_includes/icons/slack.svg b/site/_includes/icons/slack.svg deleted file mode 100644 index d6ae455d8e..0000000000 --- a/site/_includes/icons/slack.svg +++ /dev/null @@ -1 +0,0 @@ -Slack \ No newline at end of file diff --git a/site/_includes/icons/twitter.svg b/site/_includes/icons/twitter.svg deleted file mode 100644 index 7b838be581..0000000000 --- a/site/_includes/icons/twitter.svg +++ /dev/null @@ -1 +0,0 @@ -Twitter \ No newline at end of file diff --git a/site/_includes/scripts.html b/site/_includes/scripts.html deleted file mode 100644 index 2f90f1e5dc..0000000000 --- a/site/_includes/scripts.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -{%- if jekyll.environment == "production" or jekyll.environment == "netlify" -%} - -{%- else -%} - -{%- endif -%} - -{%- if page.layout == "docs" -%} - -{%- endif -%} - -{%- if jekyll.environment == "production" or jekyll.environment == "netlify" -%} - -{%- else -%} - - - - - - -{%- endif -%} diff --git a/site/_includes/skippy.html b/site/_includes/skippy.html deleted file mode 100644 index 4fb12b8bd0..0000000000 --- a/site/_includes/skippy.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
- Skip to main content - {%- if page.layout == "docs" -%} - Skip to docs navigation - {%- endif -%} -
-
diff --git a/site/_includes/social.html b/site/_includes/social.html deleted file mode 100644 index cf5be12705..0000000000 --- a/site/_includes/social.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/site/_includes/stylesheet.html b/site/_includes/stylesheet.html deleted file mode 100644 index 2f7599e13c..0000000000 --- a/site/_includes/stylesheet.html +++ /dev/null @@ -1,16 +0,0 @@ - -{%- if jekyll.environment == "production" or jekyll.environment == "netlify" %} - -{% else %} - -{% endif -%} - -{%- if page.layout == "docs" or page.layout != "examples" -%} - -{% if page.layout == "docs" %} - -{% endif %} -{% if page.layout != "examples" %} - -{% endif %} -{%- endif -%} diff --git a/site/_layouts/default.html b/site/_layouts/default.html deleted file mode 100644 index 59f5c122b8..0000000000 --- a/site/_layouts/default.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - {% include header.html %} - - - {% include skippy.html %} - - {% include docs-navbar.html %} - - {% if page.layout == "simple" %} - {{ content }} - {% else %} -
- {{ content }} -
- {% endif %} - - {% include footer.html %} - {% include scripts.html %} - - diff --git a/site/_layouts/docs.html b/site/_layouts/docs.html deleted file mode 100644 index 10c9fcb0c5..0000000000 --- a/site/_layouts/docs.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - {% include header.html %} - - - {% include skippy.html %} - - {% include docs-navbar.html %} - -
-
-
- {% include docs-sidebar.html %} -
- - {% if page.toc %} - - {% endif %} - -
-
- View on GitHub -

{{ page.title | smartify }}

-
-

{{ page.description | smartify }}

- {% include ads.html %} - {{ content }} -
-
-
- - {% include scripts.html %} - - diff --git a/site/_layouts/examples.html b/site/_layouts/examples.html deleted file mode 100644 index 4ca4c56810..0000000000 --- a/site/_layouts/examples.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - {{ page.title | smartify }} · {{ site.title | smartify }} - - - - {% include stylesheet.html %} - {% include favicons.html %} - - - - {%- for css in page.extra_css %} - - - {%- endfor %} - - - {{ content }} - - {%- if page.include_js != false -%} - - - - {%- if jekyll.environment == "production" or jekyll.environment == "netlify" -%} - - {%- else -%} - - {%- endif -%} - - {%- for js in page.extra_js %} - - {%- endfor %} - {%- endif -%} - - diff --git a/site/_layouts/home.html b/site/_layouts/home.html deleted file mode 100644 index 88a23d49ce..0000000000 --- a/site/_layouts/home.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - {% include header.html %} - - - {% include skippy.html %} - - {% include docs-navbar.html %} - - {{ content }} - - {% include footer.html %} - {% include scripts.html %} - - diff --git a/site/_layouts/simple.html b/site/_layouts/simple.html deleted file mode 100644 index 833061b700..0000000000 --- a/site/_layouts/simple.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: default ---- - -
-
-

{{ page.title | smartify }}

-

{{ page.description | smartify }}

- {%- if page.title == "Examples" -%} - - {%- endif -%} -
- {% include ads.html %} -
- -
- {{ content }} -
diff --git a/site/assets/js/application.js b/site/assets/js/application.js new file mode 100644 index 0000000000..ca1ddcca00 --- /dev/null +++ b/site/assets/js/application.js @@ -0,0 +1,112 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +/*! + * JavaScript for Bootstrap's docs (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * For details, see https://creativecommons.org/licenses/by/3.0/. + */ + +/* global ClipboardJS: false, anchors: false, bsCustomFileInput: false */ + +(function ($) { + 'use strict' + + $(function () { + // Tooltip and popover demos + $('.tooltip-demo').tooltip({ + selector: '[data-toggle="tooltip"]', + container: 'body' + }) + + $('[data-toggle="popover"]').popover() + + $('.toast') + .toast({ + autohide: false + }) + .toast('show') + + // Demos within modals + $('.tooltip-test').tooltip() + $('.popover-test').popover() + + // Indeterminate checkbox example + $('.bd-example-indeterminate [type="checkbox"]').prop('indeterminate', true) + + // Disable empty links in docs examples + $('.bd-content [href="#"]').click(function (e) { + e.preventDefault() + }) + + // Modal relatedTarget demo + $('#exampleModal').on('show.bs.modal', function (event) { + var $button = $(event.relatedTarget) // Button that triggered the modal + var recipient = $button.data('whatever') // Extract info from data-* attributes + // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). + // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. + var $modal = $(this) + $modal.find('.modal-title').text('New message to ' + recipient) + $modal.find('.modal-body input').val(recipient) + }) + + // Activate animated progress bar + $('.bd-toggle-animated-progress').on('click', function () { + $(this).siblings('.progress').find('.progress-bar-striped').toggleClass('progress-bar-animated') + }) + + // Insert copy to clipboard button before .highlight + $('div.highlight').each(function () { + var btnHtml = '
' + $(this).before(btnHtml) + $('.btn-clipboard') + .tooltip() + .on('mouseleave', function () { + // Explicitly hide tooltip, since after clicking it remains + // focused (as it's a button), so tooltip would otherwise + // remain visible until focus is moved away + $(this).tooltip('hide') + }) + }) + + var clipboard = new ClipboardJS('.btn-clipboard', { + target: function (trigger) { + return trigger.parentNode.nextElementSibling + } + }) + + clipboard.on('success', function (e) { + $(e.trigger) + .attr('title', 'Copied!') + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + + e.clearSelection() + }) + + clipboard.on('error', function (e) { + var modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-' + var fallbackMsg = 'Press ' + modifierKey + 'C to copy' + + $(e.trigger) + .attr('title', fallbackMsg) + .tooltip('_fixTitle') + .tooltip('show') + .attr('title', 'Copy to clipboard') + .tooltip('_fixTitle') + }) + + anchors.options = { + icon: '#' + } + anchors.add('.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5') + $('.bd-content').children('h2, h3, h4, h5').wrapInner('') + + bsCustomFileInput.init() + }) +})(jQuery) diff --git a/site/assets/js/ie-emulation-modes-warning.js b/site/assets/js/ie-emulation-modes-warning.js new file mode 100644 index 0000000000..d11ec1c5a8 --- /dev/null +++ b/site/assets/js/ie-emulation-modes-warning.js @@ -0,0 +1,52 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict' + + function emulatedIEMajorVersion() { + var groups = /MSIE ([\d.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx + // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // eslint-disable-line no-new-func + if (typeof jscriptVersion === 'undefined') { + return 11 // IE11+ not in emulation mode + } + + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + // eslint-disable-next-line no-alert + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +})() diff --git a/site/assets/js/search.js b/site/assets/js/search.js new file mode 100644 index 0000000000..724c6aa334 --- /dev/null +++ b/site/assets/js/search.js @@ -0,0 +1,60 @@ +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S ALL JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ + +(function () { + 'use strict' + + var inputElement = document.getElementById('search-input') + + if (!window.docsearch || !inputElement) { + return + } + + var siteDocsVersion = inputElement.getAttribute('data-docs-version') + + function getOrigin() { + var location = window.location + var origin = location.origin + + if (!origin) { + var port = location.port ? ':' + location.port : '' + + origin = location.protocol + '//' + location.hostname + port + } + + return origin + } + + window.docsearch({ + apiKey: '5990ad008512000bba2cf951ccf0332f', + indexName: 'bootstrap', + inputSelector: '#search-input', + algoliaOptions: { + facetFilters: ['version:' + siteDocsVersion] + }, + transformData: function (hits) { + return hits.map(function (hit) { + var currentUrl = getOrigin() + var liveUrl = 'https://getbootstrap.com/' + + hit.url = currentUrl.lastIndexOf(liveUrl, 0) === 0 ? + // On production, return the result as is + hit.url : + // On development or Netlify, replace `hit.url` with a trailing slash, + // so that the result link is relative to the server root + hit.url.replace(liveUrl, '/') + + // Prevent jumping to first header + if (hit.anchor === 'content') { + hit.url = hit.url.replace(/#content$/, '') + hit.anchor = null + } + + return hit + }) + }, + // Set debug to `true` if you want to inspect the dropdown + debug: false + }) +})() diff --git a/site/assets/js/vendor/anchor.min.js b/site/assets/js/vendor/anchor.min.js new file mode 100644 index 0000000000..1216eeac26 --- /dev/null +++ b/site/assets/js/vendor/anchor.min.js @@ -0,0 +1,9 @@ +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +// +// AnchorJS - v4.3.0 - 2020-10-21 +// https://www.bryanbraun.com/anchorjs/ +// Copyright (c) 2020 Bryan Braun; Licensed MIT +// +// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat +!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function d(A){A.icon=Object.prototype.hasOwnProperty.call(A,"icon")?A.icon:"",A.visible=Object.prototype.hasOwnProperty.call(A,"visible")?A.visible:"hover",A.placement=Object.prototype.hasOwnProperty.call(A,"placement")?A.placement:"right",A.ariaLabel=Object.prototype.hasOwnProperty.call(A,"ariaLabel")?A.ariaLabel:"Anchor",A.class=Object.prototype.hasOwnProperty.call(A,"class")?A.class:"",A.base=Object.prototype.hasOwnProperty.call(A,"base")?A.base:"",A.truncate=Object.prototype.hasOwnProperty.call(A,"truncate")?Math.floor(A.truncate):64,A.titleText=Object.prototype.hasOwnProperty.call(A,"titleText")?A.titleText:""}function f(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new TypeError("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],d(this.options),this.isTouchDevice=function(){return Boolean("ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,o,n,i,s,a,r,c,l,h,u,p=[];if(d(this.options),"touch"===(h=this.options.visible)&&(h=this.isTouchDevice()?"always":"hover"),0===(e=f(A=A||"h2, h3, h4, h5, h6")).length)return this;for(!function(){if(null!==document.head.querySelector("style.anchorjs"))return;var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(e):document.head.insertBefore(e,A);e.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",e.sheet.cssRules.length),e.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",e.sheet.cssRules.length),e.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",e.sheet.cssRules.length),e.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',e.sheet.cssRules.length)}(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}}); +// @license-end \ No newline at end of file diff --git a/site/assets/js/vendor/bs-custom-file-input.min.js b/site/assets/js/vendor/bs-custom-file-input.min.js new file mode 100644 index 0000000000..0815f3768d --- /dev/null +++ b/site/assets/js/vendor/bs-custom-file-input.min.js @@ -0,0 +1,7 @@ +/*! + * bsCustomFileInput v1.3.4 (https://github.com/Johann-S/bs-custom-file-input) + * Copyright 2018 - 2020 Johann-S + * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE) + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).bsCustomFileInput=t()}(this,function(){"use strict";var s={CUSTOMFILE:'.custom-file input[type="file"]',CUSTOMFILELABEL:".custom-file-label",FORM:"form",INPUT:"input"},l=function(e){if(0 &, + &:hover, + &:active { + color: $bd-purple-bright; + background-color: $white; + border-color: $bd-purple-bright; + } + + &:focus { + box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); + } +} diff --git a/site/assets/scss/_callouts.scss b/site/assets/scss/_callouts.scss new file mode 100644 index 0000000000..6b97359497 --- /dev/null +++ b/site/assets/scss/_callouts.scss @@ -0,0 +1,40 @@ +// +// Callouts +// + +.bd-callout { + padding: 1.25rem; + margin-top: 1.25rem; + margin-bottom: 1.25rem; + border: 1px solid #eee; + border-left-width: .25rem; + @include border-radius(); + + h4 { + margin-top: 0; + margin-bottom: .25rem; + } + + p:last-child { + margin-bottom: 0; + } + + code { + @include border-radius(); + } + + + .bd-callout { + margin-top: -.25rem; + } +} + +// Variations +@mixin bs-callout-variant($color) { + border-left-color: $color; + + h4 { color: $color; } +} + +.bd-callout-info { @include bs-callout-variant($bd-info); } +.bd-callout-warning { @include bs-callout-variant($bd-warning); } +.bd-callout-danger { @include bs-callout-variant($bd-danger); } diff --git a/site/assets/scss/_clipboard-js.scss b/site/assets/scss/_clipboard-js.scss new file mode 100644 index 0000000000..b8c6a9e8f5 --- /dev/null +++ b/site/assets/scss/_clipboard-js.scss @@ -0,0 +1,36 @@ +// clipboard.js +// +// JS-based `Copy` buttons for code snippets. + +.bd-clipboard { + position: relative; + display: none; + float: right; + + + .highlight { + margin-top: 0; + } + + @include media-breakpoint-up(md) { + display: block; + } +} + +.btn-clipboard { + position: absolute; + top: .65rem; + right: .65rem; + z-index: 10; + display: block; + padding: .25rem .5rem; + @include font-size(65%); + color: $primary; + background-color: $white; + border: 1px solid; + @include border-radius(); + + &:hover { + color: $white; + background-color: $primary; + } +} diff --git a/site/assets/scss/_colors.scss b/site/assets/scss/_colors.scss new file mode 100644 index 0000000000..10ad8efdb7 --- /dev/null +++ b/site/assets/scss/_colors.scss @@ -0,0 +1,17 @@ +// +// Docs color palette classes +// + +@each $color, $value in $colors { + .swatch-#{$color} { + color: color-yiq($value); + background-color: #{$value}; + } +} + +@each $color, $value in $grays { + .swatch-#{$color} { + color: color-yiq($value); + background-color: #{$value}; + } +} diff --git a/site/assets/scss/_component-examples.scss b/site/assets/scss/_component-examples.scss new file mode 100644 index 0000000000..89c52208f4 --- /dev/null +++ b/site/assets/scss/_component-examples.scss @@ -0,0 +1,374 @@ +// stylelint-disable no-duplicate-selectors, selector-no-qualifying-type + +// +// Grid examples +// + +.bd-example-row { + .row { + > .col, + > [class^="col-"] { + padding-top: .75rem; + padding-bottom: .75rem; + background-color: rgba(86, 61, 124, .15); + border: 1px solid rgba(86, 61, 124, .2); + } + } + + .row + .row { + margin-top: 1rem; + } + + .flex-items-top, + .flex-items-middle, + .flex-items-bottom { + min-height: 6rem; + background-color: rgba(255, 0, 0, .1); + } +} + +.bd-example-row-flex-cols .row { + min-height: 10rem; + background-color: rgba(255, 0, 0, .1); +} + +.bd-highlight { + background-color: rgba($bd-purple, .15); + border: 1px solid rgba($bd-purple, .15); +} + +.bd-example-responsive-containers { + [class^="container"] { + padding-top: .75rem; + padding-bottom: .75rem; + background-color: rgba(86, 61, 124, .15); + border: 1px solid rgba(86, 61, 124, .2); + } +} + +// Grid mixins +.example-container { + width: 800px; + @include make-container(); +} + +.example-row { + @include make-row(); +} + +.example-content-main { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(8); + } +} + +.example-content-secondary { + @include make-col-ready(); + + @include media-breakpoint-up(sm) { + @include make-col(6); + } + + @include media-breakpoint-up(lg) { + @include make-col(4); + } +} + + +// +// Docs examples +// + +.bd-example { + position: relative; + padding: 1rem; + margin: 1rem (-$grid-gutter-width / 2) 0; + border: solid $gray-100; + border-width: .2rem 0 0; + @include clearfix(); + + @include media-breakpoint-up(sm) { + padding: 1.5rem; + margin-right: 0; + margin-left: 0; + border-width: .2rem; + } + + + .highlight, + + .clipboard + .highlight { + margin-top: 0; + } + + + p { + margin-top: 2rem; + } + + .custom-file-input:lang(es) ~ .custom-file-label::after { + content: "Elegir"; + } + + > .form-control { + + .form-control { + margin-top: .5rem; + } + } + + > .nav + .nav, + > .alert + .alert, + > .navbar + .navbar, + > .progress + .progress, + > .progress + .btn { + margin-top: 1rem; + } + + > .dropdown-menu:first-child { + position: static; + display: block; + } + + > .form-group:last-child { + margin-bottom: 0; + } + + > .close { + float: none; + } +} + +// Typography +.bd-example-type { + .table { + td { + padding: 1rem 0; + border-color: #eee; + } + tr:first-child td { + border-top: 0; + } + } + + h1, + h2, + h3, + h4, + h5, + h6 { + margin-top: 0; + margin-bottom: 0; + } +} + +// Contextual background colors +.bd-example-bg-classes p { + padding: 1rem; +} + +// Images +.bd-example { + > svg + svg, + > img + img { + margin-left: .5rem; + } +} + +// Buttons +.bd-example { + > .btn, + > .btn-group { + margin-top: .25rem; + margin-bottom: .25rem; + } + > .btn-toolbar + .btn-toolbar { + margin-top: .5rem; + } +} + +// Forms +.bd-example-control-sizing select, +.bd-example-control-sizing input[type="text"] + input[type="text"] { + margin-top: .5rem; +} +.bd-example-form .input-group { + margin-bottom: .5rem; +} +.bd-example > textarea.form-control { + resize: vertical; +} + +// List groups +.bd-example > .list-group { + max-width: 400px; +} +.bd-example > [class*="list-group-horizontal"] { + max-width: 100%; +} + +// Navbars +.bd-example { + .fixed-top, + .sticky-top { + position: static; + margin: -1rem -1rem 1rem; + } + .fixed-bottom { + position: static; + margin: 1rem -1rem -1rem; + } + + @include media-breakpoint-up(sm) { + .fixed-top, + .sticky-top { + margin: -1.5rem -1.5rem 1rem; + } + .fixed-bottom { + margin: 1rem -1.5rem -1.5rem; + } + } +} + +// Pagination +.bd-example .pagination { + margin-top: .5rem; + margin-bottom: .5rem; +} + +// Example modals +.modal { + z-index: 1072; + + .tooltip, + .popover { + z-index: 1073; + } +} + +.modal-backdrop { + z-index: 1071; +} + +.bd-example-modal { + background-color: #fafafa; + + .modal { + position: relative; + top: auto; + right: auto; + bottom: auto; + left: auto; + z-index: 1; + display: block; + } + + .modal-dialog { + left: auto; + margin-right: auto; + margin-left: auto; + } +} + +// Example tabbable tabs +.bd-example-tabs .nav-tabs { + margin-bottom: 1rem; +} + +// Popovers +.bd-example-popover-static { + padding-bottom: 1.5rem; + background-color: #f9f9f9; + + .popover { + position: relative; + display: block; + float: left; + width: 260px; + margin: 1.25rem; + } +} + +// Tooltips +.tooltip-demo a { + white-space: nowrap; +} + +.bd-example-tooltip-static .tooltip { + position: relative; + display: inline-block; + margin: 10px 20px; + opacity: 1; +} + +// Scrollspy demo on fixed height div +.scrollspy-example { + position: relative; + height: 200px; + margin-top: .5rem; + overflow: auto; +} + +.scrollspy-example-2 { + position: relative; + height: 350px; + overflow: auto; +} + +.bd-example-border-utils { + [class^="border"] { + display: inline-block; + width: 5rem; + height: 5rem; + margin: .25rem; + background-color: #f5f5f5; + } +} + +.bd-example-border-utils-0 { + [class^="border"] { + border: 1px solid $border-color; + } +} + +// +// Code snippets +// + +.highlight { + padding: 1rem; + margin-top: 1rem; + margin-bottom: 1rem; + background-color: $gray-100; + -ms-overflow-style: -ms-autohiding-scrollbar; + + @include media-breakpoint-up(sm) { + padding: 1.5rem; + } +} + +.bd-content .highlight { + margin-right: (-$grid-gutter-width / 2); + margin-left: (-$grid-gutter-width / 2); + + @include media-breakpoint-up(sm) { + margin-right: 0; + margin-left: 0; + } +} + +.highlight { + pre { + padding: 0; + margin-top: .65rem; + margin-bottom: .65rem; + background-color: transparent; + border: 0; + } + pre code { + @include font-size(inherit); + color: $gray-900; // Effectively the base text color + } +} diff --git a/site/assets/scss/_content.scss b/site/assets/scss/_content.scss new file mode 100644 index 0000000000..030a1a2564 --- /dev/null +++ b/site/assets/scss/_content.scss @@ -0,0 +1,127 @@ +// stylelint-disable no-duplicate-selectors, selector-max-combinators, selector-max-compound-selectors, selector-max-type, selector-no-qualifying-type + +// +// Automatically style Markdown-based tables like a Bootstrap `.table`. +// + +.bd-content { + order: 1; + + // Hack the sticky header + > h2[id], + > h3[id], + > h4[id] { + pointer-events: none; + + &::before { + display: block; + height: 6rem; + margin-top: -6rem; + content: ""; + } + } + + > table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + + @include media-breakpoint-down(md) { + display: block; + overflow-x: auto; + + &.table-bordered { + border: 0; + } + } + + // Cells + > thead, + > tbody, + > tfoot { + > tr { + > th, + > td { + padding: $table-cell-padding; + vertical-align: top; + border: 1px solid $table-border-color; + + > p:last-child { + margin-bottom: 0; + } + } + } + } + + // Prevent breaking of code (e.g., Grunt tasks list) + td:first-child > code { + white-space: nowrap; + } + } +} + +.bd-content-title { + display: block; + pointer-events: auto; +} + +// +// Docs sections +// + +.bd-content { + > h2 { + @include font-size($h2-font-size); + } + + > h3 { + @include font-size($h3-font-size); + } + + > h4 { + @include font-size($h4-font-size); + } + + > h2:not(:first-child) { + margin-top: 3rem; + } + + > h3 { + margin-top: 1.5rem; + } + + > ul li, + > ol li { + margin-bottom: .25rem; + } + + @include media-breakpoint-up(lg) { + > ul, + > ol, + > p { + max-width: 80%; + } + } +} + +.bd-title { + margin-top: 1rem; + margin-bottom: .5rem; + @include font-size(3rem); +} + +.bd-lead { + @include font-size(1.5rem); + font-weight: 300; + + @include media-breakpoint-up(lg) { + max-width: 80%; + } +} + +.bd-text-purple { color: $bd-purple; } +.bd-text-purple-bright { color: $bd-purple-bright; } + +.bd-bg-purple-bright { + background-color: $bd-purple-bright; +} diff --git a/site/assets/scss/_footer.scss b/site/assets/scss/_footer.scss new file mode 100644 index 0000000000..29d31df3a2 --- /dev/null +++ b/site/assets/scss/_footer.scss @@ -0,0 +1,40 @@ +// +// Footer +// + +.bd-footer { + @include font-size(.875rem); + text-align: center; + background-color: #f7f7f7; + + a { + font-weight: 600; + color: $gray-700; + + &:hover, + &:focus { + color: $link-color; + } + } + + p { + margin-bottom: 0; + } + + @include media-breakpoint-up(sm) { + text-align: left; + } +} + +.bd-footer-links { + padding-left: 0; + margin-bottom: 1rem; + + li { + display: inline-block; + + + li { + margin-left: 1rem; + } + } +} diff --git a/site/assets/scss/_masthead.scss b/site/assets/scss/_masthead.scss new file mode 100644 index 0000000000..6a13562e33 --- /dev/null +++ b/site/assets/scss/_masthead.scss @@ -0,0 +1,74 @@ +// stylelint-disable declaration-no-important + +.bd-masthead { + position: relative; + padding: 3rem ($grid-gutter-width / 2); + background: linear-gradient(to right bottom, lighten($bd-purple-light, 16%) 50%, #fff 50%); + + h1 { + @include font-size(4rem); + line-height: 1; + } + + .lead { + @include font-size(1.5rem); + font-weight: 400; + color: $gray-700; + } + + .btn { + padding: .8rem 2rem; + font-weight: 600; + @include font-size(1.25rem); + } + + .carbonad { + margin-top: 0 !important; + margin-bottom: -3rem !important; + } + + @include media-breakpoint-up(sm) { + padding-top: 5rem; + padding-bottom: 5rem; + + .carbonad { + margin-bottom: 0 !important; + } + } + + @include media-breakpoint-up(md) { + .carbonad { + margin-top: 3rem !important; + } + } +} + +.masthead-followup { + h2 { + @include font-size(2.5rem); + } + + .highlight { + @include border-radius(.5rem); + + pre::-webkit-scrollbar { + display: none; + } + + pre code { + display: inline-block; + white-space: pre; + } + } +} + +.masthead-followup-icon { + padding: .75rem; + background-image: linear-gradient(to bottom right, rgba(255, 255, 255, .2), rgba(255, 255, 255, .01)); + @include border-radius(.75rem); + box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .1); +} + +.masthead-followup-svg { + filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .125)); +} diff --git a/site/assets/scss/_nav.scss b/site/assets/scss/_nav.scss new file mode 100644 index 0000000000..d8d24b7230 --- /dev/null +++ b/site/assets/scss/_nav.scss @@ -0,0 +1,71 @@ +// +// Main navbar +// + +.bd-navbar { + min-height: 4rem; + background-color: $bd-purple-bright; + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .05), inset 0 -1px 0 rgba(0, 0, 0, .1); + + @include media-breakpoint-down(md) { + padding-right: .5rem; + padding-left: .5rem; + + .navbar-nav-scroll { + max-width: 100%; + height: 2.5rem; + margin-top: .25rem; + overflow: hidden; + + .navbar-nav { + padding-bottom: 2rem; + overflow-x: auto; + white-space: nowrap; + -webkit-overflow-scrolling: touch; + } + } + } + + @include media-breakpoint-up(md) { + @supports (position: sticky) { + position: sticky; + top: 0; + z-index: 1071; // over everything in bootstrap + } + } + + .navbar-nav { + .nav-link { + padding-right: .5rem; + padding-left: .5rem; + color: rgba($white, .85); + + &.active, + &:hover { + color: $white; + background-color: transparent; + } + + &.active { + font-weight: 600; + } + } + } + + .navbar-nav-svg { + display: inline-block; + width: 1rem; + height: 1rem; + vertical-align: text-top; + } + + .dropdown-menu { + @include font-size(.875rem); + } + + .dropdown-item.active { + font-weight: 600; + color: $gray-900; + background: escape-svg($dropdown-active-icon) no-repeat .4rem .6rem/.75rem .75rem; + } +} diff --git a/site/assets/scss/_placeholder-img.scss b/site/assets/scss/_placeholder-img.scss new file mode 100644 index 0000000000..90a29544e7 --- /dev/null +++ b/site/assets/scss/_placeholder-img.scss @@ -0,0 +1,15 @@ +// +// Placeholder svg used in the docs. +// + +// Remember to update `site/_layouts/examples.html` too if this changes! + +.bd-placeholder-img { + @include font-size(1.125rem); + text-anchor: middle; + user-select: none; +} + +.bd-placeholder-img-lg { + @include font-size(3.5rem); +} diff --git a/site/assets/scss/_sidebar.scss b/site/assets/scss/_sidebar.scss new file mode 100644 index 0000000000..7c350f8e3a --- /dev/null +++ b/site/assets/scss/_sidebar.scss @@ -0,0 +1,112 @@ +// +// Left side navigation +// + +.bd-sidebar { + order: 0; + // background-color: #f5f2f9; + border-bottom: 1px solid rgba(0, 0, 0, .1); + + @include media-breakpoint-up(md) { + @supports (position: sticky) { + position: sticky; + top: 4rem; + z-index: 1000; + height: subtract(100vh, 4rem); + } + border-right: 1px solid rgba(0, 0, 0, .1); + } + + @include media-breakpoint-up(xl) { + flex: 0 1 320px; + } +} + +.bd-links { + width: 100%; + padding-top: 1rem; + padding-bottom: 1rem; + border-top: 1px solid rgba(0, 0, 0, .05); + + @include media-breakpoint-up(md) { + @supports (position: sticky) { + max-height: subtract(100vh, 9rem); + overflow-y: auto; + } + } +} + +.bd-search { + position: relative; // To contain the Algolia search + padding: 1rem 15px; + margin-right: -15px; + margin-left: -15px; + + .form-control:focus { + border-color: $bd-purple-bright; + box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25); + } +} + +.bd-search-docs-toggle { + color: $gray-900; +} + +.bd-sidenav { + display: none; +} + +.bd-toc-link { + display: block; + padding: .25rem 1.5rem; + font-weight: 600; + color: rgba(0, 0, 0, .65); + + &:hover { + color: rgba(0, 0, 0, .85); + text-decoration: none; + } +} + +.bd-toc-item { + &.active { + margin-bottom: 1rem; + + &:not(:first-child) { + margin-top: 1rem; + } + + > .bd-toc-link { + color: rgba(0, 0, 0, .85); + + &:hover { + background-color: transparent; + } + } + + > .bd-sidenav { + display: block; + } + } +} + +// All levels of nav +.bd-sidebar .nav > li > a { + display: block; + padding: .25rem 1.5rem; + @include font-size(90%); + color: rgba(0, 0, 0, .65); +} + +.bd-sidebar .nav > li > a:hover { + color: rgba(0, 0, 0, .85); + text-decoration: none; + background-color: transparent; +} + +.bd-sidebar .nav > .active > a, +.bd-sidebar .nav > .active:hover > a { + font-weight: 600; + color: rgba(0, 0, 0, .85); + background-color: transparent; +} diff --git a/site/assets/scss/_skippy.scss b/site/assets/scss/_skippy.scss new file mode 100644 index 0000000000..894db70db4 --- /dev/null +++ b/site/assets/scss/_skippy.scss @@ -0,0 +1,20 @@ +// stylelint-disable declaration-no-important + +.skippy { + background-color: $bd-purple; + + a { + color: $white; + } + + &:focus-within a { + position: static !important; + width: auto !important; + height: auto !important; + padding: $spacer / 2 !important; + margin: $spacer / 4 !important; + overflow: visible !important; + clip: auto !important; + white-space: normal !important; + } +} diff --git a/site/assets/scss/_syntax.scss b/site/assets/scss/_syntax.scss new file mode 100644 index 0000000000..bca6aad83b --- /dev/null +++ b/site/assets/scss/_syntax.scss @@ -0,0 +1,94 @@ +// stylelint-disable comment-empty-line-before, declaration-block-single-line-max-declarations, selector-class-pattern + +/* NEW Background .chroma { background-color: #f0f0f0; } */ +/* NEW Error .chroma .err { } */ +/* NEW LineTableTD .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } */ +/* NEW LineTable .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } */ +/* NEW LineHighlight .chroma .hl { display: block; width: 100%; background-color: #ffffcc; } */ +/* NEW LineNumbersTable .chroma .lnt { margin-right: .4em; padding: 0 .4em; } */ +/* NEW LineNumbers .chroma .ln { margin-right: .4em; padding: 0 .4em; } */ + +/* LiteralStringDelimiter */ .chroma .dl { color: #4070a0; } /* NEW */ +/* Comment */ .chroma .c { color: #727272; } +/* CommentMultiline */ .chroma .c1 { color: #727272; } +/* CommentHashbang */ .chroma .ch { font-style: italic; color: #60a0b0; } /* NEW */ +/* CommentMultiline */ .chroma .cm { color: #727272; } +/* CommentPreproc */ .chroma .cp { color: #008085; } +/* CommentPreprocFile */ .chroma .cpf { color: #007020; } /* NEW */ +/* CommentSpecial */ .chroma .cs { color: #727272; } +/* GenericDeleted */ .chroma .gd { background-color: #fcc; border: 1px solid #c00; } +/* GenericEmph */ .chroma .ge { font-style: italic; } +/* GenericHeading */ .chroma .gh { color: #030; } +/* GenericInserted */ .chroma .gi { background-color: #cfc; border: 1px solid #0c0; } +/* GenericUnderline */ .chroma .gl { text-decoration: underline; } /* NEW */ +/* GenericOutput */ .chroma .go { color: #aaa; } +/* GenericPrompt */ .chroma .gp { color: #009; } +/* GenericError */ .chroma .gr { color: #f00; } +/* GenericStrong */ .chroma .gs { font-weight: 700; } /* NEW */ +/* GenericTraceback */ .chroma .gt { color: #9c6; } +/* GenericSubheading */ .chroma .gu { color: #030; } +/* LiteralNumberIntegerLong */ .chroma .il { color: #c24f19; } +/* Keyword */ .chroma .k { color: #069; } +/* KeywordConstant */ .chroma .kc { color: #069; } +/* KeywordDeclaration */ .chroma .kd { color: #069; } +/* KeywordNamespace */ .chroma .kn { color: #069; } +/* KeywordPseudo */ .chroma .kp { color: #069; } +/* KeywordReserved */ .chroma .kr { color: #069; } +/* KeywordType */ .chroma .kt { color: #078; } +/* LiteralNumber */ .chroma .m { color: #c24f19; } +/* LiteralNumberFloat */ .chroma .mf { color: #c24f19; } +/* LiteralNumberBin */ .chroma .mb { color: #40a070; } /* NEW */ +/* LiteralNumberHex */ .chroma .mh { color: #c24f19; } +/* LiteralNumberInteger */ .chroma .mi { color: #c24f19; } +/* LiteralNumberOct */ .chroma .mo { color: #c24f19; } +/* NameAttribute */ .chroma .na { color: #006ee0; } +/* NameBuiltin */ .chroma .nb { color: #366; } +/* NameClass */ .chroma .nc { color: #168174; } +/* NameDecorator */ .chroma .nd { color: #6b62de; } +/* NameException */ .chroma .ne { color: #c00; } +/* NameFunction */ .chroma .nf { color: #b715f4; } +/* NameEntity */ .chroma .ni { color: #727272; } +/* NameLabel */ .chroma .nl { color: #6b62de; } +/* NameNamespace */ .chroma .nn { color: #007ca5; } +/* NameConstant */ .chroma .no { color: #360; } +/* NameTag */ .chroma .nt { color: #2f6f9f; } +/* NameVariable */ .chroma .nv { color: #033; } +/* Operator */ .chroma .o { color: #555; } +/* OperatorWord */ .chroma .ow { color: #000; } +/* LiteralString */ .chroma .s { color: #d73038; } +/* LiteralStringSingle */ .chroma .s1 { color: #c30; } +/* LiteralStringDouble */ .chroma .s2 { color: #c30; } +/* LiteralStringAffix */ .chroma .sa { color: #4070a0; } /* NEW */ +/* LiteralStringBacktick */ .chroma .sb { color: #c30; } +/* LiteralStringChar */ .chroma .sc { color: #c30; } +/* LiteralStringDoc */ .chroma .sd { font-style: italic; color: #c30; } +/* LiteralStringEscape */ .chroma .se { color: #c30; } +/* LiteralStringHeredoc */ .chroma .sh { color: #c30; } +/* LiteralStringInterpol */ .chroma .si { color: #a00; } +/* LiteralStringRegex */ .chroma .sr { color: #337e7e; } +/* LiteralStringSymbol */ .chroma .ss { color: #fc3; } +/* LiteralStringOther */ .chroma .sx { color: #c30; } +/* TextWhitespace */ .chroma .w { color: #bbb; } + +.chroma { + .language-bash, + .language-sh { + &::before { + color: #009; + content: "$ "; + user-select: none; + } + + // This is just to work around a Chroma bug; + // should be removed when fixed upstream + .m { + color: inherit; + } + } + + .language-powershell::before { + color: #009; + content: "PM> "; + user-select: none; + } +} diff --git a/site/assets/scss/_toc.scss b/site/assets/scss/_toc.scss new file mode 100644 index 0000000000..23d843a9b2 --- /dev/null +++ b/site/assets/scss/_toc.scss @@ -0,0 +1,54 @@ +// stylelint-disable selector-max-combinators, selector-max-type, selector-max-compound-selectors + +// +// Right side table of contents +// + +.bd-toc { + @supports (position: sticky) { + position: sticky; + top: 4rem; + height: subtract(100vh, 4rem); + overflow-y: auto; + } + order: 2; + padding-top: 1.5rem; + padding-bottom: 1.5rem; + @include font-size(.875rem); + + nav { + padding-left: 0; + border-left: 1px solid #eee; + + ul { + padding-left: 0; + + ul { + padding-left: 1rem; + } + } + + a code { + font: inherit; + } + + li { + display: block; + + ul li ul { + padding-left: 1rem; + } + + a { + display: block; + padding: .125rem 1.5rem; + color: #77757a; + + &:hover { + color: $blue; + text-decoration: none; + } + } + } + } +} diff --git a/site/assets/scss/_variables.scss b/site/assets/scss/_variables.scss new file mode 100644 index 0000000000..b5a5381af6 --- /dev/null +++ b/site/assets/scss/_variables.scss @@ -0,0 +1,15 @@ +// Local docs variables +$bd-purple: #563d7c; +$bd-purple-bright: lighten(saturate($bd-purple, 5%), 15%); +$bd-purple-light: lighten(saturate($bd-purple, 5%), 45%); +$bd-dark: #2a2730; +$bd-download: #ffe484; +$bd-info: #5bc0de; +$bd-warning: #f0ad4e; +$bd-danger: #d9534f; +$dropdown-active-icon: url("data:image/svg+xml,"); + +// Enable responsive font sizes for font sizes defined in the docs +// The weird if test is made as a workaround to prevent a false fusv error. +// +$enable-responsive-font-sizes: if($enable-responsive-font-sizes, true, true); diff --git a/site/assets/scss/docs.scss b/site/assets/scss/docs.scss new file mode 100644 index 0000000000..0f1d68cdb4 --- /dev/null +++ b/site/assets/scss/docs.scss @@ -0,0 +1,53 @@ +/*! + * Bootstrap Docs (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under the Creative Commons Attribution 3.0 Unported License. + * For details, see https://creativecommons.org/licenses/by/3.0/. + */ + +// Dev notes +// +// Background information on nomenclature and architecture decisions here. +// +// - Bootstrap functions, variables, and mixins are included for easy reuse. +// Doing so gives us access to the same core utilities provided by Bootstrap. +// For example, consistent media queries through those mixins. +// +// - Bootstrap's **docs variables** are prefixed with `$bd-`. +// These custom colors avoid collision with the components Bootstrap provides. +// +// - Classes are prefixed with `.bd-`. +// These classes indicate custom-built or modified components for the design +// and layout of the Bootstrap docs. They are not included in our builds. +// +// Happy Bootstrapping! + +// Load Bootstrap variables and mixins +@import "../../../scss/functions"; +@import "../../../scss/variables"; +@import "../../../scss/mixins"; + +// Load docs components +@import "variables"; +@import "nav"; +@import "masthead"; +@import "ads"; +@import "content"; +@import "skippy"; +@import "sidebar"; +@import "toc"; +@import "footer"; +@import "component-examples"; +@import "buttons"; +@import "callouts"; +@import "browser-bugs"; +@import "brand"; +@import "colors"; +@import "clipboard-js"; +@import "placeholder-img"; + +// Load docs dependencies +@import "syntax"; +@import "anchor"; +@import "algolia"; diff --git a/site/content/docs/4.5/_index.html b/site/content/docs/4.5/_index.html new file mode 100644 index 0000000000..7db8e4ca42 --- /dev/null +++ b/site/content/docs/4.5/_index.html @@ -0,0 +1,5 @@ +--- +layout: redirect +sitemap_exclude: true +redirect: "/docs/4.5/getting-started/introduction/" +--- diff --git a/site/content/docs/4.5/about/brand.md b/site/content/docs/4.5/about/brand.md new file mode 100644 index 0000000000..a640c180a0 --- /dev/null +++ b/site/content/docs/4.5/about/brand.md @@ -0,0 +1,78 @@ +--- +layout: docs +title: Brand guidelines +description: Documentation and examples for Bootstrap's logo and brand usage guidelines. +group: about +toc: true +--- + +Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's [Brand Assets](https://mailchimp.com/about/brand-assets/). + +## Mark and logo + +Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Bootstrap**). It should always appear in San Francisco Display Semibold. **Do not use the Twitter bird** in association with Bootstrap. + +
+
+ Bootstrap +
+
+ Bootstrap +
+
+
+
+ Bootstrap +
+
+ Bootstrap +
+
+ +## Download mark + +Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as. + +
+
+ Bootstrap +
+
+ Bootstrap +
+
+ Bootstrap +
+
+ +## Name + +The project and framework should always be referred to as **Bootstrap**. No Twitter before it, no capital _s_, and no abbreviations except for one, a capital **B**. + +
+
+ Bootstrap + Right +
+
+ BootStrap + Wrong +
+
+ Twitter Bootstrap + Wrong +
+
+ +## Colors + +Our docs and branding use a handful of primary colors to differentiate what *is* Bootstrap from what *is in* Bootstrap. In other words, if it's purple, it's representative of Bootstrap. + +
+
+
+
+
+
+
+
diff --git a/site/content/docs/4.5/about/license.md b/site/content/docs/4.5/about/license.md new file mode 100644 index 0000000000..c7f1302035 --- /dev/null +++ b/site/content/docs/4.5/about/license.md @@ -0,0 +1,34 @@ +--- +layout: docs +title: License FAQs +description: Commonly asked questions about Bootstrap's open source license. +group: about +--- + +Bootstrap is released under the MIT license and is copyright {{< year >}} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. + +#### It requires you to: + +* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works + +#### It permits you to: + +- Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes +- Use Bootstrap in packages or distributions that you create +- Modify the source code +- Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license + +#### It forbids you to: + +- Hold the authors and license owners liable for damages as Bootstrap is provided without warranty +- Hold the creators or copyright holders of Bootstrap liable +- Redistribute any piece of Bootstrap without proper attribution +- Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution +- Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question + +#### It does not require you to: + +- Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it +- Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged) + +The full Bootstrap license is located [in the project repository]({{< param repo >}}/blob/v{{< param current_version >}}/LICENSE) for more information. diff --git a/site/content/docs/4.5/about/overview.md b/site/content/docs/4.5/about/overview.md new file mode 100644 index 0000000000..f75f447a1c --- /dev/null +++ b/site/content/docs/4.5/about/overview.md @@ -0,0 +1,27 @@ +--- +layout: docs +title: About +description: Learn more about the team maintaining Bootstrap, how and why the project started, and how to get involved. +group: about +aliases: + - "/about/" + - "/docs/4.5/about/" +--- + +## Team + +Bootstrap is maintained by a [small team of developers](https://github.com/orgs/twbs/people) on GitHub. We're actively looking to grow this team and would love to hear from you if you're excited about CSS at scale, writing and maintaining vanilla JavaScript plugins, and improving build tooling processes for frontend code. + +## History + +Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world. + +Bootstrap was created at Twitter in mid-2010 by [@mdo](https://twitter.com/mdo) and [@fat](https://twitter.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.twitter.com/engineering/en_us/a/2010/hack-week.html) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today. + +Originally [released](https://blog.twitter.com/developer/en_us/a/2011/bootstrap-twitter.html) on , we've since had over [twenty releases]({{< param repo >}}/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach. + +With Bootstrap 4, we once again rewrote the project to account for two key architectural changes: a migration to Sass and the move to CSS's flexbox. Our intention is to help in a small way to move the web development community forward by pushing for newer CSS properties, fewer dependencies, and new technologies across more modern browsers. + +## Get involved + +Get involved with Bootstrap development by [opening an issue]({{< param repo >}}/issues/new) or submitting a pull request. Read our [contributing guidelines]({{< param repo >}}/blob/v{{< param current_version >}}/.github/CONTRIBUTING.md) for information on how we develop. diff --git a/site/content/docs/4.5/about/team.md b/site/content/docs/4.5/about/team.md new file mode 100644 index 0000000000..fd1d6bfa6b --- /dev/null +++ b/site/content/docs/4.5/about/team.md @@ -0,0 +1,23 @@ +--- +layout: docs +title: Team +description: An overview of the founding team and core contributors to Bootstrap. +group: about +--- + +Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community. + +{{< team.inline >}} +
+ {{- range (index $.Site.Data "core-team") }} + + @{{ .user }} + + {{ .name }} @{{ .user }} + + + {{ end -}} +
+{{< /team.inline >}} + +Get involved with Bootstrap development by [opening an issue]({{< param repo >}}/issues/new) or submitting a pull request. Read our [contributing guidelines]({{< param repo >}}/blob/v{{< param current_version >}}/.github/CONTRIBUTING.md) for information on how we develop. diff --git a/site/content/docs/4.5/about/translations.md b/site/content/docs/4.5/about/translations.md new file mode 100644 index 0000000000..e719e3a842 --- /dev/null +++ b/site/content/docs/4.5/about/translations.md @@ -0,0 +1,20 @@ +--- +layout: docs +title: Translations +description: Links to community-translated Bootstrap documentation sites. +group: about +--- + +Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date. + +{{< translations.inline >}} + +{{< /translations.inline >}} + +**We don't help organize or host translations, we just link to them.** + +Finished a new or better translation? Open a pull request to add it to our list. diff --git a/site/content/docs/4.5/browser-bugs.md b/site/content/docs/4.5/browser-bugs.md new file mode 100644 index 0000000000..1180fb5e21 --- /dev/null +++ b/site/content/docs/4.5/browser-bugs.md @@ -0,0 +1,57 @@ +--- +layout: docs +title: Wall of browser bugs +group: browser-bugs +aliases: "/browser-bugs/" +--- + +{{< callout danger >}} +##### Outdated content + +This page is outdated and is no longer applicable to the latest versions of Bootstrap. It's here purely for historical purposes now and will be removed in our next major release. +{{< /callout >}} + +Bootstrap currently works around several outstanding browser bugs in major browsers to deliver the best cross-browser experience possible. Some bugs, like those listed below, cannot be solved by us. + +We publicly list browser bugs that are impacting us here, in the hopes of expediting the process of fixing them. For information on Bootstrap's browser compatibility, [see our browser compatibility docs]({{< docsref "/getting-started/browsers-devices#supported-browsers" >}}). + +See also: + +* [Chromium issue 536263: [meta] Issues affecting Bootstrap](https://bugs.chromium.org/p/chromium/issues/detail?id=536263) +* [Mozilla bug 1230801: Fix the issues that affect Bootstrap](https://bugzilla.mozilla.org/show_bug.cgi?id=1230801) +* [WebKit bug 159753: [meta] Issues affecting Bootstrap](https://bugs.webkit.org/show_bug.cgi?id=159753) +* [jQuery's browser bug workarounds](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o) + + +{{< bug.inline >}} +{{- $type := .Get "type" | default "bug" -}} +{{- $data := .Get "data" | default "browser-bugs" -}} + + + + + + + + + + + {{- range (index $.Site.Data $data) }} + + + + + + + {{- end }} + +
Browser(s)Summary of {{ $type }}Upstream issue(s)Bootstrap issue(s)
{{ .browser | chomp }}{{ .summary | markdownify }}{{ partial "bugify" .upstream_bug }}{{ partial "bugify" .origin }}
+ {{< /bug.inline >}} + +# Most wanted features + +There are several features specified in Web standards which would allow us to make Bootstrap more robust, elegant, or performant, but aren't yet implemented in certain browsers, thus preventing us from taking advantage of them. + +We publicly list these "most wanted" feature requests here, in the hopes of expediting the process of getting them implemented. + +{{< bug.inline data="browser-features" type="feature" />}} diff --git a/site/content/docs/4.5/components/alerts.md b/site/content/docs/4.5/components/alerts.md new file mode 100644 index 0000000000..9227221697 --- /dev/null +++ b/site/content/docs/4.5/components/alerts.md @@ -0,0 +1,122 @@ +--- +layout: docs +title: Alerts +description: Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. +group: components +aliases: + - "/components/" + - "/docs/4.5/components/" +toc: true +--- + +## Examples + +Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts jQuery plugin](#dismissing). + +{{< example >}} +{{< alerts.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{- end -}} +{{< /alerts.inline >}} +{{< /example >}} + +{{< callout warning >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} + +### Link color + +Use the `.alert-link` utility class to quickly provide matching colored links within any alert. + +{{< example >}} +{{< alerts.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ end -}} +{{< /alerts.inline >}} +{{< /example >}} + +### Additional content + +Alerts can also contain additional HTML elements like headings, paragraphs and dividers. + +{{< example >}} + +{{< /example >}} + + +### Dismissing + +Using the alert JavaScript plugin, it's possible to dismiss any alert inline. Here's how: + +- Be sure you've loaded the alert plugin, or the compiled Bootstrap JavaScript. +- If you're building our JavaScript from source, it [requires `util.js`]({{< docsref "/getting-started/javascript#util" >}}). The compiled version includes this. +- Add a dismiss button and the `.alert-dismissible` class, which adds extra padding to the right of the alert and positions the `.close` button. +- On the dismiss button, add the `data-dismiss="alert"` attribute, which triggers the JavaScript functionality. Be sure to use the ` + +{{< /example >}} + +## JavaScript behavior + +### Triggers + +Enable dismissal of an alert via JavaScript: + +```js +$('.alert').alert() +``` + +Or with `data` attributes on a button **within the alert**, as demonstrated above: + +```html + +``` + +Note that closing an alert will remove it from the DOM. + +### Methods + +| Method | Description | +| --- | --- | +| `$().alert()` | Makes an alert listen for click events on descendant elements which have the `data-dismiss="alert"` attribute. (Not necessary when using the data-api's auto-initialization.) | +| `$().alert('close')` | Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. | +| `$().alert('dispose')` | Destroys an element's alert. | + +```js +$('.alert').alert('close') +``` + +### Events + +Bootstrap's alert plugin exposes a few events for hooking into alert functionality. + +| Event | Description | +| --- | --- | +| `close.bs.alert` | This event fires immediately when the `close` instance method is called. | +| `closed.bs.alert` | This event is fired when the alert has been closed (will wait for CSS transitions to complete). | + +```js +$('#myAlert').on('closed.bs.alert', function () { + // do something... +}) +``` diff --git a/site/content/docs/4.5/components/badge.md b/site/content/docs/4.5/components/badge.md new file mode 100644 index 0000000000..7d55cabcfd --- /dev/null +++ b/site/content/docs/4.5/components/badge.md @@ -0,0 +1,76 @@ +--- +layout: docs +title: Badges +description: Documentation and examples for badges, our small count and labeling component. +group: components +toc: true +--- + +## Example + +Badges scale to match the size of the immediate parent element by using relative font sizing and `em` units. + +{{< example >}} +

Example heading New

+

Example heading New

+

Example heading New

+

Example heading New

+
Example heading New
+
Example heading New
+{{< /example >}} + +Badges can be used as part of links or buttons to provide a counter. + +{{< example >}} + +{{< /example >}} + +Note that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button. + +Unless the context is clear (as with the "Notifications" example, where it is understood that the "4" is the number of notifications), consider including additional context with a visually hidden piece of additional text. + +{{< example >}} + +{{< /example >}} + +## Contextual variations + +Add any of the below mentioned modifier classes to change the appearance of a badge. + +{{< example >}} +{{< badge.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ .name | title }}{{- end -}} +{{< /badge.inline >}} +{{< /example >}} + +{{< callout warning >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} + +## Pill badges + +Use the `.badge-pill` modifier class to make badges more rounded (with a larger `border-radius` and additional horizontal `padding`). Useful if you miss the badges from v3. + +{{< example >}} +{{< badge.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ .name | title }}{{- end -}} +{{< /badge.inline >}} +{{< /example >}} + +## Links + +Using the contextual `.badge-*` classes on an `` element quickly provide _actionable_ badges with hover and focus states. + +{{< example >}} +{{< badge.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ .name | title }}{{- end -}} +{{< /badge.inline >}} +{{< /example >}} diff --git a/site/content/docs/4.5/components/breadcrumb.md b/site/content/docs/4.5/components/breadcrumb.md new file mode 100644 index 0000000000..9ed198fcd1 --- /dev/null +++ b/site/content/docs/4.5/components/breadcrumb.md @@ -0,0 +1,57 @@ +--- +layout: docs +title: Breadcrumb +description: Indicate the current page's location within a navigational hierarchy that automatically adds separators via CSS. +group: components +--- + +## Example + +{{< example >}} + + + + + +{{< /example >}} + +## Changing the separator + +Separators are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content). They can be changed by changing `$breadcrumb-divider`. The [quote](https://sass-lang.com/documentation/modules/string#quote) function is needed to generate the quotes around a string, so if you want `>` as separator, you can use this: + +```scss +$breadcrumb-divider: quote(">"); +``` + +It's also possible to use a **base64 embedded SVG icon**: + +```scss +$breadcrumb-divider: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiPjxwYXRoIGQ9Ik0yLjUgMEwxIDEuNSAzLjUgNCAxIDYuNSAyLjUgOGw0LTQtNC00eiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+); +``` + +The separator can be removed by setting `$breadcrumb-divider` to `none`: + +```scss +$breadcrumb-divider: none; +``` + +## Accessibility + +Since breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as `aria-label="breadcrumb"` to describe the type of navigation provided in the `