Comprehensive color conversion library supporting multiple color models with automatic routing between color spaces
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Comprehensive conversion functionality between 17 different color models. Each conversion function returns rounded values by default, with raw variants available for precision.
All conversion functions follow a consistent pattern: convert[fromModel][toModel](...args).
/**
* Generic conversion function interface
* @param args - Color values as individual arguments or array
* @returns Converted color values as array
*/
interface ConversionFunction<TInput, TOutput> {
(...args: TInput extends any[] ? TInput : [TInput]): TOutput;
(input: TInput): TOutput;
raw: {
(...args: TInput extends any[] ? TInput : [TInput]): TOutput;
(input: TInput): TOutput;
};
conversion?: string[];
}Usage Examples:
import convert from 'color-convert';
// Spread arguments
convert.rgb.hsl(140, 200, 100); // [96, 48, 59]
// Array argument
convert.rgb.hsl([140, 200, 100]); // [96, 48, 59]
// Raw conversion for precision
convert.rgb.hsl.raw(140, 200, 100); // [96.30136986301369, 47.61904761904762, 58.823529411764706]
// Single value models (hex, keyword, ansi)
convert.hex.rgb('FF0000'); // [255, 0, 0]
convert.keyword.rgb('red'); // [255, 0, 0]Convert from RGB (Red, Green, Blue) color model to other color spaces.
/**
* RGB to HSL conversion
* @param r - Red component (0-255)
* @param g - Green component (0-255)
* @param b - Blue component (0-255)
* @returns HSL array [h: 0-360, s: 0-100, l: 0-100]
*/
rgb: {
hsl(...rgb: RGB): HSL;
hsl(rgb: RGB): HSL;
hsv(...rgb: RGB): HSV;
hsv(rgb: RGB): HSV;
hwb(...rgb: RGB): HWB;
hwb(rgb: RGB): HWB;
cmyk(...rgb: RGB): CMYK;
cmyk(rgb: RGB): CMYK;
xyz(...rgb: RGB): XYZ;
xyz(rgb: RGB): XYZ;
lab(...rgb: RGB): LAB;
lab(rgb: RGB): LAB;
lch(...rgb: RGB): LCH;
lch(rgb: RGB): LCH;
hex(...rgb: RGB): HEX;
hex(rgb: RGB): HEX;
keyword(...rgb: RGB): Keyword;
keyword(rgb: RGB): Keyword;
ansi16(...rgb: RGB): ANSI16;
ansi16(rgb: RGB): ANSI16;
ansi256(...rgb: RGB): ANSI256;
ansi256(rgb: RGB): ANSI256;
hcg(...rgb: RGB): HCG;
hcg(rgb: RGB): HCG;
apple(...rgb: RGB): Apple;
apple(rgb: RGB): Apple;
gray(...rgb: RGB): Gray;
gray(rgb: RGB): Gray;
}Convert from HSL (Hue, Saturation, Lightness) color model to other color spaces.
/**
* HSL conversion functions
* @param h - Hue component (0-360)
* @param s - Saturation component (0-100)
* @param l - Lightness component (0-100)
*/
hsl: {
rgb(...hsl: HSL): RGB;
rgb(hsl: HSL): RGB;
hsv(...hsl: HSL): HSV;
hsv(hsl: HSL): HSV;
hwb(...hsl: HSL): HWB;
hwb(hsl: HSL): HWB;
cmyk(...hsl: HSL): CMYK;
cmyk(hsl: HSL): CMYK;
xyz(...hsl: HSL): XYZ;
xyz(hsl: HSL): XYZ;
lab(...hsl: HSL): LAB;
lab(hsl: HSL): LAB;
lch(...hsl: HSL): LCH;
lch(hsl: HSL): LCH;
hex(...hsl: HSL): HEX;
hex(hsl: HSL): HEX;
keyword(...hsl: HSL): Keyword;
keyword(hsl: HSL): Keyword;
ansi16(...hsl: HSL): ANSI16;
ansi16(hsl: HSL): ANSI16;
ansi256(...hsl: HSL): ANSI256;
ansi256(hsl: HSL): ANSI256;
hcg(...hsl: HSL): HCG;
hcg(hsl: HSL): HCG;
apple(...hsl: HSL): Apple;
apple(hsl: HSL): Apple;
gray(...hsl: HSL): Gray;
gray(hsl: HSL): Gray;
}Convert from HSV (Hue, Saturation, Value) color model to other color spaces.
/**
* HSV conversion functions
* @param h - Hue component (0-360)
* @param s - Saturation component (0-100)
* @param v - Value component (0-100)
*/
hsv: {
rgb(...hsv: HSV): RGB;
rgb(hsv: HSV): RGB;
hsl(...hsv: HSV): HSL;
hsl(hsv: HSV): HSL;
hwb(...hsv: HSV): HWB;
hwb(hsv: HSV): HWB;
cmyk(...hsv: HSV): CMYK;
cmyk(hsv: HSV): CMYK;
xyz(...hsv: HSV): XYZ;
xyz(hsv: HSV): XYZ;
lab(...hsv: HSV): LAB;
lab(hsv: HSV): LAB;
lch(...hsv: HSV): LCH;
lch(hsv: HSV): LCH;
hex(...hsv: HSV): HEX;
hex(hsv: HSV): HEX;
keyword(...hsv: HSV): Keyword;
keyword(hsv: HSV): Keyword;
ansi16(...hsv: HSV): ANSI16;
ansi16(hsv: HSV): ANSI16;
ansi256(...hsv: HSV): ANSI256;
ansi256(hsv: HSV): ANSI256;
hcg(...hsv: HSV): HCG;
hcg(hsv: HSV): HCG;
apple(...hsv: HSV): Apple;
apple(hsv: HSV): Apple;
gray(...hsv: HSV): Gray;
gray(hsv: HSV): Gray;
}Convert from HWB (Hue, Whiteness, Blackness) color model to other color spaces.
/**
* HWB conversion functions
* @param h - Hue component (0-360)
* @param w - Whiteness component (0-100)
* @param b - Blackness component (0-100)
*/
hwb: {
rgb(...hwb: HWB): RGB;
rgb(hwb: HWB): RGB;
hsl(...hwb: HWB): HSL;
hsl(hwb: HWB): HSL;
hsv(...hwb: HWB): HSV;
hsv(hwb: HWB): HSV;
cmyk(...hwb: HWB): CMYK;
cmyk(hwb: HWB): CMYK;
xyz(...hwb: HWB): XYZ;
xyz(hwb: HWB): XYZ;
lab(...hwb: HWB): LAB;
lab(hwb: HWB): LAB;
lch(...hwb: HWB): LCH;
lch(hwb: HWB): LCH;
hex(...hwb: HWB): HEX;
hex(hwb: HWB): HEX;
keyword(...hwb: HWB): Keyword;
keyword(hwb: HWB): Keyword;
ansi16(...hwb: HWB): ANSI16;
ansi16(hwb: HWB): ANSI16;
ansi256(...hwb: HWB): ANSI256;
ansi256(hwb: HWB): ANSI256;
hcg(...hwb: HWB): HCG;
hcg(hwb: HWB): HCG;
apple(...hwb: HWB): Apple;
apple(hwb: HWB): Apple;
gray(...hwb: HWB): Gray;
gray(hwb: HWB): Gray;
}Convert from CMYK (Cyan, Magenta, Yellow, Key) color model to other color spaces.
/**
* CMYK conversion functions
* @param c - Cyan component (0-100)
* @param m - Magenta component (0-100)
* @param y - Yellow component (0-100)
* @param k - Key (black) component (0-100)
*/
cmyk: {
rgb(...cmyk: CMYK): RGB;
rgb(cmyk: CMYK): RGB;
hsl(...cmyk: CMYK): HSL;
hsl(cmyk: CMYK): HSL;
hsv(...cmyk: CMYK): HSV;
hsv(cmyk: CMYK): HSV;
hwb(...cmyk: CMYK): HWB;
hwb(cmyk: CMYK): HWB;
xyz(...cmyk: CMYK): XYZ;
xyz(cmyk: CMYK): XYZ;
lab(...cmyk: CMYK): LAB;
lab(cmyk: CMYK): LAB;
lch(...cmyk: CMYK): LCH;
lch(cmyk: CMYK): LCH;
hex(...cmyk: CMYK): HEX;
hex(cmyk: CMYK): HEX;
keyword(...cmyk: CMYK): Keyword;
keyword(cmyk: CMYK): Keyword;
ansi16(...cmyk: CMYK): ANSI16;
ansi16(cmyk: CMYK): ANSI16;
ansi256(...cmyk: CMYK): ANSI256;
ansi256(cmyk: CMYK): ANSI256;
hcg(...cmyk: CMYK): HCG;
hcg(cmyk: CMYK): HCG;
apple(...cmyk: CMYK): Apple;
apple(cmyk: CMYK): Apple;
gray(...cmyk: CMYK): Gray;
gray(cmyk: CMYK): Gray;
}Convert from XYZ (CIE XYZ) color model to other color spaces.
/**
* XYZ conversion functions
* @param x - X component
* @param y - Y component
* @param z - Z component
*/
xyz: {
rgb(...xyz: XYZ): RGB;
rgb(xyz: XYZ): RGB;
hsl(...xyz: XYZ): HSL;
hsl(xyz: XYZ): HSL;
hsv(...xyz: XYZ): HSV;
hsv(xyz: XYZ): HSV;
hwb(...xyz: XYZ): HWB;
hwb(xyz: XYZ): HWB;
cmyk(...xyz: XYZ): CMYK;
cmyk(xyz: XYZ): CMYK;
lab(...xyz: XYZ): LAB;
lab(xyz: XYZ): LAB;
lch(...xyz: XYZ): LCH;
lch(xyz: XYZ): LCH;
hex(...xyz: XYZ): HEX;
hex(xyz: XYZ): HEX;
keyword(...xyz: XYZ): Keyword;
keyword(xyz: XYZ): Keyword;
ansi16(...xyz: XYZ): ANSI16;
ansi16(xyz: XYZ): ANSI16;
ansi256(...xyz: XYZ): ANSI256;
ansi256(xyz: XYZ): ANSI256;
hcg(...xyz: XYZ): HCG;
hcg(xyz: XYZ): HCG;
apple(...xyz: XYZ): Apple;
apple(xyz: XYZ): Apple;
gray(...xyz: XYZ): Gray;
gray(xyz: XYZ): Gray;
}Convert from LAB (CIE LAB) color model to other color spaces.
/**
* LAB conversion functions
* @param l - Lightness component (0-100)
* @param a - A component (-86 to 98)
* @param b - B component (-108 to 94)
*/
lab: {
rgb(...lab: LAB): RGB;
rgb(lab: LAB): RGB;
hsl(...lab: LAB): HSL;
hsl(lab: LAB): HSL;
hsv(...lab: LAB): HSV;
hsv(lab: LAB): HSV;
hwb(...lab: LAB): HWB;
hwb(lab: LAB): HWB;
cmyk(...lab: LAB): CMYK;
cmyk(lab: LAB): CMYK;
xyz(...lab: LAB): XYZ;
xyz(lab: LAB): XYZ;
lch(...lab: LAB): LCH;
lch(lab: LAB): LCH;
hex(...lab: LAB): HEX;
hex(lab: LAB): HEX;
keyword(...lab: LAB): Keyword;
keyword(lab: LAB): Keyword;
ansi16(...lab: LAB): ANSI16;
ansi16(lab: LAB): ANSI16;
ansi256(...lab: LAB): ANSI256;
ansi256(lab: LAB): ANSI256;
hcg(...lab: LAB): HCG;
hcg(lab: LAB): HCG;
apple(...lab: LAB): Apple;
apple(lab: LAB): Apple;
gray(...lab: LAB): Gray;
gray(lab: LAB): Gray;
}Convert from LCH (CIE LCH) color model to other color spaces.
/**
* LCH conversion functions
* @param l - Lightness component (0-100)
* @param c - Chroma component (0-133)
* @param h - Hue component (0-360)
*/
lch: {
rgb(...lch: LCH): RGB;
rgb(lch: LCH): RGB;
hsl(...lch: LCH): HSL;
hsl(lch: LCH): HSL;
hsv(...lch: LCH): HSV;
hsv(lch: LCH): HSV;
hwb(...lch: LCH): HWB;
hwb(lch: LCH): HWB;
cmyk(...lch: LCH): CMYK;
cmyk(lch: LCH): CMYK;
xyz(...lch: LCH): XYZ;
xyz(lch: LCH): XYZ;
lab(...lch: LCH): LAB;
lab(lch: LCH): LAB;
hex(...lch: LCH): HEX;
hex(lch: LCH): HEX;
keyword(...lch: LCH): Keyword;
keyword(lch: LCH): Keyword;
ansi16(...lch: LCH): ANSI16;
ansi16(lch: LCH): ANSI16;
ansi256(...lch: LCH): ANSI256;
ansi256(lch: LCH): ANSI256;
hcg(...lch: LCH): HCG;
hcg(lch: LCH): HCG;
apple(...lch: LCH): Apple;
apple(lch: LCH): Apple;
gray(...lch: LCH): Gray;
gray(lch: LCH): Gray;
}Convert from OKLAB (OK LAB) color model to other color spaces.
/**
* OKLAB conversion functions
* @param l - Lightness component (0-100)
* @param a - A component (-23 to 28)
* @param b - B component (-31 to 20)
*/
oklab: {
rgb(...oklab: OKLAB): RGB;
rgb(oklab: OKLAB): RGB;
hsl(...oklab: OKLAB): HSL;
hsl(oklab: OKLAB): HSL;
hsv(...oklab: OKLAB): HSV;
hsv(oklab: OKLAB): HSV;
hwb(...oklab: OKLAB): HWB;
hwb(oklab: OKLAB): HWB;
cmyk(...oklab: OKLAB): CMYK;
cmyk(oklab: OKLAB): CMYK;
xyz(...oklab: OKLAB): XYZ;
xyz(oklab: OKLAB): XYZ;
lab(...oklab: OKLAB): LAB;
lab(oklab: OKLAB): LAB;
lch(...oklab: OKLAB): LCH;
lch(oklab: OKLAB): LCH;
oklch(...oklab: OKLAB): OKLCH;
oklch(oklab: OKLAB): OKLCH;
hex(...oklab: OKLAB): HEX;
hex(oklab: OKLAB): HEX;
keyword(...oklab: OKLAB): Keyword;
keyword(oklab: OKLAB): Keyword;
ansi16(...oklab: OKLAB): ANSI16;
ansi16(oklab: OKLAB): ANSI16;
ansi256(...oklab: OKLAB): ANSI256;
ansi256(oklab: OKLAB): ANSI256;
hcg(...oklab: OKLAB): HCG;
hcg(oklab: OKLAB): HCG;
apple(...oklab: OKLAB): Apple;
apple(oklab: OKLAB): Apple;
gray(...oklab: OKLAB): Gray;
gray(oklab: OKLAB): Gray;
}Convert from OKLCH (OK LCH) color model to other color spaces.
/**
* OKLCH conversion functions
* @param l - Lightness component (0-100)
* @param c - Chroma component (0-32)
* @param h - Hue component (0-360)
*/
oklch: {
rgb(...oklch: OKLCH): RGB;
rgb(oklch: OKLCH): RGB;
hsl(...oklch: OKLCH): HSL;
hsl(oklch: OKLCH): HSL;
hsv(...oklch: OKLCH): HSV;
hsv(oklch: OKLCH): HSV;
hwb(...oklch: OKLCH): HWB;
hwb(oklch: OKLCH): HWB;
cmyk(...oklch: OKLCH): CMYK;
cmyk(oklch: OKLCH): CMYK;
xyz(...oklch: OKLCH): XYZ;
xyz(oklch: OKLCH): XYZ;
lab(...oklch: OKLCH): LAB;
lab(oklch: OKLCH): LAB;
lch(...oklch: OKLCH): LCH;
lch(oklch: OKLCH): LCH;
oklab(...oklch: OKLCH): OKLAB;
oklab(oklch: OKLCH): OKLAB;
hex(...oklch: OKLCH): HEX;
hex(oklch: OKLCH): HEX;
keyword(...oklch: OKLCH): Keyword;
keyword(oklch: OKLCH): Keyword;
ansi16(...oklch: OKLCH): ANSI16;
ansi16(oklch: OKLCH): ANSI16;
ansi256(...oklch: OKLCH): ANSI256;
ansi256(oklch: OKLCH): ANSI256;
hcg(...oklch: OKLCH): HCG;
hcg(oklch: OKLCH): HCG;
apple(...oklch: OKLCH): Apple;
apple(oklch: OKLCH): Apple;
gray(...oklch: OKLCH): Gray;
gray(oklch: OKLCH): Gray;
}Convert from HEX (hexadecimal) color strings to other color spaces.
/**
* HEX conversion functions
* @param hex - Hexadecimal color string (e.g., 'FF0000', '#FF0000')
*/
hex: {
rgb(hex: HEX): RGB;
hsl(hex: HEX): HSL;
hsv(hex: HEX): HSV;
hwb(hex: HEX): HWB;
cmyk(hex: HEX): CMYK;
xyz(hex: HEX): XYZ;
lab(hex: HEX): LAB;
lch(hex: HEX): LCH;
keyword(hex: HEX): Keyword;
ansi16(hex: HEX): ANSI16;
ansi256(hex: HEX): ANSI256;
hcg(hex: HEX): HCG;
apple(hex: HEX): Apple;
gray(hex: HEX): Gray;
}Convert from CSS color keywords to other color spaces.
/**
* Keyword conversion functions
* @param keyword - CSS color keyword (e.g., 'red', 'blue', 'white')
*/
keyword: {
rgb(keyword: Keyword): RGB;
hsl(keyword: Keyword): HSL;
hsv(keyword: Keyword): HSV;
hwb(keyword: Keyword): HWB;
cmyk(keyword: Keyword): CMYK;
xyz(keyword: Keyword): XYZ;
lab(keyword: Keyword): LAB;
lch(keyword: Keyword): LCH;
hex(keyword: Keyword): HEX;
ansi16(keyword: Keyword): ANSI16;
ansi256(keyword: Keyword): ANSI256;
hcg(keyword: Keyword): HCG;
apple(keyword: Keyword): Apple;
gray(keyword: Keyword): Gray;
}Convert from 16-color ANSI codes to other color spaces.
/**
* ANSI16 conversion functions
* @param ansi16 - 16-color ANSI code (0-15)
*/
ansi16: {
rgb(ansi16: ANSI16): RGB;
hsl(ansi16: ANSI16): HSL;
hsv(ansi16: ANSI16): HSV;
hwb(ansi16: ANSI16): HWB;
cmyk(ansi16: ANSI16): CMYK;
xyz(ansi16: ANSI16): XYZ;
lab(ansi16: ANSI16): LAB;
lch(ansi16: ANSI16): LCH;
hex(ansi16: ANSI16): HEX;
keyword(ansi16: ANSI16): Keyword;
ansi256(ansi16: ANSI16): ANSI256;
hcg(ansi16: ANSI16): HCG;
apple(ansi16: ANSI16): Apple;
gray(ansi16: ANSI16): Gray;
}Convert from 256-color ANSI codes to other color spaces.
/**
* ANSI256 conversion functions
* @param ansi256 - 256-color ANSI code (0-255)
*/
ansi256: {
rgb(ansi256: ANSI256): RGB;
hsl(ansi256: ANSI256): HSL;
hsv(ansi256: ANSI256): HSV;
hwb(ansi256: ANSI256): HWB;
cmyk(ansi256: ANSI256): CMYK;
xyz(ansi256: ANSI256): XYZ;
lab(ansi256: ANSI256): LAB;
lch(ansi256: ANSI256): LCH;
hex(ansi256: ANSI256): HEX;
keyword(ansi256: ANSI256): Keyword;
ansi16(ansi256: ANSI256): ANSI16;
hcg(ansi256: ANSI256): HCG;
apple(ansi256: ANSI256): Apple;
gray(ansi256: ANSI256): Gray;
}Convert from HCG (Hue, Chroma, Grayscale) color model to other color spaces.
/**
* HCG conversion functions
* @param h - Hue component (0-360)
* @param c - Chroma component (0-100)
* @param g - Grayscale component (0-100)
*/
hcg: {
rgb(...hcg: HCG): RGB;
rgb(hcg: HCG): RGB;
hsl(...hcg: HCG): HSL;
hsl(hcg: HCG): HSL;
hsv(...hcg: HCG): HSV;
hsv(hcg: HCG): HSV;
hwb(...hcg: HCG): HWB;
hwb(hcg: HCG): HWB;
cmyk(...hcg: HCG): CMYK;
cmyk(hcg: HCG): CMYK;
xyz(...hcg: HCG): XYZ;
xyz(hcg: HCG): XYZ;
lab(...hcg: HCG): LAB;
lab(hcg: HCG): LAB;
lch(...hcg: HCG): LCH;
lch(hcg: HCG): LCH;
hex(...hcg: HCG): HEX;
hex(hcg: HCG): HEX;
keyword(...hcg: HCG): Keyword;
keyword(hcg: HCG): Keyword;
ansi16(...hcg: HCG): ANSI16;
ansi16(hcg: HCG): ANSI16;
ansi256(...hcg: HCG): ANSI256;
ansi256(hcg: HCG): ANSI256;
apple(...hcg: HCG): Apple;
apple(hcg: HCG): Apple;
gray(...hcg: HCG): Gray;
gray(hcg: HCG): Gray;
}Convert from Apple RGB color model to other color spaces.
/**
* Apple RGB conversion functions
* @param r16 - Red component (0-65535)
* @param g16 - Green component (0-65535)
* @param b16 - Blue component (0-65535)
*/
apple: {
rgb(...apple: Apple): RGB;
rgb(apple: Apple): RGB;
hsl(...apple: Apple): HSL;
hsl(apple: Apple): HSL;
hsv(...apple: Apple): HSV;
hsv(apple: Apple): HSV;
hwb(...apple: Apple): HWB;
hwb(apple: Apple): HWB;
cmyk(...apple: Apple): CMYK;
cmyk(apple: Apple): CMYK;
xyz(...apple: Apple): XYZ;
xyz(apple: Apple): XYZ;
lab(...apple: Apple): LAB;
lab(apple: Apple): LAB;
lch(...apple: Apple): LCH;
lch(apple: Apple): LCH;
hex(...apple: Apple): HEX;
hex(apple: Apple): HEX;
keyword(...apple: Apple): Keyword;
keyword(apple: Apple): Keyword;
ansi16(...apple: Apple): ANSI16;
ansi16(apple: Apple): ANSI16;
ansi256(...apple: Apple): ANSI256;
ansi256(apple: Apple): ANSI256;
hcg(...apple: Apple): HCG;
hcg(apple: Apple): HCG;
gray(...apple: Apple): Gray;
gray(apple: Apple): Gray;
}Convert from grayscale color model to other color spaces.
/**
* Grayscale conversion functions
* @param gray - Grayscale value (0-100)
*/
gray: {
rgb(...gray: Gray): RGB;
rgb(gray: Gray): RGB;
hsl(...gray: Gray): HSL;
hsl(gray: Gray): HSL;
hsv(...gray: Gray): HSV;
hsv(gray: Gray): HSV;
hwb(...gray: Gray): HWB;
hwb(gray: Gray): HWB;
cmyk(...gray: Gray): CMYK;
cmyk(gray: Gray): CMYK;
xyz(...gray: Gray): XYZ;
xyz(gray: Gray): XYZ;
lab(...gray: Gray): LAB;
lab(gray: Gray): LAB;
lch(...gray: Gray): LCH;
lch(gray: Gray): LCH;
hex(...gray: Gray): HEX;
hex(gray: Gray): HEX;
keyword(...gray: Gray): Keyword;
keyword(gray: Gray): Keyword;
ansi16(...gray: Gray): ANSI16;
ansi16(gray: Gray): ANSI16;
ansi256(...gray: Gray): ANSI256;
ansi256(gray: Gray): ANSI256;
hcg(...gray: Gray): HCG;
hcg(gray: Gray): HCG;
apple(...gray: Gray): Apple;
apple(gray: Gray): Apple;
}All conversion functions support flexible input formats and handle null/undefined values gracefully.
/**
* Input handling behavior for all conversion functions
* - Accepts both spread arguments and array inputs
* - Returns null/undefined if input is null/undefined
* - Single-value models (hex, keyword, ansi) only accept direct values
*/
interface InputHandling {
spreadArgs: (...args: any[]) => any;
arrayArg: (args: any[]) => any;
nullHandling: (input: null) => null;
undefinedHandling: (input: undefined) => undefined;
}Usage Examples:
import convert from 'color-convert';
// Both formats work for multi-channel models
convert.rgb.hsl(255, 0, 0); // [0, 100, 50]
convert.rgb.hsl([255, 0, 0]); // [0, 100, 50]
// Single-channel models only accept direct values
convert.hex.rgb('FF0000'); // [255, 0, 0] ✓
convert.hex.rgb(['FF0000']); // Invalid ✗
// Null/undefined handling
convert.rgb.hsl(null); // null
convert.rgb.hsl(undefined); // undefined