Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
XhmikosR
43d6265203
Update buttons.md 2021-01-13 08:44:51 +02:00
Mark Otto
5e5d61c1ae add sass docs for forms and content 2021-01-13 08:38:28 +02:00
Mark Otto
31214ca03c Add Sass sections to component pages 2021-01-13 08:38:25 +02:00
Mark Otto
f21b44d406 WIP: Mention variables, mixins, and loops in docs 2021-01-13 08:38:06 +02:00
44 changed files with 538 additions and 29 deletions

View file

@ -55,6 +55,7 @@
// Alternate buttons
//
// scss-docs-start btn-variant-loops
@each $color, $value in $theme-colors {
.btn-#{$color} {
@include button-variant($value, $value);
@ -66,6 +67,7 @@
@include button-outline-variant($value);
}
}
// scss-docs-end btn-variant-loops
//

View file

@ -202,6 +202,7 @@
.modal-xl { max-width: $modal-xl; }
}
// scss-docs-start modal-fullscreen-loop
@each $breakpoint in map-keys($grid-breakpoints) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
$postfix: if($infix != "", $infix + "-down", "");
@ -233,3 +234,4 @@
}
}
}
// scss-docs-end modal-fullscreen-loop

View file

@ -148,6 +148,7 @@
background-size: 100%;
}
// scss-docs-start navbar-expand-loop
// Generate series of `.navbar-expand-*` responsive classes for configuring
// where your navbar collapses.
.navbar-expand {
@ -185,6 +186,7 @@
}
}
}
// scss-docs-end navbar-expand-loop
// Navbar themes

View file

@ -1,9 +1,12 @@
// Disable animation if transitions are disabled
// scss-docs-start progress-keyframes
@if $enable-transitions {
@keyframes progress-bar-stripes {
0% { background-position-x: $progress-height; }
}
}
// scss-docs-end progress-keyframes
.progress {
display: flex;

View file

@ -2,9 +2,11 @@
// Rotating border
//
// scss-docs-start spinner-border-keyframes
@keyframes spinner-border {
to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
}
// scss-docs-end spinner-border-keyframes
.spinner-border {
display: inline-block;
@ -28,6 +30,7 @@
// Growing circle
//
// scss-docs-start spinner-grow-keyframes
@keyframes spinner-grow {
0% {
transform: scale(0);
@ -37,6 +40,7 @@
transform: none;
}
}
// scss-docs-end spinner-grow-keyframes
.spinner-grow {
display: inline-block;

View file

@ -344,6 +344,7 @@ $container-padding-x: $grid-gutter-width / 2 !default;
//
// Define common padding and border radius sizes and more.
// scss-docs-start border-variables
$border-width: 1px !default;
$border-widths: (
0: 0,
@ -355,11 +356,14 @@ $border-widths: (
) !default;
$border-color: $gray-300 !default;
// scss-docs-end border-variables
// scss-docs-start border-radius-variables
$border-radius: .25rem !default;
$border-radius-sm: .2rem !default;
$border-radius-lg: .3rem !default;
$border-radius-pill: 50rem !default;
// scss-docs-end border-radius-variables
$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
@ -436,12 +440,14 @@ $font-sizes: (
) !default;
// scss-docs-end font-sizes
// scss-docs-start headings-variables
$headings-margin-bottom: $spacer / 2 !default;
$headings-font-family: null !default;
$headings-font-style: null !default;
$headings-font-weight: 500 !default;
$headings-line-height: 1.2 !default;
$headings-color: null !default;
// scss-docs-end headings-variables
// scss-docs-start display-headings
$display-font-sizes: (
@ -457,6 +463,7 @@ $display-font-weight: 300 !default;
$display-line-height: $headings-line-height !default;
// scss-docs-end display-headings
// scss-docs-start type-variables
$lead-font-size: $font-size-base * 1.25 !default;
$lead-font-weight: 300 !default;
@ -491,6 +498,7 @@ $nested-kbd-font-weight: $font-weight-bold !default;
$list-inline-padding: .5rem !default;
$mark-bg: #fcf8e3 !default;
// scss-docs-end type-variables
// Tables
@ -533,7 +541,9 @@ $table-group-separator-color: currentColor !default;
$table-caption-color: $text-muted !default;
$table-bg-scale: -80% !default;
// scss-docs-end table-variables
// scss-docs-start table-loop
$table-variants: (
"primary": shift-color($primary, $table-bg-scale),
"secondary": shift-color($secondary, $table-bg-scale),
@ -544,13 +554,14 @@ $table-variants: (
"light": $light,
"dark": $dark,
) !default;
// scss-docs-end table-variables
// scss-docs-end table-loop
// Buttons + Forms
//
// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
// scss-docs-start input-btn-variables
$input-btn-padding-y: .375rem !default;
$input-btn-padding-x: .75rem !default;
$input-btn-font-family: null !default;
@ -571,12 +582,14 @@ $input-btn-padding-x-lg: 1rem !default;
$input-btn-font-size-lg: $font-size-lg !default;
$input-btn-border-width: $border-width !default;
// scss-docs-end input-btn-variables
// Buttons
//
// For each of Bootstrap's buttons, define text, background, and border color.
// scss-docs-start btn-variables
$btn-padding-y: $input-btn-padding-y !default;
$btn-padding-x: $input-btn-padding-x !default;
$btn-font-family: $input-btn-font-family !default;
@ -620,22 +633,28 @@ $btn-active-bg-shade-amount: 20% !default;
$btn-active-bg-tint-amount: 20% !default;
$btn-active-border-shade-amount: 25% !default;
$btn-active-border-tint-amount: 10% !default;
// scss-docs-end btn-variables
// Forms
// scss-docs-start form-text-variables
$form-text-margin-top: .25rem !default;
$form-text-font-size: $small-font-size !default;
$form-text-font-style: null !default;
$form-text-font-weight: null !default;
$form-text-color: $text-muted !default;
// scss-docs-end form-text-variables
// scss-docs-start form-label-variables
$form-label-margin-bottom: .5rem !default;
$form-label-font-size: null !default;
$form-label-font-style: null !default;
$form-label-font-weight: null !default;
$form-label-color: null !default;
// scss-docs-end form-label-variables
// scss-docs-start form-input-variables
$input-padding-y: $input-btn-padding-y !default;
$input-padding-x: $input-btn-padding-x !default;
$input-font-family: $input-btn-font-family !default;
@ -684,8 +703,9 @@ $input-height-sm: add($input-line-height * 1em, add($input
$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
// scss-docs-end form-input-variables
// scss-docs-start form-check-variables
$form-check-input-width: 1em !default;
$form-check-min-height: $font-size-base * $line-height-base !default;
$form-check-padding-start: $form-check-input-width + .5em !default;
@ -718,6 +738,10 @@ $form-check-input-disabled-opacity: .5 !default;
$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;
$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;
$form-check-inline-margin-end: 1rem !default;
// scss-docs-end form-check-variables
// scss-docs-start form-switch-variables
$form-switch-color: rgba(0, 0, 0, .25) !default;
$form-switch-width: 2em !default;
$form-switch-padding-start: $form-switch-width + .5em !default;
@ -730,16 +754,18 @@ $form-switch-focus-bg-image: url("data:image/svg+xml,<svg xmlns='http://www
$form-switch-checked-color: $component-active-color !default;
$form-switch-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$form-switch-checked-color}'/></svg>") !default;
$form-switch-checked-bg-position: right center !default;
// scss-docs-end form-switch-variables
$form-check-inline-margin-end: 1rem !default;
// scss-docs-start input-group-variables
$input-group-addon-padding-y: $input-padding-y !default;
$input-group-addon-padding-x: $input-padding-x !default;
$input-group-addon-font-weight: $input-font-weight !default;
$input-group-addon-color: $input-color !default;
$input-group-addon-bg: $gray-200 !default;
$input-group-addon-border-color: $input-border-color !default;
// scss-docs-end input-group-variables
// scss-docs-start form-select-variables
$form-select-padding-y: $input-padding-y !default;
$form-select-padding-x: $input-padding-x !default;
$form-select-font-family: $input-font-family !default;
@ -777,7 +803,9 @@ $form-select-font-size-sm: $input-font-size-sm !default;
$form-select-padding-y-lg: $input-padding-y-lg !default;
$form-select-padding-x-lg: $input-padding-x-lg !default;
$form-select-font-size-lg: $input-font-size-lg !default;
// scss-docs-end form-select-variables
// scss-docs-start form-range-variables
$form-range-track-width: 100% !default;
$form-range-track-height: .5rem !default;
$form-range-track-cursor: pointer !default;
@ -796,11 +824,15 @@ $form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For f
$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;
$form-range-thumb-disabled-bg: $gray-500 !default;
$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
// scss-docs-end form-range-variables
// scss-docs-start form-file-variables
$form-file-button-color: $input-color !default;
$form-file-button-bg: $input-group-addon-bg !default;
$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;
// scss-docs-end form-file-variables
// scss-docs-start form-floating-variables
$form-floating-height: add(3.5rem, $input-height-border) !default;
$form-floating-padding-x: $input-padding-x !default;
$form-floating-padding-y: 1rem !default;
@ -809,9 +841,11 @@ $form-floating-input-padding-b: .625rem !default;
$form-floating-label-opacity: .65 !default;
$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;
$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;
// scss-docs-end form-floating-variables
// Form validation
// scss-docs-start form-feedback-variables
$form-feedback-margin-top: $form-text-margin-top !default;
$form-feedback-font-size: $form-text-font-size !default;
$form-feedback-font-style: $form-text-font-style !default;
@ -822,6 +856,7 @@ $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
$form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
$form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
// scss-docs-end form-feedback-variables
// scss-docs-start form-validation-states
$form-validation-states: (
@ -854,6 +889,7 @@ $zindex-tooltip: 1070 !default;
// Navs
// scss-docs-start nav-variables
$nav-link-padding-y: .5rem !default;
$nav-link-padding-x: 1rem !default;
$nav-link-font-size: null !default;
@ -874,10 +910,12 @@ $nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg
$nav-pills-border-radius: $border-radius !default;
$nav-pills-link-active-color: $component-active-color !default;
$nav-pills-link-active-bg: $component-active-bg !default;
// scss-docs-end nav-variables
// Navbar
// scss-docs-start navbar-variables
$navbar-padding-y: $spacer / 2 !default;
$navbar-padding-x: null !default;
@ -896,7 +934,9 @@ $navbar-toggler-font-size: $font-size-lg !default;
$navbar-toggler-border-radius: $btn-border-radius !default;
$navbar-toggler-focus-width: $btn-focus-width !default;
$navbar-toggler-transition: box-shadow .15s ease-in-out !default;
// scss-docs-end navbar-variables
// scss-docs-start navbar-theme-variables
$navbar-dark-color: rgba($white, .55) !default;
$navbar-dark-hover-color: rgba($white, .75) !default;
$navbar-dark-active-color: $white !default;
@ -915,12 +955,14 @@ $navbar-light-brand-color: $navbar-light-active-color !default;
$navbar-light-brand-hover-color: $navbar-light-active-color !default;
$navbar-dark-brand-color: $navbar-dark-active-color !default;
$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
// scss-docs-end navbar-theme-variables
// Dropdowns
//
// Dropdown menu container and contents.
// scss-docs-start dropdown-variables
$dropdown-min-width: 10rem !default;
$dropdown-padding-x: 0 !default;
$dropdown-padding-y: .5rem !default;
@ -950,7 +992,9 @@ $dropdown-item-padding-x: $spacer !default;
$dropdown-header-color: $gray-600 !default;
$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
// scss-docs-end dropdown-variables
// scss-docs-start dropdown-dark-variables
$dropdown-dark-color: $gray-300 !default;
$dropdown-dark-bg: $gray-800 !default;
$dropdown-dark-border-color: $dropdown-border-color !default;
@ -963,10 +1007,12 @@ $dropdown-dark-link-active-color: $dropdown-link-active-color !default;
$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;
$dropdown-dark-link-disabled-color: $gray-500 !default;
$dropdown-dark-header-color: $gray-500 !default;
// scss-docs-end dropdown-dark-variables
// Pagination
// scss-docs-start pagination-variables
$pagination-padding-y: .375rem !default;
$pagination-padding-x: .75rem !default;
$pagination-padding-y-sm: .25rem !default;
@ -1002,9 +1048,12 @@ $pagination-transition: color .15s ease-in-out, background-color .1
$pagination-border-radius-sm: $border-radius-sm !default;
$pagination-border-radius-lg: $border-radius-lg !default;
// scss-docs-end pagination-variables
// Cards
// scss-docs-start card-variables
$card-spacer-y: $spacer !default;
$card-spacer-x: $spacer !default;
$card-title-spacer-y: $spacer / 2 !default;
@ -1019,12 +1068,13 @@ $card-cap-color: null !default;
$card-height: null !default;
$card-color: null !default;
$card-bg: $white !default;
$card-img-overlay-padding: $spacer !default;
$card-group-margin: $grid-gutter-width / 2 !default;
// scss-docs-end card-variables
// Accordion
// scss-docs-start accordion-variables
$accordion-padding-y: 1rem !default;
$accordion-padding-x: 1.25rem !default;
$accordion-color: $body-color !default;
@ -1055,9 +1105,11 @@ $accordion-icon-transform: rotate(180deg) !default;
$accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
$accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
// scss-docs-end accordion-variables
// Tooltips
// scss-docs-start tooltip-variables
$tooltip-font-size: $font-size-sm !default;
$tooltip-max-width: 200px !default;
$tooltip-color: $white !default;
@ -1071,18 +1123,22 @@ $tooltip-margin: 0 !default;
$tooltip-arrow-width: .8rem !default;
$tooltip-arrow-height: .4rem !default;
$tooltip-arrow-color: $tooltip-bg !default;
// scss-docs-end tooltip-variables
// Form tooltips must come after regular tooltips
// scss-docs-start tooltip-feedback-variables
$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;
$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;
$form-feedback-tooltip-font-size: $tooltip-font-size !default;
$form-feedback-tooltip-line-height: null !default;
$form-feedback-tooltip-opacity: $tooltip-opacity !default;
$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
// scss-docs-start tooltip-feedback-variables
// Popovers
// scss-docs-start popover-variables
$popover-font-size: $font-size-sm !default;
$popover-bg: $white !default;
$popover-max-width: 276px !default;
@ -1106,10 +1162,12 @@ $popover-arrow-height: .5rem !default;
$popover-arrow-color: $popover-bg !default;
$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
// scss-docs-end popover-variables
// Toasts
// scss-docs-start toast-variables
$toast-max-width: 350px !default;
$toast-padding-x: .75rem !default;
$toast-padding-y: .5rem !default;
@ -1125,24 +1183,26 @@ $toast-spacing: $container-padding-x !default;
$toast-header-color: $gray-600 !default;
$toast-header-background-color: rgba($white, .85) !default;
$toast-header-border-color: rgba(0, 0, 0, .05) !default;
// scss-docs-end toast-variables
// Badges
// scss-docs-start badge-variables
$badge-font-size: .75em !default;
$badge-font-weight: $font-weight-bold !default;
$badge-color: $white !default;
$badge-padding-y: .35em !default;
$badge-padding-x: .65em !default;
$badge-border-radius: $border-radius !default;
// scss-docs-end badge-variables
// Modals
// Padding applied to the modal body
// scss-docs-start modal-variables
$modal-inner-padding: $spacer !default;
// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding
$modal-footer-margin-between: .5rem !default;
$modal-dialog-margin: .5rem !default;
@ -1178,28 +1238,30 @@ $modal-fade-transform: translate(0, -50px) !default;
$modal-show-transform: none !default;
$modal-transition: transform .3s ease-out !default;
$modal-scale-transform: scale(1.02) !default;
// scss-docs-end modal-variables
// Alerts
//
// Define alert colors, border radius, and padding.
// scss-docs-start alert-variables
$alert-padding-y: $spacer !default;
$alert-padding-x: $spacer !default;
$alert-margin-bottom: 1rem !default;
$alert-border-radius: $border-radius !default;
$alert-link-font-weight: $font-weight-bold !default;
$alert-border-width: $border-width !default;
$alert-bg-scale: -80% !default;
$alert-border-scale: -70% !default;
$alert-color-scale: 40% !default;
$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side
// scss-docs-end alert-variables
// Progress bars
// scss-docs-start progress-variables
$progress-height: 1rem !default;
$progress-font-size: $font-size-base * .75 !default;
$progress-bg: $gray-200 !default;
@ -1209,10 +1271,12 @@ $progress-bar-color: $white !default;
$progress-bar-bg: $primary !default;
$progress-bar-animation-timing: 1s linear infinite !default;
$progress-bar-transition: width .6s ease !default;
// scss-docs-end progress-variables
// List group
// scss-docs-start list-group-variables
$list-group-color: null !default;
$list-group-bg: $white !default;
$list-group-border-color: rgba($black, .125) !default;
@ -1237,26 +1301,32 @@ $list-group-action-hover-color: $list-group-action-color !default;
$list-group-action-active-color: $body-color !default;
$list-group-action-active-bg: $gray-200 !default;
// scss-docs-end list-group-variables
// Image thumbnails
// scss-docs-start thumbnail-variables
$thumbnail-padding: .25rem !default;
$thumbnail-bg: $body-bg !default;
$thumbnail-border-width: $border-width !default;
$thumbnail-border-color: $gray-300 !default;
$thumbnail-border-radius: $border-radius !default;
$thumbnail-box-shadow: $box-shadow-sm !default;
// scss-docs-end thumbnail-variables
// Figures
// scss-docs-start figure-variables
$figure-caption-font-size: $small-font-size !default;
$figure-caption-color: $gray-600 !default;
// scss-docs-end figure-variables
// Breadcrumbs
// scss-docs-start breadcrumb-variables
$breadcrumb-font-size: null !default;
$breadcrumb-padding-y: 0 !default;
$breadcrumb-padding-x: 0 !default;
@ -1268,9 +1338,11 @@ $breadcrumb-active-color: $gray-600 !default;
$breadcrumb-divider: quote("/") !default;
$breadcrumb-divider-flipped: $breadcrumb-divider !default;
$breadcrumb-border-radius: null !default;
// scss-docs-end breadcrumb-variables
// Carousel
// scss-docs-start carousel-variables
$carousel-control-color: $white !default;
$carousel-control-width: 15% !default;
$carousel-control-opacity: .5 !default;
@ -1302,10 +1374,12 @@ $carousel-transition: transform $carousel-transition-duration eas
$carousel-dark-indicator-active-bg: $black !default;
$carousel-dark-caption-color: $black !default;
$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
// scss-docs-end carousel-variables
// Spinners
// scss-docs-start spinner-variables
$spinner-width: 2rem !default;
$spinner-height: $spinner-width !default;
$spinner-border-width: .25em !default;
@ -1314,10 +1388,12 @@ $spinner-animation-speed: .75s !default;
$spinner-width-sm: 1rem !default;
$spinner-height-sm: $spinner-width-sm !default;
$spinner-border-width-sm: .2em !default;
// scss-docs-end spinner-variables
// Close
// scss-docs-start close-variables
$btn-close-width: 1em !default;
$btn-close-height: $btn-close-width !default;
$btn-close-padding-x: .25em !default;
@ -1330,6 +1406,8 @@ $btn-close-hover-opacity: .75 !default;
$btn-close-focus-opacity: 1 !default;
$btn-close-disabled-opacity: .25 !default;
$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
// scss-docs-end close-variables
// Code

View file

@ -1,3 +1,4 @@
// scss-docs-start alert-variant-mixin
@mixin alert-variant($background, $border, $color) {
color: $color;
@include gradient-bg($background);
@ -7,3 +8,4 @@
color: shade-color($color, 20%);
}
}
// scss-docs-end alert-variant-mixin

View file

@ -14,6 +14,7 @@
@return $return;
}
// scss-docs-start border-radius-mixins
@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
@if $enable-rounded {
border-radius: valid-radius($radius);
@ -74,3 +75,4 @@
border-bottom-left-radius: valid-radius($radius);
}
}
// scss-docs-end border-radius-mixins

View file

@ -3,6 +3,7 @@
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
// scss-docs-start btn-variant-mixin
@mixin button-variant(
$background,
$border,
@ -71,7 +72,9 @@
border-color: $disabled-border;
}
}
// scss-docs-end btn-variant-mixin
// scss-docs-start btn-outline-variant-mixin
@mixin button-outline-variant(
$color,
$color-hover: color-contrast($color),
@ -118,11 +121,13 @@
background-color: transparent;
}
}
// scss-docs-end btn-outline-variant-mixin
// Button sizes
// scss-docs-start btn-size-mixin
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
padding: $padding-y $padding-x;
@include font-size($font-size);
// Manually declare to provide an override to the browser default
@include border-radius($border-radius, 0);
}
// scss-docs-end btn-size-mixin

View file

@ -1,5 +1,7 @@
// This mixin uses an `if()` technique to be compatible with Dart Sass
// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
// scss-docs-start form-validation-mixins
@mixin form-validation-state-selector($state) {
@if ($state == "valid" or $state == "invalid") {
.was-validated #{if(&, "&", "")}:#{$state},
@ -122,3 +124,4 @@
}
}
}
// scss-docs-end form-validation-mixins

View file

@ -1,5 +1,6 @@
// List Groups
// scss-docs-start list-group-mixin
@mixin list-group-item-variant($state, $background, $color) {
.list-group-item-#{$state} {
color: $color;
@ -20,3 +21,4 @@
}
}
}
// scss-docs-end list-group-mixin

View file

@ -1,5 +1,6 @@
// Pagination
// scss-docs-start pagination-mixin
@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
.page-link {
padding: $padding-y $padding-x;
@ -27,3 +28,4 @@
}
}
}
// scss-docs-end pagination-mixin

View file

@ -104,3 +104,13 @@ Add `.accordion-flush` to remove the default `background-color`, some borders, a
## Accessibility
Please read the [collapse accessibility section]({{< docsref "/components/collapse#accessibility" >}}) for more information.
## Sass
### Variables
{{< scss-docs name="accordion-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for accordions.

View file

@ -71,6 +71,24 @@ You can see this in action with a live demo:
When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the `closed.bs.alert` event and programmatically sets `focus()` to the most appropriate location in the page. If you're planning to move focus to a non-interactive element that normally does not receive focus, make sure to add `tabindex="-1"` to the element.
{{< /callout >}}
## Sass
### Variables
{{< scss-docs name="alert-variables" file="scss/_variables.scss" >}}
### Variant mixin
Used in combination with `$theme-colors` to create contextual modifier classes for our alerts.
{{< scss-docs name="alert-variant-mixin" file="scss/mixins/_alert.scss" >}}
### Loop
Loop that generates the modifier classes with the `alert-variant()` mixin.
{{< scss-docs name="alert-modifiers" file="scss/_alert.scss" >}}
## JavaScript behavior
### Triggers

View file

@ -63,3 +63,13 @@ Use the `.rounded-pill` utility class to make badges more rounded with a larger
<span class="badge rounded-pill bg-{{ .name }}{{ with .contrast_color }} text-{{ . }}{{ end }}">{{ .name | title }}</span>{{- end -}}
{{< /badge.inline >}}
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="badge-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for badges.

View file

@ -88,3 +88,13 @@ $breadcrumb-divider: none;
Since breadcrumbs provide a navigation, it's a good idea to add a meaningful label such as `aria-label="breadcrumb"` to describe the type of navigation provided in the `<nav>` element, as well as applying an `aria-current="page"` to the last item of the set to indicate that it represents the current page.
For more information, see the [WAI-ARIA Authoring Practices for the breadcrumb pattern](https://www.w3.org/TR/wai-aria-practices/#breadcrumb).
## Sass
### Variables
{{< scss-docs name="breadcrumb-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for breadcrumbs.

View file

@ -205,3 +205,25 @@ buttons.forEach(function (button) {
button.toggle()
})
```
## Sass
### Variables
{{< scss-docs name="btn-variables" file="scss/_variables.scss" >}}
### Mixins
There are three mixins for buttons: button and button outline variant mixins (both based on `$theme-colors`), plus a button size mixin.
{{< scss-docs name="btn-variant-mixin" file="scss/mixins/_buttons.scss" >}}
{{< scss-docs name="btn-outline-variant-mixin" file="scss/mixins/_buttons.scss" >}}
{{< scss-docs name="btn-size-mixin" file="scss/mixins/_buttons.scss" >}}
### Loops
Button variants (for regular and outline buttons) use their respective mixins with our `$theme-colors` map to generate the modifier classes in `scss/_buttons.scss`.
{{< scss-docs name="btn-variant-loops" file="scss/_buttons.scss" >}}

View file

@ -721,3 +721,13 @@ Just like with card groups, card footers will automatically line up.
### Masonry
In `v4` we used a CSS-only technique to mimic the behavior of [Masonry](https://masonry.desandro.com/)-like columns, but this technique came with lots of unpleasant [side effects](https://github.com/twbs/bootstrap/pull/28922). If you want to have this type of layout in `v5`, you can just make use of Masonry plugin. **Masonry is not included in Bootstrap**, but we've made a [demo example]({{< docsref "/examples/masonry" >}}) to help you get started.
## Sass
### Variables
{{< scss-docs name="card-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for cards.

View file

@ -450,3 +450,13 @@ myCarousel.addEventListener('slide.bs.carousel', function () {
### Change transition duration
The transition duration of `.carousel-item` can be changed with the `$carousel-transition-duration` Sass variable before compiling or custom styles if you're using the compiled CSS. If multiple transitions are applied, make sure the transform transition is defined first (eg. `transition: transform 2s ease, opacity .5s ease-out`).
## Sass
### Variables
{{< scss-docs name="carousel-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for carousels.

View file

@ -30,3 +30,13 @@ Change the default `.btn-close` to be white with the `.btn-close-white` class. T
<button type="button" class="btn-close btn-close-white" aria-label="Close"></button>
<button type="button" class="btn-close btn-close-white" disabled aria-label="Close"></button>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="close-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for close buttons.

View file

@ -1010,3 +1010,19 @@ myDropdown.addEventListener('show.bs.dropdown', function () {
// do something...
})
```
## Sass
### Variables
Variables for all dropdowns:
{{< scss-docs name="dropdown-variables" file="scss/_variables.scss" >}}
Variables for the [dark dropdown](#dark-dropdowns):
{{< scss-docs name="dropdown-dark-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for dropdowns.

View file

@ -470,3 +470,21 @@ tabEl.addEventListener('shown.bs.tab', function (event) {
event.relatedTarget // previous active tab
})
```
## Sass
### Variables
{{< scss-docs name="list-group-variables" file="scss/_variables.scss" >}}
### Mixins
Used in combination with `$theme-colors` to generate the [contextual variant classes](#contextual-classes) for `.list-group-item`s.
{{< scss-docs name="list-group-mixin" file="scss/mixins/_list-group.scss" >}}
### Loop
Loop that generates the modifier classes with the `list-group-item-variant()` mixin.
{{< scss-docs name="list-group-modifiers" file="scss/_list-group.scss" >}}

View file

@ -954,3 +954,19 @@ myModalEl.addEventListener('hidden.bs.modal', function (event) {
// do something...
})
```
## Sass
### Variables
{{< scss-docs name="modal-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for modals.
### Loop
[Responsive fullscreen modals](#fullscreen-modal) are generated via the `$breakpoints` map and a loop in `scss/_modal.scss`.
{{< scss-docs name="modal-fullscreen-loop" file="scss/_modal.scss" >}}

View file

@ -598,3 +598,21 @@ Sometimes you want to use the collapse plugin to trigger a container element for
{{< /example >}}
When you do this, we recommend including additional JavaScript to move the focus programmatically to the container when it is opened. Otherwise, keyboard users and users of assistive technologies will likely have a hard time finding the newly revealed content - particularly if the container that was opened comes *before* the toggler in the document's structure. We also recommend making sure that the toggler has the `aria-controls` attribute, pointing to the `id` of the content container. In theory, this allows assistive technology users to jump directly from the toggler to the container it controlsbut support for this is currently quite patchy.
## Sass
### Variables
{{< scss-docs name="navbar-variables" file="scss/_variables.scss" >}}
{{< scss-docs name="navbar-theme-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for navbars.
### Loop
[Responsive navbar expand/collapse classes](#responsive-behaviors) (e.g., `.navbar-expand-lg`) are combined with the `$breakpoints` map and generated through a loop in `scss/_navbar.scss`.
{{< scss-docs name="navbar-expand-loop" file="scss/_navbar.scss" >}}

View file

@ -663,3 +663,13 @@ tabEl.addEventListener('shown.bs.tab', function (event) {
event.relatedTarget // previous active tab
})
```
## Sass
### Variables
{{< scss-docs name="nav-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for navigations and tabs.

View file

@ -155,3 +155,13 @@ Change the alignment of pagination components with [flexbox utilities]({{< docsr
</ul>
</nav>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="pagination-variables" file="scss/_variables.scss" >}}
### Mixins
{{< scss-docs name="pagination-mixin" file="scss/mixins/_pagination.scss" >}}

View file

@ -401,3 +401,13 @@ myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
// do something...
})
```
## Sass
### Variables
{{< scss-docs name="popover-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for popovers.

View file

@ -137,3 +137,19 @@ The striped gradient can also be animated. Add `.progress-bar-animated` to `.pro
<div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div>
</div>
```
## Sass
### Variables
{{< scss-docs name="progress-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for progress bars.
### Keyframes
Used for creating the CSS animations for `.progress-bar-animated`. Included in the `scss/_progress-bar.scss` stylesheet.
{{< scss-docs name="progress-keyframes" file="scss/_progress.scss" >}}

View file

@ -171,6 +171,24 @@ Use spinners within buttons to indicate an action is currently processing or tak
</button>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="spinner-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for spinners.
### Keyframes
Used for creating the CSS animations for our spinners. Included in the `scss/_spinners.scss` stylesheet.
{{< scss-docs name="spinner-border-keyframes" file="scss/_spinners.scss" >}}
{{< scss-docs name="spinner-grow-keyframes" file="scss/_spinners.scss" >}}
[color]: {{< docsref "/utilities/colors" >}}
[display]: {{< docsref "/utilities/display" >}}

View file

@ -376,3 +376,13 @@ myToastEl.addEventListener('hidden.bs.toast', function () {
// do something...
})
```
## Sass
### Variables
{{< scss-docs name="toast-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for toasts.

View file

@ -429,3 +429,13 @@ myTooltipEl.addEventListener('hidden.bs.tooltip', function () {
tooltip.hide()
```
## Sass
### Variables
{{< scss-docs name="tooltip-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for tooltips.

View file

@ -24,3 +24,9 @@ Aligning the figure's caption is easy with our [text utilities]({{< docsref "/ut
<figcaption class="figure-caption text-end">A caption for the above image.</figcaption>
</figure>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="figure-variables" file="scss/_variables.scss" >}}

View file

@ -53,3 +53,11 @@ If you are using the `<picture>` element to specify multiple `<source>` elements
<img src="..." class="img-fluid img-thumbnail" alt="...">
</picture>
```
## Sass
### Variables
Variables are available for image thumbnails.
{{< scss-docs name="thumbnail-variables" file="scss/_variables.scss" >}}

View file

@ -775,9 +775,17 @@ Use `.table-responsive{-sm|-md|-lg|-xl|-xxl}` as needed to create responsive tab
{{< /tables.inline >}}
{{< /highlight >}}
## Customizing in Sass
## Sass
### Variables
{{< scss-docs name="table-variables" file="scss/_variables.scss" >}}
### Loop
{{< scss-docs name="table-loop" file="scss/_variables.scss" >}}
### Customizing
- The factor variables (`$table-striped-bg-factor`, `$table-active-bg-factor` & `$table-hover-bg-factor`) are used to determine the contrast in table variants.
- Apart from the light & dark table variants, theme colors are lightened by the `$table-bg-level` variable.
{{< scss-docs name="table-variables" file="scss/_variables.scss" >}}

View file

@ -302,3 +302,19 @@ Align terms and descriptions horizontally by using our grid system's predefined
## Responsive font sizes
In Bootstrap 5, we've enabled responsive font sizes by default, allowing text to scale more naturally across device and viewport sizes. Have a look at the [RFS page]({{< docsref "/getting-started/rfs" >}}) to find out how this works.
## Sass
### Variables
Headings have some dedicated variables for sizing and spacing.
{{< scss-docs name="headings-variables" file="scss/_variables.scss" >}}
Miscellaneous typography elements covered here and in [Reboot]({{< docsref "/content/reboot" >}}) also have dedicated variables.
{{< scss-docs name="type-variables" file="scss/_variables.scss" >}}
### Mixins
There are no dedicated mixins for typography, but Bootstrap does use [Responsive Font Sizing (RFS)]({{< docsref "/getting-started/rfs" >}}).

View file

@ -269,3 +269,13 @@ Different variants of `.btn`, such at the various outlined styles, are supported
<input type="radio" class="btn-check" name="options-outlined" id="danger-outlined" autocomplete="off">
<label class="btn btn-outline-danger" for="danger-outlined">Danger radio</label>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="form-check-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for checkboxes and radios.

View file

@ -100,3 +100,13 @@ When working with the Bootstrap grid system, be sure to place form elements with
</div>
</div>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="form-floating-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for floating label forms.

View file

@ -130,3 +130,21 @@ Learn more about [support for datalist elements](https://caniuse.com/datalist).
<option value="Chicago">
</datalist>
{{< /example >}}
## Sass
### Variables
`$input-*` are shared across most of our form controls (and not buttons).
{{< scss-docs name="form-input-variables" file="scss/_variables.scss" >}}
`$form-label-*` and `$form-text-*` are for our `<label>`s and `.form-text` component.
{{< scss-docs name="form-label-variables" file="scss/_variables.scss" >}}
{{< scss-docs name="form-text-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for form controls.

View file

@ -308,3 +308,13 @@ Input groups include support for custom selects and custom file inputs. Browser
<button class="btn btn-outline-secondary" type="button" id="inputGroupFileAddon04">Button</button>
</div>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="input-group-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for input groups.

View file

@ -142,3 +142,15 @@ For situations where it's not possible to include a visible `<label>` or appropr
If none of these are present, assistive technologies may resort to using the `placeholder` attribute as a fallback for the accessible name on `<input>` and `<textarea>` elements. The examples in this section provide a few suggested, case-specific approaches.
While using visually hidden content (`.visually-hidden`, `aria-label`, and even `placeholder` content, which disappears once a form field has content) will benefit assistive technology users, a lack of visible label text may still be problematic for certain users. Some form of visible label is generally the best approach, both for accessibility and usability.
## Sass
Many form variables are set at a general level to be re-used and extended by individual form components. You'll see these most often as `$btn-input-*` and `$input-*` variables.
### Variables
`$btn-input-*` variables are shared global variables between our buttons and our form components. You'll find these frequently reassigned as values to other component-specific variables.
{{< scss-docs name="input-btn-variables" file="scss/_variables.scss" >}}
### Mixins

View file

@ -41,3 +41,13 @@ By default, range inputs "snap" to integer values. To change this, you can speci
<label for="customRange3" class="form-label">Example range</label>
<input type="range" class="form-range" min="0" max="5" step="0.5" id="customRange3">
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="form-range-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for range inputs.

View file

@ -73,3 +73,13 @@ Add the `disabled` boolean attribute on a select to give it a grayed out appeara
<option value="3">Three</option>
</select>
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="form-select-variables" file="scss/_variables.scss" >}}
### Mixins
There are no mixins for select elements.

View file

@ -349,18 +349,34 @@ If your form layout allows it, you can swap the `.{valid|invalid}-feedback` clas
</form>
{{< /example >}}
## Customizing
## Sass
Validation states can be customized via Sass with the `$form-validation-states` map. Located in our `_variables.scss` file, this Sass map is how we generate the default `valid`/`invalid` validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.
### Variables
Please note that we do not recommend customizing these values without also modifying the `form-validation-state` mixin.
{{< scss-docs name="form-feedback-variables" file="scss/_variables.scss" >}}
This is the Sass map from `_variables.scss`. Override this and recompile your Sass to generate different states:
### Mixins
Two mixins are combined together, through our [loop](#loop), to generate our form validation feedback styles.
{{< scss-docs name="form-validation-mixins" file="scss/mixins/_forms.scss" >}}
### Map
This is the validation Sass map from `_variables.scss`. Override or extend this to generate different or additional states.
{{< scss-docs name="form-validation-states" file="scss/_variables.scss" >}}
Maps of `$form-validation-states` can contain three optional parameters to override tooltips and focus styles.
This is the loop from `forms/_validation.scss`. Any modifications to the above Sass map will be reflected in your compiled CSS via this loop:
### Loop
Used to iterate over `$form-validation-states` map values to generate our validation styles. Any modifications to the above Sass map will be reflected in your compiled CSS via this loop.
{{< scss-docs name="form-validation-states-loop" file="scss/forms/_validation.scss" >}}
### Customizing
Validation states can be customized via Sass with the `$form-validation-states` map. Located in our `_variables.scss` file, this Sass map is how we generate the default `valid`/`invalid` validation states. Included is a nested map for customizing each state's color, icon, tooltip color, and focus shadow. While no other states are supported by browsers, those using custom styles can easily add more complex form feedback.
Please note that we do not recommend customizing `$form-validation-states` values without also modifying the `form-validation-state` mixin.

View file

@ -77,3 +77,19 @@ Use the scaling classes for larger or smaller rounded corners. Sizes range from
{{< placeholder width="75" height="75" class="rounded-2" title="Example default rounded image" >}}
{{< placeholder width="75" height="75" class="rounded-3" title="Example large rounded image" >}}
{{< /example >}}
## Sass
### Variables
{{< scss-docs name="border-variables" file="scss/_variables.scss" >}}
{{< scss-docs name="border-radius-variables" file="scss/_variables.scss" >}}
### Mixins
{{< scss-docs name="border-radius-mixins" file="scss/mixins/_border-radius.scss" >}}
### Utilities
TODO: this errored out earlier, unclear why...