@terrazzo/token-tools 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/css.d.ts +158 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +351 -0
- package/dist/css.js.map +1 -0
- package/dist/index.d.ts +69 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -29
- package/dist/index.js.map +1 -1
- package/dist/js.d.ts +23 -0
- package/dist/js.d.ts.map +1 -0
- package/dist/js.js +13 -0
- package/dist/js.js.map +1 -0
- package/dist/string-BZ5Le1WD.js +259 -0
- package/dist/string-BZ5Le1WD.js.map +1 -0
- package/dist/types-C68LbU3N.d.ts +403 -0
- package/dist/types-C68LbU3N.d.ts.map +1 -0
- package/package.json +9 -11
- package/rolldown.config.ts +17 -0
- package/dist/color.d.ts +0 -26
- package/dist/color.d.ts.map +0 -1
- package/dist/color.js +0 -149
- package/dist/color.js.map +0 -1
- package/dist/css/boolean.d.ts +0 -5
- package/dist/css/boolean.d.ts.map +0 -1
- package/dist/css/boolean.js +0 -9
- package/dist/css/boolean.js.map +0 -1
- package/dist/css/border.d.ts +0 -10
- package/dist/css/border.d.ts.map +0 -1
- package/dist/css/border.js +0 -31
- package/dist/css/border.js.map +0 -1
- package/dist/css/color.d.ts +0 -11
- package/dist/css/color.d.ts.map +0 -1
- package/dist/css/color.js +0 -54
- package/dist/css/color.js.map +0 -1
- package/dist/css/css-types.d.ts +0 -13
- package/dist/css/css-types.d.ts.map +0 -1
- package/dist/css/css-types.js +0 -2
- package/dist/css/css-types.js.map +0 -1
- package/dist/css/cubic-bezier.d.ts +0 -5
- package/dist/css/cubic-bezier.d.ts.map +0 -1
- package/dist/css/cubic-bezier.js +0 -12
- package/dist/css/cubic-bezier.js.map +0 -1
- package/dist/css/dimension.d.ts +0 -5
- package/dist/css/dimension.d.ts.map +0 -1
- package/dist/css/dimension.js +0 -10
- package/dist/css/dimension.js.map +0 -1
- package/dist/css/duration.d.ts +0 -5
- package/dist/css/duration.d.ts.map +0 -1
- package/dist/css/duration.js +0 -10
- package/dist/css/duration.js.map +0 -1
- package/dist/css/font-family.d.ts +0 -4
- package/dist/css/font-family.d.ts.map +0 -1
- package/dist/css/font-family.js +0 -10
- package/dist/css/font-family.js.map +0 -1
- package/dist/css/font-weight.d.ts +0 -5
- package/dist/css/font-weight.d.ts.map +0 -1
- package/dist/css/font-weight.js +0 -10
- package/dist/css/font-weight.js.map +0 -1
- package/dist/css/gradient.d.ts +0 -6
- package/dist/css/gradient.d.ts.map +0 -1
- package/dist/css/gradient.js +0 -37
- package/dist/css/gradient.js.map +0 -1
- package/dist/css/index.d.ts +0 -24
- package/dist/css/index.d.ts.map +0 -1
- package/dist/css/index.js +0 -97
- package/dist/css/index.js.map +0 -1
- package/dist/css/lib.d.ts +0 -24
- package/dist/css/lib.d.ts.map +0 -1
- package/dist/css/lib.js +0 -35
- package/dist/css/lib.js.map +0 -1
- package/dist/css/link.d.ts +0 -5
- package/dist/css/link.d.ts.map +0 -1
- package/dist/css/link.js +0 -10
- package/dist/css/link.js.map +0 -1
- package/dist/css/number.d.ts +0 -5
- package/dist/css/number.d.ts.map +0 -1
- package/dist/css/number.js +0 -10
- package/dist/css/number.js.map +0 -1
- package/dist/css/shadow.d.ts +0 -10
- package/dist/css/shadow.d.ts.map +0 -1
- package/dist/css/shadow.js +0 -51
- package/dist/css/shadow.js.map +0 -1
- package/dist/css/string.d.ts +0 -5
- package/dist/css/string.d.ts.map +0 -1
- package/dist/css/string.js +0 -12
- package/dist/css/string.js.map +0 -1
- package/dist/css/stroke-style.d.ts +0 -5
- package/dist/css/stroke-style.d.ts.map +0 -1
- package/dist/css/stroke-style.js +0 -10
- package/dist/css/stroke-style.js.map +0 -1
- package/dist/css/transition.d.ts +0 -5
- package/dist/css/transition.d.ts.map +0 -1
- package/dist/css/transition.js +0 -21
- package/dist/css/transition.js.map +0 -1
- package/dist/css/typography.d.ts +0 -5
- package/dist/css/typography.d.ts.map +0 -1
- package/dist/css/typography.js +0 -55
- package/dist/css/typography.js.map +0 -1
- package/dist/id.d.ts +0 -16
- package/dist/id.d.ts.map +0 -1
- package/dist/id.js +0 -46
- package/dist/id.js.map +0 -1
- package/dist/js/index.d.ts +0 -13
- package/dist/js/index.d.ts.map +0 -1
- package/dist/js/index.js +0 -16
- package/dist/js/index.js.map +0 -1
- package/dist/string.d.ts +0 -7
- package/dist/string.d.ts.map +0 -1
- package/dist/string.js +0 -47
- package/dist/string.js.map +0 -1
- package/dist/transform.d.ts +0 -7
- package/dist/transform.d.ts.map +0 -1
- package/dist/transform.js +0 -17
- package/dist/transform.js.map +0 -1
- package/dist/types.d.ts +0 -397
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @terrazzo/token-tools
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#489](https://github.com/terrazzoapp/terrazzo/pull/489) [`63f91e6`](https://github.com/terrazzoapp/terrazzo/commit/63f91e6eee1bec5cf7fae3c1bffdde40a5604ec6) Thanks [@drwpow](https://github.com/drwpow)! - Use Rolldown for packaging 🚀
|
|
8
|
+
|
|
9
|
+
## 0.7.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#485](https://github.com/terrazzoapp/terrazzo/pull/485) [`84335da`](https://github.com/terrazzoapp/terrazzo/commit/84335da86adbe4cf112b91d8d9bfa1301c5492d4) Thanks [@drwpow](https://github.com/drwpow)! - Add transform API to allow dynamic parsing / transformation of tokens on load
|
|
14
|
+
|
|
3
15
|
## 0.7.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/css.d.ts
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { BooleanTokenNormalized, BorderTokenNormalized, ColorTokenNormalized, CubicBezierTokenNormalized, DimensionTokenNormalized, DurationTokenNormalized, FontFamilyTokenNormalized, FontWeightTokenNormalized, GradientTokenNormalized, LinkTokenNormalized, NumberTokenNormalized, ShadowTokenNormalized, ShadowValueNormalized, StringTokenNormalized, StrokeStyleTokenNormalized, TokenNormalized, TokenNormalizedSet, TransitionTokenNormalized, TypographyTokenNormalized } from "./types-C68LbU3N.js";
|
|
2
|
+
|
|
3
|
+
//#region src/css/lib.d.ts
|
|
4
|
+
/** Function that generates a var(…) statement */
|
|
5
|
+
type IDGenerator<T = TokenNormalized> = (token: T) => string;
|
|
6
|
+
declare function defaultAliasTransform(token: TokenNormalized): string;
|
|
7
|
+
/** Generate shorthand CSS for select token types */
|
|
8
|
+
declare function generateShorthand({
|
|
9
|
+
$type,
|
|
10
|
+
localID
|
|
11
|
+
}: {
|
|
12
|
+
$type: string;
|
|
13
|
+
localID: string;
|
|
14
|
+
}): string | undefined;
|
|
15
|
+
interface MakeCSSVarOptions {
|
|
16
|
+
/** Prefix with string */
|
|
17
|
+
prefix?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Wrap with `var(…)`
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
wrapVar?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate a valid CSS variable from any string
|
|
26
|
+
* Code by @dfrankland
|
|
27
|
+
*/
|
|
28
|
+
declare function makeCSSVar(name: string, {
|
|
29
|
+
prefix,
|
|
30
|
+
wrapVar
|
|
31
|
+
}?: MakeCSSVarOptions): string;
|
|
32
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/css/css-types.d.ts
|
|
35
|
+
interface TransformCSSValueOptions {
|
|
36
|
+
/** Complete set of tokens (needed to resolve full and partial aliases) */
|
|
37
|
+
tokensSet: TokenNormalizedSet;
|
|
38
|
+
transformAlias?: IDGenerator;
|
|
39
|
+
/** Options for color tokens */
|
|
40
|
+
color?: {
|
|
41
|
+
/** Output legacy hex-6 and hex-8 */
|
|
42
|
+
legacyHex?: boolean;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=css-types.d.ts.map
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/css/color.d.ts
|
|
48
|
+
type WideGamutColorValue = {
|
|
49
|
+
'.': string;
|
|
50
|
+
srgb: string;
|
|
51
|
+
p3: string;
|
|
52
|
+
rec2020: string;
|
|
53
|
+
};
|
|
54
|
+
/** Convert color value to CSS string */
|
|
55
|
+
declare function transformColor(token: ColorTokenNormalized, options: TransformCSSValueOptions): string | WideGamutColorValue;
|
|
56
|
+
//# sourceMappingURL=color.d.ts.map
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/css/boolean.d.ts
|
|
59
|
+
/** Convert boolean value to CSS string */
|
|
60
|
+
declare function transformBoolean(token: BooleanTokenNormalized, {
|
|
61
|
+
tokensSet,
|
|
62
|
+
transformAlias
|
|
63
|
+
}: TransformCSSValueOptions): string;
|
|
64
|
+
//# sourceMappingURL=boolean.d.ts.map
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/css/border.d.ts
|
|
67
|
+
/** Convert border value to multiple CSS values */
|
|
68
|
+
declare function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions): string | {
|
|
69
|
+
'.': string;
|
|
70
|
+
srgb: string;
|
|
71
|
+
p3: string;
|
|
72
|
+
rec2020: string;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=border.d.ts.map
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/css/cubic-bezier.d.ts
|
|
77
|
+
/** Convert cubicBezier value to CSS */
|
|
78
|
+
declare function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): string;
|
|
79
|
+
//# sourceMappingURL=cubic-bezier.d.ts.map
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/css/dimension.d.ts
|
|
82
|
+
/** Convert dimension value to CSS */
|
|
83
|
+
declare function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): string;
|
|
84
|
+
//# sourceMappingURL=dimension.d.ts.map
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/css/duration.d.ts
|
|
87
|
+
/** Convert duration value to CSS */
|
|
88
|
+
declare function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): string;
|
|
89
|
+
//# sourceMappingURL=duration.d.ts.map
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/css/font-family.d.ts
|
|
92
|
+
declare function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): string;
|
|
93
|
+
//# sourceMappingURL=font-family.d.ts.map
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region src/css/font-weight.d.ts
|
|
96
|
+
/** Convert fontWeight value to CSS */
|
|
97
|
+
declare function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): string;
|
|
98
|
+
//# sourceMappingURL=font-weight.d.ts.map
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/css/gradient.d.ts
|
|
101
|
+
/** Convert gradient value to CSS */
|
|
102
|
+
declare function transformGradient(token: GradientTokenNormalized, options: TransformCSSValueOptions): string | WideGamutColorValue;
|
|
103
|
+
//# sourceMappingURL=gradient.d.ts.map
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region src/css/link.d.ts
|
|
106
|
+
/** Convert link value to CSS */
|
|
107
|
+
declare function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): string;
|
|
108
|
+
//# sourceMappingURL=link.d.ts.map
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/css/number.d.ts
|
|
111
|
+
/** Convert number value to CSS */
|
|
112
|
+
declare function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): string;
|
|
113
|
+
//# sourceMappingURL=number.d.ts.map
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/css/shadow.d.ts
|
|
116
|
+
/** Convert shadow subvalue to CSS */
|
|
117
|
+
declare function transformShadowLayer(value: ShadowValueNormalized, options: TransformCSSValueOptions & {
|
|
118
|
+
colorValue: string;
|
|
119
|
+
partialAliasOf?: Partial<Record<keyof typeof value, string>>;
|
|
120
|
+
}): string | Record<string, string>;
|
|
121
|
+
/** Convert shadow value to CSS */
|
|
122
|
+
declare function transformShadow(token: ShadowTokenNormalized, options: TransformCSSValueOptions): string | Record<string, string>;
|
|
123
|
+
//# sourceMappingURL=shadow.d.ts.map
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/css/string.d.ts
|
|
126
|
+
/** Convert string value to CSS */
|
|
127
|
+
declare function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): string;
|
|
128
|
+
//# sourceMappingURL=string.d.ts.map
|
|
129
|
+
//#endregion
|
|
130
|
+
//#region src/css/stroke-style.d.ts
|
|
131
|
+
/** Convert strokeStyle value to CSS */
|
|
132
|
+
declare function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): string;
|
|
133
|
+
//# sourceMappingURL=stroke-style.d.ts.map
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/css/transition.d.ts
|
|
136
|
+
/** Convert transition value to shorthand */
|
|
137
|
+
declare function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions): string;
|
|
138
|
+
//# sourceMappingURL=transition.d.ts.map
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/css/typography.d.ts
|
|
141
|
+
/** Convert typography value to multiple CSS values */
|
|
142
|
+
declare function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions): Record<string, string>;
|
|
143
|
+
//# sourceMappingURL=typography.d.ts.map
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/css/index.d.ts
|
|
147
|
+
/** Main CSS Transform */
|
|
148
|
+
declare function transformCSSValue<T extends TokenNormalized = TokenNormalized>(token: T, {
|
|
149
|
+
mode,
|
|
150
|
+
...options
|
|
151
|
+
}: {
|
|
152
|
+
mode: keyof T['mode'];
|
|
153
|
+
} & TransformCSSValueOptions): string | WideGamutColorValue | Record<string, string> | undefined;
|
|
154
|
+
//# sourceMappingURL=index.d.ts.map
|
|
155
|
+
|
|
156
|
+
//#endregion
|
|
157
|
+
export { IDGenerator, MakeCSSVarOptions, WideGamutColorValue, defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
|
|
158
|
+
//# sourceMappingURL=css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.d.ts","names":[],"sources":["../src/css/lib.ts","../src/css/css-types.ts","../src/css/color.ts","../src/css/boolean.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/dimension.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/stroke-style.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/css.js
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from "./string-BZ5Le1WD.js";
|
|
2
|
+
import { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHsv, modeHwb, modeLab, modeLch, modeLrgb, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, toGamut, useMode } from "culori/fn";
|
|
3
|
+
import { displayable as displayable$1 } from "culori";
|
|
4
|
+
|
|
5
|
+
//#region src/css/lib.ts
|
|
6
|
+
function defaultAliasTransform(token) {
|
|
7
|
+
if (!token) throw new Error("Undefined token");
|
|
8
|
+
return `var(${makeCSSVar(token.id)})`;
|
|
9
|
+
}
|
|
10
|
+
/** Generate shorthand CSS for select token types */
|
|
11
|
+
function generateShorthand({ $type, localID }) {
|
|
12
|
+
switch ($type) {
|
|
13
|
+
case "transition": return [
|
|
14
|
+
"duration",
|
|
15
|
+
"delay",
|
|
16
|
+
"timing-function"
|
|
17
|
+
].map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true })).join(" ");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const CSS_VAR_RE = /(?:(\p{Uppercase_Letter}?[\p{Lowercase_Letter}\p{Number}]+|[\p{Uppercase_Letter}\p{Number}]+|[\u{80}-\u{10FFFF}\p{Number}]+)|.)/u;
|
|
21
|
+
/**
|
|
22
|
+
* Generate a valid CSS variable from any string
|
|
23
|
+
* Code by @dfrankland
|
|
24
|
+
*/
|
|
25
|
+
function makeCSSVar(name, { prefix, wrapVar = false } = {}) {
|
|
26
|
+
if (typeof name !== "string") throw new Error(`makeCSSVar() Expected string, received ${name}`);
|
|
27
|
+
let property = name.split(CSS_VAR_RE).filter(Boolean).join("-");
|
|
28
|
+
if (prefix && !property.startsWith(`${prefix}-`)) property = `${prefix}-${property}`;
|
|
29
|
+
const finalProperty = `--${property}`.toLocaleLowerCase();
|
|
30
|
+
return wrapVar ? `var(${finalProperty})` : finalProperty;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/css/boolean.ts
|
|
35
|
+
/** Convert boolean value to CSS string */
|
|
36
|
+
function transformBoolean(token, { tokensSet, transformAlias = defaultAliasTransform }) {
|
|
37
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
38
|
+
return token.$value === true ? "1" : "0";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/css/color.ts
|
|
43
|
+
/** Convert color value to CSS string */
|
|
44
|
+
function transformColor(token, options) {
|
|
45
|
+
const { transformAlias = defaultAliasTransform, tokensSet } = options;
|
|
46
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
47
|
+
const { colorSpace, components, alpha = 1 } = typeof token.$value === "string" ? parseColor(token.$value) : token.$value;
|
|
48
|
+
const color = tokenToCulori({
|
|
49
|
+
colorSpace,
|
|
50
|
+
components,
|
|
51
|
+
alpha
|
|
52
|
+
});
|
|
53
|
+
if (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);
|
|
54
|
+
let formatColor = formatCss;
|
|
55
|
+
if (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;
|
|
56
|
+
return displayable(color) ? formatColor(color) : downsample({
|
|
57
|
+
colorSpace,
|
|
58
|
+
components,
|
|
59
|
+
alpha
|
|
60
|
+
}, color);
|
|
61
|
+
}
|
|
62
|
+
const converters = {
|
|
63
|
+
a98: useMode(modeA98),
|
|
64
|
+
hsl: useMode(modeHsl),
|
|
65
|
+
hsv: useMode(modeHsv),
|
|
66
|
+
hwb: useMode(modeHwb),
|
|
67
|
+
lab: useMode(modeLab),
|
|
68
|
+
lch: useMode(modeLch),
|
|
69
|
+
lrgb: useMode(modeLrgb),
|
|
70
|
+
oklab: useMode(modeOklab),
|
|
71
|
+
oklch: useMode(modeOklch),
|
|
72
|
+
p3: useMode(modeP3),
|
|
73
|
+
prophoto: useMode(modeProphoto),
|
|
74
|
+
rec2020: useMode(modeRec2020),
|
|
75
|
+
rgb: useMode(modeRgb),
|
|
76
|
+
xyz50: useMode(modeXyz50),
|
|
77
|
+
xyz65: useMode(modeXyz65)
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Downsample color to sRGB/Display P3/Rec2020 colorspaces.
|
|
81
|
+
* Note: because Culori tends to convert to RGB color spaces to ensure the operation,
|
|
82
|
+
* we have to do an additional step of converting back. So we’re not really converting;
|
|
83
|
+
* we’re just preserving the original colorspace.
|
|
84
|
+
*/
|
|
85
|
+
function downsample($value, culoriColor) {
|
|
86
|
+
const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || "oklab";
|
|
87
|
+
const converter = converters[conversionSpace];
|
|
88
|
+
return {
|
|
89
|
+
".": formatCss(culoriColor),
|
|
90
|
+
srgb: formatCss(converter(toGamut("rgb", conversionSpace)(culoriColor))),
|
|
91
|
+
p3: formatCss(converter(toGamut("p3", conversionSpace)(culoriColor))),
|
|
92
|
+
rec2020: formatCss(converter(toGamut("rec2020", conversionSpace)(culoriColor)))
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/css/dimension.ts
|
|
98
|
+
/** Convert dimension value to CSS */
|
|
99
|
+
function transformDimension(token, options) {
|
|
100
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
101
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
102
|
+
return token.$value.value === 0 ? "0" : `${token.$value.value}${token.$value.unit}`;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region src/css/stroke-style.ts
|
|
107
|
+
/** Convert strokeStyle value to CSS */
|
|
108
|
+
function transformStrokeStyle(token, options) {
|
|
109
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
110
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
111
|
+
return typeof token.$value === "string" ? token.$value : "dashed";
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/css/border.ts
|
|
116
|
+
/** Convert border value to multiple CSS values */
|
|
117
|
+
function transformBorder(token, options) {
|
|
118
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
119
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
120
|
+
const width = token.partialAliasOf?.width ? transformAlias(tokensSet[token.partialAliasOf.width]) : transformDimension({ $value: token.$value.width }, options);
|
|
121
|
+
const color = token.partialAliasOf?.color ? transformAlias(tokensSet[token.partialAliasOf.color]) : transformColor({ $value: token.$value.color }, options);
|
|
122
|
+
const style = token.partialAliasOf?.style ? transformAlias(tokensSet[token.partialAliasOf.style]) : transformStrokeStyle({ $value: token.$value.style }, options);
|
|
123
|
+
const formatBorder = (colorKey) => [
|
|
124
|
+
width,
|
|
125
|
+
style,
|
|
126
|
+
typeof color === "string" ? color : color[colorKey]
|
|
127
|
+
].join(" ");
|
|
128
|
+
return typeof color === "string" || displayable$1(color.p3) ? formatBorder(".") : {
|
|
129
|
+
".": formatBorder("."),
|
|
130
|
+
srgb: formatBorder("srgb"),
|
|
131
|
+
p3: formatBorder("p3"),
|
|
132
|
+
rec2020: formatBorder("rec2020")
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
//#endregion
|
|
137
|
+
//#region src/css/cubic-bezier.ts
|
|
138
|
+
/** Convert cubicBezier value to CSS */
|
|
139
|
+
function transformCubicBezier(token, options) {
|
|
140
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
141
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
142
|
+
return `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(", ")})`;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/css/duration.ts
|
|
147
|
+
/** Convert duration value to CSS */
|
|
148
|
+
function transformDuration(token, options) {
|
|
149
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
150
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
151
|
+
return `${token.$value.value}${token.$value.unit}`;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
//#endregion
|
|
155
|
+
//#region src/css/font-family.ts
|
|
156
|
+
const FONT_NAME_KEYWORD = /^[a-z-]+$/;
|
|
157
|
+
function transformFontFamily(token, options) {
|
|
158
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
159
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
160
|
+
return token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `"${fontName}"`).join(", ");
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/css/font-weight.ts
|
|
165
|
+
/** Convert fontWeight value to CSS */
|
|
166
|
+
function transformFontWeight(token, options) {
|
|
167
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
168
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
169
|
+
return String(token.$value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
//#endregion
|
|
173
|
+
//#region src/css/gradient.ts
|
|
174
|
+
/** Convert gradient value to CSS */
|
|
175
|
+
function transformGradient(token, options) {
|
|
176
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
177
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
178
|
+
let isHDR = false;
|
|
179
|
+
const colors = [];
|
|
180
|
+
const positions = [];
|
|
181
|
+
for (let i = 0; i < token.$value.length; i++) {
|
|
182
|
+
const { color, position } = token.$value[i];
|
|
183
|
+
const colorValue = token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: color }, options);
|
|
184
|
+
if (typeof colorValue !== "string") isHDR = true;
|
|
185
|
+
colors.push(colorValue);
|
|
186
|
+
positions.push(token.partialAliasOf?.[i]?.position ? transformAlias(tokensSet[token.partialAliasOf[i].position]) : `${100 * position}%`);
|
|
187
|
+
}
|
|
188
|
+
function formatStop(i, colorKey = ".") {
|
|
189
|
+
return `${typeof colors[i] === "string" ? colors[i] : colors[i][colorKey]} ${positions[i]}`;
|
|
190
|
+
}
|
|
191
|
+
return !isHDR ? token.$value.map((_, i) => formatStop(i, positions[i])).join(", ") : {
|
|
192
|
+
".": token.$value.map((_, i) => formatStop(i, ".")).join(", "),
|
|
193
|
+
srgb: token.$value.map((_, i) => formatStop(i, "srgb")).join(", "),
|
|
194
|
+
p3: token.$value.map((_, i) => formatStop(i, "p3")).join(", "),
|
|
195
|
+
rec2020: token.$value.map((_, i) => formatStop(i, "rec2020")).join(", ")
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
//#endregion
|
|
200
|
+
//#region src/css/link.ts
|
|
201
|
+
/** Convert link value to CSS */
|
|
202
|
+
function transformLink(token, options) {
|
|
203
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
204
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
205
|
+
return `url("${token.$value}")`;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
//#endregion
|
|
209
|
+
//#region src/css/number.ts
|
|
210
|
+
/** Convert number value to CSS */
|
|
211
|
+
function transformNumber(token, options) {
|
|
212
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
213
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
214
|
+
return String(token.$value);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
//#endregion
|
|
218
|
+
//#region src/css/shadow.ts
|
|
219
|
+
/** Convert shadow subvalue to CSS */
|
|
220
|
+
function transformShadowLayer(value, options) {
|
|
221
|
+
const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;
|
|
222
|
+
const offsetX = partialAliasOf?.offsetX ? transformAlias(tokensSet[partialAliasOf.offsetX]) : transformDimension({ $value: value.offsetX }, options);
|
|
223
|
+
const offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);
|
|
224
|
+
const blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);
|
|
225
|
+
const spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);
|
|
226
|
+
const inset = value?.inset === true ? "inset" : void 0;
|
|
227
|
+
return [
|
|
228
|
+
inset,
|
|
229
|
+
offsetX,
|
|
230
|
+
offsetY,
|
|
231
|
+
blur,
|
|
232
|
+
spread,
|
|
233
|
+
colorValue
|
|
234
|
+
].filter(Boolean).join(" ");
|
|
235
|
+
}
|
|
236
|
+
/** Convert shadow value to CSS */
|
|
237
|
+
function transformShadow(token, options) {
|
|
238
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
239
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
240
|
+
const colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));
|
|
241
|
+
const isHDR = colors.some((c) => typeof c === "object");
|
|
242
|
+
const formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {
|
|
243
|
+
tokensSet,
|
|
244
|
+
colorValue: typeof colors[i] === "string" ? colors[i] : colors[i][colorKey],
|
|
245
|
+
partialAliasOf: token.partialAliasOf?.[i],
|
|
246
|
+
transformAlias
|
|
247
|
+
})).join(", ");
|
|
248
|
+
return !isHDR ? formatShadow(".") : {
|
|
249
|
+
".": formatShadow("."),
|
|
250
|
+
srgb: formatShadow("srgb"),
|
|
251
|
+
p3: formatShadow("p3"),
|
|
252
|
+
rec2020: formatShadow("rec2020")
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
//#endregion
|
|
257
|
+
//#region src/css/string.ts
|
|
258
|
+
/** Convert string value to CSS */
|
|
259
|
+
function transformString(token, options) {
|
|
260
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
261
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
262
|
+
return String(token.$value);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/css/transition.ts
|
|
267
|
+
/** Convert transition value to shorthand */
|
|
268
|
+
function transformTransition(token, options) {
|
|
269
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
270
|
+
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
271
|
+
const duration = token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options);
|
|
272
|
+
const delay = token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options);
|
|
273
|
+
const timingFunction = token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options);
|
|
274
|
+
return `${duration} ${delay} ${timingFunction}`;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
//#endregion
|
|
278
|
+
//#region src/css/typography.ts
|
|
279
|
+
/** Convert typography value to multiple CSS values */
|
|
280
|
+
function transformTypography(token, options) {
|
|
281
|
+
const { tokensSet, transformAlias = defaultAliasTransform } = options;
|
|
282
|
+
const output = {};
|
|
283
|
+
for (const [property, subvalue] of Object.entries(token.$value)) {
|
|
284
|
+
let transformedValue;
|
|
285
|
+
const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];
|
|
286
|
+
if (aliasedID) {
|
|
287
|
+
const resolvedToken = tokensSet[aliasedID];
|
|
288
|
+
transformedValue = transformAlias(resolvedToken.$type === "typography" ? { id: `${aliasedID}-${property}` } : resolvedToken);
|
|
289
|
+
} else switch (property) {
|
|
290
|
+
case "fontFamily": {
|
|
291
|
+
transformedValue = transformFontFamily({ $value: subvalue }, options);
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
case "fontSize":
|
|
295
|
+
case "letterSpacing": {
|
|
296
|
+
transformedValue = transformDimension({ $value: subvalue }, options);
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
case "fontWeight": {
|
|
300
|
+
transformedValue = transformFontWeight({ $value: subvalue }, options);
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
case "lineHeight": {
|
|
304
|
+
if (typeof subvalue === "number") transformedValue = transformNumber({ $value: subvalue }, options);
|
|
305
|
+
else transformedValue = transformDimension({ $value: subvalue }, options);
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
default: {
|
|
309
|
+
transformedValue = transformString({ $value: subvalue }, options);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
output[kebabCase(property)] = transformedValue;
|
|
314
|
+
}
|
|
315
|
+
return output;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region src/css/index.ts
|
|
320
|
+
/** Main CSS Transform */
|
|
321
|
+
function transformCSSValue(token, { mode,...options }) {
|
|
322
|
+
const selectedMode = token.mode[mode];
|
|
323
|
+
if (!selectedMode) return;
|
|
324
|
+
const tokenWithModeValue = {
|
|
325
|
+
id: token.id,
|
|
326
|
+
$type: token.$type,
|
|
327
|
+
...selectedMode
|
|
328
|
+
};
|
|
329
|
+
switch (tokenWithModeValue.$type) {
|
|
330
|
+
case "boolean": return transformBoolean(tokenWithModeValue, options);
|
|
331
|
+
case "border": return transformBorder(tokenWithModeValue, options);
|
|
332
|
+
case "color": return transformColor(tokenWithModeValue, options);
|
|
333
|
+
case "cubicBezier": return transformCubicBezier(tokenWithModeValue, options);
|
|
334
|
+
case "dimension": return transformDimension(tokenWithModeValue, options);
|
|
335
|
+
case "duration": return transformDuration(tokenWithModeValue, options);
|
|
336
|
+
case "fontFamily": return transformFontFamily(tokenWithModeValue, options);
|
|
337
|
+
case "fontWeight": return transformFontWeight(tokenWithModeValue, options);
|
|
338
|
+
case "gradient": return transformGradient(tokenWithModeValue, options);
|
|
339
|
+
case "link": return transformLink(tokenWithModeValue, options);
|
|
340
|
+
case "number": return transformNumber(tokenWithModeValue, options);
|
|
341
|
+
case "shadow": return transformShadow(tokenWithModeValue, options);
|
|
342
|
+
case "string": return transformString(tokenWithModeValue, options);
|
|
343
|
+
case "strokeStyle": return transformStrokeStyle(tokenWithModeValue, options);
|
|
344
|
+
case "transition": return transformTransition(tokenWithModeValue, options);
|
|
345
|
+
case "typography": return transformTypography(tokenWithModeValue, options);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
//#endregion
|
|
350
|
+
export { defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
|
|
351
|
+
//# sourceMappingURL=css.js.map
|
package/dist/css.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","names":["token: TokenNormalized","name: string","token: BooleanTokenNormalized","token: ColorTokenNormalized","options: TransformCSSValueOptions","formatColor: (color: Color) => string","converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color>","$value: ColorTokenNormalized['$value']","culoriColor: Color","token: DimensionTokenNormalized","options: TransformCSSValueOptions","token: StrokeStyleTokenNormalized","options: TransformCSSValueOptions","token: BorderTokenNormalized","options: TransformCSSValueOptions","colorKey: string","token: CubicBezierTokenNormalized","options: TransformCSSValueOptions","token: DurationTokenNormalized","options: TransformCSSValueOptions","token: FontFamilyTokenNormalized","options: TransformCSSValueOptions","token: FontWeightTokenNormalized","options: TransformCSSValueOptions","token: GradientTokenNormalized","options: TransformCSSValueOptions","colors: (string | WideGamutColorValue)[]","positions: string[]","i: number","token: LinkTokenNormalized","options: TransformCSSValueOptions","token: NumberTokenNormalized","options: TransformCSSValueOptions","value: ShadowValueNormalized","options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n }","token: ShadowTokenNormalized","options: TransformCSSValueOptions","colorKey: string","token: StringTokenNormalized","options: TransformCSSValueOptions","token: TransitionTokenNormalized","options: TransformCSSValueOptions","token: TypographyTokenNormalized","options: TransformCSSValueOptions","output: Record<string, string>","transformedValue: string","token: T","tokenWithModeValue: T"],"sources":["../src/css/lib.ts","../src/css/boolean.ts","../src/css/color.ts","../src/css/dimension.ts","../src/css/stroke-style.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\n/** Function that generates a var(…) statement */\nexport type IDGenerator<T = TokenNormalized> = (token: T) => string;\n\nexport function defaultAliasTransform(token: TokenNormalized) {\n if (!token) {\n throw new Error('Undefined token');\n }\n return `var(${makeCSSVar(token.id)})`;\n}\n\n/** Generate shorthand CSS for select token types */\nexport function generateShorthand({ $type, localID }: { $type: string; localID: string }): string | undefined {\n switch ($type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n // note: \"typography\" is not set in shorthand because it can often unset values unintentionally.\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n }\n}\n\nconst CSS_VAR_RE =\n /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n\nexport interface MakeCSSVarOptions {\n /** Prefix with string */\n prefix?: string;\n /**\n * Wrap with `var(…)`\n * @default false\n */\n wrapVar?: boolean;\n}\n\n/**\n * Generate a valid CSS variable from any string\n * Code by @dfrankland\n */\nexport function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {\n if (typeof name !== 'string') {\n throw new Error(`makeCSSVar() Expected string, received ${name}`);\n }\n\n let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');\n if (prefix && !property.startsWith(`${prefix}-`)) {\n property = `${prefix}-${property}`;\n }\n const finalProperty = `--${property}`.toLocaleLowerCase();\n return wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n","import type { BooleanTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert boolean value to CSS string */\nexport function transformBoolean(\n token: BooleanTokenNormalized,\n { tokensSet, transformAlias = defaultAliasTransform }: TransformCSSValueOptions,\n): string {\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import {\n type Color,\n displayable,\n formatCss,\n formatHex,\n formatHex8,\n modeA98,\n modeHsl,\n modeHsv,\n modeHwb,\n modeLab,\n modeLch,\n modeLrgb,\n modeOklab,\n modeOklch,\n modeP3,\n modeProphoto,\n modeRec2020,\n modeRgb,\n modeXyz50,\n modeXyz65,\n toGamut,\n useMode,\n} from 'culori/fn';\nimport { CSS_TO_CULORI, type CULORI_TO_CSS, parseColor, tokenToCulori } from '../color.js';\nimport type { ColorTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nexport type WideGamutColorValue = {\n '.': string;\n srgb: string;\n p3: string;\n rec2020: string;\n};\n\n/** Convert color value to CSS string */\nexport function transformColor(\n token: ColorTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToCulori({ colorSpace, components, alpha });\n\n if (!color) {\n throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n }\n\n let formatColor: (color: Color) => string = formatCss;\n if (options.color?.legacyHex) {\n formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n }\n\n return displayable(color) ? formatColor(color) : downsample({ colorSpace, components, alpha }, color);\n}\n\nconst converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color> = {\n a98: useMode(modeA98),\n hsl: useMode(modeHsl),\n hsv: useMode(modeHsv),\n hwb: useMode(modeHwb),\n lab: useMode(modeLab),\n lch: useMode(modeLch),\n lrgb: useMode(modeLrgb),\n oklab: useMode(modeOklab),\n oklch: useMode(modeOklch),\n p3: useMode(modeP3),\n prophoto: useMode(modeProphoto),\n rec2020: useMode(modeRec2020),\n rgb: useMode(modeRgb),\n xyz50: useMode(modeXyz50),\n xyz65: useMode(modeXyz65),\n};\n\n/**\n * Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n * Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n * we have to do an additional step of converting back. So we’re not really converting;\n * we’re just preserving the original colorspace.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], culoriColor: Color) {\n const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || 'oklab';\n const converter = converters[conversionSpace];\n return {\n '.': formatCss(culoriColor),\n srgb: formatCss(converter(toGamut('rgb', conversionSpace)(culoriColor))),\n p3: formatCss(converter(toGamut('p3', conversionSpace)(culoriColor))),\n rec2020: formatCss(converter(toGamut('rec2020', conversionSpace)(culoriColor))),\n };\n}\n","import type { DimensionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert dimension value to CSS */\nexport function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return token.$value.value === 0 ? '0' : `${token.$value.value}${token.$value.unit}`;\n}\n","import type { StrokeStyleTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert strokeStyle value to CSS */\nexport function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return typeof token.$value === 'string' ? token.$value : 'dashed'; // CSS doesn’t have `dash-array`; it’s just \"dashed\"\n}\n","import { displayable } from 'culori';\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformStrokeStyle } from './stroke-style.js';\n\n/** Convert border value to multiple CSS values */\nexport function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const width = token.partialAliasOf?.width\n ? transformAlias(tokensSet[token.partialAliasOf.width]!)\n : transformDimension({ $value: token.$value.width } as DimensionTokenNormalized, options);\n const color = token.partialAliasOf?.color\n ? transformAlias(tokensSet[token.partialAliasOf.color]!)\n : transformColor({ $value: token.$value.color } as ColorTokenNormalized, options);\n const style = token.partialAliasOf?.style\n ? transformAlias(tokensSet[token.partialAliasOf.style]!)\n : transformStrokeStyle({ $value: token.$value.style } as StrokeStyleTokenNormalized, options);\n\n const formatBorder = (colorKey: string) =>\n [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');\n\n return typeof color === 'string' || displayable(color.p3)\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert cubicBezier value to CSS */\nexport function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `cubic-bezier(${token.$value\n .map((v, i) => (token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]!) : v))\n .join(', ')})`;\n}\n","import type { DurationTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert duration value to CSS */\nexport function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return `${token.$value.value}${token.$value.unit}`;\n}\n","import type { FontFamilyTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\n\nexport function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value.map((fontName) => (FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`)).join(', ');\n}\n","import type { FontWeightTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert fontWeight value to CSS */\nexport function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type { ColorTokenNormalized, GradientTokenNormalized } from '../types.js';\nimport { type WideGamutColorValue, transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert gradient value to CSS */\nexport function transformGradient(\n token: GradientTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n let isHDR = false;\n\n const colors: (string | WideGamutColorValue)[] = [];\n const positions: string[] = [];\n\n for (let i = 0; i < token.$value.length; i++) {\n const { color, position } = token.$value[i]!;\n const colorValue = token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: color } as ColorTokenNormalized, options);\n if (typeof colorValue !== 'string') {\n isHDR = true;\n }\n colors.push(colorValue);\n positions.push(\n token.partialAliasOf?.[i]?.position\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.position!]!)\n : `${100 * position}%`,\n );\n }\n\n function formatStop(i: number, colorKey = '.') {\n return `${typeof colors[i] === 'string' ? colors[i] : colors[i]![colorKey as keyof (typeof colors)[number]]} ${positions[i]}`;\n }\n\n return !isHDR\n ? token.$value.map((_, i) => formatStop(i, positions[i]!)).join(', ')\n : {\n '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '),\n srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '),\n p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '),\n rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '),\n };\n}\n","import type { LinkTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert link value to CSS */\nexport function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `url(\"${token.$value}\")`;\n}\n","import type { NumberTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert number value to CSS */\nexport function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type {\n ColorTokenNormalized,\n DimensionTokenNormalized,\n ShadowTokenNormalized,\n ShadowValueNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert shadow subvalue to CSS */\nexport function transformShadowLayer(\n value: ShadowValueNormalized,\n options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n },\n): string | Record<string, string> {\n const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n const offsetX = partialAliasOf?.offsetX\n ? transformAlias(tokensSet[partialAliasOf.offsetX]!)\n : transformDimension({ $value: value.offsetX } as DimensionTokenNormalized, options);\n const offsetY = partialAliasOf?.offsetY\n ? transformAlias(tokensSet[partialAliasOf.offsetY]!)\n : transformDimension({ $value: value.offsetY } as DimensionTokenNormalized, options);\n const blur = partialAliasOf?.blur\n ? transformAlias(tokensSet[partialAliasOf.blur]!)\n : transformDimension({ $value: value.blur } as DimensionTokenNormalized, options);\n const spread = partialAliasOf?.spread\n ? transformAlias(tokensSet[partialAliasOf.spread]!)\n : transformDimension({ $value: value.spread } as DimensionTokenNormalized, options);\n const inset = value?.inset === true ? 'inset' : undefined;\n\n return [inset, offsetX, offsetY, blur, spread, colorValue].filter(Boolean).join(' ');\n}\n\n/** Convert shadow value to CSS */\nexport function transformShadow(\n token: ShadowTokenNormalized,\n options: TransformCSSValueOptions,\n): string | Record<string, string> {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n const colors = token.$value.map((v, i) =>\n token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: v.color } as ColorTokenNormalized, options),\n );\n const isHDR = colors.some((c) => typeof c === 'object');\n\n const formatShadow = (colorKey: string) =>\n token.$value\n .map((v, i) =>\n transformShadowLayer(v, {\n tokensSet,\n colorValue:\n typeof colors[i] === 'string'\n ? (colors[i] as string)\n : colors[i]![colorKey as keyof (typeof colors)[number]]!,\n partialAliasOf: token.partialAliasOf?.[i],\n transformAlias,\n }),\n )\n .join(', ');\n\n return !isHDR\n ? formatShadow('.')\n : {\n '.': formatShadow('.'),\n srgb: formatShadow('srgb'),\n p3: formatShadow('p3'),\n rec2020: formatShadow('rec2020'),\n };\n}\n","import type { StringTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert string value to CSS */\nexport function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n // this seems like a useless function—because it is—but this is a placeholder\n // that can handle unexpected values in the future should any arise\n return String(token.$value);\n}\n","import type { CubicBezierTokenNormalized, DurationTokenNormalized, TransitionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDuration } from './duration.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert transition value to shorthand */\nexport function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const duration = token.partialAliasOf?.duration\n ? transformAlias(tokensSet[token.partialAliasOf.duration]!)\n : transformDuration({ $value: token.$value.duration } as DurationTokenNormalized, options);\n const delay = token.partialAliasOf?.delay\n ? transformAlias(tokensSet[token.partialAliasOf.delay]!)\n : transformDuration({ $value: token.$value.delay } as DurationTokenNormalized, options);\n const timingFunction = token.partialAliasOf?.timingFunction\n ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]!)\n : transformCubicBezier({ $value: token.$value.timingFunction } as CubicBezierTokenNormalized, options);\n\n return `${duration} ${delay} ${timingFunction}`;\n}\n","import { kebabCase } from '../string.js';\nimport type {\n DimensionTokenNormalized,\n FontFamilyTokenNormalized,\n FontWeightTokenNormalized,\n NumberTokenNormalized,\n StringTokenNormalized,\n TokenNormalized,\n TypographyTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformNumber } from './number.js';\nimport { transformString } from './string.js';\n\n/** Convert typography value to multiple CSS values */\nexport function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n const output: Record<string, string> = {};\n for (const [property, subvalue] of Object.entries(token.$value)) {\n let transformedValue: string;\n const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n if (aliasedID) {\n const resolvedToken = tokensSet[aliasedID] as TypographyTokenNormalized;\n transformedValue = transformAlias(\n // if resolving against a typography token, inject the property as well\n resolvedToken.$type === 'typography' ? ({ id: `${aliasedID}-${property}` } as TokenNormalized) : resolvedToken,\n );\n } else {\n switch (property) {\n case 'fontFamily': {\n transformedValue = transformFontFamily({ $value: subvalue } as FontFamilyTokenNormalized, options);\n break;\n }\n case 'fontSize':\n case 'letterSpacing': {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n break;\n }\n case 'fontWeight': {\n transformedValue = transformFontWeight({ $value: subvalue } as FontWeightTokenNormalized, options);\n break;\n }\n case 'lineHeight': {\n if (typeof subvalue === 'number') {\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n }\n break;\n }\n default: {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n break;\n }\n }\n }\n output[kebabCase(property)] = transformedValue;\n }\n return output;\n}\n","import type { TokenNormalized } from '../types.js';\nimport { transformBoolean } from './boolean.js';\nimport { transformBorder } from './border.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDimension } from './dimension.js';\nimport { transformDuration } from './duration.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { transformGradient } from './gradient.js';\nimport { transformLink } from './link.js';\nimport { transformNumber } from './number.js';\nimport { transformShadow } from './shadow.js';\nimport { transformString } from './string.js';\nimport { transformStrokeStyle } from './stroke-style.js';\nimport { transformTransition } from './transition.js';\nimport { transformTypography } from './typography.js';\n\nexport * from './boolean.js';\nexport * from './border.js';\nexport * from './color.js';\nexport * from './cubic-bezier.js';\nexport * from './dimension.js';\nexport * from './duration.js';\nexport * from './font-family.js';\nexport * from './font-weight.js';\nexport * from './gradient.js';\nexport * from './lib.js';\nexport * from './link.js';\nexport * from './number.js';\nexport * from './shadow.js';\nexport * from './string.js';\nexport * from './stroke-style.js';\nexport * from './transition.js';\nexport * from './typography.js';\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n { mode, ...options }: { mode: keyof T['mode'] } & TransformCSSValueOptions,\n) {\n const selectedMode = token.mode[mode as keyof typeof token.mode];\n if (!selectedMode) {\n return;\n }\n const tokenWithModeValue: T = {\n id: token.id,\n $type: token.$type,\n // note: do NOT carry over aliasOf/partialAliasOf as that will result in incorrect values\n ...selectedMode,\n } as any;\n switch (tokenWithModeValue.$type) {\n case 'boolean': {\n return transformBoolean(tokenWithModeValue, options);\n }\n case 'border': {\n return transformBorder(tokenWithModeValue, options);\n }\n case 'color': {\n return transformColor(tokenWithModeValue, options);\n }\n case 'cubicBezier': {\n return transformCubicBezier(tokenWithModeValue, options);\n }\n case 'dimension': {\n return transformDimension(tokenWithModeValue, options);\n }\n case 'duration': {\n return transformDuration(tokenWithModeValue, options);\n }\n case 'fontFamily': {\n return transformFontFamily(tokenWithModeValue, options);\n }\n case 'fontWeight': {\n return transformFontWeight(tokenWithModeValue, options);\n }\n case 'gradient': {\n return transformGradient(tokenWithModeValue, options);\n }\n case 'link': {\n return transformLink(tokenWithModeValue, options);\n }\n case 'number': {\n return transformNumber(tokenWithModeValue, options);\n }\n case 'shadow': {\n return transformShadow(tokenWithModeValue, options);\n }\n case 'string': {\n return transformString(tokenWithModeValue, options);\n }\n case 'strokeStyle': {\n return transformStrokeStyle(tokenWithModeValue, options);\n }\n case 'transition': {\n return transformTransition(tokenWithModeValue, options);\n }\n case 'typography': {\n return transformTypography(tokenWithModeValue, options);\n }\n }\n}\n"],"mappings":"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"}
|