QuickStart: Color
Tools for managing colors and palettes.
- Organize all your colors into a single map, or set of maps
- Document color relationships directly in the code
- Automate WCAG-appropriate contrast checking
- Generate color-palette documentation with Herman
Import
If you’ve already imported accoutrement you are ready to go.
You can also import the color module on its own:
@use '<path-to>/accoutrement/sass/color';
Color Tokens
If you are using the token syntax, establish your color palette, with the standard Token syntax:
$colors: (
// set explicit colors
'brand-pink': hsl(330, 85%, 62%),
'brand-light': #ddf,
'brand-dark': #224,
// reference existing colors
'background': '#brand-light',
'border': '#brand-dark',
// make adjustments as needed, using color functions
'link': '#brand-pink' ('shade': 25%),
);
Then access your colors from anywhere:
.example {
border-color: accoutrement.color('border');
}
Multiple Palettes
You can also define your colors in smaller maps,
and then add them to the global $colors variable
using the add-colors() mixin.
Map references using the #tag format
will work across maps,
once they are both added to the global setting.
$brand: (
'brand-pink': hsl(330, 85%, 62%),
'brand-light': #ddf,
'brand-dark': #224,
);
$patterns: (
'background': '#brand-light',
'border': '#brand-dark',
'link': '#brand-pink' ('shade': 25%),
);
// merge everything into the main $colors map…
@include add-colors($brand, $patterns);
Related
@mixin add-colors()
WCAG Contrast
We’ll also help you calculate WCAG-appropriate color contrasts.
You can set the $contrast-light & $contrast-dark configuration variables
(white and black by default)
or add 'contrast-light' and 'contrast-dark'
tokens in your palette (with or without a private _ prefix).
These tools can be used with color values,
or token names.
a:hover {
// set a background, and get well-contrasted text
@include contrasted('link');
@include contrasted(rebeccapurple);
// or return a contrasting color from a set of options
border-color: contrast('background', white, rebeccapurple);
border-color: contrast(maroon, white, rebeccapurple);
}