@terrazzo/token-tools 2.0.0-beta.1 → 2.0.0-beta.3

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 CHANGED
@@ -49,6 +49,8 @@
49
49
 
50
50
  These behaviors may be opted out individually by adjusting the new lint rules ([see documentation](https://terrazzo.app/docs/linting/)).
51
51
 
52
+ - ⚠️ Breaking change: Replace Culori with [Color.js](https://colorjs.io) for color parsing, a more performant and CSS spec-compliant color science library. This means some color utilities will have different output.
53
+
52
54
  ### Patch Changes
53
55
 
54
56
  - [#530](https://github.com/terrazzoapp/terrazzo/pull/530) [`370ed7b`](https://github.com/terrazzoapp/terrazzo/commit/370ed7b0f578a64824124145d7f4936536b37bb3) Thanks [@drwpow](https://github.com/drwpow)! - Fix bug where border tokens’ partial aliases would sometimes refer to themselves
@@ -0,0 +1,13 @@
1
+ import { m as ColorValueNormalized, u as ColorSpace$1 } from "./types-Cwbw-_yP.js";
2
+ import { ColorConstructor, ColorSpace, PlainColorObject } from "colorjs.io/fn";
3
+
4
+ //#region src/color.d.ts
5
+ /** Complete list of CSS Module 4 color spaces */
6
+ declare const COLOR_SPACE: Record<ColorSpace$1, ColorSpace>;
7
+ /** Parse any color */
8
+ declare function parseColor(color: string): ColorValueNormalized;
9
+ /** Convert a color token to a Color.js color */
10
+ declare function tokenToColor(value: ColorValueNormalized): ColorConstructor & PlainColorObject;
11
+ //#endregion
12
+ export { parseColor as n, tokenToColor as r, COLOR_SPACE as t };
13
+ //# sourceMappingURL=color-DoUasWha.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-DoUasWha.d.ts","names":[],"sources":["../src/color.ts"],"mappings":";;;;;cA4Ba,WAAA,EAAa,MAAA,CAAO,YAAA,EAAY,UAAA;AAA7C;AAAA,iBA8BgB,UAAA,CAAW,KAAA,WAAgB,oBAAA;;iBAc3B,YAAA,CAAa,KAAA,EAAO,oBAAA,GAAuB,gBAAA,GAAmB,gBAAA"}
package/dist/css.d.ts CHANGED
@@ -1,5 +1,5 @@
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-DpPbXNdS.js";
2
- import { Color } from "culori/fn";
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
3
 
4
4
  //#region src/css/lib.d.ts
5
5
  /** Function that generates a var(…) statement */
@@ -38,8 +38,7 @@ interface TransformCSSValueOptions {
38
38
  transformAlias?: IDGenerator;
39
39
  /** Options for color tokens */
40
40
  color?: {
41
- /** Output legacy hex-6 and hex-8 */
42
- legacyHex?: boolean;
41
+ /** Output legacy hex-6 and hex-8 */legacyHex?: boolean;
43
42
  /**
44
43
  * Color depth
45
44
  * @see https://en.wikipedia.org/wiki/Color_depth
@@ -58,14 +57,12 @@ type WideGamutColorValue = {
58
57
  /** Convert color value to CSS string */
59
58
  declare function transformColor(token: ColorTokenNormalized, options: TransformCSSValueOptions): string | WideGamutColorValue;
60
59
  declare const DEPTH_ROUNDING: {
61
- 24: <T>(value: T) => T;
62
- 30: <T>(value: T) => T;
63
- 36: <T>(value: T) => T;
64
- 48: <T>(value: T) => T;
60
+ 24: number;
61
+ 30: number;
62
+ 36: number;
63
+ 48: number;
65
64
  };
66
65
  type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';
67
- /** Round color to certain depth. */
68
- declare function roundColor<T extends Color = Color>(color: T, depth?: Depth): T;
69
66
  //#endregion
70
67
  //#region src/css/boolean.d.ts
71
68
  /** Convert boolean value to CSS string */
@@ -143,5 +140,5 @@ declare function transformTypography(token: TypographyTokenNormalized, options:
143
140
  /** Main CSS Transform */
144
141
  declare function transformCSSValue<T extends TokenNormalized = TokenNormalized>(token: T, options: TransformCSSValueOptions): string | WideGamutColorValue | Record<string, string>;
145
142
  //#endregion
146
- export { DEPTH_ROUNDING, Depth, IDGenerator, MakeCSSVarOptions, WideGamutColorValue, defaultAliasTransform, generateShorthand, makeCSSVar, roundColor, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
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 };
147
144
  //# 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/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":";;;;;KAGY,gBAAgB,2BAA2B;iBAEvC,qBAAA,QAA6B;AAF7C;AAEgB,iBAQA,iBAAA,CAR6B;EAAA,KAAA;EAAA;CAAe,EAAA;EAQ5C,KAAA,EAA+C,eAA9B;EAAG,OAAA,EAAA,MAAA;CAAO,CAAA,EAAA,MAAA,GAAA,SAAA;AAAoB,UAiC9C,iBAAA,CAjC8C;EAAe;EAiC7D,MAAA,CAAA,EAAA,MAAA;EAcD;;;;EAA4E,OAAA,CAAA,EAAA,OAAA;;;;ACzD5F;;iBDyDgB,UAAA;;;IAAsD;;;UCzDrD,wBAAA;;EDAL,SAAA,ECEC,kBDFe;EAEZ,cAAA,CAAA,ECCG,WDDkB;EAQrB;EAAoB,KAAA,CAAA,EAAA;IAAO;IAAoB,SAAA,CAAA,EAAA,OAAA;IAAe;AAiC9E;AAcA;;IAAmD,KAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,WAAA;EAAmB,CAAA;;;;KE7B1D,mBAAA;EF5BA,GAAA,EAAA,MAAA;EAEI,IAAA,EAAA,MAAA;EAQA,EAAA,EAAA,MAAA;EAAoB,OAAA,EAAA,MAAA;CAAO;;AAAmC,iBE0B9D,cAAA,CF1B8D,KAAA,EE2BrE,oBF3BqE,EAAA,OAAA,EE4BnE,wBF5BmE,CAAA,EAAA,MAAA,GE6BlE,mBF7BkE;AAiC7D,cE4CJ,cF5CqB,EAAA;EAclB,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAU,GAAA,EAAA,IAAA;EAAiB,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAA,GAAA,EAAA,IAAA;EAAQ,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAA,GAAA,EAAA,IAAA;EAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAA,GAAA,EAAA,IAAA;CAAsB;KEqChF,KAAA,gBAAqB;;iBA2CjB,qBAAqB,QAAQ,cAAc,WAAU,QAAa;;;;iBCvIlE,gBAAA,QACP;;;GACgD;;;;iBCOzC,eAAA,QAAuB,gCAAgC;EJX3D,GAAA,EAAA,MAAA;EAEI,IAAA,EAAA,MAAA;EAQA,EAAA,EAAA,MAAA;EAAoB,OAAA,EAAA,MAAA;CAAO;;;;iBKR3B,oBAAA,QAA4B,qCAAqC;;;;iBCAjE,kBAAA,QAA0B,mCAAmC;;;;iBCA7D,iBAAA,QAAyB,kCAAkC;;;iBCC3D,mBAAA,QAA2B,oCAAoC;;;;iBCD/D,mBAAA,QAA2B,oCAAoC;;;;ATFnE,iBUGI,iBAAA,CVHY,KAAA,EUInB,uBVJ+C,EAAA,OAAA,EUK7C,wBVL6C,CAAA,EAAA,MAAA,GUM5C,mBVN4C;;;;iBWExC,aAAA,QAAqB,8BAA8B;;;;iBCAnD,eAAA,QAAuB,gCAAgC;;;;iBCOvD,oBAAA,QACP,gCACE;EbXC,UAAA,EAAA,MAAW;EAEP,cAAA,CAAA,EaWK,ObXgB,CaWR,MbXQ,CAAA,MAAQ,OaWI,KbXJ,EAAA,MAAe,CAAA,CAAA;AAQ5D,CAAA,CAAA,EAAgB,MAAA,GaKJ,MbLI,CAAA,MAAiB,EAAA,MAAA,CAAA;;AAAU,iBayB3B,eAAA,CbzB2B,KAAA,Ea0BlC,qBb1BkC,EAAA,OAAA,Ea2BhC,wBb3BgC,CAAA,EAAA,MAAA,Ga4B/B,Mb5B+B,CAAA,MAAA,EAAA,MAAA,CAAA;;;;iBcR3B,eAAA,QAAuB,gCAAgC;;;;iBCAvD,oBAAA,QAA4B,qCAAqC;;;;iBCEjE,mBAAA,QAA2B,oCAAoC;;;;iBCY/D,mBAAA,QAA2B,oCAAoC,2BAAwB;;;;AhBhBtF,iBiBmCD,iBjBnCyB,CAAA,UiBmCG,ejBhCzB,GiBgC2C,ejBhChC,CAAA,CAAA,KAAA,EiBiCrB,CjBjCqB,EAAA,OAAA,EiBkCnB,wBjBlCmB,CAAA,EAAA,MAAA,GiBkCK,mBAAA,GAAA,MjBlCL,CAAA,MAAA,EAAA,MAAA,CAAA"}
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"],"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;EACX,cAAA,GAAiB,WAAA;EDHI;ECKrB,KAAA;IDLsB,oCCOpB,SAAA;IDPmD;;;;ICYnD,KAAA;EAAA;AAAA;;;KCTQ,mBAAA;EACV,GAAA;EACA,IAAA;EACA,EAAA;EACA,OAAA;AAAA;;iBAIc,cAAA,CACd,KAAA,EAAO,oBAAA,EACP,OAAA,EAAS,wBAAA,YACC,mBAAA;AAAA,cAwBC,cAAA;;;;;;KAOD,KAAA,gBAAqB,cAAA;;;;iBC3CjB,gBAAA,CACd,KAAA,EAAO,sBAAA;EACL,SAAA;EAAW;AAAA,GAA0C,wBAAA;;;;iBCQzC,eAAA,CAAgB,KAAA,EAAO,qBAAA,EAAuB,OAAA,EAAS,wBAAA;;;;;;;;;iBCVvD,oBAAA,CAAqB,KAAA,EAAO,0BAAA,EAA4B,OAAA,EAAS,wBAAA;;;;iBCAjE,kBAAA,CAAmB,KAAA,EAAO,wBAAA,EAA0B,OAAA,EAAS,wBAAA;;;;iBCA7D,iBAAA,CAAkB,KAAA,EAAO,uBAAA,EAAyB,OAAA,EAAS,wBAAA;;;iBCC3D,mBAAA,CAAoB,KAAA,EAAO,yBAAA,EAA2B,OAAA,EAAS,wBAAA;;;;iBCD/D,mBAAA,CAAoB,KAAA,EAAO,yBAAA,EAA2B,OAAA,EAAS,wBAAA;;;;iBCC/D,iBAAA,CACd,KAAA,EAAO,uBAAA,EACP,OAAA,EAAS,wBAAA,YACC,mBAAA;;;;iBCJI,aAAA,CAAc,KAAA,EAAO,mBAAA,EAAqB,OAAA,EAAS,wBAAA;;;;iBCAnD,eAAA,CAAgB,KAAA,EAAO,qBAAA,EAAuB,OAAA,EAAS,wBAAA;;;;iBCOvD,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,YACC,MAAA;;;;iBCpCI,eAAA,CAAgB,KAAA,EAAO,qBAAA,EAAuB,OAAA,EAAS,wBAAA;;;;iBCAvD,oBAAA,CAAqB,KAAA,EAAO,0BAAA,EAA4B,OAAA,EAAS,wBAAA;;;;iBCEjE,mBAAA,CAAoB,KAAA,EAAO,yBAAA,EAA2B,OAAA,EAAS,wBAAA;;;;iBCY/D,mBAAA,CAAoB,KAAA,EAAO,yBAAA,EAA2B,OAAA,EAAS,wBAAA,GAAwB,MAAA;;;AjBNvG;AAAA,iBkByBgB,iBAAA,WAA4B,eAAA,GAAkB,eAAA,CAAA,CAC5D,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,wBAAA,YAAwB,mBAAA,GAAA,MAAA"}
package/dist/css.js CHANGED
@@ -1,6 +1,5 @@
1
- import { a as CSS_TO_CULORI, c as tokenToCulori, s as parseColor, t as kebabCase } from "./string-BIhoe-L2.js";
2
- import { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHwb, modeLab, modeLab65, modeLch, modeLrgb, modeOkhsv, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, round, toGamut, useMode } from "culori/fn";
3
- import { displayable as displayable$1 } from "culori";
1
+ import { a as parseColor, o as tokenToColor, t as kebabCase } from "./string-BKbTpl-t.js";
2
+ import { inGamut, parse, serialize, to } from "colorjs.io/fn";
4
3
 
5
4
  //#region src/css/lib.ts
6
5
  function defaultAliasTransform(token) {
@@ -63,82 +62,40 @@ function transformColor(token, options) {
63
62
  const firstAlias = token.aliasChain?.[0];
64
63
  if (firstAlias && tokensSet[firstAlias]) return transformAlias(tokensSet[firstAlias]);
65
64
  const { colorSpace, components, alpha = 1 } = typeof token.$value === "string" ? parseColor(token.$value) : token.$value;
66
- const color = tokenToCulori({
65
+ const color = tokenToColor({
67
66
  colorSpace,
68
67
  components,
69
68
  alpha
70
69
  });
71
70
  if (!color) throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);
72
- let formatColor = formatCss;
73
- if (options.color?.legacyHex) formatColor = color.alpha !== 1 ? formatHex8 : formatHex;
74
- return displayable(color) ? formatColor(color) : downsample({
71
+ return inGamut(color, "srgb") ? serialize(color, { format: options.color?.legacyHex ? "hex" : void 0 }) : downsample({
75
72
  colorSpace,
76
73
  components,
77
74
  alpha
78
75
  }, color, options.color?.depth);
79
76
  }
80
- const converters = {
81
- a98: useMode(modeA98),
82
- hsl: useMode(modeHsl),
83
- hwb: useMode(modeHwb),
84
- lab: useMode(modeLab),
85
- lab65: useMode(modeLab65),
86
- lch: useMode(modeLch),
87
- lrgb: useMode(modeLrgb),
88
- oklab: useMode(modeOklab),
89
- oklch: useMode(modeOklch),
90
- okhsv: useMode(modeOkhsv),
91
- p3: useMode(modeP3),
92
- prophoto: useMode(modeProphoto),
93
- rec2020: useMode(modeRec2020),
94
- rgb: useMode(modeRgb),
95
- xyz50: useMode(modeXyz50),
96
- xyz65: useMode(modeXyz65)
97
- };
98
77
  const DEPTH_ROUNDING = {
99
- 24: round(4),
100
- 30: round(4),
101
- 36: round(5),
102
- 48: round(6)
78
+ 24: 4,
79
+ 30: 4,
80
+ 36: 5,
81
+ 48: 6
103
82
  };
104
83
  /**
105
- * Downsample color to sRGB/Display P3/Rec2020 colorspaces.
106
- * Note: because Culori tends to convert to RGB color spaces to ensure the operation,
107
- * we have to do an additional step of converting back. So we’re not really converting;
108
- * we’re just preserving the original colorspace.
84
+ * Downsample color to srgb, display-p3, and rec2020 color spaces.
109
85
  */
110
- function downsample($value, culoriColor, depth = 30) {
111
- if (!($value.colorSpace in CSS_TO_CULORI)) throw new Error(`Invalid colorSpace "${$value.colorSpace}". Expected one of: ${Object.keys(CSS_TO_CULORI).join(", ")}`);
112
- const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || "oklab";
113
- let gamutSpace = conversionSpace;
114
- if (gamutSpace === "lab" || gamutSpace === "lab65") gamutSpace = "lch";
115
- else if (gamutSpace === "oklab") gamutSpace = "oklch";
116
- let srgb = converters[conversionSpace](toGamut("rgb", gamutSpace)(culoriColor));
117
- let p3 = converters[conversionSpace](toGamut("p3", gamutSpace)(culoriColor));
118
- let rec2020 = converters[conversionSpace](toGamut("rec2020", gamutSpace)(culoriColor));
119
- if (typeof depth === "number") {
120
- if (!DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(", ")}`);
121
- srgb = roundColor(srgb, depth);
122
- p3 = roundColor(p3, depth);
123
- rec2020 = roundColor(rec2020, depth);
124
- }
86
+ function downsample($value, color, depth = 30) {
87
+ const srgb = to(color, $value.colorSpace, { inGamut: { space: "srgb" } });
88
+ const p3 = to(color, $value.colorSpace, { inGamut: { space: "p3" } });
89
+ const rec2020 = to(color, $value.colorSpace, { inGamut: { space: "rec2020" } });
90
+ if (typeof depth === "number" && !DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(", ")}`);
91
+ const precision = DEPTH_ROUNDING[depth] || void 0;
125
92
  return {
126
- ".": formatCss(culoriColor),
127
- srgb: formatCss(srgb),
128
- p3: formatCss(p3),
129
- rec2020: formatCss(rec2020)
93
+ ".": serialize(color, { precision }),
94
+ srgb: serialize(srgb, { precision }),
95
+ p3: serialize(p3, { precision }),
96
+ rec2020: serialize(rec2020, { precision })
130
97
  };
131
98
  }
132
- /** Round color to certain depth. */
133
- function roundColor(color, depth = 30) {
134
- if (depth === "unlimited") return color;
135
- const newColor = { ...color };
136
- for (const [k, v] of Object.entries(color)) {
137
- if (typeof v !== "number" || k === "mode") continue;
138
- newColor[k] = DEPTH_ROUNDING[depth](v);
139
- }
140
- return newColor;
141
- }
142
99
 
143
100
  //#endregion
144
101
  //#region src/css/dimension.ts
@@ -172,7 +129,7 @@ function transformBorder(token, options) {
172
129
  style,
173
130
  typeof color === "string" ? color : color[colorKey]
174
131
  ].join(" ");
175
- return typeof color === "string" || displayable$1(color.p3) ? formatBorder(".") : {
132
+ return typeof color === "string" || inGamut(parse(color.p3), "display-p3") ? formatBorder(".") : {
176
133
  ".": formatBorder("."),
177
134
  srgb: formatBorder("srgb"),
178
135
  p3: formatBorder("p3"),
@@ -380,5 +337,5 @@ function transformCSSValue(token, options) {
380
337
  }
381
338
 
382
339
  //#endregion
383
- export { DEPTH_ROUNDING, defaultAliasTransform, generateShorthand, makeCSSVar, roundColor, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
340
+ export { DEPTH_ROUNDING, defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
384
341
  //# sourceMappingURL=css.js.map
package/dist/css.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","names":["displayable"],"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 {\n type Color,\n displayable,\n formatCss,\n formatHex,\n formatHex8,\n modeA98,\n modeHsl,\n modeHwb,\n modeLab,\n modeLab65,\n modeLch,\n modeLrgb,\n modeOkhsv,\n modeOklab,\n modeOklch,\n modeP3,\n modeProphoto,\n modeRec2020,\n modeRgb,\n modeXyz50,\n modeXyz65,\n round,\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\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 = 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)\n ? formatColor(color)\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nconst converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color> = {\n a98: useMode(modeA98),\n hsl: useMode(modeHsl),\n hwb: useMode(modeHwb),\n lab: useMode(modeLab),\n lab65: useMode(modeLab65),\n lch: useMode(modeLch),\n lrgb: useMode(modeLrgb),\n oklab: useMode(modeOklab),\n oklch: useMode(modeOklch),\n okhsv: useMode(modeOkhsv),\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\nexport const DEPTH_ROUNDING = {\n 24: round(4), // 24-bit almost fits into 3 decimal places, but not quite\n 30: round(4),\n 36: round(5),\n 48: round(6),\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\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, depth: Depth = 30) {\n if (!($value.colorSpace in CSS_TO_CULORI)) {\n throw new Error(\n `Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || 'oklab';\n let gamutSpace = conversionSpace;\n // bugfix. \"lab\" and \"oklab\" have a bug in Culori\n // https://github.com/Evercoder/culori/issues/261\n if (gamutSpace === 'lab' || gamutSpace === 'lab65') {\n gamutSpace = 'lch';\n } else if (gamutSpace === 'oklab') {\n gamutSpace = 'oklch';\n }\n let srgb = converters[conversionSpace](toGamut('rgb', gamutSpace)(culoriColor));\n let p3 = converters[conversionSpace](toGamut('p3', gamutSpace)(culoriColor));\n let rec2020 = converters[conversionSpace](toGamut('rec2020', gamutSpace)(culoriColor));\n if (typeof depth === 'number') {\n if (!DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n srgb = roundColor(srgb, depth);\n p3 = roundColor(p3, depth);\n rec2020 = roundColor(rec2020, depth);\n }\n return {\n '.': formatCss(culoriColor),\n srgb: formatCss(srgb),\n p3: formatCss(p3),\n rec2020: formatCss(rec2020),\n };\n}\n\n/** Round color to certain depth. */\nexport function roundColor<T extends Color = Color>(color: T, depth: Depth = 30): T {\n if (depth === 'unlimited') {\n return color;\n }\n const newColor = { ...color };\n for (const [k, v] of Object.entries(color)) {\n if (typeof v !== 'number' || k === 'mode') {\n continue;\n }\n newColor[k as keyof T] = DEPTH_ROUNDING[depth](v) as T[keyof T];\n }\n return newColor;\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 { 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":";;;;;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,EAAE,WAAW,iBAAiB,yBACtB;AACR,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,MAAM,WAAW,OAAO,MAAM;;;;;;AC2BvC,SAAgB,eACd,OACA,SAC8B;CAC9B,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,cAAc;EAAE;EAAY;EAAY;EAAO,CAAC;AAE9D,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,MAAM,OAAO,CAAC,kBAAkB;CAGxF,IAAI,cAAwC;AAC5C,KAAI,QAAQ,OAAO,UACjB,eAAc,MAAM,UAAU,IAAI,aAAa;AAGjD,QAAO,YAAY,MAAM,GACrB,YAAY,MAAM,GAClB,WAAW;EAAE;EAAY;EAAY;EAAO,EAAE,OAAO,QAAQ,OAAO,MAAM;;AAGhF,MAAM,aAA0E;CAC9E,KAAK,QAAQ,QAAQ;CACrB,KAAK,QAAQ,QAAQ;CACrB,KAAK,QAAQ,QAAQ;CACrB,KAAK,QAAQ,QAAQ;CACrB,OAAO,QAAQ,UAAU;CACzB,KAAK,QAAQ,QAAQ;CACrB,MAAM,QAAQ,SAAS;CACvB,OAAO,QAAQ,UAAU;CACzB,OAAO,QAAQ,UAAU;CACzB,OAAO,QAAQ,UAAU;CACzB,IAAI,QAAQ,OAAO;CACnB,UAAU,QAAQ,aAAa;CAC/B,SAAS,QAAQ,YAAY;CAC7B,KAAK,QAAQ,QAAQ;CACrB,OAAO,QAAQ,UAAU;CACzB,OAAO,QAAQ,UAAU;CAC1B;AAED,MAAa,iBAAiB;CAC5B,IAAI,MAAM,EAAE;CACZ,IAAI,MAAM,EAAE;CACZ,IAAI,MAAM,EAAE;CACZ,IAAI,MAAM,EAAE;CACb;;;;;;;AAUD,SAAS,WAAW,QAAwC,aAAoB,QAAe,IAAI;AACjG,KAAI,EAAE,OAAO,cAAc,eACzB,OAAM,IAAI,MACR,uBAAuB,OAAO,WAAW,sBAAsB,OAAO,KAAK,cAAc,CAAC,KAAK,KAAK,GACrG;CAEH,MAAM,kBAAkB,cAAc,OAAO,eAAe;CAC5D,IAAI,aAAa;AAGjB,KAAI,eAAe,SAAS,eAAe,QACzC,cAAa;UACJ,eAAe,QACxB,cAAa;CAEf,IAAI,OAAO,WAAW,iBAAiB,QAAQ,OAAO,WAAW,CAAC,YAAY,CAAC;CAC/E,IAAI,KAAK,WAAW,iBAAiB,QAAQ,MAAM,WAAW,CAAC,YAAY,CAAC;CAC5E,IAAI,UAAU,WAAW,iBAAiB,QAAQ,WAAW,WAAW,CAAC,YAAY,CAAC;AACtF,KAAI,OAAO,UAAU,UAAU;AAC7B,MAAI,CAAC,eAAe,OAClB,OAAM,IAAI,MAAM,sBAAsB,MAAM,sBAAsB,OAAO,KAAK,eAAe,CAAC,KAAK,KAAK,GAAG;AAE7G,SAAO,WAAW,MAAM,MAAM;AAC9B,OAAK,WAAW,IAAI,MAAM;AAC1B,YAAU,WAAW,SAAS,MAAM;;AAEtC,QAAO;EACL,KAAK,UAAU,YAAY;EAC3B,MAAM,UAAU,KAAK;EACrB,IAAI,UAAU,GAAG;EACjB,SAAS,UAAU,QAAQ;EAC5B;;;AAIH,SAAgB,WAAoC,OAAU,QAAe,IAAO;AAClF,KAAI,UAAU,YACZ,QAAO;CAET,MAAM,WAAW,EAAE,GAAG,OAAO;AAC7B,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,MAAM,EAAE;AAC1C,MAAI,OAAO,MAAM,YAAY,MAAM,OACjC;AAEF,WAAS,KAAgB,eAAe,OAAO,EAAE;;AAEnD,QAAO;;;;;;AClJT,SAAgB,mBAAmB,OAAiC,SAA2C;CAC7G,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;;;;;;ACN/E,SAAgB,qBAAqB,OAAmC,SAA2C;CACjH,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;;;;;;ACI3D,SAAgB,gBAAgB,OAA8B,SAAmC;CAC/F,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;AAErG,QAAO,OAAO,UAAU,YAAYA,cAAY,MAAM,GAAG,GACrD,aAAa,IAAI,GACjB;EACE,KAAK,aAAa,IAAI;EACtB,MAAM,aAAa,OAAO;EAC1B,IAAI,aAAa,KAAK;EACtB,SAAS,aAAa,UAAU;EACjC;;;;;;ACnCP,SAAgB,qBAAqB,OAAmC,SAA2C;CACjH,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;;;;;;ACPhB,SAAgB,kBAAkB,OAAgC,SAA2C;CAC3G,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAGxD,QAAO,GAAG,MAAM,OAAO,QAAQ,MAAM,OAAO;;;;;ACP9C,MAAM,oBAAoB;AAE1B,SAAgB,oBAAoB,OAAkC,SAA2C;CAC/G,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;;;;;;ACNnH,SAAgB,oBAAoB,OAAkC,SAA2C;CAC/G,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,OAAO;;;;;;ACJ7B,SAAgB,kBACd,OACA,SAC8B;CAC9B,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;CAGxD,IAAI,QAAQ;CAEZ,MAAM,SAA2C,EAAE;CACnD,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,cAAc,OAA4B,SAA2C;CACnG,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,QAAQ,MAAM,OAAO;;;;;;ACL9B,SAAgB,gBAAgB,OAA8B,SAA2C;CACvG,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAExD,QAAO,OAAO,MAAM,OAAO;;;;;;ACE7B,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,SACiC;CACjC,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;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;;;;;;ACtEP,SAAgB,gBAAgB,OAA8B,SAA2C;CACvG,MAAM,EAAE,WAAW,iBAAiB,0BAA0B;AAC9D,KAAI,MAAM,aAAa,GACrB,QAAO,eAAe,UAAU,MAAM,WAAW,IAAK;AAIxD,QAAO,OAAO,MAAM,OAAO;;;;;;ACL7B,SAAgB,oBAAoB,OAAkC,SAAmC;CACvG,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;;;;;;ACF1G,SAAgB,oBAAoB,OAAkC,SAAmC;CACvG,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;;;;;;AChCT,SAAgB,kBACd,OACA,SACA;AACA,SAAQ,MAAM,OAAd;EACE,KAAK,UACH,QAAO,iBAAiB,OAAO,QAAQ;EAEzC,KAAK,SACH,QAAO,gBAAgB,OAAO,QAAQ;EAExC,KAAK,QACH,QAAO,eAAe,OAAO,QAAQ;EAEvC,KAAK,cACH,QAAO,qBAAqB,OAAO,QAAQ;EAE7C,KAAK,YACH,QAAO,mBAAmB,OAAO,QAAQ;EAE3C,KAAK,WACH,QAAO,kBAAkB,OAAO,QAAQ;EAE1C,KAAK,aACH,QAAO,oBAAoB,OAAO,QAAQ;EAE5C,KAAK,aACH,QAAO,oBAAoB,OAAO,QAAQ;EAE5C,KAAK,WACH,QAAO,kBAAkB,OAAO,QAAQ;EAE1C,KAAK,OACH,QAAO,cAAc,OAAO,QAAQ;EAEtC,KAAK,SACH,QAAO,gBAAgB,OAAO,QAAQ;EAExC,KAAK,SACH,QAAO,gBAAgB,OAAO,QAAQ;EAExC,KAAK,SACH,QAAO,gBAAgB,OAAO,QAAQ;EAExC,KAAK,cACH,QAAO,qBAAqB,OAAO,QAAQ;EAE7C,KAAK,aACH,QAAO,oBAAoB,OAAO,QAAQ;EAE5C,KAAK,aACH,QAAO,oBAAoB,OAAO,QAAQ"}
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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"}
package/dist/index.d.ts CHANGED
@@ -1,41 +1,9 @@
1
- import { $ as StringToken, A as FontWeightValue, B as GroupNormalized, C as DurationValue, Ct as TypographyValue, D as FontFamilyValueNormalized, E as FontFamilyValue, F as GradientTokenNormalized, G as ModeMap, H as LinkToken, I as GradientValue, J as NumberValue, K as NumberToken, L as GradientValueNormalized, M as GradientStop, N as GradientStopNormalized, O as FontWeightToken, P as GradientToken, Q as ShadowValueNormalized, R as Group, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, V as GroupOrToken, W as LinkValue, X as ShadowTokenNormalized, Y as ShadowToken, Z as ShadowValue, _ as CubicBezierValue, _t as TransitionToken, a as BooleanValue, at as StrokeStyleValueExpanded, b as DimensionValue, bt as TransitionValueNormalized, c as BorderValue, ct as TokenMode, d as ColorToken, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, ft as TokenTransformed, g as CubicBezierTokenNormalized, gt as TokensSet, h as CubicBezierToken, ht as TokenTransformedSingleValue, i as BooleanTokenNormalized, it as StrokeStyleValue, j as FontWeightValueNormalized, k as FontWeightTokenNormalized, l as BorderValueNormalized, lt as TokenNormalized, m as ColorValueNormalized, mt as TokenTransformedMultiValue, n as AliasValue, nt as StrokeStyleToken, o as BorderToken, ot as Token, p as ColorValue, pt as TokenTransformedBase, q as NumberTokenNormalized, r as BooleanToken, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, st as TokenCore, t as AliasToken, tt as StringValue, u as ColorSpace, ut as TokenNormalizedCore, v as DimensionToken, vt as TransitionTokenNormalized, w as FontFamilyToken, wt as TypographyValueNormalized, x as DurationToken, xt as TypographyToken, y as DimensionTokenNormalized, yt as TransitionValue, z as GroupCore } from "./types-DpPbXNdS.js";
2
- import "culori/css";
3
- import { Color } from "culori/fn";
1
+ import { $ as StringToken, A as FontWeightValue, B as GroupNormalized, C as DurationValue, Ct as TypographyValue, D as FontFamilyValueNormalized, E as FontFamilyValue, F as GradientTokenNormalized, G as ModeMap, H as LinkToken, I as GradientValue, J as NumberValue, K as NumberToken, L as GradientValueNormalized, M as GradientStop, N as GradientStopNormalized, O as FontWeightToken, P as GradientToken, Q as ShadowValueNormalized, R as Group, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, V as GroupOrToken, W as LinkValue, X as ShadowTokenNormalized, Y as ShadowToken, Z as ShadowValue, _ as CubicBezierValue, _t as TransitionToken, a as BooleanValue, at as StrokeStyleValueExpanded, b as DimensionValue, bt as TransitionValueNormalized, c as BorderValue, ct as TokenMode, d as ColorToken, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, ft as TokenTransformed, g as CubicBezierTokenNormalized, gt as TokensSet, h as CubicBezierToken, ht as TokenTransformedSingleValue, i as BooleanTokenNormalized, it as StrokeStyleValue, j as FontWeightValueNormalized, k as FontWeightTokenNormalized, l as BorderValueNormalized, lt as TokenNormalized, m as ColorValueNormalized, mt as TokenTransformedMultiValue, n as AliasValue, nt as StrokeStyleToken, o as BorderToken, ot as Token, p as ColorValue, pt as TokenTransformedBase, q as NumberTokenNormalized, r as BooleanToken, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, st as TokenCore, t as AliasToken, tt as StringValue, u as ColorSpace, ut as TokenNormalizedCore, v as DimensionToken, vt as TransitionTokenNormalized, w as FontFamilyToken, wt as TypographyValueNormalized, x as DurationToken, xt as TypographyToken, y as DimensionTokenNormalized, yt as TransitionValue, z as GroupCore } from "./types-Cwbw-_yP.js";
2
+ import { n as parseColor, r as tokenToColor, t as COLOR_SPACE } from "./color-DoUasWha.js";
4
3
 
5
4
  //#region src/border.d.ts
6
5
  declare const BORDER_REQUIRED_PROPERTIES: readonly ["color", "width", "style"];
7
6
  //#endregion
8
- //#region src/color.d.ts
9
- declare const CULORI_TO_CSS: Record<Extract<Color['mode'], 'a98' | 'lab' | 'lab65' | 'lch' | 'oklab' | 'oklch' | 'okhsv' | 'hsl' | 'hwb' | 'lrgb' | 'p3' | 'prophoto' | 'rec2020' | 'rgb' | 'xyz50' | 'xyz65'>, ColorSpace>;
10
- declare const CSS_TO_CULORI: {
11
- readonly 'a98-rgb': "a98";
12
- readonly 'display-p3': "p3";
13
- readonly hsl: "hsl";
14
- readonly hwb: "hwb";
15
- readonly lab: "lab";
16
- readonly 'lab-d65': "lab65";
17
- readonly lch: "lch";
18
- readonly oklab: "oklab";
19
- readonly oklch: "oklch";
20
- readonly okhsv: "okhsv";
21
- readonly 'prophoto-rgb': "prophoto";
22
- readonly rec2020: "rec2020";
23
- readonly srgb: "rgb";
24
- readonly 'srgb-linear': "lrgb";
25
- readonly xyz: "xyz65";
26
- readonly 'xyz-d50': "xyz50";
27
- readonly 'xyz-d65': "xyz65";
28
- };
29
- /** Parse any color */
30
- declare function parseColor(color: string): ColorValueNormalized;
31
- /** Convert a color token to a Culori color */
32
- declare function tokenToCulori(value: ColorValueNormalized): Color | undefined;
33
- interface ColorSpaceDefinition {
34
- ranges: [min: number, max: number][];
35
- }
36
- /** Complete list of CSS Module 4 Colorspaces */
37
- declare const COLORSPACE: Record<ColorSpace, ColorSpaceDefinition>;
38
- //#endregion
39
7
  //#region src/font-weight.d.ts
40
8
  /** Mapping of valid names to numeric weights */
41
9
  declare const FONT_WEIGHTS: {
@@ -109,5 +77,5 @@ declare const TRANSITION_REQUIRED_PROPERTIES: readonly ["duration", "delay", "ti
109
77
  //#region src/typography.d.ts
110
78
  declare const TYPOGRAPHY_REQUIRED_PROPERTIES: readonly ["fontFamily", "fontSize", "fontWeight", "letterSpacing", "lineHeight"];
111
79
  //#endregion
112
- export { AliasToken, AliasValue, BORDER_REQUIRED_PROPERTIES, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, ColorSpace, ColorSpaceDefinition, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, CustomTransformOptions, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FONT_WEIGHTS, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GRADIENT_REQUIRED_STOP_PROPERTIES, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupNormalized, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokenTransformed, TokenTransformedBase, TokenTransformedMultiValue, TokenTransformedSingleValue, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
80
+ export { AliasToken, AliasValue, BORDER_REQUIRED_PROPERTIES, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, COLOR_SPACE, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, CustomTransformOptions, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FONT_WEIGHTS, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GRADIENT_REQUIRED_STOP_PROPERTIES, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupNormalized, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokenTransformed, TokenTransformedBase, TokenTransformedMultiValue, TokenTransformedSingleValue, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToColor, validateCustomTransform };
113
81
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/border.ts","../src/color.ts","../src/font-weight.ts","../src/gradient.ts","../src/id.ts","../src/shadow.ts","../src/string.ts","../src/stroke-style.ts","../src/transform.ts","../src/transition.ts","../src/typography.ts"],"sourcesContent":[],"mappings":";;;;;cAAa;;;cCMA,eAAe,OAC1B,QACE,oKAkBF;cAoBW;ED9CA,SAAA,SAAA,EAAA,KAAA;;;;ECMA,SAAA,GAAA,EAAA,KAsCH;EApCN,SAAA,SAAA,EAAA,OAAA;EADF,SAAA,GAAA,EAAA,KAAA;EAmBA,SAAA,KAAA,EAAA,OAAA;EApB0B,SAAA,KAAA,EAAA,OAAA;EAAM,SAAA,KAAA,EAAA,OAAA;EAwCrB,SAAA,cAkBH,EAAA,UAAA;EAGM,SAAA,OAAU,EAAA,SAAiB;EAmE3B,SAAA,IAAA,EAAA,KAAa;EA2DZ,SAAA,aAAA,EAAoB,MAAA;EAKxB,SAAA,GAAA,EAwHZ,OAAA;EAxH+B,SAAA,SAAA,EAAA,OAAA;EAAY,SAAA,SAAA,EAAA,OAAA;CAAnB;;iBAnIT,UAAA,iBAA2B;;iBAmE3B,aAAA,QAAqB,uBAAuB;ACrI/C,UDgMI,oBAAA,CCpKhB;;;;AC7BY,cFsMA,UEtMA,EFsMY,MEtMZ,CFsMmB,UEtM+C,EFsMnC,oBEtMmC,CAAA;;;;cDClE;;;;EFDA,aAAA,EAAA,MAAA;;;;ECMA,IAAA,EAAA,MAAA;EAET,MAAA,EAAA,MAAA;EADF,WAAA,EAAA,MAAA;EAmBA,WAAA,EAAA,MAAA;EApB0B,IAAA,EAAA,MAAA;EAAM,YAAA,EAAA,MAAA;EAwCrB,YAAA,EAAA,MAkBH;EAGM,KAAA,EAAA,MAAU;EAmEV,KAAA,EAAA,MAAA;EA2DC,aAAA,EAAA,MAAA;EAKJ,aAwHZ,EAAA,MAAA;CAxH+B;;;cEtMnB;;;;iBCKG,OAAA;;iBAKA,aAAA;;AJVH,iBImBG,SAAA,CJnB8D,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;iBIwB9D,UAAA;;AHlBH,iBGiCG,OAAA,CHKN,EAAA,EAAA,MAAA,CAAA,EAAA;EApCN,KAAA,EAAA,MAAA;EADF,KAAA,CAAA,EAAA,MAAA;CAmBA;;;cI1BW;;;;iBCCG,MAAA;;iBAuBA,+CAA+C,WAAW,IAAI;;ANxBjE,iBM6BG,SAAA,CN7B8D,GAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;cOAjE;cAWA;cAEA;;;UCbI,sBAAA;;;;;ARAJ,iBQMG,uBAAA,CRN8D,KAAA,EAAA,OAAA,EAAA;EAAA;AAAA,CAAA,EQMX,sBRNW,CAAA,EAAA,IAAA;;;cSAjE;;;cCAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/border.ts","../src/font-weight.ts","../src/gradient.ts","../src/id.ts","../src/shadow.ts","../src/string.ts","../src/stroke-style.ts","../src/transform.ts","../src/transition.ts","../src/typography.ts"],"mappings":";;;;cAAa,0BAAA;;;;cCCA,YAAA;;;;;;;;;;;;;;;;;;;;;;cCDA,iCAAA;;;;iBCKG,OAAA,CAAQ,KAAA;;iBAKR,aAAA,CAAc,OAAA,UAAiB,YAAA;AHV/C;AAAA,iBGmBgB,SAAA,CAAU,KAAA;;iBAKV,UAAA,CAAW,KAAA;;iBAeX,OAAA,CAAQ,EAAA;EAAe,KAAA;EAAe,KAAA;AAAA;;;cCvCzC,0BAAA;;;;iBCCG,MAAA,CAAO,KAAA,UAAe,MAAA,UAAgB,SAAA;;iBAuBtC,SAAA,YAAA,CAAsB,KAAA,UAAe,QAAA,EAAU,CAAA,EAAG,MAAA,EAAQ,CAAA,GAAI,CAAA;ALxB9E;AAAA,iBK6BgB,SAAA,CAAU,GAAA;;;cC7Bb,0BAAA;AAAA,cAWA,uCAAA;AAAA,cAEA,4BAAA;;;UCbI,sBAAA;;EAEf,KAAA;AAAA;APFF;AAAA,iBOMgB,uBAAA,CAAwB,KAAA;EAAkB;AAAA,GAAS,sBAAA;;;cCNtD,8BAAA;;;cCAA,8BAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as CSS_TO_CULORI, c as tokenToCulori, i as COLORSPACE, n as padStr, o as CULORI_TO_CSS, r as pluralize, s as parseColor, t as kebabCase } from "./string-BIhoe-L2.js";
1
+ import { a as parseColor, i as COLOR_SPACE, n as padStr, o as tokenToColor, r as pluralize, t as kebabCase } from "./string-BKbTpl-t.js";
2
2
  import wcmatch from "wildcard-match";
3
3
 
4
4
  //#region src/border.ts
@@ -130,5 +130,5 @@ const TYPOGRAPHY_REQUIRED_PROPERTIES = [
130
130
  ];
131
131
 
132
132
  //#endregion
133
- export { BORDER_REQUIRED_PROPERTIES, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, FONT_WEIGHTS, GRADIENT_REQUIRED_STOP_PROPERTIES, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
133
+ export { BORDER_REQUIRED_PROPERTIES, COLOR_SPACE, FONT_WEIGHTS, GRADIENT_REQUIRED_STOP_PROPERTIES, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToColor, validateCustomTransform };
134
134
  //# sourceMappingURL=index.js.map
package/dist/js.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { lt as TokenNormalized } from "./types-DpPbXNdS.js";
1
+ import { lt as TokenNormalized } from "./types-Cwbw-_yP.js";
2
2
 
3
3
  //#region src/js/index.d.ts
4
4
  interface TransformJSValueOptions {
package/dist/js.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"js.d.ts","names":[],"sources":["../src/js/index.ts"],"sourcesContent":[],"mappings":";;;UAEiB,uBAAA;;EAAA;EAYD,MAAA,CAAA,EAAA,MAAA;EAA2B;EAClC,cAAA,CAAA,EAAA,MAAA;;;;;;iBADO,2BAA2B,wBAClC;;;GAC6B"}
1
+ {"version":3,"file":"js.d.ts","names":[],"sources":["../src/js/index.ts"],"mappings":";;;UAEiB,uBAAA;EACf,IAAA;EADe;EAGf,MAAA;;EAEA,cAAA;AAAA;;;;;iBAOc,gBAAA,WAA2B,eAAA,CAAA,CACzC,KAAA,EAAO,CAAA;EACL,MAAA;EAAY;AAAA,GAAsB,uBAAA"}
@@ -0,0 +1,94 @@
1
+ import { A98RGB, ColorSpace, HSL, HWB, LCH, Lab, Lab_D65, OKLCH, OKLab, Okhsv, P3, ProPhoto, REC_2020, XYZ_D50, XYZ_D65, inGamut, parse, sRGB, sRGB_Linear, serialize } from "colorjs.io/fn";
2
+
3
+ //#region src/color.ts
4
+ /** Complete list of CSS Module 4 color spaces */
5
+ const COLOR_SPACE = {
6
+ "a98-rgb": A98RGB,
7
+ "display-p3": P3,
8
+ hsl: HSL,
9
+ hwb: HWB,
10
+ lab: Lab,
11
+ "lab-d65": Lab_D65,
12
+ lch: LCH,
13
+ okhsv: Okhsv,
14
+ oklab: OKLab,
15
+ oklch: OKLCH,
16
+ "prophoto-rgb": ProPhoto,
17
+ rec2020: REC_2020,
18
+ srgb: sRGB,
19
+ "srgb-linear": sRGB_Linear,
20
+ xyz: XYZ_D65,
21
+ "xyz-d50": XYZ_D50,
22
+ "xyz-d65": XYZ_D65
23
+ };
24
+ const COLOR_ID_TO_SPACE = {};
25
+ for (const s of Object.values(COLOR_SPACE)) {
26
+ ColorSpace.register(s);
27
+ COLOR_ID_TO_SPACE[s.id] = s;
28
+ for (const alias of s.aliases ?? []) COLOR_ID_TO_SPACE[alias] = s;
29
+ }
30
+ /** Parse any color */
31
+ function parseColor(color) {
32
+ const result = parse(color);
33
+ const value = {
34
+ colorSpace: COLOR_ID_TO_SPACE[result.spaceId].cssId,
35
+ components: result.coords,
36
+ alpha: result.alpha ?? 1
37
+ };
38
+ if (!inGamut(result, "srgb")) value.hex = serialize(result, { format: "hex" });
39
+ return value;
40
+ }
41
+ /** Convert a color token to a Color.js color */
42
+ function tokenToColor(value) {
43
+ const space = COLOR_SPACE[value.colorSpace];
44
+ if (!space) throw new Error(`Invalid color space "${value.colorSpace}".`);
45
+ return {
46
+ spaceId: space.id,
47
+ space,
48
+ coords: value.components,
49
+ alpha: value.alpha
50
+ };
51
+ }
52
+
53
+ //#endregion
54
+ //#region src/string.ts
55
+ /** Pad string lengths */
56
+ function padStr(input, length, alignment = "left") {
57
+ const d = Math.min(length || 0, 1e3) - input.length;
58
+ if (d > 0) switch (alignment) {
59
+ case "left": return `${input}${" ".repeat(d)}`;
60
+ case "right": return `${" ".repeat(d)}${input}`;
61
+ case "center": {
62
+ const left = Math.floor(d / 2);
63
+ const right = d - left;
64
+ return `${" ".repeat(left)}${input}${" ".repeat(right)}`;
65
+ }
66
+ }
67
+ return input;
68
+ }
69
+ /** Pluralize strings */
70
+ function pluralize(count, singular, plural) {
71
+ return count === 1 ? singular : plural;
72
+ }
73
+ /** Turn a string into kebab-case */
74
+ function kebabCase(str) {
75
+ let output = "";
76
+ for (const c of str.split("")) {
77
+ if (c === ".") {
78
+ output += "-";
79
+ continue;
80
+ }
81
+ let isFirstUppercase = true;
82
+ if (isFirstUppercase && /\p{Uppercase_Letter}/u.test(c)) {
83
+ output += `-${c.toLocaleLowerCase()}`;
84
+ isFirstUppercase = false;
85
+ continue;
86
+ } else isFirstUppercase = true;
87
+ output += c;
88
+ }
89
+ return output;
90
+ }
91
+
92
+ //#endregion
93
+ export { parseColor as a, COLOR_SPACE as i, padStr as n, tokenToColor as o, pluralize as r, kebabCase as t };
94
+ //# sourceMappingURL=string-BKbTpl-t.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-BKbTpl-t.js","names":[],"sources":["../src/color.ts","../src/string.ts"],"sourcesContent":["import {\n A98RGB,\n type ColorConstructor,\n ColorSpace as ColorJS,\n type Coords,\n HSL,\n HWB,\n inGamut,\n Lab,\n Lab_D65,\n LCH,\n OKLab,\n OKLCH,\n Okhsv,\n P3,\n type PlainColorObject,\n ProPhoto,\n parse,\n REC_2020,\n serialize,\n sRGB,\n sRGB_Linear,\n XYZ_D50,\n XYZ_D65,\n} from 'colorjs.io/fn';\nimport type { ColorSpace, ColorValueNormalized } from './types.js';\n\n/** Complete list of CSS Module 4 color spaces */\nexport const COLOR_SPACE: Record<ColorSpace, ColorJS> = {\n 'a98-rgb': A98RGB,\n 'display-p3': P3,\n hsl: HSL,\n hwb: HWB,\n lab: Lab,\n 'lab-d65': Lab_D65,\n lch: LCH,\n okhsv: Okhsv,\n oklab: OKLab,\n oklch: OKLCH,\n 'prophoto-rgb': ProPhoto,\n rec2020: REC_2020,\n srgb: sRGB,\n 'srgb-linear': sRGB_Linear,\n xyz: XYZ_D65,\n 'xyz-d50': XYZ_D50,\n 'xyz-d65': XYZ_D65,\n};\n\nconst COLOR_ID_TO_SPACE: Record<string, ColorJS> = {};\nfor (const s of Object.values(COLOR_SPACE)) {\n ColorJS.register(s);\n COLOR_ID_TO_SPACE[s.id] = s;\n for (const alias of s.aliases ?? []) {\n COLOR_ID_TO_SPACE[alias] = s;\n }\n}\n\n/** Parse any color */\nexport function parseColor(color: string): ColorValueNormalized {\n const result = parse(color);\n const value: ColorValueNormalized = {\n colorSpace: COLOR_ID_TO_SPACE[result.spaceId]!.cssId as ColorSpace,\n components: result.coords,\n alpha: result.alpha ?? 1,\n };\n if (!inGamut(result, 'srgb')) {\n value.hex = serialize(result, { format: 'hex' });\n }\n return value;\n}\n\n/** Convert a color token to a Color.js color */\nexport function tokenToColor(value: ColorValueNormalized): ColorConstructor & PlainColorObject {\n const space = COLOR_SPACE[value.colorSpace];\n if (!space) {\n throw new Error(`Invalid color space \"${value.colorSpace}\".`);\n }\n return {\n spaceId: space.id,\n space: space,\n coords: value.components as Coords,\n alpha: value.alpha,\n };\n}\n","/** Pad string lengths */\nexport function padStr(input: string, length: number, alignment: 'left' | 'center' | 'right' = 'left'): string {\n const d =\n Math.min(length || 0, 1000) - // guard against NaNs and Infinity\n input.length;\n if (d > 0) {\n switch (alignment) {\n case 'left': {\n return `${input}${' '.repeat(d)}`;\n }\n case 'right': {\n return `${' '.repeat(d)}${input}`;\n }\n case 'center': {\n const left = Math.floor(d / 2);\n const right = d - left;\n return `${' '.repeat(left)}${input}${' '.repeat(right)}`;\n }\n }\n }\n return input;\n}\n\n/** Pluralize strings */\nexport function pluralize<T = string>(count: number, singular: T, plural: T): T {\n return count === 1 ? singular : plural;\n}\n\n/** Turn a string into kebab-case */\nexport function kebabCase(str: string): string {\n let output = '';\n for (const c of str.split('')) {\n if (c === '.') {\n output += '-';\n continue;\n }\n let isFirstUppercase = true;\n if (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n output += `-${c.toLocaleLowerCase()}`;\n isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters\n continue;\n } else {\n isFirstUppercase = true; // reset\n }\n\n output += c;\n }\n return output;\n}\n"],"mappings":";;;;AA4BA,MAAa,cAA2C;CACtD,WAAW;CACX,cAAc;CACd,KAAK;CACL,KAAK;CACL,KAAK;CACL,WAAW;CACX,KAAK;CACL,OAAO;CACP,OAAO;CACP,OAAO;CACP,gBAAgB;CAChB,SAAS;CACT,MAAM;CACN,eAAe;CACf,KAAK;CACL,WAAW;CACX,WAAW;CACZ;AAED,MAAM,oBAA6C,EAAE;AACrD,KAAK,MAAM,KAAK,OAAO,OAAO,YAAY,EAAE;AAC1C,YAAQ,SAAS,EAAE;AACnB,mBAAkB,EAAE,MAAM;AAC1B,MAAK,MAAM,SAAS,EAAE,WAAW,EAAE,CACjC,mBAAkB,SAAS;;;AAK/B,SAAgB,WAAW,OAAqC;CAC9D,MAAM,SAAS,MAAM,MAAM;CAC3B,MAAM,QAA8B;EAClC,YAAY,kBAAkB,OAAO,SAAU;EAC/C,YAAY,OAAO;EACnB,OAAO,OAAO,SAAS;EACxB;AACD,KAAI,CAAC,QAAQ,QAAQ,OAAO,CAC1B,OAAM,MAAM,UAAU,QAAQ,EAAE,QAAQ,OAAO,CAAC;AAElD,QAAO;;;AAIT,SAAgB,aAAa,OAAkE;CAC7F,MAAM,QAAQ,YAAY,MAAM;AAChC,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,wBAAwB,MAAM,WAAW,IAAI;AAE/D,QAAO;EACL,SAAS,MAAM;EACR;EACP,QAAQ,MAAM;EACd,OAAO,MAAM;EACd;;;;;;ACjFH,SAAgB,OAAO,OAAe,QAAgB,YAAyC,QAAgB;CAC7G,MAAM,IACJ,KAAK,IAAI,UAAU,GAAG,IAAK,GAC3B,MAAM;AACR,KAAI,IAAI,EACN,SAAQ,WAAR;EACE,KAAK,OACH,QAAO,GAAG,QAAQ,IAAI,OAAO,EAAE;EAEjC,KAAK,QACH,QAAO,GAAG,IAAI,OAAO,EAAE,GAAG;EAE5B,KAAK,UAAU;GACb,MAAM,OAAO,KAAK,MAAM,IAAI,EAAE;GAC9B,MAAM,QAAQ,IAAI;AAClB,UAAO,GAAG,IAAI,OAAO,KAAK,GAAG,QAAQ,IAAI,OAAO,MAAM;;;AAI5D,QAAO;;;AAIT,SAAgB,UAAsB,OAAe,UAAa,QAAc;AAC9E,QAAO,UAAU,IAAI,WAAW;;;AAIlC,SAAgB,UAAU,KAAqB;CAC7C,IAAI,SAAS;AACb,MAAK,MAAM,KAAK,IAAI,MAAM,GAAG,EAAE;AAC7B,MAAI,MAAM,KAAK;AACb,aAAU;AACV;;EAEF,IAAI,mBAAmB;AACvB,MAAI,oBAAoB,wBAAwB,KAAK,EAAE,EAAE;AACvD,aAAU,IAAI,EAAE,mBAAmB;AACnC,sBAAmB;AACnB;QAEA,oBAAmB;AAGrB,YAAU;;AAEZ,QAAO"}
@@ -231,8 +231,7 @@ interface TokenNormalizedCore<$type extends Token['$type']> {
231
231
  id: string;
232
232
  /** Originating token location */
233
233
  source: {
234
- /** @deprecated use filename instead */
235
- loc?: string;
234
+ /** @deprecated use filename instead */loc?: string;
236
235
  filename: string | undefined;
237
236
  node: momoa.ObjectNode;
238
237
  };
@@ -484,4 +483,4 @@ interface TokenTransformedMultiValue extends TokenTransformedBase {
484
483
  type TokenTransformed = TokenTransformedSingleValue | TokenTransformedMultiValue;
485
484
  //#endregion
486
485
  export { StringToken as $, FontWeightValue as A, GroupNormalized as B, DurationValue as C, TypographyValue as Ct, FontFamilyValueNormalized as D, FontFamilyValue as E, GradientTokenNormalized as F, ModeMap as G, LinkToken as H, GradientValue as I, NumberValue as J, NumberToken as K, GradientValueNormalized as L, GradientStop as M, GradientStopNormalized as N, FontWeightToken as O, GradientToken as P, ShadowValueNormalized as Q, Group as R, DurationTokenNormalized as S, TypographyTokenNormalized as St, FontFamilyTokenNormalized as T, LinkTokenNormalized as U, GroupOrToken as V, LinkValue as W, ShadowTokenNormalized as X, ShadowToken as Y, ShadowValue as Z, CubicBezierValue as _, TransitionToken as _t, BooleanValue as a, StrokeStyleValueExpanded as at, DimensionValue as b, TransitionValueNormalized as bt, BorderValue as c, TokenMode as ct, ColorToken as d, TokenNormalizedSet as dt, StringTokenNormalized as et, ColorTokenNormalized as f, TokenTransformed as ft, CubicBezierTokenNormalized as g, TokensSet as gt, CubicBezierToken as h, TokenTransformedSingleValue as ht, BooleanTokenNormalized as i, StrokeStyleValue as it, FontWeightValueNormalized as j, FontWeightTokenNormalized as k, BorderValueNormalized as l, TokenNormalized as lt, ColorValueNormalized as m, TokenTransformedMultiValue as mt, AliasValue as n, StrokeStyleToken as nt, BorderToken as o, Token as ot, ColorValue as p, TokenTransformedBase as pt, NumberTokenNormalized as q, BooleanToken as r, StrokeStyleTokenNormalized as rt, BorderTokenNormalized as s, TokenCore as st, AliasToken as t, StringValue as tt, ColorSpace as u, TokenNormalizedCore as ut, DimensionToken as v, TransitionTokenNormalized as vt, FontFamilyToken as w, TypographyValueNormalized as wt, DurationToken as x, TypographyToken as xt, DimensionTokenNormalized as y, TransitionValue as yt, GroupCore as z };
487
- //# sourceMappingURL=types-DpPbXNdS.d.ts.map
486
+ //# sourceMappingURL=types-Cwbw-_yP.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-Cwbw-_yP.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terrazzo/token-tools",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.3",
4
4
  "description": "Various utilities for token types",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -36,12 +36,9 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@humanwhocodes/momoa": "^3.3.10",
39
- "culori": "^4.0.2",
39
+ "colorjs.io": "^0.6.1",
40
40
  "wildcard-match": "^5.1.4"
41
41
  },
42
- "devDependencies": {
43
- "@types/culori": "^4.0.1"
44
- },
45
42
  "scripts": {
46
43
  "build": "rolldown -c && attw --profile esm-only --pack .",
47
44
  "dev": "rolldown -w -c",
@@ -1,348 +0,0 @@
1
- import "culori/css";
2
- import { formatHex, parse } from "culori/fn";
3
-
4
- //#region src/color.ts
5
- const HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
6
- const CULORI_TO_CSS = {
7
- a98: "a98-rgb",
8
- hsl: "hsl",
9
- hwb: "hwb",
10
- lab: "lab",
11
- lab65: "lab-d65",
12
- lch: "lch",
13
- lrgb: "srgb-linear",
14
- oklab: "oklab",
15
- oklch: "oklch",
16
- okhsv: "okhsv",
17
- p3: "display-p3",
18
- prophoto: "prophoto-rgb",
19
- rec2020: "rec2020",
20
- rgb: "srgb",
21
- xyz50: "xyz-d50",
22
- xyz65: "xyz-d65"
23
- };
24
- const CSS_TO_CULORI = {
25
- "a98-rgb": "a98",
26
- "display-p3": "p3",
27
- hsl: "hsl",
28
- hwb: "hwb",
29
- lab: "lab",
30
- "lab-d65": "lab65",
31
- lch: "lch",
32
- oklab: "oklab",
33
- oklch: "oklch",
34
- okhsv: "okhsv",
35
- "prophoto-rgb": "prophoto",
36
- rec2020: "rec2020",
37
- srgb: "rgb",
38
- "srgb-linear": "lrgb",
39
- xyz: "xyz65",
40
- "xyz-d50": "xyz50",
41
- "xyz-d65": "xyz65"
42
- };
43
- /** Parse any color */
44
- function parseColor(color) {
45
- const result = parse(color);
46
- if (!result) throw new Error(`Unable to parse color "${color}"`);
47
- if (!(result.mode in CULORI_TO_CSS)) throw new Error(`Unsupported color space: ${result.mode}`);
48
- const colorSpace = CULORI_TO_CSS[result.mode];
49
- let components = [
50
- 0,
51
- 0,
52
- 0
53
- ];
54
- switch (result.mode) {
55
- case "a98":
56
- case "rec2020":
57
- case "p3":
58
- case "prophoto":
59
- case "lrgb":
60
- case "rgb":
61
- components = [
62
- result.r,
63
- result.g,
64
- result.b
65
- ];
66
- break;
67
- case "hsl": {
68
- const maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;
69
- const maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;
70
- components = [
71
- result.h ?? 0,
72
- result.s * maxS,
73
- result.l * maxL
74
- ];
75
- break;
76
- }
77
- case "hwb": {
78
- const maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;
79
- const maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;
80
- components = [
81
- result.h ?? 0,
82
- result.w * maxW,
83
- result.b * maxB
84
- ];
85
- break;
86
- }
87
- case "lab":
88
- case "lab65":
89
- case "oklab":
90
- components = [
91
- result.l,
92
- result.a,
93
- result.b
94
- ];
95
- break;
96
- case "lch":
97
- case "oklch":
98
- components = [
99
- result.l,
100
- result.c,
101
- result.h ?? 0
102
- ];
103
- break;
104
- case "okhsv":
105
- components = [
106
- result.h ?? 0,
107
- result.s,
108
- result.v
109
- ];
110
- break;
111
- case "xyz50":
112
- case "xyz65":
113
- components = [
114
- result.x,
115
- result.y,
116
- result.z
117
- ];
118
- break;
119
- }
120
- const value = {
121
- colorSpace,
122
- components,
123
- alpha: result.alpha ?? 1
124
- };
125
- if (HEX_RE.test(color)) value.hex = formatHex(result);
126
- return value;
127
- }
128
- /** Convert a color token to a Culori color */
129
- function tokenToCulori(value) {
130
- switch (value.colorSpace) {
131
- case "a98-rgb":
132
- case "display-p3":
133
- case "prophoto-rgb":
134
- case "rec2020":
135
- case "srgb":
136
- case "srgb-linear": {
137
- const [r, g, b] = value.components;
138
- return {
139
- mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,
140
- r,
141
- g,
142
- b,
143
- alpha: value.alpha
144
- };
145
- }
146
- case "hsl": {
147
- const [h, s, l] = value.components;
148
- const maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;
149
- const maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;
150
- return {
151
- mode: "hsl",
152
- h,
153
- s: s / maxS,
154
- l: l / maxL,
155
- alpha: value.alpha
156
- };
157
- }
158
- case "hwb": {
159
- const [h, w, b] = value.components;
160
- const maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;
161
- const maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;
162
- return {
163
- mode: "hwb",
164
- h,
165
- w: w / maxW,
166
- b: b / maxB,
167
- alpha: value.alpha
168
- };
169
- }
170
- case "lab":
171
- case "lab-d65":
172
- case "oklab": {
173
- const [l = 0, a = 0, b = 0] = value.components;
174
- return {
175
- mode: value.colorSpace === "lab-d65" ? "lab65" : value.colorSpace,
176
- l,
177
- a,
178
- b,
179
- alpha: value.alpha
180
- };
181
- }
182
- case "lch":
183
- case "oklch": {
184
- const [l, c, h] = value.components;
185
- return {
186
- mode: value.colorSpace,
187
- l,
188
- c,
189
- h,
190
- alpha: value.alpha
191
- };
192
- }
193
- case "okhsv": {
194
- const [h, s, v] = value.components;
195
- return {
196
- mode: value.colorSpace,
197
- h,
198
- s,
199
- v,
200
- alpha: value.alpha
201
- };
202
- }
203
- case "xyz":
204
- case "xyz-d50":
205
- case "xyz-d65": {
206
- const [x, y, z] = value.components;
207
- return {
208
- mode: CSS_TO_CULORI[value.colorSpace],
209
- x,
210
- y,
211
- z,
212
- alpha: value.alpha
213
- };
214
- }
215
- default: throw new Error(`Invalid colorSpace "${value.colorSpace}". Expected one of ${Object.keys(CSS_TO_CULORI).join(", ")}`);
216
- }
217
- }
218
- /** Complete list of CSS Module 4 Colorspaces */
219
- const COLORSPACE = {
220
- "a98-rgb": { ranges: [
221
- [0, 1],
222
- [0, 1],
223
- [0, 1]
224
- ] },
225
- "display-p3": { ranges: [
226
- [0, 1],
227
- [0, 1],
228
- [0, 1]
229
- ] },
230
- hsl: { ranges: [
231
- [0, 360],
232
- [0, 100],
233
- [0, 100]
234
- ] },
235
- hwb: { ranges: [
236
- [0, 360],
237
- [0, 100],
238
- [0, 100]
239
- ] },
240
- lab: { ranges: [
241
- [0, 100],
242
- [-125, 125],
243
- [-125, 125]
244
- ] },
245
- "lab-d65": { ranges: [
246
- [0, 100],
247
- [-125, 125],
248
- [-125, 125]
249
- ] },
250
- lch: { ranges: [
251
- [0, 100],
252
- [0, 150],
253
- [0, 360]
254
- ] },
255
- oklab: { ranges: [
256
- [0, 1],
257
- [-.4, .4],
258
- [-.4, .4]
259
- ] },
260
- oklch: { ranges: [
261
- [0, 1],
262
- [0, .4],
263
- [0, 360]
264
- ] },
265
- okhsv: { ranges: [
266
- [0, 360],
267
- [0, 1],
268
- [0, 1]
269
- ] },
270
- "prophoto-rgb": { ranges: [
271
- [0, 1],
272
- [0, 1],
273
- [0, 1]
274
- ] },
275
- rec2020: { ranges: [
276
- [0, 1],
277
- [0, 1],
278
- [0, 1]
279
- ] },
280
- srgb: { ranges: [
281
- [0, 1],
282
- [0, 1],
283
- [0, 1]
284
- ] },
285
- "srgb-linear": { ranges: [
286
- [0, 1],
287
- [0, 1],
288
- [0, 1]
289
- ] },
290
- "xyz-d50": { ranges: [
291
- [0, 1],
292
- [0, 1],
293
- [0, 1]
294
- ] },
295
- xyz: { ranges: [
296
- [0, 1],
297
- [0, 1],
298
- [0, 1]
299
- ] },
300
- "xyz-d65": { ranges: [
301
- [0, 1],
302
- [0, 1],
303
- [0, 1]
304
- ] }
305
- };
306
-
307
- //#endregion
308
- //#region src/string.ts
309
- /** Pad string lengths */
310
- function padStr(input, length, alignment = "left") {
311
- const d = Math.min(length || 0, 1e3) - input.length;
312
- if (d > 0) switch (alignment) {
313
- case "left": return `${input}${" ".repeat(d)}`;
314
- case "right": return `${" ".repeat(d)}${input}`;
315
- case "center": {
316
- const left = Math.floor(d / 2);
317
- const right = d - left;
318
- return `${" ".repeat(left)}${input}${" ".repeat(right)}`;
319
- }
320
- }
321
- return input;
322
- }
323
- /** Pluralize strings */
324
- function pluralize(count, singular, plural) {
325
- return count === 1 ? singular : plural;
326
- }
327
- /** Turn a string into kebab-case */
328
- function kebabCase(str) {
329
- let output = "";
330
- for (const c of str.split("")) {
331
- if (c === ".") {
332
- output += "-";
333
- continue;
334
- }
335
- let isFirstUppercase = true;
336
- if (isFirstUppercase && /\p{Uppercase_Letter}/u.test(c)) {
337
- output += `-${c.toLocaleLowerCase()}`;
338
- isFirstUppercase = false;
339
- continue;
340
- } else isFirstUppercase = true;
341
- output += c;
342
- }
343
- return output;
344
- }
345
-
346
- //#endregion
347
- export { CSS_TO_CULORI as a, tokenToCulori as c, COLORSPACE as i, padStr as n, CULORI_TO_CSS as o, pluralize as r, parseColor as s, kebabCase as t };
348
- //# sourceMappingURL=string-BIhoe-L2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-BIhoe-L2.js","names":[],"sources":["../src/color.ts","../src/string.ts"],"sourcesContent":["import 'culori/css';\nimport { type Color, formatHex, parse } from 'culori/fn';\nimport type { ColorSpace, ColorValueNormalized } from './types.js';\n\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nexport const CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lab65'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'okhsv'\n | 'hsl'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n> = {\n a98: 'a98-rgb',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n lab65: 'lab-d65',\n lch: 'lch',\n lrgb: 'srgb-linear',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n p3: 'display-p3',\n prophoto: 'prophoto-rgb',\n rec2020: 'rec2020',\n rgb: 'srgb',\n xyz50: 'xyz-d50',\n xyz65: 'xyz-d65',\n} as const;\n\nexport const CSS_TO_CULORI = {\n 'a98-rgb': 'a98',\n 'display-p3': 'p3',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n 'lab-d65': 'lab65',\n lch: 'lch',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n 'prophoto-rgb': 'prophoto',\n rec2020: 'rec2020',\n srgb: 'rgb',\n 'srgb-linear': 'lrgb',\n xyz: 'xyz65',\n 'xyz-d50': 'xyz50',\n 'xyz-d65': 'xyz65',\n} as const;\n\n/** Parse any color */\nexport function parseColor(color: string): ColorValueNormalized {\n const result = parse(color);\n if (!result) {\n throw new Error(`Unable to parse color \"${color}\"`);\n }\n if (!(result.mode in CULORI_TO_CSS)) {\n throw new Error(`Unsupported color space: ${result.mode}`);\n }\n const colorSpace = CULORI_TO_CSS[result.mode as keyof typeof CULORI_TO_CSS]!;\n let components: [number, number, number] = [0, 0, 0];\n switch (result.mode) {\n case 'a98':\n case 'rec2020':\n case 'p3':\n case 'prophoto':\n case 'lrgb':\n case 'rgb': {\n components = [result.r, result.g, result.b];\n break;\n }\n case 'hsl': {\n const maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.s * maxS, result.l * maxL];\n break;\n }\n case 'hwb': {\n const maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.w * maxW, result.b * maxB];\n break;\n }\n case 'lab':\n case 'lab65':\n case 'oklab': {\n components = [result.l, result.a, result.b];\n break;\n }\n case 'lch':\n case 'oklch': {\n components = [result.l, result.c, result.h ?? 0];\n break;\n }\n case 'okhsv': {\n components = [result.h ?? 0, result.s, result.v];\n break;\n }\n case 'xyz50':\n case 'xyz65': {\n components = [result.x, result.y, result.z];\n break;\n }\n }\n const value: ColorValueNormalized = {\n colorSpace,\n components,\n alpha: result.alpha ?? 1,\n };\n if (HEX_RE.test(color)) {\n // Note: this intentionally does NOT include alpha; it’s already in alpha.\n // Always use formatHex (not formatHex8).\n value.hex = formatHex(result);\n }\n return value;\n}\n\n/** Convert a color token to a Culori color */\nexport function tokenToCulori(value: ColorValueNormalized): Color | undefined {\n switch (value.colorSpace) {\n case 'a98-rgb':\n case 'display-p3':\n case 'prophoto-rgb':\n case 'rec2020':\n case 'srgb':\n case 'srgb-linear': {\n const [r, g, b] = value.components;\n return {\n mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n r,\n g,\n b,\n alpha: value.alpha,\n } as Color;\n }\n case 'hsl': {\n const [h, s, l] = value.components;\n const maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hsl', h: h!, s: s! / maxS, l: l! / maxL, alpha: value.alpha };\n }\n case 'hwb': {\n const [h, w, b] = value.components;\n const maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hwb', h: h!, w: w! / maxW, b: b! / maxB, alpha: value.alpha };\n }\n case 'lab':\n case 'lab-d65':\n case 'oklab': {\n const [l = 0, a = 0, b = 0] = value.components;\n const mode = value.colorSpace === 'lab-d65' ? 'lab65' : value.colorSpace;\n return { mode, l: l!, a: a!, b: b!, alpha: value.alpha };\n }\n case 'lch':\n case 'oklch': {\n const [l, c, h] = value.components;\n return { mode: value.colorSpace, l: l!, c: c!, h: h!, alpha: value.alpha };\n }\n case 'okhsv': {\n const [h, s, v] = value.components;\n return { mode: value.colorSpace, h: h!, s: s!, v: v!, alpha: value.alpha };\n }\n case 'xyz':\n case 'xyz-d50':\n case 'xyz-d65': {\n const [x, y, z] = value.components;\n return { mode: CSS_TO_CULORI[value.colorSpace], x: x!, y: y!, z: z!, alpha: value.alpha };\n }\n default: {\n throw new Error(\n `Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n }\n}\n\nexport interface ColorSpaceDefinition {\n ranges: [min: number, max: number][];\n}\n\n/** Complete list of CSS Module 4 Colorspaces */\nexport const COLORSPACE: Record<ColorSpace, ColorSpaceDefinition> = {\n 'a98-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'display-p3': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n hsl: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n hwb: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n lab: {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n 'lab-d65': {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n lch: {\n ranges: [\n [0.0, 100.0],\n [0, 150.0],\n [0.0, 360.0],\n ],\n },\n oklab: {\n ranges: [\n [0.0, 1.0],\n [-0.4, 0.4],\n [-0.4, 0.4],\n ],\n },\n oklch: {\n ranges: [\n [0.0, 1.0],\n [0.0, 0.4],\n [0.0, 360.0],\n ],\n },\n okhsv: {\n ranges: [\n [0.0, 360.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'prophoto-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n rec2020: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n srgb: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'srgb-linear': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d50': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n xyz: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d65': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n};\n","/** Pad string lengths */\nexport function padStr(input: string, length: number, alignment: 'left' | 'center' | 'right' = 'left'): string {\n const d =\n Math.min(length || 0, 1000) - // guard against NaNs and Infinity\n input.length;\n if (d > 0) {\n switch (alignment) {\n case 'left': {\n return `${input}${' '.repeat(d)}`;\n }\n case 'right': {\n return `${' '.repeat(d)}${input}`;\n }\n case 'center': {\n const left = Math.floor(d / 2);\n const right = d - left;\n return `${' '.repeat(left)}${input}${' '.repeat(right)}`;\n }\n }\n }\n return input;\n}\n\n/** Pluralize strings */\nexport function pluralize<T = string>(count: number, singular: T, plural: T): T {\n return count === 1 ? singular : plural;\n}\n\n/** Turn a string into kebab-case */\nexport function kebabCase(str: string): string {\n let output = '';\n for (const c of str.split('')) {\n if (c === '.') {\n output += '-';\n continue;\n }\n let isFirstUppercase = true;\n if (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n output += `-${c.toLocaleLowerCase()}`;\n isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters\n continue;\n } else {\n isFirstUppercase = true; // reset\n }\n\n output += c;\n }\n return output;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-DpPbXNdS.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}