@pagyew/safolor
Version:
Convert colors to 8-bit web-safe colors
66 lines (52 loc) • 1.17 kB
text/typescript
type Num = number
type Pct = `${number}%`
type Alpha =
Num |
Pct
type HEX = `#${string}`
type RGB =
LegacyRGB |
ModernRGB
type RGBA =
LegacyRGBA |
ModernRGBA
type LegacyRGB =
`rgb(${Num}, ${Num}, ${Num})` |
`rgb(${Num}, ${Num}, ${Num}, ${Alpha})` |
`rgb(${Pct}, ${Pct}, ${Pct})` |
`rgb(${Pct}, ${Pct}, ${Pct}, ${Alpha})`
type ModernRGB =
`rgb(${Num | Pct} ${Num | Pct} ${Num | Pct})` |
`rgb(${Num | Pct} ${Num | Pct} ${Num | Pct} / ${Alpha})`
type LegacyRGBA =
`rgba(${Num}, ${Num}, ${Num})` |
`rgba(${Num}, ${Num}, ${Num}, ${Alpha})` |
`rgba(${Pct}, ${Pct}, ${Pct})` |
`rgba(${Pct}, ${Pct}, ${Pct}, ${Alpha})`
type ModernRGBA =
`rgba(${Num | Pct} ${Num | Pct} ${Num | Pct})` |
`rgba(${Num | Pct} ${Num | Pct} ${Num | Pct} / ${Alpha})`
interface RGBObject {
r: Num
g: Num
b: Num
a?: Num
}
interface Safolor {
(color: HEX): HEX
(color: RGB | RGBA): HEX
hex: {
(color: HEX): HEX
(color: RGB | RGBA): HEX
}
rgb: {
(color: HEX): RGB
(color: RGB | RGBA): RGB
}
rgbObj: {
(color: HEX): RGBObject
(color: RGB | RGBA): RGBObject
}
}
declare const safolor: Safolor;
export { safolor };