diff options
author | dsrkafuu | 2021-06-09 10:31:54 +0800 |
---|---|---|
committer | dsrkafuu | 2021-06-09 10:31:54 +0800 |
commit | 787b7865fba31fd56009a85f214f829b9d85cc04 (patch) | |
tree | 231c5deebcb813723046e6ac1f1b48d6ed055409 /assets/scss/_primer/support/mixins | |
parent | a138423ec2588d76a96f90fdcd8d9606276355e3 (diff) | |
download | hugo-theme-fuji-787b7865fba31fd56009a85f214f829b9d85cc04.tar.gz hugo-theme-fuji-787b7865fba31fd56009a85f214f829b9d85cc04.tar.bz2 hugo-theme-fuji-787b7865fba31fd56009a85f214f829b9d85cc04.zip |
build: update primer
Diffstat (limited to 'assets/scss/_primer/support/mixins')
-rw-r--r-- | assets/scss/_primer/support/mixins/buttons.scss | 172 | ||||
-rw-r--r-- | assets/scss/_primer/support/mixins/color-modes.scss | 106 | ||||
-rw-r--r-- | assets/scss/_primer/support/mixins/misc.scss | 21 |
3 files changed, 115 insertions, 184 deletions
diff --git a/assets/scss/_primer/support/mixins/buttons.scss b/assets/scss/_primer/support/mixins/buttons.scss deleted file mode 100644 index ca8b59f..0000000 --- a/assets/scss/_primer/support/mixins/buttons.scss +++ /dev/null @@ -1,172 +0,0 @@ - -// TODO: See if the mixins below can be deprecated -// Might still be needed for .btn-blue -// ------------------------------------------------------------------ - -// Button color generator for primary and themed buttons - -// New button hotness -@mixin btn-solid($color, $bg, $bg2) { - color: $color; - background-color: $bg2; - background-image: linear-gradient(-180deg, $bg 0%, $bg2 90%); - - @if $bg == $gray-000 { - &:focus, - &.focus { - box-shadow: $btn-input-focus-shadow; - } - - &:hover, - &.hover { - background-color: darken($bg2, 3%); - background-image: linear-gradient(-180deg, darken($bg, 3%) 0%, darken($bg2, 3%) 90%); - background-position: 0 -$em-spacer-5; - border-color: rgba($black, 0.35); - } - - &:active, - &.selected, - &[aria-selected=true], - [open] > & { - background-color: darken(desaturate($bg, 10%), 6%); - background-image: none; - border-color: rgba($black, 0.35); // repeat to avoid shift on click-drag off of button - box-shadow: $btn-active-shadow; - } - - &:disabled, - &.disabled, - &[aria-disabled=true] { - color: rgba($color, 0.4); - background-color: $bg2; - background-image: none; - border-color: $border-color-button; - box-shadow: none; - } - - } - @else { - &:focus, - &.focus { - box-shadow: 0 0 0 0.2em rgba($bg, 0.4); - } - - &:hover, - &.hover { - background-color: darken($bg2, 2%); - background-image: linear-gradient(-180deg, darken($bg, 2%) 0%, darken($bg2, 2%) 90%); - background-position: 0 -$em-spacer-5; - border-color: $black-fade-50; - } - - &:active, - &.selected, - &[aria-selected=true], - [open] > & { - background-color: darken(mix($bg, $bg2, 50%), 7%); - background-image: none; - border-color: $black-fade-50; // repeat to avoid shift on click-drag off of button - box-shadow: $btn-active-shadow; - } - - &:disabled, - &.disabled, - &[aria-disabled=true] { - color: rgba($color, 0.75); - background-color: mix($bg2, $white, 50%); - background-image: none; - border-color: $border-color-button; - box-shadow: none; - } - - .Counter { - color: darken($bg, 8%); - background-color: $white; - } - } -} - -// Inverse button hover style -@mixin btn-inverse($color, $bg, $bg2) { - color: $color; - background-color: $bg; - background-image: linear-gradient(-180deg, $bg 0%, $bg2 90%); - - &:focus { - box-shadow: 0 0 0 0.2em rgba($color, 0.4); - } - - &:hover { - color: $text-white; - background-color: $color; - background-image: linear-gradient(-180deg, lighten($color, 10%) 0%, $color 90%); - border-color: $black-fade-50; - - .Counter { - color: $text-white; - } - } - - &:active, - &.selected, - &[aria-selected=true], - [open] > & { - color: $text-white; - background-color: darken($color, 5%); - background-image: none; - border-color: $black-fade-50; - box-shadow: $btn-active-shadow; - } - - &:disabled, - &.disabled, - &[aria-disabled=true] { - color: rgba($color, 0.4); - background-color: $bg2; - background-image: none; - border-color: $border-color-button; - box-shadow: none; - } -} - -// Outline color generator for btn-outline to make the hover state inverse the text and bg colors. -@mixin btn-outline($text-color: $text-blue, $bg-color: $bg-white) { - color: $text-color; - background-color: $bg-color; - background-image: none; - - .Counter { - background-color: rgba($black, 0.07); - } - - &:hover, - &:active, - &.selected, - &[aria-selected=true], - [open] > & { - color: $bg-color; - background-color: $text-color; - background-image: none; - border-color: $text-color; - - .Counter { - color: $text-color; - background-color: $bg-color; - } - } - - &:focus { - border-color: $text-color; - box-shadow: 0 0 0 0.2em rgba($text-color, 0.4); - } - - &:disabled, - &.disabled, - &[aria-disabled=true] { - color: $black-fade-30; - background-color: $bg-white; - border-color: $black-fade-15; - box-shadow: none; - } -} diff --git a/assets/scss/_primer/support/mixins/color-modes.scss b/assets/scss/_primer/support/mixins/color-modes.scss new file mode 100644 index 0000000..e4ad958 --- /dev/null +++ b/assets/scss/_primer/support/mixins/color-modes.scss @@ -0,0 +1,106 @@ +@mixin color-mode-theme($theme-name, $include-root: false) { + @if $include-root { + :root, + [data-color-mode="light"][data-light-theme="#{$theme-name}"], + [data-color-mode="dark"][data-dark-theme="#{$theme-name}"] { + @content; + + /*! */ // This is a fix for a cssstats bug see https://github.com/cssstats/cssstats/issues/331 + } + } + @else { + [data-color-mode="light"][data-light-theme="#{$theme-name}"], + [data-color-mode="dark"][data-dark-theme="#{$theme-name}"] { + @content; + } + } + + @media (prefers-color-scheme: light) { + [data-color-mode="auto"][data-light-theme="#{$theme-name}"] { + @content; + } + } + + @media (prefers-color-scheme: dark) { + [data-color-mode="auto"][data-dark-theme="#{$theme-name}"] { + @content; + } + } +} + +@mixin color-mode($mode) { + @if $mode == light { + :root, + [data-color-mode="light"][data-light-theme*="#{$mode}"], + [data-color-mode="dark"][data-dark-theme*="#{$mode}"] { + @content; + } + } + @else { + [data-color-mode="light"][data-light-theme*="#{$mode}"], + [data-color-mode="dark"][data-dark-theme*="#{$mode}"] { + @content; + } + } + + @media (prefers-color-scheme: light) { + [data-color-mode="auto"][data-light-theme*="#{$mode}"] { + @content; + } + } + + @media (prefers-color-scheme: dark) { + [data-color-mode="auto"][data-dark-theme*="#{$mode}"] { + @content; + } + } +} + +// This mixin takes a map of color mode vars and splits them into dark and light mode +// The goal is to reduce the amount of dark/light mode selectors compiled. +// +// Example input for $color-map +// +// @include color-variables(("custom-css-variable-1": ( +// light: var(--color-scale-gray-3), +// dark: var(--color-scale-gray-5) +// ), +// "custom-css-variable-2": ( +// light: var(--color-scale-gray-2), +// dark: var(--color-scale-gray-6) +// ), +// "custom-css-variable-3": ( +// light: var(--color-scale-gray-2), +// dark: var(--color-scale-gray-6) +// ) +// )); +@mixin color-variables($color-map) { + // Create map to store incoming variables + $dark-colors: (); + $light-colors: (); + + @each $name, $value in $color-map { + @each $type, $color in $value { + @if $type == dark { + $dark-colors: append($dark-colors, (--color-#{$name}, #{$color})); + } + @else { + $light-colors: append($light-colors, (--color-#{$name}, #{$color})); + } + } + } + + $mode-colors: ( + dark: $dark-colors, + light: $light-colors + ); + + // Loop through sorted list + @each $mode, $variables in $mode-colors { + @include color-mode($mode) { + @each $prop, $val in $variables { + #{$prop}: $val; + } + } + } +} diff --git a/assets/scss/_primer/support/mixins/misc.scss b/assets/scss/_primer/support/mixins/misc.scss index ebdd32d..e4641ab 100644 --- a/assets/scss/_primer/support/mixins/misc.scss +++ b/assets/scss/_primer/support/mixins/misc.scss @@ -1,29 +1,26 @@ // Generate a two-color caret for any element. -@mixin double-caret($foreground: $text-white, $background: lighten($gray-300, 5%)) { +@mixin double-caret($background: var(--color-bg-primary), $border: var(--color-border-primary)) { &::after, &::before { position: absolute; top: 11px; right: 100%; - left: -16px; + left: -8px; display: block; - width: 0; - height: 0; + width: 8px; + height: 16px; pointer-events: none; content: " "; - border-color: transparent; - border-style: solid solid outset; + clip-path: polygon(0 50%, 100% 0, 100% 100%); } &::after { - margin-top: 1px; - margin-left: 2px; - border-width: 7px; - border-right-color: $foreground; + margin-left: 1px; + background-color: var(--color-bg-primary); + background-image: linear-gradient($background, $background); } &::before { - border-width: 8px; - border-right-color: $background; + background-color: $border; } } |