Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Color conversion, generation, manipulation, comparison, and analysis.
Install
npm install --save colorizr
import { luminance } from 'colorizr';
const lux = luminance('#ff0044'); // 0.2168
Or you can create an instance to use all the methods for the selected color:
import Colorizr from 'Colorizr';
const colorInstance = new Colorizr('#ff0044');
colorInstance.luminance; // 0.2168
colorInstance.chroma; // 1
colorInstance.opacity; // 1
String inputs accept css values: hex, hsl, oklab, oklch, rgb, and named colors.
chroma(input: string): number
Get the chroma of a color.
import { chroma } from 'colorizr';
chroma('#ff0044'); // 1
chroma('#ffc0cb'); // 0.2471
luminance(input: string): number
Get the relative brightness according to the WCAG definition.
Normalized to 0
for black and 1
for white.
import { luminance } from 'colorizr';
luminance('#ff0044'); // 0.2168
name(input: string): string
Get the name of a color. Return the hex code if it can't be named.
import { name } from 'colorizr';
name('#ffc0cb', 10); // pink
name('rgb(176 224 230)'); // 'powderblue'
name('hsl(344 100 50)'); // #ff0044
opacity(input: string): string
Get the opacity of a color.
import { opacity } from 'colorizr';
opacity('#ff0044'); 1
opacity('rgb(255 0 68 / 90%)'); 0.9
opacity('hsl(344 100 50 / 60%)'); 0.6
lighten(input: string, alpha: number): string
Get a color with increased lightness.
import { lighten } from 'colorizr';
lighten('#ff0044', 10); // #ff3369
darken(input: string, alpha = 10): string
Get a color with decreased lightness.
import { darken } from 'colorizr';
darken('#ff0044', 10); // #cc0036
saturate(input: string, amount: number): string
Get a color with increased saturation.
import { saturate } from 'colorizr';
saturate('#ff0044', 10); // #ff0044 (already at the maximum)
saturate('pink', 10); // #ffc0cb
desaturate(input: string, alpha: number): string
Get a color with decreased saturation.
import { desaturate } from 'colorizr';
desaturate('#ff0044', 10); // #f20d4a
invert(input: string): string
Invert the color.
import { invert } from 'colorizr';
invert('#07e'); // '#0077ee'
invert('#f058'); // '#ff005588'
rotate(input: string, degrees: number): string
Get a color with a hue rotated by the specified degrees.
import { rotate } from 'colorizr';
rotate('#ff0044', 30); // #ff3b00
opacify(input: string, alpha: number, format?: ColorType): string
Add opacity to a color
import { opacify } from 'colorizr';
opacify('hsl(344, 100, 50)', 10); // rgba(255, 0, 68, 0.9)
opacify('#ff0044', 50); // hsla(344, 100%, 50%, 0.5)
transparentize(input: string, alpha: number, format?: ColorType): string
Increase/decrease the color opacity.
import { transparentize } from 'colorizr';
transparentize('hsl(344, 100, 50)', 10); // rgba(255, 0, 68, 0.9)
transparentize('#ff0044', 50, 'hsl'); // hsla(344, 100%, 50%, 0.5)
addAlphaToHex(input: string, alpha: number): string
Add an alpha value to a hex string
import { addAlphaToHex } from 'colorizr';
addAlphaToHex('#ff0044', 0.9); // '#ff0044e6'
addAlphaToHex('#ff0044cc', 0.9); // '#ff0044e6'
convertAlphaToHex(input: number): string
Convert an alpha value to a hex value.
import { convertAlphaToHex } from 'colorizr';
convertAlphaToHex(0.5); // '80'
extractAlphaFromHex(input: string): number
Extract the alpha value from a hex string
import { extractAlphaFromHex } from 'colorizr';
convertAlphaToHex('#ff004480'); // 0.5
extractColorParts(input: string): ExtractColorPartsReturn
Extract the color parts from a CSS color string.
Hex colors are not supported.
type ExtractColorPartsReturn = {
alpha?: number;
model: 'hsl' | 'oklab' | 'oklch' | 'rgb';
} & Record<string, number>;
extractColorParts('rgb(255 0 68)') // { model: 'rgb', r: 255, g: 0, b: 68 }
extractColorParts('hsl(344 100% 50% / 90%)') // { alpha: 0.9, model: 'hsl', h: 344, g: 100, l: 50 }
formatCSS(input: HSL | RGB, options?: FormatOptions): string
Get a css string from a color object.
import { formatCSS } from 'colorizr';
formatCSS({ h: 344, s: 100, l: 50 }, { format: 'rgb' }); // 'rgb(255, 0, 68)'
formatCSS({ r: 255, g: 0, b: 68 }, { alpha: 0.5, format: 'hsl' }); // 'hsla(344, 100%, 50%, 0.5)'
formatHex(input: string): string
Format a short hex string of 3 (or 4) digits into 6 (or 8) digits.
import { formatHex } from 'colorizr';
formatHex('#07e'); // '#0077ee'
formatHex('#f058'); // '#ff005588'
parseCSS(input: string, format?: ColorType): string | HSL | RGB
Parse a css string to hex, HSL, OKLAB, OKLCH, or RGB.
If the format isn't set, it will return the same format as the input.
import { parseCSS } from 'colorizr';
parseCSS('hsl(344 100% 50%)'); // { h: 344, l: 50, s: 100 }
parseCSS('#ff0044', 'hsl'); // { h: 344, l: 50, s: 100 }
random(): string
Get a random color.
import { random } from 'colorizr';
random(); // '#b385e0'
removeAlphaFromHex(input: string): string
Remove the alpha value from a hex string
import { removeAlphaFromHex } from 'colorizr';
removeAlphaFromHex('#ff0044cc'); // '#ff0044'
textColor(input: string): string
Get a contrasting color (black or white) for the input color.
import { textColor } from 'colorizr';
textColor('#ff0044'); // #ffffff
textColor('#fff800'); // #000000
brightnessDifference(left: string, right: string): number
Get the brightness difference between the two colors.
import { brightnessDifference } from 'colorizr';
brightnessDifference('#fff', 'rgb(255, 0, 68)'); // 171.003
colorDifference(left: string, right: string): number
Get the color difference between the two colors.
import { colorDifference } from 'colorizr';
colorDifference('hsl(0, 0%, 100%)', '#f04'); // 442
compare(left: string, right: string): Analysis
Get the WCAG analysis between two colors.
import { compare } from 'colorizr';
compare('#ff0044', '#fff');
({
"brightnessDifference": 171.003,
"colorDifference": 442,
"compliant": 1,
"contrast": 3.94,
"largeAA": true,
"largeAAA": false,
"normalAA": false,
"normalAAA": false,
})
contrast(left: string, right: string): number
Get the WCAG contrast ratio between two colors.
import { contrast } from 'colorizr';
contrast('hsl(0, 0%, 100%)', 'rgb(255, 0, 68)'); // 3.94
palette(input: string, options?: PaletteOptions): string[]
Generate a palette of colors.
import { palette } from 'colorizr';
palette('#ff0044');
// ['#ff0044', '#ff7700', '#88ff00', '#00ff77', '#0088ff', '#7700ff'];
palette('#ff0044', { type: 'monochromatic' });
// ['#ff99b4', '#ff5582', '#ff1150', '#cc0036', '#880024', '#440012']
scheme(input: string, type: Scheme): string[]
Get a color scheme.
import { scheme } from 'colorizr';
const complementary = scheme('rgb(255, 0, 68)'); // ['#ff0044', '#00ffbb']
const triadic = scheme('#ff0044', 'triadic'); // ['#ff0044', '#44ff00', '#0044ff']
swatch(input: string, variant?: 'up' | 'down'): string[]
Generate a color swatch with ten shades.
The variant
can be used to generate a lighter or darker swatch.
import { swatch } from 'colorizr';
const colors = swatch('#ff0044');
/* [
"#ffccda",
"#ff99b4",
"#ff668f",
"#ff3369",
"#ff0044",
"#cc0036",
"#990029",
"#66001b",
"#33000e",
"#1a0007",
] */
convert(input: string, format: ColorType): string
Convert a color string from one format to another.
import { convert } from 'colorizr';
convert('#ff0044', 'hsl') // hsl(344 100% 50%)
convert('rgb(255 0 68)', 'oklch') // oklch(63.269% 0.25404 19.90218)
hex2hsl(input: string): HSL
Convert HEX to HSL.
import { hex2hsl } from 'colorizr';
hex2hsl('#ff0044'); // { h: 344, s: 100, l: 50 }
hex2oklab(input: string, precision?: number): LAB
Convert HEX to OKLAB.
import { hex2oklab } from 'colorizr';
hex2oklab('#ff0044'); // { l: 0.63269, a: 0.23887, b: 0.08648 }
hex2oklch(input: string, precision?: number): LCH
Convert HEX to OKLCH.
import { hex2oklch } from 'colorizr';
hex2oklch('#ff0044'); // { l: 0.63269, c: 0.25404, h: 19.90218 }
hex2rgb(input: string): RGB
Convert HEX to RGB.
import { hex2rgb } from 'colorizr';
hex2rgb('#ff0044'); // { r: 255, g: 0, b: 68 }
hsl2hex(input: HSL | ColorTupple): string
Convert HSL to HEX.
import { hsl2hex } from 'colorizr';
hsl2hex({ h: 344, s: 100, l: 50 }); // '#ff0044'
hsl2hex([344, 100, 50]); // '#ff0044'
hsl2oklab(input: HSL | ColorTupple, precision?: number): LAB
Convert HSL to OKLAB.
import { hsl2oklab } from 'colorizr';
hsl2oklab({ h: 344, s: 100, l: 50 }); // { l: 0.63269, a: 0.23887, b: 0.08648 }
hsl2oklab([344, 100, 50]); // { l: 0.63269, a: 0.23887, b: 0.08648 }
hsl2oklch(input: HSL | ColorTupple, precision?: number): string
Convert HSL to OKLCH.
import { hsl2oklch } from 'colorizr';
hsl2oklch({ h: 344, s: 100, l: 50 }); // { l: 0.63269, c: 0.25404, h: 19.90218 }
hsl2oklch([344, 100, 50]); // { l: 0.63269, c: 0.25404, h: 19.90218 }
hsl2rgb(input: HSL | ColorTupple): RGB
Convert HSL to RGB.
import { hsl2rgb } from 'colorizr';
hsl2rgb({ h: 344, s: 100, l: 50 }); // { r: 255, g: 0, b: 68 }
hsl2rgb([344, 100, 50]); // { r: 255, g: 0, b: 68 }
oklab2hex(input: LAB | ColorTupple): string
Convert OKLAB to HEX.
import { oklab2hex } from 'colorizr';
oklab2hex({ l: 0.63269, a: 0.23887, b: 0.08648 }); // '#ff0044'
oklab2hex([0.63269, 0.23887, 0.08648]); // '#ff0044'
oklab2hsl(input: LAB | ColorTupple): HSL
Convert OKLAB to HSL.
import { oklab2hsl } from 'colorizr';
oklab2hsl({ l: 0.63269, a: 0.23887, b: 0.08648 }); // { h: 344, s: 100, l: 50 }
oklab2hsl([0.63269, 0.23887, 0.08648]); // { h: 344, s: 100, l: 50 }
oklab2oklch(input: LAB | ColorTupple, precision?: number): LCH
Convert OKLAB to OKLCH.
import { oklab2oklch } from 'colorizr';
oklab2oklch({ l: 0.63269, a: 0.23887, b: 0.08648 }); // { l: 0.63269, c: 0.25404, h: 19.90218 }
oklab2oklch([0.63269, 0.23887, 0.08648]); // { l: 0.63269, c: 0.25404, h: 19.90218 }
oklab2rgb(input: LAB | ColorTupple, precision: number = 0): RGB
Convert OKLAB to RGB.
import { oklab2rgb } from 'colorizr';
oklab2rgb({ l: 0.63269, a: 0.23887, b: 0.08648 }); // { r: 255, g: 0, b: 68 }
oklab2rgb([0.63269, 0.23887, 0.08648]); // { r: 255, g: 0, b: 68 }
oklch2hex(input: LCH | ColorTupple): string
Convert OKLCH to HEX.
import { oklch2hex } from 'colorizr';
oklch2hex({ l: 0.63269, c: 0.25404, h: 19.90218 }); // '#ff0044'
oklch2hex([0.63269, 0.25404, 19.90218]); // '#ff0044'
oklch2hsl(input: LCH | ColorTupple): HSL
Convert OKLCH to HSL.
import { oklch2hsl } from 'colorizr';
oklch2hsl({ l: 0.63269, c: 0.25404, h: 19.90218 }); // { h: 344, s: 100, l: 50 }
oklch2hsl([0.63269, 0.25404, 19.90218]); // { h: 344, s: 100, l: 50 }
oklch2oklab(input: LCH | ColorTupple, precision?: number): LAB
Convert OKLCH to OKLAB.
import { oklch2oklab } from 'colorizr';
oklch2oklab({ l: 0.63269, c: 0.25404, h: 19.90218 }); // { l: 0.63269, a: 0.23887, b: 0.08648 }
oklch2oklab([0.63269, 0.25404, 19.90218]); // { l: 0.63269, a: 0.23887, b: 0.08648 }
oklch2rgb(input: LCH | ColorTupple, precision: number = 0): RGB
Convert OKLCH to RGB.
import { oklch2rgb } from 'colorizr';
oklch2rgb({ l: 0.63269, c: 0.25404, h: 19.90218 }); // { r: 255, g: 0, b: 68 }
oklch2rgb([0.63269, 0.25404, 19.90218]); // { r: 255, g: 0, b: 68 }
rgb2hex(input: RGB | ColorTupple): string
Convert RGB to HEX.
import { rgb2hex } from 'colorizr';
rgb2hex({ r: 255, g: 0, b: 68 }); // '#ff0044'
rgb2hex([255, 0, 68]); // '#ff0044'
rgb2hsl(input: RGB | ColorTupple): HSL
Convert RGB to HSL.
import { rgb2hsl } from 'colorizr';
rgb2hsl({ r: 255, g: 0, b: 68 }); // { h: 344, s: 100, l: 50 }
rgb2hsl([255, 0, 68]); // { h: 344, s: 100, l: 50 }
rgb2oklab(input: RGB | ColorTupple, precision: number): LAB
Convert RGB to OKLAB.
import { rgb2oklab } from 'colorizr';
rgb2oklab({ r: 255, g: 0, b: 68 }); // { l: 0.63269, a: 0.23887, b: 0.08648 }
rgb2oklab([255, 0, 68]); // { l: 0.63269, a: 0.23887, b: 0.08648 }
rgb2oklch(input: RGB | ColorTupple, precision: number): LCH
Convert RGB to OKLCH.
import { rgb2oklch } from 'colorizr';
rgb2oklch({ r: 255, g: 0, b: 68 }); // { l: 0.63269, c: 0.25404, h: 19.90218 }
rgb2oklch([255, 0, 68]); // { l: 0.63269, c: 0.25404, h: 19.90218 }
isValidColor(input: any): boolean
Check if the input is a valid color.
import { isValidColor } from 'colorizr';
isValidColor('#ff0044'); // true
isValidColor('#ff004400'); // true
isValidColor('hsl(136 100% 50%)'); // true
isValidColor('hsla(344, 100%, 50%, 0.4)'); // true
isValidColor('oklab(70.622% 0.1374 0.14283)'); // true
isValidColor('oklch(47.642% 0.29956 274.93693)'); // true
isValidColor('rgb(255 230 109)'); // true
isValidColor('blue'); // true
isValidColor('aliceblue'); // true
isValidColor('#mmff00'); // false
isValidColor('blue-ish'); // false
isHex(input: unknown): boolean
Check if the input is a valid hex color.
import { isHex } from 'colorizr';
isHex('#f04'); // true
isHex('#ff0044'); // true
isHex('#ff0044cc'); // true
isHSL(input: unknown): boolean
Check if the input is a valid HSL object.
import { isHSL } from 'colorizr';
isHSL({ h: 344, s: 100, l: 50 }); // true
isLAB(input: unknown): boolean
Check if the input is a valid LAB color.
import { isLAB } from 'colorizr';
isLAB({ l: 0.63269, a: 0.23887, b: 0.08648 }); // true
isLHC(input: unknown): boolean
Check if the input is a valid LCH color.
import { isLHC } from 'colorizr';
isLHC({ l: 0.63269, c: 0.25404, h: 19.90218 }); // true
isRGB(input: unknown): boolean
Check if the input is a valid RGB color.
import { isRGB } from 'colorizr';
isRGB({ r: 255, g: 0, b: 68 }); // true
import Colorizr from 'Colorizr';
const colorizr = new Colorizr('#ff0044');
colorizr.hex; // #ff0044
colorizr.hsl; // { h: 344, s: 100, l: 50 };
colorizr.rgb; // { r: 255, g: 0, b: 68 };
colorizr.hex
Get the hex code.
colorizr.hsl
Get the HSL object.
colorizr.oklab
Get the OKLAB object.
colorizr.oklch
Get the OKLCH object.
colorizr.rgb
Get the RGB object.
colorizr.hue
Get the hue (0-360).
colorizr.saturation
Get the saturation (0-100).
colorizr.lightness
Get the lightness (0-100).
colorizr.red
Get the red level (0-255).
colorizr.green
Get the green level (0-255).
colorizr.blue
Get the blue level (0-255).
colorizr.chroma Get the chroma (0-1).
colorizr.luminance
Get the luminance (0-1).
colorizr.opacity
Get the opacity (0-1).
colorizr.css
Get the css string of the same time as the input.
colorizr.textColor Get a contrasting color (black or white).
colorizr.lighten(percentage: number)
Get a lighter color.
colorizr.darken(percentage: number)
Get a darker color.
colorizr.desaturate(percentage: number)
Get a desaturated color.
colorizr.saturate(percentage: number)
Get a saturated color.
colorizr.rotate(degrees: number)
Get a color with a hue rotated.
colorizr.invert()
Get the inverted color.
colorizr.transparentize(percentage: number)
Get a faded color.
colorizr.compare(color: string)
Returns an object with the analysis (check the compare format above)
colorizr.format(type: ColorType, precision?: number)
Returns the formatted color with the type
color.js
chroma-js
calculating-color-contrast
Colour Contrast Check
Contrast Checker
Converting Color Spaces in typescript
A perceptual color space for image processing
FAQs
Manipulate colors like a boss
We found that colorizr demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.