@adobe/spectrum-adaptive-theme

1.1.0 • Public • Published

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 theme Lightness value
Light 98
Dark 21
Darkest 11
Static colors 100

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 option Sample 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

Package Sidebar

Install

npm i @adobe/spectrum-adaptive-theme

Weekly Downloads

5

Version

1.1.0

License

ISC

Unpacked Size

311 kB

Total Files

11

Last publish

Collaborators

  • dylandepass
  • djaeggi
  • adobehalls
  • fullcolorcoder
  • marbec
  • tripod
  • garthdb
  • lazd
  • adobe-admin
  • patrickfulton
  • trieloff
  • shazron
  • krisnye
  • dcpfsdk
  • natebaldwin
  • devongovett
  • aspro83
  • symanovi
  • dpfister
  • stefan-guggisberg
  • korra
  • rofe
  • kptdobe