1.1.0 • Published 1 year ago

@adobe/spectrum-adaptive-theme v1.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

spectrum-adaptive-theme

An implementation of Spectrum's colors as an adaptive color theme.

Spectrum's entire color palette is generated with function. The function is a wrapper for Leonardo with custom configurations and settings to replicate Spectrum's specific colors.

Color parameters are conditional based on lightness and contrast settings, and are percentages of available contrast within the specified environment.

Usage

import { spectrumAdaptiveTheme } from '@adobe/spectrum-adaptive-theme';

const theme = spectrumAdaptiveTheme(lightness, contrast, saturation, format);

theme.contrastColorPairs; // returns key-value pairs for spectrum colors

Generate CSS properties

Below is a basic javascript method for assigning new CSS properties. For React example and more details, visit @adobe/leonardo-contrast-colors readme.

Target the location where Spectrum's original CSS properties are assigned

// Target the spectrum theme class
// Note: this example targets the first instance. 
// There may be complications if additional 'spectrum--light'
// classes are assigned within the DOM
const themeElement = document.getElementsByClassName('spectrum--light')[0];

// Alternatively, target the document
const themeElement = document.documentElement;

Generate and assign new CSS properties based on theme output

const prefix = '--'; // can set custom prefix, such as '--ccac-projects-'

for (const [key, value] of Object.entries( theme )) {
  let prop = prefix.concat(key); 

  themeElement.style  
    .setProperty(prop, value);
}

API reference

lightness

Value from 0-100 to determine the lightness of the theme.

Required parameter. Default 'themes' are:

Spectrum themeLightness value
Light98
Dark21
Darkest11
Static colors100

contrast

Multiplier for overall contrast of the colors generated in the theme. Values above 1 will increase contrast; values below 1 will decrease contrast.

Optional parameter. Default is 1.

saturation

Percentage of the original saturation as a value from 0-100.

Optional parameter. Default is 100, returning colors at full saturation.

format

Optional format for output colors. Available output formats conform to the W3C CSS Color Module Level 4 spec for the supported options. Output options are defined in Leonardo and listed below:

Output optionSample value
'HEX' (default)#RRGGBB
'RGB'rgb(255, 255, 255)
'HSL'hsl(360deg, 0%, 100%)
'HSV'hsv(360deg, 0%, 100%)
'HSLuv'hsluv(360, 0, 100)
'LAB'lab(100%, 0, 0)
'LCH'lch(100%, 0, 360deg)
'CAM02'jab(100%, 0, 0)
'CAM02p'jch(100%, 0, 360deg)

Contributing

Branches

  • master development for the @adobe/spectrum-adaptive-theme package
  • gh-pages branch where web playground app content is deployed

Install dependencies

npm install

Run tests against colors

npm run test

Run development server locally

npm run dev

Build and deploy the site

npm run build:full