From b46f05a948490799df175b58e9ca2994c06db105 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Nov 2020 16:39:29 +0200 Subject: [PATCH] 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 + Gemfile | 9 - Gemfile.lock | 89 -- README.md | 12 +- _config.yml | 77 - build/generate-sri.js | 6 +- config.yml | 79 ++ package-lock.json | 1234 ++++++++++++++++- package.json | 66 +- scss/_root.scss | 1 - site/_data/docs-versions.yml | 46 - site/_includes/bugify.html | 42 - .../callout-info-prefersreducedmotion.md | 4 - 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/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/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 - .../js/src => assets/js}/application.js | 2 +- .../js}/ie-emulation-modes-warning.js | 0 .../4.5/assets/js/src => assets/js}/search.js | 0 .../4.5 => }/assets/js/vendor/anchor.min.js | 0 .../js/vendor/bs-custom-file-input.min.js | 0 .../assets/js/vendor/clipboard.min.js | 0 site/{docs/4.5 => }/assets/scss/_ads.scss | 0 site/{docs/4.5 => }/assets/scss/_algolia.scss | 0 site/{docs/4.5 => }/assets/scss/_anchor.scss | 0 site/{docs/4.5 => }/assets/scss/_brand.scss | 0 .../4.5 => }/assets/scss/_browser-bugs.scss | 0 site/{docs/4.5 => }/assets/scss/_buttons.scss | 0 .../{docs/4.5 => }/assets/scss/_callouts.scss | 0 .../4.5 => }/assets/scss/_clipboard-js.scss | 0 site/{docs/4.5 => }/assets/scss/_colors.scss | 0 .../assets/scss/_component-examples.scss | 0 site/{docs/4.5 => }/assets/scss/_content.scss | 0 site/{docs/4.5 => }/assets/scss/_footer.scss | 0 .../{docs/4.5 => }/assets/scss/_masthead.scss | 0 site/{docs/4.5 => }/assets/scss/_nav.scss | 0 .../assets/scss/_placeholder-img.scss | 0 site/{docs/4.5 => }/assets/scss/_sidebar.scss | 43 - site/{docs/4.5 => }/assets/scss/_skippy.scss | 0 site/assets/scss/_syntax.scss | 94 ++ site/assets/scss/_toc.scss | 54 + .../4.5 => }/assets/scss/_variables.scss | 0 site/{docs/4.5 => }/assets/scss/docs.scss | 7 +- site/content/docs/4.5/_index.html | 5 + site/{ => content}/docs/4.5/about/brand.md | 10 +- site/{ => content}/docs/4.5/about/license.md | 4 +- site/{ => content}/docs/4.5/about/overview.md | 6 +- site/content/docs/4.5/about/team.md | 23 + .../docs/4.5/about/translations.md | 8 +- site/{ => content}/docs/4.5/browser-bugs.md | 51 +- .../docs/4.5/components/alerts.md | 64 +- .../docs/4.5/components/badge.md | 52 +- .../docs/4.5/components/breadcrumb.md | 5 +- .../docs/4.5/components/button-group.md | 35 +- .../docs/4.5/components/buttons.md | 88 +- .../{ => content}/docs/4.5/components/card.md | 278 ++-- .../docs/4.5/components/carousel.md | 90 +- .../docs/4.5/components/collapse.md | 37 +- .../docs/4.5/components/dropdowns.md | 141 +- .../docs/4.5/components/forms.md | 303 ++-- .../docs/4.5/components/input-group.md | 55 +- .../docs/4.5/components/jumbotron.md | 10 +- .../docs/4.5/components/list-group.md | 118 +- .../docs/4.5/components/media-object.md | 64 +- .../docs/4.5/components/modal.md | 95 +- .../docs/4.5/components/navbar.md | 140 +- .../{ => content}/docs/4.5/components/navs.md | 136 +- .../docs/4.5/components/pagination.md | 42 +- .../docs/4.5/components/popovers.md | 121 +- .../docs/4.5/components/progress.md | 41 +- .../docs/4.5/components/scrollspy.md | 46 +- .../docs/4.5/components/spinners.md | 106 +- .../docs/4.5/components/toasts.md | 89 +- .../docs/4.5/components/tooltips.md | 101 +- site/{ => content}/docs/4.5/content/code.md | 25 +- .../{ => content}/docs/4.5/content/figures.md | 16 +- site/{ => content}/docs/4.5/content/images.md | 45 +- site/{ => content}/docs/4.5/content/reboot.md | 51 +- site/{ => content}/docs/4.5/content/tables.md | 152 +- .../docs/4.5/content/typography.md | 86 +- .../docs/4.5/examples/.stylelintrc | 0 site/content/docs/4.5/examples/_index.md | 31 + .../docs/4.5/examples/album/album.css | 0 .../docs/4.5/examples/album/index.html | 23 +- .../docs/4.5/examples/blog/blog.css | 0 .../docs/4.5/examples/blog/index.html | 4 +- .../docs/4.5/examples/carousel/carousel.css | 0 .../docs/4.5/examples/carousel/index.html | 23 +- .../4.5/examples/checkout/form-validation.css | 0 .../4.5/examples/checkout/form-validation.js | 0 .../docs/4.5/examples/checkout/index.html | 10 +- .../docs/4.5/examples/cover/cover.css | 0 .../docs/4.5/examples/cover/index.html | 3 +- .../docs/4.5/examples/dashboard/dashboard.css | 0 .../docs/4.5/examples/dashboard/dashboard.js | 0 .../docs/4.5/examples/dashboard/index.html | 3 +- .../floating-labels/floating-labels.css | 0 .../4.5/examples/floating-labels/index.html | 7 +- .../docs/4.5/examples/grid/grid.css | 0 .../docs/4.5/examples/grid/index.html | 3 +- .../docs/4.5/examples/jumbotron/index.html | 5 +- .../docs/4.5/examples/jumbotron/jumbotron.css | 0 .../4.5/examples/navbar-bottom/index.html | 2 +- .../docs/4.5/examples/navbar-fixed/index.html | 5 +- .../navbar-fixed/navbar-top-fixed.css | 0 .../4.5/examples/navbar-static/index.html | 5 +- .../4.5/examples/navbar-static/navbar-top.css | 0 .../docs/4.5/examples/navbars/index.html | 7 +- .../docs/4.5/examples/navbars/navbar.css | 0 .../docs/4.5/examples/offcanvas/index.html | 20 +- .../docs/4.5/examples/offcanvas/offcanvas.css | 0 .../docs/4.5/examples/offcanvas/offcanvas.js | 0 .../docs/4.5/examples/pricing/index.html | 7 +- .../docs/4.5/examples/pricing/pricing.css | 0 .../docs/4.5/examples/product/index.html | 5 +- .../docs/4.5/examples/product/product.css | 0 .../docs/4.5/examples/sign-in/index.html | 7 +- .../docs/4.5/examples/sign-in/signin.css | 0 .../4.5/examples/starter-template/index.html | 3 +- .../starter-template/starter-template.css | 0 .../examples/sticky-footer-navbar/index.html | 5 +- .../sticky-footer-navbar.css | 0 .../4.5/examples/sticky-footer/index.html | 5 +- .../examples/sticky-footer/sticky-footer.css | 0 .../{ => content}/docs/4.5/extend/approach.md | 8 +- site/{ => content}/docs/4.5/extend/icons.md | 10 +- .../docs/4.5/getting-started/accessibility.md | 8 +- .../4.5/getting-started/best-practices.md | 5 +- .../4.5/getting-started/browsers-devices.md | 32 +- .../docs/4.5/getting-started/build-tools.md | 27 +- .../docs/4.5/getting-started/contents.md | 21 +- .../docs/4.5/getting-started/download.md | 68 +- .../docs/4.5/getting-started/introduction.md | 78 +- .../docs/4.5/getting-started/javascript.md | 66 +- .../docs/4.5/getting-started/theming.md | 182 ++- .../docs/4.5/getting-started/webpack.md | 30 +- site/{ => content}/docs/4.5/layout/grid.md | 180 +-- .../{ => content}/docs/4.5/layout/overview.md | 56 +- .../docs/4.5/layout/utilities-for-layout.md | 25 + site/{ => content}/docs/4.5/migration.md | 24 +- site/content/docs/4.5/utilities/borders.md | 89 ++ .../docs/4.5/utilities/clearfix.md | 13 +- .../docs/4.5/utilities/close-icon.md | 5 +- .../docs/4.5/utilities/colors.md | 56 +- .../docs/4.5/utilities/display.md | 22 +- .../{ => content}/docs/4.5/utilities/embed.md | 13 +- site/{ => content}/docs/4.5/utilities/flex.md | 237 ++-- .../{ => content}/docs/4.5/utilities/float.md | 27 +- .../docs/4.5/utilities/image-replacement.md | 19 +- .../docs/4.5/utilities/interactions.md | 5 +- .../docs/4.5/utilities/overflow.md | 4 +- .../docs/4.5/utilities/position.md | 16 +- .../docs/4.5/utilities/screen-readers.md | 13 +- .../docs/4.5/utilities/shadows.md | 5 +- .../docs/4.5/utilities/sizing.md | 26 +- .../docs/4.5/utilities/spacing.md | 17 +- .../docs/4.5/utilities/stretched-link.md | 28 +- site/{ => content}/docs/4.5/utilities/text.md | 55 +- .../docs/4.5/utilities/vertical-align.md | 10 +- .../docs/4.5/utilities/visibility.md | 8 +- site/content/docs/_index.html | 5 + site/content/docs/versions.md | 28 + site/{_data => data}/breakpoints.yml | 0 site/{_data => data}/browser-bugs.yml | 2 +- site/{_data => data}/browser-features.yml | 0 site/{_data => data}/colors.yml | 10 +- site/{_data => data}/core-team.yml | 0 site/data/docs-versions.yml | 46 + site/{_data => data}/examples.yml | 2 +- site/{_data => data}/grays.yml | 0 site/{_data/nav.yml => data/sidebar.yml} | 0 site/{_data => data}/theme-colors.yml | 0 site/{_data => data}/translations.yml | 0 site/docs/4.5/about/team.md | 21 - 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/js/docs.min.js | 22 - site/docs/4.5/assets/scss/_syntax.scss | 78 -- site/docs/4.5/examples/index.html | 44 - site/docs/4.5/layout/utilities-for-layout.md | 25 - site/docs/4.5/utilities/borders.md | 91 -- 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/{_includes => layouts/partials}/ads.html | 0 .../partials}/analytics.html | 0 site/layouts/partials/bugify.html | 40 + .../partials}/callout-danger-async-methods.md | 5 +- .../callout-info-mediaqueries-breakpoints.md | 3 - .../callout-info-prefersreducedmotion.md | 1 + ...ut-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 + .../partials/home/masthead-followup.html | 90 ++ site/layouts/partials/home/masthead.html | 23 + .../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 + .../partials}/icons/code.svg | 2 +- site/layouts/partials/icons/droplet-fill.svg | 3 + site/layouts/partials/icons/github.svg | 1 + site/layouts/partials/icons/menu.svg | 1 + .../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 + .../partials}/skippy.html | 6 +- 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 - CNAME => site/static/CNAME | 0 .../4.5/assets/brand/bootstrap-outline.svg | 0 .../4.5/assets/brand/bootstrap-punchout.svg | 0 .../assets/brand/bootstrap-social-logo.png | Bin .../4.5/assets/brand/bootstrap-social.png | Bin .../docs/4.5/assets/brand/bootstrap-solid.svg | 0 .../docs/4.5/assets/img/bootstrap-icons.png | Bin .../4.5/assets/img/bootstrap-icons@2x.png | Bin .../assets/img/bootstrap-themes-collage.png | Bin .../img/bootstrap-themes-collage@2x.png | Bin .../docs/4.5/assets/img/bootstrap-themes.png | Bin .../4.5/assets/img/bootstrap-themes@2x.png | Bin .../docs/4.5/assets/img/examples/album.png | Bin .../docs/4.5/assets/img/examples/album@2x.png | Bin .../docs/4.5/assets/img/examples/blog.png | Bin .../docs/4.5/assets/img/examples/blog@2x.png | Bin .../docs/4.5/assets/img/examples/carousel.png | Bin .../4.5/assets/img/examples/carousel@2x.png | Bin .../docs/4.5/assets/img/examples/checkout.png | Bin .../4.5/assets/img/examples/checkout@2x.png | Bin .../docs/4.5/assets/img/examples/cover.png | Bin .../docs/4.5/assets/img/examples/cover@2x.png | Bin .../4.5/assets/img/examples/dashboard.png | Bin .../4.5/assets/img/examples/dashboard@2x.png | Bin .../assets/img/examples/floating-labels.png | Bin .../img/examples/floating-labels@2x.png | Bin .../docs/4.5/assets/img/examples/grid.png | Bin .../docs/4.5/assets/img/examples/grid@2x.png | Bin .../4.5/assets/img/examples/jumbotron.png | Bin .../4.5/assets/img/examples/jumbotron@2x.png | Bin .../4.5/assets/img/examples/navbar-bottom.png | Bin .../assets/img/examples/navbar-bottom@2x.png | Bin .../4.5/assets/img/examples/navbar-fixed.png | Bin .../assets/img/examples/navbar-fixed@2x.png | Bin .../4.5/assets/img/examples/navbar-static.png | Bin .../assets/img/examples/navbar-static@2x.png | Bin .../docs/4.5/assets/img/examples/navbars.png | Bin .../4.5/assets/img/examples/navbars@2x.png | Bin .../4.5/assets/img/examples/offcanvas.png | Bin .../4.5/assets/img/examples/offcanvas@2x.png | Bin .../docs/4.5/assets/img/examples/pricing.png | Bin .../4.5/assets/img/examples/pricing@2x.png | Bin .../docs/4.5/assets/img/examples/product.png | Bin .../4.5/assets/img/examples/product@2x.png | Bin .../docs/4.5/assets/img/examples/sign-in.png | Bin .../4.5/assets/img/examples/sign-in@2x.png | Bin .../assets/img/examples/starter-template.png | Bin .../img/examples/starter-template@2x.png | Bin .../img/examples/sticky-footer-navbar.png | Bin .../img/examples/sticky-footer-navbar@2x.png | Bin .../4.5/assets/img/examples/sticky-footer.png | Bin .../assets/img/examples/sticky-footer@2x.png | Bin .../img/favicons/android-chrome-192x192.png | Bin .../img/favicons/android-chrome-512x512.png | Bin .../assets/img/favicons/apple-touch-icon.png | Bin .../4.5/assets/img/favicons/browserconfig.xml | 0 .../4.5/assets/img/favicons/favicon-16x16.png | Bin .../4.5/assets/img/favicons/favicon-32x32.png | Bin .../docs/4.5/assets/img/favicons/favicon.ico | Bin .../4.5/assets/img/favicons/manifest.json | 0 .../assets/img/favicons/mstile-144x144.png | Bin .../assets/img/favicons/mstile-150x150.png | Bin .../assets/img/favicons/mstile-310x150.png | Bin .../assets/img/favicons/mstile-310x310.png | Bin .../4.5/assets/img/favicons/mstile-70x70.png | Bin .../assets/img/favicons/safari-pinned-tab.svg | 0 .../4.5/assets/js/vendor/jquery.slim.min.js | 0 site/{ => static}/sw.js | 0 325 files changed, 4463 insertions(+), 3596 deletions(-) delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 _config.yml create mode 100644 config.yml delete mode 100644 site/_data/docs-versions.yml delete mode 100644 site/_includes/bugify.html delete mode 100644 site/_includes/callout-info-prefersreducedmotion.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/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/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 rename site/{docs/4.5/assets/js/src => assets/js}/application.js (98%) rename site/{docs/4.5/assets/js/src => assets/js}/ie-emulation-modes-warning.js (100%) rename site/{docs/4.5/assets/js/src => assets/js}/search.js (100%) rename site/{docs/4.5 => }/assets/js/vendor/anchor.min.js (100%) rename site/{docs/4.5 => }/assets/js/vendor/bs-custom-file-input.min.js (100%) rename site/{docs/4.5 => }/assets/js/vendor/clipboard.min.js (100%) rename site/{docs/4.5 => }/assets/scss/_ads.scss (100%) rename site/{docs/4.5 => }/assets/scss/_algolia.scss (100%) rename site/{docs/4.5 => }/assets/scss/_anchor.scss (100%) rename site/{docs/4.5 => }/assets/scss/_brand.scss (100%) rename site/{docs/4.5 => }/assets/scss/_browser-bugs.scss (100%) rename site/{docs/4.5 => }/assets/scss/_buttons.scss (100%) rename site/{docs/4.5 => }/assets/scss/_callouts.scss (100%) rename site/{docs/4.5 => }/assets/scss/_clipboard-js.scss (100%) rename site/{docs/4.5 => }/assets/scss/_colors.scss (100%) rename site/{docs/4.5 => }/assets/scss/_component-examples.scss (100%) rename site/{docs/4.5 => }/assets/scss/_content.scss (100%) rename site/{docs/4.5 => }/assets/scss/_footer.scss (100%) rename site/{docs/4.5 => }/assets/scss/_masthead.scss (100%) rename site/{docs/4.5 => }/assets/scss/_nav.scss (100%) rename site/{docs/4.5 => }/assets/scss/_placeholder-img.scss (100%) rename site/{docs/4.5 => }/assets/scss/_sidebar.scss (76%) rename site/{docs/4.5 => }/assets/scss/_skippy.scss (100%) create mode 100644 site/assets/scss/_syntax.scss create mode 100644 site/assets/scss/_toc.scss rename site/{docs/4.5 => }/assets/scss/_variables.scss (100%) rename site/{docs/4.5 => }/assets/scss/docs.scss (92%) create mode 100644 site/content/docs/4.5/_index.html rename site/{ => content}/docs/4.5/about/brand.md (73%) rename site/{ => content}/docs/4.5/about/license.md (84%) rename site/{ => content}/docs/4.5/about/overview.md (78%) create mode 100644 site/content/docs/4.5/about/team.md rename site/{ => content}/docs/4.5/about/translations.md (69%) rename site/{ => content}/docs/4.5/browser-bugs.md (61%) rename site/{ => content}/docs/4.5/components/alerts.md (75%) rename site/{ => content}/docs/4.5/components/badge.md (68%) rename site/{ => content}/docs/4.5/components/breadcrumb.md (96%) rename site/{ => content}/docs/4.5/components/button-group.md (93%) rename site/{ => content}/docs/4.5/components/buttons.md (81%) rename site/{ => content}/docs/4.5/components/card.md (77%) rename site/{ => content}/docs/4.5/components/carousel.md (76%) rename site/{ => content}/docs/4.5/components/collapse.md (94%) rename site/{ => content}/docs/4.5/components/dropdowns.md (93%) rename site/{ => content}/docs/4.5/components/forms.md (89%) rename site/{ => content}/docs/4.5/components/input-group.md (94%) rename site/{ => content}/docs/4.5/components/jumbotron.md (87%) rename site/{ => content}/docs/4.5/components/list-group.md (90%) rename site/{ => content}/docs/4.5/components/media-object.md (79%) rename site/{ => content}/docs/4.5/components/modal.md (96%) rename site/{ => content}/docs/4.5/components/navbar.md (86%) rename site/{ => content}/docs/4.5/components/navs.md (93%) rename site/{ => content}/docs/4.5/components/pagination.md (88%) rename site/{ => content}/docs/4.5/components/popovers.md (87%) rename site/{ => content}/docs/4.5/components/progress.md (88%) rename site/{ => content}/docs/4.5/components/scrollspy.md (95%) rename site/{ => content}/docs/4.5/components/spinners.md (69%) rename site/{ => content}/docs/4.5/components/toasts.md (81%) rename site/{ => content}/docs/4.5/components/tooltips.md (89%) rename site/{ => content}/docs/4.5/content/code.md (75%) rename site/{ => content}/docs/4.5/content/figures.md (66%) rename site/{ => content}/docs/4.5/content/images.md (51%) rename site/{ => content}/docs/4.5/content/reboot.md (94%) rename site/{ => content}/docs/4.5/content/tables.md (87%) rename site/{ => content}/docs/4.5/content/typography.md (84%) rename site/{ => content}/docs/4.5/examples/.stylelintrc (100%) create mode 100644 site/content/docs/4.5/examples/_index.md rename site/{ => content}/docs/4.5/examples/album/album.css (100%) rename site/{ => content}/docs/4.5/examples/album/index.html (85%) rename site/{ => content}/docs/4.5/examples/blog/blog.css (100%) rename site/{ => content}/docs/4.5/examples/blog/index.html (97%) rename site/{ => content}/docs/4.5/examples/carousel/carousel.css (100%) rename site/{ => content}/docs/4.5/examples/carousel/index.html (83%) rename site/{ => content}/docs/4.5/examples/checkout/form-validation.css (100%) rename site/{ => content}/docs/4.5/examples/checkout/form-validation.js (100%) rename site/{ => content}/docs/4.5/examples/checkout/index.html (96%) rename site/{ => content}/docs/4.5/examples/cover/cover.css (100%) rename site/{ => content}/docs/4.5/examples/cover/index.html (97%) rename site/{ => content}/docs/4.5/examples/dashboard/dashboard.css (100%) rename site/{ => content}/docs/4.5/examples/dashboard/dashboard.js (100%) rename site/{ => content}/docs/4.5/examples/dashboard/index.html (99%) rename site/{ => content}/docs/4.5/examples/floating-labels/floating-labels.css (100%) rename site/{ => content}/docs/4.5/examples/floating-labels/index.html (79%) rename site/{ => content}/docs/4.5/examples/grid/grid.css (100%) rename site/{ => content}/docs/4.5/examples/grid/index.html (99%) rename site/{ => content}/docs/4.5/examples/jumbotron/index.html (97%) rename site/{ => content}/docs/4.5/examples/jumbotron/jumbotron.css (100%) rename site/{ => content}/docs/4.5/examples/navbar-bottom/index.html (90%) rename site/{ => content}/docs/4.5/examples/navbar-fixed/index.html (88%) rename site/{ => content}/docs/4.5/examples/navbar-fixed/navbar-top-fixed.css (100%) rename site/{ => content}/docs/4.5/examples/navbar-static/index.html (88%) rename site/{ => content}/docs/4.5/examples/navbar-static/navbar-top.css (100%) rename site/{ => content}/docs/4.5/examples/navbars/index.html (97%) rename site/{ => content}/docs/4.5/examples/navbars/navbar.css (100%) rename site/{ => content}/docs/4.5/examples/offcanvas/index.html (84%) rename site/{ => content}/docs/4.5/examples/offcanvas/offcanvas.css (100%) rename site/{ => content}/docs/4.5/examples/offcanvas/offcanvas.js (100%) rename site/{ => content}/docs/4.5/examples/pricing/index.html (94%) rename site/{ => content}/docs/4.5/examples/pricing/pricing.css (100%) rename site/{ => content}/docs/4.5/examples/product/index.html (98%) rename site/{ => content}/docs/4.5/examples/product/product.css (100%) rename site/{ => content}/docs/4.5/examples/sign-in/index.html (75%) rename site/{ => content}/docs/4.5/examples/sign-in/signin.css (100%) rename site/{ => content}/docs/4.5/examples/starter-template/index.html (98%) rename site/{ => content}/docs/4.5/examples/starter-template/starter-template.css (100%) rename site/{ => content}/docs/4.5/examples/sticky-footer-navbar/index.html (90%) rename site/{ => content}/docs/4.5/examples/sticky-footer-navbar/sticky-footer-navbar.css (100%) rename site/{ => content}/docs/4.5/examples/sticky-footer/index.html (74%) rename site/{ => content}/docs/4.5/examples/sticky-footer/sticky-footer.css (100%) rename site/{ => content}/docs/4.5/extend/approach.md (94%) rename site/{ => content}/docs/4.5/extend/icons.md (64%) rename site/{ => content}/docs/4.5/getting-started/accessibility.md (98%) rename site/{ => content}/docs/4.5/getting-started/best-practices.md (86%) rename site/{ => content}/docs/4.5/getting-started/browsers-devices.md (93%) rename site/{ => content}/docs/4.5/getting-started/build-tools.md (53%) rename site/{ => content}/docs/4.5/getting-started/contents.md (90%) rename site/{ => content}/docs/4.5/getting-started/download.md (58%) rename site/{ => content}/docs/4.5/getting-started/introduction.md (67%) rename site/{ => content}/docs/4.5/getting-started/javascript.md (89%) rename site/{ => content}/docs/4.5/getting-started/theming.md (84%) rename site/{ => content}/docs/4.5/getting-started/webpack.md (76%) rename site/{ => content}/docs/4.5/layout/grid.md (88%) rename site/{ => content}/docs/4.5/layout/overview.md (92%) create mode 100644 site/content/docs/4.5/layout/utilities-for-layout.md rename site/{ => content}/docs/4.5/migration.md (90%) create mode 100644 site/content/docs/4.5/utilities/borders.md rename site/{ => content}/docs/4.5/utilities/clearfix.md (84%) rename site/{ => content}/docs/4.5/utilities/close-icon.md (80%) rename site/{ => content}/docs/4.5/utilities/colors.md (56%) rename site/{ => content}/docs/4.5/utilities/display.md (82%) rename site/{ => content}/docs/4.5/utilities/embed.md (91%) rename site/{ => content}/docs/4.5/utilities/flex.md (86%) rename site/{ => content}/docs/4.5/utilities/float.md (80%) rename site/{ => content}/docs/4.5/utilities/image-replacement.md (64%) rename site/{ => content}/docs/4.5/utilities/interactions.md (90%) rename site/{ => content}/docs/4.5/utilities/overflow.md (96%) rename site/{ => content}/docs/4.5/utilities/position.md (89%) rename site/{ => content}/docs/4.5/utilities/screen-readers.md (65%) rename site/{ => content}/docs/4.5/utilities/shadows.md (89%) rename site/{ => content}/docs/4.5/utilities/sizing.md (80%) rename site/{ => content}/docs/4.5/utilities/spacing.md (95%) rename site/{ => content}/docs/4.5/utilities/stretched-link.md (82%) rename site/{ => content}/docs/4.5/utilities/text.md (81%) rename site/{ => content}/docs/4.5/utilities/vertical-align.md (88%) rename site/{ => content}/docs/4.5/utilities/visibility.md (91%) create mode 100644 site/content/docs/_index.html create mode 100644 site/content/docs/versions.md rename site/{_data => data}/breakpoints.yml (100%) rename site/{_data => data}/browser-bugs.yml (99%) rename site/{_data => data}/browser-features.yml (100%) rename site/{_data => data}/colors.yml (78%) rename site/{_data => data}/core-team.yml (100%) create mode 100644 site/data/docs-versions.yml rename site/{_data => data}/examples.yml (98%) rename site/{_data => data}/grays.yml (100%) rename site/{_data/nav.yml => data/sidebar.yml} (100%) rename site/{_data => data}/theme-colors.yml (100%) rename site/{_data => data}/translations.yml (100%) delete mode 100644 site/docs/4.5/about/team.md 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/js/docs.min.js delete mode 100644 site/docs/4.5/assets/scss/_syntax.scss delete mode 100644 site/docs/4.5/examples/index.html delete mode 100644 site/docs/4.5/layout/utilities-for-layout.md delete mode 100644 site/docs/4.5/utilities/borders.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 rename site/{_includes => layouts/partials}/ads.html (100%) rename site/{_includes => layouts/partials}/analytics.html (100%) create mode 100644 site/layouts/partials/bugify.html rename site/{_includes => layouts/partials}/callout-danger-async-methods.md (50%) rename site/{_includes => layouts/partials}/callout-info-mediaqueries-breakpoints.md (81%) create mode 100644 site/layouts/partials/callout-info-prefersreducedmotion.md rename site/{_includes => layouts/partials}/callout-warning-color-assistive-technologies.md (81%) 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 rename site/{_includes => layouts/partials}/icons/code.svg (50%) 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 rename site/{_includes => layouts/partials}/skippy.html (51%) 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 rename CNAME => site/static/CNAME (100%) rename site/{ => static}/docs/4.5/assets/brand/bootstrap-outline.svg (100%) rename site/{ => static}/docs/4.5/assets/brand/bootstrap-punchout.svg (100%) rename site/{ => static}/docs/4.5/assets/brand/bootstrap-social-logo.png (100%) rename site/{ => static}/docs/4.5/assets/brand/bootstrap-social.png (100%) rename site/{ => static}/docs/4.5/assets/brand/bootstrap-solid.svg (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-icons.png (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-icons@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-themes-collage.png (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-themes-collage@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-themes.png (100%) rename site/{ => static}/docs/4.5/assets/img/bootstrap-themes@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/album.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/album@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/blog.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/blog@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/carousel.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/carousel@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/checkout.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/checkout@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/cover.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/cover@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/dashboard.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/dashboard@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/floating-labels.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/floating-labels@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/grid.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/grid@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/jumbotron.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/jumbotron@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-bottom.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-bottom@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-fixed.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-fixed@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-static.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbar-static@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbars.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/navbars@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/offcanvas.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/offcanvas@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/pricing.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/pricing@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/product.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/product@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sign-in.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sign-in@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/starter-template.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/starter-template@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sticky-footer-navbar.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sticky-footer-navbar@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sticky-footer.png (100%) rename site/{ => static}/docs/4.5/assets/img/examples/sticky-footer@2x.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/android-chrome-192x192.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/android-chrome-512x512.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/apple-touch-icon.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/browserconfig.xml (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/favicon-16x16.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/favicon-32x32.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/favicon.ico (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/manifest.json (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/mstile-144x144.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/mstile-150x150.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/mstile-310x150.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/mstile-310x310.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/mstile-70x70.png (100%) rename site/{ => static}/docs/4.5/assets/img/favicons/safari-pinned-tab.svg (100%) rename site/{ => static}/docs/4.5/assets/js/vendor/jquery.slim.min.js (100%) rename site/{ => static}/sw.js (100%) 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/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 @@ } } }, + "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/docs-versions.yml b/site/_data/docs-versions.yml deleted file mode 100644 index c211a01c74..0000000000 --- a/site/_data/docs-versions.yml +++ /dev/null @@ -1,46 +0,0 @@ -- group: v1.x - baseurl: https://getbootstrap.com - description: Every minor and patch release from v1 is listed below. - versions: - - v: 1.0.0 - - v: 1.1.0 - - v: 1.1.1 - - v: 1.2.0 - - v: 1.3.0 - - v: 1.4.0 - -- group: v2.x - baseurl: https://getbootstrap.com - description: Every minor and patch release from v2 is listed below. - versions: - - v: 2.0.0 - - v: 2.0.1 - - v: 2.0.2 - - v: 2.0.3 - - v: 2.0.4 - - v: 2.1.0 - - v: 2.1.1 - - v: 2.2.0 - - v: 2.2.1 - - v: 2.2.2 - - v: 2.3.0 - - v: 2.3.1 - - v: 2.3.2 - -- group: v3.x - baseurl: https://getbootstrap.com/docs - description: Our previous major release and its minor versions. Last update was v3.4.1. - versions: - - v: 3.3 - - v: 3.4 - -- group: v4.x - baseurl: https://getbootstrap.com/docs - description: Current major release and its minor versions. Last update was v4.5.3. - versions: - - v: 4.0 - - v: 4.1 - - v: 4.2 - - v: 4.3 - - v: 4.4 - - v: 4.5 diff --git a/site/_includes/bugify.html b/site/_includes/bugify.html deleted file mode 100644 index 7f3340421a..0000000000 --- a/site/_includes/bugify.html +++ /dev/null @@ -1,42 +0,0 @@ -{%- comment -%} - Usage: include bugify.html content=text, - where content is a string that contains a bug reference name and id. - e.g. Bootstrap#19984 -{%- endcomment -%} - -{%- assign words = include.content | split: " " -%} - -{%- for word in words -%} - {% if word contains "#" %} - {% if word contains "," %}{% assign separator = true %}{% else %}{% assign separator = false %}{% endif %} - {%- assign data = word | split: "#" -%} - {%- assign bug_cat = data[0] | strip_newlines -%} - {%- assign bug_id = data[1] | strip_newlines | remove: "," -%} - - {%- case bug_cat -%} - {%- when "Bootstrap" -%} - #{{ bug_id }} - {%- when "Edge" -%} - Edge issue #{{ bug_id }} - {%- when "A11yUserVoice" -%} - Microsoft A11y UserVoice idea #{{ bug_id }} - {%- when "UserVoice" -%} - Edge UserVoice idea #{{ bug_id }} - {%- when "Mozilla" -%} - Mozilla bug #{{ bug_id }} - {%- when "Chromium" -%} - Chromium issue #{{ bug_id }} - {%- when "WebKit" -%} - WebKit bug #{{ bug_id }} - {%- when "Safari" -%} - Apple Safari Radar #{{ bug_id }} - {%- when "Normalize" -%} - Normalize #{{ bug_id }} - {%- else -%} - parse error - {%- endcase -%}{% if separator %}, {% endif %} - - {% else %} - {{ word }} - {%- endif -%} -{%- endfor -%} diff --git a/site/_includes/callout-info-prefersreducedmotion.md b/site/_includes/callout-info-prefersreducedmotion.md deleted file mode 100644 index 9c30903769..0000000000 --- a/site/_includes/callout-info-prefersreducedmotion.md +++ /dev/null @@ -1,4 +0,0 @@ -{% capture callout %} -The animation effect of this component is dependent on the `prefers-reduced-motion` media query. See the [reduced motion section of our accessibility documentation]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/accessibility/#reduced-motion). -{% endcapture %} -{% include callout.html content=callout type="info" %} diff --git a/site/_includes/callout.html b/site/_includes/callout.html deleted file mode 100644 index 434d10e1e9..0000000000 --- a/site/_includes/callout.html +++ /dev/null @@ -1,9 +0,0 @@ -{%- comment -%} - Usage: include callout.html content=callout type="type", - where content is a capture with the content - and type is one of: info (default), danger, warning -{%- endcomment -%} -{%- assign css_class = include.type | default: "info" -%} -
- {{- include.content | markdownify -}} -
diff --git a/site/_includes/docs-navbar.html b/site/_includes/docs-navbar.html deleted file mode 100644 index aa77be0f06..0000000000 --- a/site/_includes/docs-navbar.html +++ /dev/null @@ -1,70 +0,0 @@ - diff --git a/site/_includes/docs-sidebar.html b/site/_includes/docs-sidebar.html deleted file mode 100644 index fd86168df0..0000000000 --- a/site/_includes/docs-sidebar.html +++ /dev/null @@ -1,45 +0,0 @@ - - -
- -
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/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/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/docs/4.5/assets/js/src/application.js b/site/assets/js/application.js similarity index 98% rename from site/docs/4.5/assets/js/src/application.js rename to site/assets/js/application.js index a3032173bf..ca1ddcca00 100644 --- a/site/docs/4.5/assets/js/src/application.js +++ b/site/assets/js/application.js @@ -59,7 +59,7 @@ }) // Insert copy to clipboard button before .highlight - $('figure.highlight, div.highlight').each(function () { + $('div.highlight').each(function () { var btnHtml = '
' $(this).before(btnHtml) $('.btn-clipboard') diff --git a/site/docs/4.5/assets/js/src/ie-emulation-modes-warning.js b/site/assets/js/ie-emulation-modes-warning.js similarity index 100% rename from site/docs/4.5/assets/js/src/ie-emulation-modes-warning.js rename to site/assets/js/ie-emulation-modes-warning.js diff --git a/site/docs/4.5/assets/js/src/search.js b/site/assets/js/search.js similarity index 100% rename from site/docs/4.5/assets/js/src/search.js rename to site/assets/js/search.js diff --git a/site/docs/4.5/assets/js/vendor/anchor.min.js b/site/assets/js/vendor/anchor.min.js similarity index 100% rename from site/docs/4.5/assets/js/vendor/anchor.min.js rename to site/assets/js/vendor/anchor.min.js diff --git a/site/docs/4.5/assets/js/vendor/bs-custom-file-input.min.js b/site/assets/js/vendor/bs-custom-file-input.min.js similarity index 100% rename from site/docs/4.5/assets/js/vendor/bs-custom-file-input.min.js rename to site/assets/js/vendor/bs-custom-file-input.min.js diff --git a/site/docs/4.5/assets/js/vendor/clipboard.min.js b/site/assets/js/vendor/clipboard.min.js similarity index 100% rename from site/docs/4.5/assets/js/vendor/clipboard.min.js rename to site/assets/js/vendor/clipboard.min.js diff --git a/site/docs/4.5/assets/scss/_ads.scss b/site/assets/scss/_ads.scss similarity index 100% rename from site/docs/4.5/assets/scss/_ads.scss rename to site/assets/scss/_ads.scss diff --git a/site/docs/4.5/assets/scss/_algolia.scss b/site/assets/scss/_algolia.scss similarity index 100% rename from site/docs/4.5/assets/scss/_algolia.scss rename to site/assets/scss/_algolia.scss diff --git a/site/docs/4.5/assets/scss/_anchor.scss b/site/assets/scss/_anchor.scss similarity index 100% rename from site/docs/4.5/assets/scss/_anchor.scss rename to site/assets/scss/_anchor.scss diff --git a/site/docs/4.5/assets/scss/_brand.scss b/site/assets/scss/_brand.scss similarity index 100% rename from site/docs/4.5/assets/scss/_brand.scss rename to site/assets/scss/_brand.scss diff --git a/site/docs/4.5/assets/scss/_browser-bugs.scss b/site/assets/scss/_browser-bugs.scss similarity index 100% rename from site/docs/4.5/assets/scss/_browser-bugs.scss rename to site/assets/scss/_browser-bugs.scss diff --git a/site/docs/4.5/assets/scss/_buttons.scss b/site/assets/scss/_buttons.scss similarity index 100% rename from site/docs/4.5/assets/scss/_buttons.scss rename to site/assets/scss/_buttons.scss diff --git a/site/docs/4.5/assets/scss/_callouts.scss b/site/assets/scss/_callouts.scss similarity index 100% rename from site/docs/4.5/assets/scss/_callouts.scss rename to site/assets/scss/_callouts.scss diff --git a/site/docs/4.5/assets/scss/_clipboard-js.scss b/site/assets/scss/_clipboard-js.scss similarity index 100% rename from site/docs/4.5/assets/scss/_clipboard-js.scss rename to site/assets/scss/_clipboard-js.scss diff --git a/site/docs/4.5/assets/scss/_colors.scss b/site/assets/scss/_colors.scss similarity index 100% rename from site/docs/4.5/assets/scss/_colors.scss rename to site/assets/scss/_colors.scss diff --git a/site/docs/4.5/assets/scss/_component-examples.scss b/site/assets/scss/_component-examples.scss similarity index 100% rename from site/docs/4.5/assets/scss/_component-examples.scss rename to site/assets/scss/_component-examples.scss diff --git a/site/docs/4.5/assets/scss/_content.scss b/site/assets/scss/_content.scss similarity index 100% rename from site/docs/4.5/assets/scss/_content.scss rename to site/assets/scss/_content.scss diff --git a/site/docs/4.5/assets/scss/_footer.scss b/site/assets/scss/_footer.scss similarity index 100% rename from site/docs/4.5/assets/scss/_footer.scss rename to site/assets/scss/_footer.scss diff --git a/site/docs/4.5/assets/scss/_masthead.scss b/site/assets/scss/_masthead.scss similarity index 100% rename from site/docs/4.5/assets/scss/_masthead.scss rename to site/assets/scss/_masthead.scss diff --git a/site/docs/4.5/assets/scss/_nav.scss b/site/assets/scss/_nav.scss similarity index 100% rename from site/docs/4.5/assets/scss/_nav.scss rename to site/assets/scss/_nav.scss diff --git a/site/docs/4.5/assets/scss/_placeholder-img.scss b/site/assets/scss/_placeholder-img.scss similarity index 100% rename from site/docs/4.5/assets/scss/_placeholder-img.scss rename to site/assets/scss/_placeholder-img.scss diff --git a/site/docs/4.5/assets/scss/_sidebar.scss b/site/assets/scss/_sidebar.scss similarity index 76% rename from site/docs/4.5/assets/scss/_sidebar.scss rename to site/assets/scss/_sidebar.scss index cdabdeb3ff..7c350f8e3a 100644 --- a/site/docs/4.5/assets/scss/_sidebar.scss +++ b/site/assets/scss/_sidebar.scss @@ -1,46 +1,3 @@ -// stylelint-disable declaration-no-important - -// -// 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); -} - -.section-nav { - padding-left: 0; - border-left: 1px solid #eee; - - ul { - padding-left: 1rem; - } -} - -.toc-entry { - display: block; - - a { - display: block; - padding: .125rem 1.5rem; - color: #77757a; - - &:hover { - color: $blue; - text-decoration: none; - } - } -} - // // Left side navigation // diff --git a/site/docs/4.5/assets/scss/_skippy.scss b/site/assets/scss/_skippy.scss similarity index 100% rename from site/docs/4.5/assets/scss/_skippy.scss rename to site/assets/scss/_skippy.scss 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/docs/4.5/assets/scss/_variables.scss b/site/assets/scss/_variables.scss similarity index 100% rename from site/docs/4.5/assets/scss/_variables.scss rename to site/assets/scss/_variables.scss diff --git a/site/docs/4.5/assets/scss/docs.scss b/site/assets/scss/docs.scss similarity index 92% rename from site/docs/4.5/assets/scss/docs.scss rename to site/assets/scss/docs.scss index 8dd3f5b56f..0f1d68cdb4 100644 --- a/site/docs/4.5/assets/scss/docs.scss +++ b/site/assets/scss/docs.scss @@ -24,9 +24,9 @@ // Happy Bootstrapping! // Load Bootstrap variables and mixins -@import "../../../../../scss/functions"; -@import "../../../../../scss/variables"; -@import "../../../../../scss/mixins"; +@import "../../../scss/functions"; +@import "../../../scss/variables"; +@import "../../../scss/mixins"; // Load docs components @import "variables"; @@ -36,6 +36,7 @@ @import "content"; @import "skippy"; @import "sidebar"; +@import "toc"; @import "footer"; @import "component-examples"; @import "buttons"; 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/docs/4.5/about/brand.md b/site/content/docs/4.5/about/brand.md similarity index 73% rename from site/docs/4.5/about/brand.md rename to site/content/docs/4.5/about/brand.md index 5e670091b3..a640c180a0 100644 --- a/site/docs/4.5/about/brand.md +++ b/site/content/docs/4.5/about/brand.md @@ -14,10 +14,10 @@ Use either the Bootstrap mark (a capital **B**) or the standard logo (just **Boo
- Bootstrap + Bootstrap
- Bootstrap + Bootstrap
@@ -35,13 +35,13 @@ Download the Bootstrap mark in one of three styles, each available as an SVG fil
- Bootstrap + Bootstrap
- Bootstrap + Bootstrap
- Bootstrap + Bootstrap
diff --git a/site/docs/4.5/about/license.md b/site/content/docs/4.5/about/license.md similarity index 84% rename from site/docs/4.5/about/license.md rename to site/content/docs/4.5/about/license.md index 39720029d7..c7f1302035 100644 --- a/site/docs/4.5/about/license.md +++ b/site/content/docs/4.5/about/license.md @@ -5,7 +5,7 @@ description: Commonly asked questions about Bootstrap's open source license. group: about --- -Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions. +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: @@ -31,4 +31,4 @@ Bootstrap is released under the MIT license and is copyright {{ site.time | date - 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]({{ site.repo }}/blob/v{{ site.current_version }}/LICENSE) for more information. +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/docs/4.5/about/overview.md b/site/content/docs/4.5/about/overview.md similarity index 78% rename from site/docs/4.5/about/overview.md rename to site/content/docs/4.5/about/overview.md index 71572a47e8..f75f447a1c 100644 --- a/site/docs/4.5/about/overview.md +++ b/site/content/docs/4.5/about/overview.md @@ -3,7 +3,7 @@ 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 -redirect_from: +aliases: - "/about/" - "/docs/4.5/about/" --- @@ -18,10 +18,10 @@ Originally created by a designer and a developer at Twitter, Bootstrap has becom 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]({{ site.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. +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]({{ site.repo }}/issues/new) or submitting a pull request. Read our [contributing guidelines]({{ site.repo }}/blob/v{{ site.current_version }}/.github/CONTRIBUTING.md) for information on how we develop. +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/docs/4.5/about/translations.md b/site/content/docs/4.5/about/translations.md similarity index 69% rename from site/docs/4.5/about/translations.md rename to site/content/docs/4.5/about/translations.md index 576259d356..e719e3a842 100644 --- a/site/docs/4.5/about/translations.md +++ b/site/content/docs/4.5/about/translations.md @@ -7,11 +7,13 @@ 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.** diff --git a/site/docs/4.5/browser-bugs.md b/site/content/docs/4.5/browser-bugs.md similarity index 61% rename from site/docs/4.5/browser-bugs.md rename to site/content/docs/4.5/browser-bugs.md index 15c99a67d5..1180fb5e21 100644 --- a/site/docs/4.5/browser-bugs.md +++ b/site/content/docs/4.5/browser-bugs.md @@ -2,19 +2,18 @@ layout: docs title: Wall of browser bugs group: browser-bugs -redirect_from: "/browser-bugs/" +aliases: "/browser-bugs/" --- -{% capture callout %} +{{< 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. -{% endcapture %} -{% include callout.html content=callout type="danger" %} +{{< /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]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/browsers-devices/#supported-browsers). +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: @@ -23,26 +22,31 @@ See also: * [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" -}} - - + + - {% for bug in site.data.browser-bugs %} + {{- range (index $.Site.Data $data) }} - - - - + + + + - {% endfor %} + {{- end }}
Browser(s)Summary of bugUpstream bug(s)Summary of {{ $type }}Upstream issue(s) Bootstrap issue(s)
{{ bug.browser }}{{ bug.summary | markdownify }}{% include bugify.html content=bug.upstream_bug %}{% include bugify.html content=bug.origin %}{{ .browser | chomp }}{{ .summary | markdownify }}{{ partial "bugify" .upstream_bug }}{{ partial "bugify" .origin }}
+ {{< /bug.inline >}} # Most wanted features @@ -50,23 +54,4 @@ There are several features specified in Web standards which would allow us to ma We publicly list these "most wanted" feature requests here, in the hopes of expediting the process of getting them implemented. - - - - - - - - - - - {% for feat in site.data.browser-features %} - - - - - - - {% endfor %} - -
Browser(s)Summary of featureUpstream issue(s)Bootstrap issue(s)
{{ feat.browser }}{{ feat.summary | markdownify }}{% include bugify.html content=feat.upstream_bug %}{% include bugify.html content=feat.origin %}
+{{< bug.inline data="browser-features" type="feature" />}} diff --git a/site/docs/4.5/components/alerts.md b/site/content/docs/4.5/components/alerts.md similarity index 75% rename from site/docs/4.5/components/alerts.md rename to site/content/docs/4.5/components/alerts.md index 082101598d..9227221697 100644 --- a/site/docs/4.5/components/alerts.md +++ b/site/content/docs/4.5/components/alerts.md @@ -3,7 +3,7 @@ layout: docs title: Alerts description: Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. group: components -redirect_from: +aliases: - "/components/" - "/docs/4.5/components/" toc: true @@ -13,41 +13,44 @@ toc: true 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). -{% capture example %} -{% for color in site.data.theme-colors %} -{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< example >}} +{{< alerts.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{- end -}} +{{< /alerts.inline >}} +{{< /example >}} -{% include callout-warning-color-assistive-technologies.md %} +{{< 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. -{% capture example %} -{% for color in site.data.theme-colors %} -{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< 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. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Dismissing @@ -55,22 +58,21 @@ Alerts can also contain additional HTML elements like headings, paragraphs and d 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`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util). The compiled version includes this. +- 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 `
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## JavaScript behavior @@ -78,17 +80,17 @@ You can see this in action with a live demo: Enable dismissal of an alert via JavaScript: -{% highlight js %} +```js $('.alert').alert() -{% endhighlight %} +``` Or with `data` attributes on a button **within the alert**, as demonstrated above: -{% highlight html %} +```html -{% endhighlight %} +``` Note that closing an alert will remove it from the DOM. @@ -100,7 +102,9 @@ Note that closing an alert will remove it from the DOM. | `$().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. | -{% highlight js %}$('.alert').alert('close'){% endhighlight %} +```js +$('.alert').alert('close') +``` ### Events @@ -111,8 +115,8 @@ Bootstrap's alert plugin exposes a few events for hooking into alert functionali | `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). | -{% highlight js %} +```js $('#myAlert').on('closed.bs.alert', function () { // do something... }) -{% endhighlight %} +``` diff --git a/site/docs/4.5/components/badge.md b/site/content/docs/4.5/components/badge.md similarity index 68% rename from site/docs/4.5/components/badge.md rename to site/content/docs/4.5/components/badge.md index 8c17600459..7d55cabcfd 100644 --- a/site/docs/4.5/components/badge.md +++ b/site/content/docs/4.5/components/badge.md @@ -10,65 +10,67 @@ toc: true Badges scale to match the size of the immediate parent element by using relative font sizing and `em` units. -{% capture example %} +{{< example >}}

Example heading New

Example heading New

Example heading New

Example heading New

Example heading New
Example heading New
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Badges can be used as part of links or buttons to provide a counter. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=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. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Contextual variations Add any of the below mentioned modifier classes to change the appearance of a badge. -{% capture example %} -{% for color in site.data.theme-colors %} -{{ color.name | capitalize }}{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< example >}} +{{< badge.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ .name | title }}{{- end -}} +{{< /badge.inline >}} +{{< /example >}} -{% include callout-warning-color-assistive-technologies.md %} +{{< 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. -{% capture example %} -{% for color in site.data.theme-colors %} -{{ color.name | capitalize }}{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< 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. -{% capture example %} -{% for color in site.data.theme-colors %} -{{ color.name | capitalize }}{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< example >}} +{{< badge.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +{{ .name | title }}{{- end -}} +{{< /badge.inline >}} +{{< /example >}} diff --git a/site/docs/4.5/components/breadcrumb.md b/site/content/docs/4.5/components/breadcrumb.md similarity index 96% rename from site/docs/4.5/components/breadcrumb.md rename to site/content/docs/4.5/components/breadcrumb.md index f6ce8f1be1..9ed198fcd1 100644 --- a/site/docs/4.5/components/breadcrumb.md +++ b/site/content/docs/4.5/components/breadcrumb.md @@ -7,7 +7,7 @@ group: components ## Example -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Changing the separator diff --git a/site/docs/4.5/components/button-group.md b/site/content/docs/4.5/components/button-group.md similarity index 93% rename from site/docs/4.5/components/button-group.md rename to site/content/docs/4.5/components/button-group.md index 2261a5e729..07f60a9bbe 100644 --- a/site/docs/4.5/components/button-group.md +++ b/site/content/docs/4.5/components/button-group.md @@ -8,31 +8,29 @@ toc: true ## Basic example -Wrap a series of buttons with `.btn` in `.btn-group`. Add on optional JavaScript radio and checkbox style behavior with [our buttons plugin]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/buttons/#button-plugin). +Wrap a series of buttons with `.btn` in `.btn-group`. Add on optional JavaScript radio and checkbox style behavior with [our buttons plugin]({{< docsref "/components/buttons#button-plugin" >}}). -{% capture example %} +{{< example >}}
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture callout %} +{{< callout warning >}} ##### Ensure correct `role` and provide a label In order for assistive technologies (such as screen readers) to convey that a series of buttons is grouped, an appropriate `role` attribute needs to be provided. For button groups, this would be `role="group"`, while toolbars should have a `role="toolbar"`. In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct role attribute. In the examples provided here, we use `aria-label`, but alternatives such as `aria-labelledby` can also be used. -{% endcapture %} -{% include callout.html content=callout type="warning" %} +{{< /callout >}} ## Button toolbar Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Feel free to mix input groups with button groups in your toolbars. Similar to the example above, you'll likely need some utilities though to space things properly. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Sizing @@ -111,17 +107,17 @@ Instead of applying button sizing classes to every button in a group, just add ` -{% highlight html %} +```html
...
...
...
-{% endhighlight %} +``` ## Nesting Place a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons. -{% capture example %} +{{< example >}}
@@ -136,8 +132,7 @@ Place a `.btn-group` within another `.btn-group` when you want dropdown menus mi
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Vertical variation @@ -200,8 +195,8 @@ Make a set of buttons appear vertically stacked rather than horizontally. **Spli -{% highlight html %} +```html
...
-{% endhighlight %} +``` diff --git a/site/docs/4.5/components/buttons.md b/site/content/docs/4.5/components/buttons.md similarity index 81% rename from site/docs/4.5/components/buttons.md rename to site/content/docs/4.5/components/buttons.md index 978b7683ec..a544823198 100644 --- a/site/docs/4.5/components/buttons.md +++ b/site/content/docs/4.5/components/buttons.md @@ -10,15 +10,19 @@ toc: true Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control. -{% capture example %} -{% for color in site.data.theme-colors %} -{% endfor %} +{{< example >}} +{{< buttons.inline >}} +{{- range (index $.Site.Data "theme-colors") }} + +{{- end -}} +{{< /buttons.inline >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% include callout-warning-color-assistive-technologies.md %} +{{< callout warning >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} ## Disable text wrapping @@ -30,73 +34,68 @@ The `.btn` classes are designed to be used with the ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Outline buttons In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the `.btn-outline-*` ones to remove all background images and colors on any button. -{% capture example %} -{% for color in site.data.theme-colors %} -{% endfor %} -{% endcapture %} -{% include example.html content=example %} +{{< example >}} +{{< buttons.inline >}} +{{- range (index $.Site.Data "theme-colors") }} + +{{- end -}} +{{< /buttons.inline >}} +{{< /example >}} -{% capture callout %} +{{< callout info >}} Some of the button styles use a relatively light foreground color, and should only be used on a dark background in order to have sufficient contrast. -{% endcapture %} -{% include callout.html content=callout type="info" %} +{{< /callout >}} ## Sizes Fancy larger or smaller buttons? Add `.btn-lg` or `.btn-sm` for additional sizes. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Create block level buttons—those that span the full width of a parent—by adding `.btn-block`. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Active state Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. **There's no need to add a class to ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Disabled buttons using the `` element behave a bit different: @@ -104,18 +103,16 @@ Disabled buttons using the `` element behave a bit different: - Some future-friendly styles are included to disable all `pointer-events` on anchor buttons. In browsers which support that property, you won't see the disabled cursor at all. - Disabled buttons should include the `aria-disabled="true"` attribute to indicate the state of the element to assistive technologies. -{% capture example %} +{{< example >}} Primary link Link -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture callout %} +{{< callout warning >}} ##### Link functionality caveat The `.disabled` class uses `pointer-events: none` to try to disable the link functionality of ``s, but that CSS property is not yet standardized. In addition, even in browsers that do support `pointer-events: none`, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, add a `tabindex="-1"` attribute on these links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality. -{% endcapture %} -{% include callout.html content=callout type="warning" %} +{{< /callout >}} ## Button plugin @@ -125,12 +122,11 @@ Do more with buttons. Control button states or create groups of buttons for more Add `data-toggle="button"` to toggle a button's `active` state. If you're pre-toggling a button, you must manually add the `.active` class **and** `aria-pressed="true"` to the ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Checkbox and radio buttons @@ -140,16 +136,15 @@ The checked state for these buttons is **only updated via `click` event** on the Note that pre-checked buttons require you to manually add the `.active` class to the input's ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Content types @@ -36,14 +35,13 @@ Cards support a wide variety of content, including images, text, list groups, li The building block of a card is the `.card-body`. Use it whenever you need a padded section within a card. -{% capture example %} +{{< example >}}
This is some text within a card body.
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Titles, text, and links @@ -51,7 +49,7 @@ Card titles are used by adding `.card-title` to a `` tag. In the same way, l Subtitles are used by adding a `.card-subtitle` to a `` tag. If the `.card-title` and the `.card-subtitle` items are placed in a `.card-body` item, the card title and subtitle are aligned nicely. -{% capture example %} +{{< example >}}
Card title
@@ -61,28 +59,26 @@ Subtitles are used by adding a `.card-subtitle` to a `` tag. If the `.card-t Another link
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Images `.card-img-top` places an image to the top of the card. With `.card-text`, text can be added to the card. Text within `.card-text` can also be styled with the standard HTML tags. -{% capture example %} +{{< example >}}
- {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}

Some quick example text to build on the card title and make up the bulk of the card's content.

-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### List groups Create lists of content in a card with a flush list group. -{% capture example %} +{{< example >}}
  • Cras justo odio
  • @@ -90,10 +86,9 @@ Create lists of content in a card with a flush list group.
  • Vestibulum at eros
-{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
Featured @@ -104,10 +99,9 @@ Create lists of content in a card with a flush list group.
  • Vestibulum at eros
  • -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    • Cras justo odio
    • @@ -118,16 +112,15 @@ Create lists of content in a card with a flush list group. Card footer
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Kitchen sink Mix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    @@ -142,14 +135,13 @@ Mix and match multiple content types to create the card you need, or throw every Another link
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Header and footer Add an optional header and/or footer within a card. -{% capture example %} +{{< example >}}
    Featured @@ -160,12 +152,11 @@ Add an optional header and/or footer within a card. Go somewhere
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Card headers can be styled by adding `.card-header` to `` elements. -{% capture example %} +{{< example >}}
    Featured
    @@ -174,10 +165,9 @@ Card headers can be styled by adding `.card-header` to `` elements. Go somewhere
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    Quote @@ -189,10 +179,9 @@ Card headers can be styled by adding `.card-header` to `` elements.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    Featured @@ -206,8 +195,7 @@ Card headers can be styled by adding `.card-header` to `` elements. 2 days ago
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Sizing @@ -217,7 +205,7 @@ Cards assume no specific `width` to start, so they'll be 100% wide unless otherw Using the grid, wrap cards in columns and rows as needed. -{% capture example %} +{{< example >}}
    @@ -238,14 +226,13 @@ Using the grid, wrap cards in columns and rows as needed.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Using utilities -Use our handful of [available sizing utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/sizing/) to quickly set a card's width. +Use our handful of [available sizing utilities]({{< docsref "/utilities/sizing" >}}) to quickly set a card's width. -{% capture example %} +{{< example >}}
    Card title
    @@ -261,14 +248,13 @@ Use our handful of [available sizing utilities]({{ site.baseurl }}/docs/{{ site. Button
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Using custom CSS Use custom CSS in your stylesheets or as inline styles to set a width. -{% capture example %} +{{< example >}}
    Special title treatment
    @@ -276,14 +262,13 @@ Use custom CSS in your stylesheets or as inline styles to set a width. Go somewhere
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Text alignment -You can quickly change the text alignment of any card—in its entirety or specific parts—with our [text align classes]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/text/#text-alignment). +You can quickly change the text alignment of any card—in its entirety or specific parts—with our [text align classes]({{< docsref "/utilities/text#text-alignment" >}}). -{% capture example %} +{{< example >}}
    Special title treatment
    @@ -307,14 +292,13 @@ You can quickly change the text alignment of any card—in its entirety or speci Go somewhere
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Navigation -Add some navigation to a card's header (or block) with Bootstrap's [nav components]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/navs/). +Add some navigation to a card's header (or block) with Bootstrap's [nav components]({{< docsref "/components/navs" >}}). -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Images @@ -372,7 +354,7 @@ Similar to headers and footers, cards can include top and bottom "image caps"—
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -385,11 +367,11 @@ Similar to headers and footers, cards can include top and bottom "image caps"—

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    Last updated 3 mins ago

    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-bottom" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-bottom" text="Image cap" >}}
    -{% highlight html %} +```html
    ...
    @@ -406,38 +388,36 @@ Similar to headers and footers, cards can include top and bottom "image caps"—
    ...
    -{% endhighlight %} +``` ### Image overlays Turn an image into a card background and overlay your card's text. Depending on the image, you may or may not need additional styles or utilities. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="270" class="bd-placeholder-img-lg card-img" text="Card image" %} + {{< placeholder width="100%" height="270" class="bd-placeholder-img-lg card-img" text="Card image" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    Last updated 3 mins ago

    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture callout %} +{{< callout info >}} Note that content should not be larger than the height of the image. If content is larger than the image the content will be displayed outside the image. -{% endcapture %} -{% include callout.html content=callout type="info" %} +{{< /callout >}} ## Horizontal Using a combination of grid and utility classes, cards can be made horizontal in a mobile-friendly and responsive way. In the example below, we remove the grid gutters with `.no-gutters` and use `.col-md-*` classes to make the card horizontal at the `md` breakpoint. Further adjustments may be needed depending on your card content. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="250" class="" text="Image" %} + {{< placeholder width="100%" height="250" class="" text="Image" >}}
    @@ -448,8 +428,7 @@ Using a combination of grid and utility classes, cards can be made horizontal in
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Card styles @@ -457,43 +436,49 @@ Cards include various options for customizing their backgrounds, borders, and co ### Background and color -Use [text and background utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/) to change the appearance of a card. +Use [text and background utilities]({{< docsref "/utilities/colors" >}}) to change the appearance of a card. -{% capture example %} -{% for color in site.data.theme-colors %} -
    +{{< example >}} +{{< card.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +
    Header
    -
    {{ color.name | capitalize }} card title
    +
    {{ .name | title }} card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    -
    {% endfor %} -{% endcapture %} -{% include example.html content=example %} +
    +{{- end -}} +{{< /card.inline >}} +{{< /example >}} -{% include callout-warning-color-assistive-technologies.md %} +{{< callout warning >}} +{{< partial "callout-warning-color-assistive-technologies.md" >}} +{{< /callout >}} ### Border -Use [border utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/borders/) to change just the `border-color` of a card. Note that you can put `.text-{color}` classes on the parent `.card` or a subset of the card's contents as shown below. +Use [border utilities]({{< docsref "/utilities/borders" >}}) to change just the `border-color` of a card. Note that you can put `.text-{color}` classes on the parent `.card` or a subset of the card's contents as shown below. -{% capture example %} -{% for color in site.data.theme-colors %} -
    +{{< example >}} +{{< card.inline >}} +{{- range (index $.Site.Data "theme-colors") }} +
    Header
    -
    -
    {{ color.name | capitalize }} card title
    +
    +
    {{ .name | title }} card title

    Some quick example text to build on the card title and make up the bulk of the card's content.

    -
    {% endfor %} -{% endcapture %} -{% include example.html content=example %} +
    +{{- end -}} +{{< /card.inline >}} +{{< /example >}} ### Mixins utilities You can also change the borders on the card header and footer as needed, and even remove their `background-color` with `.bg-transparent`. -{% capture example %} +{{< example >}}
    Header
    @@ -502,8 +487,7 @@ You can also change the borders on the card header and footer as needed, and eve
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Card layout @@ -513,10 +497,10 @@ In addition to styling the content within cards, Bootstrap includes a few option Use card groups to render cards as a single, attached element with equal width and height columns. Card groups start off stacked and use `display: flex;` to become attached with uniform dimensions starting at the `sm` breakpoint. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -524,7 +508,7 @@ Use card groups to render cards as a single, attached element with equal width a
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    @@ -532,7 +516,7 @@ Use card groups to render cards as a single, attached element with equal width a
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

    @@ -540,15 +524,14 @@ Use card groups to render cards as a single, attached element with equal width a
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} When using card groups with footers, their content will automatically line up. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -558,7 +541,7 @@ When using card groups with footers, their content will automatically line up.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    @@ -568,7 +551,7 @@ When using card groups with footers, their content will automatically line up.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

    @@ -578,17 +561,16 @@ When using card groups with footers, their content will automatically line up.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Card decks Need a set of equal width and height cards that aren't attached to one another? Use card decks. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="200" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="200" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -596,7 +578,7 @@ Need a set of equal width and height cards that aren't attached to one another?
    - {% include icons/placeholder.svg width="100%" height="200" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="200" class="card-img-top" text="Image cap" >}}
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    @@ -604,7 +586,7 @@ Need a set of equal width and height cards that aren't attached to one another?
    - {% include icons/placeholder.svg width="100%" height="200" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="200" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

    @@ -612,15 +594,14 @@ Need a set of equal width and height cards that aren't attached to one another?
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Just like with card groups, card footers in decks will automatically line up. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -630,7 +611,7 @@ Just like with card groups, card footers in decks will automatically line up.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    @@ -640,7 +621,7 @@ Just like with card groups, card footers in decks will automatically line up.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

    @@ -650,18 +631,17 @@ Just like with card groups, card footers in decks will automatically line up.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Grid cards -Use the Bootstrap grid system and its [`.row-cols` classes]({{ site.baseurl }}/docs/{{ site.docs_version }}/layout/grid/#row-columns) to control how many grid columns (wrapped around your cards) you show per row. For example, here's `.row-cols-1` laying out the cards on one column, and `.row-cols-md-2` splitting four cards to equal width across multiple rows, from the medium breakpoint up. +Use the Bootstrap grid system and its [`.row-cols` classes]({{< docsref "/layout/grid#row-columns" >}}) to control how many grid columns (wrapped around your cards) you show per row. For example, here's `.row-cols-1` laying out the cards on one column, and `.row-cols-md-2` splitting four cards to equal width across multiple rows, from the medium breakpoint up. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -670,7 +650,7 @@ Use the Bootstrap grid system and its [`.row-cols` classes]({{ site.baseurl }}/d
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -679,7 +659,7 @@ Use the Bootstrap grid system and its [`.row-cols` classes]({{ site.baseurl }}/d
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content.

    @@ -688,7 +668,7 @@ Use the Bootstrap grid system and its [`.row-cols` classes]({{ site.baseurl }}/d
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -696,16 +676,15 @@ Use the Bootstrap grid system and its [`.row-cols` classes]({{ site.baseurl }}/d
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Change it to `.row-cols-3` and you'll see the fourth card wrap. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -714,7 +693,7 @@ Change it to `.row-cols-3` and you'll see the fourth card wrap.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -723,7 +702,7 @@ Change it to `.row-cols-3` and you'll see the fourth card wrap.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content.

    @@ -732,7 +711,7 @@ Change it to `.row-cols-3` and you'll see the fourth card wrap.
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -740,16 +719,15 @@ Change it to `.row-cols-3` and you'll see the fourth card wrap.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} When you need equal height, add `.h-100` to the cards. If you want equal heights by default, you can set `$card-height: 100%` in Sass. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -758,7 +736,7 @@ When you need equal height, add `.h-100` to the cards. If you want equal heights
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a short card.

    @@ -767,7 +745,7 @@ When you need equal height, add `.h-100` to the cards. If you want equal heights
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content.

    @@ -776,7 +754,7 @@ When you need equal height, add `.h-100` to the cards. If you want equal heights
    - {% include icons/placeholder.svg width="100%" height="180" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="180" class="card-img-top" text="Image cap" >}}
    Card title

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -784,8 +762,7 @@ When you need equal height, add `.h-100` to the cards. If you want equal heights
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Card columns @@ -793,10 +770,10 @@ Cards can be organized into [Masonry](https://masonry.desandro.com/)-like column **Heads up!** Your mileage with card columns may vary. To prevent cards breaking across columns, we must set them to `display: inline-block` as `column-break-inside: avoid` isn't a bulletproof solution yet. -{% capture example %} +{{< example >}}
    - {% include icons/placeholder.svg width="100%" height="160" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="160" class="card-img-top" text="Image cap" >}}
    Card title that wraps to a new line

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    @@ -813,7 +790,7 @@ Cards can be organized into [Masonry](https://masonry.desandro.com/)-like column
    - {% include icons/placeholder.svg width="100%" height="160" class="card-img-top" text="Image cap" %} + {{< placeholder width="100%" height="160" class="card-img-top" text="Image cap" >}}
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    @@ -838,7 +815,7 @@ Cards can be organized into [Masonry](https://masonry.desandro.com/)-like column
    - {% include icons/placeholder.svg width="100%" height="260" class="card-img" text="Card image" %} + {{< placeholder width="100%" height="260" class="card-img" text="Card image" >}}
    @@ -858,12 +835,11 @@ Cards can be organized into [Masonry](https://masonry.desandro.com/)-like column
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Card columns can also be extended and customized with some additional code. Shown below is an extension of the `.card-columns` class using the same CSS we use—CSS columns— to generate a set of responsive tiers for changing the number of columns. -{% highlight scss %} +```scss .card-columns { @include media-breakpoint-only(lg) { column-count: 4; @@ -872,4 +848,4 @@ Card columns can also be extended and customized with some additional code. Show column-count: 5; } } -{% endhighlight %} +``` diff --git a/site/docs/4.5/components/carousel.md b/site/content/docs/4.5/components/carousel.md similarity index 76% rename from site/docs/4.5/components/carousel.md rename to site/content/docs/4.5/components/carousel.md index 35bdd198f1..31692b0644 100644 --- a/site/docs/4.5/components/carousel.md +++ b/site/content/docs/4.5/components/carousel.md @@ -12,11 +12,13 @@ The carousel is a slideshow for cycling through a series of content, built with In browsers where the [Page Visibility API](https://www.w3.org/TR/page-visibility/) is supported, the carousel will avoid sliding when the webpage is not visible to the user (such as when the browser tab is inactive, the browser window is minimized, etc.). -{% include callout-info-prefersreducedmotion.md %} +{{< callout info >}} +{{< partial "callout-info-prefersreducedmotion.md" >}} +{{< /callout >}} Please be aware that nested carousels are not supported, and carousels are generally not compliant with accessibility standards. -Lastly, if you're building our JavaScript from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util). +Lastly, if you're building our JavaScript from source, it [requires `util.js`]({{< docsref "/getting-started/javascript#util" >}}). ## Example @@ -28,38 +30,37 @@ Carousels don't automatically normalize slide dimensions. As such, you may need Here's a carousel with slides only. Note the presence of the `.d-block` and `.w-100` on carousel images to prevent browser default image alignment. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### With controls Adding in the previous and next controls: -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### With indicators You can also add the indicators to the carousel, alongside the controls, too. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### With captions -Add captions to your slides easily with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/display/). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`. +Add captions to your slides easily with the `.carousel-caption` element within any `.carousel-item`. They can be easily hidden on smaller viewports, as shown below, with optional [display utilities]({{< docsref "/utilities/display" >}}). We hide them initially with `.d-none` and bring them back on medium-sized devices with `.d-md-block`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Accordion example -Using the [card]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/card/) component, you can extend the default collapse behavior to create an accordion. To properly achieve the accordion style, be sure to use `.accordion` as a wrapper. +Using the [card]({{< docsref "/components/card" >}}) component, you can extend the default collapse behavior to create an accordion. To properly achieve the accordion style, be sure to use `.accordion` as a wrapper. -{% capture example %} +{{< example >}}
    @@ -119,8 +119,7 @@ Using the [card]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/card
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Accessibility @@ -150,9 +149,9 @@ To add accordion-like group management to a collapsible area, add the data attri Enable manually with: -{% highlight js %} +```js $('.collapse').collapse() -{% endhighlight %} +``` ### Options @@ -185,17 +184,19 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap ### Methods -{% include callout-danger-async-methods.md %} +{{< callout danger >}} +{{< partial "callout-danger-async-methods.md" >}} +{{< /callout >}} #### `.collapse(options)` Activates your content as a collapsible element. Accepts an optional options `object`. -{% highlight js %} +```js $('#myCollapsible').collapse({ toggle: false }) -{% endhighlight %} +``` #### `.collapse('toggle')` @@ -244,8 +245,8 @@ Bootstrap's collapse class exposes a few events for hooking into collapse functi -{% highlight js %} +```js $('#myCollapsible').on('hidden.bs.collapse', function () { // do something... }) -{% endhighlight %} +``` diff --git a/site/docs/4.5/components/dropdowns.md b/site/content/docs/4.5/components/dropdowns.md similarity index 93% rename from site/docs/4.5/components/dropdowns.md rename to site/content/docs/4.5/components/dropdowns.md index 42bd699a46..6f8ba5794b 100644 --- a/site/docs/4.5/components/dropdowns.md +++ b/site/content/docs/4.5/components/dropdowns.md @@ -10,9 +10,9 @@ toc: true Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision](https://markdotto.com/2012/02/27/bootstrap-explained-dropdowns/). -Dropdowns are built on a third party library, [Popper.js](https://popper.js.org/), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]({{ site.cdn.popper }}) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js. Popper.js isn't used to position dropdowns in navbars though as dynamic positioning isn't required. +Dropdowns are built on a third party library, [Popper.js](https://popper.js.org/), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]({{< param "cdn.popper" >}}) before Bootstrap's JavaScript or use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which contains Popper.js. Popper.js isn't used to position dropdowns in navbars though as dynamic positioning isn't required. -If you're building our JavaScript from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util). +If you're building our JavaScript from source, it [requires `util.js`]({{< docsref "/getting-started/javascript#util" >}}). ## Accessibility @@ -30,7 +30,7 @@ Wrap the dropdown's toggle (your button or link) and the dropdown menu within `. Any single `.btn` can be turned into a dropdown toggle with some markup changes. Here's how you can put them to work with either `
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} And with `` elements: -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} The best part is you can do this with any button variant, too: @@ -126,7 +124,7 @@ The best part is you can do this with any button variant, too:
    -{% highlight html %} +```html
    -{% endhighlight %} +``` ### Split button @@ -229,7 +227,7 @@ We use this extra class to reduce the horizontal `padding` on either side of the
    -{% highlight html %} +```html
    @@ -244,7 +242,7 @@ We use this extra class to reduce the horizontal `padding` on either side of the Separated link
    -{% endhighlight %} +``` ## Sizing @@ -278,7 +276,7 @@ Button dropdowns work with buttons of all sizes, including default and split dro
    -{% highlight html %} +```html
    -{% endhighlight %} +```
    @@ -329,7 +327,7 @@ Button dropdowns work with buttons of all sizes, including default and split dro
    -{% highlight html %} +```html
    -{% endhighlight %} +``` ## Directions @@ -371,7 +369,6 @@ Trigger dropdown menus above elements by adding `.dropup` to the parent element. Separated link
    -
    -{% highlight html %} +```html
    -{% endhighlight %} +``` ### Dropright @@ -431,7 +428,6 @@ Trigger dropdown menus at the right of the elements by adding `.dropright` to th Separated link
    -
    -{% highlight html %} +```html
    -{% endhighlight %} +``` ### Dropleft @@ -491,7 +487,6 @@ Trigger dropdown menus at the left of the elements by adding `.dropleft` to the Separated link
    -
    -{% highlight html %} +```html
    -{% endhighlight %} +``` ## Menu items Historically dropdown menu contents *had* to be links, but that's no longer the case with v4. Now you can optionally use ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} You can also create non-interactive dropdown items with `.dropdown-item-text`. Feel free to style further with custom CSS or text utilities. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Active Add `.active` to items in the dropdown to **style them as active**. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Disabled Add `.disabled` to items in the dropdown to **style them as disabled**. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Menu alignment By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add `.dropdown-menu-right` to a `.dropdown-menu` to right align the dropdown menu. -{% capture callout %} +{{< callout info >}} **Heads up!** Dropdowns are positioned thanks to Popper.js (except when they are contained in a navbar). -{% endcapture %} -{% include callout.html content=callout type="info" %} +{{< /callout >}} -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Responsive alignment @@ -623,7 +612,7 @@ If you want to use responsive alignment, disable dynamic positioning by adding t To align **right** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu{-sm|-md|-lg|-xl}-right`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} To align **left** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu-right` and `.dropdown-menu{-sm|-md|-lg|-xl}-left`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} Note that you don't need to add a `data-display="static"` attribute to dropdown buttons in navbars, since Popper.js isn't used in navbars. @@ -661,20 +648,19 @@ Note that you don't need to add a `data-display="static"` attribute to dropdown Add a header to label sections of actions in any dropdown menu. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Dividers Separate groups of related menu items with a divider. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Text -Place any freeform text within a dropdown menu with text and use [spacing utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/). Note that you'll likely need additional sizing styles to constrain the menu width. +Place any freeform text within a dropdown menu with text and use [spacing utilities]({{< docsref "/utilities/spacing" >}}). Note that you'll likely need additional sizing styles to constrain the menu width. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Forms -Put a form within a dropdown menu, or make it into a dropdown menu, and use [margin or padding utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/) to give it the negative space you require. +Put a form within a dropdown menu, or make it into a dropdown menu, and use [margin or padding utilities]({{< docsref "/utilities/spacing" >}}) to give it the negative space you require. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Usage Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent list item. The `data-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it. -{% capture callout %} +{{< callout info >}} On touch-enabled devices, opening a dropdown adds empty (`$.noop`) `mouseover` handlers to the immediate children of the `` element. This admittedly ugly hack is necessary to work around a [quirk in iOS' event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed. -{% endcapture %} -{% include callout.html content=callout type="info" %} +{{< /callout >}} ### Via data attributes Add `data-toggle="dropdown"` to a link or button to toggle a dropdown. -{% highlight html %} +```html -{% endhighlight %} +``` ### Via JavaScript Call the dropdowns via JavaScript: -{% highlight js %} +```js $('.dropdown-toggle').dropdown() -{% endhighlight %} +``` -{% capture callout %} +{{< callout info >}} ##### `data-toggle="dropdown"` still required Regardless of whether you call your dropdown via JavaScript or instead use the data-api, `data-toggle="dropdown"` is always required to be present on the dropdown's trigger element. -{% endcapture %} -{% include callout.html content=callout type="info" %} +{{< /callout >}} ### Options @@ -909,8 +888,8 @@ All dropdown events are fired at the `.dropdown-menu`'s parent element and have | `hide.bs.dropdown` | This event is fired immediately when the hide instance method has been called. | | `hidden.bs.dropdown`| This event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete). | -{% highlight js %} +```js $('#myDropdown').on('show.bs.dropdown', function () { // do something... }) -{% endhighlight %} +``` diff --git a/site/docs/4.5/components/forms.md b/site/content/docs/4.5/components/forms.md similarity index 89% rename from site/docs/4.5/components/forms.md rename to site/content/docs/4.5/components/forms.md index 2d75f738f5..b44ce67adc 100644 --- a/site/docs/4.5/components/forms.md +++ b/site/content/docs/4.5/components/forms.md @@ -8,13 +8,13 @@ toc: true ## Overview -Bootstrap's form controls expand on [our Rebooted form styles]({{ site.baseurl }}/docs/{{ site.docs_version }}/content/reboot/#forms) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices. +Bootstrap's form controls expand on [our Rebooted form styles]({{< docsref "/content/reboot#forms" >}}) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices. Be sure to use an appropriate `type` attribute on all inputs (e.g., `email` for email address or `number` for numerical information) to take advantage of newer input controls like email verification, number selection, and more. Here's a quick example to demonstrate Bootstrap's form styles. Keep reading for documentation on required classes, form layout, and more. -{% capture example %} +{{< example >}}
    @@ -31,8 +31,7 @@ Here's a quick example to demonstrate Bootstrap's form styles. Keep reading for
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Form controls @@ -40,7 +39,7 @@ Textual form controls—like ``s, ` -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} For file inputs, swap the `.form-control` for `.form-control-file`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Sizing Set heights using classes like `.form-control-lg` and `.form-control-sm`. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}} @@ -107,23 +103,21 @@ Set heights using classes like `.form-control-lg` and `.form-control-sm`. -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Readonly Add the `readonly` boolean attribute on an input to prevent modification of the input's value. Read-only inputs appear lighter (just like disabled inputs), but retain the standard cursor. -{% capture example %} +{{< example >}} -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Readonly plain text If you want to have `` elements in your form styled as plain text, use the `.form-control-plaintext` class to remove the default form field styling and preserve the correct margin and padding. -{% capture example %} +{{< example >}}
    @@ -138,10 +132,9 @@ If you want to have `` elements in your form styled as plain tex
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    @@ -153,22 +146,20 @@ If you want to have `` elements in your form styled as plain tex
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Range Inputs Set horizontally scrollable range inputs using `.form-control-range`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Checkboxes and radios @@ -182,7 +173,7 @@ Checkboxes and radio buttons support HTML-based form validation and provide conc By default, any number of checkboxes and radios that are immediate sibling will be vertically stacked and appropriately spaced with `.form-check`. -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Inline Group checkboxes or radios on the same horizontal row by adding `.form-check-inline` to any `.form-check`. -{% capture example %} +{{< example >}}
    @@ -237,10 +226,9 @@ Group checkboxes or radios on the same horizontal row by adding `.form-check-inl
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} -{% capture example %} +{{< example >}}
    @@ -253,22 +241,20 @@ Group checkboxes or radios on the same horizontal row by adding `.form-check-inl
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Without labels Add `.position-static` to inputs within `.form-check` that don't have any label text. Remember to still provide some form of accessible name for assistive technologies (for instance, using `aria-label`). -{% capture example %} +{{< example >}}
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ## Layout @@ -278,7 +264,7 @@ Since Bootstrap applies `display: block` and `width: 100%` to almost all our for The `.form-group` class is the easiest way to add some structure to forms. It provides a flexible class that encourages proper grouping of labels, controls, optional help text, and form validation messaging. By default it only applies `margin-bottom`, but it picks up additional styles in `.form-inline` as needed. Use it with `
    `s, `
    `s, or nearly any other element. -{% capture example %} +{{< example >}}
    @@ -289,14 +275,13 @@ The `.form-group` class is the easiest way to add some structure to forms. It pr
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Form grid More complex forms can be built using our grid classes. Use these for form layouts that require multiple columns, varied widths, and additional alignment options. -{% capture example %} +{{< example >}}
    @@ -307,14 +292,13 @@ More complex forms can be built using our grid classes. Use these for form layou
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} #### Form row You may also swap `.row` for `.form-row`, a variation of our standard grid row that overrides the default column gutters for tighter and more compact layouts. -{% capture example %} +{{< example >}}
    @@ -325,12 +309,11 @@ You may also swap `.row` for `.form-row`, a variation of our standard grid row t
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} More complex layouts can also be created with the grid system. -{% capture example %} +{{< example >}}
    @@ -377,8 +360,7 @@ More complex layouts can also be created with the grid system.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} #### Horizontal form @@ -386,7 +368,7 @@ Create horizontal forms with the grid by adding the `.row` class to form groups At times, you maybe need to use margin or padding utilities to create that perfect alignment you need. For example, we've removed the `padding-top` on our stacked radio inputs label to better align the text baseline. -{% capture example %} +{{< example >}}
    @@ -439,14 +421,13 @@ At times, you maybe need to use margin or padding utilities to create that perfe
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ##### Horizontal form label sizing Be sure to use `.col-form-label-sm` or `.col-form-label-lg` to your `
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} #### Column sizing As shown in the previous examples, our grid system allows you to place any number of `.col`s within a `.row` or `.form-row`. They'll split the available width equally between them. You may also pick a subset of your columns to take up more or less space, while the remaining `.col`s equally split the rest, with specific column classes like `.col-7`. -{% capture example %} +{{< example >}}
    @@ -488,14 +468,13 @@ As shown in the previous examples, our grid system allows you to place any numbe
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} #### Auto-sizing The example below uses a flexbox utility to vertically center the contents and changes `.col` to `.col-auto` so that your columns only take up as much space as needed. Put another way, the column sizes itself based on the contents. -{% capture example %} +{{< example >}}
    @@ -524,12 +503,11 @@ The example below uses a flexbox utility to vertically center the contents and c
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} You can then remix that once again with size-specific column classes. -{% capture example %} +{{< example >}}
    @@ -558,12 +536,11 @@ You can then remix that once again with size-specific column classes.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} And of course [custom form controls](#custom-forms) are supported. -{% capture example %} +{{< example >}}
    @@ -586,20 +563,19 @@ And of course [custom form controls](#custom-forms) are supported.
    -{% endcapture %} -{% include example.html content=example %} +{{< /example >}} ### Inline forms Use the `.form-inline` class to display a series of labels, form controls, and buttons on a single horizontal row. Form controls within inline forms vary slightly from their default states. -- Controls are `display: flex`, collapsing any HTML white space and allowing you to provide alignment control with [spacing]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/) and [flexbox]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/flex/) utilities. +- Controls are `display: flex`, collapsing any HTML white space and allowing you to provide alignment control with [spacing]({{< docsref "/utilities/spacing" >}}) and [flexbox]({{< docsref "/utilities/flex" >}}) utilities. - Controls and input groups receive `width: auto` to override the Bootstrap default `width: 100%`. - Controls **only appear inline in viewports that are at least 576px wide** to account for narrow viewports on mobile devices. -You may need to manually address the width and alignment of individual form controls with [spacing utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/) (as shown below). Lastly, be sure to always include a `