Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
simple JS class to manage color palettes by giving them semantic meaning and being aware of the connections between the colors in your palettes
npm install paletter --save-dev
const colors = {
blue: '#00fff1',
red: '#ff2211',
black: '#010101',
yellow: '#f4f142',
darkGrey: '#212121',
lime: '#42ff3f',
white: '#ffffff'
};
const palettes = {
brand: {
logo: 'blue',
main: 'black',
highlight: 'lime'
},
typography: {
default: 'brand__main', //optional default color
heading: 'brand__logo', //links to palettes.brand
title: 'brand__main',
sub-title: 'darkGrey',
},
irregularity : {
error: 'red',
warning: 'yellow',
notification: 'brand__highlight'
},
interaction: {
default: 'brand__highlight',
link: 'brand__logo',
button: 'brand__highlight'
},
'interaction--inverted': {
default: 'white',
},
layout: {
lines: 'darkGrey'
}
};
const palette = new Paletter(palettes, colors);
palette.get('typography'); // => returns the default color (#010101)
palette.get('irregularity__notification'); // => {value: #42ff3f, name: lime}
palette.getParsed() // will return your full palette with hex values instead of links to other items
palette.getConnections() // returns an array of all links within palettes
Returns the full palette with hex values instead of links to other items.
const parsedPalette = palette.getParsed();
/*
{
brand: {
logo: '#00fff1',
main: '#010101',
highlight: '#42ff3f'
}, …
}
*/
getColor is a recursive function that returns the color value for a given palette key. It will follow links to other palettes and return the final color value. The
callStack
argument is used internally to prevent infinite loops.
const color = paletter.getColor('main__primary'); // returns { value: '#0000FF', name: 'blue' }
Returns an array of all links within palettes.
const connections = palette.getConnections();
/*
[
{
from: { palette: 'typography', key: 'default' },
to: { palette: 'brand', key: 'main' }
}, …
]
*/
Returns the connection for a given palette key.
const connection = palette.getConnection('typography__default');
/*
{
from: { palette: 'typography', key: 'default' },
to: { palette: 'brand', key: 'main' }
}
*/
Returns the palette key for a given palette and key.
const paletteKey = paletter.getPaletteKey('main', 'primary'); // returns 'main__primary'
Checks if a color value is valid. Returns a boolean. This is used internally to check if a color is valid.
const isValid = Paletter.isValidColor('#0000ff'); // returns true
Create CSS variables for each color:
function objToCSSVars (obj, links) {
let CSSvars = ':root {\n';
for (let palette in obj) {
let prefix = `--${palette}`;
for (let key in obj[palette] ) {
let color = obj[palette][key];
const linkFromKey = links.find(c => (c.from.key == `${palette}--${key}`));
CSSvars += ` ${prefix}-${key}: ${linkFromKey ? `var(--${linkFromKey.to.key.replace('--','-')},${color})` : color};\n`;
}
}
CSSvars += '}';
return CSSvars;
};
const connections = palette.getConnections();
const cssVars = objToCSSVars(palette.getParsed(), connections);
const $style = document.createElement('style');
$style.innerHTML = cssVars;
document.querySelector('head').appendChild($style);
:root {
--brand-logo: #00fff1;
--brand-main: #010101;
--brand-highlight: #42ff3f;
--typography-default: var(--brand-main,#010101);
--typography-heading: var(--brand-logo,#00fff1);
--typography-title: var(--brand-main,#010101);
--typography-subtitle: #212121;
--irregularity-error: #ff2211;
--irregularity-warning: #f4f142;
--irregularity-notification: var(--brand-highlight,#42ff3f);
--interaction-default: var(--brand-highlight,#42ff3f);
--interaction-link: var(--brand-logo,#00fff1);
--interaction-button: var(--brand-highlight,#42ff3f);
--layout-lines: #212121;
}
node ./node_modules/.bin/paletterTo --colors ./colors.json --palettes ./palettes.json --mode css > colors.css
colors
: path to JSON or JS returning raw colors as {name: key}palettes
: path to JSON or JS returning palettes as {key: reference}mode
: css, scss or htmlnode ./node_modules/.bin/paletterTo --colors ./colors.json --palettes ./palettes.json --mode svg > connections.svg
You can use javascript files instead of JSON files, as long as you export a javascript object like this:
// colors.js
module.exports = {
blue: '#00fff1'
}
FAQs
simple JS class to manage color palettes
The npm package paletter receives a total of 76 weekly downloads. As such, paletter popularity was classified as not popular.
We found that paletter demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.