or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

color-models.mdconversion-functions.mdindex.mdrouting-system.md
tile.json

conversion-functions.mddocs/

Conversion Functions

Comprehensive conversion functionality between 17 different color models. Each conversion function returns rounded values by default, with raw variants available for precision.

Capabilities

Conversion Function Pattern

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]

RGB Conversions

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;
}

HSL Conversions

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;
}

HSV Conversions

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;
}

HWB Conversions

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;
}

CMYK Conversions

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;
}

XYZ Conversions

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;
}

LAB Conversions

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;
}

LCH Conversions

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;
}

OKLAB Conversions

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;
}

OKLCH Conversions

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;
}

HEX Conversions

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;
}

Keyword Conversions

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;
}

ANSI16 Conversions

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;
}

ANSI256 Conversions

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;
}

HCG Conversions

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;
}

Apple RGB Conversions

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;
}

Grayscale Conversions

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;
}

Input Format Handling

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