diff --git a/.gitignore b/.gitignore index 867d3792d5a49d181a19956058e3fe5c4882b75e..b447a12d605ace944d4b5f46e384a2513e8af4f1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .sass-cache _site Gemfile.lock +node_modules diff --git a/_sass/base.scss b/_sass/base.scss index 6fdf05869e596f2f88c34d744c8da35d761c40ef..7f417f3067f794dcdbc619ed2b47242d1645c99a 100644 --- a/_sass/base.scss +++ b/_sass/base.scss @@ -1,7 +1,7 @@ // // Base element style overrides // -// stylelint-disable selector-no-type +// stylelint-disable selector-no-type, selector-max-type * { box-sizing: border-box; diff --git a/_sass/code.scss b/_sass/code.scss index 7d2b68a2a0ef021b1701748909363cae9e852f2e..0f08daa0962c5c565cbd4c0cb5bc07cc733a50f2 100644 --- a/_sass/code.scss +++ b/_sass/code.scss @@ -1,7 +1,7 @@ // // Code and syntax highlighting // -// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type +// stylelint-disable selector-no-qualifying-type, declaration-block-semicolon-newline-after,declaration-block-single-line-max-declarations, selector-no-type, selector-max-type code { padding: 0.2em 0.15em; diff --git a/_sass/content.scss b/_sass/content.scss index fbec8ff28381535e54443724a0cf233ea91e13ff..4ef15ce12476bc806df07f84535ed96b0ed91a2e 100644 --- a/_sass/content.scss +++ b/_sass/content.scss @@ -1,7 +1,7 @@ // // Styles for rendered markdown in the .main-content container // -// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors +// stylelint-disable selector-no-type, max-nesting-depth, selector-max-compound-selectors, selector-max-type .page-content { ul, diff --git a/_sass/tables.scss b/_sass/tables.scss index 5728c88419ddbc6d691d6ba54c98ae15d391b7e2..d97ed0779e499e3b78a55e537d3db92c65d1c8f7 100644 --- a/_sass/tables.scss +++ b/_sass/tables.scss @@ -1,7 +1,7 @@ // // Tables // -// stylelint-disable max-nesting-depth, selector-no-type +// stylelint-disable max-nesting-depth, selector-no-type, selector-max-type table { display: block; diff --git a/_sass/typography.scss b/_sass/typography.scss index acb89ececd6eb2d9135c90732ff1f464cbb56eec..ac1eed986a4f82f2e6484e9aeda23e28bfb5fe0a 100644 --- a/_sass/typography.scss +++ b/_sass/typography.scss @@ -1,7 +1,7 @@ // // Typography // -// stylelint-disable primer/selector-no-utility, selector-no-type +// stylelint-disable primer/selector-no-utility, selector-no-type, selector-max-type h1, .text-alpha { diff --git a/node_modules/primer-support/index.scss b/node_modules/primer-support/index.scss index 7a91cda946822cf6cf83ef433a9ebc59cd89a3e0..1b5abdd8080dfc37d49cfc0117e36b256423ab6d 100644 --- a/node_modules/primer-support/index.scss +++ b/node_modules/primer-support/index.scss @@ -1,5 +1,8 @@ // variables -@import "./lib/variables.scss"; +@import "./lib/variables/typography.scss"; +@import "./lib/variables/colors.scss"; +@import "./lib/variables/layout.scss"; +@import "./lib/variables/misc.scss"; // mixins @import "./lib/mixins/typography.scss"; diff --git a/node_modules/primer-support/lib/mixins/buttons.scss b/node_modules/primer-support/lib/mixins/buttons.scss index 298dabf782cba2f255f04d80fb95e5c2ced160a3..8b0f30be001a4000e5c4a98b2f26e0972341e382 100644 --- a/node_modules/primer-support/lib/mixins/buttons.scss +++ b/node_modules/primer-support/lib/mixins/buttons.scss @@ -1,137 +1,160 @@ +// stylelint-disable block-closing-brace-newline-after + // Button color generator for primary and themed buttons -@mixin solid-btn($foreground: $text-gray-dark, $background: #eee) { - color: $foreground; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15); - background-color: $background; - background-image: linear-gradient(saturate(lighten($background, 13%), 8%), saturate(darken($background, 9%), 5%)); - border: 1px solid darken($background, 8%); +// New button hotness +@mixin btn-solid($color, $bg, $bg2) { + color: $color; + background-color: $bg2; + background-image: linear-gradient(-180deg, $bg 0%, $bg2 90%); - .counter { - color: saturate(darken($background, 9%), 5%); - background: $foreground; - } + @if $bg == $gray-000 { + &:focus, + &.focus { + box-shadow: $btn-input-focus-shadow; + } - &:hover, - &:active, - &.zeroclipboard-is-hover, - &.zeroclipboard-is-active { - background-color: darken($background, 10%); - background-image: linear-gradient(lighten($background, 8%), darken($background, 13%)); - border-color: darken($background, 12%); - } + &: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, - &.zeroclipboard-is-active { - background-color: darken($background, 15%); - background-image: none; - border-color: darken($background, 20%); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15); - } + &:active, + &.selected, + [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; + } - &.selected:hover { - background-color: darken($background, 20%); - } + &:disabled, + &.disabled { + color: rgba($color, 0.4); + background-color: $bg2; + background-image: none; + border-color: transparentize($black, 0.8); // back to default .btn + box-shadow: none; + } - &:disabled, - &.disabled { - &, - &:hover { - color: $foreground; - cursor: default; - background-color: mix(#fff, $background, 50%); - background-image: linear-gradient(mix(#fff, $background, 60%), mix(#fff, darken($background, 5%), 45%)); - border-color: mix(#fff, $background, 40%); + } @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, + [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 { + color: rgba($color, 0.75); + background-color: mix($bg2, $white, 50%); + background-image: none; + border-color: transparentize($black, 0.8); // repeat .btn default to avoid shift on click-drag off of button box-shadow: none; } + + .Counter { + color: darken($bg, 8%); + background-color: $white; + } } } -// Button color generator for default-y buttons with grey bgs and colored text, like btn-danger +// Inverse button hover style +@mixin btn-inverse($color, $bg, $bg2) { + color: $color; + background-color: $bg; + background-image: linear-gradient(-180deg, $bg 0%, $bg2 90%); -@mixin inverse-hover-btn($foreground: $text-gray-dark) { - color: $foreground; + &:focus { + box-shadow: 0 0 0 0.2em rgba($color, 0.4); + } &:hover { color: $text-white; - background-color: $foreground; - background-image: linear-gradient(lighten($foreground, 30%), lighten($foreground, 10%)); - border-color: $foreground; + 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 { + &.selected, + [open] > & { color: $text-white; - background-color: darken($foreground, 5%); + background-color: darken($color, 5%); background-image: none; - border-color: darken($foreground, 8%); - } - - &.selected:hover { - background-color: darken($foreground, 5%); + border-color: $black-fade-50; + box-shadow: $btn-active-shadow; } &:disabled, &.disabled { - &, - &:hover { - color: mix(#fff, $foreground, 50%); - background-color: #efefef; - background-image: linear-gradient(#fefefe, #efefef); - border-color: #e1e1e1; - } - } - - &:hover, - &:active, - &.selected { - .counter { - color: $text-white; - } + color: rgba($color, 0.4); + background-color: $bg2; + background-image: none; + border-color: transparentize($black, 0.8); // back to default .btn + box-shadow: none; } } // Outline color generator for btn-outline to make the hover state inverse the text and bg colors. - -@mixin outline-btn($text-color: $text-blue, $bg-color: $bg-white) { +@mixin btn-outline($text-color: $text-blue, $bg-color: $bg-white) { color: $text-color; background-color: $bg-color; background-image: none; - border: 1px solid $border-gray; - .counter { - background-color: rgba(0, 0, 0, 0.07); + .Counter { + background-color: rgba($black, 0.07); } &:hover, &:active, &.selected, - &.zeroclipboard-is-hover, - &.zeroclipboard-is-active { + [open] > & { color: $bg-color; background-color: $text-color; background-image: none; border-color: $text-color; - .counter { + .Counter { color: $text-color; background-color: $bg-color; } } - &.selected:hover { - background-color: darken($text-color, 5%); + &:focus { + border-color: $text-color; + box-shadow: 0 0 0 0.2em rgba($text-color, 0.4); } &:disabled, &.disabled { - &, - &:hover { - color: $text-gray; - background-color: $bg-white; - background-image: none; - border-color: $border-gray; - } + color: $black-fade-30; + background-color: $bg-white; + border-color: $black-fade-15; + box-shadow: none; } } diff --git a/node_modules/primer-support/lib/mixins/layout.scss b/node_modules/primer-support/lib/mixins/layout.scss index ec319d4f54884cf28118fa8b2d3162346fcc1f4d..a6d30cf1879eaf02258d8106bbc0bc460a264247 100644 --- a/node_modules/primer-support/lib/mixins/layout.scss +++ b/node_modules/primer-support/lib/mixins/layout.scss @@ -1,21 +1,27 @@ // Responsive media queries @mixin breakpoint($breakpoint) { - // Retrieves the value from the key - $value: map-get($breakpoints, $breakpoint); - - // If the key exists in the map - @if $value != null { - // Prints a media query based on the value - @media (min-width: $value) { - @content; - } + @if $breakpoint == "" { + @content; } - // If the key doesn't exist in the map @else { - @warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. " - + "Please make sure it is defined in `$breakpoints` map."; + // Retrieves the value from the key + $value: map-get($breakpoints, $breakpoint); + + // If the key exists in the map + @if $value != null { + // Prints a media query based on the value + @media (min-width: $value) { + @content; + } + } + + // If the key doesn't exist in the map + @else { + @warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. " + + "Please make sure it is defined in `$breakpoints` map."; + } } } diff --git a/node_modules/primer-support/lib/mixins/misc.scss b/node_modules/primer-support/lib/mixins/misc.scss index 5e399046f803a39a2fa2468fec920d3b1a89074b..ebdd32d04683dabcbf90f0c5eaf2cd9ff133d457 100644 --- a/node_modules/primer-support/lib/mixins/misc.scss +++ b/node_modules/primer-support/lib/mixins/misc.scss @@ -1,5 +1,5 @@ // Generate a two-color caret for any element. -@mixin double-caret($foreground: #fff, $background: #ddd) { +@mixin double-caret($foreground: $text-white, $background: lighten($gray-300, 5%)) { &::after, &::before { position: absolute; diff --git a/node_modules/primer-support/lib/mixins/typography.scss b/node_modules/primer-support/lib/mixins/typography.scss index a35629302c9e0a42fb102555968ad776fb45254a..d39aa44c1f5c923bb0429404e821d7e46bc59e37 100644 --- a/node_modules/primer-support/lib/mixins/typography.scss +++ b/node_modules/primer-support/lib/mixins/typography.scss @@ -40,37 +40,45 @@ } // Responsive heading mixins -// There are no responsive mixins for h5 and h6 because they are small +// There are no responsive mixins for h4—h6 because they are small // and don't need to be smaller on mobile. -@mixin h1-reponsive { - font-size: 26px; - font-weight: $font-weight-bold; +@mixin f1-responsive { + font-size: $h1-size-mobile; - // Up to 32px in future - @include breakpoint(md) { font-size: 30px; } + // 32px on desktop + @include breakpoint(md) { font-size: $h1-size; } } -@mixin h2-responsive { - font-size: 20px; - font-weight: $font-weight-bold; +@mixin f2-responsive { + font-size: $h2-size-mobile; - // Up to 22px or 24px in future - @include breakpoint(md) { font-size: 21px; } + // 24px on desktop + @include breakpoint(md) { font-size: $h2-size; } } -@mixin h3-responsive { - font-size: 14px; - font-weight: $font-weight-bold; +@mixin f3-responsive { + font-size: $h3-size-mobile; - @include breakpoint(md) { font-size: 16px; } + // 20px on desktop + @include breakpoint(md) { font-size: $h3-size; } } -@mixin h4-responsive { - font-size: 13px; +// These use the mixins from above for responsive heading sizes. +// The following mixins can be used where it's convenient or necessary to +// couple the responsive font-size with the font-weight. +@mixin h1-responsive { + @include f1-responsive; font-weight: $font-weight-bold; +} - @include breakpoint(md) { font-size: 14px; } +@mixin h2-responsive { + @include f2-responsive; + font-weight: $font-weight-bold; +} +@mixin h3-responsive { + @include f3-responsive; + font-weight: $font-weight-bold; } diff --git a/node_modules/primer-support/lib/variables/color-system.scss b/node_modules/primer-support/lib/variables/color-system.scss new file mode 100644 index 0000000000000000000000000000000000000000..0ea1a7116c026af9526072816e76d03eb5d26d42 --- /dev/null +++ b/node_modules/primer-support/lib/variables/color-system.scss @@ -0,0 +1,114 @@ +// +// +// -------- Grays -------- +$gray-000: #fafbfc !default; +$gray-100: #f6f8fa !default; +$gray-200: #e1e4e8 !default; +$gray-300: #d1d5da !default; +$gray-400: #959da5 !default; +$gray-500: #6a737d !default; +$gray-600: #586069 !default; +$gray-700: #444d56 !default; +$gray-800: #2f363d !default; +$gray-900: #24292e !default; // body font color + +// -------- Blue -------- +$blue-000: #f1f8ff !default; +$blue-100: #dbedff !default; +$blue-200: #c8e1ff !default; +$blue-300: #79b8ff !default; +$blue-400: #2188ff !default; +$blue-500: #0366d6 !default; // Default: Passes AA with #fff +$blue-600: #005cc5 !default; +$blue-700: #044289 !default; +$blue-800: #032f62 !default; +$blue-900: #05264c !default; // Passes with 1/2/300 blues + +// -------- Green -------- +$green-000: #f0fff4 !default; +$green-100: #dcffe4 !default; +$green-200: #bef5cb !default; +$green-300: #85e89d !default; +$green-400: #34d058 !default; +$green-500: #28a745 !default; // Default. passes AA Large +$green-600: #22863a !default; // Text green, passes AA on #fff +$green-700: #176f2c !default; +$green-800: #165c26 !default; +$green-900: #144620 !default; + +// -------- Yellow -------- +$yellow-000: #fffdef !default; +$yellow-100: #fffbdd !default; +$yellow-200: #fff5b1 !default; +$yellow-300: #ffea7f !default; +$yellow-400: #ffdf5d !default; +$yellow-500: #ffd33d !default; +$yellow-600: #f9c513 !default; +$yellow-700: #dbab09 !default; +$yellow-800: #b08800 !default; +$yellow-900: #735c0f !default; + +// -------- Orange -------- +$orange-000: #fff8f2 !default; +$orange-100: #ffebda !default; +$orange-200: #ffd1ac !default; +$orange-300: #ffab70 !default; +$orange-400: #fb8532 !default; +$orange-500: #f66a0a !default; // Default. passes AA Large with #fff +$orange-600: #e36209 !default; +$orange-700: #d15704 !default; +$orange-800: #c24e00 !default; +$orange-900: #a04100 !default; + +// -------- Red -------- +$red-000: #ffeef0 !default; +$red-100: #ffdce0 !default; +$red-200: #fdaeb7 !default; +$red-300: #f97583 !default; +$red-400: #ea4a5a !default; +$red-500: #d73a49 !default; // Default. passes AA +$red-600: #cb2431 !default; +$red-700: #b31d28 !default; +$red-800: #9e1c23 !default; +$red-900: #86181d !default; + +// -------- Purple -------- +$purple-000: #f5f0ff !default; +$purple-100: #e6dcfd !default; +$purple-200: #d1bcf9 !default; +$purple-300: #b392f0 !default; +$purple-400: #8a63d2 !default; +$purple-500: #6f42c1 !default; // passes AA with #fff +$purple-600: #5a32a3 !default; +$purple-700: #4c2889 !default; +$purple-800: #3a1d6e !default; +$purple-900: #29134e !default; + +// -------- Fades -------- +// Black based on same hue as $gray-900 +$black: #1b1f23 !default; +$white: #fff !default; + +$black-fade-15: rgba($black, 0.15) !default; +$black-fade-30: rgba($black, 0.3) !default; +$black-fade-50: rgba($black, 0.5) !default; +$black-fade-70: rgba($black, 0.7) !default; +$black-fade-85: rgba($black, 0.85) !default; + +$white-fade-15: rgba($white, 0.15) !default; +$white-fade-30: rgba($white, 0.3) !default; +$white-fade-50: rgba($white, 0.5) !default; +$white-fade-70: rgba($white, 0.7) !default; +$white-fade-85: rgba($white, 0.85) !default; + +// -------- Color defaults -------- +$red: $red-500 !default; +$purple: $purple-500 !default; +$blue: $blue-500 !default; +$green: $green-500 !default; +$yellow: $yellow-500 !default; +$orange: $orange-500 !default; + +$gray-dark: $gray-900 !default; +$gray-light: $gray-400 !default; +$gray: $gray-500 !default; diff --git a/node_modules/primer-support/lib/variables/colors.scss b/node_modules/primer-support/lib/variables/colors.scss new file mode 100644 index 0000000000000000000000000000000000000000..36dc3c8a747ae2266248aa1a906c46a6e4ce9d13 --- /dev/null +++ b/node_modules/primer-support/lib/variables/colors.scss @@ -0,0 +1,67 @@ +@import "color-system.scss"; +// Color variables +// stylelint-disable declaration-bang-space-before + +// State indicators. +$status-pending: desaturate($yellow-700, 15%) !default; + +// Repository type colors +// Should be able to deprecate these in future +$repo-private-text: $black-fade-70 !default; +$repo-private-bg: $yellow-000 !default; +$repo-private-icon: transparentize($yellow-900, 0.5) !default; + +// Highlight used for things like search +$highlight-yellow: rgba(255, 247, 140, 0.5); + +// Border colors +$border-black-fade: $black-fade-15 !default; + +$border-blue: $blue-500 !default; +$border-blue-light: $blue-200 !default; + +$border-green: $green-400 !default; +$border-green-light: desaturate($green-300, 40%) !default; + +$border-purple: $purple !default; + +$border-red: $red !default; +$border-red-light: desaturate($red-300, 60%) !default; + +$border-purple: $purple !default; + +$border-yellow: desaturate($yellow-300, 60%) !default; + +$border-gray-dark: $gray-300 !default; +$border-gray-darker: $gray-700 !default; +$border-gray-light: lighten($gray-200, 3%) !default; +$border-gray: $gray-200 !default; + +// Background colors +$bg-blue-light: $blue-000 !default; +$bg-blue: $blue-500 !default; +$bg-gray-dark: $gray-900 !default; +$bg-gray-light: $gray-000 !default; +$bg-gray: $gray-100 !default; +$bg-green: $green-500 !default; +$bg-green-light: $green-100 !default; +$bg-orange: $orange-700 !default; +$bg-purple: $purple-500 !default; +$bg-purple-light: $purple-000 !default; +$bg-red: $red-500 !default; +$bg-red-light: $red-100 !default; +$bg-white: $white !default; +$bg-yellow: $yellow-500 !default; +$bg-yellow-light: $yellow-200 !default; + +// Text colors +$text-blue: $blue-500 !default; +$text-gray-dark: $gray-900 !default; +$text-gray-light: $gray-500 !default; +$text-gray: $gray-600 !default; +$text-green: $green-500 !default; +$text-orange: $orange-900 !default; +$text-orange-light: $orange-600 !default; +$text-purple: $purple !default; +$text-red: $red-600 !default; +$text-white: $white !default; diff --git a/node_modules/primer-support/lib/variables/layout.scss b/node_modules/primer-support/lib/variables/layout.scss new file mode 100644 index 0000000000000000000000000000000000000000..284407a4655beb061a2b8baa025464ac73c04eeb --- /dev/null +++ b/node_modules/primer-support/lib/variables/layout.scss @@ -0,0 +1,72 @@ +// Layout variables +// stylelint-disable declaration-bang-space-before + +// These are our margin and padding utility spacers. The default step size we +// use is 8px. This gives us a key of: +// 0 => 0px +// 1 => 4px +// 2 => 8px +// 3 => 16px +// 4 => 24px +// 5 => 32px +// 6 => 40px +$spacer: 8px !default; +$spacers: ( + 0, + round($spacer / 2), + $spacer, + $spacer * 2, + $spacer * 3, + $spacer * 4, + $spacer * 5 +) !default; + +// Aliases for easy use +$spacer-0: nth($spacers, 1) !default; // 0 +$spacer-1: nth($spacers, 2) !default; // 4px +$spacer-2: nth($spacers, 3) !default; // 8px +$spacer-3: nth($spacers, 4) !default; // 16px +$spacer-4: nth($spacers, 5) !default; // 24px +$spacer-5: nth($spacers, 6) !default; // 32px +$spacer-6: nth($spacers, 7) !default; // 40px + +// Em spacer variables +$em-spacer-1: 0.0625em !default; // 1/16 +$em-spacer-2: 0.125em !default; // 1/8 +$em-spacer-3: 0.25em !default; // 1/4 +$em-spacer-4: 0.375em !default; // 3/8 +$em-spacer-5: 0.5em !default; // 1/2 +$em-spacer-6: 0.75em !default; // 3/4 + +// Fixed-width container variables +$container-width: 980px !default; +$grid-gutter: 10px !default; + +// Breakpoint widths +$width-xs: 0; +$width-sm: 544px; +$width-md: 768px; +$width-lg: 1012px; +$width-xl: 1280px; + +// Responsive container widths +$container-md: $width-md !default; +$container-lg: $width-lg !default; +$container-xl: $width-xl !default; + +// Breakpoints +$breakpoints: ( + // Small screen / phone + sm: $width-sm, + // Medium screen / tablet + md: $width-md, + // Large screen / desktop (980 + (16 * 2)) <= container + gutters + lg: $width-lg, + // Extra large screen / wide desktop + xl: $width-xl +) !default; + +$responsive-variants: ("": ""); +@each $key in map-keys($breakpoints) { + $responsive-variants: map-merge($responsive-variants, ($key: "-#{$key}")); +} diff --git a/node_modules/primer-support/lib/variables/misc.scss b/node_modules/primer-support/lib/variables/misc.scss new file mode 100644 index 0000000000000000000000000000000000000000..cd6414f533b0fed4e2d8f91e99f134c095f9f02d --- /dev/null +++ b/node_modules/primer-support/lib/variables/misc.scss @@ -0,0 +1,40 @@ +// Miscellaneous variables +// stylelint-disable declaration-bang-space-before + +// Border size +$border-width: 1px !default; +$border-color: $border-gray !default; +$border-style: solid !default; +$border: $border-width $border-color $border-style !default; +$border-radius: 3px !default; + +// Custom explore grid border +$exploregrid-item-border-radius: 4px; + +// Box shadow +$box-shadow: 0 1px 1px rgba($black, 0.1) !default; +$box-shadow-medium: 0 1px 5px $black-fade-15 !default; +$box-shadow-large: 0 1px 15px $black-fade-15 !default; +$box-shadow-extra-large: 0 10px 50px rgba($black, 0.07) !default; + +// Tooltips +$tooltip-max-width: 250px !default; +$tooltip-background-color: $black; +$tooltip-text-color: $white !default; +$tooltip-delay: 0.4s !default; +$tooltip-duration: 0.1s !default; + +// Should be moved into custom github css +$stats-switcher-py: 10px; +// Future proof this `height` value by finding the computed line-height, then +// adding the total value of the vertical padding. This var is used to toggle +// between the stats bar and language breakdown. +$stats-viewport-height: ($body-font-size * $body-line-height) + ($stats-switcher-py * 2); + +$min_tab_size: 1; +$max_tab_size: 12; + +// Button and form variables +$form-control-shadow: inset 0 1px 2px rgba($black, 0.075); +$btn-input-focus-shadow: 0 0 0 0.2em rgba($blue, 0.3); +$btn-active-shadow: inset 0 0.15em 0.3em $black-fade-15; diff --git a/node_modules/primer-support/lib/variables/typography.scss b/node_modules/primer-support/lib/variables/typography.scss new file mode 100644 index 0000000000000000000000000000000000000000..c3d857317a0af6cdb25b3ff8b7f6704ae4990bd7 --- /dev/null +++ b/node_modules/primer-support/lib/variables/typography.scss @@ -0,0 +1,43 @@ +// Typography variables +// stylelint-disable declaration-bang-space-before + +// Heading sizes - mobile +// h4—h6 remain the same size on both mobile & desktop +$h00-size-mobile: 40px !default; +$h0-size-mobile: 32px !default; +$h1-size-mobile: 26px !default; +$h2-size-mobile: 22px !default; +$h3-size-mobile: 18px !default; + +// Heading sizes - desktop +$h00-size: 48px !default; +$h0-size: 40px !default; +$h1-size: 32px !default; +$h2-size: 24px !default; +$h3-size: 20px !default; +$h4-size: 16px !default; +$h5-size: 14px !default; +$h6-size: 12px !default; + +$font-size-small: 12px !default; + +// Font weights +$font-weight-bold: 600 !default; +$font-weight-semibold: 500 !default; +$font-weight-normal: 400 !default; +$font-weight-light: 300 !default; + +// Line heights +$lh-condensed-ultra: 1 !default; +$lh-condensed: 1.25 !default; +$lh-default: 1.5 !default; + +// Font stacks +$body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; + +// Monospace font stack +$mono-font: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace !default; + +// The base body size +$body-font-size: 14px !default; +$body-line-height: $lh-default !default; diff --git a/node_modules/primer-utilities/index.scss b/node_modules/primer-utilities/index.scss index ff916bbdf9cc06d091b139388dd1d19e230509d9..307b6de06dfe9238cd62f9f8f27485472db25d6c 100644 --- a/node_modules/primer-utilities/index.scss +++ b/node_modules/primer-utilities/index.scss @@ -4,6 +4,7 @@ @import "./lib/borders.scss"; @import "./lib/box-shadow.scss"; @import "./lib/colors.scss"; +@import "./lib/details.scss"; @import "./lib/flexbox.scss"; @import "./lib/layout.scss"; @import "./lib/margin.scss"; diff --git a/node_modules/primer-utilities/lib/animations.scss b/node_modules/primer-utilities/lib/animations.scss index ef751cc8841f0117726d7d3b424ca25c64916ebb..9b530d4fb3a649d704ab688479d8dbee05976a09 100644 --- a/node_modules/primer-utilities/lib/animations.scss +++ b/node_modules/primer-utilities/lib/animations.scss @@ -1,7 +1,7 @@ // This file contains reusable animations for github. // stylelint-disable primer/selector-no-utility -// Fade in -// A class to fade in an element on the page. + +/* Fade in an element */ .anim-fade-in { animation-name: fade-in; animation-duration: 1s; @@ -22,6 +22,27 @@ } } +/* Fade out an element */ +.anim-fade-out { + animation-name: fade-out; + animation-duration: 1s; + animation-timing-function: ease-out; + + &.fast { + animation-duration: 0.3s; + } +} + +@keyframes fade-out { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + /* Fade in and slide up an element */ .anim-fade-up { opacity: 0; @@ -151,3 +172,13 @@ transform: scale3d(1, 1, 1); } } + +/* Increase scale of an element on hover */ +.hover-grow { + transition: transform 0.3s; + backface-visibility: hidden; + + &:hover { + transform: scale(1.025); + } +} diff --git a/node_modules/primer-utilities/lib/borders.scss b/node_modules/primer-utilities/lib/borders.scss index 5a1ec2bd5a51cc1f3d3a9d6b27461670b7cecd2a..4bdd48f3953249abe55ec4fc35c1d2910d09e18d 100644 --- a/node_modules/primer-utilities/lib/borders.scss +++ b/node_modules/primer-utilities/lib/borders.scss @@ -1,53 +1,100 @@ // Border utilities // stylelint-disable block-opening-brace-space-before, primer/selector-no-utility, comment-empty-line-before -/* Add a gray border */ -.border { border: $border !important; } -/* Add a gray border to the top */ -.border-top { border-top: $border !important; } -/* Add a gray border to the right */ -.border-right { border-right: $border !important; } -/* Add a gray border to the bottom */ -.border-bottom { border-bottom: $border !important; } -/* Add a gray border to the left */ -.border-left { border-left: $border !important; } +/* Add a gray border on all sides */ +.border { border: $border !important; } + /* Add a gray border to the left and right */ .border-y { border-top: $border !important; border-bottom: $border !important; } +/* Remove borders from all sides */ +.border-0 { border: 0 !important; } + .border-dashed { border-style: dashed !important; } /* Use with .border to turn the border blue */ -.border-blue { border-color: $border-blue !important; } -/* Use with .border to turn the border blue */ -.border-blue-dark { border-color: $border-blue-dark !important; } -/* Use with .border to turn the border red */ -.border-red { border-color: $border-red !important; } +.border-blue { border-color: $border-blue !important; } +/* Use with .border to turn the border blue-light */ +.border-blue-light { border-color: $border-blue-light !important; } +/* Use with .border to turn the border green */ +.border-green { border-color: $border-green !important; } +/* Use with .border to turn the border green light */ +.border-green-light { border-color: $border-green-light !important; } /* Use with .border to turn the border red */ -.border-red-dark { border-color: $border-red-dark !important; } +.border-red { border-color: $border-red !important; } +/* Use with .border to turn the border red-light */ +.border-red-light { border-color: $border-red-light !important; } +/* Use with .border to turn the border purple */ +.border-purple { border-color: $border-purple !important; } +/* Use with .border to turn the border yellow */ +.border-yellow { border-color: $border-yellow !important; } /* Use with .border to turn the border gray-light */ -.border-gray-light { border-color: $border-gray-light !important; } +.border-gray-light { border-color: $border-gray-light !important; } /* Use with .border to turn the border gray-dark */ -.border-gray-dark { border-color: $border-gray-dark !important; } - -// Without borders -/* Remove all borders */ -.border-0 { border: 0 !important; } -/* Remove the top border */ -.border-top-0 { border-top: 0 !important; } -/* Remove the right border */ -.border-right-0 { border-right: 0 !important; } -/* Remove the bottom border */ -.border-bottom-0 { border-bottom: 0 !important; } -/* Remove the left border */ -.border-left-0 { border-left: 0 !important; } - -// Rounded corners -/* Remove the border-radius */ -.rounded-0 { border-radius: 0 !important; } -/* Add a border-radius to all corners */ -.rounded-1 { border-radius: $border-radius !important; } -/* Add a 2x border-radius to all corners */ -.rounded-2 { border-radius: $border-radius * 2 !important; } +.border-gray-dark { border-color: $border-gray-dark !important; } +/* Use with .border to turn the border rgba black 0.15 */ +.border-black-fade { border-color: $border-black-fade !important; } + +$edges: ( + top: (top-left, top-right), + right: (top-right, bottom-right), + bottom: (bottom-right, bottom-left), + left: (bottom-left, top-left) +); + +@each $breakpoint, $variant in $responsive-variants { + @include breakpoint($breakpoint) { + /* Add a gray border */ + /* Add a gray border to the top */ + .border#{$variant}-top { border-top: $border !important; } + /* Add a gray border to the right */ + .border#{$variant}-right { border-right: $border !important; } + /* Add a gray border to the bottom */ + .border#{$variant}-bottom { border-bottom: $border !important; } + /* Add a gray border to the left */ + .border#{$variant}-left { border-left: $border !important; } + + /* Remove the top border */ + .border#{$variant}-top-0 { border-top: 0 !important; } + /* Remove the right border */ + .border#{$variant}-right-0 { border-right: 0 !important; } + /* Remove the bottom border */ + .border#{$variant}-bottom-0 { border-bottom: 0 !important; } + /* Remove the left border */ + .border#{$variant}-left-0 { border-left: 0 !important; } + + // Rounded corners + /* Remove the border-radius */ + .rounded#{$variant}-0 { border-radius: 0 !important; } + /* Add a border-radius to all corners */ + .rounded#{$variant}-1 { border-radius: $border-radius !important; } + /* Add a 2x border-radius to all corners */ + .rounded#{$variant}-2 { border-radius: $border-radius * 2 !important; } + + @each $edge, $corners in $edges { + .rounded#{$variant}-#{$edge}-0 { + @each $corner in $corners { + border-#{$corner}-radius: 0; + } + } + + .rounded#{$variant}-#{$edge}-1 { + @each $corner in $corners { + border-#{$corner}-radius: $border-radius; + } + } + + .rounded#{$variant}-#{$edge}-2 { + @each $corner in $corners { + border-#{$corner}-radius: $border-radius * 2; + } + } + } + } +} + +/* Add a 50% border-radius to make something into a circle */ +.circle { border-radius: 50% !important; } diff --git a/node_modules/primer-utilities/lib/box-shadow.scss b/node_modules/primer-utilities/lib/box-shadow.scss index e68f8cd2d9b90ac6be6a02b70fec4d1d8ac85009..9093da305cfc2b42451c1e4ce82f3dcf816e4815 100644 --- a/node_modules/primer-utilities/lib/box-shadow.scss +++ b/node_modules/primer-utilities/lib/box-shadow.scss @@ -15,6 +15,10 @@ box-shadow: $box-shadow-large !important; } +.box-shadow-extra-large { + box-shadow: $box-shadow-extra-large !important; +} + // Turn off box shadow .box-shadow-none { diff --git a/node_modules/primer-utilities/lib/colors.scss b/node_modules/primer-utilities/lib/colors.scss index 9d6c009034c15b2e78bff7ce0135b0a6c1b093c5..0f22a810d30e5b5b63deb4d9c0158e7cd61cf660 100644 --- a/node_modules/primer-utilities/lib/colors.scss +++ b/node_modules/primer-utilities/lib/colors.scss @@ -29,9 +29,11 @@ .bg-yellow-light { background-color: $bg-yellow-light !important; } /* Set the background to $bg-purple */ .bg-purple { background-color: $bg-purple !important; } +/* Set the background to $bg-purple-light */ +.bg-purple-light { background-color: $bg-purple-light !important; } .bg-shade-gradient { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.065), rgba(0, 0, 0, 0)) !important; + background-image: linear-gradient(180deg, rgba($black, 0.065), rgba($black, 0)) !important; background-repeat: no-repeat !important; background-size: 100% 200px !important; } @@ -51,6 +53,8 @@ .text-green { color: $text-green !important; } /* Set the text color to $text-orange */ .text-orange { color: $text-orange !important; } +/* Set the text color to $text-orange-light */ +.text-orange-light { color: $text-orange-light !important; } /* Set the text color to $text-purple */ .text-purple { color: $text-purple !important; } /* Set the text color to $text-white */ @@ -59,8 +63,10 @@ .text-inherit { color: inherit !important; } // Text states -.text-renamed { color: $status-renamed !important; } -.text-pending { color: $status-pending !important; } +// These can probably all be regular utilities +.text-pending { color: $yellow-800 !important; } +// Separate text and background colors in future to improve a11y +.bg-pending { color: $yellow-700 !important; } // Link colors // Sets the links color to $text-gray and $text-blue on hover @@ -98,12 +104,3 @@ text-decoration: none; } } - -// Shade gradient -// -// Shade gradient style from Basecoat -.shade-gradient { - background-image: linear-gradient(180deg, #f5f5f5, #fff); - background-repeat: no-repeat; - background-size: 100% 200px; -} diff --git a/node_modules/primer-utilities/lib/details.scss b/node_modules/primer-utilities/lib/details.scss new file mode 100644 index 0000000000000000000000000000000000000000..32ad69eec2e50ca7f9802c2a5f927d2485f87236 --- /dev/null +++ b/node_modules/primer-utilities/lib/details.scss @@ -0,0 +1,18 @@ +// stylelint-disable selector-max-type +.details-overlay[open] > summary::before { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 80; + display: block; + cursor: default; + content: " "; + background: transparent; +} + +.details-overlay-dark[open] > summary::before { + z-index: 99; + background: $black-fade-50; +} diff --git a/node_modules/primer-utilities/lib/flexbox.scss b/node_modules/primer-utilities/lib/flexbox.scss index 6d236c1f43b153f1d42f129d070bfb8e14115bb2..63e5121f30d8df3cce94a0e3e47fb67d46b8cfb6 100644 --- a/node_modules/primer-utilities/lib/flexbox.scss +++ b/node_modules/primer-utilities/lib/flexbox.scss @@ -1,81 +1,52 @@ // Flex utility classes - // stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before // stylelint-disable comment-empty-line-before -// - - - - - - - - - - - - - - - - - - - - - - - -// This is a template for generating the flex utility classes. -// A version of each class will be generated without a breakpoint, -// along with a variant for each breakpoint. -// - - - - - - - - - - - - - - - - - - - - - - - - -@mixin flexUtility($breakpoint: 0) { - - // This is the breakpoint that will be inserted into class names - $breakstring: -#{$breakpoint}; // example: `.d-sm-flex` - - // If there's no breakpoint, the $breakstring value will be blank. - @if $breakpoint == 0 { - $breakstring: ""; // example: `.d-flex` - } - - // Flexbox classes - // Container - .d#{$breakstring}-flex { display: flex !important; } - .d#{$breakstring}-inline-flex { display: inline-flex !important; } - - .flex#{$breakstring}-row { flex-direction: row !important; } - .flex#{$breakstring}-column { flex-direction: column !important; } - - .flex#{$breakstring}-wrap { flex-wrap: wrap !important; } - .flex#{$breakstring}-nowrap { flex-wrap: nowrap !important; } - - .flex#{$breakstring}-justify-start { justify-content: flex-start !important; } - .flex#{$breakstring}-justify-end { justify-content: flex-end !important; } - .flex#{$breakstring}-justify-center { justify-content: center !important; } - .flex#{$breakstring}-justify-between { justify-content: space-between !important; } - .flex#{$breakstring}-justify-around { justify-content: space-around !important; } - - .flex#{$breakstring}-items-start { align-items: flex-start !important; } - .flex#{$breakstring}-items-end { align-items: flex-end !important; } - .flex#{$breakstring}-items-center { align-items: center !important; } - .flex#{$breakstring}-items-baseline { align-items: baseline !important; } - .flex#{$breakstring}-items-stretch { align-items: stretch !important; } - - .flex#{$breakstring}-content-start { align-content: flex-start !important; } - .flex#{$breakstring}-content-end { align-content: flex-end !important; } - .flex#{$breakstring}-content-center { align-content: center !important; } - .flex#{$breakstring}-content-between { align-content: space-between !important; } - .flex#{$breakstring}-content-around { align-content: space-around !important; } - .flex#{$breakstring}-content-stretch { align-content: stretch !important; } - - // Item - .flex#{$breakstring}-auto { flex: 1 1 auto !important; } - .flex#{$breakstring}-shrink-0 { flex-shrink: 0 !important; } - - .flex#{$breakstring}-self-auto { align-self: auto !important; } - .flex#{$breakstring}-self-start { align-self: flex-start !important; } - .flex#{$breakstring}-self-end { align-self: flex-end !important; } - .flex#{$breakstring}-self-center { align-self: center !important; } - .flex#{$breakstring}-self-baseline { align-self: baseline !important; } - .flex#{$breakstring}-self-stretch { align-self: stretch !important; } - - // Shorthand for equal width and height cols - .flex#{$breakstring}-item-equal { - flex-grow: 1; - flex-basis: 0; - } -} - -// Generate basic flexbox classes -@include flexUtility(); - -// Loop through the breakpoint values to create responsive classes -@each $breakpoint in map-keys($breakpoints) { - - // Loop through the spacer values +@each $breakpoint, $variant in $responsive-variants { @include breakpoint($breakpoint) { - @include flexUtility($breakpoint); + // Flexbox classes + // Container + .flex#{$variant}-row { flex-direction: row !important; } + .flex#{$variant}-row-reverse { flex-direction: row-reverse !important; } + .flex#{$variant}-column { flex-direction: column !important; } + + .flex#{$variant}-wrap { flex-wrap: wrap !important; } + .flex#{$variant}-nowrap { flex-wrap: nowrap !important; } + + .flex#{$variant}-justify-start { justify-content: flex-start !important; } + .flex#{$variant}-justify-end { justify-content: flex-end !important; } + .flex#{$variant}-justify-center { justify-content: center !important; } + .flex#{$variant}-justify-between { justify-content: space-between !important; } + .flex#{$variant}-justify-around { justify-content: space-around !important; } + + .flex#{$variant}-items-start { align-items: flex-start !important; } + .flex#{$variant}-items-end { align-items: flex-end !important; } + .flex#{$variant}-items-center { align-items: center !important; } + .flex#{$variant}-items-baseline { align-items: baseline !important; } + .flex#{$variant}-items-stretch { align-items: stretch !important; } + + .flex#{$variant}-content-start { align-content: flex-start !important; } + .flex#{$variant}-content-end { align-content: flex-end !important; } + .flex#{$variant}-content-center { align-content: center !important; } + .flex#{$variant}-content-between { align-content: space-between !important; } + .flex#{$variant}-content-around { align-content: space-around !important; } + .flex#{$variant}-content-stretch { align-content: stretch !important; } + + // Item + .flex#{$variant}-auto { flex: 1 1 auto !important; } + .flex#{$variant}-shrink-0 { flex-shrink: 0 !important; } + + .flex#{$variant}-self-auto { align-self: auto !important; } + .flex#{$variant}-self-start { align-self: flex-start !important; } + .flex#{$variant}-self-end { align-self: flex-end !important; } + .flex#{$variant}-self-center { align-self: center !important; } + .flex#{$variant}-self-baseline { align-self: baseline !important; } + .flex#{$variant}-self-stretch { align-self: stretch !important; } + + // Shorthand for equal width and height cols + .flex#{$variant}-item-equal { + flex-grow: 1; + flex-basis: 0; + } } - } diff --git a/node_modules/primer-utilities/lib/layout.scss b/node_modules/primer-utilities/lib/layout.scss index 5a2bada8df4fd70adbb6c66f4cd0cc7f7b1a8bb1..d5a4210c9f57391dd6b327f057e8693227f81cb0 100644 --- a/node_modules/primer-utilities/lib/layout.scss +++ b/node_modules/primer-utilities/lib/layout.scss @@ -30,6 +30,8 @@ .v-align-text-top { vertical-align: text-top !important; } /* Vertical align to the bottom of the text */ .v-align-text-bottom { vertical-align: text-bottom !important; } +/* Vertical align to the parent's baseline */ +.v-align-baseline { vertical-align: baseline !important; } // Overflow utilities // overflow-hidden can also be used to create a new @@ -48,23 +50,14 @@ } // Floats -/* Float to the right */ -.float-right { float: right !important; } -/* Float to the left */ -.float-left { float: left !important; } -/* Don't float left or right */ -.float-none { float: none !important; } - -// Responsive float utlities -// .float-md-left, .float-lg-right, ... -@each $breakpoint in map-keys($breakpoints) { +@each $breakpoint, $variant in $responsive-variants { @include breakpoint($breakpoint) { - /* Float to the left at the #{$breakpoint} breakpoint */ - .float-#{$breakpoint}-left { float: left !important; } - /* Float to the right at the #{$breakpoint} breakpoint */ - .float-#{$breakpoint}-right { float: right !important; } - /* No float at the #{$breakpoint} breakpoint */ - .float-#{$breakpoint}-none { float: none !important; } + /* Float to the left */ + .float#{$variant}-left { float: left !important; } + /* Float to the right */ + .float#{$variant}-right { float: right !important; } + /* No float */ + .float#{$variant}-none { float: none !important; } } } @@ -74,23 +67,19 @@ .width-fit { max-width: 100% !important; } /* Set the width to 100% */ .width-full { width: 100% !important; } +/* Max height 100% */ +.height-fit { max-height: 100% !important; } /* Set the height to 100% */ .height-full { height: 100% !important; } /* Remove min-width from element */ .min-width-0 { min-width: 0 !important; } -// Direction utilities - -.direction-rtl { direction: rtl !important; } - -.direction-ltr { direction: ltr !important; } - -@each $breakpoint in map-keys($breakpoints) { +@each $breakpoint, $variant in $responsive-variants { @include breakpoint($breakpoint) { - /* Set the direction to ltr at the #{$breakpoint} breakpoint */ - .direction-#{$breakpoint}-rtl { direction: rtl !important; } - /* Set the direction to ltr at the #{$breakpoint} breakpoint */ - .direction-#{$breakpoint}-ltr { direction: ltr !important; } + /* Set the direction to rtl */ + .direction#{$variant}-rtl { direction: rtl !important; } + /* Set the direction to ltr */ + .direction#{$variant}-ltr { direction: ltr !important; } } } diff --git a/node_modules/primer-utilities/lib/margin.scss b/node_modules/primer-utilities/lib/margin.scss index 7bb56040e2d5aca8d19416549f7f4efe9dbc4068..c47fc14fbd251f90b4829aa7e47a21c084de72f2 100644 --- a/node_modules/primer-utilities/lib/margin.scss +++ b/node_modules/primer-utilities/lib/margin.scss @@ -1,70 +1,53 @@ // Margin spacer utilities // stylelint-disable block-opening-brace-space-before, declaration-colon-space-before, primer/selector-no-utility, comment-empty-line-before -@for $i from 1 through length($spacers) { - $size: #{nth($spacers, $i)}; - $scale: #{$i - 1}; - - /* Set a #{$size} margin to all sides */ - .m-#{$scale} { margin : #{$size} !important; } - /* Set a #{$size} margin on the top */ - .mt-#{$scale} { margin-top : #{$size} !important; } - /* Set a #{$size} margin on the right */ - .mr-#{$scale} { margin-right : #{$size} !important; } - /* Set a #{$size} margin on the bottom */ - .mb-#{$scale} { margin-bottom: #{$size} !important; } - /* Set a #{$size} margin on the left */ - .ml-#{$scale} { margin-left : #{$size} !important; } - - /* Set a #{$size} margin on the left & right */ - .mx-#{$scale} { - margin-right: #{$size} !important; - margin-left : #{$size} !important; - } - - /* Set a #{$size} margin on the top & bottom */ - .my-#{$scale} { - margin-top : #{$size} !important; - margin-bottom: #{$size} !important; - } -} // Loop through the breakpoint values -@each $breakpoint in map-keys($breakpoints) { - - // Loop through the spacer values - @for $i from 1 through length($spacers) { - @include breakpoint($breakpoint) { - $size: #{nth($spacers, $i)}; // sm, md, lg, xl - $scale: #{$i - 1}; // 0, 1, 2, 3, 4, 5, 6 - - /* Set a #{$size} margin to all sides at the breakpoint #{$breakpoint} */ - .m-#{$breakpoint}-#{$scale} { margin: #{$size} !important; } - /* Set a #{$size} margin on the top at the breakpoint #{$breakpoint} */ - .mt-#{$breakpoint}-#{$scale} { margin-top: #{$size} !important; } - /* Set a #{$size} margin on the right at the breakpoint #{$breakpoint} */ - .mr-#{$breakpoint}-#{$scale} { margin-right: #{$size} !important; } - /* Set a #{$size} margin on the bottom at the breakpoint #{$breakpoint} */ - .mb-#{$breakpoint}-#{$scale} { margin-bottom: #{$size} !important; } - /* Set a #{$size} margin on the left at the breakpoint #{$breakpoint} */ - .ml-#{$breakpoint}-#{$scale} { margin-left: #{$size} !important; } +@each $breakpoint, $variant in $responsive-variants { + @include breakpoint($breakpoint) { + // Loop through the spacer values + @for $i from 1 through length($spacers) { + $size: nth($spacers, $i); // sm, md, lg, xl + $scale: $i - 1; // 0, 1, 2, 3, 4, 5, 6 + + /* Set a $size margin to all sides at $breakpoint */ + .m#{$variant}-#{$scale} { margin: $size !important; } + /* Set a $size margin on the top at $breakpoint */ + .mt#{$variant}-#{$scale} { margin-top: $size !important; } + /* Set a $size margin on the right at $breakpoint */ + .mr#{$variant}-#{$scale} { margin-right: $size !important; } + /* Set a $size margin on the bottom at $breakpoint */ + .mb#{$variant}-#{$scale} { margin-bottom: $size !important; } + /* Set a $size margin on the left at $breakpoint */ + .ml#{$variant}-#{$scale} { margin-left: $size !important; } + + @if ($size != 0) { + /* Set a negative $size margin on top at $breakpoint */ + .mt#{$variant}-n#{$scale} { margin-top : -$size !important; } + /* Set a negative $size margin on the right at $breakpoint */ + .mr#{$variant}-n#{$scale} { margin-right : -$size !important; } + /* Set a negative $size margin on the bottom at $breakpoint */ + .mb#{$variant}-n#{$scale} { margin-bottom: -$size !important; } + /* Set a negative $size margin on the left at $breakpoint */ + .ml#{$variant}-n#{$scale} { margin-left : -$size !important; } + } - /* Set a #{$size} margin on the left & right at the breakpoint #{$breakpoint} */ - .mx-#{$breakpoint}-#{$scale} { - margin-right: #{$size} !important; - margin-left: #{$size} !important; + /* Set a $size margin on the left & right at $breakpoint */ + .mx#{$variant}-#{$scale} { + margin-right: $size !important; + margin-left: $size !important; } - /* Set a #{$size} margin on the top & bottom at the breakpoint #{$breakpoint} */ - .my-#{$breakpoint}-#{$scale} { - margin-top: #{$size} !important; - margin-bottom: #{$size} !important; + /* Set a $size margin on the top & bottom at $breakpoint */ + .my#{$variant}-#{$scale} { + margin-top: $size !important; + margin-bottom: $size !important; } } - } -} -/* Set an auto margin on left & right */ -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; + /* responsive horizontal auto margins */ + .mx#{$variant}-auto { + margin-right: auto !important; + margin-left: auto !important; + } + } } diff --git a/node_modules/primer-utilities/lib/padding.scss b/node_modules/primer-utilities/lib/padding.scss index 80038f7d750f55b3aa5c27c3dca4aeb241a12efe..bc3ba09c6dcc4c83ce22a841fb12cda1380b3f1e 100644 --- a/node_modules/primer-utilities/lib/padding.scss +++ b/node_modules/primer-utilities/lib/padding.scss @@ -1,67 +1,54 @@ // Padding spacer utilities // stylelint-disable block-opening-brace-space-before, declaration-colon-space-before // stylelint-disable comment-empty-line-before -@for $i from 1 through length($spacers) { - $size: #{nth($spacers, $i)}; - $scale: #{$i - 1}; - /* Set a #{$size} padding to all sides */ - .p-#{$scale} { padding : #{$size} !important; } - /* Set a #{$size} padding to the top */ - .pt-#{$scale} { padding-top : #{$size} !important; } - /* Set a #{$size} padding to the right */ - .pr-#{$scale} { padding-right : #{$size} !important; } - /* Set a #{$size} padding to the bottom */ - .pb-#{$scale} { padding-bottom: #{$size} !important; } - /* Set a #{$size} padding to the left */ - .pl-#{$scale} { padding-left : #{$size} !important; } - - /* Set a #{$size} padding to the left & right */ - .px-#{$scale} { - padding-right: #{$size} !important; - padding-left: #{$size} !important; - } +// Responsive padding spacer utilities +@each $breakpoint, $variant in $responsive-variants { + @include breakpoint($breakpoint) { + // Loop through the spacer values + @for $i from 1 through length($spacers) { + $size: nth($spacers, $i); // xs, sm, md, lg, xl + $scale: $i - 1; // 0, 1, 2, 3, 4, 5, 6 + + /* Set a $size padding to all sides at $breakpoint */ + .p#{$variant}-#{$scale} { padding: $size !important; } + /* Set a $size padding to the top at $breakpoint */ + .pt#{$variant}-#{$scale} { padding-top: $size !important; } + /* Set a $size padding to the right at $breakpoint */ + .pr#{$variant}-#{$scale} { padding-right: $size !important; } + /* Set a $size padding to the bottom at $breakpoint */ + .pb#{$variant}-#{$scale} { padding-bottom: $size !important; } + /* Set a $size padding to the left at $breakpoint */ + .pl#{$variant}-#{$scale} { padding-left: $size !important; } + + /* Set a $size padding to the left & right at $breakpoint */ + .px#{$variant}-#{$scale} { + padding-right: $size !important; + padding-left: $size !important; + } - /* Set a #{$size} padding to the top & bottom */ - .py-#{$scale} { - padding-top: #{$size} !important; - padding-bottom: #{$size} !important; + /* Set a $size padding to the top & bottom at $breakpoint */ + .py#{$variant}-#{$scale} { + padding-top: $size !important; + padding-bottom: $size !important; + } + } } } -// Responsive padding spacer utilities - -// Loop through the breakpoint values -@each $breakpoint in map-keys($breakpoints) { - - // Loop through the spacer values - @for $i from 1 through length($spacers) { - @include breakpoint($breakpoint) { - $size: #{nth($spacers, $i)}; // xs, sm, md, lg, xl - $scale: #{$i - 1}; // 0, 1, 2, 3, 4, 5, 6 +// responsive padding for containers +// stylelint-disable-next-line primer/selector-no-utility +.p-responsive { + padding-right: $spacer-3 !important; + padding-left: $spacer-3 !important; - /* Set a #{$size} padding to all sides at the #{$breakpoint} breakpoint */ - .p-#{$breakpoint}-#{$scale} { padding: #{$size} !important; } - /* Set a #{$size} padding to the top at the #{$breakpoint} breakpoint */ - .pt-#{$breakpoint}-#{$scale} { padding-top: #{$size} !important; } - /* Set a #{$size} padding to the right at the #{$breakpoint} breakpoint */ - .pr-#{$breakpoint}-#{$scale} { padding-right: #{$size} !important; } - /* Set a #{$size} padding to the bottom at the #{$breakpoint} breakpoint */ - .pb-#{$breakpoint}-#{$scale} { padding-bottom: #{$size} !important; } - /* Set a #{$size} padding to the left at the #{$breakpoint} breakpoint */ - .pl-#{$breakpoint}-#{$scale} { padding-left: #{$size} !important; } - - /* Set a #{$size} padding to the left & right at the #{$breakpoint} breakpoint */ - .px-#{$breakpoint}-#{$scale} { - padding-right: #{$size} !important; - padding-left: #{$size} !important; - } + @include breakpoint(sm) { + padding-right: $spacer-6 !important; + padding-left: $spacer-6 !important; + } - /* Set a #{$size} padding to the top & bottom at the #{$breakpoint} breakpoint */ - .py-#{$breakpoint}-#{$scale} { - padding-top: #{$size} !important; - padding-bottom: #{$size} !important; - } - } + @include breakpoint(lg) { + padding-right: $spacer-3 !important; + padding-left: $spacer-3 !important; } } diff --git a/node_modules/primer-utilities/lib/typography.scss b/node_modules/primer-utilities/lib/typography.scss index 7e588b1d12bdc6849b860367dd981d879c4cd6e9..5d2fb03504a0ca9c7e9ffff0fa4ff971885fdb52 100644 --- a/node_modules/primer-utilities/lib/typography.scss +++ b/node_modules/primer-utilities/lib/typography.scss @@ -1,6 +1,11 @@ // stylelint-disable block-closing-brace-space-before, primer/selector-no-utility, selector-list-comma-newline-after // stylelint-disable comment-empty-line-before // Type scale variables found in primer-support/lib/variables.scss +// $h00-size-mobile: 40px; +// $h0-size-mobile: 32px; +// $h1-size-mobile: 26px; +// $h2-size-mobile: 22px; +// $h3-size-mobile: 18px; // $h00-size: 48px; // $h0-size: 40px; // $h1-size: 32px; @@ -12,33 +17,28 @@ /* Set the font size to 26px */ .h1 { - font-size: 26px !important; + font-size: $h1-size-mobile !important; @include breakpoint(md) { font-size: $h1-size !important; } - } /* Set the font size to 22px */ .h2 { - font-size: 22px !important; + font-size: $h2-size-mobile !important; @include breakpoint(md) { font-size: $h2-size !important; } } /* Set the font size to 18px */ .h3 { - font-size: 18px !important; + font-size: $h3-size-mobile !important; @include breakpoint(md) { font-size: $h3-size !important; } - } /* Set the font size to #{$h4-size} */ .h4 { font-size: $h4-size !important; - - @include breakpoint(md) { font-size: $h4-size !important; } - } /* Set the font size to #{$h5-size} */ @@ -55,25 +55,23 @@ // Type utilities that match type sale /* Set the font size to 26px */ .f1 { - font-size: 26px !important; + font-size: $h1-size-mobile !important; @include breakpoint(md) { font-size: $h1-size !important; } - } /* Set the font size to 22px */ .f2 { - font-size: 22px !important; + font-size: $h2-size-mobile !important; @include breakpoint(md) { font-size: $h2-size !important; } } /* Set the font size to 18px */ .f3 { - font-size: 18px !important; + font-size: $h3-size-mobile !important; @include breakpoint(md) { font-size: $h3-size !important; } - } /* Set the font size to #{$h4-size} */ @@ -81,7 +79,6 @@ font-size: $h4-size !important; @include breakpoint(md) { font-size: $h4-size !important; } - } /* Set the font size to #{$h5-size} */ @@ -92,47 +89,43 @@ // Type utils with light weight that match type scale /* Set the font size to 40px and weight to light */ .f00-light { - font-size: 40px !important; + font-size: $h00-size-mobile !important; font-weight: $font-weight-light !important; @include breakpoint(md) { font-size: $h00-size !important; } - } /* Set the font size to 32px and weight to light */ .f0-light { - font-size: 32px !important; + font-size: $h0-size-mobile !important; font-weight: $font-weight-light !important; @include breakpoint(md) { font-size: $h0-size !important; } - } /* Set the font size to 26px and weight to light */ .f1-light { - font-size: 26px !important; + font-size: $h1-size-mobile !important; font-weight: $font-weight-light !important; @include breakpoint(md) { font-size: $h1-size !important; } - } /* Set the font size to 22px and weight to light */ .f2-light { - font-size: 22px !important; + font-size: $h2-size-mobile !important; font-weight: $font-weight-light !important; @include breakpoint(md) { font-size: $h2-size !important; } - } + // Same size and weight as .lead but without color property /* Set the font size to 18px and weight to light */ .f3-light { - font-size: 18px !important; + font-size: $h3-size-mobile !important; font-weight: $font-weight-light !important; @include breakpoint(md) { font-size: $h3-size !important; } - } // Smallest text size @@ -144,7 +137,7 @@ margin-bottom: 30px; font-size: $h3-size; font-weight: $font-weight-light; - color: #555; + color: $gray-600; } // Line-height variations @@ -157,28 +150,25 @@ .lh-condensed { line-height: $lh-condensed !important; } /* Set the line height to default */ .lh-default { line-height: $lh-default !important; } +/* Set the line height to zero */ +.lh-0 { line-height: 0 !important; } // Text alignments -/* Text align to the right */ -.text-right { text-align: right !important; } -/* Text align to the left */ -.text-left { text-align: left !important; } -/* Text align to the center */ -.text-center { text-align: center !important; } - // Responsive text alignment -// .text-md-left, .text-lg-right, ... -@each $breakpoint in map-keys($breakpoints) { +@each $breakpoint, $variant in $responsive-variants { @include breakpoint($breakpoint) { - .text-#{$breakpoint}-right { text-align: right !important; } - .text-#{$breakpoint}-left { text-align: left !important; } - .text-#{$breakpoint}-center { text-align: center !important; } + /* Text align to the right */ + .text#{$variant}-right { text-align: right !important; } + /* Text align to the left */ + .text#{$variant}-left { text-align: left !important; } + /* Text align to the center */ + .text#{$variant}-center { text-align: center !important; } } } // Text styles /* Set the font weight to normal */ -.text-normal { font-weight: normal !important; } +.text-normal { font-weight: $font-weight-normal !important; } /* Set the font weight to bold */ .text-bold { font-weight: $font-weight-bold !important;} /* Set the font to italic */ @@ -186,9 +176,13 @@ /* Make text uppercase */ .text-uppercase { text-transform: uppercase !important; } /* Underline text */ +.text-underline { text-decoration: underline !important; } +/* Don't underline text */ .no-underline { text-decoration: none !important; } /* Don't wrap white space */ .no-wrap { white-space: nowrap !important; } +/* Normal white space */ +.ws-normal { white-space: normal !important; } /* Allow long lines with no spaces to line break */ .wb-break-all { word-break: break-all !important; } @@ -203,9 +197,19 @@ // Text Shadows /* Add a dark text shadow */ .text-shadow-dark { - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25), 0 1px 25px rgba(0, 0, 0, 0.75); + text-shadow: 0 1px 1px rgba($black, 0.25), 0 1px 25px rgba($black, 0.75); } /* Add a light text shadow */ .text-shadow-light { - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-shadow: 0 1px 0 rgba($white, 0.5); +} + +/* Set to monospace font */ +.text-mono { + font-family: $mono-font; +} + +/* Disallow user from selecting text */ +.user-select-none { + user-select: none !important; } diff --git a/node_modules/primer-utilities/lib/visibility-display.scss b/node_modules/primer-utilities/lib/visibility-display.scss index 08b6d608d4146234bf00dde30bfda14546956942..8a2f71c0afbf40fbc997d1e5fc448ace154d1fb8 100644 --- a/node_modules/primer-utilities/lib/visibility-display.scss +++ b/node_modules/primer-utilities/lib/visibility-display.scss @@ -2,48 +2,32 @@ // stylelint-disable block-opening-brace-space-after, block-opening-brace-space-before, primer/selector-no-utility // stylelint-disable comment-empty-line-before +$display-values: ( + block, + flex, + inline, + inline-block, + inline-flex, + none, + table, + table-cell +); + +// Responsive display utilities +@each $breakpoint, $variant in $responsive-variants { + @include breakpoint($breakpoint) { + @each $display in $display-values { + .d#{$variant}-#{$display} { display: $display !important; } + } + } +} + // Visibility utilities /* Visibility hidden */ .v-hidden { visibility: hidden !important; } /* Visibility visible */ .v-visible { visibility: visible !important; } -// Display utilites -/* Set the display to table */ -.d-table { display: table !important; } -/* Set the display to table-cell */ -.d-table-cell { display: table-cell !important; } -/* Set the table-layout to fixed */ -.table-fixed { table-layout: fixed !important; } - -/* Set the display to block */ -.d-block { display: block !important; } -/* Set the display to inline */ -.d-inline { display: inline !important; } -/* Set the display to inline-block */ -.d-inline-block { display: inline-block !important; } -/* Set the display to none */ -.d-none { display: none !important; } - -// Responsive display utlities -// .d-sm-none, .d-lg-inline, ... -@each $breakpoint in map-keys($breakpoints) { - @include breakpoint($breakpoint) { - /* Set the display to table at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-table { display: table !important; } - /* Set the display to table cell at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-table-cell { display: table-cell !important; } - /* Set the display to block at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-block { display: block !important; } - /* Set the display to inline at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-inline { display: inline !important; } - /* Set the display to inline block at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-inline-block { display: inline-block !important; } - /* Set the display to none at the #{$breakpoint} breakpoint */ - .d-#{$breakpoint}-none { display: none !important; } - } -} - // Hide utilities for each breakpoint // Each hide utility only applies to one breakpoint range. @media (max-width: $width-sm) { @@ -70,19 +54,37 @@ } } +/* Set the table-layout to fixed */ +.table-fixed { table-layout: fixed !important; } + // Only display content to screen readers // // See: http://a11yproject.com/posts/how-to-hide-content/ - .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; - margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1241631 word-wrap: normal; border: 0; } + +// Only display content on focus +.show-on-focus { + position: absolute; + width: 1px; + height: 1px; + margin: 0; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + + &:focus { + z-index: 20; + width: auto; + height: auto; + clip: auto; + } +}