
Product
Announcing Bun and vlt Support in Socket
Bringing supply chain security to the next generation of JavaScript package managers
coloring-palette
Advanced tools
A library that generates color palettes based on the Material UI algorithm
A library that generates color palettes based on the Material UI color system, and the underlying algorithm to generate colors is forked from Lyft's coloralgorithm
npm install coloring-palette
import coloringPalette from 'coloring-palette'
const shades = coloringPalette('#009688', 'hex')
// { '50': { color: '#edddf0', contrastText: '#000000' },
// '100': { color: '#e7b9f0', contrastText: '#000000' },
// '200': { color: '#da8ee8', contrastText: '#000000' },
// '300': { color: '#c95fde', contrastText: '#ffffff' },
// '400': { color: '#b63dd1', contrastText: '#ffffff' },
// '500': { color: '#9c27b0', contrastText: '#ffffff' },
// '600': { color: '#9120b0', contrastText: '#ffffff' },
// '700': { color: '#7d1a9c', contrastText: '#ffffff' },
// '800': { color: '#6f168a', contrastText: '#ffffff' },
// '900': { color: '#5d1375', contrastText: '#ffffff' },
// A100: { color: '#ed89fc', contrastText: '#000000' },
// A200: { color: '#e54afb', contrastText: '#ffffff' },
// A400: { color: '#ca07ec', contrastText: '#ffffff' },
// A700: { color: '#9f00c0', contrastText: '#ffffff' } }
Visualized below
Compared to Material UIs
Generates an array of TinyColor shades between two HSV values using optional curve functions. Defaults to ease-in/ease-out curves and 10 shades. For inputs the hue is a number from 0 - 360, saturation and value are both numbers from 0 - 100. generateShades will assume the shortest distance between the given hues; therefore, as seen below, 350 to 10 will only include shades of red.
export declare function generateShades({ hueStart, hueEnd, hueCurve, satStart, satEnd, satCurve, satRate, valStart, valEnd, valCurve, steps, format }: GenerateShadesOptions): Color[];
export interface GenerateShadesOptions {
readonly hueStart: number
readonly hueEnd: number
readonly hueCurve?: (input: number) => number
readonly satStart: number
readonly satEnd: number
readonly satCurve?: (input: number) => number
readonly satRate?: number
readonly valStart: number
readonly valEnd: number
readonly valCurve?: (input: number) => number
readonly steps?: number // the number returned shades
readonly format = null, // the desired output of the array, null defaults to Tinycolor instances
}
// given the reds hsv(350, 8, 100) and hsv(10, 85, 72)
const shades = generateShades({
hueStart: 350,
satStart: 8,
valStart: 100,
hueEnd: 10,
satEnd: 85,
valEnd: 72,
format: 'hex',
})
// [ '#ffebee', '#ffbfc9', '#fc97a5', '#fa7585', '#f25764', '#ed424b', '#e33434', '#d63129', '#c73320', '#b8361c' ]
Or better visualized as;
Generates a color palette based on material ui from two HSV values. Shades returned are TinyColor objects or strings, based on the format option, which defaults to 'hex'. Optional curve functions default to muiHueCurve, muiSatCurve, and muiValCurve. For inputs the hue is a number from 0 - 360, saturation and value are both numbers from 0 - 100.
export declare function generateMaterialUIPalette({ hueStart, hueEnd, hueCurve, satStart, satEnd, satCurve, satRate, valStart, valEnd, valCurve, format }: GenerateShadesOptions): MaterialUIPalette[];
export interface GenerateMaterialUIPaletteOptions {
readonly hueStart: number
readonly hueEnd: number
readonly hueCurve?: (input: number) => number
readonly satStart: number
readonly satEnd: number
readonly satCurve?: (input: number) => number
readonly satRate?: number
readonly valStart: number
readonly valEnd: number
readonly valCurve?: (input: number) => number
readonly format: colorFormat
}
interface MaterialUIPalette {
readonly 50: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 100: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 200: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 300: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 400: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 500: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 600: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 700: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 800: { color: TinyColor | string; contrastText: TinyColor | string }
readonly 900: { color: TinyColor | string; contrastText: TinyColor | string }
readonly A100: { color: TinyColor | string; contrastText: TinyColor | string }
readonly A200: { color: TinyColor | string; contrastText: TinyColor | string }
readonly A400: { color: TinyColor | string; contrastText: TinyColor | string }
readonly A700: { color: TinyColor | string; contrastText: TinyColor | string }
}
// given the reds hsv(351, 8, 100) and hsv(0, 85, 72)
const shades = generateMaterialUIPalette({
hueStart: 351,
satStart: 8,
valStart: 100,
hueEnd: 0,
satEnd: 85,
valEnd: 72,
format: 'hex',
})
// { '50': { color: '#ffebee', contrastText: '#000000' },
// '100': { color: '#ffc4cc', contrastText: '#000000' },
// '200': { color: '#fc97a3', contrastText: '#000000' },
// '300': { color: '#f56977', contrastText: '#ffffff' },
// '400': { color: '#ed424e', contrastText: '#ffffff' },
// '500': { color: '#e63039', contrastText: '#ffffff' },
// '600': { color: '#db252b', contrastText: '#ffffff' },
// '700': { color: '#cf2124', contrastText: '#ffffff' },
// '800': { color: '#c41d1d', contrastText: '#ffffff' },
// '900': { color: '#b81c1c', contrastText: '#ffffff' },
// A100: { color: '#ff8995', contrastText: '#000000' },
// A200: { color: '#ff4555', contrastText: '#ffffff' },
// A400: { color: '#ff030c', contrastText: '#ffffff' },
// A700: { color: '#ff0d00', contrastText: '#ffffff' } }
Which is visualized as
Compared to MaterialUIs
Generates a color palette based on material ui from a color input. Shades returned are TinyColor objects or strings, based on the format option, which defaults to 'hex'. Note: the original color input may not be present in the resulting palette generated.
export declare function coloringPalette(color: ColorInput, format: ColorFormat = 'hex'): TinyColor[];
// Given a Teal input
const shades = coloringPalette('#009688', 'hex')
// { '50': { color: '#dcf5f2', contrastText: '#000000' },
// '100': { color: '#b0f5ee', contrastText: '#000000' },
// '200': { color: '#7eede2', contrastText: '#000000' },
// '300': { color: '#4ae0cf', contrastText: '#000000' },
// '400': { color: '#21d1ba', contrastText: '#000000' },
// '500': { color: '#0dbda2', contrastText: '#000000' },
// '600': { color: '#05a88d', contrastText: '#ffffff' },
// '700': { color: '#019177', contrastText: '#ffffff' },
// '800': { color: '#007a64', contrastText: '#ffffff' },
// '900': { color: '#006350', contrastText: '#ffffff' },
// A100: { color: '#6ffff5', contrastText: '#000000' },
// A200: { color: '#26fff1', contrastText: '#000000' },
// A400: { color: '#00ecd5', contrastText: '#000000' },
// A700: { color: '#00b29e', contrastText: '#000000' } }
Visualized below
Compared to Material UIs colors
FAQs
A library that generates color palettes based on the Material UI algorithm
We found that coloring-palette demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.

Product
Bringing supply chain security to the next generation of JavaScript package managers

Product
A safer, faster way to eliminate vulnerabilities without updating dependencies

Product
Reachability analysis for Ruby is now in beta, helping teams identify which vulnerabilities are truly exploitable in their applications.