From 9f6ff84aa58caf1e519c27c6db3273532dd41193 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Wed, 27 Apr 2022 17:18:04 -0700 Subject: [PATCH] Start component changes --- scss/_accordion.scss | 2 +- scss/_close.scss | 8 + scss/_root.scss | 30 ++-- scss/_variables-dark.scss | 25 +++ scss/_variables.scss | 162 +++++++++--------- scss/forms/_form-check.scss | 9 + scss/forms/_form-select.scss | 8 + site/assets/scss/_component-examples.scss | 4 +- site/assets/scss/_content.scss | 2 +- site/assets/scss/_masthead.scss | 11 +- site/assets/scss/_navbar.scss | 3 +- site/content/docs/5.1/components/accordion.md | 2 +- site/content/docs/5.1/components/modal.md | 2 +- site/content/docs/5.1/components/navbar.md | 58 +++---- site/content/docs/5.1/components/offcanvas.md | 2 +- site/content/docs/5.1/components/toasts.md | 18 +- site/content/docs/5.1/customize/color.md | 30 ++-- 17 files changed, 222 insertions(+), 154 deletions(-) create mode 100644 scss/_variables-dark.scss diff --git a/scss/_accordion.scss b/scss/_accordion.scss index b306540d7..a7fe07422 100644 --- a/scss/_accordion.scss +++ b/scss/_accordion.scss @@ -4,7 +4,7 @@ .accordion { // scss-docs-start accordion-css-vars - --#{$prefix}accordion-color: #{color-contrast($accordion-bg)}; + --#{$prefix}accordion-color: #{$accordion-color}; --#{$prefix}accordion-bg: #{$accordion-bg}; --#{$prefix}accordion-transition: #{$accordion-transition}; --#{$prefix}accordion-border-color: #{$accordion-border-color}; diff --git a/scss/_close.scss b/scss/_close.scss index a0813de8d..167104c99 100644 --- a/scss/_close.scss +++ b/scss/_close.scss @@ -38,3 +38,11 @@ .btn-close-white { filter: $btn-close-white-filter; } + +@if $enable-dark-mode { + [data-theme="dark"] { + .btn-close { + filter: $btn-close-white-filter; + } + } +} diff --git a/scss/_root.scss b/scss/_root.scss index b17b1c140..f7f57f4a8 100644 --- a/scss/_root.scss +++ b/scss/_root.scss @@ -88,23 +88,28 @@ --#{$prefix}border-radius-pill: #{$border-radius-pill}; // scss-docs-end root-border-var + --#{$prefix}emphasis-color: #{$emphasis-color}; + --#{$prefix}accent-color: #{$accent-color}; + --#{$prefix}accent-bg: #{$accent-bg}; + --#{$prefix}accent-border: #{$accent-border}; + // TODO: move to form components? or make global? --#{$prefix}form-control-bg: var(--#{$prefix}body-bg); --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg); } [data-theme="dark"] { - --#{$prefix}primary: #{$blue-300}; - --#{$prefix}success: #{$green-300}; - --#{$prefix}danger: #{$red-300}; - --#{$prefix}warning: #{$yellow-300}; - --#{$prefix}info: #{$cyan-300}; + // --#{$prefix}primary: #{$blue-300}; + // --#{$prefix}success: #{$green-300}; + // --#{$prefix}danger: #{$red-300}; + // --#{$prefix}warning: #{$yellow-300}; + // --#{$prefix}info: #{$cyan-300}; - --#{$prefix}primary-rgb: #{to-rgb($blue-300)}; - --#{$prefix}success-rgb: #{to-rgb($green-300)}; - --#{$prefix}danger-rgb: #{to-rgb($red-300)}; - --#{$prefix}warning-rgb: #{to-rgb($yellow-300)}; - --#{$prefix}info-rgb: #{to-rgb($cyan-300)}; + // --#{$prefix}primary-rgb: #{to-rgb($blue-300)}; + // --#{$prefix}success-rgb: #{to-rgb($green-300)}; + // --#{$prefix}danger-rgb: #{to-rgb($red-300)}; + // --#{$prefix}warning-rgb: #{to-rgb($yellow-300)}; + // --#{$prefix}info-rgb: #{to-rgb($cyan-300)}; --#{$prefix}body-color: #{$body-color-dark}; --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)}; @@ -121,6 +126,11 @@ --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark}; --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)}; + --#{$prefix}emphasis-color: #{$emphasis-color-dark}; + --#{$prefix}accent-color: #{$accent-color-dark}; + --#{$prefix}accent-bg: #{$accent-bg-dark}; + --#{$prefix}accent-border: #{$accent-border-dark}; + --#{$prefix}heading-color: #{$headings-color-dark}; --#{$prefix}link-color: #{$link-color-dark}; diff --git a/scss/_variables-dark.scss b/scss/_variables-dark.scss new file mode 100644 index 000000000..54cddee92 --- /dev/null +++ b/scss/_variables-dark.scss @@ -0,0 +1,25 @@ +// Dark color mode variables +// +// Custom variables for the `[data-theme="dark"]` theme. Use this as a starting point for your own custom color modes by creating a new theme-specific file like `_variables-dark.scss` and adding the variables you need. + +$body-color-dark: $gray-500 !default; +$body-bg-dark: $gray-900 !default; +$body-secondary-color-dark: rgba($body-color-dark, .75) !default; +$body-secondary-bg-dark: $gray-800 !default; +$body-tertiary-color-dark: rgba($body-color-dark, .5) !default; +$body-tertiary-bg-dark: mix($gray-800, $gray-900, 50%) !default; +$emphasis-color-dark: $white !default; +$accent-bg-dark: $blue-300 !default; +$accent-color-dark: color-contrast($accent-bg-dark) !default; +$accent-border-dark: $blue-400 !default; +$border-color-dark: $gray-700 !default; +$headings-color-dark: #fff !default; +$link-color-dark: $blue-300 !default; +$link-hover-color-dark: $blue-200 !default; +$code-color-dark: $pink-300 !default; + +$form-select-indicator-color-dark: $body-color-dark !default; +$form-select-indicator-dark: url("data:image/svg+xml,") !default; + +$form-switch-color-dark: rgba($white, .25) !default; +$form-switch-bg-image-dark: url("data:image/svg+xml,") !default; diff --git a/scss/_variables.scss b/scss/_variables.scss index b6c59000e..4d0628357 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -350,6 +350,7 @@ $enable-validation-icons: true !default; $enable-negative-margins: false !default; $enable-deprecation-messages: true !default; $enable-important-utilities: true !default; +$enable-dark-mode: true !default; // Prefix for :root CSS variables @@ -402,20 +403,17 @@ $body-text-align: null !default; $body-color: $gray-900 !default; $body-bg: $white !default; -$body-color-dark: $gray-500 !default; -$body-bg-dark: $gray-900 !default; - $body-secondary-color: rgba($body-color, .75) !default; $body-secondary-bg: $gray-200 !default; $body-tertiary-color: rgba($body-color, .5) !default; $body-tertiary-bg: $gray-100 !default; -$body-secondary-color-dark: rgba($body-color-dark, .75) !default; -$body-secondary-bg-dark: $gray-800 !default; +$emphasis-color: $black !default; -$body-tertiary-color-dark: rgba($body-color-dark, .5) !default; -$body-tertiary-bg-dark: mix($gray-800, $gray-900, 50%) !default; +$accent-bg: $blue !default; +$accent-color: color-contrast($accent-bg) !default; +$accent-border: $blue-500 !default; // Links // @@ -430,9 +428,6 @@ $link-hover-decoration: null !default; $stretched-link-pseudo-element: after !default; $stretched-link-z-index: 1 !default; -$link-color-dark: $blue-300 !default; -$link-hover-color-dark: $blue-200 !default; - // Paragraphs // // Style p element. @@ -504,8 +499,7 @@ $border-widths: ( 5: 5px ) !default; $border-style: solid !default; -$border-color: rgba($black, .15) !default; -$border-color-dark: rgba($white, .15) !default; +$border-color: $gray-300 !default; // scss-docs-end border-variables // scss-docs-start border-radius-variables @@ -609,7 +603,6 @@ $headings-font-style: null !default; $headings-font-weight: 500 !default; $headings-line-height: 1.2 !default; $headings-color: null !default; -$headings-color-dark: #fff !default; // scss-docs-end headings-variables // scss-docs-start display-headings @@ -934,7 +927,7 @@ $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-bg: var(--#{$prefix}tertiary-bg) !default; $input-group-addon-border-color: $input-border-color !default; // scss-docs-end input-group-variables @@ -949,7 +942,7 @@ $form-select-line-height: $input-line-height !default; $form-select-color: $input-color !default; $form-select-bg: $input-bg !default; $form-select-disabled-color: null !default; -$form-select-disabled-bg: $gray-200 !default; +$form-select-disabled-bg: $input-disabled-bg !default; $form-select-disabled-border-color: $input-disabled-border-color !default; $form-select-bg-position: right $form-select-padding-x center !default; $form-select-bg-size: 16px 12px !default; // In pixels because image dimensions @@ -986,7 +979,7 @@ $form-select-transition: $input-transition !default; $form-range-track-width: 100% !default; $form-range-track-height: .5rem !default; $form-range-track-cursor: pointer !default; -$form-range-track-bg: $gray-300 !default; +$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default; $form-range-track-border-radius: 1rem !default; $form-range-track-box-shadow: $box-shadow-inset !default; @@ -999,14 +992,14 @@ $form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !defa $form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default; $form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge $form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default; -$form-range-thumb-disabled-bg: $gray-500 !default; +$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !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; +$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default; +$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default; // scss-docs-end form-file-variables // scss-docs-start form-floating-variables @@ -1078,19 +1071,19 @@ $nav-link-font-weight: null !default; $nav-link-color: var(--#{$prefix}link-color) !default; $nav-link-hover-color: var(--#{$prefix}link-hover-color) !default; $nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default; -$nav-link-disabled-color: $gray-600 !default; +$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default; -$nav-tabs-border-color: $gray-300 !default; -$nav-tabs-border-width: $border-width !default; -$nav-tabs-border-radius: $border-radius !default; -$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default; -$nav-tabs-link-active-color: $gray-700 !default; -$nav-tabs-link-active-bg: $body-bg !default; -$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default; +$nav-tabs-border-color: var(--#{$prefix}border-color) !default; +$nav-tabs-border-width: var(--#{$prefix}border-width) !default; +$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default; +$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default; +$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default; +$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default; +$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default; $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; +$nav-pills-link-active-color: var(--#{$prefix}accent-color) !default; +$nav-pills-link-active-bg: var(--#{$prefix}accent-bg) !default; // scss-docs-end nav-variables @@ -1125,10 +1118,10 @@ $navbar-dark-disabled-color: rgba($white, .25) !default; $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,") !default; $navbar-dark-toggler-border-color: rgba($white, .1) !default; -$navbar-light-color: rgba($black, .55) !default; -$navbar-light-hover-color: rgba($black, .7) !default; -$navbar-light-active-color: rgba($black, .9) !default; -$navbar-light-disabled-color: rgba($black, .3) !default; +$navbar-light-color: var(--#{$prefix}secondary-color) !default; +$navbar-light-hover-color: var(--#{$prefix}body-color) !default; +$navbar-light-active-color: var(--#{$prefix}emphasis-color) !default; +$navbar-light-disabled-color: var(--#{$prefix}tertiary-color) !default; $navbar-light-toggler-icon-bg: url("data:image/svg+xml,") !default; $navbar-light-toggler-border-color: rgba($black, .1) !default; @@ -1208,28 +1201,28 @@ $pagination-padding-x-lg: 1.5rem !default; $pagination-font-size: $font-size-base !default; $pagination-color: var(--#{$prefix}link-color) !default; -$pagination-bg: $white !default; -$pagination-border-radius: $border-radius !default; -$pagination-border-width: $border-width !default; +$pagination-bg: var(--#{$prefix}body-bg) !default; +$pagination-border-radius: var(--#{$prefix}border-radius) !default; +$pagination-border-width: var(--#{$prefix}border-width) !default; $pagination-margin-start: calc($pagination-border-width * -1) !default; // stylelint-disable-line function-disallowed-list -$pagination-border-color: $gray-300 !default; +$pagination-border-color: var(--#{$prefix}border-color) !default; $pagination-focus-color: var(--#{$prefix}link-hover-color) !default; -$pagination-focus-bg: $gray-200 !default; +$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default; $pagination-focus-box-shadow: $input-btn-focus-box-shadow !default; $pagination-focus-outline: 0 !default; $pagination-hover-color: var(--#{$prefix}link-hover-color) !default; -$pagination-hover-bg: $gray-200 !default; -$pagination-hover-border-color: $gray-300 !default; +$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default; +$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this? -$pagination-active-color: $component-active-color !default; -$pagination-active-bg: $component-active-bg !default; -$pagination-active-border-color: $pagination-active-bg !default; +$pagination-active-color: var(--#{$prefix}accent-color) !default; +$pagination-active-bg: var(--#{$prefix}accent-bg) !default; +$pagination-active-border-color: var(--#{$prefix}accent-bg) !default; -$pagination-disabled-color: $gray-600 !default; -$pagination-disabled-bg: $white !default; -$pagination-disabled-border-color: $gray-300 !default; +$pagination-disabled-color: var(--#{$prefix}secondary-color) !default; +$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default; +$pagination-disabled-border-color: var(--#{$prefix}border-color) !default; $pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default; @@ -1251,18 +1244,18 @@ $placeholder-opacity-min: .2 !default; $card-spacer-y: $spacer !default; $card-spacer-x: $spacer !default; $card-title-spacer-y: $spacer * .5 !default; -$card-border-width: $border-width !default; +$card-border-width: var(--#{$prefix}border-width) !default; $card-border-color: var(--#{$prefix}border-color) !default; -$card-border-radius: $border-radius !default; +$card-border-radius: var(--#{$prefix}border-radius) !default; $card-box-shadow: null !default; $card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default; $card-cap-padding-y: $card-spacer-y * .5 !default; $card-cap-padding-x: $card-spacer-x !default; -$card-cap-bg: rgba($black, .03) !default; +$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default; $card-cap-color: null !default; $card-height: null !default; $card-color: null !default; -$card-bg: $white !default; +$card-bg: var(--#{$prefix}body-bg) !default; $card-img-overlay-padding: $spacer !default; $card-group-margin: $grid-gutter-width * .5 !default; // scss-docs-end card-variables @@ -1273,10 +1266,10 @@ $card-group-margin: $grid-gutter-width * .5 !default; $accordion-padding-y: 1rem !default; $accordion-padding-x: 1.25rem !default; $accordion-color: var(--#{$prefix}body-color) !default; -$accordion-bg: $body-bg !default; -$accordion-border-width: $border-width !default; +$accordion-bg: var(--#{$prefix}body-bg) !default; +$accordion-border-width: var(--#{$prefix}border-width) !default; $accordion-border-color: var(--#{$prefix}border-color) !default; -$accordion-border-radius: $border-radius !default; +$accordion-border-radius: var(--#{$prefix}border-radius) !default; $accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default; $accordion-body-padding-y: $accordion-padding-y !default; @@ -1308,9 +1301,9 @@ $accordion-button-active-icon: url("data:image/svg+xml,}} -
Navbar @@ -280,7 +280,7 @@ Various buttons are supported as part of these navbar forms, too. This is also a Navbars may contain bits of text with the help of `.navbar-text`. This class adjusts vertical alignment and horizontal spacing for strings of text. {{< example >}} -