Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-rubygem.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Mazovetskiy <glex.spb@gmail.com>2017-07-06 02:56:19 +0300
committerGleb Mazovetskiy <glex.spb@gmail.com>2017-07-06 02:56:19 +0300
commitb156edfee2b9629ad4751ee2a118a04f824ef9eb (patch)
tree6d9003fe75087f5b95a281d5537109b38515d2a8 /assets/stylesheets/bootstrap
parent7cdeca9a0e8db3bb7548d9fa5bdaad9b644fca32 (diff)
rake update[v4-dev]
Diffstat (limited to 'assets/stylesheets/bootstrap')
-rw-r--r--assets/stylesheets/bootstrap/_alert.scss15
-rw-r--r--assets/stylesheets/bootstrap/_badge.scss36
-rw-r--r--assets/stylesheets/bootstrap/_buttons.scss44
-rw-r--r--assets/stylesheets/bootstrap/_card.scss66
-rw-r--r--assets/stylesheets/bootstrap/_carousel.scss24
-rw-r--r--assets/stylesheets/bootstrap/_custom-forms.scss45
-rw-r--r--assets/stylesheets/bootstrap/_custom.scss4
-rw-r--r--assets/stylesheets/bootstrap/_forms.scss104
-rw-r--r--assets/stylesheets/bootstrap/_functions.scss90
-rw-r--r--assets/stylesheets/bootstrap/_list-group.scss15
-rw-r--r--assets/stylesheets/bootstrap/_mixins.scss1
-rw-r--r--assets/stylesheets/bootstrap/_modal.scss6
-rw-r--r--assets/stylesheets/bootstrap/_nav.scss16
-rw-r--r--assets/stylesheets/bootstrap/_navbar.scss33
-rw-r--r--assets/stylesheets/bootstrap/_popover.scss22
-rw-r--r--assets/stylesheets/bootstrap/_tables.scss21
-rw-r--r--assets/stylesheets/bootstrap/_type.scss32
-rw-r--r--assets/stylesheets/bootstrap/_utilities.scss1
-rw-r--r--assets/stylesheets/bootstrap/_variables.scss477
-rw-r--r--assets/stylesheets/bootstrap/mixins/_alert.scss9
-rw-r--r--assets/stylesheets/bootstrap/mixins/_badge.scss11
-rw-r--r--assets/stylesheets/bootstrap/mixins/_breakpoints.scss10
-rw-r--r--assets/stylesheets/bootstrap/mixins/_buttons.scss20
-rw-r--r--assets/stylesheets/bootstrap/mixins/_cards.scss53
-rw-r--r--assets/stylesheets/bootstrap/mixins/_forms.scss102
-rw-r--r--assets/stylesheets/bootstrap/mixins/_grid-framework.scss23
-rw-r--r--assets/stylesheets/bootstrap/mixins/_grid.scss69
-rw-r--r--assets/stylesheets/bootstrap/mixins/_pagination.scss1
-rw-r--r--assets/stylesheets/bootstrap/utilities/_background.scss20
-rw-r--r--assets/stylesheets/bootstrap/utilities/_borders.scss21
-rw-r--r--assets/stylesheets/bootstrap/utilities/_embed.scss (renamed from assets/stylesheets/bootstrap/_responsive-embed.scss)0
-rw-r--r--assets/stylesheets/bootstrap/utilities/_flex.scss4
-rw-r--r--assets/stylesheets/bootstrap/utilities/_position.scss8
-rw-r--r--assets/stylesheets/bootstrap/utilities/_text.scss22
34 files changed, 600 insertions, 825 deletions
diff --git a/assets/stylesheets/bootstrap/_alert.scss b/assets/stylesheets/bootstrap/_alert.scss
index 562821a..3dfd13f 100644
--- a/assets/stylesheets/bootstrap/_alert.scss
+++ b/assets/stylesheets/bootstrap/_alert.scss
@@ -41,15 +41,8 @@
//
// Generate contextual modifier classes for colorizing the alert.
-.alert-success {
- @include alert-variant($alert-success-bg, $alert-success-border-color, $alert-success-text);
-}
-.alert-info {
- @include alert-variant($alert-info-bg, $alert-info-border-color, $alert-info-text);
-}
-.alert-warning {
- @include alert-variant($alert-warning-bg, $alert-warning-border-color, $alert-warning-text);
-}
-.alert-danger {
- @include alert-variant($alert-danger-bg, $alert-danger-border-color, $alert-danger-text);
+@each $color, $value in $theme-colors {
+ .alert-#{$color} {
+ @include alert-variant(theme-color-level($color, -10), theme-color-level($color, -9), theme-color-level($color, 6));
+ }
}
diff --git a/assets/stylesheets/bootstrap/_badge.scss b/assets/stylesheets/bootstrap/_badge.scss
index 175b19d..8a76263 100644
--- a/assets/stylesheets/bootstrap/_badge.scss
+++ b/assets/stylesheets/bootstrap/_badge.scss
@@ -27,16 +27,6 @@
top: -1px;
}
-// scss-lint:disable QualifyingElement
-// Add hover effects, but only for links
-a.badge {
- @include hover-focus {
- color: $badge-link-hover-color;
- text-decoration: none;
- }
-}
-// scss-lint:enable QualifyingElement
-
// Pill badges
//
// Make them extra rounded with a modifier to replace v3's badges.
@@ -51,26 +41,8 @@ a.badge {
//
// Contextual variations (linked badges get darker on :hover).
-.badge-default {
- @include badge-variant($badge-default-bg);
-}
-
-.badge-primary {
- @include badge-variant($badge-primary-bg);
-}
-
-.badge-success {
- @include badge-variant($badge-success-bg);
-}
-
-.badge-info {
- @include badge-variant($badge-info-bg);
-}
-
-.badge-warning {
- @include badge-variant($badge-warning-bg);
-}
-
-.badge-danger {
- @include badge-variant($badge-danger-bg);
+@each $color, $value in $theme-colors {
+ .badge-#{$color} {
+ @include badge-variant($value);
+ }
}
diff --git a/assets/stylesheets/bootstrap/_buttons.scss b/assets/stylesheets/bootstrap/_buttons.scss
index 05c54e4..607f24a 100644
--- a/assets/stylesheets/bootstrap/_buttons.scss
+++ b/assets/stylesheets/bootstrap/_buttons.scss
@@ -50,43 +50,16 @@ fieldset[disabled] a.btn {
// Alternate buttons
//
-.btn-primary {
- @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color);
-}
-.btn-secondary {
- @include button-variant($btn-secondary-color, $btn-secondary-bg, $btn-secondary-border-color);
-}
-.btn-info {
- @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color);
-}
-.btn-success {
- @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color);
-}
-.btn-warning {
- @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color);
-}
-.btn-danger {
- @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color);
+@each $color, $value in $theme-colors {
+ .btn-#{$color} {
+ @include button-variant($value, $value);
+ }
}
-// Remove all backgrounds
-.btn-outline-primary {
- @include button-outline-variant($btn-primary-bg, $btn-primary-color);
-}
-.btn-outline-secondary {
- @include button-outline-variant($btn-secondary-border-color, $btn-secondary-color);
-}
-.btn-outline-info {
- @include button-outline-variant($btn-info-bg, $btn-info-color);
-}
-.btn-outline-success {
- @include button-outline-variant($btn-success-bg, $btn-success-color);
-}
-.btn-outline-warning {
- @include button-outline-variant($btn-warning-bg, $btn-warning-color);
-}
-.btn-outline-danger {
- @include button-outline-variant($btn-danger-bg, $btn-danger-color);
+@each $color, $value in $theme-colors {
+ .btn-outline-#{$color} {
+ @include button-outline-variant($value, #fff);
+ }
}
@@ -111,6 +84,7 @@ fieldset[disabled] a.btn {
&:focus,
&:active {
border-color: transparent;
+ box-shadow: none;
}
@include hover {
border-color: transparent;
diff --git a/assets/stylesheets/bootstrap/_card.scss b/assets/stylesheets/bootstrap/_card.scss
index e45af7b..1ab85a4 100644
--- a/assets/stylesheets/bootstrap/_card.scss
+++ b/assets/stylesheets/bootstrap/_card.scss
@@ -9,11 +9,12 @@
min-width: 0;
word-wrap: break-word;
background-color: $card-bg;
+ background-clip: border-box;
border: $card-border-width solid $card-border-color;
@include border-radius($card-border-radius);
}
-.card-block {
+.card-body {
// Enable `flex-grow: 1` for decks and groups so that card blocks take up
// as much space as possible, ensuring footers are aligned to the bottom.
flex: 1 1 auto;
@@ -100,65 +101,6 @@
margin-left: -($card-spacer-x / 2);
}
-
-//
-// Background variations
-//
-
-.card-primary {
- @include card-variant($brand-primary, $brand-primary);
-}
-.card-success {
- @include card-variant($brand-success, $brand-success);
-}
-.card-info {
- @include card-variant($brand-info, $brand-info);
-}
-.card-warning {
- @include card-variant($brand-warning, $brand-warning);
-}
-.card-danger {
- @include card-variant($brand-danger, $brand-danger);
-}
-
-// Remove all backgrounds
-.card-outline-primary {
- @include card-outline-variant($btn-primary-bg);
-}
-.card-outline-secondary {
- @include card-outline-variant($btn-secondary-border-color);
-}
-.card-outline-info {
- @include card-outline-variant($btn-info-bg);
-}
-.card-outline-success {
- @include card-outline-variant($btn-success-bg);
-}
-.card-outline-warning {
- @include card-outline-variant($btn-warning-bg);
-}
-.card-outline-danger {
- @include card-outline-variant($btn-danger-bg);
-}
-
-//
-// Inverse text within a card for use with dark backgrounds
-//
-
-.card-inverse {
- @include card-inverse;
-}
-
-//
-// Blockquote
-//
-
-.card-blockquote {
- padding: 0;
- margin-bottom: 0;
- border-left: 0;
-}
-
// Card image
.card-img-overlay {
position: absolute;
@@ -197,7 +139,7 @@
.card {
display: flex;
- flex: 1 0 0;
+ flex: 1 0 0%;
flex-direction: column;
margin-right: $card-deck-margin;
margin-left: $card-deck-margin;
@@ -216,7 +158,7 @@
flex-flow: row wrap;
.card {
- flex: 1 0 0;
+ flex: 1 0 0%;
+ .card {
margin-left: 0;
diff --git a/assets/stylesheets/bootstrap/_carousel.scss b/assets/stylesheets/bootstrap/_carousel.scss
index 41eca94..8aa14ac 100644
--- a/assets/stylesheets/bootstrap/_carousel.scss
+++ b/assets/stylesheets/bootstrap/_carousel.scss
@@ -22,7 +22,7 @@
.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
- display: flex;
+ display: block;
}
.carousel-item-next,
@@ -34,17 +34,29 @@
// CSS3 transforms when supported by the browser
.carousel-item-next.carousel-item-left,
.carousel-item-prev.carousel-item-right {
- transform: translate3d(0, 0, 0);
+ transform: translateX(0);
+
+ @supports (transform-style: preserve-3d) {
+ transform: translate3d(0, 0, 0);
+ }
}
.carousel-item-next,
.active.carousel-item-right {
- transform: translate3d(100%, 0, 0);
+ transform: translateX(100%);
+
+ @supports (transform-style: preserve-3d) {
+ transform: translate3d(100%, 0, 0);
+ }
}
.carousel-item-prev,
.active.carousel-item-left {
- transform: translate3d(-100%, 0, 0);
+ transform: translateX(-100%);
+
+ @supports (transform-style: preserve-3d) {
+ transform: translate3d(-100%, 0, 0);
+ }
}
@@ -121,8 +133,8 @@
li {
position: relative;
- flex: 1 0 auto;
- max-width: $carousel-indicator-width;
+ flex: 0 1 auto;
+ width: $carousel-indicator-width;
height: $carousel-indicator-height;
margin-right: $carousel-indicator-spacer;
margin-left: $carousel-indicator-spacer;
diff --git a/assets/stylesheets/bootstrap/_custom-forms.scss b/assets/stylesheets/bootstrap/_custom-forms.scss
index 9133f7d..b58fffb 100644
--- a/assets/stylesheets/bootstrap/_custom-forms.scss
+++ b/assets/stylesheets/bootstrap/_custom-forms.scss
@@ -23,29 +23,29 @@
opacity: 0;
&:checked ~ .custom-control-indicator {
- color: $custom-control-checked-indicator-color;
- background-color: $custom-control-checked-indicator-bg;
- @include box-shadow($custom-control-checked-indicator-box-shadow);
+ color: $custom-control-indicator-checked-color;
+ background-color: $custom-control-indicator-checked-bg;
+ @include box-shadow($custom-control-indicator-checked-box-shadow);
}
&:focus ~ .custom-control-indicator {
// the mixin is not used here to make sure there is feedback
- box-shadow: $custom-control-focus-indicator-box-shadow;
+ box-shadow: $custom-control-indicator-focus-box-shadow;
}
&:active ~ .custom-control-indicator {
- color: $custom-control-active-indicator-color;
- background-color: $custom-control-active-indicator-bg;
- @include box-shadow($custom-control-active-indicator-box-shadow);
+ color: $custom-control-indicator-active-color;
+ background-color: $custom-control-indicator-active-bg;
+ @include box-shadow($custom-control-indicator-active-box-shadow);
}
&:disabled {
~ .custom-control-indicator {
- background-color: $custom-control-disabled-indicator-bg;
+ background-color: $custom-control-indicator-disabled-bg;
}
~ .custom-control-description {
- color: $custom-control-disabled-description-color;
+ color: $custom-control-description-disabled-color;
}
}
}
@@ -76,16 +76,16 @@
.custom-checkbox {
.custom-control-indicator {
- @include border-radius($custom-checkbox-radius);
+ @include border-radius($custom-checkbox-border-radius);
}
.custom-control-input:checked ~ .custom-control-indicator {
- background-image: $custom-checkbox-checked-icon;
+ background-image: $custom-checkbox-icon-checked;
}
.custom-control-input:indeterminate ~ .custom-control-indicator {
background-color: $custom-checkbox-indeterminate-bg;
- background-image: $custom-checkbox-indeterminate-icon;
+ background-image: $custom-checkbox-icon-indeterminate;
@include box-shadow($custom-checkbox-indeterminate-box-shadow);
}
}
@@ -96,11 +96,11 @@
.custom-radio {
.custom-control-indicator {
- border-radius: $custom-radio-radius;
+ border-radius: $custom-radio-border-radius;
}
.custom-control-input:checked ~ .custom-control-indicator {
- background-image: $custom-radio-checked-icon;
+ background-image: $custom-radio-icon-checked;
}
}
@@ -133,8 +133,7 @@
.custom-select {
display: inline-block;
max-width: 100%;
- $select-border-width: ($custom-select-border-width * 2);
- height: calc(#{$input-height} + #{$select-border-width});
+ height: $input-height;
padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
line-height: $custom-select-line-height;
color: $custom-select-color;
@@ -142,7 +141,11 @@
background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;
background-size: $custom-select-bg-size;
border: $custom-select-border-width solid $custom-select-border-color;
- @include border-radius($custom-select-border-radius);
+ @if $enable-rounded {
+ border-radius: $custom-select-border-radius;
+ } @else {
+ border-radius: 0;
+ }
appearance: none;
&:focus {
@@ -173,14 +176,10 @@
}
.custom-select-sm {
+ height: $custom-select-height-sm;
padding-top: $custom-select-padding-y;
padding-bottom: $custom-select-padding-y;
- font-size: $custom-select-sm-font-size;
-
- // &:not([multiple]) {
- // height: 26px;
- // min-height: 26px;
- // }
+ font-size: $custom-select-font-size-sm;
}
diff --git a/assets/stylesheets/bootstrap/_custom.scss b/assets/stylesheets/bootstrap/_custom.scss
deleted file mode 100644
index 88ccf20..0000000
--- a/assets/stylesheets/bootstrap/_custom.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-// Bootstrap overrides
-//
-// Copy variables from `_variables.scss` to this file to override default values
-// without modifying source files.
diff --git a/assets/stylesheets/bootstrap/_forms.scss b/assets/stylesheets/bootstrap/_forms.scss
index 55e8cb4..519554b 100644
--- a/assets/stylesheets/bootstrap/_forms.scss
+++ b/assets/stylesheets/bootstrap/_forms.scss
@@ -42,7 +42,7 @@
// Placeholder
&::placeholder {
- color: $input-color-placeholder;
+ color: $input-placeholder-color;
// Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
opacity: 1;
}
@@ -54,7 +54,7 @@
// don't honor that edge case; we style them as disabled anyway.
&:disabled,
&[readonly] {
- background-color: $input-bg-disabled;
+ background-color: $input-disabled-bg;
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
opacity: 1;
}
@@ -62,8 +62,7 @@
select.form-control {
&:not([size]):not([multiple]) {
- $select-border-width: ($border-width * 2);
- height: calc(#{$input-height} + #{$select-border-width});
+ height: $input-height;
}
&:focus::-ms-value {
@@ -123,12 +122,12 @@ select.form-control {
}
-// Static form control text
+// Readonly controls as plain text
//
-// Apply class to an element to make any string of text align with labels in a
-// horizontal form layout.
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
-.form-control-static {
+.form-control-plaintext {
padding-top: $input-btn-padding-y;
padding-bottom: $input-btn-padding-y;
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
@@ -161,8 +160,7 @@ select.form-control {
select.form-control-sm {
&:not([size]):not([multiple]) {
- $select-border-width: ($border-width * 2);
- height: calc(#{$input-height-sm} + #{$select-border-width});
+ height: $input-height-sm;
}
}
@@ -175,8 +173,7 @@ select.form-control-sm {
select.form-control-lg {
&:not([size]):not([multiple]) {
- $select-border-width: ($border-width * 2);
- height: calc(#{$input-height-lg} + #{$select-border-width});
+ height: $input-height-lg;
}
}
@@ -196,6 +193,24 @@ select.form-control-lg {
}
+// Form grid
+//
+// Special replacement for our grid system's `.row` for tighter form layouts.
+
+.form-row {
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: -5px;
+ margin-left: -5px;
+
+ > .col,
+ > [class*="col-"] {
+ padding-right: 5px;
+ padding-left: 5px;
+ }
+}
+
+
// Checkboxes and radios
//
// Indent the labels to position radios/checkboxes as hanging controls.
@@ -241,48 +256,37 @@ select.form-control-lg {
}
-// Form control feedback states
+// Form validation
//
-// Apply contextual and semantic states to individual form controls.
-
-.form-control-feedback {
- margin-top: $form-feedback-margin-top;
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server side validation.
+
+.invalid-feedback {
+ display: none;
+ margin-top: .25rem;
+ font-size: .875rem;
+ color: $form-feedback-invalid-color;
}
-.form-control-success,
-.form-control-warning,
-.form-control-danger {
- padding-right: ($input-btn-padding-x * 3);
- background-repeat: no-repeat;
- background-position: center right ($input-height / 4);
- background-size: ($input-height / 2) ($input-height / 2);
-}
-
-// Form validation states
-.has-success {
- @include form-control-validation($brand-success);
-
- .form-control-success {
- background-image: $form-icon-success;
- }
-}
-
-.has-warning {
- @include form-control-validation($brand-warning);
-
- .form-control-warning {
- background-image: $form-icon-warning;
- }
-}
-
-.has-danger {
- @include form-control-validation($brand-danger);
-
- .form-control-danger {
- background-image: $form-icon-danger;
- }
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ width: 250px;
+ padding: .5rem;
+ margin-top: .1rem;
+ font-size: .875rem;
+ line-height: 1;
+ color: #fff;
+ background-color: rgba($form-feedback-invalid-color,.8);
+ border-radius: .2rem;
}
+@include form-validation-state("valid", $form-feedback-valid-color);
+@include form-validation-state("invalid", $form-feedback-invalid-color);
// Inline forms
//
@@ -331,7 +335,7 @@ select.form-control-lg {
}
// Make static controls behave like regular ones
- .form-control-static {
+ .form-control-plaintext {
display: inline-block;
}
diff --git a/assets/stylesheets/bootstrap/_functions.scss b/assets/stylesheets/bootstrap/_functions.scss
new file mode 100644
index 0000000..6c0601c
--- /dev/null
+++ b/assets/stylesheets/bootstrap/_functions.scss
@@ -0,0 +1,90 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evalutating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+ $prev-key: null;
+ $prev-num: null;
+ @each $key, $num in $map {
+ @if $prev-num == null {
+ // Do nothing
+ } @else if not comparable($prev-num, $num) {
+ @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ } @else if $prev-num >= $num {
+ @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+ }
+ $prev-key: $key;
+ $prev-num: $num;
+ }
+}
+
+// Starts at zero
+// Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map) {
+ $values: map-values($map);
+ $first-value: nth($values, 1);
+ @if $first-value != 0 {
+ @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
+ }
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Hugo Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+ }
+
+ @return $string;
+}
+
+// Color contrast
+@mixin color-yiq($color) {
+ $r: red($color);
+ $g: green($color);
+ $b: blue($color);
+
+ $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
+
+ @if ($yiq >= 150) {
+ color: #111;
+ } @else {
+ color: #fff;
+ }
+}
+
+// Retreive color Sass maps
+@function color($key: "blue") {
+ @return map-get($colors, $key);
+}
+
+@function theme-color($key: "primary") {
+ @return map-get($theme-colors, $key);
+}
+
+@function grayscale($key: "100") {
+ @return map-get($grays, $key);
+}
+
+// Request a theme color level
+@function theme-color-level($color-name: "primary", $level: 0) {
+ $color: theme-color($color-name);
+ $color-base: if($level > 0, #000, #fff);
+
+ @if $level < 0 {
+ // Lighter values need a quick double negative for the Sass math to work
+ @return mix($color-base, $color, $level * -1 * $theme-color-interval);
+ } @else {
+ @return mix($color-base, $color, $level * $theme-color-interval);
+ }
+}
diff --git a/assets/stylesheets/bootstrap/_list-group.scss b/assets/stylesheets/bootstrap/_list-group.scss
index fef2c15..7e0b19e 100644
--- a/assets/stylesheets/bootstrap/_list-group.scss
+++ b/assets/stylesheets/bootstrap/_list-group.scss
@@ -19,19 +19,19 @@
.list-group-item-action {
width: 100%; // For `<button>`s (anchors become 100% by default though)
- color: $list-group-link-color;
+ color: $list-group-action-color;
text-align: inherit; // For `<button>`s (anchors inherit)
// Hover state
@include hover-focus {
- color: $list-group-link-hover-color;
+ color: $list-group-action-hover-color;
text-decoration: none;
background-color: $list-group-hover-bg;
}
&:active {
- color: $list-group-link-active-color;
- background-color: $list-group-link-active-bg;
+ color: $list-group-action-active-color;
+ background-color: $list-group-action-active-bg;
}
}
@@ -109,7 +109,6 @@
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.
-@include list-group-item-variant(success, $state-success-bg, $state-success-text);
-@include list-group-item-variant(info, $state-info-bg, $state-info-text);
-@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
-@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
+@each $color, $value in $theme-colors {
+ @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
+}
diff --git a/assets/stylesheets/bootstrap/_mixins.scss b/assets/stylesheets/bootstrap/_mixins.scss
index cc3394f..09035bf 100644
--- a/assets/stylesheets/bootstrap/_mixins.scss
+++ b/assets/stylesheets/bootstrap/_mixins.scss
@@ -19,7 +19,6 @@
// // Components
@import "mixins/alert";
@import "mixins/buttons";
-@import "mixins/cards";
@import "mixins/pagination";
@import "mixins/lists";
@import "mixins/list-group";
diff --git a/assets/stylesheets/bootstrap/_modal.scss b/assets/stylesheets/bootstrap/_modal.scss
index 9d2a867..c0c4067 100644
--- a/assets/stylesheets/bootstrap/_modal.scss
+++ b/assets/stylesheets/bootstrap/_modal.scss
@@ -54,7 +54,7 @@
background-clip: padding-box;
border: $modal-content-border-width solid $modal-content-border-color;
@include border-radius($border-radius-lg);
- @include box-shadow($modal-content-xs-box-shadow);
+ @include box-shadow($modal-content-box-shadow-xs);
// Remove focus outline from opened modal
outline: 0;
}
@@ -127,11 +127,11 @@
// Automatically set modal's width for larger viewports
.modal-dialog {
max-width: $modal-md;
- margin: $modal-dialog-sm-up-margin-y auto;
+ margin: $modal-dialog-margin-y-sm-up auto;
}
.modal-content {
- @include box-shadow($modal-content-sm-up-box-shadow);
+ @include box-shadow($modal-content-box-shadow-sm-up);
}
.modal-sm { max-width: $modal-sm; }
diff --git a/assets/stylesheets/bootstrap/_nav.scss b/assets/stylesheets/bootstrap/_nav.scss
index 973679e..ed5d76b 100644
--- a/assets/stylesheets/bootstrap/_nav.scss
+++ b/assets/stylesheets/bootstrap/_nav.scss
@@ -21,7 +21,7 @@
// Disabled state lightens text
&.disabled {
- color: $nav-disabled-link-color;
+ color: $nav-link-disabled-color;
}
}
@@ -45,7 +45,7 @@
}
&.disabled {
- color: $nav-disabled-link-color;
+ color: $nav-link-disabled-color;
background-color: transparent;
border-color: transparent;
}
@@ -53,9 +53,9 @@
.nav-link.active,
.nav-item.show .nav-link {
- color: $nav-tabs-active-link-color;
- background-color: $nav-tabs-active-link-bg;
- border-color: $nav-tabs-active-link-border-color $nav-tabs-active-link-border-color $nav-tabs-active-link-bg;
+ color: $nav-tabs-link-active-color;
+ background-color: $nav-tabs-link-active-bg;
+ border-color: $nav-tabs-link-active-border-color $nav-tabs-link-active-border-color $nav-tabs-link-active-bg;
}
.dropdown-menu {
@@ -76,9 +76,9 @@
@include border-radius($nav-pills-border-radius);
&.active,
- .show & {
- color: $nav-pills-active-link-color;
- background-color: $nav-pills-active-link-bg;
+ .show > & {
+ color: $nav-pills-link-active-color;
+ background-color: $nav-pills-link-active-bg;
}
}
}
diff --git a/assets/stylesheets/bootstrap/_navbar.scss b/assets/stylesheets/bootstrap/_navbar.scss
index 59cc52d..ab238e5 100644
--- a/assets/stylesheets/bootstrap/_navbar.scss
+++ b/assets/stylesheets/bootstrap/_navbar.scss
@@ -77,9 +77,8 @@
}
.dropdown-menu {
- position: static !important;
+ position: static;
float: none;
- transform: unset !important;
}
}
@@ -158,8 +157,12 @@
flex-direction: row;
.dropdown-menu {
- position: absolute !important;
- top: 100% !important;
+ position: absolute;
+ }
+
+ .dropdown-menu-right {
+ right: 0;
+ left: auto; // Reset the default from `.dropdown-menu`
}
.nav-link {
@@ -239,25 +242,25 @@
}
// White links against a dark background
-.navbar-inverse {
+.navbar-dark {
.navbar-brand {
- color: $navbar-inverse-active-color;
+ color: $navbar-dark-active-color;
@include hover-focus {
- color: $navbar-inverse-active-color;
+ color: $navbar-dark-active-color;
}
}
.navbar-nav {
.nav-link {
- color: $navbar-inverse-color;
+ color: $navbar-dark-color;
@include hover-focus {
- color: $navbar-inverse-hover-color;
+ color: $navbar-dark-hover-color;
}
&.disabled {
- color: $navbar-inverse-disabled-color;
+ color: $navbar-dark-disabled-color;
}
}
@@ -265,20 +268,20 @@
.active > .nav-link,
.nav-link.show,
.nav-link.active {
- color: $navbar-inverse-active-color;
+ color: $navbar-dark-active-color;
}
}
.navbar-toggler {
- color: $navbar-inverse-color;
- border-color: $navbar-inverse-toggler-border-color;
+ color: $navbar-dark-color;
+ border-color: $navbar-dark-toggler-border-color;
}
.navbar-toggler-icon {
- background-image: $navbar-inverse-toggler-icon-bg;
+ background-image: $navbar-dark-toggler-icon-bg;
}
.navbar-text {
- color: $navbar-inverse-color;
+ color: $navbar-dark-color;
}
}
diff --git a/assets/stylesheets/bootstrap/_popover.scss b/assets/stylesheets/bootstrap/_popover.scss
index e3a0d9d..950d6ca 100644
--- a/assets/stylesheets/bootstrap/_popover.scss
+++ b/assets/stylesheets/bootstrap/_popover.scss
@@ -120,8 +120,8 @@
border-bottom-color: $popover-arrow-color;
}
- // This will remove the popover-title's border just below the arrow
- .popover-title::before {
+ // This will remove the popover-header's border just below the arrow
+ .popover-header::before {
position: absolute;
top: 0;
left: 50%;
@@ -129,7 +129,7 @@
width: 20px;
margin-left: -10px;
content: "";
- border-bottom: 1px solid $popover-title-bg;
+ border-bottom: 1px solid $popover-header-bg;
}
}
@@ -174,13 +174,13 @@
// Offset the popover to account for the popover arrow
-.popover-title {
- padding: $popover-title-padding-y $popover-title-padding-x;
+.popover-header {
+ padding: $popover-header-padding-y $popover-header-padding-x;
margin-bottom: 0; // Reset the default from Reboot
font-size: $font-size-base;
- color: $popover-title-color;
- background-color: $popover-title-bg;
- border-bottom: $popover-border-width solid darken($popover-title-bg, 5%);
+ color: $popover-header-color;
+ background-color: $popover-header-bg;
+ border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
$offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
@include border-top-radius($offset-border-width);
@@ -189,7 +189,7 @@
}
}
-.popover-content {
- padding: $popover-content-padding-y $popover-content-padding-x;
- color: $popover-content-color;
+.popover-body {
+ padding: $popover-body-padding-y $popover-body-padding-x;
+ color: $popover-body-color;
}
diff --git a/assets/stylesheets/bootstrap/_tables.scss b/assets/stylesheets/bootstrap/_tables.scss
index 36c3dab..a652d17 100644
--- a/assets/stylesheets/bootstrap/_tables.scss
+++ b/assets/stylesheets/bootstrap/_tables.scss
@@ -37,7 +37,7 @@
.table-sm {
th,
td {
- padding: $table-sm-cell-padding;
+ padding: $table-cell-padding-sm;
}
}
@@ -69,7 +69,7 @@
.table-striped {
tbody tr:nth-of-type(odd) {
- background-color: $table-bg-accent;
+ background-color: $table-accent-bg;
}
}
@@ -81,7 +81,7 @@
.table-hover {
tbody tr {
@include hover {
- background-color: $table-bg-hover;
+ background-color: $table-hover-bg;
}
}
}
@@ -92,12 +92,11 @@
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
-// Generate the contextual variants
-@include table-row-variant(active, $table-bg-active);
-@include table-row-variant(success, $state-success-bg);
-@include table-row-variant(info, $state-info-bg);
-@include table-row-variant(warning, $state-warning-bg);
-@include table-row-variant(danger, $state-danger-bg);
+@each $color, $value in $theme-colors {
+ @include table-row-variant($color, theme-color-level($color, -9));
+}
+
+@include table-row-variant(active, $table-active-bg);
// Inverse styles
@@ -134,14 +133,14 @@
&.table-striped {
tbody tr:nth-of-type(odd) {
- background-color: $table-inverse-bg-accent;
+ background-color: $table-inverse-accent-bg;
}
}
&.table-hover {
tbody tr {
@include hover {
- background-color: $table-inverse-bg-hover;
+ background-color: $table-inverse-hover-bg;
}
}
}
diff --git a/assets/stylesheets/bootstrap/_type.scss b/assets/stylesheets/bootstrap/_type.scss
index fc9c791..8928341 100644
--- a/assets/stylesheets/bootstrap/_type.scss
+++ b/assets/stylesheets/bootstrap/_type.scss
@@ -11,12 +11,12 @@ h1, h2, h3, h4, h5, h6,
color: $headings-color;
}
-h1, .h1 { font-size: $font-size-h1; }
-h2, .h2 { font-size: $font-size-h2; }
-h3, .h3 { font-size: $font-size-h3; }
-h4, .h4 { font-size: $font-size-h4; }
-h5, .h5 { font-size: $font-size-h5; }
-h6, .h6 { font-size: $font-size-h6; }
+h1, .h1 { font-size: $h1-font-size; }
+h2, .h2 { font-size: $h2-font-size; }
+h3, .h3 { font-size: $h3-font-size; }
+h4, .h4 { font-size: $h4-font-size; }
+h5, .h5 { font-size: $h5-font-size; }
+h6, .h6 { font-size: $h6-font-size; }
.lead {
font-size: $lead-font-size;
@@ -108,10 +108,8 @@ mark,
// Blockquotes
.blockquote {
- padding: ($spacer / 2) $spacer;
margin-bottom: $spacer;
font-size: $blockquote-font-size;
- border-left: $blockquote-border-width solid $blockquote-border-color;
}
.blockquote-footer {
@@ -123,21 +121,3 @@ mark,
content: "\2014 \00A0"; // em dash, nbsp
}
}
-
-// Opposite alignment of blockquote
-.blockquote-reverse {
- padding-right: $spacer;
- padding-left: 0;
- text-align: right;
- border-right: $blockquote-border-width solid $blockquote-border-color;
- border-left: 0;
-}
-
-.blockquote-reverse .blockquote-footer {
- &::before {
- content: "";
- }
- &::after {
- content: "\00A0 \2014"; // nbsp, em dash
- }
-}
diff --git a/assets/stylesheets/bootstrap/_utilities.scss b/assets/stylesheets/bootstrap/_utilities.scss
index 7d08ff2..7b2a1eb 100644
--- a/assets/stylesheets/bootstrap/_utilities.scss
+++ b/assets/stylesheets/bootstrap/_utilities.scss
@@ -3,6 +3,7 @@
@import "utilities/borders";
@import "utilities/clearfix";
@import "utilities/display";
+@import "utilities/embed";
@import "utilities/flex";
@import "utilities/float";
@import "utilities/position";
diff --git a/assets/stylesheets/bootstrap/_variables.scss b/assets/stylesheets/bootstrap/_variables.scss
index e5aa9e9..91103b6 100644
--- a/assets/stylesheets/bootstrap/_variables.scss
+++ b/assets/stylesheets/bootstrap/_variables.scss
@@ -2,11 +2,13 @@
//
// Copy settings from this file into the provided `_custom.scss` to override
// the Bootstrap defaults without modifying key, versioned files.
-
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
// Table of Contents
//
-// Colors
+// Color system
// Options
// Spacing
// Body
@@ -41,82 +43,75 @@
// Close
// Code
-@mixin _assert-ascending($map, $map-name) {
- $prev-key: null;
- $prev-num: null;
- @each $key, $num in $map {
- @if $prev-num == null {
- // Do nothing
- } @else if not comparable($prev-num, $num) {
- @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- } @else if $prev-num >= $num {
- @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
- }
- $prev-key: $key;
- $prev-num: $num;
- }
-}
-
-// Replace `$search` with `$replace` in `$string`
-// @author Hugo Giraudel
-// @param {String} $string - Initial string
-// @param {String} $search - Substring to replace
-// @param {String} $replace ('') - New value
-// @return {String} - Updated string
-@function str-replace($string, $search, $replace: "") {
- $index: str-index($string, $search);
-
- @if $index {
- @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
- }
-
- @return $string;
-}
-
-@mixin _assert-starts-at-zero($map) {
- $values: map-values($map);
- $first-value: nth($values, 1);
- @if $first-value != 0 {
- @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
- }
-}
-
-
-// General variable structure
-//
-// Variable format should follow the `$component-modifier-state-property` order.
-
-// Colors
//
-// Grayscale and brand colors for use across Bootstrap.
+// Color system
+//
-// Start with assigning color names to specific hex values.
$white: #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #868e96 !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
$black: #000 !default;
-$red: #d9534f !default;
-$orange: #f0ad4e !default;
-$yellow: #ffd500 !default;
-$green: #5cb85c !default;
-$blue: #0275d8 !default;
-$teal: #5bc0de !default;
-$pink: #ff5b77 !default;
-$purple: #613d7c !default;
-
-// Create grayscale
-$gray-dark: #292b2c !default;
-$gray: #464a4c !default;
-$gray-light: #636c72 !default;
-$gray-lighter: #eceeef !default;
-$gray-lightest: #f7f7f9 !default;
-
-// Reassign color vars to semantic color scheme
-$brand-primary: $blue !default;
-$brand-success: $green !default;
-$brand-info: $teal !default;
-$brand-warning: $orange !default;
-$brand-danger: $red !default;
-$brand-inverse: $gray-dark !default;
+
+$grays: (
+ 100: $gray-100,
+ 200: $gray-200,
+ 300: $gray-300,
+ 400: $gray-400,
+ 500: $gray-500,
+ 600: $gray-600,
+ 700: $gray-700,
+ 800: $gray-800,
+ 900: $gray-900
+) !default;
+
+$blue: #007bff !default;
+$indigo: #6610f2 !default;
+$purple: #6f42c1 !default;
+$pink: #e83e8c !default;
+$red: #dc3545 !default;
+$orange: #fd7e14 !default;
+$yellow: #ffc107 !default;
+$green: #28a745 !default;
+$teal: #20c997 !default;
+$cyan: #17a2b8 !default;
+
+$colors: (
+ blue: $blue,
+ indigo: $indigo,
+ purple: $purple,
+ pink: $pink,
+ red: $red,
+ orange: $orange,
+ yellow: $yellow,
+ green: $green,
+ teal: $teal,
+ cyan: $cyan,
+ white: $white,
+ gray: $gray-600,
+ gray-dark: $gray-800
+) !default;
+
+$theme-colors: (
+ primary: $blue,
+ secondary: $gray-600,
+ success: $green,
+ info: $cyan,
+ warning: $yellow,
+ danger: $red,
+ light: $gray-100,
+ dark: $gray-800
+) !default;
+
+// Set a specific jump point for requesting color jumps
+$theme-color-interval: 8% !default;
// Options
@@ -161,13 +156,13 @@ $sizes: (
// Settings for the `<body>` element.
$body-bg: $white !default;
-$body-color: $gray-dark !default;
+$body-color: $gray-900 !default;
// Links
//
// Style anchor elements.
-$link-color: $brand-primary !default;
+$link-color: theme-color("primary") !default;
$link-decoration: none !default;
$link-hover-color: darken($link-color, 15%) !default;
$link-hover-decoration: underline !default;
@@ -206,16 +201,8 @@ $container-max-widths: (
//
// Set the number of columns and specify the width of the gutters.
-$grid-columns: 12 !default;
-$grid-gutter-width-base: 30px !default;
-$grid-gutter-widths: (
- xs: $grid-gutter-width-base,
- sm: $grid-gutter-width-base,
- md: $grid-gutter-width-base,
- lg: $grid-gutter-width-base,
- xl: $grid-gutter-width-base
-) !default;
-
+$grid-columns: 12 !default;
+$grid-gutter-width: 30px !default;
// Components
//
@@ -231,7 +218,7 @@ $border-radius-lg: .3rem !default;
$border-radius-sm: .2rem !default;
$component-active-color: $white !default;
-$component-active-bg: $brand-primary !default;
+$component-active-bg: theme-color("primary") !default;
$caret-width: .3em !default;
@@ -251,7 +238,6 @@ $font-family-base: $font-family-sans-serif !default;
$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
$font-size-lg: 1.25rem !default;
$font-size-sm: .875rem !default;
-$font-size-xs: .75rem !default;
$font-weight-normal: normal !default;
$font-weight-bold: bold !default;
@@ -259,12 +245,12 @@ $font-weight-bold: bold !default;
$font-weight-base: $font-weight-normal !default;
$line-height-base: 1.5 !default;
-$font-size-h1: 2.5rem !default;
-$font-size-h2: 2rem !default;
-$font-size-h3: 1.75rem !default;
-$font-size-h4: 1.5rem !default;
-$font-size-h5: 1.25rem !default;
-$font-size-h6: 1rem !default;
+$h1-font-size: 2.5rem !default;
+$h2-font-size: 2rem !default;
+$h3-font-size: 1.75rem !default;
+$h4-font-size: 1.5rem !default;
+$h5-font-size: 1.25rem !default;
+$h6-font-size: 1rem !default;
$headings-margin-bottom: ($spacer / 2) !default;
$headings-font-family: inherit !default;
@@ -288,12 +274,10 @@ $lead-font-weight: 300 !default;
$small-font-size: 80% !default;
-$text-muted: $gray-light !default;
+$text-muted: $gray-600 !default;
-$blockquote-small-color: $gray-light !default;
+$blockquote-small-color: $gray-600 !default;
$blockquote-font-size: ($font-size-base * 1.25) !default;
-$blockquote-border-color: $gray-lighter !default;
-$blockquote-border-width: .25rem !default;
$hr-border-color: rgba($black,.1) !default;
$hr-border-width: $border-width !default;
@@ -307,29 +291,31 @@ $nested-kbd-font-weight: $font-weight-bold !default;
$list-inline-padding: 5px !default;
+$mark-bg: #fcf8e3 !default;
+
// Tables
//
// Customizes the `.table` component with basic values, each used across all table variations.
$table-cell-padding: .75rem !default;
-$table-sm-cell-padding: .3rem !default;
+$table-cell-padding-sm: .3rem !default;
$table-bg: transparent !default;
-$table-bg-accent: rgba($black,.05) !default;
-$table-bg-hover: rgba($black,.075) !default;
-$table-bg-active: $table-bg-hover !default;
+$table-accent-bg: rgba($black,.05) !default;
+$table-hover-bg: rgba($black,.075) !default;
+$table-active-bg: $table-hover-bg !default;
$table-border-width: $border-width !default;
-$table-border-color: $gray-lighter !default;
+$table-border-color: $gray-200 !default;
-$table-head-bg: $gray-lighter !default;
-$table-head-color: $gray !default;
+$table-head-bg: $gray-200 !default;
+$table-head-color: $gray-700 !default;
-$table-inverse-bg: $gray-dark !default;
-$table-inverse-bg-accent: rgba($white, .05) !default;
-$table-inverse-bg-hover: rgba($white, .075) !default;
-$table-inverse-border-color: lighten($gray-dark, 7.5%) !default;
+$table-inverse-bg: $gray-900 !default;
+$table-inverse-accent-bg: rgba($white, .05) !default;
+$table-inverse-hover-bg: rgba($white, .075) !default;
+$table-inverse-border-color: lighten($gray-900, 7.5%) !default;
$table-inverse-color: $body-bg !default;
@@ -338,7 +324,7 @@ $table-inverse-color: $body-bg !default;
// For each of Bootstrap's buttons, define text, background and border color.
$input-btn-padding-y: .5rem !default;
-$input-btn-padding-x: 1rem !default;
+$input-btn-padding-x: .75rem !default;
$input-btn-line-height: 1.25 !default;
$input-btn-padding-y-sm: .25rem !default;
@@ -351,34 +337,10 @@ $input-btn-line-height-lg: 1.5 !default;
$btn-font-weight: $font-weight-normal !default;
$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;
-$btn-focus-box-shadow: 0 0 0 2px rgba($brand-primary, .25) !default;
+$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color("primary"), .25) !default;
$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;
-$btn-primary-color: $white !default;
-$btn-primary-bg: $brand-primary !default;
-$btn-primary-border-color: $btn-primary-bg !default;
-
-$btn-secondary-color: $gray-dark !default;
-$btn-secondary-bg: $white !default;
-$btn-secondary-border-color: #ccc !default;
-
-$btn-info-color: $white !default;
-$btn-info-bg: $brand-info !default;
-$btn-info-border-color: $btn-info-bg !default;
-
-$btn-success-color: $white !default;
-$btn-success-bg: $brand-success !default;
-$btn-success-border-color: $btn-success-bg !default;
-
-$btn-warning-color: $white !default;
-$btn-warning-bg: $brand-warning !default;
-$btn-warning-border-color: $btn-warning-bg !default;
-
-$btn-danger-color: $white !default;
-$btn-danger-bg: $brand-danger !default;
-$btn-danger-border-color: $btn-danger-bg !default;
-
-$btn-link-disabled-color: $gray-light !default;
+$btn-link-disabled-color: $gray-600 !default;
$btn-block-spacing-y: .5rem !default;
@@ -387,15 +349,15 @@ $btn-border-radius: $border-radius !default;
$btn-border-radius-lg: $border-radius-lg !default;
$btn-border-radius-sm: $border-radius-sm !default;
-$btn-transition: all .2s ease-in-out !default;
+$btn-transition: all .15s ease-in-out !default;
// Forms
$input-bg: $white !default;
-$input-bg-disabled: $gray-lighter !default;
+$input-disabled-bg: $gray-200 !default;
-$input-color: $gray !default;
+$input-color: $gray-700 !default;
$input-border-color: rgba($black,.15) !default;
$input-btn-border-width: $border-width !default; // For form controls and buttons
$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;
@@ -404,21 +366,27 @@ $input-border-radius: $border-radius !default;
$input-border-radius-lg: $border-radius-lg !default;
$input-border-radius-sm: $border-radius-sm !default;
-$input-bg-focus: $input-bg !default;
-$input-border-color-focus: lighten($brand-primary, 25%) !default;
-$input-box-shadow-focus: $input-box-shadow, rgba($input-border-color-focus, .6) !default;
-$input-color-focus: $input-color !default;
+$input-focus-bg: $input-bg !default;
+$input-focus-border-color: lighten(theme-color("primary"), 25%) !default;
+$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;
+$input-focus-color: $input-color !default;
+
+$input-placeholder-color: $gray-600 !default;
+
+$input-height-border: $input-btn-border-width * 2 !default;
-$input-color-placeholder: $gray-light !default;
+$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;
+$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;
-$input-height: (($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2)) !default;
-$input-height-lg: (($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2)) !default;
-$input-height-sm: (($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2)) !default;
+$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;
+$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;
+
+$input-height-inner-lg: ($font-size-sm * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;
+$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;
$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;
$form-text-margin-top: .25rem !default;
-$form-feedback-margin-top: $form-text-margin-top !default;
$form-check-margin-bottom: .5rem !default;
$form-check-input-gutter: 1.25rem !default;
@@ -429,7 +397,7 @@ $form-check-inline-margin-x: .75rem !default;
$form-group-margin-bottom: 1rem !default;
-$input-group-addon-bg: $gray-lighter !default;
+$input-group-addon-bg: $gray-200 !default;
$input-group-addon-border-color: $input-border-color !default;
$custom-control-gutter: 1.5rem !default;
@@ -441,38 +409,39 @@ $custom-control-indicator-bg: #ddd !default;
$custom-control-indicator-bg-size: 50% 50% !default;
$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;
-$custom-control-disabled-indicator-bg: $gray-lighter !default;
-$custom-control-disabled-description-color: $gray-light !default;
+$custom-control-indicator-disabled-bg: $gray-200 !default;
+$custom-control-description-disabled-color: $gray-600 !default;
-$custom-control-checked-indicator-color: $white !default;
-$custom-control-checked-indicator-bg: $brand-primary !default;
-$custom-control-checked-indicator-box-shadow: none !default;
+$custom-control-indicator-checked-color: $white !default;
+$custom-control-indicator-checked-bg: theme-color("primary") !default;
+$custom-control-indicator-checked-box-shadow: none !default;
-$custom-control-focus-indicator-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px $brand-primary !default;
+$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color("primary") !default;
-$custom-control-active-indicator-color: $white !default;
-$custom-control-active-indicator-bg: lighten($brand-primary, 35%) !default;
-$custom-control-active-indicator-box-shadow: none !default;
+$custom-control-indicator-active-color: $white !default;
+$custom-control-indicator-active-bg: lighten(theme-color("primary"), 35%) !default;
+$custom-control-indicator-active-box-shadow: none !default;
-$custom-checkbox-radius: $border-radius !default;
-$custom-checkbox-checked-icon: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-checked-indicator-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-checkbox-border-radius: $border-radius !default;
+$custom-checkbox-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
-$custom-checkbox-indeterminate-bg: $brand-primary !default;
-$custom-checkbox-indeterminate-indicator-color: $custom-control-checked-indicator-color !default;
-$custom-checkbox-indeterminate-icon: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indeterminate-indicator-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-checkbox-indeterminate-bg: theme-color("primary") !default;
+$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
+$custom-checkbox-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-checkbox-indeterminate-box-shadow: none !default;
-$custom-radio-radius: 50% !default;
-$custom-radio-checked-icon: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-checked-indicator-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-radio-border-radius: 50% !default;
+$custom-radio-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-select-padding-y: .375rem !default;
$custom-select-padding-x: .75rem !default;
+$custom-select-height: $input-height !default;
$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
$custom-select-line-height: $input-btn-line-height !default;
$custom-select-color: $input-color !default;
-$custom-select-disabled-color: $gray-light !default;
+$custom-select-disabled-color: $gray-600 !default;
$custom-select-bg: $white !default;
-$custom-select-disabled-bg: $gray-lighter !default;
+$custom-select-disabled-bg: $gray-200 !default;
$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
$custom-select-indicator-color: #333 !default;
$custom-select-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), "#", "%23") !default;
@@ -480,26 +449,27 @@ $custom-select-border-width: $input-btn-border-width !default;
$custom-select-border-color: $input-border-color !default;
$custom-select-border-radius: $border-radius !default;
-$custom-select-focus-border-color: lighten($brand-primary, 25%) !default;
+$custom-select-focus-border-color: lighten(theme-color("primary"), 25%) !default;
$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;
-$custom-select-sm-font-size: 75% !default;
+$custom-select-font-size-sm: 75% !default;
+$custom-select-height-sm: $input-height-sm !default;
$custom-file-height: 2.5rem !default;
$custom-file-width: 14rem !default;
-$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem $brand-primary !default;
+$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color("primary") !default;
$custom-file-padding-y: 1rem !default;
$custom-file-padding-x: .5rem !default;
$custom-file-line-height: 1.5 !default;
-$custom-file-color: $gray !default;
+$custom-file-color: $gray-700 !default;
$custom-file-bg: $white !default;
$custom-file-border-width: $border-width !default;
$custom-file-border-color: $input-border-color !default;
$custom-file-border-radius: $border-radius !default;
$custom-file-box-shadow: inset 0 .2rem .4rem rgba($black,.05) !default;
$custom-file-button-color: $custom-file-color !default;
-$custom-file-button-bg: $gray-lighter !default;
+$custom-file-button-bg: $gray-200 !default;
$custom-file-text: (
placeholder: (
en: "Choose file..."
@@ -510,15 +480,9 @@ $custom-file-text: (
) !default;
-// Form validation icons
-$form-icon-success-color: $brand-success !default;
-$form-icon-success: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$form-icon-success-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'/%3E%3C/svg%3E"), "#", "%23") !default;
-
-$form-icon-warning-color: $brand-warning !default;
-$form-icon-warning: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$form-icon-warning-color}' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E"), "#", "%23") !default;
-
-$form-icon-danger-color: $brand-danger !default;
-$form-icon-danger: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-icon-danger-color}' viewBox='-2 -2 7 7'%3E%3Cpath stroke='#{$form-icon-danger-color}' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E"), "#", "%23") !default;
+// Form validation
+$form-feedback-valid-color: theme-color("success") !default;
+$form-feedback-invalid-color: theme-color("danger") !default;
// Dropdowns
@@ -531,22 +495,22 @@ $dropdown-margin-top: .125rem !default;
$dropdown-bg: $white !default;
$dropdown-border-color: rgba($black,.15) !default;
$dropdown-border-width: $border-width !default;
-$dropdown-divider-bg: $gray-lighter !default;
+$dropdown-divider-bg: $gray-200 !default;
$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;
-$dropdown-link-color: $gray-dark !default;
-$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
-$dropdown-link-hover-bg: $gray-lightest !default;
+$dropdown-link-color: $gray-900 !default;
+$dropdown-link-hover-color: darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg: $gray-100 !default;
$dropdown-link-active-color: $component-active-color !default;
$dropdown-link-active-bg: $component-active-bg !default;
-$dropdown-link-disabled-color: $gray-light !default;
+$dropdown-link-disabled-color: $gray-600 !default;
$dropdown-item-padding-y: .25rem !default;
$dropdown-item-padding-x: 1.5rem !default;
-$dropdown-header-color: $gray-light !default;
+$dropdown-header-color: $gray-600 !default;
// Z-index master list
@@ -566,19 +530,19 @@ $zindex-tooltip: 1070 !default;
$nav-link-padding-y: .5rem !default;
$nav-link-padding-x: 1rem !default;
-$nav-disabled-link-color: $gray-light !default;
+$nav-link-disabled-color: $gray-600 !default;
$nav-tabs-border-color: #ddd !default;
$nav-tabs-border-width: $border-width !default;
$nav-tabs-border-radius: $border-radius !default;
-$nav-tabs-link-hover-border-color: $gray-lighter !default;
-$nav-tabs-active-link-color: $gray !default;
-$nav-tabs-active-link-bg: $body-bg !default;
-$nav-tabs-active-link-border-color: #ddd !default;
+$nav-tabs-link-hover-border-color: $gray-200 !default;
+$nav-tabs-link-active-color: $gray-700 !default;
+$nav-tabs-link-active-bg: $body-bg !default;
+$nav-tabs-link-active-border-color: #ddd !default;
$nav-pills-border-radius: $border-radius !default;
-$nav-pills-active-link-color: $component-active-color !default;
-$nav-pills-active-link-bg: $component-active-bg !default;
+$nav-pills-link-active-color: $component-active-color !default;
+$nav-pills-link-active-bg: $component-active-bg !default;
// Navbar
@@ -596,12 +560,12 @@ $navbar-toggler-padding-x: .75rem !default;
$navbar-toggler-font-size: $font-size-lg !default;
$navbar-toggler-border-radius: $btn-border-radius !default;
-$navbar-inverse-color: rgba($white,.5) !default;
-$navbar-inverse-hover-color: rgba($white,.75) !default;
-$navbar-inverse-active-color: rgba($white,1) !default;
-$navbar-inverse-disabled-color: rgba($white,.25) !default;
-$navbar-inverse-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-inverse-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
-$navbar-inverse-toggler-border-color: rgba($white,.1) !default;
+$navbar-dark-color: rgba($white,.5) !default;
+$navbar-dark-hover-color: rgba($white,.75) !default;
+$navbar-dark-active-color: rgba($white,1) !default;
+$navbar-dark-disabled-color: rgba($white,.25) !default;
+$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
+$navbar-dark-toggler-border-color: rgba($white,.1) !default;
$navbar-light-color: rgba($black,.5) !default;
$navbar-light-hover-color: rgba($black,.7) !default;
@@ -626,14 +590,14 @@ $pagination-border-width: $border-width !default;
$pagination-border-color: #ddd !default;
$pagination-hover-color: $link-hover-color !default;
-$pagination-hover-bg: $gray-lighter !default;
+$pagination-hover-bg: $gray-200 !default;
$pagination-hover-border-color: #ddd !default;
$pagination-active-color: $white !default;
-$pagination-active-bg: $brand-primary !default;
-$pagination-active-border-color: $brand-primary !default;
+$pagination-active-bg: theme-color("primary") !default;
+$pagination-active-border-color: theme-color("primary") !default;
-$pagination-disabled-color: $gray-light !default;
+$pagination-disabled-color: $gray-600 !default;
$pagination-disabled-bg: $white !default;
$pagination-disabled-border-color: #ddd !default;
@@ -641,29 +605,7 @@ $pagination-disabled-border-color: #ddd !default;
// Jumbotron
$jumbotron-padding: 2rem !default;
-$jumbotron-bg: $gray-lighter !default;
-
-
-// Form states and alerts
-//
-// Define colors for form feedback states and, by default, alerts.
-
-$state-success-text: #3c763d !default;
-$state-success-bg: #dff0d8 !default;
-$state-success-border-color: darken($state-success-bg, 5%) !default;
-
-$state-info-text: #31708f !default;
-$state-info-bg: #d9edf7 !default;
-$state-info-border-color: darken($state-info-bg, 7%) !default;
-
-$state-warning-text: #8a6d3b !default;
-$state-warning-bg: #fcf8e3 !default;
-$mark-bg: $state-warning-bg !default;
-$state-warning-border-color: darken($state-warning-bg, 5%) !default;
-
-$state-danger-text: #a94442 !default;
-$state-danger-bg: #f2dede !default;
-$state-danger-border-color: darken($state-danger-bg, 5%) !default;
+$jumbotron-bg: $gray-200 !default;
// Cards
@@ -674,14 +616,12 @@ $card-border-width: 1px !default;
$card-border-radius: $border-radius !default;
$card-border-color: rgba($black,.125) !default;
$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
-$card-cap-bg: $gray-lightest !default;
+$card-cap-bg: rgba($black, .03) !default;
$card-bg: $white !default;
-$card-inverse-link-hover-color: $white !default;
-
$card-img-overlay-padding: 1.25rem !default;
-$card-deck-margin: ($grid-gutter-width-base / 2) !default;
+$card-deck-margin: ($grid-gutter-width / 2) !default;
$card-columns-count: 3 !default;
$card-columns-gap: 1.25rem !default;
@@ -713,14 +653,14 @@ $popover-border-width: $border-width !default;
$popover-border-color: rgba($black,.2) !default;
$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;
-$popover-title-bg: darken($popover-bg, 3%) !default;
-$popover-title-color: $headings-color !default;
-$popover-title-padding-y: 8px !default;
-$popover-title-padding-x: 14px !default;
+$popover-header-bg: darken($popover-bg, 3%) !default;
+$popover-header-color: $headings-color !default;
+$popover-header-padding-y: 8px !default;
+$popover-header-padding-x: 14px !default;
-$popover-content-color: $body-color !default;
-$popover-content-padding-y: 9px !default;
-$popover-content-padding-x: 14px !default;
+$popover-body-color: $body-color !default;
+$popover-body-padding-y: 9px !default;
+$popover-body-padding-x: 14px !default;
$popover-arrow-width: 10px !default;
$popover-arrow-height: 5px !default;
@@ -732,15 +672,7 @@ $popover-arrow-outer-color: fade-in($popover-border-color, .05) !defau
// Badges
-$badge-default-bg: $gray-light !default;
-$badge-primary-bg: $brand-primary !default;
-$badge-success-bg: $brand-success !default;
-$badge-info-bg: $brand-info !default;
-$badge-warning-bg: $brand-warning !default;
-$badge-danger-bg: $brand-danger !default;
-
$badge-color: $white !default;
-$badge-link-hover-color: $white !default;
$badge-font-size: 75% !default;
$badge-font-weight: $font-weight-bold !default;
$badge-padding-y: .25em !default;
@@ -758,19 +690,19 @@ $badge-pill-border-radius: 10rem !default;
$modal-inner-padding: 15px !default;
$modal-dialog-margin: 10px !default;
-$modal-dialog-sm-up-margin-y: 30px !default;
+$modal-dialog-margin-y-sm-up: 30px !default;
$modal-title-line-height: $line-height-base !default;
$modal-content-bg: $white !default;
$modal-content-border-color: rgba($black,.2) !default;
$modal-content-border-width: $border-width !default;
-$modal-content-xs-box-shadow: 0 3px 9px rgba($black,.5) !default;
-$modal-content-sm-up-box-shadow: 0 5px 15px rgba($black,.5) !default;
+$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;
+$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;
$modal-backdrop-bg: $black !default;
$modal-backdrop-opacity: .5 !default;
-$modal-header-border-color: $gray-lighter !default;
+$modal-header-border-color: $gray-200 !default;
$modal-footer-border-color: $modal-header-border-color !default;
$modal-header-border-width: $modal-content-border-width !default;
$modal-footer-border-width: $modal-header-border-width !default;
@@ -794,38 +726,21 @@ $alert-border-radius: $border-radius !default;
$alert-link-font-weight: $font-weight-bold !default;
$alert-border-width: $border-width !default;
-$alert-success-bg: $state-success-bg !default;
-$alert-success-text: $state-success-text !default;
-$alert-success-border-color: $state-success-border-color !default;
-
-$alert-info-bg: $state-info-bg !default;
-$alert-info-text: $state-info-text !default;
-$alert-info-border-color: $state-info-border-color !default;
-
-$alert-warning-bg: $state-warning-bg !default;
-$alert-warning-text: $state-warning-text !default;
-$alert-warning-border-color: $state-warning-border-color !default;
-
-$alert-danger-bg: $state-danger-bg !default;
-$alert-danger-text: $state-danger-text !default;
-$alert-danger-border-color: $state-danger-border-color !default;
-
// Progress bars
$progress-height: 1rem !default;
$progress-font-size: .75rem !default;
-$progress-bg: $gray-lighter !default;
+$progress-bg: $gray-200 !default;
$progress-border-radius: $border-radius !default;
$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;
$progress-bar-color: $white !default;
-$progress-bar-bg: $brand-primary !default;
+$progress-bar-bg: theme-color("primary") !default;
$progress-bar-animation-timing: 1s linear infinite !default;
$progress-bar-transition: width .6s ease !default;
// List group
-$list-group-color: $body-color !default;
$list-group-bg: $white !default;
$list-group-border-color: rgba($black,.125) !default;
$list-group-border-width: $border-width !default;
@@ -834,19 +749,19 @@ $list-group-border-radius: $border-radius !default;
$list-group-item-padding-y: .75rem !default;
$list-group-item-padding-x: 1.25rem !default;
-$list-group-hover-bg: $gray-lightest !default;
+$list-group-hover-bg: $gray-100 !default;
$list-group-active-color: $component-active-color !default;
$list-group-active-bg: $component-active-bg !default;
$list-group-active-border-color: $list-group-active-bg !default;
-$list-group-disabled-color: $gray-light !default;
+$list-group-disabled-color: $gray-600 !default;
$list-group-disabled-bg: $list-group-bg !default;
-$list-group-link-color: $gray !default;
-$list-group-link-hover-color: $list-group-link-color !default;
+$list-group-action-color: $gray-700 !default;
+$list-group-action-hover-color: $list-group-action-color !default;
-$list-group-link-active-color: $list-group-color !default;
-$list-group-link-active-bg: $gray-lighter !default;
+$list-group-action-active-color: $body-color !default;
+$list-group-action-active-bg: $gray-200 !default;
// Image thumbnails
@@ -863,7 +778,7 @@ $thumbnail-transition: all .2s ease-in-out !default;
// Figures
$figure-caption-font-size: 90% !default;
-$figure-caption-color: $gray-light !default;
+$figure-caption-color: $gray-600 !default;
// Breadcrumbs
@@ -872,9 +787,9 @@ $breadcrumb-padding-y: .75rem !default;
$breadcrumb-padding-x: 1rem !default;
$breadcrumb-item-padding: .5rem !default;
-$breadcrumb-bg: $gray-lighter !default;
-$breadcrumb-divider-color: $gray-light !default;
-$breadcrumb-active-color: $gray-light !default;
+$breadcrumb-bg: $gray-200 !default;
+$breadcrumb-divider-color: $gray-600 !default;
+$breadcrumb-active-color: $gray-600 !default;
$breadcrumb-divider: "/" !default;
@@ -913,10 +828,10 @@ $code-font-size: 90% !default;
$code-padding-y: .2rem !default;
$code-padding-x: .4rem !default;
$code-color: #bd4147 !default;
-$code-bg: $gray-lightest !default;
+$code-bg: $gray-100 !default;
$kbd-color: $white !default;
-$kbd-bg: $gray-dark !default;
+$kbd-bg: $gray-900 !default;
-$pre-color: $gray-dark !default;
+$pre-color: $gray-900 !default;
$pre-scrollable-max-height: 340px !default;
diff --git a/assets/stylesheets/bootstrap/mixins/_alert.scss b/assets/stylesheets/bootstrap/mixins/_alert.scss
index 1e9307e..d938e89 100644
--- a/assets/stylesheets/bootstrap/mixins/_alert.scss
+++ b/assets/stylesheets/bootstrap/mixins/_alert.scss
@@ -1,14 +1,13 @@
-// Alerts
-
-@mixin alert-variant($background, $border, $body-color) {
- color: $body-color;
+@mixin alert-variant($background, $border, $color) {
+ color: $color;
background-color: $background;
border-color: $border;
hr {
border-top-color: darken($border, 5%);
}
+
.alert-link {
- color: darken($body-color, 10%);
+ color: darken($color, 10%);
}
}
diff --git a/assets/stylesheets/bootstrap/mixins/_badge.scss b/assets/stylesheets/bootstrap/mixins/_badge.scss
index 9fa44b6..257a6ab 100644
--- a/assets/stylesheets/bootstrap/mixins/_badge.scss
+++ b/assets/stylesheets/bootstrap/mixins/_badge.scss
@@ -1,11 +1,12 @@
-// Badges
-
-@mixin badge-variant($color) {
- background-color: $color;
+@mixin badge-variant($bg) {
+ @include color-yiq($bg);
+ background-color: $bg;
&[href] {
@include hover-focus {
- background-color: darken($color, 10%);
+ @include color-yiq($bg);
+ text-decoration: none;
+ background-color: darken($bg, 10%);
}
}
}
diff --git a/assets/stylesheets/bootstrap/mixins/_breakpoints.scss b/assets/stylesheets/bootstrap/mixins/_breakpoints.scss
index be1d034..9a374fe 100644
--- a/assets/stylesheets/bootstrap/mixins/_breakpoints.scss
+++ b/assets/stylesheets/bootstrap/mixins/_breakpoints.scss
@@ -93,7 +93,13 @@
$min: breakpoint-min($name, $breakpoints);
$max: breakpoint-max($name, $breakpoints);
- @media (min-width: $min) and (max-width: $max) {
- @content;
+ @if $min != null and $max != null {
+ @media (min-width: $min) and (max-width: $max) {
+ @content;
+ }
+ } @else if $max == null {
+ @include media-breakpoint-up($name)
+ } @else if $min == null {
+ @include media-breakpoint-down($name)
}
}
diff --git a/assets/stylesheets/bootstrap/mixins/_buttons.scss b/assets/stylesheets/bootstrap/mixins/_buttons.scss
index 47f2834..f7ec576 100644
--- a/assets/stylesheets/bootstrap/mixins/_buttons.scss
+++ b/assets/stylesheets/bootstrap/mixins/_buttons.scss
@@ -3,28 +3,25 @@
// Easily pump out default styles, as well as :hover, :focus, :active,
// and disabled options for all buttons
-@mixin button-variant($color, $background, $border) {
- $active-background: darken($background, 10%);
- $active-border: darken($border, 12%);
-
- color: $color;
+@mixin button-variant($background, $border, $active-background: darken($background, 7.5%), $active-border: darken($border, 10%)) {
+ @include color-yiq($background);
background-color: $background;
border-color: $border;
@include box-shadow($btn-box-shadow);
- // Hover and focus styles are shared
- @include hover {
- color: $color;
+ &:hover {
+ @include color-yiq($background);
background-color: $active-background;
border-color: $active-border;
}
+
&:focus,
&.focus {
// Avoid using mixin so we can pass custom focus shadow properly
@if $enable-shadows {
- box-shadow: $btn-box-shadow, 0 0 0 2px rgba($border, .5);
+ box-shadow: $btn-box-shadow, 0 0 0 3px rgba($border, .5);
} @else {
- box-shadow: 0 0 0 2px rgba($border, .5);
+ box-shadow: 0 0 0 3px rgba($border, .5);
}
}
@@ -38,7 +35,6 @@
&:active,
&.active,
.show > &.dropdown-toggle {
- color: $color;
background-color: $active-background;
background-image: none; // Remove the gradient for the pressed/active state
border-color: $active-border;
@@ -60,7 +56,7 @@
&:focus,
&.focus {
- box-shadow: 0 0 0 2px rgba($color, .5);
+ box-shadow: 0 0 0 3px rgba($color, .5);
}
&.disabled,
diff --git a/assets/stylesheets/bootstrap/mixins/_cards.scss b/assets/stylesheets/bootstrap/mixins/_cards.scss
deleted file mode 100644
index c32ca68..0000000
--- a/assets/stylesheets/bootstrap/mixins/_cards.scss
+++ /dev/null
@@ -1,53 +0,0 @@
-// Card variants
-
-@mixin card-variant($background, $border) {
- background-color: $background;
- border-color: $border;
-
- .card-header,
- .card-footer {
- background-color: transparent;
- }
-}
-
-@mixin card-outline-variant($color) {
- background-color: transparent;
- border-color: $color;
-
- .card-header,
- .card-footer {
- background-color: transparent;
- border-color: $color;
- }
-}
-
-//
-// Inverse text within a card for use with dark backgrounds
-//
-
-@mixin card-inverse {
- color: rgba(255,255,255,.65);
-
- .card-header,
- .card-footer {
- background-color: transparent;
- border-color: rgba(255,255,255,.2);
- }
- .card-header,
- .card-footer,
- .card-title,
- .card-blockquote {
- color: #fff;
- }
- .card-link,
- .card-text,
- .card-subtitle,
- .card-blockquote .blockquote-footer {
- color: rgba(255,255,255,.65);
- }
- .card-link {
- @include hover-focus {
- color: $card-inverse-link-hover-color;
- }
- }
-}
diff --git a/assets/stylesheets/bootstrap/mixins/_forms.scss b/assets/stylesheets/bootstrap/mixins/_forms.scss
index 8607955..4a1e0bc 100644
--- a/assets/stylesheets/bootstrap/mixins/_forms.scss
+++ b/assets/stylesheets/bootstrap/mixins/_forms.scss
@@ -1,37 +1,3 @@
-// Form validation states
-//
-// Used in _forms.scss to generate the form validation CSS for warnings, errors,
-// and successes.
-
-@mixin form-control-validation($color) {
- // Color the label and help text
- .form-control-feedback,
- .form-control-label,
- .col-form-label,
- .form-check-label,
- .custom-control {
- color: $color;
- }
-
- // Set the border and box shadow on specific inputs to match
- .form-control,
- .custom-select,
- .custom-file-control {
- border-color: $color;
-
- &:focus {
- @include box-shadow($input-box-shadow, 0 0 6px lighten($color, 20%));
- }
- }
-
- // Set validation states also for addons
- .input-group-addon {
- color: $color;
- background-color: lighten($color, 40%);
- border-color: $color;
- }
-}
-
// Form control focus state
//
// Generate a customized focus state and for any input with the specified color,
@@ -46,10 +12,70 @@
// contrast against a dark gray background.
@mixin form-control-focus() {
&:focus {
- color: $input-color-focus;
- background-color: $input-bg-focus;
- border-color: $input-border-color-focus;
+ color: $input-focus-color;
+ background-color: $input-focus-bg;
+ border-color: $input-focus-border-color;
outline: none;
- @include box-shadow($input-box-shadow-focus);
+ @include box-shadow($input-focus-box-shadow);
+ }
+}
+
+
+@mixin form-validation-state($state, $color) {
+
+ .form-control,
+ .custom-select {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ border-color: $color;
+
+ &:focus {
+ box-shadow: 0 0 0 .2rem rgba($color,.25);
+ }
+
+ ~ .invalid-feedback,
+ ~ .invalid-tooltip {
+ display: block;
+ }
+ }
+ }
+
+
+ // TODO: redo check markup lol crap
+ .form-check-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ + .form-check-label {
+ color: $color;
+ }
+ }
+ }
+
+ // custom radios and checks
+ .custom-control-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ ~ .custom-control-indicator {
+ background-color: rgba($color, .25);
+ }
+ ~ .custom-control-description {
+ color: $color;
+ }
+ }
+ }
+
+ // custom file
+ .custom-file-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ ~ .custom-file-control {
+ border-color: $color;
+
+ &::before { border-color: inherit; }
+ }
+ &:focus {
+ box-shadow: 0 0 0 .2rem rgba($color,.25);
+ }
+ }
}
}
diff --git a/assets/stylesheets/bootstrap/mixins/_grid-framework.scss b/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
index ba341a6..d8195dd 100644
--- a/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
+++ b/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
@@ -3,14 +3,14 @@
// Used only by Bootstrap to generate the correct number of grid classes given
// any value of `$grid-columns`.
-@mixin make-grid-columns($columns: $grid-columns, $gutters: $grid-gutter-widths, $breakpoints: $grid-breakpoints) {
+@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
// Common properties for all breakpoints
%grid-column {
position: relative;
width: 100%;
min-height: 1px; // Prevent columns from collapsing when empty
-
- @include make-gutters($gutters);
+ padding-right: ($gutter / 2);
+ padding-left: ($gutter / 2);
}
@each $breakpoint in map-keys($breakpoints) {
@@ -46,20 +46,9 @@
}
}
- @each $modifier in (pull, push) {
- @for $i from 0 through $columns {
- .#{$modifier}#{$infix}-#{$i} {
- @include make-col-modifier($modifier, $i, $columns)
- }
- }
- }
-
- // `$columns - 1` because offsetting by the width of an entire row isn't possible
- @for $i from 0 through ($columns - 1) {
- @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-xs-0
- .offset#{$infix}-#{$i} {
- @include make-col-modifier(offset, $i, $columns)
- }
+ @for $i from 1 through $columns {
+ .order#{$infix}-#{$i} {
+ order: $i;
}
}
}
diff --git a/assets/stylesheets/bootstrap/mixins/_grid.scss b/assets/stylesheets/bootstrap/mixins/_grid.scss
index b6d9805..5c00f57 100644
--- a/assets/stylesheets/bootstrap/mixins/_grid.scss
+++ b/assets/stylesheets/bootstrap/mixins/_grid.scss
@@ -2,17 +2,11 @@
//
// Generate semantic grid columns with these mixins.
-@mixin make-container($gutters: $grid-gutter-widths) {
+@mixin make-container() {
margin-right: auto;
margin-left: auto;
-
- @each $breakpoint in map-keys($gutters) {
- @include media-breakpoint-up($breakpoint) {
- $gutter: map-get($gutters, $breakpoint);
- padding-right: ($gutter / 2);
- padding-left: ($gutter / 2);
- }
- }
+ padding-right: ($grid-gutter-width / 2);
+ padding-left: ($grid-gutter-width / 2);
}
@@ -26,44 +20,22 @@
}
}
-@mixin make-gutters($gutters: $grid-gutter-widths) {
- @each $breakpoint in map-keys($gutters) {
- @include media-breakpoint-up($breakpoint) {
- $gutter: map-get($gutters, $breakpoint);
- padding-right: ($gutter / 2);
- padding-left: ($gutter / 2);
- }
- }
-}
-
-@mixin make-row($gutters: $grid-gutter-widths) {
+@mixin make-row() {
display: flex;
flex-wrap: wrap;
-
- @each $breakpoint in map-keys($gutters) {
- @include media-breakpoint-up($breakpoint) {
- $gutter: map-get($gutters, $breakpoint);
- margin-right: ($gutter / -2);
- margin-left: ($gutter / -2);
- }
- }
+ margin-right: ($grid-gutter-width / -2);
+ margin-left: ($grid-gutter-width / -2);
}
-@mixin make-col-ready($gutters: $grid-gutter-widths) {
+@mixin make-col-ready() {
position: relative;
// Prevent columns from becoming too narrow when at smaller grid tiers by
// always setting `width: 100%;`. This works because we use `flex` values
// later on to override this initial width.
width: 100%;
min-height: 1px; // Prevent collapsing
-
- @each $breakpoint in map-keys($gutters) {
- @include media-breakpoint-up($breakpoint) {
- $gutter: map-get($gutters, $breakpoint);
- padding-right: ($gutter / 2);
- padding-left: ($gutter / 2);
- }
- }
+ padding-right: ($grid-gutter-width / 2);
+ padding-left: ($grid-gutter-width / 2);
}
@mixin make-col($size, $columns: $grid-columns) {
@@ -73,26 +45,3 @@
// do not appear to require this.
max-width: percentage($size / $columns);
}
-
-@mixin make-col-offset($size, $columns: $grid-columns) {
- margin-left: percentage($size / $columns);
-}
-
-@mixin make-col-push($size, $columns: $grid-columns) {
- left: if($size > 0, percentage($size / $columns), auto);
-}
-
-@mixin make-col-pull($size, $columns: $grid-columns) {
- right: if($size > 0, percentage($size / $columns), auto);
-}
-
-@mixin make-col-modifier($type, $size, $columns) {
- // Work around the lack of dynamic mixin @include support (https://github.com/sass/sass/issues/626)
- @if $type == push {
- @include make-col-push($size, $columns);
- } @else if $type == pull {
- @include make-col-pull($size, $columns);
- } @else if $type == offset {
- @include make-col-offset($size, $columns);
- }
-}
diff --git a/assets/stylesheets/bootstrap/mixins/_pagination.scss b/assets/stylesheets/bootstrap/mixins/_pagination.scss
index 8cd9317..ff36eb6 100644
--- a/assets/stylesheets/bootstrap/mixins/_pagination.scss
+++ b/assets/stylesheets/bootstrap/mixins/_pagination.scss
@@ -4,6 +4,7 @@
.page-link {
padding: $padding-y $padding-x;
font-size: $font-size;
+ line-height: $line-height;
}
.page-item {
diff --git a/assets/stylesheets/bootstrap/utilities/_background.scss b/assets/stylesheets/bootstrap/utilities/_background.scss
index b9ac295..f85c13c 100644
--- a/assets/stylesheets/bootstrap/utilities/_background.scss
+++ b/assets/stylesheets/bootstrap/utilities/_background.scss
@@ -1,19 +1,5 @@
-//
-// Contextual backgrounds
-//
-
-.bg-faded {
- background-color: darken($body-bg, 3%);
+@each $color, $value in $theme-colors {
+ @include bg-variant('.bg-#{$color}', $value);
}
-@include bg-variant('.bg-primary', $brand-primary);
-
-@include bg-variant('.bg-success', $brand-success);
-
-@include bg-variant('.bg-info', $brand-info);
-
-@include bg-variant('.bg-warning', $brand-warning);
-
-@include bg-variant('.bg-danger', $brand-danger);
-
-@include bg-variant('.bg-inverse', $brand-inverse);
+.bg-transparent { background-color: transparent !important; }
diff --git a/assets/stylesheets/bootstrap/utilities/_borders.scss b/assets/stylesheets/bootstrap/utilities/_borders.scss
index b256881..0548058 100644
--- a/assets/stylesheets/bootstrap/utilities/_borders.scss
+++ b/assets/stylesheets/bootstrap/utilities/_borders.scss
@@ -2,30 +2,41 @@
// Border
//
+.border { border: 1px solid $gray-200 !important; }
.border-0 { border: 0 !important; }
.border-top-0 { border-top: 0 !important; }
.border-right-0 { border-right: 0 !important; }
.border-bottom-0 { border-bottom: 0 !important; }
.border-left-0 { border-left: 0 !important; }
+@each $color, $value in $theme-colors {
+ .border-#{$color} {
+ border-color: $value !important;
+ }
+}
+
//
// Border-radius
//
.rounded {
- @include border-radius($border-radius);
+ border-radius: $border-radius !important;
}
.rounded-top {
- @include border-top-radius($border-radius);
+ border-top-left-radius: $border-radius !important;
+ border-top-right-radius: $border-radius !important;
}
.rounded-right {
- @include border-right-radius($border-radius);
+ border-top-right-radius: $border-radius !important;
+ border-bottom-right-radius: $border-radius !important;
}
.rounded-bottom {
- @include border-bottom-radius($border-radius);
+ border-bottom-right-radius: $border-radius !important;
+ border-bottom-left-radius: $border-radius !important;
}
.rounded-left {
- @include border-left-radius($border-radius);
+ border-top-left-radius: $border-radius !important;
+ border-bottom-left-radius: $border-radius !important;
}
.rounded-circle {
diff --git a/assets/stylesheets/bootstrap/_responsive-embed.scss b/assets/stylesheets/bootstrap/utilities/_embed.scss
index d3362b6..d3362b6 100644
--- a/assets/stylesheets/bootstrap/_responsive-embed.scss
+++ b/assets/stylesheets/bootstrap/utilities/_embed.scss
diff --git a/assets/stylesheets/bootstrap/utilities/_flex.scss b/assets/stylesheets/bootstrap/utilities/_flex.scss
index cc69678..b28c0b9 100644
--- a/assets/stylesheets/bootstrap/utilities/_flex.scss
+++ b/assets/stylesheets/bootstrap/utilities/_flex.scss
@@ -6,10 +6,6 @@
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
- .order#{$infix}-first { order: -1; }
- .order#{$infix}-last { order: 1; }
- .order#{$infix}-0 { order: 0; }
-
.flex#{$infix}-row { flex-direction: row !important; }
.flex#{$infix}-column { flex-direction: column !important; }
.flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }
diff --git a/assets/stylesheets/bootstrap/utilities/_position.scss b/assets/stylesheets/bootstrap/utilities/_position.scss
index 2cf08bf..74b8d39 100644
--- a/assets/stylesheets/bootstrap/utilities/_position.scss
+++ b/assets/stylesheets/bootstrap/utilities/_position.scss
@@ -17,7 +17,9 @@
}
.sticky-top {
- position: sticky;
- top: 0;
- z-index: $zindex-sticky;
+ @supports (position: sticky) {
+ position: sticky;
+ top: 0;
+ z-index: $zindex-sticky;
+ }
}
diff --git a/assets/stylesheets/bootstrap/utilities/_text.scss b/assets/stylesheets/bootstrap/utilities/_text.scss
index 4ac9053..d337e0d 100644
--- a/assets/stylesheets/bootstrap/utilities/_text.scss
+++ b/assets/stylesheets/bootstrap/utilities/_text.scss
@@ -34,25 +34,13 @@
// Contextual colors
-.text-white {
- color: #fff !important;
-}
-
-@include text-emphasis-variant('.text-muted', $text-muted);
-
-@include text-emphasis-variant('.text-primary', $brand-primary);
-
-@include text-emphasis-variant('.text-success', $brand-success);
+.text-white { color: #fff !important; }
-@include text-emphasis-variant('.text-info', $brand-info);
-
-@include text-emphasis-variant('.text-warning', $brand-warning);
-
-@include text-emphasis-variant('.text-danger', $brand-danger);
-
-// Font color
+@each $color, $value in $theme-colors {
+ @include text-emphasis-variant('.text-#{$color}', $value);
+}
-@include text-emphasis-variant('.text-gray-dark', $gray-dark);
+.text-muted { color: $text-muted !important; }
// Misc