$bolt-border-radius-values [map]
Bolt's definition of border-radius scale. Used within 'export-data()' to JSON.
Code
$bolt-border-radius-values: (
small: 3px,
large: 0.75em,
full: 100em
);
$bolt-breakpoints [map]
Major breakpoints used globally in Bolt.
Code
$bolt-breakpoints: (
xxsmall: 320px,
xsmall: 400px,
small: 600px,
medium: 800px,
large: 1000px,
xlarge: 1200px,
xxlarge: 1400px,
xxxlarge: 1920px
);
$mq-breakpoints
A duplicate of $bolt-breakpoints - used within mq()
Code
$mq-breakpoints: $bolt-breakpoints;
$bolt-brand-colors [map]
Bolt Brand Colors - merged into $bolt-colors map
Code
$bolt-brand-colors: (
'indigo': (
'xdark': hsl(233, 71%, 8%),
'dark': hsl(233, 47%, 16%),
'base': hsl(233, 47%, 23%),
'light': hsl(233, 33%, 49%),
'xlight': hsl(233, 73%, 81%),
),
'yellow': (
'xdark': hsl(43, 100%, 20%),
'dark': hsl(43, 82%, 50%),
'base': hsl(43, 100%, 65%),
'light': hsl(43, 100%, 80%),
'xlight': hsl(43, 100%, 90%),
),
'teal': (
'xdark': hsl(180, 100%, 10%),
'dark': hsl(180, 82%, 22%),
'base': hsl(180, 100%, 30%),
'light': hsl(180, 45%, 64%),
'xlight': hsl(180, 48%, 81%),
),
'orange': (
'xdark': hsl(15, 100%, 20%),
'dark': hsl(15, 82%, 39%),
'base': hsl(15, 82%, 50%),
'light': hsl(15, 100%, 70%),
'xlight': hsl(15, 100%, 85%),
),
'gray': (
'xdark': hsl(233, 6%, 19%),
'dark': hsl(233, 5.3%, 38%),
'base': hsl(233, 5.7%, 57.6%),
'light': hsl(233, 20%, 90%),
'xlight': hsl(233, 23%, 97%),
),
'black': (
'base': hsl(225, 8%, 9%),
),
'white': (
'base': hsl(0, 0%, 100%),
),
);
$bolt-status-colors [map]
Bolt Status Colors - merged into $bolt-colors map
Code
$bolt-status-colors: (
'blue': (
'dark': hsl(201, 100%, 25%),
'base': hsl(201, 100%, 35%),
'light': hsl(201, 100%, 92%),
),
'success': (
'dark': rgb(37, 41%, 25%),
'base': hsl(123, 41%, 35%),
'light': hsl(123, 41%, 90%),
),
'error': (
'dark': hsl(6, 76%, 35%),
'base': hsl(6, 76%, 40%),
'light': hsl(6, 80%, 90%),
),
'warning': (
'dark': hsl(51, 80%, 45%),
'base': hsl(51, 80%, 55%),
'light': hsl(51, 80%, 90%),
),
);
$bolt-social-colors [map]
Bolt Social Colors - merged into $bolt-colors map
Code
$bolt-social-colors: (
'social': (
'facebook': hsl(222, 46%, 42%),
'twitter': hsl(196, 100%, 46%),
'linkedin': hsl(201, 96%, 36%),
),
);
$bolt-colors [map]
All Bolt Colors - used within bolt-color @mixin and @function
Code
$bolt-colors: map-merge(
map-merge($bolt-brand-colors, $bolt-status-colors),
$bolt-social-colors
);
$bolt-fonts--subset-loaded-class
Async Default font subset loaded class.
Code
$bolt-fonts--subset-loaded-class: 'js-fonts-subset-loaded';
$bolt-fonts--loaded-class
Async Default font loaded class.
Code
$bolt-fonts--loaded-class: 'js-fonts-loaded';
$bolt-shadow--small
Bolt small shadow
Code
$bolt-shadow--small: 0 2px 0.15rem rgba($bolt-shadow-color, 0.3);
$bolt-shadow--medium
Bolt medium shadow
Code
$bolt-shadow--medium: 0 0.15rem 0.3rem rgba($bolt-shadow-color, 0.35);
$bolt-shadow--large
Bolt large shadow
Code
$bolt-shadow--large: 0 0.35rem 0.6rem rgba($bolt-shadow-color, 0.18);
$bolt-translate-raised--small
Bolt translate raised small effect
Code
$bolt-translate-raised--small: translate3d(0, -1px, 0);
$bolt-translate-raised--medium
Bolt translate raised medium effect
Code
$bolt-translate-raised--medium: translate3d(0, -0.125rem, 0);
$bolt-translate-raised--large
Bolt translate raised large effect
Code
$bolt-translate-raised--large: translate3d(0, -0.25rem, 0);
$bolt-global-link-hover-opacity
Bolt default global link hover opacity
Code
$bolt-global-link-hover-opacity: bolt-opacity(80);
$bolt-global-link-active-opacity
Bolt default global link active opacity
Code
$bolt-global-link-active-opacity: bolt-opacity(60);
$bolt-global-border-opacity
Bolt default global border opacity
Code
$bolt-global-border-opacity: bolt-opacity(20);
$bolt-global-border-color
Bolt default global border color
Code
$bolt-global-border-color: bolt-color(gray);
$bolt-global-button-hover-mix
Bolt default global button hover mix %
Code
$bolt-global-button-hover-mix: 15%;
$bolt-global-button-hover-color
Bolt default global button hover color
Code
$bolt-global-button-hover-color: bolt-color(white);
$bolt-global-button-active-mix
Bolt default global button active mix %
Code
$bolt-global-button-active-mix: 25%;
$bolt-global-button-active-color
Bolt default global button active color
Code
$bolt-global-button-active-color: bolt-color(black);
$bolt-block-elements-list
Bolt's definition of block level elements.
Code
$bolt-block-elements-list: 'p',
'pre',
'blockquote',
'table',
'ol',
'ul',
'dl',
'fieldset',
'legend',
'details',
'summary',
'hr',
'address';
$bolt-all-block-elements
Bolt's definition of all unquoted block level elements.
Code
$bolt-all-block-elements: $bolt-unquoted-block-elements-list;
$bolt-heading-elements-list
Bolt's definition of heading elements.
Code
$bolt-heading-elements-list: 'h1',
'h2',
'h3',
'h4',
'h5',
'h6';
$bolt-all-heading-elements
Bolt's definition of all unquoted heading elements.
Code
$bolt-all-heading-elements: $bolt-unquoted-heading-elements-list;
$_bolt-custom-block-elements
Quoted custom block elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
Code
$_bolt-custom-block-elements: ();
$_bolt-custom-inline-elements
Quoted custom inline elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
Code
$_bolt-custom-inline-elements: ();
$_bolt-custom-inline-block-elements
Quoted custom inline-block elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
Code
$_bolt-custom-inline-block-elements: ();
$bolt-all-custom-block-elements
All (unquoted) custom block elements used to globally collect group generic styles
Code
$bolt-all-custom-block-elements: ();
$bolt-all-custom-inline-block-elements
All (unquoted) custom inline-block elements used to globally collect group generic styles
Code
$bolt-all-custom-inline-block-elements: ();
$bolt-all-custom-inline-elements
All (unquoted) custom inline elements used to globally collect group generic styles
Code
$bolt-all-custom-inline-elements: ();
@mixin bolt-register-element
Register Element helper mixin: registers any custom elements getting included (used outside selector or declaration)
Code
@mixin bolt-register-element($element, $element-type) {
@if ($element-type != 'inline' and $element-type != 'inline-block' and $element-type != 'block'){
@error 'Please register your #{$element} element as either an inline, inline-block or block.';
}
// @TODO: find a way to dynamically assign the right list to this
@if ($element-type == 'inline') {
$_bolt-custom-inline-elements: append($_bolt-custom-inline-elements, $element) !global;
} @else if ( $element-type == 'block') {
$_bolt-custom-block-elements: append($_bolt-custom-block-elements, $element) !global;
} @else if ( $element-type == 'inline-block') {
$_bolt-custom-inline-block-elements: append($_bolt-custom-inline-block-elements, $element) !global;
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$element | string |
The custom element to register | (None) |
$element-type | string |
Three different types available: inline, inline-block (which may be rendered as inline-flex), and block | (None) |
Example SCSS: Utility Mixin
@include bolt-register-element('bolt-ordered-list', 'block');
$bolt-z-indexes [map]
Z-Index Settings
Code
$bolt-z-indexes: (
sets: (
fab: 300,
modal: 200,
modalBG: 180,
navFixed: 160,
tooltip: 140,
popover: 120,
nav: 100,
contentTop: 80,
content: 60,
contentBottom: 40,
backgroundTop: 20,
background: 0,
backgroundBottom: -20,
),
);
$bolt-spacing-values [map]
Bolt's definition of spacing scale. Used within 'export-data()' to JSON.
Code
$bolt-spacing-values: (
'': 1,
'xxsmall': 0.125,
'xsmall': 0.25,
'small': 0.5,
'medium': 1,
'large': 2,
'xlarge': 4,
'xxlarge': 8,
);
$bolt-spacing-properties [map]
Bolt's definition of available spacing properties.
Code
$bolt-spacing-properties: ('padding', 'margin');
$bolt-spacing-directions [map]
Bolt's definition of spacing directions.
Code
$bolt-spacing-directions: ('', 'top', 'right', 'bottom', 'left');
$bolt-spacing-types [map]
Bolt's definition of spacing types.
Code
$bolt-spacing-types: ('', 'squished', 'stretched');
$bolt-opacities [map]
Bolt's opacity scale.
The keys in this array are the opacity value names and not necessarily numeric. For example, a valid key could be
"semi-transparent". However, the values in this array must be valid numeric values for the CSS 'opacity' property.
Code
$bolt-opacities: (
0: 0,
20: .2,
40: .4,
60: .6,
80: .8,
100: 1
);
@function bolt-get-shadows-map
Helper function to return $bolt-shadows map
Code
@function bolt-get-shadows-map($base-color: rgb(6, 10, 36)) {
$bolt-shadows: (
'sets': (
//'b1': (
// 'base': 'inset 0 1px 3px rgba(0,0,0,0.12), inset 0 1px 2px rgba(0,0,0,0.24)',
// 'lifted': ''
//),
'level-10': (
'base': '0 1px 2px 1px #{transparentize($base-color, .92)}',
'raised': ''
),
'level-20': (
'base': '0 1px 4px 1px #{transparentize($base-color, .90)}, 0 5px 10px 0 #{transparentize($base-color, .92)}',
'raised': '0 1px 8px 1px #{transparentize($base-color, .82)}, 0 5px 10px 1px #{transparentize($base-color, .85)}, 0 15px 30px 0 #{transparentize($base-color, .84)}'
),
'level-30': (
'base': '0 8px 15px 1px #{transparentize($base-color, .90)}, 0 18px 24px 1px #{transparentize($base-color, .88)}',
'raised': '0 8px 15px 1px #{transparentize($base-color, .90)}, 0 24px 36px 1px #{transparentize($base-color, .82)}, 0 35px 50px 0 #{transparentize($base-color, .75)}'
),
'level-40': (
'base': '0 10px 20px 1px #{transparentize($base-color, .90)}, 0 24px 36px 1px #{transparentize($base-color, .82)}',
'raised': '0 10px 20px 1px #{transparentize($base-color, .90)}, 0 36px 49px 1px #{transparentize($base-color, .80)}, 0 45px 65px 0 #{transparentize($base-color, .70)}'
),
'level-50': (
'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 40px 48px 1px #{transparentize($base-color, .75)}',
'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 50px 70px 1px #{transparentize($base-color, .80)}, 0 55px 80px 0 #{transparentize($base-color, .70)}'
),
'level-60': (
'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 50px 60px 1px #{transparentize($base-color, .60)}',
'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 70px 80px 1px #{transparentize($base-color, .80)}, 0 80px 120px 0 #{transparentize($base-color, .65)}'
),
'level-70': (
'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 80px 90px 1px #{transparentize($base-color, .60)}',
'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 110px 130px 1px #{transparentize($base-color, .75)}, 0 130px 150px 0 #{transparentize($base-color, .65)}'
)
)
) !default;
@return $bolt-shadows;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$base-color | color |
The base shadow color (with the 'transparentize' filter applied) | rgb(6, 10, 36) |
Example SCSS: Get the shadow 'sets'
$shadows: map-get(bolt-get-shadows-map(), 'sets');
Returns
map – Returns sass map of all shadow levels 'base' and 'raised' variations$bolt-shadows
Variable containing default $bolt-shadows map - utility class and sets. Used within 'export-data()' to JSON.
Code
$bolt-shadows: bolt-get-shadows-map();
$bolt-font-family--japanese
Bolt's definition of a Japanese specific font-stack.
Code
$bolt-font-family--japanese: -apple-system, BlinkMacSystemFont, 'ヒラギノ角ゴ ProN', 'Hiragino Kaku Gothic ProN', '游ゴシック', '游ゴシック体', YuGothic, 'Yu Gothic', 'メイリオ', Meiryo, 'MS ゴシック', 'MS Gothic', HiraKakuProN-W3, 'TakaoExゴシック', TakaoExGothic, 'MotoyaLCedar', 'Droid Sans Japanese', sans-serif;
$bolt-font-family--sans-fallback
Default sans-serif fallback font stack containing [1] maps to the system UI font and [2] known system UI fonts. Used within the $bolt-font-families map.
Code
$bolt-font-family--sans-fallback: -apple-system, BlinkMacSystemFont, /* [1] */
'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', /* [2] */
'Helvetica Neue', sans-serif;
$bolt-font-family--serif
Default serif font stack. Used within the $bolt-font-families map.
Code
$bolt-font-family--serif: 'Georgia', serif;
$bolt-font-family--mono-fallback
Default monospace fallback font stack. Used within the $bolt-font-families map.
Code
$bolt-font-family--mono-fallback: monospace, monospace;
$bolt-font-family--sans
Default sans-serif font stack. Used within the $bolt-font-families map.
Code
$bolt-font-family--sans: 'Open Sans', 'Helvetica Neue', sans-serif;
$bolt-font-family--sans-subset
Default sans-serif subset font stack. Used within the $bolt-font-families map.
Code
$bolt-font-family--sans-subset: 'OpenSansSubset', 'Helvetica Neue', sans-serif;
$bolt-font-family--mono
Default monospace font stack. Used within the $bolt-font-families map.
Code
$bolt-font-family--mono: monospace, monospace;
$bolt-font-families [map]
Bolt's definition of body, heading, and code text.
Code
$bolt-font-families: (
font-families: (
body: (
fallback-font: $bolt-font-family--sans-fallback,
custom-font: $bolt-font-family--sans,
loaded-class: $bolt-fonts--loaded-class
),
bodySubset: (
fallback-font: $bolt-font-family--sans-fallback,
custom-font: $bolt-font-family--sans-subset,
loaded-class: $bolt-fonts--subset-loaded-class
),
heading: (
fallback-font: $bolt-font-family--sans-fallback,
custom-font: $bolt-font-family--sans,
loaded-class: $bolt-fonts--loaded-class
),
code: (
fallback-font: $bolt-font-family--mono-fallback,
custom-font: $bolt-font-family--mono,
loaded-class: $bolt-fonts--loaded-class
)
)
);
$bolt-font-size--small-bp
Small breakpoint font-size
Code
$bolt-font-size--small-bp: bolt-rem(bolt-breakpoint(xxsmall));
$bolt-font-size--medium-bp
Medium breakpoint font-size
Code
$bolt-font-size--medium-bp: bolt-rem(bolt-breakpoint(medium));
$bolt-font-size--xxxlarge--max
Default XXX Large Max font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--xxxlarge--max: 3.083rem;
$bolt-font-size--xxxlarge--min
Default XXX Large Min font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--xxxlarge--min: 2.275rem;
$bolt-font-size--xxlarge
Default XX Large font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--xxlarge: 1.781rem;
$bolt-font-size--xlarge
Default X Large font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--xlarge: 1.417rem;
$bolt-font-size--large
Default Large font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--large: 1.111rem;
$bolt-font-size--medium
Medium font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--medium: 1rem;
$bolt-font-size--small
Small font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--small: 0.9rem;
$bolt-font-size--xsmall
X Small font-size. Used within $bolt-font-sizes map.
Code
$bolt-font-size--xsmall: 0.8rem;
$bolt-line-height--xxxlarge
Default XXX Large line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--xxxlarge: 1.14;
$bolt-line-height--xxlarge
Default XX Large line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--xxlarge: 1.31;
$bolt-line-height--xlarge
Default X Large line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--xlarge: 1.35;
$bolt-line-height--large
Default Large line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--large: 1.45;
$bolt-line-height--medium
Default Medium line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--medium: 1.65;
$bolt-line-height--small
Default Small line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--small: 1.51;
$bolt-line-height--xsmall
Default X Small line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--xsmall: 1.45;
$bolt-line-height--tight
Default Tight line-height. Used within $bolt-font-sizes map.
Code
$bolt-line-height--tight: 1.111;
$bolt-font-sizes [map]
Bolt's definition of all options of possible text sizes.
Code
$bolt-font-sizes: (
font-sizes: (
xxxlarge: (
font-size: (
$bolt-font-size--small-bp: $bolt-font-size--xxxlarge--min,
$bolt-font-size--medium-bp: $bolt-font-size--xxxlarge--max
),
line-height: (
regular: $bolt-line-height--xxxlarge,
tight: $bolt-line-height--tight
),
),
xxlarge: (
font-size: $bolt-font-size--xxlarge,
line-height: (
regular: $bolt-line-height--xxlarge,
tight: $bolt-line-height--tight
)
),
xlarge: (
font-size: $bolt-font-size--xlarge,
line-height: (
regular: $bolt-line-height--xlarge,
tight: $bolt-line-height--tight
)
),
large: (
font-size: $bolt-font-size--large,
line-height: (
regular: $bolt-line-height--large,
tight: $bolt-line-height--tight
)
),
medium: (
font-size: $bolt-font-size--medium,
line-height: (
regular: $bolt-line-height--medium,
tight: $bolt-line-height--tight
)
),
small: (
font-size: $bolt-font-size--small,
line-height: (
regular: $bolt-line-height--small,
tight: $bolt-line-height--tight
)
),
xsmall: (
font-size: $bolt-font-size--xsmall,
line-height: (
regular: $bolt-line-height--xsmall,
tight: $bolt-line-height--tight
)
)
)
);
$bolt-font-weights [map]
Bolt's definition of all possible options of text weights.
Code
$bolt-font-weights: (
font-weights: (
bold: $bolt-font-weight--bold,
semibold: $bolt-font-weight--semibold,
regular: $bolt-font-weight--regular,
normal: $bolt-font-weight--regular
)
);
@function bolt-border-radius
Bolt border radius function
Code
@function bolt-border-radius($value) {
@if map-has-key($bolt-border-radius-values, $value) {
@return map-get($bolt-border-radius-values, $value)
} @else {
@error 'A value, #{$value}, was passed into bolt-border-radius() that is not defined in $bolt-border-radius-values';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | string |
(None) |
Example SCSS: bolt-border-radius function
.element {
border-radius: bolt-border-radius(small);
}
@mixin bolt-border-radius
Bolt border radius mixin
Code
@mixin bolt-border-radius($value) {
$border-radius: map-get-deep($bolt-border-radius-values, $value);
@if map-has-key($bolt-border-radius-values, $value) {
border-radius: $border-radius;
} @else {
@error 'A value, #{$value}, was passed into @include bolt-border-radius() that is not defined in $bolt-border-radius-values';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | string |
(None) |
Example SCSS: bolt-border-radius mixin
.element {
@include bolt-border-radius(small);
}
@function bolt-breakpoint
This returns the breakpoint value (with px) from $bolt-breakpoints map
Code
@function bolt-breakpoint($name) {
@return map-get($bolt-breakpoints, $name);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$name | string |
The name of the breakpoint (from within $bolt-breakpoints) | (None) |
Example: SCSS
.element {
@media screen and (max-width: #{bolt-breakpoint(xsmall)}) {
font-size: 24px;
}
}
Returns
string – The breakpoint value (with px)@mixin bolt-mq
This provides a wrapper mixin for performing bolt media queries with mq() which allows for the use of:
$from (inclusive min-width boundary), $until (exclusive max-width boundary), $and (additional custom directives), $media-type (media type: screen, print, etc)
Code
@mixin bolt-mq($args...) {
@include mq($args...) {
@content;
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$args... | Bolt Media Query args ([breakpoint-name], $from, $until, $and, $media-type) | (None) |
Example SCSS: Bolt's mq() wrapper
.element {
@include bolt-mq(($until: small){
flex-direction: column;
}
}
@mixin bolt-poly-fluid-sizing
Generate linear interpolated size values through multiple break points
Code
@mixin bolt-poly-fluid-sizing($property, $map) {
// Get the number of provided breakpoints
$length: length(map-keys($map));
// Error if the number of breakpoints is < 2
@if ($length < 2) {
@error 'bolt-poly-fluid-sizing() $map requires at least values';
}
// Sort the map by viewport width (key)
$map: bolt-map-sort($map);
$keys: map-keys($map);
// $map: (576px: 22px, 320px: 18px, 992px: 34px, 768px: 24px);
// @include bolt-poly-fluid-sizing('font-size', $map);
// Minimum size
#{$property}: map-get($map, nth($keys, 1));
// Interpolated size through breakpoints
@for $i from 1 through ($length - 1) {
@media (min-width: nth($keys, $i)) {
$value1: map-get($map, nth($keys, $i));
$value2: map-get($map, nth($keys, ($i + 1)));
// If values are not equal, perform linear interpolation
@if ($value1 != $value2) {
#{$property}: bolt-linear-interpolation((nth($keys, $i): $value1, nth($keys, ($i + 1)): $value2));
} @else {
#{$property}: $value1;
}
}
}
// Maxmimum size
@media (min-width: nth($keys, $length)) {
#{$property}: map-get($map, nth($keys, $length));
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$property | string |
A string CSS property name | (None) |
$map | map |
A Sass map of viewport unit and size value pairs | (None) |
Example: SCSS
@include bolt-poly-fluid-sizing('font-size', (576px: 22px, 768px: 24px, 992px: 34px));
@mixin bolt-button-reset
Lightweight style reset for button and input elements
Code
@mixin bolt-button-reset($value) {
@include bolt-padding(0);
@include bolt-font-family(body);
appearance: none; // override default [type=submit] button styles coming from Normalize
background: none;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | string |
(None) |
Example SCSS: bolt-button-reset mixin
.element {
@include bolt-button-reset;
}
@mixin bolt-button-color
Generate different background and border color button interaction states based on the primary color passed in
Code
@mixin bolt-button-color($color) {
color: bolt-text-contrast($color);
border-color: mix(black, $color, 25%);
background-color: $color;
// &:hover {
// color: bolt-text-contrast($color);
// background-color: mix(black, $color, 15%);
// border-color: mix(black, $color, 40%);
// }
//
// &:focus,
// &:active {
// color: bolt-text-contrast($color);
// background-color: mix(black, $color, 30%);
// border-color: mix(black, $color, 55%);
// }
}
Params
Name | Type | Description | Default |
---|---|---|---|
$color | color |
Used to generate button text, background, and border color | (None) |
Example: SCSS
.element {
@include bolt-button-color(bolt-color(success, dark));
}
@function bolt-color
Helper functions for applying global color swatches stored in Sass Maps
Code
@function bolt-color($color, $tone: $bolt-color-default) {
@return map-get-deep($bolt-colors, "#{$color}", $tone);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$color | string |
Bolt color base (e.g. indigo) | (None) |
$tone | string |
Bolt color tone (e.g. light) | $bolt-color-default |
Returns
HSL|RGB – The mapped bolt color value@mixin bolt-color
Mixin to return color value
Code
@mixin bolt-color($color, $tone: $bolt-color-default, $important: null) {
@if $important == important {
$important: !important;
}
/* stylelint-disable-next-line */
color: map-get-deep($bolt-colors, $color, $tone) $important;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$color | string |
Bolt color base (e.g. indigo) | (None) |
$tone | string |
Bolt color tone (e.g. light) | $bolt-color-default |
$important | string |
If 'important', then !important will be added onto the declaration string value | null |
Example SCSS: bolt-color mixin
.element {
@include bolt-color(indigo, light, important);
}
@mixin bolt-full-bleed
Places an element full browser width
Code
@mixin bolt-full-bleed() {
position: relative;
right: 50%;
left: 50%;
width: 100%; //fallback if vw not supported.
width: 100vw;
margin-top: -0.5px; //-0.5px is currently needed to patch a rendering bug in Firefox (when combined with layers being hardware accelerated)
margin-right: -50vw;
margin-bottom: -0.5px; //-0.5px is currently needed to patch a rendering bug in Firefox (when combined with layers being hardware accelerated)
margin-left: -50vw;
}
Example: SCSS
.element {
@include bolt-full-bleed();
}
@mixin bolt-vertical-scroll
Provides a bolt method for controlling vertical scroll (overflow)
Code
@mixin bolt-vertical-scroll() {
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
Example: SCSS
.element {
@include bolt-vertical-scroll();
}
@mixin bolt-horizontal-scroll
Provides a bolt method for controlling horizontal scroll (overflow)
Code
@mixin bolt-horizontal-scroll() {
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
}
Example: SCSS
.element {
@include bolt-horizontal-scroll();
}
@function _bolt-create-spacing-map
Private bolt function to generate default spacing scale, based off of the base font size
Code
@function _bolt-create-spacing-map($sizes, $char: '') {
$map: ();
@each $name, $value in $sizes {
$keyName: $name;
@if ($char != '' and $keyName != null) {
$keyName: $char + $keyName;
}
$keyValue: $value * $bolt-spacing-gutter;
$map: map-merge($map, ($keyName: $keyValue));
}
@return $map;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$sizes | list |
Sizes to iterate over | (None) |
$char | string |
String to append to $keyName setting | '' |
Example SCSS: $bolt-spacing-values not shown
$bolt-spacing-sizes: _bolt-create-spacing-map($bolt-spacing-values);
Returns
map – $map$bolt-spacing-sizes
A map created from $bolt-spacing-values
Code
$bolt-spacing-sizes: _bolt-create-spacing-map($bolt-spacing-values);
@function bolt-spacing
Convenience function for pulling data from $bolt-spacing-sizes
Code
@function bolt-spacing($size) {
@return map-get($bolt-spacing-sizes, nth($size, 1));
}
Params
Name | Type | Description | Default |
---|---|---|---|
$size | string |
T-shirt size to pull | (None) |
Example: SCSS
.element {
min-height: bolt-spacing(large);
}
Returns
number – A spacing unit@function bolt-v-spacing
Convert shirt sizes in baseline-optimized sizes
Code
@function bolt-v-spacing($size, $modifier: null) {
@if ($modifier == 'squished') {
$modifier: $bolt-spacing-squished;
} @else if ($modifier == 'stretched') {
$modifier: $bolt-spacing-stretched;
} @else {
$modifier: 1;
}
@return (bolt-spacing($size) / bolt-strip-unit($bolt-spacing-gutter)) * $bolt-spacing-leading * $modifier;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$size | string |
T-shirt size | (None) |
$modifier | string |
Unit to multiply ending result by | null |
Example: SCSS
.element {
width: bolt-v-spacing(xsmall);
}
Returns
number@function bolt-vertical-spacing
An alias for @function bolt-v-spacing
Code
@function bolt-vertical-spacing($size) {
@return bolt-v-spacing($size);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$size | string |
T-shirt size | (None) |
Example: SCSS
.element {
width: bolt-vertical-spacing(xsmall);
}
Returns
number@function _bolt-collapse-directional-values
Directional-property mixins are shorthands for writing properties like the following
Code
@function _bolt-collapse-directional-values($vals) {
$output: null;
$a: nth($vals, 1);
$b: if(length($vals) < 2, $a, nth($vals, 2));
$c: if(length($vals) < 3, $a, nth($vals, 3));
$d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4)));
@if $a == 0 { $a: 0; }
@if $b == 0 { $b: 0; }
@if $c == 0 { $c: 0; }
@if $d == 0 { $d: 0; }
@if $a == $b and $a == $c and $a == $d { $output: $a; }
@else if $a == $c and $b == $d { $output: $a $b; }
@else if $b == $d { $output: $a $b $c; }
@else { $output: $a $b $c $d; }
@return $output;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$vals | List |
List of directional values | (None) |
Example SCSS: Usage
.element {
@include border-style(dotted null);
@include margin(null 0 10px);
}
Example CSS: CSS Output
.element {
border-bottom-style: dotted;
border-top-style: dotted;
margin-bottom: 10px;
margin-left: 0;
margin-right: 0;
}
Returns
List@function _bolt-contains-falsy
Checks if a list does not contain any values.
Code
@function _bolt-contains-falsy($list) {
@each $item in $list {
@if not $item {
@return true;
}
}
@return false;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$list | list |
The list to check against. | (None) |
Returns
boolean@mixin _bolt-directional-property
Output directional properties, for instance `margin`.
Code
@mixin _bolt-directional-property($prefix, $suffix, $values) {
@if $important == important {
$important: !important;
}
// Property Names
$top: $prefix + '-top' + if($suffix, '-#{$suffix}', '');
$bottom: $prefix + '-bottom' + if($suffix, '-#{$suffix}', '');
$left: $prefix + '-left' + if($suffix, '-#{$suffix}', '');
$right: $prefix + '-right' + if($suffix, '-#{$suffix}', '');
$all: $prefix + if($suffix, '-#{$suffix}', '');
$values: _bolt-collapse-directional-values($values);
@if _bolt-contains-falsy($values) {
@if nth($values, 1) { #{$top}: nth($values, 1) $important; }
@if length($values) == 1 {
@if nth($values, 1) {
#{$right}: nth($values, 1) $important;
#{$bottom}: nth($values, 1) $important;
#{$left}: nth($values, 1) $important;
}
} @else {
@if nth($values, 2) { #{$right}: nth($values, 2) $important; }
}
@if length($values) == 2 {
@if nth($values, 1) { #{$bottom}: nth($values, 1) $important; }
@if nth($values, 2) { #{$left}: nth($values, 2) $important; }
} @else if length($values) == 3 {
@if nth($values, 3) { #{$bottom}: nth($values, 3) $important; }
@if nth($values, 2) { #{$left}: nth($values, 2) $important; }
} @else if length($values) == 4 {
@if nth($values, 3) { #{$bottom}: nth($values, 3) $important; }
@if nth($values, 4) { #{$left}: nth($values, 4) $important; }
}
} @else {
#{$all}: $values $important;
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$prefix | String |
Prefix to use | (None) |
$suffix | String |
Suffix to use | (None) |
$values | List |
List of values | (None) |
@mixin bolt-z-index
Bolt Z Index mixin
Code
@mixin bolt-z-index($key: "content", $utility: false) {
$indexes: map-get($bolt-z-indexes, 'sets');
$important: '';
@if $utility {
$important: '!important';
}
@if map-has-key($indexes, $key) {
z-index: map-get($indexes, $key) #{$important};
} @else {
@error 'A value, #{$key}, was passed into @include bolt-z-index() that is not defined in $bolt-z-indexes';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$key | string |
"content" |
|
$utility | boolean |
false |
Example SCSS: bolt-z-index mixin
.element {
@include bolt-z-index(tooltip);
}
@function bolt-z-index
Bolt Z Index function
Code
@function bolt-z-index($key) {
$indexes: map-get($bolt-z-indexes, 'sets');
@if map-has-key($indexes, $key) {
@return map-get($indexes, $key)
} @else {
@error 'A value, #{$key}, was passed into bolt-z-index() that is not defined in $bolt-z-indexes';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$key | string |
(None) |
Example SCSS: bolt-z-index function
.element {
z-index: bolt-z-index('nav');
}
@mixin bolt-shadow
This outputs the correct bolt values for transform and box-shadow
Code
@mixin bolt-shadow($key: 'G', $lifted: false, $base-color: false, $utility: false) {
$shadows: map-get(bolt-get-shadows-map(), 'sets');
@if $base-color {
$shadows: map-get(bolt-get-shadows-map($base-color), 'sets');
}
$important: '';
@if $utility {
$important: '!important';
}
@if not(map-has-key($shadows, $key)) {
@error 'A value, #{$key}, was passed into @include bolt-shadow() that is not defined in $bolt-shadows';
} @else {
@if $lifted {
transform: translateY(-2px) #{$important};
box-shadow: unquote(map-get(map-get($shadows, $key), 'raised')) #{$important};
} @else {
box-shadow: unquote(map-get(map-get($shadows, $key), 'base')) #{$important};
transition: all 0.3s cubic-bezier(.25,.8,.25,1) #{$important};
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$key | string |
The desired shadow level (e.g. 'level-30') | 'G' |
$lifted | boolean |
Weather or not to use the 'raised' values | false |
$base-color | boolean|string |
The base shadow color (with the 'transparentize' filter applied) | false |
$utility | boolean |
If true, adds '!important' to declaration | false |
Example: SCSS
.element {
@include bolt-shadow('level-30', true);
}
@function _bolt-str-replace
A private utility function for carrying out string replacement
Code
@function _bolt-str-replace($string, $search, $replace: '') {
$index: str-index($string, $search);
@if $index {
@return str-slice($string, 1, $index - 1) + $replace + _bolt-str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
}
@return $string;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$string | string |
The "needle" | (None) |
$search | string |
The "haystack" | (None) |
$replace | string |
The string value to replace | '' |
Example SCSS: Basic replace ($name not shown)
$example = _bolt-str-replace($name, ' ', '_')
@mixin bolt-font-face
Adds a correctly formatted @font-face declaration. Set at the top of the stylesheet.
Code
@mixin bolt-font-face($name, $path, $weight: null, $style: null, $exts: woff2 woff) {
$src: null;
$extmods: (
eot: '?',
svg: '#' + _bolt-str-replace($name, ' ', '_')
);
$formats: (
otf: 'opentype',
ttf: 'truetype'
);
@each $ext in $exts {
$extmod: if(map-has-key($extmods, $ext), $ext + map-get($extmods, $ext), $ext);
$format: if(map-has-key($formats, $ext), map-get($formats, $ext), $ext);
$src: append($src, url('#{$path}.#{$extmod}') format(quote($format)), comma);
}
@font-face {
font-family: quote($name);
font-style: $style;
font-weight: $weight;
src: $src;
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$name | string |
The 'font-family' name string | (None) |
$path | string |
Path to the font files | (None) |
$weight | string |
Default font weight | null |
$style | string |
Default style | null |
$exts | string |
Default extensions | woff2 woff |
Example: SCSS
@include bolt-font-face('Awesome_font_name, '/path/to/font/');
@mixin bolt-font-family
This returns the font-family for a specific element. Brand fonts are the default, with system fonts as the fallback.
Code
@mixin bolt-font-family($type, $is_root: false) {
$fallback-font-family: map-get-deep($bolt-font-families, 'font-families', $type, 'fallback-font');
$custom-font-family: map-get-deep($bolt-font-families, 'font-families', $type, 'custom-font');
$fonts-loaded-class: map-get-deep($bolt-font-families, 'font-families', $type, 'loaded-class');
$fontFamilyNames: map-keys(map-get($bolt-font-families, 'font-families')); // get the names of all available font families (custom and fallback)
font-family: $fallback-font-family;
font-family: var(--bolt-font-family-#{$type});
@if $is_root == false {
.#{$fonts-loaded-class} & {
font-family: $custom-font-family;
font-family: var(--bolt-font-family-#{$type});
}
}
@else {
@each $fontFamilyName in $fontFamilyNames {
--bolt-font-family-#{$fontFamilyName}: #{map-get-deep($bolt-font-families, 'font-families', $fontFamilyName, 'fallback-font')};
}
&.#{$fonts-loaded-class} {
@each $fontFamilyName in $fontFamilyNames {
--bolt-font-family-#{$fontFamilyName}: #{map-get-deep($bolt-font-families, 'font-families', $fontFamilyName, 'custom-font')};
}
font-family: $custom-font-family;
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$type | string |
Defines the font-family being used for each type of text: heading, body, or code. | (None) |
$is_root | boolean |
false |
Example SCSS: bolt-font-family mixin
.element {
@include bolt-font-family(body);
}
@mixin bolt-font-kerning
This applies default font kerning styles for supporting browsers.
Code
@mixin bolt-font-kerning() {
font-feature-settings: 'kern';
font-kerning: normal; // Safari 7+, Firefox 24+, Chrome 33(?)
}
Example SCSS: Setting globals
*,
*:before,
*:after {
@include bolt-font-kerning;
}
@mixin bolt-font-size
This returns the font-size and relevant line-height for a specific element.
Code
@mixin bolt-font-size($size, $leading: regular) {
$font-size: map-get-deep($bolt-font-sizes, 'font-sizes', $size, 'font-size');
@if (type-of($font-size) == 'map') {
$length: length(map-keys($font-size));
@if ($length < 2) {
font-size: nth($font-size, 2);
} @else {
@include bolt-poly-fluid-sizing('font-size', $font-size);
}
} @else {
font-size: $font-size;
}
@if ($leading != '' and $leading != null) {
@if (type-of($leading) == number) {
$leading: $leading;
} @else if (type-of($leading) == string) {
$leading: map-get-deep($bolt-font-sizes, 'font-sizes', $size, 'line-height', $leading);
}
@if (type-of($leading) == 'map') {
$length: length(map-keys($leading));
@if ($length < 2) {
line-height: nth($leading, 2);
} @else {
@debug $leading;
@include bolt-poly-fluid-sizing('line-height', $leading);
}
} @else {
line-height: $leading;
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$size | string |
Defines the size of the text: xsmall, small, base, medium, large, xlarge, or xxlarge. | (None) |
$leading | string |
Defines the line-height of the text: regular or tight. | regular |
Example: SCSS
.element {
@include bolt-font-size(large);
}
@mixin bolt-font-weight
This returns the font-weight for a specific element.
Code
@mixin bolt-font-weight($weight) {
$font-weight: map-get-deep($bolt-font-weights, 'font-weights', $weight);
font-weight: $font-weight;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$weight | string |
Defines the weight of the text: bold, semi-bold, regular, or normal. | (None) |
Example SCSS: Mixin
.element {
@include bolt-font-weight(bold);
}
Example CSS: Output
.element {
font-weight: 800;
}
@function bolt-text-contrast
Determines the correct color (black or white) to return, given the color passed in
Code
@function bolt-text-contrast($color) {
@if bolt-theme-tone($color) == "dark" {
@return bolt-color(white);
} @else {
@return bolt-color(black);
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$color | color |
The color to check against | (None) |
Example SCSS: $primary-background-default not shown
.element:hover {
color: bolt-text-contrast($primary-background-default);
}
Returns
color – Either 'black' or 'white'@mixin bolt-uppercase
Provides a bolt method for transforming text to uppercase
Code
@mixin bolt-uppercase() {
text-transform: uppercase;
letter-spacing: 0.1rem;
}
Example: SCSS
.element {
@include bolt-uppercase();
}
@mixin bolt-if-browser-supports-display-contents
Just checking "@supports (display: contents)" isn't enough to know that a browser supports it FULLY. So, we check
support for both "display: contents" and "caret-color" (which has similar browser support) -- if a browser fails
either check, it gets the cross-browser fallback instead.
Code
@mixin bolt-if-browser-supports-display-contents() {
@supports (display: contents) and (caret-color: red) {
@content;
}
}
Example: SCSS
.element {
@include bolt-if-browser-supports-display-contents {
.element__item {
@media screen and (max-width: #{bolt-breakpoint(xsmall)}) {
display: contents;
}
}
}
}
@mixin bolt-clearfix
Provides the ability to add a proper clearfix
Code
@mixin bolt-clearfix($important: null) {
@if $important == important {
$important: !important;
}
&:before,
&:after {
content: ' ' $important;
display: table $important;
}
&:after {
clear: both $important;
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$important | boolean |
Set true to add "!important" | null |
Example: SCSS
.element {
@include bolt-clearfix();
}
@mixin bolt-ie11-only
Define CSS that only targets Internet Explorer 11.
Code
@mixin bolt-ie11-only() {
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
@content;
}
}
Example: SCSS
.element {
@include bolt-ie11-only {
display: block;
}
}
@function bolt-linear-interpolation
Calculate the definition of a line between two points
Code
@function bolt-linear-interpolation($map) {
$keys: map-keys($map);
@if (length($keys) != 2) {
@error 'linear-interpolation() $map must be exactly 2 values';
}
// The slope
$m: (map-get($map, nth($keys, 2)) - map-get($map, nth($keys, 1))) / ( nth($keys, 2) - nth($keys, 1));
// The y-intercept
$b: map-get($map, nth($keys, 1)) - $m * nth($keys, 1);
// Determine if the sign should be positive or negative
$sign: '+';
@if ($b < 0) {
$sign: '-';
$b: abs($b);
}
@return calc(#{$m * 100}vw #{$sign} #{$b});
}
Params
Name | Type | Description | Default |
---|---|---|---|
$map | map |
A SASS map of viewport widths and size value pairs | (None) |
Example: SCSS
font-size: bolt-linear-interpolation((320px: 18px, 768px: 26px));
Returns
Number – A linear equation as a calc() function@function bolt-list-remove
Removed an item for a SASS list based on it's index (mimics behavior of the native map-remove function)
Code
@function bolt-list-remove($list, $index) {
$newList: ();
@for $i from 1 through length($list) {
@if $i != $index {
$newList: append($newList, nth($list, $i), 'space');
}
}
@return $newList;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$list | list |
A SASS list | (None) |
$index | string |
The list index to remove | (None) |
Example: SCSS
$list: bolt-list-remove($list, index($list, $value));
Returns
list – $newList - A SASS list@function bolt-list-sort
Sort a SASS list
Code
@function bolt-list-sort($list) {
$sortedlist: ();
@while length($list) > 0 {
$value: nth($list, 1);
@each $item in $list {
@if type-of($item) == "number" and type-of($value) == "number" {
@if $item < $value {
$value: $item;
}
} @else {
@warn 'Problem encountered'; // `@warn` shows Backtrace, `@error` does not
@error 'These values are not sortable: ' + $item + ' and ' + $value;
}
}
$sortedlist: append($sortedlist, $value, "space");
$list: bolt-list-remove($list, index($list, $value));
}
@return $sortedlist;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$list | list |
A SASS list | (None) |
Example SCSS: Sorting ($map not shown)
$keys: bolt-list-sort(map-keys($map));
Returns
List – $sortedlist - A sorted SASS list@function bolt-map-sort
Sort map by keys
Code
@function bolt-map-sort($map) {
$keys: bolt-list-sort(map-keys($map));
$sortedMap: ();
@each $key in $keys {
$sortedMap: map-merge($sortedMap, ($key: map-get($map, $key)));
}
@return $sortedMap;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$map | map |
A SASS map | (None) |
Example SCSS: ($map not shown)
$map: bolt-map-sort($map);
Returns
Map – $sortedMap - A SASS map sorted by keys@mixin bolt-no-select
Provides a bolt method for controlling the user's ability to select text.
Code
@mixin bolt-no-select() {
user-select: none;
}
Example: SCSS
.element {
@include bolt-no-select;
}
@mixin bolt-opacity
Bolt Opacity mixin
Code
@mixin bolt-opacity($value, $important: false) {
$important: '';
@if $utility {
$important: '!important';
}
@if map-has-key($bolt-opacities, $value) {
opacity: map-get($bolt-opacities, $value) #{$important};
} @else {
@error 'A value, #{$value}, was passed into @include bolt-opacity() that is not defined in $bolt-opacities';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | string |
(None) | |
$important | boolean |
false |
Example SCSS: bolt-opacity mixin
.element {
@include bolt-opacity(80);
}
@function bolt-opacity
Bolt Opacity function
Code
@function bolt-opacity($value) {
@if map-has-key($bolt-opacities, $value) {
@return map-get($bolt-opacities, $value)
} @else {
@error 'A value, #{$value}, was passed into bolt-opacity() that is not defined in $bolt-opacities';
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | string |
(None) |
Example SCSS: bolt-opacity function
.element {
opacity: bolt-opacity(80);
}
@function bolt-rem
Bolt utility function to convert pixels to rems
Code
@function bolt-rem($pixels, $context: $bolt-base-font-size--min) {
@if (unitless($pixels)) {
$pixels: $pixels * 1px;
}
@if (unitless($context)) {
$context: $context * 1px;
}
@return $pixels / $context * 1rem;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$pixels | string|number |
The pixel value to convert | (None) |
$context | string|number |
Value to divide pixel value by (before rem multiplication) | $bolt-base-font-size--min |
Example: SCSS
.element {
font-size: bolt-rem(18px);
}
Returns
string – rem value (with unit)@mixin bolt-repeat-rule
Repeat a block of styles as a separate rule-set for each selector provided. Does not combine multiple selectors with commas.
Most often used with selectors like `:host` which do not work properly when combined with other selectors.
Code
@mixin bolt-repeat-rule($selectors) {
@each $selector in $selectors {
#{$selector} {
@content;
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$selectors | list |
A SASS list of selectors | (None) |
Example: SCSS
@include repeat-rule(('bolt-link', ':host')) {
display: inline;
}
@function bolt-strip-unit
Remove the unit of a length.
Code
@function bolt-strip-unit($number) {
@if type-of($number) == 'number' and not unitless($number) {
@return $number / ($number * 0 + 1);
}
@return $number;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$number | Number |
Number to remove unit from | (None) |
Example: SCSS
$bolt-floating-label-text-scale: bolt-strip-unit($bolt-font-size--xsmall);
Returns
Number – Unitless number@mixin bolt-visuallyhidden
Provides a bolt method for correctly hiding an element visually (for accessibility)
Code
@mixin bolt-visuallyhidden($important: null) {
@if $important == important {
$important: !important;
}
position: absolute $important;
width: 1px $important;
height: 1px $important;
overflow: hidden $important;
margin: -1px $important;
padding: 0 $important;
border: 0 $important;
clip: rect(0 0 0 0) $important;
clip-path: inset(50%) $important;
white-space: nowrap $important;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$important | string |
If 'important' is set, than '!important' will be returned | null |
Example: SCSS
.element {
@include bolt-visuallyhidden(important);
}
@function bolt-css-vars-assign
Assigns a variable to the global map
Code
@function bolt-css-vars-assign() {
// CHECK PARAMS
@if ($name==null) {
@error "Variable name is expected, instead got: null";
}
@if ($value == null) {
@error "Variable value is expected, instead got: null";
}
// assign to the global map
@if ($bolt-css-vars-debug-log and map-get($bolt-css-variables, $name)) {
@debug "'#{$name}' variable is reassigned";
}
@return map-merge($bolt-css-variables, ($name: $value));
}
@function bolt-var
Emulates var() CSS native function behavior
Code
@function bolt-var($args, $args2) {
$var: '';
$opacity: 1;
@if (length($args) >= 1) {
$var: nth($args, 1);
}
@if type-of($var) == list {
$opacity: nth($var, 2);
}
$varName: str-slice(nth($var, 1), 8, str-length(nth($var, 1)));
@if str-slice($varName, 0, 5) == 'theme' {
$varNameSansTheme: str-slice($varName, 7, str-length($varName));
@if bolt-is-theme-var($varNameSansTheme) and bolt-is-shimmable-theme-prop($varNameSansTheme) {
@return bolt-theme($varNameSansTheme, $opacity);
} @else {
// @warn "The `#{$varNameSansTheme}` theme-specific CSS variable used isn't a registered theme variable in Bolt. Be carefull as these will not work as expected in IE 11...";
}
} @else {
// @warn $varName + ' CSS variable was used but not registered as a Globally variable in Bolt. Be carefull as these will not work as expected in IE 11...';
}
@return var($args);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$args | String |
Variable name | (None) |
$args2 | string |
Optional default value if variable is not assigned yet | (None) |
Example SCSS: basic usage
color: var(--main-color);
background: var(--main-bg, green);
@mixin bolt-css-vars
CSS mixin to provide variables
Code
@mixin bolt-css-vars($varMap: null, $root: false) {
// CHECK PARAMS
@if ($varMap == null) {
@error "Map of variables is expected, instead got: null";
}
@if (type_of($varMap) != map) {
@error "Map of variables is expected, instead got another type passed: #{type_of($varMap)}";
}
// PROCESS
@if ($bolt-css-vars-debug-log or not $bolt-css-vars-use-native) { // Sass or debug
// merge variables and values to the global map (provides no output)
@each $name, $value in $varMap {
$bolt-css-vars: bolt-css-vars-assign($name, $value) !global; // store in global variable
}
}
@if ($bolt-css-vars-use-native) { // CSS variables
// Native CSS: assign CSS custom properties to the global scope
@if $root == true {
@at-root :root {
@each $name, $value in $varMap {
@if (type_of($value) == string) {
#{$name}: $value // to prevent quotes interpolation
} @else {
#{$name}: #{$value}
}
}
}
} @else {
@each $name, $value in $varMap {
@if (type_of($value) == string) {
#{$name}: $value // to prevent quotes interpolation
} @else {
#{$name}: #{$value}
}
}
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$varMap | Map |
Check for our params | null |
$root | Boolean |
Output as root? | false |
Example SCSS: "basic usage"
@include bolt-css-vars((
--color: rebeccapurple,
--height: 68px,
--margin-top: calc(2vh + 20px)
));
@function bolt-json-encode
Delay the encoding of ta literal to JSON to a type-specific method
Code
@function bolt-json-encode($value) {
$type: type-of($value);
@if function-exists('_json-encode--#{$type}') {
@return call(get-function('_json-encode--#{$type}'), $value);
}
@error 'Unknown type for #{$value} (#{$type}).';
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | * |
value to be stringified | (None) |
Returns
String – JSON encoded string@function _proof-quote
Proof quote a value
Code
@function _proof-quote($value) {
// $value: to-string($value);
@return '"#{$value}"';
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | * |
value to be quoted | (None) |
Returns
String – quoted value@mixin bolt-json-encode
JSON.stringify a value and pass it as a font-family of head element
Code
@mixin bolt-json-encode($value, $flag) {
$flag: if(index('all' 'regular' 'media' 'comment', $flag), $flag, 'all');
$json: bolt-json-encode($value);
// Persistent comment
@if $flag == 'comment' or $flag == 'all' {
/*! json-encode: #{$json} */
}
// Regular property value pair
@if $flag == 'regular' or $flag == 'all' {
// All browsers except IE8-
body {
&::before {
// This element must be in the render tree to get it via getComputedStyle(document.body, ':before');
content: bolt-json-encode($value);
display: block;
width: 0;
height: 0;
overflow: hidden;
}
}
// All browsers except Opera (Presto based)
head {
font-family: bolt-json-encode($value);
}
}
// Falsy media query
@if $flag == 'media' or $flag == 'all' {
@media -json-encode {
json {
json: $json;
}
}
}
}
Params
Name | Type | Description | Default |
---|---|---|---|
$value | * |
value to be stringified | (None) |
$flag | String |
(all) - output driver | (None) |
@function _json-encode--bool
Encode a bool to JSON
Code
@function _json-encode--bool($bool) {
@return $boolean;
}
Params
Name | Type | Description | Default |
---|---|---|---|
$bool | Bool |
bool to be encoded | (None) |
Returns
Bool – encoded bool@function _json-encode--color
Encode a color to JSON
Code
@function _json-encode--color($color) {
@return _proof-quote($color);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$color | Color |
color to be encoded | (None) |
Returns
String – encoded color@function _json-encode--list
Encode a list to JSON
Code
@function _json-encode--list($list) {
$str: '';
@each $item in $list {
$str: $str + ', ' + bolt-json-encode($item);
}
@return '[' + str-slice($str, 3) + ']';
}
Params
Name | Type | Description | Default |
---|---|---|---|
$list | List |
list to be encoded | (None) |
Returns
String – encoded list@function _json-encode--map
Encode a map to JSON
Code
@function _json-encode--map($map) {
$str: '';
@each $key, $value in $map {
$str: $str + ', ' + _proof-quote($key) + ': ' + bolt-json-encode($value);
}
@return '{' + str-slice($str, 3) + '}';
}
Params
Name | Type | Description | Default |
---|---|---|---|
$map | Map |
map to be encoded | (None) |
Returns
String – encoded map@function _json-encode--null
Encode `null` to JSON
Code
@function _json-encode--null($null) {
@return 'null';
}
Params
Name | Type | Description | Default |
---|---|---|---|
$null | Null |
`null` | (None) |
Returns
String@function _json-encode--number
Encode a number to JSON
Code
@function _json-encode--number($number) {
@return if(unitless($number), $number, _proof-quote($number));
}
Params
Name | Type | Description | Default |
---|---|---|---|
$number | Number |
number to be encoded | (None) |
Returns
String – encoded number@function _json-encode--string
Encode a string to JSON
Code
@function _json-encode--string($string) {
@return _proof-quote($string);
}
Params
Name | Type | Description | Default |
---|---|---|---|
$string | String |
string to be encoded | (None) |