diff options
Diffstat (limited to 'scss')
-rw-r--r-- | scss/_helpers.scss | 1 | ||||
-rw-r--r-- | scss/_root.scss | 17 | ||||
-rw-r--r-- | scss/_variables.scss | 3 | ||||
-rw-r--r-- | scss/helpers/_focus-ring.scss | 16 |
4 files changed, 29 insertions, 8 deletions
diff --git a/scss/_helpers.scss b/scss/_helpers.scss index 644b693fbc..6126781cde 100644 --- a/scss/_helpers.scss +++ b/scss/_helpers.scss @@ -1,6 +1,7 @@ @import "helpers/clearfix"; @import "helpers/color-bg"; @import "helpers/colored-links"; +@import "helpers/focus-ring"; @import "helpers/ratio"; @import "helpers/position"; @import "helpers/stacks"; diff --git a/scss/_root.scss b/scss/_root.scss index 6eff503cee..7061bcc548 100644 --- a/scss/_root.scss +++ b/scss/_root.scss @@ -77,12 +77,15 @@ // Focus styles // scss-docs-start root-focus-variables - --#{$variable-prefix}focus-ring-width: #{$focus-ring-width}; - --#{$variable-prefix}focus-ring-opacity: #{$focus-ring-opacity}; - --#{$variable-prefix}focus-ring-color: #{$focus-ring-color}; - --#{$variable-prefix}focus-ring-blur: #{$focus-ring-blur}; - // By default, there is no `--bs-focus-ring-offset-x` or `--bs-focus-ring-offset-y`, but we provide CSS variables with fallbacks to initial `0` values - --#{$variable-prefix}focus-ring-box-shadow: var(--#{$variable-prefix}focus-ring-offset-x, 0) var(--#{$variable-prefix}focus-ring-offset-y, 0) var(--#{$variable-prefix}focus-ring-blur) var(--#{$variable-prefix}focus-ring-width) var(--#{$variable-prefix}focus-ring-color); + --#{$prefix}focus-ring-width: #{$focus-ring-width}; + --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity}; + --#{$prefix}focus-ring-color: #{$focus-ring-color}; + --#{$prefix}focus-ring-blur: #{$focus-ring-blur}; + // --#{$prefix}focus-ring-offset: 0 0 0 1px var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg)); + --#{$prefix}focus-ring-offset-width: 1px; + --#{$prefix}focus-ring-offset-color: var(--#{$prefix}body-bg); + + // By default, there is no `--bs-focus-ring-x` or `--bs-focus-ring-y`, but we provide CSS variables with fallbacks to initial `0` values + --#{$prefix}focus-ring-box-shadow: 0 0 0 var(--#{$prefix}focus-ring-offset-width) var(--#{$prefix}focus-ring-offset-color), var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color); // scss-docs-end root-focus-variables - // stylelint-enable custom-property-empty-line-before } diff --git a/scss/_variables.scss b/scss/_variables.scss index 6cb065f11b..b956d6f045 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -515,7 +515,8 @@ $focus-ring-width: .25rem !default; $focus-ring-opacity: .25 !default; $focus-ring-color: rgba($primary, $focus-ring-opacity) !default; $focus-ring-blur: 0 !default; -$focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default; +$focus-ring-offset: 0 0 0 1px var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg)) !default; +$focus-ring-box-shadow: $focus-ring-offset, 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default; // scss-docs-end focus-ring-variables // scss-docs-start caret-variables diff --git a/scss/helpers/_focus-ring.scss b/scss/helpers/_focus-ring.scss new file mode 100644 index 0000000000..0a9509b1d0 --- /dev/null +++ b/scss/helpers/_focus-ring.scss @@ -0,0 +1,16 @@ +// stylelint-disable indentation, function-disallowed-list, declaration-colon-newline-after, value-list-comma-newline-after, value-list-comma-space-after + +.focus-ring:focus { + outline: 0; + // By default, there is no `--bs-focus-ring-x` or `--bs-focus-ring-y`, but we provide CSS variables with fallbacks to initial `0` values + box-shadow: 0 0 0 var(--#{$prefix}focus-ring-offset-width) var(--#{$prefix}focus-ring-offset-color, var(--#{$prefix}body-bg)), + var(--#{$prefix}focus-ring-x, 0) + var(--#{$prefix}focus-ring-y, 0) + var(--#{$prefix}focus-ring-blur) + calc(var(--#{$prefix}focus-ring-width) + var(--#{$prefix}focus-ring-offset-width)) + var(--#{$prefix}focus-ring-color); +} + +@each $state, $value in $theme-colors { + .focus-ring-#{$state}:focus { --#{$prefix}focus-ring-color: rgba(#{to-rgb($value)}, var(--bs-focus-ring-opacity)); } +} |