summaryrefslogtreecommitdiffstats
path: root/assets/scss/_primer/support/mixins
diff options
context:
space:
mode:
authordsrkafuu2021-06-09 10:31:54 +0800
committerdsrkafuu2021-06-09 10:31:54 +0800
commit787b7865fba31fd56009a85f214f829b9d85cc04 (patch)
tree231c5deebcb813723046e6ac1f1b48d6ed055409 /assets/scss/_primer/support/mixins
parenta138423ec2588d76a96f90fdcd8d9606276355e3 (diff)
downloadhugo-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.scss172
-rw-r--r--assets/scss/_primer/support/mixins/color-modes.scss106
-rw-r--r--assets/scss/_primer/support/mixins/misc.scss21
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;
}
}