Draft spec (24 July 2023): https://tr.designtokens.org/format/
Deprecate JSON output for page components, since the spec is not flexible enough for arbitrary properties.
Introduce the concept of transformer functions. A transformer function will receive an assets as an input and will output the same kind of asset.
Scoping class names in CSS was a transformation applied to typography and page components assets when the output is CSS.
Decoupling this transformation from the rest of the adapter results in cleaner API inbound adapters, without any project-specific logic, so now they can be co-located close to the PenpotClient code.
The 8-digit hexadecimal RGBA syntax is a more standard way to represent colors than the rgba() color function, which is CSS-specific.
The 8-digit hex notation is valid CSS as of the CSS Level 4 spec: https://www.w3.org/TR/css-color-4/#hex-notation
Additionally, the CSS rgba() comma-separated color function is considered *legacy color syntax* as per the CSS Level 4 spec: https://www.w3.org/TR/css-color-4/#legacy-color-syntax
Sass has built-in support for CSS Level 4 color notations: https://sass-lang.com/documentation/values/colors/
The 8-digit hexadecimal RGBA is a drop-in replacement for rgba() values in both CSS and SCSS, so this is functionally compatible if the file is used directly.
BREAKING CHANGE: drops CSS rgba() values in all output formats. It's a soft breaking change for CSS and SCSS outputs, but a hard one for JSON.
BREAKING CHANGE: CSS variables (color) are no longer lowercase. Since CSS custom property names are case sensitive, this would break existing consumers.
zod unions are exclusive, so the UserConfig type couldn't be kept as a union either for having at least a colors, typographies or pages output.
This check has been moved to a runtime zod refine custom validation.