@terrazzo/token-tools 2.0.0-beta.5 → 2.0.0-rc.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/dist/css.d.ts +27 -35
- package/dist/css.d.ts.map +1 -1
- package/dist/css.js +22 -20
- package/dist/css.js.map +1 -1
- package/package.json +1 -1
package/dist/css.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { F as GradientTokenNormalized, Q as ShadowValueNormalized, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, X as ShadowTokenNormalized, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, g as CubicBezierTokenNormalized, i as BooleanTokenNormalized, k as FontWeightTokenNormalized, lt as TokenNormalized, q as NumberTokenNormalized, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, vt as TransitionTokenNormalized, y as DimensionTokenNormalized } from "./types-Cwbw-_yP.js";
|
|
2
|
-
import "./color-DoUasWha.js";
|
|
3
|
-
|
|
1
|
+
import { F as GradientTokenNormalized, Q as ShadowValueNormalized, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, X as ShadowTokenNormalized, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, ft as TokenTransformed, g as CubicBezierTokenNormalized, ht as TokenTransformedSingleValue, i as BooleanTokenNormalized, k as FontWeightTokenNormalized, lt as TokenNormalized, mt as TokenTransformedMultiValue, q as NumberTokenNormalized, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, vt as TransitionTokenNormalized, y as DimensionTokenNormalized } from "./types-Cwbw-_yP.js";
|
|
4
2
|
//#region src/css/lib.d.ts
|
|
5
3
|
/** Function that generates a var(…) statement */
|
|
6
4
|
type IDGenerator<T = TokenNormalized> = (token: T) => string;
|
|
@@ -35,6 +33,8 @@ declare function makeCSSVar(name: string, {
|
|
|
35
33
|
interface TransformCSSValueOptions {
|
|
36
34
|
/** Complete set of tokens (needed to resolve full and partial aliases) */
|
|
37
35
|
tokensSet: TokenNormalizedSet;
|
|
36
|
+
/** Values of the current permutation */
|
|
37
|
+
permutation: Record<string, string>;
|
|
38
38
|
transformAlias?: IDGenerator;
|
|
39
39
|
/** Options for color tokens */
|
|
40
40
|
color?: {
|
|
@@ -47,6 +47,14 @@ interface TransformCSSValueOptions {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
//#endregion
|
|
50
|
+
//#region src/css/boolean.d.ts
|
|
51
|
+
/** Convert boolean value to CSS string */
|
|
52
|
+
declare function transformBoolean(token: BooleanTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/css/border.d.ts
|
|
55
|
+
/** Convert border value to multiple CSS values */
|
|
56
|
+
declare function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions): TokenTransformed['value'];
|
|
57
|
+
//#endregion
|
|
50
58
|
//#region src/css/color.d.ts
|
|
51
59
|
type WideGamutColorValue = {
|
|
52
60
|
'.': string;
|
|
@@ -55,7 +63,7 @@ type WideGamutColorValue = {
|
|
|
55
63
|
rec2020: string;
|
|
56
64
|
};
|
|
57
65
|
/** Convert color value to CSS string */
|
|
58
|
-
declare function transformColor(token: ColorTokenNormalized, options: TransformCSSValueOptions):
|
|
66
|
+
declare function transformColor(token: ColorTokenNormalized, options: TransformCSSValueOptions): TokenTransformed['value'];
|
|
59
67
|
declare const DEPTH_ROUNDING: {
|
|
60
68
|
24: number;
|
|
61
69
|
30: number;
|
|
@@ -64,52 +72,36 @@ declare const DEPTH_ROUNDING: {
|
|
|
64
72
|
};
|
|
65
73
|
type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';
|
|
66
74
|
//#endregion
|
|
67
|
-
//#region src/css/boolean.d.ts
|
|
68
|
-
/** Convert boolean value to CSS string */
|
|
69
|
-
declare function transformBoolean(token: BooleanTokenNormalized, {
|
|
70
|
-
tokensSet,
|
|
71
|
-
transformAlias
|
|
72
|
-
}: TransformCSSValueOptions): string;
|
|
73
|
-
//#endregion
|
|
74
|
-
//#region src/css/border.d.ts
|
|
75
|
-
/** Convert border value to multiple CSS values */
|
|
76
|
-
declare function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions): string | {
|
|
77
|
-
'.': string;
|
|
78
|
-
srgb: string;
|
|
79
|
-
p3: string;
|
|
80
|
-
rec2020: string;
|
|
81
|
-
};
|
|
82
|
-
//#endregion
|
|
83
75
|
//#region src/css/cubic-bezier.d.ts
|
|
84
76
|
/** Convert cubicBezier value to CSS */
|
|
85
|
-
declare function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions):
|
|
77
|
+
declare function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
86
78
|
//#endregion
|
|
87
79
|
//#region src/css/dimension.d.ts
|
|
88
80
|
/** Convert dimension value to CSS */
|
|
89
|
-
declare function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions):
|
|
81
|
+
declare function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
90
82
|
//#endregion
|
|
91
83
|
//#region src/css/duration.d.ts
|
|
92
84
|
/** Convert duration value to CSS */
|
|
93
|
-
declare function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions):
|
|
85
|
+
declare function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
94
86
|
//#endregion
|
|
95
87
|
//#region src/css/font-family.d.ts
|
|
96
|
-
declare function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions):
|
|
88
|
+
declare function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
97
89
|
//#endregion
|
|
98
90
|
//#region src/css/font-weight.d.ts
|
|
99
91
|
/** Convert fontWeight value to CSS */
|
|
100
|
-
declare function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions):
|
|
92
|
+
declare function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
101
93
|
//#endregion
|
|
102
94
|
//#region src/css/gradient.d.ts
|
|
103
95
|
/** Convert gradient value to CSS */
|
|
104
|
-
declare function transformGradient(token: GradientTokenNormalized, options: TransformCSSValueOptions):
|
|
96
|
+
declare function transformGradient(token: GradientTokenNormalized, options: TransformCSSValueOptions): TokenTransformed['value'];
|
|
105
97
|
//#endregion
|
|
106
98
|
//#region src/css/link.d.ts
|
|
107
99
|
/** Convert link value to CSS */
|
|
108
|
-
declare function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions):
|
|
100
|
+
declare function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
109
101
|
//#endregion
|
|
110
102
|
//#region src/css/number.d.ts
|
|
111
103
|
/** Convert number value to CSS */
|
|
112
|
-
declare function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions):
|
|
104
|
+
declare function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
113
105
|
//#endregion
|
|
114
106
|
//#region src/css/shadow.d.ts
|
|
115
107
|
/** Convert shadow subvalue to CSS */
|
|
@@ -118,27 +110,27 @@ declare function transformShadowLayer(value: ShadowValueNormalized, options: Tra
|
|
|
118
110
|
partialAliasOf?: Partial<Record<keyof typeof value, string>>;
|
|
119
111
|
}): string | Record<string, string>;
|
|
120
112
|
/** Convert shadow value to CSS */
|
|
121
|
-
declare function transformShadow(token: ShadowTokenNormalized, options: TransformCSSValueOptions):
|
|
113
|
+
declare function transformShadow(token: ShadowTokenNormalized, options: TransformCSSValueOptions): TokenTransformed['value'];
|
|
122
114
|
//#endregion
|
|
123
115
|
//#region src/css/string.d.ts
|
|
124
116
|
/** Convert string value to CSS */
|
|
125
|
-
declare function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions):
|
|
117
|
+
declare function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
126
118
|
//#endregion
|
|
127
119
|
//#region src/css/stroke-style.d.ts
|
|
128
120
|
/** Convert strokeStyle value to CSS */
|
|
129
|
-
declare function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions):
|
|
121
|
+
declare function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
130
122
|
//#endregion
|
|
131
123
|
//#region src/css/transition.d.ts
|
|
132
124
|
/** Convert transition value to shorthand */
|
|
133
|
-
declare function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions):
|
|
125
|
+
declare function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions): TokenTransformedSingleValue['value'];
|
|
134
126
|
//#endregion
|
|
135
127
|
//#region src/css/typography.d.ts
|
|
136
128
|
/** Convert typography value to multiple CSS values */
|
|
137
|
-
declare function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions):
|
|
129
|
+
declare function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions): TokenTransformedMultiValue['value'];
|
|
138
130
|
//#endregion
|
|
139
131
|
//#region src/css/index.d.ts
|
|
140
132
|
/** Main CSS Transform */
|
|
141
|
-
declare function transformCSSValue<T extends TokenNormalized = TokenNormalized>(token: T, options: TransformCSSValueOptions): string |
|
|
133
|
+
declare function transformCSSValue<T extends TokenNormalized = TokenNormalized>(token: T, options: TransformCSSValueOptions): string | Record<string, string>;
|
|
142
134
|
//#endregion
|
|
143
|
-
export { DEPTH_ROUNDING, Depth, IDGenerator, MakeCSSVarOptions, WideGamutColorValue, defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
|
|
135
|
+
export { DEPTH_ROUNDING, Depth, IDGenerator, MakeCSSVarOptions, TransformCSSValueOptions, WideGamutColorValue, defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
|
|
144
136
|
//# sourceMappingURL=css.d.ts.map
|
package/dist/css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.d.ts","names":[],"sources":["../src/css/lib.ts","../src/css/css-types.ts","../src/css/
|
|
1
|
+
{"version":3,"file":"css.d.ts","names":[],"sources":["../src/css/lib.ts","../src/css/css-types.ts","../src/css/boolean.ts","../src/css/border.ts","../src/css/color.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"],"mappings":";;;KAGY,WAAA,KAAgB,eAAA,KAAoB,KAAA,EAAO,CAAA;AAAA,iBAEvC,qBAAA,CAAsB,KAAA,EAAO,eAAA;AAF7C;AAAA,iBAUgB,iBAAA,CAAA;EAAoB,KAAA;EAAO;AAAA;EAAa,KAAA,EAAO,eAAA;EAAiB,OAAA;AAAA;AAAA,UAiC/D,iBAAA;EA3CsC;EA6CrD,MAAA;EA7CsD;;AAExD;;EAgDE,OAAA;AAAA;;AAxCF;;;iBA+CgB,UAAA,CAAW,IAAA;EAAgB,MAAA;EAAQ;AAAA,IAAmB,iBAAA;;;UCzDrD,wBAAA;;EAEf,SAAA,EAAW,kBAAA;EDFU;ECIrB,WAAA,EAAa,MAAA;EACb,cAAA,GAAiB,WAAA;EDLK;ECOtB,KAAA;IDPqD,oCCSnD,SAAA;IDToD;;AAExD;;ICYI,KAAA;EAAA;AAAA;;;;iBCZY,gBAAA,CACd,KAAA,EAAO,sBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCQa,eAAA,CACd,KAAA,EAAO,qBAAA,EACP,OAAA,EAAS,wBAAA,GACR,gBAAA;;;KCbS,mBAAA;EACV,GAAA;EACA,IAAA;EACA,EAAA;EACA,OAAA;AAAA;;iBAIc,cAAA,CACd,KAAA,EAAO,oBAAA,EACP,OAAA,EAAS,wBAAA,GACR,gBAAA;AAAA,cAwBU,cAAA;;;;;;KAOD,KAAA,gBAAqB,cAAA;;;;iBC3CjB,oBAAA,CACd,KAAA,EAAO,0BAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCHa,kBAAA,CACd,KAAA,EAAO,wBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCHa,iBAAA,CACd,KAAA,EAAO,uBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;iBCFa,mBAAA,CACd,KAAA,EAAO,yBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCJa,mBAAA,CACd,KAAA,EAAO,yBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCFa,iBAAA,CACd,KAAA,EAAO,uBAAA,EACP,OAAA,EAAS,wBAAA,GACR,gBAAA;;;;iBCJa,aAAA,CACd,KAAA,EAAO,mBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCHa,eAAA,CACd,KAAA,EAAO,qBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCKa,oBAAA,CACd,KAAA,EAAO,qBAAA,EACP,OAAA,EAAS,wBAAA;EACP,UAAA;EACA,cAAA,GAAiB,OAAA,CAAQ,MAAA,cAAoB,KAAA;AAAA,aAErC,MAAA;;iBAoBI,eAAA,CACd,KAAA,EAAO,qBAAA,EACP,OAAA,EAAS,wBAAA,GACR,gBAAA;;;;iBCrCa,eAAA,CACd,KAAA,EAAO,qBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCHa,oBAAA,CACd,KAAA,EAAO,0BAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCIa,mBAAA,CACd,KAAA,EAAO,yBAAA,EACP,OAAA,EAAS,wBAAA,GACR,2BAAA;;;;iBCKa,mBAAA,CACd,KAAA,EAAO,yBAAA,EACP,OAAA,EAAS,wBAAA,GACR,0BAAA;;;;iBCmCa,iBAAA,WAA4B,eAAA,GAAkB,eAAA,CAAA,CAC5D,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,wBAAA,YAAwB,MAAA"}
|
package/dist/css.js
CHANGED
|
@@ -49,8 +49,8 @@ function makeCSSVar(name, { prefix, wrapVar = false } = {}) {
|
|
|
49
49
|
//#endregion
|
|
50
50
|
//#region src/css/boolean.ts
|
|
51
51
|
/** Convert boolean value to CSS string */
|
|
52
|
-
function transformBoolean(token,
|
|
53
|
-
if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
|
|
52
|
+
function transformBoolean(token, options) {
|
|
53
|
+
if (token.aliasChain?.[0]) return (options.transformAlias ?? defaultAliasTransform)(options.tokensSet[token.aliasChain[0]]);
|
|
54
54
|
return token.$value === true ? "1" : "0";
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -243,6 +243,7 @@ function transformShadow(token, options) {
|
|
|
243
243
|
const colors = token.$value.map((v, i) => token.partialAliasOf?.[i]?.color ? transformAlias(tokensSet[token.partialAliasOf[i].color]) : transformColor({ $value: v.color }, options));
|
|
244
244
|
const isHDR = colors.some((c) => typeof c === "object");
|
|
245
245
|
const formatShadow = (colorKey) => token.$value.map((v, i) => transformShadowLayer(v, {
|
|
246
|
+
...options,
|
|
246
247
|
tokensSet,
|
|
247
248
|
colorValue: typeof colors[i] === "string" ? colors[i] : colors[i][colorKey],
|
|
248
249
|
partialAliasOf: token.partialAliasOf?.[i],
|
|
@@ -314,26 +315,27 @@ function transformTypography(token, options) {
|
|
|
314
315
|
|
|
315
316
|
//#endregion
|
|
316
317
|
//#region src/css/index.ts
|
|
318
|
+
const TRANSFORMS = {
|
|
319
|
+
boolean: transformBoolean,
|
|
320
|
+
border: transformBorder,
|
|
321
|
+
color: transformColor,
|
|
322
|
+
cubicBezier: transformCubicBezier,
|
|
323
|
+
dimension: transformDimension,
|
|
324
|
+
duration: transformDuration,
|
|
325
|
+
fontFamily: transformFontFamily,
|
|
326
|
+
fontWeight: transformFontWeight,
|
|
327
|
+
gradient: transformGradient,
|
|
328
|
+
link: transformLink,
|
|
329
|
+
number: transformNumber,
|
|
330
|
+
shadow: transformShadow,
|
|
331
|
+
string: transformString,
|
|
332
|
+
strokeStyle: transformStrokeStyle,
|
|
333
|
+
transition: transformTransition,
|
|
334
|
+
typography: transformTypography
|
|
335
|
+
};
|
|
317
336
|
/** Main CSS Transform */
|
|
318
337
|
function transformCSSValue(token, options) {
|
|
319
|
-
|
|
320
|
-
case "boolean": return transformBoolean(token, options);
|
|
321
|
-
case "border": return transformBorder(token, options);
|
|
322
|
-
case "color": return transformColor(token, options);
|
|
323
|
-
case "cubicBezier": return transformCubicBezier(token, options);
|
|
324
|
-
case "dimension": return transformDimension(token, options);
|
|
325
|
-
case "duration": return transformDuration(token, options);
|
|
326
|
-
case "fontFamily": return transformFontFamily(token, options);
|
|
327
|
-
case "fontWeight": return transformFontWeight(token, options);
|
|
328
|
-
case "gradient": return transformGradient(token, options);
|
|
329
|
-
case "link": return transformLink(token, options);
|
|
330
|
-
case "number": return transformNumber(token, options);
|
|
331
|
-
case "shadow": return transformShadow(token, options);
|
|
332
|
-
case "string": return transformString(token, options);
|
|
333
|
-
case "strokeStyle": return transformStrokeStyle(token, options);
|
|
334
|
-
case "transition": return transformTransition(token, options);
|
|
335
|
-
case "typography": return transformTypography(token, options);
|
|
336
|
-
}
|
|
338
|
+
return TRANSFORMS[token.$type]?.(token, options);
|
|
337
339
|
}
|
|
338
340
|
|
|
339
341
|
//#endregion
|
package/dist/css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.js","names":["convert"],"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({ token, localID }: { token: TokenNormalized; localID: string }): string | undefined {\n switch (token.$type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n case 'typography': {\n const typeVar = (name: string) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n // Note: typography tokens should have both of these properties, but this is just being defensive\n if ('font-size' in token.$value && 'font-family' in token.$value) {\n let output = '';\n for (const prop of ['font-style', 'font-variant', 'font-weight']) {\n if (prop in token.$value) {\n output += ` ${typeVar(prop)}`;\n }\n }\n let fontSizeVar = typeVar('font-size');\n if ('line-height' in token.$value) {\n fontSizeVar += `/${typeVar('line-height')}`;\n }\n output += ` ${fontSizeVar}`;\n output += ` ${typeVar('font-family')}`;\n return output.trim();\n }\n break;\n }\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 { type ColorConstructor, to as convert, inGamut, serialize } from 'colorjs.io/fn';\nimport { parseColor, tokenToColor } 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\n const firstAlias = token.aliasChain?.[0];\n if (firstAlias && tokensSet[firstAlias]) {\n return transformAlias(tokensSet[firstAlias]);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToColor({ 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 return inGamut(color, 'srgb')\n ? serialize(color, { format: options.color?.legacyHex ? 'hex' : undefined })\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nexport const DEPTH_ROUNDING = {\n 24: 4, // 24-bit almost fits into 3 decimal places, but not quite\n 30: 4,\n 36: 5,\n 48: 6,\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to srgb, display-p3, and rec2020 color spaces.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], color: ColorConstructor, depth: Depth = 30) {\n const srgb = convert(color, $value.colorSpace, { inGamut: { space: 'srgb' } });\n const p3 = convert(color, $value.colorSpace, { inGamut: { space: 'p3' } });\n const rec2020 = convert(color, $value.colorSpace, { inGamut: { space: 'rec2020' } });\n if (typeof depth === 'number' && !DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n const precision = DEPTH_ROUNDING[depth as keyof typeof DEPTH_ROUNDING] || undefined;\n return {\n '.': serialize(color, { precision }),\n srgb: serialize(srgb, { precision }),\n p3: serialize(p3, { precision }),\n rec2020: serialize(rec2020, { precision }),\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 { inGamut, parse } from 'colorjs.io/fn';\nimport '../color.js'; // load Color.js side-effects\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 // Note: ../color.js has already loaded color spaces as side effects so we don’t need to load those again\n return typeof color === 'string' || inGamut(parse(color.p3), 'display-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 { transformColor, type WideGamutColorValue } 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 // For other typography properties, dimensions are the only other likely token type\n if (subvalue && typeof subvalue === 'object' && 'value' in subvalue) {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n } else if (typeof subvalue === 'number') {\n // number is technically allowed for things like `paragraph-spacing: 0`\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n }\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 options: TransformCSSValueOptions,\n) {\n switch (token.$type) {\n case 'boolean': {\n return transformBoolean(token, options);\n }\n case 'border': {\n return transformBorder(token, options);\n }\n case 'color': {\n return transformColor(token, options);\n }\n case 'cubicBezier': {\n return transformCubicBezier(token, options);\n }\n case 'dimension': {\n return transformDimension(token, options);\n }\n case 'duration': {\n return transformDuration(token, options);\n }\n case 'fontFamily': {\n return transformFontFamily(token, options);\n }\n case 'fontWeight': {\n return transformFontWeight(token, options);\n }\n case 'gradient': {\n return transformGradient(token, options);\n }\n case 'link': {\n return transformLink(token, options);\n }\n case 'number': {\n return transformNumber(token, options);\n }\n case 'shadow': {\n return transformShadow(token, options);\n }\n case 'string': {\n return transformString(token, options);\n }\n case 'strokeStyle': {\n return transformStrokeStyle(token, options);\n }\n case 'transition': {\n return transformTransition(token, options);\n }\n case 'typography': {\n return transformTypography(token, options);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"css.js","names":["convert"],"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({ token, localID }: { token: TokenNormalized; localID: string }): string | undefined {\n switch (token.$type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n case 'typography': {\n const typeVar = (name: string) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n // Note: typography tokens should have both of these properties, but this is just being defensive\n if ('font-size' in token.$value && 'font-family' in token.$value) {\n let output = '';\n for (const prop of ['font-style', 'font-variant', 'font-weight']) {\n if (prop in token.$value) {\n output += ` ${typeVar(prop)}`;\n }\n }\n let fontSizeVar = typeVar('font-size');\n if ('line-height' in token.$value) {\n fontSizeVar += `/${typeVar('line-height')}`;\n }\n output += ` ${fontSizeVar}`;\n output += ` ${typeVar('font-family')}`;\n return output.trim();\n }\n break;\n }\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, TokenTransformedSingleValue } 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 options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n if (token.aliasChain?.[0]) {\n return (options.transformAlias ?? defaultAliasTransform)(options.tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import { type ColorConstructor, to as convert, inGamut, serialize } from 'colorjs.io/fn';\nimport { parseColor, tokenToColor } from '../color.js';\nimport type { ColorTokenNormalized, TokenTransformed } 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): TokenTransformed['value'] {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n\n const firstAlias = token.aliasChain?.[0];\n if (firstAlias && tokensSet[firstAlias]) {\n return transformAlias(tokensSet[firstAlias]);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToColor({ 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 return inGamut(color, 'srgb')\n ? serialize(color, { format: options.color?.legacyHex ? 'hex' : undefined })\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nexport const DEPTH_ROUNDING = {\n 24: 4, // 24-bit almost fits into 3 decimal places, but not quite\n 30: 4,\n 36: 5,\n 48: 6,\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to srgb, display-p3, and rec2020 color spaces.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], color: ColorConstructor, depth: Depth = 30) {\n const srgb = convert(color, $value.colorSpace, { inGamut: { space: 'srgb' } });\n const p3 = convert(color, $value.colorSpace, { inGamut: { space: 'p3' } });\n const rec2020 = convert(color, $value.colorSpace, { inGamut: { space: 'rec2020' } });\n if (typeof depth === 'number' && !DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n const precision = DEPTH_ROUNDING[depth as keyof typeof DEPTH_ROUNDING] || undefined;\n return {\n '.': serialize(color, { precision }),\n srgb: serialize(srgb, { precision }),\n p3: serialize(p3, { precision }),\n rec2020: serialize(rec2020, { precision }),\n };\n}\n","import type { DimensionTokenNormalized, TokenTransformedSingleValue } 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(\n token: DimensionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformedSingleValue } 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(\n token: StrokeStyleTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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 { inGamut, parse } from 'colorjs.io/fn';\nimport '../color.js'; // load Color.js side-effects\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n TokenTransformed,\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(\n token: BorderTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\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 // Note: ../color.js has already loaded color spaces as side effects so we don’t need to load those again\n return typeof color === 'string' || inGamut(parse(color.p3!), 'display-p3')\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized, TokenTransformedSingleValue } 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(\n token: CubicBezierTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformedSingleValue } 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(\n token: DurationTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformedSingleValue } 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(\n token: FontFamilyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformedSingleValue } 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(\n token: FontWeightTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformed } from '../types.js';\nimport { 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): TokenTransformed['value'] {\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: TokenTransformed['value'][] = [];\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, TokenTransformedSingleValue } 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(\n token: LinkTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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, TokenTransformedSingleValue } 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(\n token: NumberTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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 TokenTransformed,\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): TokenTransformed['value'] {\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 ...options,\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, TokenTransformedSingleValue } 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(\n token: StringTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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 {\n CubicBezierTokenNormalized,\n DurationTokenNormalized,\n TokenTransformedSingleValue,\n TransitionTokenNormalized,\n} 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(\n token: TransitionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\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 TokenTransformedMultiValue,\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(\n token: TypographyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedMultiValue['value'] {\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 // For other typography properties, dimensions are the only other likely token type\n if (subvalue && typeof subvalue === 'object' && 'value' in subvalue) {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n } else if (typeof subvalue === 'number') {\n // number is technically allowed for things like `paragraph-spacing: 0`\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n }\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 './css-types.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\nconst TRANSFORMS = {\n boolean: transformBoolean,\n border: transformBorder,\n color: transformColor,\n cubicBezier: transformCubicBezier,\n dimension: transformDimension,\n duration: transformDuration,\n fontFamily: transformFontFamily,\n fontWeight: transformFontWeight,\n gradient: transformGradient,\n link: transformLink,\n number: transformNumber,\n shadow: transformShadow,\n string: transformString,\n strokeStyle: transformStrokeStyle,\n transition: transformTransition,\n typography: transformTypography,\n};\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n options: TransformCSSValueOptions,\n) {\n return TRANSFORMS[token.$type]?.(token as any, options);\n}\n"],"mappings":";;;;AAKA,SAAgB,sBAAsB,OAAwB;AAC5D,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,kBAAkB;AAEpC,QAAO,OAAO,WAAW,MAAM,GAAG,CAAC;;;AAIrC,SAAgB,kBAAkB,EAAE,OAAO,WAA4E;AACrH,SAAQ,MAAM,OAAd;EACE,KAAK,aACH,QAAO;GAAC;GAAY;GAAS;GAAkB,CAC5C,KAAK,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,EAAE,SAAS,MAAM,CAAC,CAAC,CAC5D,KAAK,IAAI;EAEd,KAAK,cAAc;GACjB,MAAM,WAAW,SAAiB,WAAW,GAAG,QAAQ,GAAG,QAAQ,EAAE,SAAS,MAAM,CAAC;AAErF,OAAI,eAAe,MAAM,UAAU,iBAAiB,MAAM,QAAQ;IAChE,IAAI,SAAS;AACb,SAAK,MAAM,QAAQ;KAAC;KAAc;KAAgB;KAAc,CAC9D,KAAI,QAAQ,MAAM,OAChB,WAAU,IAAI,QAAQ,KAAK;IAG/B,IAAI,cAAc,QAAQ,YAAY;AACtC,QAAI,iBAAiB,MAAM,OACzB,gBAAe,IAAI,QAAQ,cAAc;AAE3C,cAAU,IAAI;AACd,cAAU,IAAI,QAAQ,cAAc;AACpC,WAAO,OAAO,MAAM;;AAEtB;;;;AAKN,MAAM,aACJ;;;;;AAgBF,SAAgB,WAAW,MAAc,EAAE,QAAQ,UAAU,UAA6B,EAAE,EAAU;AACpG,KAAI,OAAO,SAAS,SAClB,OAAM,IAAI,MAAM,0CAA0C,OAAO;CAGnE,IAAI,WAAW,KAAK,MAAM,WAAW,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;AAC/D,KAAI,UAAU,CAAC,SAAS,WAAW,GAAG,OAAO,GAAG,CAC9C,YAAW,GAAG,OAAO,GAAG;CAE1B,MAAM,gBAAgB,KAAK,WAAW,mBAAmB;AACzD,QAAO,UAAU,OAAO,cAAc,KAAK;;;;;;ACjE7C,SAAgB,iBACd,OACA,SACsC;AACtC,KAAI,MAAM,aAAa,GACrB,SAAQ,QAAQ,kBAAkB,uBAAuB,QAAQ,UAAU,MAAM,WAAW,IAAK;AAEnG,QAAO,MAAM,WAAW,OAAO,MAAM;;;;;;ACEvC,SAAgB,eACd,OACA,SAC2B;CAC3B,MAAM,EAAE,iBAAiB,uBAAuB,cAAc;CAE9D,MAAM,aAAa,MAAM,aAAa;AACtC,KAAI,cAAc,UAAU,YAC1B,QAAO,eAAe,UAAU,YAAY;CAG9C,MAAM,EACJ,YACA,YACA,QAAQ,MACN,OAAO,MAAM,WAAW,WAAW,WAAW,MAAM,OAAO,GAAG,MAAM;CACxE,MAAM,QAAQ,aAAa;EAAE;EAAY;EAAY;EAAO,CAAC;AAE7D,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,MAAM,OAAO,CAAC,kBAAkB;AAGxF,QAAO,QAAQ,OAAO,OAAO,GACzB,UAAU,OAAO,EAAE,QAAQ,QAAQ,OAAO,YAAY,QAAQ,QAAW,CAAC,GAC1E,WAAW;EAAE;EAAY;EAAY;EAAO,EAAE,OAAO,QAAQ,OAAO,MAAM;;AAGhF,MAAa,iBAAiB;CAC5B,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;;;;AAOD,SAAS,WAAW,QAAwC,OAAyB,QAAe,IAAI;CACtG,MAAM,OAAOA,GAAQ,OAAO,OAAO,YAAY,EAAE,SAAS,EAAE,OAAO,QAAQ,EAAE,CAAC;CAC9E,MAAM,KAAKA,GAAQ,OAAO,OAAO,YAAY,EAAE,SAAS,EAAE,OAAO,MAAM,EAAE,CAAC;CAC1E,MAAM,UAAUA,GAAQ,OAAO,OAAO,YAAY,EAAE,SAAS,EAAE,OAAO,WAAW,EAAE,CAAC;AACpF,KAAI,OAAO,UAAU,YAAY,CAAC,eAAe,OAC/C,OAAM,IAAI,MAAM,sBAAsB,MAAM,sBAAsB,OAAO,KAAK,eAAe,CAAC,KAAK,KAAK,GAAG;CAE7G,MAAM,YAAY,eAAe,UAAyC;AAC1E,QAAO;EACL,KAAK,UAAU,OAAO,EAAE,WAAW,CAAC;EACpC,MAAM,UAAU,MAAM,EAAE,WAAW,CAAC;EACpC,IAAI,UAAU,IAAI,EAAE,WAAW,CAAC;EAChC,SAAS,UAAU,SAAS,EAAE,WAAW,CAAC;EAC3C;;;;;;AC7DH,SAAgB,mBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAGxD,QAAO,MAAM,OAAO,UAAU,IAAI,MAAM,GAAG,MAAM,OAAO,QAAQ,MAAM,OAAO;;;;;;ACT/E,SAAgB,qBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;;;;;;ACG3D,SAAgB,gBACd,OACA,SAC2B;CAC3B,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;CAGxD,MAAM,QAAQ,MAAM,gBAAgB,QAChC,eAAe,UAAU,MAAM,eAAe,OAAQ,GACtD,mBAAmB,EAAE,QAAQ,MAAM,OAAO,OAAO,EAA8B,QAAQ;CAC3F,MAAM,QAAQ,MAAM,gBAAgB,QAChC,eAAe,UAAU,MAAM,eAAe,OAAQ,GACtD,eAAe,EAAE,QAAQ,MAAM,OAAO,OAAO,EAA0B,QAAQ;CACnF,MAAM,QAAQ,MAAM,gBAAgB,QAChC,eAAe,UAAU,MAAM,eAAe,OAAQ,GACtD,qBAAqB,EAAE,QAAQ,MAAM,OAAO,OAAO,EAAgC,QAAQ;CAE/F,MAAM,gBAAgB,aACpB;EAAC;EAAO;EAAO,OAAO,UAAU,WAAW,QAAQ,MAAM;EAAgC,CAAC,KAAK,IAAI;AAGrG,QAAO,OAAO,UAAU,YAAY,QAAQ,MAAM,MAAM,GAAI,EAAE,aAAa,GACvE,aAAa,IAAI,GACjB;EACE,KAAK,aAAa,IAAI;EACtB,MAAM,aAAa,OAAO;EAC1B,IAAI,aAAa,KAAK;EACtB,SAAS,aAAa,UAAU;EACjC;;;;;;ACzCP,SAAgB,qBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,gBAAgB,MAAM,OAC1B,KAAK,GAAG,MAAO,MAAM,iBAAiB,KAAK,eAAe,UAAU,MAAM,eAAe,IAAK,GAAG,EAAG,CACpG,KAAK,KAAK,CAAC;;;;;;ACVhB,SAAgB,kBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAGxD,QAAO,GAAG,MAAM,OAAO,QAAQ,MAAM,OAAO;;;;;ACV9C,MAAM,oBAAoB;AAE1B,SAAgB,oBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,MAAM,OAAO,KAAK,aAAc,kBAAkB,KAAK,SAAS,GAAG,WAAW,IAAI,SAAS,GAAI,CAAC,KAAK,KAAK;;;;;;ACTnH,SAAgB,oBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,OAAO;;;;;;ACP7B,SAAgB,kBACd,OACA,SAC2B;CAC3B,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;CAGxD,IAAI,QAAQ;CAEZ,MAAM,SAAsC,EAAE;CAC9C,MAAM,YAAsB,EAAE;AAE9B,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,OAAO,QAAQ,KAAK;EAC5C,MAAM,EAAE,OAAO,aAAa,MAAM,OAAO;EACzC,MAAM,aAAa,MAAM,iBAAiB,IAAI,QAC1C,eAAe,UAAU,MAAM,eAAe,GAAI,OAAS,GAC3D,eAAe,EAAE,QAAQ,OAAO,EAA0B,QAAQ;AACtE,MAAI,OAAO,eAAe,SACxB,SAAQ;AAEV,SAAO,KAAK,WAAW;AACvB,YAAU,KACR,MAAM,iBAAiB,IAAI,WACvB,eAAe,UAAU,MAAM,eAAe,GAAI,UAAY,GAC9D,GAAG,MAAM,SAAS,GACvB;;CAGH,SAAS,WAAW,GAAW,WAAW,KAAK;AAC7C,SAAO,GAAG,OAAO,OAAO,OAAO,WAAW,OAAO,KAAK,OAAO,GAAI,UAA2C,GAAG,UAAU;;AAG3H,QAAO,CAAC,QACJ,MAAM,OAAO,KAAK,GAAG,MAAM,WAAW,GAAG,UAAU,GAAI,CAAC,CAAC,KAAK,KAAK,GACnE;EACE,KAAK,MAAM,OAAO,KAAK,GAAG,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,KAAK,KAAK;EAC9D,MAAM,MAAM,OAAO,KAAK,GAAG,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK;EAClE,IAAI,MAAM,OAAO,KAAK,GAAG,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,KAAK,KAAK;EAC9D,SAAS,MAAM,OAAO,KAAK,GAAG,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,KAAK,KAAK;EACzE;;;;;;AC1CP,SAAgB,cACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,QAAQ,MAAM,OAAO;;;;;;ACR9B,SAAgB,gBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,OAAO;;;;;;ACA7B,SAAgB,qBACd,OACA,SAIiC;CACjC,MAAM,EAAE,WAAW,YAAY,gBAAgB,iBAAiB,0BAA0B;CAC1F,MAAM,UAAU,gBAAgB,UAC5B,eAAe,UAAU,eAAe,SAAU,GAClD,mBAAmB,EAAE,QAAQ,MAAM,SAAS,EAA8B,QAAQ;CACtF,MAAM,UAAU,gBAAgB,UAC5B,eAAe,UAAU,eAAe,SAAU,GAClD,mBAAmB,EAAE,QAAQ,MAAM,SAAS,EAA8B,QAAQ;CACtF,MAAM,OAAO,gBAAgB,OACzB,eAAe,UAAU,eAAe,MAAO,GAC/C,mBAAmB,EAAE,QAAQ,MAAM,MAAM,EAA8B,QAAQ;CACnF,MAAM,SAAS,gBAAgB,SAC3B,eAAe,UAAU,eAAe,QAAS,GACjD,mBAAmB,EAAE,QAAQ,MAAM,QAAQ,EAA8B,QAAQ;AAGrF,QAAO;EAFO,OAAO,UAAU,OAAO,UAAU;EAEjC;EAAS;EAAS;EAAM;EAAQ;EAAW,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;;;AAItF,SAAgB,gBACd,OACA,SAC2B;CAC3B,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;CAExD,MAAM,SAAS,MAAM,OAAO,KAAK,GAAG,MAClC,MAAM,iBAAiB,IAAI,QACvB,eAAe,UAAU,MAAM,eAAe,GAAI,OAAS,GAC3D,eAAe,EAAE,QAAQ,EAAE,OAAO,EAA0B,QAAQ,CACzE;CACD,MAAM,QAAQ,OAAO,MAAM,MAAM,OAAO,MAAM,SAAS;CAEvD,MAAM,gBAAgB,aACpB,MAAM,OACH,KAAK,GAAG,MACP,qBAAqB,GAAG;EACtB,GAAG;EACH;EACA,YACE,OAAO,OAAO,OAAO,WAChB,OAAO,KACR,OAAO,GAAI;EACjB,gBAAgB,MAAM,iBAAiB;EACvC;EACD,CAAC,CACH,CACA,KAAK,KAAK;AAEf,QAAO,CAAC,QACJ,aAAa,IAAI,GACjB;EACE,KAAK,aAAa,IAAI;EACtB,MAAM,aAAa,OAAO;EAC1B,IAAI,aAAa,KAAK;EACtB,SAAS,aAAa,UAAU;EACjC;;;;;;ACxEP,SAAgB,gBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAIxD,QAAO,OAAO,MAAM,OAAO;;;;;;ACH7B,SAAgB,oBACd,OACA,SACsC;CACtC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAaxD,QAAO,GAVU,MAAM,gBAAgB,WACnC,eAAe,UAAU,MAAM,eAAe,UAAW,GACzD,kBAAkB,EAAE,QAAQ,MAAM,OAAO,UAAU,EAA6B,QAAQ,CAQzE,GAPL,MAAM,gBAAgB,QAChC,eAAe,UAAU,MAAM,eAAe,OAAQ,GACtD,kBAAkB,EAAE,QAAQ,MAAM,OAAO,OAAO,EAA6B,QAAQ,CAK7D,GAJL,MAAM,gBAAgB,iBACzC,eAAe,UAAU,MAAM,eAAe,gBAAiB,GAC/D,qBAAqB,EAAE,QAAQ,MAAM,OAAO,gBAAgB,EAAgC,QAAQ;;;;;;ACT1G,SAAgB,oBACd,OACA,SACqC;CACrC,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;CAC9D,MAAM,SAAiC,EAAE;AACzC,MAAK,MAAM,CAAC,UAAU,aAAa,OAAO,QAAQ,MAAM,OAAO,EAAE;EAC/D,IAAI;EACJ,MAAM,YAAY,MAAM,aAAa,MAAM,MAAM,iBAAiB;AAClE,MAAI,WAAW;GACb,MAAM,gBAAgB,UAAU;AAChC,sBAAmB,eAEjB,cAAc,UAAU,eAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,YAAY,GAAuB,cAClG;QAED,SAAQ,UAAR;GACE,KAAK;AACH,uBAAmB,oBAAoB,EAAE,QAAQ,UAAU,EAA+B,QAAQ;AAClG;GAEF,KAAK;GACL,KAAK;AACH,uBAAmB,mBAAmB,EAAE,QAAQ,UAAU,EAA8B,QAAQ;AAChG;GAEF,KAAK;AACH,uBAAmB,oBAAoB,EAAE,QAAQ,UAAU,EAA+B,QAAQ;AAClG;GAEF,KAAK;AACH,QAAI,OAAO,aAAa,SACtB,oBAAmB,gBAAgB,EAAE,QAAQ,UAAU,EAA2B,QAAQ;QAE1F,oBAAmB,mBAAmB,EAAE,QAAQ,UAAU,EAA8B,QAAQ;AAElG;GAEF;AAEE,QAAI,YAAY,OAAO,aAAa,YAAY,WAAW,SACzD,oBAAmB,mBAAmB,EAAE,QAAQ,UAAU,EAA8B,QAAQ;aACvF,OAAO,aAAa,SAE7B,oBAAmB,gBAAgB,EAAE,QAAQ,UAAU,EAA2B,QAAQ;QAE1F,oBAAmB,gBAAgB,EAAE,QAAQ,UAAU,EAA2B,QAAQ;AAE5F;;AAIN,SAAO,UAAU,SAAS,IAAI;;AAEhC,QAAO;;;;;ACpCT,MAAM,aAAa;CACjB,SAAS;CACT,QAAQ;CACR,OAAO;CACP,aAAa;CACb,WAAW;CACX,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,UAAU;CACV,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,YAAY;CACb;;AAGD,SAAgB,kBACd,OACA,SACA;AACA,QAAO,WAAW,MAAM,SAAS,OAAc,QAAQ"}
|