v3.0.0
Breaking changes
This new release includes revamped color parsing to align with the latest css-color-4 spec. Regular expression matching has been replaced with a parser that follows the css-syntax spec more closely.
The new parser is more flexible with some aspects and stricter with others:
- Trickier whitespace formulas around numbers, such as
rgb(1-.2.3), are now properly handled (#187) - All non-legacy syntaxes allow mixing
<number>,<percentage>and'none'component values - The
color()syntax no longer supports omitted component values that default to0; it now requires exactly three component values. (#186)
Interpretation of component values has been aligned to the spec:
- in non-legacy syntaxes, percentages are mapped to a reference range for that component. For example, the range of
lch.c(Chroma in the CIELCh color space) is[0, 150], with100%corresponding to150.
Serialization has also been aligned to the spec:
labandlchserialize theLcomponent as<number>, not<percentage>oklab,oklchandlrgbare serialized tooklab(),oklch(), andcolor(srgb-linear)respectively.
Please consult the migration guide for assistance in upgrading from 2.x to 3.0.
API changes
parseRgbandparseHslnow perform parsing of the modern syntax forrgb()andhsl()respectively;parseRgbLegacyandparseHslLegacyhave been added to parse the legacy syntaxes forrgb()/rgba()/hsl()/hsla()parseOklabandparseOklchhave been added to parseoklab()andoklch().