@terrazzo/token-tools 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @terrazzo/token-tools
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#724](https://github.com/terrazzoapp/terrazzo/pull/724) [`fefd4b1`](https://github.com/terrazzoapp/terrazzo/commit/fefd4b149d03ca2199eaddc7b197e4e081169e7f) Thanks [@avasis-ai](https://github.com/avasis-ai)! - fix: avoid duplicate WideGamutColorValue when downsampled gamuts are identical
8
+
3
9
  ## 2.0.3
4
10
 
5
11
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { m as ColorValueNormalized, u as ColorSpace$1 } from "./types-Cwbw-_yP.js";
1
+ import { m as ColorValueNormalized, u as ColorSpace$1 } from "./types-CVck8QfU.js";
2
2
  import { ColorConstructor, ColorSpace, PlainColorObject } from "colorjs.io/fn";
3
3
 
4
4
  //#region src/color.d.ts
@@ -10,4 +10,4 @@ declare function parseColor(color: string): ColorValueNormalized;
10
10
  declare function tokenToColor(value: ColorValueNormalized): ColorConstructor & PlainColorObject;
11
11
  //#endregion
12
12
  export { parseColor as n, tokenToColor as r, COLOR_SPACE as t };
13
- //# sourceMappingURL=color-DoUasWha.d.ts.map
13
+ //# sourceMappingURL=color-CCeeDSpW.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"color-CCeeDSpW.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,4 +1,4 @@
1
- import { F as GradientTokenNormalized, Q as ShadowValueNormalized, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, X as ShadowTokenNormalized, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, ft as TokenTransformed, g as CubicBezierTokenNormalized, ht as TokenTransformedSingleValue, i as BooleanTokenNormalized, k as FontWeightTokenNormalized, lt as TokenNormalized, mt as TokenTransformedMultiValue, q as NumberTokenNormalized, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, vt as TransitionTokenNormalized, y as DimensionTokenNormalized } from "./types-Cwbw-_yP.js";
1
+ import { F as GradientTokenNormalized, Q as ShadowValueNormalized, S as DurationTokenNormalized, St as TypographyTokenNormalized, T as FontFamilyTokenNormalized, U as LinkTokenNormalized, X as ShadowTokenNormalized, dt as TokenNormalizedSet, et as StringTokenNormalized, f as ColorTokenNormalized, ft as TokenTransformed, g as CubicBezierTokenNormalized, ht as TokenTransformedSingleValue, i as BooleanTokenNormalized, k as FontWeightTokenNormalized, lt as TokenNormalized, mt as TokenTransformedMultiValue, q as NumberTokenNormalized, rt as StrokeStyleTokenNormalized, s as BorderTokenNormalized, vt as TransitionTokenNormalized, y as DimensionTokenNormalized } from "./types-CVck8QfU.js";
2
2
  //#region src/css/lib.d.ts
3
3
  /** Function that generates a var(…) statement */
4
4
  type IDGenerator<T = TokenNormalized> = (token: T) => string;
package/dist/css.js CHANGED
@@ -1,6 +1,5 @@
1
- import { a as parseColor, o as tokenToColor, t as kebabCase } from "./string-BKbTpl-t.js";
1
+ import { a as parseColor, o as tokenToColor, t as kebabCase } from "./string-BJZKOUyT.js";
2
2
  import { inGamut, parse, serialize, to } from "colorjs.io/fn";
3
-
4
3
  //#region src/css/lib.ts
5
4
  function defaultAliasTransform(token) {
6
5
  if (!token) throw new Error("Undefined token");
@@ -45,7 +44,6 @@ function makeCSSVar(name, { prefix, wrapVar = false } = {}) {
45
44
  const finalProperty = `--${property}`.toLocaleLowerCase();
46
45
  return wrapVar ? `var(${finalProperty})` : finalProperty;
47
46
  }
48
-
49
47
  //#endregion
50
48
  //#region src/css/boolean.ts
51
49
  /** Convert boolean value to CSS string */
@@ -53,7 +51,6 @@ function transformBoolean(token, options) {
53
51
  if (token.aliasChain?.[0]) return (options.transformAlias ?? defaultAliasTransform)(options.tokensSet[token.aliasChain[0]]);
54
52
  return token.$value === true ? "1" : "0";
55
53
  }
56
-
57
54
  //#endregion
58
55
  //#region src/css/color.ts
59
56
  /** Convert color value to CSS string */
@@ -89,14 +86,15 @@ function downsample($value, color, depth = 30) {
89
86
  const rec2020 = to(color, $value.colorSpace, { inGamut: { space: "rec2020" } });
90
87
  if (typeof depth === "number" && !DEPTH_ROUNDING[depth]) throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(", ")}`);
91
88
  const precision = DEPTH_ROUNDING[depth] || void 0;
92
- return {
89
+ const result = {
93
90
  ".": serialize(color, { precision }),
94
91
  srgb: serialize(srgb, { precision }),
95
92
  p3: serialize(p3, { precision }),
96
93
  rec2020: serialize(rec2020, { precision })
97
94
  };
95
+ if (result["."] === result.srgb && result["."] === result.p3 && result["."] === result.rec2020) return result["."];
96
+ return result;
98
97
  }
99
-
100
98
  //#endregion
101
99
  //#region src/css/dimension.ts
102
100
  /** Convert dimension value to CSS */
@@ -105,7 +103,6 @@ function transformDimension(token, options) {
105
103
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
106
104
  return token.$value.value === 0 ? "0" : `${token.$value.value}${token.$value.unit}`;
107
105
  }
108
-
109
106
  //#endregion
110
107
  //#region src/css/stroke-style.ts
111
108
  /** Convert strokeStyle value to CSS */
@@ -114,7 +111,6 @@ function transformStrokeStyle(token, options) {
114
111
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
115
112
  return typeof token.$value === "string" ? token.$value : "dashed";
116
113
  }
117
-
118
114
  //#endregion
119
115
  //#region src/css/border.ts
120
116
  /** Convert border value to multiple CSS values */
@@ -136,7 +132,6 @@ function transformBorder(token, options) {
136
132
  rec2020: formatBorder("rec2020")
137
133
  };
138
134
  }
139
-
140
135
  //#endregion
141
136
  //#region src/css/cubic-bezier.ts
142
137
  /** Convert cubicBezier value to CSS */
@@ -145,7 +140,6 @@ function transformCubicBezier(token, options) {
145
140
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
146
141
  return `cubic-bezier(${token.$value.map((v, i) => token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]) : v).join(", ")})`;
147
142
  }
148
-
149
143
  //#endregion
150
144
  //#region src/css/duration.ts
151
145
  /** Convert duration value to CSS */
@@ -154,7 +148,6 @@ function transformDuration(token, options) {
154
148
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
155
149
  return `${token.$value.value}${token.$value.unit}`;
156
150
  }
157
-
158
151
  //#endregion
159
152
  //#region src/css/font-family.ts
160
153
  const FONT_NAME_KEYWORD = /^[a-z-]+$/;
@@ -163,7 +156,6 @@ function transformFontFamily(token, options) {
163
156
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
164
157
  return token.$value.map((fontName) => FONT_NAME_KEYWORD.test(fontName) ? fontName : `"${fontName}"`).join(", ");
165
158
  }
166
-
167
159
  //#endregion
168
160
  //#region src/css/font-weight.ts
169
161
  /** Convert fontWeight value to CSS */
@@ -172,7 +164,6 @@ function transformFontWeight(token, options) {
172
164
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
173
165
  return String(token.$value);
174
166
  }
175
-
176
167
  //#endregion
177
168
  //#region src/css/gradient.ts
178
169
  /** Convert gradient value to CSS */
@@ -199,7 +190,6 @@ function transformGradient(token, options) {
199
190
  rec2020: token.$value.map((_, i) => formatStop(i, "rec2020")).join(", ")
200
191
  };
201
192
  }
202
-
203
193
  //#endregion
204
194
  //#region src/css/link.ts
205
195
  /** Convert link value to CSS */
@@ -208,7 +198,6 @@ function transformLink(token, options) {
208
198
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
209
199
  return `url("${token.$value}")`;
210
200
  }
211
-
212
201
  //#endregion
213
202
  //#region src/css/number.ts
214
203
  /** Convert number value to CSS */
@@ -217,7 +206,6 @@ function transformNumber(token, options) {
217
206
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
218
207
  return String(token.$value);
219
208
  }
220
-
221
209
  //#endregion
222
210
  //#region src/css/shadow.ts
223
211
  /** Convert shadow subvalue to CSS */
@@ -256,7 +244,6 @@ function transformShadow(token, options) {
256
244
  rec2020: formatShadow("rec2020")
257
245
  };
258
246
  }
259
-
260
247
  //#endregion
261
248
  //#region src/css/string.ts
262
249
  /** Convert string value to CSS */
@@ -265,7 +252,6 @@ function transformString(token, options) {
265
252
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
266
253
  return String(token.$value);
267
254
  }
268
-
269
255
  //#endregion
270
256
  //#region src/css/transition.ts
271
257
  /** Convert transition value to shorthand */
@@ -274,7 +260,6 @@ function transformTransition(token, options) {
274
260
  if (token.aliasChain?.[0]) return transformAlias(tokensSet[token.aliasChain[0]]);
275
261
  return `${token.partialAliasOf?.duration ? transformAlias(tokensSet[token.partialAliasOf.duration]) : transformDuration({ $value: token.$value.duration }, options)} ${token.partialAliasOf?.delay ? transformAlias(tokensSet[token.partialAliasOf.delay]) : transformDuration({ $value: token.$value.delay }, options)} ${token.partialAliasOf?.timingFunction ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]) : transformCubicBezier({ $value: token.$value.timingFunction }, options)}`;
276
262
  }
277
-
278
263
  //#endregion
279
264
  //#region src/css/typography.ts
280
265
  /** Convert typography value to multiple CSS values */
@@ -312,7 +297,6 @@ function transformTypography(token, options) {
312
297
  }
313
298
  return output;
314
299
  }
315
-
316
300
  //#endregion
317
301
  //#region src/css/index.ts
318
302
  const TRANSFORMS = {
@@ -337,7 +321,7 @@ const TRANSFORMS = {
337
321
  function transformCSSValue(token, options) {
338
322
  return TRANSFORMS[token.$type]?.(token, options);
339
323
  }
340
-
341
324
  //#endregion
342
325
  export { DEPTH_ROUNDING, defaultAliasTransform, generateShorthand, makeCSSVar, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
326
+
343
327
  //# sourceMappingURL=css.js.map
package/dist/css.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","names":["convert"],"sources":["../src/css/lib.ts","../src/css/boolean.ts","../src/css/color.ts","../src/css/dimension.ts","../src/css/stroke-style.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\n/** Function that generates a var(…) statement */\nexport type IDGenerator<T = TokenNormalized> = (token: T) => string;\n\nexport function defaultAliasTransform(token: TokenNormalized) {\n if (!token) {\n throw new Error('Undefined token');\n }\n return `var(${makeCSSVar(token.id)})`;\n}\n\n/** Generate shorthand CSS for select token types */\nexport function generateShorthand({ token, localID }: { token: TokenNormalized; localID: string }): string | undefined {\n switch (token.$type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n case 'typography': {\n const typeVar = (name: string) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n // Note: typography tokens should have both of these properties, but this is just being defensive\n if ('font-size' in token.$value && 'font-family' in token.$value) {\n let output = '';\n for (const prop of ['font-style', 'font-variant', 'font-weight']) {\n if (prop in token.$value) {\n output += ` ${typeVar(prop)}`;\n }\n }\n let fontSizeVar = typeVar('font-size');\n if ('line-height' in token.$value) {\n fontSizeVar += `/${typeVar('line-height')}`;\n }\n output += ` ${fontSizeVar}`;\n output += ` ${typeVar('font-family')}`;\n return output.trim();\n }\n break;\n }\n }\n}\n\nconst CSS_VAR_RE =\n /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n\nexport interface MakeCSSVarOptions {\n /** Prefix with string */\n prefix?: string;\n /**\n * Wrap with `var(…)`\n * @default false\n */\n wrapVar?: boolean;\n}\n\n/**\n * Generate a valid CSS variable from any string\n * Code by @dfrankland\n */\nexport function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {\n if (typeof name !== 'string') {\n throw new Error(`makeCSSVar() Expected string, received ${name}`);\n }\n\n let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');\n if (prefix && !property.startsWith(`${prefix}-`)) {\n property = `${prefix}-${property}`;\n }\n const finalProperty = `--${property}`.toLocaleLowerCase();\n return wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n","import type { BooleanTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert boolean value to CSS string */\nexport function transformBoolean(\n token: BooleanTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n if (token.aliasChain?.[0]) {\n return (options.transformAlias ?? defaultAliasTransform)(options.tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import { type ColorConstructor, to as convert, inGamut, serialize } from 'colorjs.io/fn';\nimport { parseColor, tokenToColor } from '../color.js';\nimport type { ColorTokenNormalized, TokenTransformed } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nexport type WideGamutColorValue = {\n '.': string;\n srgb: string;\n p3: string;\n rec2020: string;\n};\n\n/** Convert color value to CSS string */\nexport function transformColor(\n token: ColorTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n\n const firstAlias = token.aliasChain?.[0];\n if (firstAlias && tokensSet[firstAlias]) {\n return transformAlias(tokensSet[firstAlias]);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToColor({ colorSpace, components, alpha });\n\n if (!color) {\n throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n }\n\n return inGamut(color, 'srgb')\n ? serialize(color, { format: options.color?.legacyHex ? 'hex' : undefined })\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nexport const DEPTH_ROUNDING = {\n 24: 4, // 24-bit almost fits into 3 decimal places, but not quite\n 30: 4,\n 36: 5,\n 48: 6,\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to srgb, display-p3, and rec2020 color spaces.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], color: ColorConstructor, depth: Depth = 30) {\n const srgb = convert(color, $value.colorSpace, { inGamut: { space: 'srgb' } });\n const p3 = convert(color, $value.colorSpace, { inGamut: { space: 'p3' } });\n const rec2020 = convert(color, $value.colorSpace, { inGamut: { space: 'rec2020' } });\n if (typeof depth === 'number' && !DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n const precision = DEPTH_ROUNDING[depth as keyof typeof DEPTH_ROUNDING] || undefined;\n return {\n '.': serialize(color, { precision }),\n srgb: serialize(srgb, { precision }),\n p3: serialize(p3, { precision }),\n rec2020: serialize(rec2020, { precision }),\n };\n}\n","import type { DimensionTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert dimension value to CSS */\nexport function transformDimension(\n token: DimensionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return token.$value.value === 0 ? '0' : `${token.$value.value}${token.$value.unit}`;\n}\n","import type { StrokeStyleTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert strokeStyle value to CSS */\nexport function transformStrokeStyle(\n token: StrokeStyleTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return typeof token.$value === 'string' ? token.$value : 'dashed'; // CSS doesn’t have `dash-array`; it’s just \"dashed\"\n}\n","import { inGamut, parse } from 'colorjs.io/fn';\nimport '../color.js'; // load Color.js side-effects\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n TokenTransformed,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformStrokeStyle } from './stroke-style.js';\n\n/** Convert border value to multiple CSS values */\nexport function transformBorder(\n token: BorderTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const width = token.partialAliasOf?.width\n ? transformAlias(tokensSet[token.partialAliasOf.width]!)\n : transformDimension({ $value: token.$value.width } as DimensionTokenNormalized, options);\n const color = token.partialAliasOf?.color\n ? transformAlias(tokensSet[token.partialAliasOf.color]!)\n : transformColor({ $value: token.$value.color } as ColorTokenNormalized, options);\n const style = token.partialAliasOf?.style\n ? transformAlias(tokensSet[token.partialAliasOf.style]!)\n : transformStrokeStyle({ $value: token.$value.style } as StrokeStyleTokenNormalized, options);\n\n const formatBorder = (colorKey: string) =>\n [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');\n\n // Note: ../color.js has already loaded color spaces as side effects so we don’t need to load those again\n return typeof color === 'string' || inGamut(parse(color.p3!), 'display-p3')\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert cubicBezier value to CSS */\nexport function transformCubicBezier(\n token: CubicBezierTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `cubic-bezier(${token.$value\n .map((v, i) => (token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]!) : v))\n .join(', ')})`;\n}\n","import type { DurationTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert duration value to CSS */\nexport function transformDuration(\n token: DurationTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return `${token.$value.value}${token.$value.unit}`;\n}\n","import type { FontFamilyTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\n\nexport function transformFontFamily(\n token: FontFamilyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value.map((fontName) => (FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`)).join(', ');\n}\n","import type { FontWeightTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert fontWeight value to CSS */\nexport function transformFontWeight(\n token: FontWeightTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type { ColorTokenNormalized, GradientTokenNormalized, TokenTransformed } from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert gradient value to CSS */\nexport function transformGradient(\n token: GradientTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n let isHDR = false;\n\n const colors: TokenTransformed['value'][] = [];\n const positions: string[] = [];\n\n for (let i = 0; i < token.$value.length; i++) {\n const { color, position } = token.$value[i]!;\n const colorValue = token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: color } as ColorTokenNormalized, options);\n if (typeof colorValue !== 'string') {\n isHDR = true;\n }\n colors.push(colorValue);\n positions.push(\n token.partialAliasOf?.[i]?.position\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.position!]!)\n : `${100 * position}%`,\n );\n }\n\n function formatStop(i: number, colorKey = '.') {\n return `${typeof colors[i] === 'string' ? colors[i] : colors[i]![colorKey as keyof (typeof colors)[number]]} ${positions[i]}`;\n }\n\n return !isHDR\n ? token.$value.map((_, i) => formatStop(i, positions[i]!)).join(', ')\n : {\n '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '),\n srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '),\n p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '),\n rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '),\n };\n}\n","import type { LinkTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert link value to CSS */\nexport function transformLink(\n token: LinkTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `url(\"${token.$value}\")`;\n}\n","import type { NumberTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert number value to CSS */\nexport function transformNumber(\n token: NumberTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type {\n ColorTokenNormalized,\n DimensionTokenNormalized,\n ShadowTokenNormalized,\n ShadowValueNormalized,\n TokenTransformed,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert shadow subvalue to CSS */\nexport function transformShadowLayer(\n value: ShadowValueNormalized,\n options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n },\n): string | Record<string, string> {\n const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n const offsetX = partialAliasOf?.offsetX\n ? transformAlias(tokensSet[partialAliasOf.offsetX]!)\n : transformDimension({ $value: value.offsetX } as DimensionTokenNormalized, options);\n const offsetY = partialAliasOf?.offsetY\n ? transformAlias(tokensSet[partialAliasOf.offsetY]!)\n : transformDimension({ $value: value.offsetY } as DimensionTokenNormalized, options);\n const blur = partialAliasOf?.blur\n ? transformAlias(tokensSet[partialAliasOf.blur]!)\n : transformDimension({ $value: value.blur } as DimensionTokenNormalized, options);\n const spread = partialAliasOf?.spread\n ? transformAlias(tokensSet[partialAliasOf.spread]!)\n : transformDimension({ $value: value.spread } as DimensionTokenNormalized, options);\n const inset = value?.inset === true ? 'inset' : undefined;\n\n return [inset, offsetX, offsetY, blur, spread, colorValue].filter(Boolean).join(' ');\n}\n\n/** Convert shadow value to CSS */\nexport function transformShadow(\n token: ShadowTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n const colors = token.$value.map((v, i) =>\n token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: v.color } as ColorTokenNormalized, options),\n );\n const isHDR = colors.some((c) => typeof c === 'object');\n\n const formatShadow = (colorKey: string) =>\n token.$value\n .map((v, i) =>\n transformShadowLayer(v, {\n ...options,\n tokensSet,\n colorValue:\n typeof colors[i] === 'string'\n ? (colors[i] as string)\n : colors[i]![colorKey as keyof (typeof colors)[number]]!,\n partialAliasOf: token.partialAliasOf?.[i],\n transformAlias,\n }),\n )\n .join(', ');\n\n return !isHDR\n ? formatShadow('.')\n : {\n '.': formatShadow('.'),\n srgb: formatShadow('srgb'),\n p3: formatShadow('p3'),\n rec2020: formatShadow('rec2020'),\n };\n}\n","import type { StringTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert string value to CSS */\nexport function transformString(\n token: StringTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n // this seems like a useless function—because it is—but this is a placeholder\n // that can handle unexpected values in the future should any arise\n return String(token.$value);\n}\n","import type {\n CubicBezierTokenNormalized,\n DurationTokenNormalized,\n TokenTransformedSingleValue,\n TransitionTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDuration } from './duration.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert transition value to shorthand */\nexport function transformTransition(\n token: TransitionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const duration = token.partialAliasOf?.duration\n ? transformAlias(tokensSet[token.partialAliasOf.duration]!)\n : transformDuration({ $value: token.$value.duration } as DurationTokenNormalized, options);\n const delay = token.partialAliasOf?.delay\n ? transformAlias(tokensSet[token.partialAliasOf.delay]!)\n : transformDuration({ $value: token.$value.delay } as DurationTokenNormalized, options);\n const timingFunction = token.partialAliasOf?.timingFunction\n ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]!)\n : transformCubicBezier({ $value: token.$value.timingFunction } as CubicBezierTokenNormalized, options);\n\n return `${duration} ${delay} ${timingFunction}`;\n}\n","import { kebabCase } from '../string.js';\nimport type {\n DimensionTokenNormalized,\n FontFamilyTokenNormalized,\n FontWeightTokenNormalized,\n NumberTokenNormalized,\n StringTokenNormalized,\n TokenNormalized,\n TokenTransformedMultiValue,\n TypographyTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformNumber } from './number.js';\nimport { transformString } from './string.js';\n\n/** Convert typography value to multiple CSS values */\nexport function transformTypography(\n token: TypographyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedMultiValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n const output: Record<string, string> = {};\n for (const [property, subvalue] of Object.entries(token.$value)) {\n let transformedValue: string;\n const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n if (aliasedID) {\n const resolvedToken = tokensSet[aliasedID] as TypographyTokenNormalized;\n transformedValue = transformAlias(\n // if resolving against a typography token, inject the property as well\n resolvedToken.$type === 'typography' ? ({ id: `${aliasedID}-${property}` } as TokenNormalized) : resolvedToken,\n );\n } else {\n switch (property) {\n case 'fontFamily': {\n transformedValue = transformFontFamily({ $value: subvalue } as FontFamilyTokenNormalized, options);\n break;\n }\n case 'fontSize':\n case 'letterSpacing': {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n break;\n }\n case 'fontWeight': {\n transformedValue = transformFontWeight({ $value: subvalue } as FontWeightTokenNormalized, options);\n break;\n }\n case 'lineHeight': {\n if (typeof subvalue === 'number') {\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n }\n break;\n }\n default: {\n // For other typography properties, dimensions are the only other likely token type\n if (subvalue && typeof subvalue === 'object' && 'value' in subvalue) {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n } else if (typeof subvalue === 'number') {\n // number is technically allowed for things like `paragraph-spacing: 0`\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n }\n break;\n }\n }\n }\n output[kebabCase(property)] = transformedValue;\n }\n return output;\n}\n","import type { TokenNormalized } from '../types.js';\nimport { transformBoolean } from './boolean.js';\nimport { transformBorder } from './border.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDimension } from './dimension.js';\nimport { transformDuration } from './duration.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { transformGradient } from './gradient.js';\nimport { transformLink } from './link.js';\nimport { transformNumber } from './number.js';\nimport { transformShadow } from './shadow.js';\nimport { transformString } from './string.js';\nimport { transformStrokeStyle } from './stroke-style.js';\nimport { transformTransition } from './transition.js';\nimport { transformTypography } from './typography.js';\n\nexport * from './boolean.js';\nexport * from './border.js';\nexport * from './color.js';\nexport * from './css-types.js';\nexport * from './cubic-bezier.js';\nexport * from './dimension.js';\nexport * from './duration.js';\nexport * from './font-family.js';\nexport * from './font-weight.js';\nexport * from './gradient.js';\nexport * from './lib.js';\nexport * from './link.js';\nexport * from './number.js';\nexport * from './shadow.js';\nexport * from './string.js';\nexport * from './stroke-style.js';\nexport * from './transition.js';\nexport * from './typography.js';\n\nconst TRANSFORMS = {\n boolean: transformBoolean,\n border: transformBorder,\n color: transformColor,\n cubicBezier: transformCubicBezier,\n dimension: transformDimension,\n duration: transformDuration,\n fontFamily: transformFontFamily,\n fontWeight: transformFontWeight,\n gradient: transformGradient,\n link: transformLink,\n number: transformNumber,\n shadow: transformShadow,\n string: transformString,\n strokeStyle: transformStrokeStyle,\n transition: transformTransition,\n typography: transformTypography,\n};\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n options: TransformCSSValueOptions,\n) {\n return TRANSFORMS[token.$type]?.(token as any, options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"css.js","names":["convert"],"sources":["../src/css/lib.ts","../src/css/boolean.ts","../src/css/color.ts","../src/css/dimension.ts","../src/css/stroke-style.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\n/** Function that generates a var(…) statement */\nexport type IDGenerator<T = TokenNormalized> = (token: T) => string;\n\nexport function defaultAliasTransform(token: TokenNormalized) {\n if (!token) {\n throw new Error('Undefined token');\n }\n return `var(${makeCSSVar(token.id)})`;\n}\n\n/** Generate shorthand CSS for select token types */\nexport function generateShorthand({ token, localID }: { token: TokenNormalized; localID: string }): string | undefined {\n switch (token.$type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n case 'typography': {\n const typeVar = (name: string) => makeCSSVar(`${localID}-${name}`, { wrapVar: true });\n // Note: typography tokens should have both of these properties, but this is just being defensive\n if ('font-size' in token.$value && 'font-family' in token.$value) {\n let output = '';\n for (const prop of ['font-style', 'font-variant', 'font-weight']) {\n if (prop in token.$value) {\n output += ` ${typeVar(prop)}`;\n }\n }\n let fontSizeVar = typeVar('font-size');\n if ('line-height' in token.$value) {\n fontSizeVar += `/${typeVar('line-height')}`;\n }\n output += ` ${fontSizeVar}`;\n output += ` ${typeVar('font-family')}`;\n return output.trim();\n }\n break;\n }\n }\n}\n\nconst CSS_VAR_RE =\n /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n\nexport interface MakeCSSVarOptions {\n /** Prefix with string */\n prefix?: string;\n /**\n * Wrap with `var(…)`\n * @default false\n */\n wrapVar?: boolean;\n}\n\n/**\n * Generate a valid CSS variable from any string\n * Code by @dfrankland\n */\nexport function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {\n if (typeof name !== 'string') {\n throw new Error(`makeCSSVar() Expected string, received ${name}`);\n }\n\n let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');\n if (prefix && !property.startsWith(`${prefix}-`)) {\n property = `${prefix}-${property}`;\n }\n const finalProperty = `--${property}`.toLocaleLowerCase();\n return wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n","import type { BooleanTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert boolean value to CSS string */\nexport function transformBoolean(\n token: BooleanTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n if (token.aliasChain?.[0]) {\n return (options.transformAlias ?? defaultAliasTransform)(options.tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import { type ColorConstructor, to as convert, inGamut, serialize } from 'colorjs.io/fn';\nimport { parseColor, tokenToColor } from '../color.js';\nimport type { ColorTokenNormalized, TokenTransformed } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nexport type WideGamutColorValue = {\n '.': string;\n srgb: string;\n p3: string;\n rec2020: string;\n};\n\n/** Convert color value to CSS string */\nexport function transformColor(\n token: ColorTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n\n const firstAlias = token.aliasChain?.[0];\n if (firstAlias && tokensSet[firstAlias]) {\n return transformAlias(tokensSet[firstAlias]);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToColor({ colorSpace, components, alpha });\n\n if (!color) {\n throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n }\n\n return inGamut(color, 'srgb')\n ? serialize(color, { format: options.color?.legacyHex ? 'hex' : undefined })\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nexport const DEPTH_ROUNDING = {\n 24: 4, // 24-bit almost fits into 3 decimal places, but not quite\n 30: 4,\n 36: 5,\n 48: 6,\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to srgb, display-p3, and rec2020 color spaces.\n */\nfunction downsample(\n $value: ColorTokenNormalized['$value'],\n color: ColorConstructor,\n depth: Depth = 30,\n): TokenTransformed['value'] {\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 const result: WideGamutColorValue = {\n '.': serialize(color, { precision }),\n srgb: serialize(srgb, { precision }),\n p3: serialize(p3, { precision }),\n rec2020: serialize(rec2020, { precision }),\n };\n if (result['.'] === result.srgb && result['.'] === result.p3 && result['.'] === result.rec2020) {\n return result['.'];\n }\n return result;\n}\n","import type { DimensionTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert dimension value to CSS */\nexport function transformDimension(\n token: DimensionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return token.$value.value === 0 ? '0' : `${token.$value.value}${token.$value.unit}`;\n}\n","import type { StrokeStyleTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert strokeStyle value to CSS */\nexport function transformStrokeStyle(\n token: StrokeStyleTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return typeof token.$value === 'string' ? token.$value : 'dashed'; // CSS doesn’t have `dash-array`; it’s just \"dashed\"\n}\n","import { inGamut, parse } from 'colorjs.io/fn';\nimport '../color.js'; // load Color.js side-effects\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n TokenTransformed,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformStrokeStyle } from './stroke-style.js';\n\n/** Convert border value to multiple CSS values */\nexport function transformBorder(\n token: BorderTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const width = token.partialAliasOf?.width\n ? transformAlias(tokensSet[token.partialAliasOf.width]!)\n : transformDimension({ $value: token.$value.width } as DimensionTokenNormalized, options);\n const color = token.partialAliasOf?.color\n ? transformAlias(tokensSet[token.partialAliasOf.color]!)\n : transformColor({ $value: token.$value.color } as ColorTokenNormalized, options);\n const style = token.partialAliasOf?.style\n ? transformAlias(tokensSet[token.partialAliasOf.style]!)\n : transformStrokeStyle({ $value: token.$value.style } as StrokeStyleTokenNormalized, options);\n\n const formatBorder = (colorKey: string) =>\n [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');\n\n // Note: ../color.js has already loaded color spaces as side effects so we don’t need to load those again\n return typeof color === 'string' || inGamut(parse(color.p3!), 'display-p3')\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert cubicBezier value to CSS */\nexport function transformCubicBezier(\n token: CubicBezierTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `cubic-bezier(${token.$value\n .map((v, i) => (token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]!) : v))\n .join(', ')})`;\n}\n","import type { DurationTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert duration value to CSS */\nexport function transformDuration(\n token: DurationTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return `${token.$value.value}${token.$value.unit}`;\n}\n","import type { FontFamilyTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\n\nexport function transformFontFamily(\n token: FontFamilyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value.map((fontName) => (FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`)).join(', ');\n}\n","import type { FontWeightTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert fontWeight value to CSS */\nexport function transformFontWeight(\n token: FontWeightTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type { ColorTokenNormalized, GradientTokenNormalized, TokenTransformed } from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert gradient value to CSS */\nexport function transformGradient(\n token: GradientTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n let isHDR = false;\n\n const colors: TokenTransformed['value'][] = [];\n const positions: string[] = [];\n\n for (let i = 0; i < token.$value.length; i++) {\n const { color, position } = token.$value[i]!;\n const colorValue = token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: color } as ColorTokenNormalized, options);\n if (typeof colorValue !== 'string') {\n isHDR = true;\n }\n colors.push(colorValue);\n positions.push(\n token.partialAliasOf?.[i]?.position\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.position!]!)\n : `${100 * position}%`,\n );\n }\n\n function formatStop(i: number, colorKey = '.') {\n return `${typeof colors[i] === 'string' ? colors[i] : colors[i]![colorKey as keyof (typeof colors)[number]]} ${positions[i]}`;\n }\n\n return !isHDR\n ? token.$value.map((_, i) => formatStop(i, positions[i]!)).join(', ')\n : {\n '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '),\n srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '),\n p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '),\n rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '),\n };\n}\n","import type { LinkTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert link value to CSS */\nexport function transformLink(\n token: LinkTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `url(\"${token.$value}\")`;\n}\n","import type { NumberTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert number value to CSS */\nexport function transformNumber(\n token: NumberTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type {\n ColorTokenNormalized,\n DimensionTokenNormalized,\n ShadowTokenNormalized,\n ShadowValueNormalized,\n TokenTransformed,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert shadow subvalue to CSS */\nexport function transformShadowLayer(\n value: ShadowValueNormalized,\n options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n },\n): string | Record<string, string> {\n const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n const offsetX = partialAliasOf?.offsetX\n ? transformAlias(tokensSet[partialAliasOf.offsetX]!)\n : transformDimension({ $value: value.offsetX } as DimensionTokenNormalized, options);\n const offsetY = partialAliasOf?.offsetY\n ? transformAlias(tokensSet[partialAliasOf.offsetY]!)\n : transformDimension({ $value: value.offsetY } as DimensionTokenNormalized, options);\n const blur = partialAliasOf?.blur\n ? transformAlias(tokensSet[partialAliasOf.blur]!)\n : transformDimension({ $value: value.blur } as DimensionTokenNormalized, options);\n const spread = partialAliasOf?.spread\n ? transformAlias(tokensSet[partialAliasOf.spread]!)\n : transformDimension({ $value: value.spread } as DimensionTokenNormalized, options);\n const inset = value?.inset === true ? 'inset' : undefined;\n\n return [inset, offsetX, offsetY, blur, spread, colorValue].filter(Boolean).join(' ');\n}\n\n/** Convert shadow value to CSS */\nexport function transformShadow(\n token: ShadowTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformed['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n const colors = token.$value.map((v, i) =>\n token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: v.color } as ColorTokenNormalized, options),\n );\n const isHDR = colors.some((c) => typeof c === 'object');\n\n const formatShadow = (colorKey: string) =>\n token.$value\n .map((v, i) =>\n transformShadowLayer(v, {\n ...options,\n tokensSet,\n colorValue:\n typeof colors[i] === 'string'\n ? (colors[i] as string)\n : colors[i]![colorKey as keyof (typeof colors)[number]]!,\n partialAliasOf: token.partialAliasOf?.[i],\n transformAlias,\n }),\n )\n .join(', ');\n\n return !isHDR\n ? formatShadow('.')\n : {\n '.': formatShadow('.'),\n srgb: formatShadow('srgb'),\n p3: formatShadow('p3'),\n rec2020: formatShadow('rec2020'),\n };\n}\n","import type { StringTokenNormalized, TokenTransformedSingleValue } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert string value to CSS */\nexport function transformString(\n token: StringTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n // this seems like a useless function—because it is—but this is a placeholder\n // that can handle unexpected values in the future should any arise\n return String(token.$value);\n}\n","import type {\n CubicBezierTokenNormalized,\n DurationTokenNormalized,\n TokenTransformedSingleValue,\n TransitionTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDuration } from './duration.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert transition value to shorthand */\nexport function transformTransition(\n token: TransitionTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedSingleValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const duration = token.partialAliasOf?.duration\n ? transformAlias(tokensSet[token.partialAliasOf.duration]!)\n : transformDuration({ $value: token.$value.duration } as DurationTokenNormalized, options);\n const delay = token.partialAliasOf?.delay\n ? transformAlias(tokensSet[token.partialAliasOf.delay]!)\n : transformDuration({ $value: token.$value.delay } as DurationTokenNormalized, options);\n const timingFunction = token.partialAliasOf?.timingFunction\n ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]!)\n : transformCubicBezier({ $value: token.$value.timingFunction } as CubicBezierTokenNormalized, options);\n\n return `${duration} ${delay} ${timingFunction}`;\n}\n","import { kebabCase } from '../string.js';\nimport type {\n DimensionTokenNormalized,\n FontFamilyTokenNormalized,\n FontWeightTokenNormalized,\n NumberTokenNormalized,\n StringTokenNormalized,\n TokenNormalized,\n TokenTransformedMultiValue,\n TypographyTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformNumber } from './number.js';\nimport { transformString } from './string.js';\n\n/** Convert typography value to multiple CSS values */\nexport function transformTypography(\n token: TypographyTokenNormalized,\n options: TransformCSSValueOptions,\n): TokenTransformedMultiValue['value'] {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n const output: Record<string, string> = {};\n for (const [property, subvalue] of Object.entries(token.$value)) {\n let transformedValue: string;\n const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n if (aliasedID) {\n const resolvedToken = tokensSet[aliasedID] as TypographyTokenNormalized;\n transformedValue = transformAlias(\n // if resolving against a typography token, inject the property as well\n resolvedToken.$type === 'typography' ? ({ id: `${aliasedID}-${property}` } as TokenNormalized) : resolvedToken,\n );\n } else {\n switch (property) {\n case 'fontFamily': {\n transformedValue = transformFontFamily({ $value: subvalue } as FontFamilyTokenNormalized, options);\n break;\n }\n case 'fontSize':\n case 'letterSpacing': {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n break;\n }\n case 'fontWeight': {\n transformedValue = transformFontWeight({ $value: subvalue } as FontWeightTokenNormalized, options);\n break;\n }\n case 'lineHeight': {\n if (typeof subvalue === 'number') {\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n }\n break;\n }\n default: {\n // For other typography properties, dimensions are the only other likely token type\n if (subvalue && typeof subvalue === 'object' && 'value' in subvalue) {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n } else if (typeof subvalue === 'number') {\n // number is technically allowed for things like `paragraph-spacing: 0`\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n }\n break;\n }\n }\n }\n output[kebabCase(property)] = transformedValue;\n }\n return output;\n}\n","import type { TokenNormalized } from '../types.js';\nimport { transformBoolean } from './boolean.js';\nimport { transformBorder } from './border.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDimension } from './dimension.js';\nimport { transformDuration } from './duration.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { transformGradient } from './gradient.js';\nimport { transformLink } from './link.js';\nimport { transformNumber } from './number.js';\nimport { transformShadow } from './shadow.js';\nimport { transformString } from './string.js';\nimport { transformStrokeStyle } from './stroke-style.js';\nimport { transformTransition } from './transition.js';\nimport { transformTypography } from './typography.js';\n\nexport * from './boolean.js';\nexport * from './border.js';\nexport * from './color.js';\nexport * from './css-types.js';\nexport * from './cubic-bezier.js';\nexport * from './dimension.js';\nexport * from './duration.js';\nexport * from './font-family.js';\nexport * from './font-weight.js';\nexport * from './gradient.js';\nexport * from './lib.js';\nexport * from './link.js';\nexport * from './number.js';\nexport * from './shadow.js';\nexport * from './string.js';\nexport * from './stroke-style.js';\nexport * from './transition.js';\nexport * from './typography.js';\n\nconst TRANSFORMS = {\n boolean: transformBoolean,\n border: transformBorder,\n color: transformColor,\n cubicBezier: transformCubicBezier,\n dimension: transformDimension,\n duration: transformDuration,\n fontFamily: transformFontFamily,\n fontWeight: transformFontWeight,\n gradient: transformGradient,\n link: transformLink,\n number: transformNumber,\n shadow: transformShadow,\n string: transformString,\n strokeStyle: transformStrokeStyle,\n transition: transformTransition,\n typography: transformTypography,\n};\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n options: TransformCSSValueOptions,\n) {\n return TRANSFORMS[token.$type]?.(token as any, options);\n}\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
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";
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-CVck8QfU.js";
2
+ import { n as parseColor, r as tokenToColor, t as COLOR_SPACE } from "./color-CCeeDSpW.js";
3
3
  import wcmatch from "wildcard-match";
4
4
 
5
5
  //#region src/border.d.ts
package/dist/index.js CHANGED
@@ -1,13 +1,11 @@
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";
1
+ import { a as parseColor, i as COLOR_SPACE, n as padStr, o as tokenToColor, r as pluralize, t as kebabCase } from "./string-BJZKOUyT.js";
2
2
  import wcmatch from "wildcard-match";
3
-
4
3
  //#region src/border.ts
5
4
  const BORDER_REQUIRED_PROPERTIES = [
6
5
  "color",
7
6
  "width",
8
7
  "style"
9
8
  ];
10
-
11
9
  //#endregion
12
10
  //#region src/font-weight.ts
13
11
  /** Mapping of valid names to numeric weights */
@@ -31,11 +29,9 @@ const FONT_WEIGHTS = {
31
29
  "extra-black": 950,
32
30
  "ultra-black": 950
33
31
  };
34
-
35
32
  //#endregion
36
33
  //#region src/gradient.ts
37
34
  const GRADIENT_REQUIRED_STOP_PROPERTIES = ["color", "position"];
38
-
39
35
  //#endregion
40
36
  //#region src/id.ts
41
37
  const ALIAS_RE = /^\{([^}]+)\}$/;
@@ -98,7 +94,6 @@ function splitID(id) {
98
94
  group: id.substring(0, lastSeparatorI)
99
95
  };
100
96
  }
101
-
102
97
  //#endregion
103
98
  //#region src/shadow.ts
104
99
  const SHADOW_REQUIRED_PROPERTIES = [
@@ -108,7 +103,6 @@ const SHADOW_REQUIRED_PROPERTIES = [
108
103
  "blur",
109
104
  "spread"
110
105
  ];
111
-
112
106
  //#endregion
113
107
  //#region src/stroke-style.ts
114
108
  const STROKE_STYLE_STRING_VALUES = [
@@ -127,7 +121,6 @@ const STROKE_STYLE_LINE_CAP_VALUES = [
127
121
  "butt",
128
122
  "square"
129
123
  ];
130
-
131
124
  //#endregion
132
125
  //#region src/transform.ts
133
126
  /** Give a user pertinent feedback if they override a transform incorrectly */
@@ -141,7 +134,6 @@ function validateCustomTransform(value, { $type }) {
141
134
  }
142
135
  }
143
136
  }
144
-
145
137
  //#endregion
146
138
  //#region src/transition.ts
147
139
  const TRANSITION_REQUIRED_PROPERTIES = [
@@ -149,7 +141,6 @@ const TRANSITION_REQUIRED_PROPERTIES = [
149
141
  "delay",
150
142
  "timingFunction"
151
143
  ];
152
-
153
144
  //#endregion
154
145
  //#region src/typography.ts
155
146
  const TYPOGRAPHY_REQUIRED_PROPERTIES = [
@@ -159,7 +150,7 @@ const TYPOGRAPHY_REQUIRED_PROPERTIES = [
159
150
  "letterSpacing",
160
151
  "lineHeight"
161
152
  ];
162
-
163
153
  //#endregion
164
154
  export { BORDER_REQUIRED_PROPERTIES, COLOR_SPACE, CachedWildcardMatcher, 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, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToColor, validateCustomTransform };
155
+
165
156
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/border.ts","../src/font-weight.ts","../src/gradient.ts","../src/id.ts","../src/shadow.ts","../src/stroke-style.ts","../src/transform.ts","../src/transition.ts","../src/typography.ts"],"sourcesContent":["export const BORDER_REQUIRED_PROPERTIES = ['color', 'width', 'style'] as const;\n","/** Mapping of valid names to numeric weights */\nexport const FONT_WEIGHTS = {\n thin: 100,\n hairline: 100,\n\n 'extra-light': 200,\n 'ultra-light': 200,\n\n light: 300,\n\n normal: 400,\n regular: 400,\n book: 400,\n\n medium: 500,\n\n 'semi-bold': 600,\n 'demi-bold': 600,\n\n bold: 700,\n\n 'extra-bold': 800,\n 'ultra-bold': 800,\n\n black: 900,\n heavy: 900,\n\n 'extra-black': 950,\n 'ultra-black': 950,\n};\n","export const GRADIENT_REQUIRED_STOP_PROPERTIES = ['color', 'position'] as const;\n","import wcmatch from 'wildcard-match';\n\nconst ALIAS_RE = /^\\{([^}]+)\\}$/;\n\n/** Is this token an alias of another? */\nexport function isAlias(value: string): boolean {\n return ALIAS_RE.test(value);\n}\n\nconst _CATCHALL_MATCHER = wcmatch('.*');\n\n/** Only create unique wcmatch instances, and cache across the lifespan of a run */\nexport class CachedWildcardMatcher {\n cachedMatchers: Record<string, ReturnType<typeof wcmatch>> = {};\n /** This is a separate cache because of the \".\" separator. */\n cachedTokenIDMatchers: Record<string, ReturnType<typeof wcmatch>> = {};\n\n constructor() {\n this.reset();\n }\n\n /** Generic wildcard matcher */\n match(...params: Parameters<typeof wcmatch>): ReturnType<typeof wcmatch> {\n const key = JSON.stringify(params[0]); // Note: believe-it-or-not, JSON.stringify() beats String() for coercion speed here\n if (!(key in this.cachedMatchers)) {\n this.cachedMatchers[key] = wcmatch(params[0], params[1] ?? false);\n }\n return this.cachedMatchers[key]!;\n }\n\n /** Wildcard matcher specifically for Token IDs (provides \".\" as separator). */\n tokenIDMatch(pattern: Parameters<typeof wcmatch>[0]): ReturnType<typeof wcmatch> {\n const key = JSON.stringify(pattern);\n if (!(key in this.cachedTokenIDMatchers)) {\n this.cachedTokenIDMatchers[key] = wcmatch(pattern, '.');\n }\n return this.cachedTokenIDMatchers[key]!;\n }\n\n /** Garbage collect all caches, reset to initial state */\n reset() {\n this.cachedMatchers = { '': _CATCHALL_MATCHER, '*': _CATCHALL_MATCHER, '**': _CATCHALL_MATCHER };\n this.cachedTokenIDMatchers = { '': _CATCHALL_MATCHER, '*': _CATCHALL_MATCHER, '**': _CATCHALL_MATCHER };\n }\n}\n\n/** Make an alias */\nexport function makeAlias(input: string): string {\n return input.replace(/^\\{?([^}]+)\\}?$/, '{$1}');\n}\n\n/** Parse an alias */\nexport function parseAlias(input: string): string {\n // TODO: deprecate in future\n if (input.includes('#')) {\n throw new Error(\n 'Mode aliases (# character) are no longer supported as of v0.6.0. Alias the root token instead, and apply modes in plugins.',\n );\n }\n const match = input.match(ALIAS_RE);\n if (!match) {\n return input;\n }\n return match[1] ?? match[0];\n}\n\n/** split a token ID into a local ID and group ID */\nexport function splitID(id: string): { local: string; group?: string } {\n const lastSeparatorI = id.lastIndexOf('.');\n if (lastSeparatorI === -1) {\n return { local: id };\n }\n return {\n local: id.substring(lastSeparatorI + 1),\n group: id.substring(0, lastSeparatorI),\n };\n}\n","export const SHADOW_REQUIRED_PROPERTIES = ['color', 'offsetX', 'offsetY', 'blur', 'spread'] as const;\n","export const STROKE_STYLE_STRING_VALUES = [\n 'solid',\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'ridge',\n 'outset',\n 'inset',\n] as const;\n\nexport const STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES = ['dashArray', 'lineCap'] as const;\n\nexport const STROKE_STYLE_LINE_CAP_VALUES = ['round', 'butt', 'square'] as const;\n","export interface CustomTransformOptions {\n /** Token $type */\n $type: string;\n}\n\n/** Give a user pertinent feedback if they override a transform incorrectly */\nexport function validateCustomTransform(value: unknown, { $type }: CustomTransformOptions) {\n if (value) {\n if ((typeof value !== 'string' && typeof value !== 'object') || Array.isArray(value)) {\n throw new Error(\n `transform(): expected string or Object of strings, received ${Array.isArray(value) ? 'Array' : typeof value}`,\n );\n }\n switch ($type) {\n case 'typography': {\n if (typeof value !== 'object') {\n throw new Error('transform(): typography tokens must be an object of keys');\n }\n break;\n }\n }\n }\n}\n","export const TRANSITION_REQUIRED_PROPERTIES = ['duration', 'delay', 'timingFunction'] as const;\n","export const TYPOGRAPHY_REQUIRED_PROPERTIES = [\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n] as const;\n"],"mappings":";;;;AAAA,MAAa,6BAA6B;CAAC;CAAS;CAAS;CAAQ;;;;;ACCrE,MAAa,eAAe;CAC1B,MAAM;CACN,UAAU;CAEV,eAAe;CACf,eAAe;CAEf,OAAO;CAEP,QAAQ;CACR,SAAS;CACT,MAAM;CAEN,QAAQ;CAER,aAAa;CACb,aAAa;CAEb,MAAM;CAEN,cAAc;CACd,cAAc;CAEd,OAAO;CACP,OAAO;CAEP,eAAe;CACf,eAAe;CAChB;;;;AC7BD,MAAa,oCAAoC,CAAC,SAAS,WAAW;;;;ACEtE,MAAM,WAAW;;AAGjB,SAAgB,QAAQ,OAAwB;AAC9C,QAAO,SAAS,KAAK,MAAM;;AAG7B,MAAM,oBAAoB,QAAQ,KAAK;;AAGvC,IAAa,wBAAb,MAAmC;CACjC,iBAA6D,EAAE;;CAE/D,wBAAoE,EAAE;CAEtE,cAAc;AACZ,OAAK,OAAO;;;CAId,MAAM,GAAG,QAAgE;EACvE,MAAM,MAAM,KAAK,UAAU,OAAO,GAAG;AACrC,MAAI,EAAE,OAAO,KAAK,gBAChB,MAAK,eAAe,OAAO,QAAQ,OAAO,IAAI,OAAO,MAAM,MAAM;AAEnE,SAAO,KAAK,eAAe;;;CAI7B,aAAa,SAAoE;EAC/E,MAAM,MAAM,KAAK,UAAU,QAAQ;AACnC,MAAI,EAAE,OAAO,KAAK,uBAChB,MAAK,sBAAsB,OAAO,QAAQ,SAAS,IAAI;AAEzD,SAAO,KAAK,sBAAsB;;;CAIpC,QAAQ;AACN,OAAK,iBAAiB;GAAE,IAAI;GAAmB,KAAK;GAAmB,MAAM;GAAmB;AAChG,OAAK,wBAAwB;GAAE,IAAI;GAAmB,KAAK;GAAmB,MAAM;GAAmB;;;;AAK3G,SAAgB,UAAU,OAAuB;AAC/C,QAAO,MAAM,QAAQ,mBAAmB,OAAO;;;AAIjD,SAAgB,WAAW,OAAuB;AAEhD,KAAI,MAAM,SAAS,IAAI,CACrB,OAAM,IAAI,MACR,6HACD;CAEH,MAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,KAAI,CAAC,MACH,QAAO;AAET,QAAO,MAAM,MAAM,MAAM;;;AAI3B,SAAgB,QAAQ,IAA+C;CACrE,MAAM,iBAAiB,GAAG,YAAY,IAAI;AAC1C,KAAI,mBAAmB,GACrB,QAAO,EAAE,OAAO,IAAI;AAEtB,QAAO;EACL,OAAO,GAAG,UAAU,iBAAiB,EAAE;EACvC,OAAO,GAAG,UAAU,GAAG,eAAe;EACvC;;;;;AC3EH,MAAa,6BAA6B;CAAC;CAAS;CAAW;CAAW;CAAQ;CAAS;;;;ACA3F,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,0CAA0C,CAAC,aAAa,UAAU;AAE/E,MAAa,+BAA+B;CAAC;CAAS;CAAQ;CAAS;;;;;ACPvE,SAAgB,wBAAwB,OAAgB,EAAE,SAAiC;AACzF,KAAI,OAAO;AACT,MAAK,OAAO,UAAU,YAAY,OAAO,UAAU,YAAa,MAAM,QAAQ,MAAM,CAClF,OAAM,IAAI,MACR,+DAA+D,MAAM,QAAQ,MAAM,GAAG,UAAU,OAAO,QACxG;AAEH,UAAQ,OAAR;GACE,KAAK;AACH,QAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MAAM,2DAA2D;AAE7E;;;;;;;AClBR,MAAa,iCAAiC;CAAC;CAAY;CAAS;CAAiB;;;;ACArF,MAAa,iCAAiC;CAC5C;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/border.ts","../src/font-weight.ts","../src/gradient.ts","../src/id.ts","../src/shadow.ts","../src/stroke-style.ts","../src/transform.ts","../src/transition.ts","../src/typography.ts"],"sourcesContent":["export const BORDER_REQUIRED_PROPERTIES = ['color', 'width', 'style'] as const;\n","/** Mapping of valid names to numeric weights */\nexport const FONT_WEIGHTS = {\n thin: 100,\n hairline: 100,\n\n 'extra-light': 200,\n 'ultra-light': 200,\n\n light: 300,\n\n normal: 400,\n regular: 400,\n book: 400,\n\n medium: 500,\n\n 'semi-bold': 600,\n 'demi-bold': 600,\n\n bold: 700,\n\n 'extra-bold': 800,\n 'ultra-bold': 800,\n\n black: 900,\n heavy: 900,\n\n 'extra-black': 950,\n 'ultra-black': 950,\n};\n","export const GRADIENT_REQUIRED_STOP_PROPERTIES = ['color', 'position'] as const;\n","import wcmatch from 'wildcard-match';\n\nconst ALIAS_RE = /^\\{([^}]+)\\}$/;\n\n/** Is this token an alias of another? */\nexport function isAlias(value: string): boolean {\n return ALIAS_RE.test(value);\n}\n\nconst _CATCHALL_MATCHER = wcmatch('.*');\n\n/** Only create unique wcmatch instances, and cache across the lifespan of a run */\nexport class CachedWildcardMatcher {\n cachedMatchers: Record<string, ReturnType<typeof wcmatch>> = {};\n /** This is a separate cache because of the \".\" separator. */\n cachedTokenIDMatchers: Record<string, ReturnType<typeof wcmatch>> = {};\n\n constructor() {\n this.reset();\n }\n\n /** Generic wildcard matcher */\n match(...params: Parameters<typeof wcmatch>): ReturnType<typeof wcmatch> {\n const key = JSON.stringify(params[0]); // Note: believe-it-or-not, JSON.stringify() beats String() for coercion speed here\n if (!(key in this.cachedMatchers)) {\n this.cachedMatchers[key] = wcmatch(params[0], params[1] ?? false);\n }\n return this.cachedMatchers[key]!;\n }\n\n /** Wildcard matcher specifically for Token IDs (provides \".\" as separator). */\n tokenIDMatch(pattern: Parameters<typeof wcmatch>[0]): ReturnType<typeof wcmatch> {\n const key = JSON.stringify(pattern);\n if (!(key in this.cachedTokenIDMatchers)) {\n this.cachedTokenIDMatchers[key] = wcmatch(pattern, '.');\n }\n return this.cachedTokenIDMatchers[key]!;\n }\n\n /** Garbage collect all caches, reset to initial state */\n reset() {\n this.cachedMatchers = { '': _CATCHALL_MATCHER, '*': _CATCHALL_MATCHER, '**': _CATCHALL_MATCHER };\n this.cachedTokenIDMatchers = { '': _CATCHALL_MATCHER, '*': _CATCHALL_MATCHER, '**': _CATCHALL_MATCHER };\n }\n}\n\n/** Make an alias */\nexport function makeAlias(input: string): string {\n return input.replace(/^\\{?([^}]+)\\}?$/, '{$1}');\n}\n\n/** Parse an alias */\nexport function parseAlias(input: string): string {\n // TODO: deprecate in future\n if (input.includes('#')) {\n throw new Error(\n 'Mode aliases (# character) are no longer supported as of v0.6.0. Alias the root token instead, and apply modes in plugins.',\n );\n }\n const match = input.match(ALIAS_RE);\n if (!match) {\n return input;\n }\n return match[1] ?? match[0];\n}\n\n/** split a token ID into a local ID and group ID */\nexport function splitID(id: string): { local: string; group?: string } {\n const lastSeparatorI = id.lastIndexOf('.');\n if (lastSeparatorI === -1) {\n return { local: id };\n }\n return {\n local: id.substring(lastSeparatorI + 1),\n group: id.substring(0, lastSeparatorI),\n };\n}\n","export const SHADOW_REQUIRED_PROPERTIES = ['color', 'offsetX', 'offsetY', 'blur', 'spread'] as const;\n","export const STROKE_STYLE_STRING_VALUES = [\n 'solid',\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'ridge',\n 'outset',\n 'inset',\n] as const;\n\nexport const STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES = ['dashArray', 'lineCap'] as const;\n\nexport const STROKE_STYLE_LINE_CAP_VALUES = ['round', 'butt', 'square'] as const;\n","export interface CustomTransformOptions {\n /** Token $type */\n $type: string;\n}\n\n/** Give a user pertinent feedback if they override a transform incorrectly */\nexport function validateCustomTransform(value: unknown, { $type }: CustomTransformOptions) {\n if (value) {\n if ((typeof value !== 'string' && typeof value !== 'object') || Array.isArray(value)) {\n throw new Error(\n `transform(): expected string or Object of strings, received ${Array.isArray(value) ? 'Array' : typeof value}`,\n );\n }\n switch ($type) {\n case 'typography': {\n if (typeof value !== 'object') {\n throw new Error('transform(): typography tokens must be an object of keys');\n }\n break;\n }\n }\n }\n}\n","export const TRANSITION_REQUIRED_PROPERTIES = ['duration', 'delay', 'timingFunction'] as const;\n","export const TYPOGRAPHY_REQUIRED_PROPERTIES = [\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n] as const;\n"],"mappings":";;;AAAA,MAAa,6BAA6B;CAAC;CAAS;CAAS;CAAQ;;;;ACCrE,MAAa,eAAe;CAC1B,MAAM;CACN,UAAU;CAEV,eAAe;CACf,eAAe;CAEf,OAAO;CAEP,QAAQ;CACR,SAAS;CACT,MAAM;CAEN,QAAQ;CAER,aAAa;CACb,aAAa;CAEb,MAAM;CAEN,cAAc;CACd,cAAc;CAEd,OAAO;CACP,OAAO;CAEP,eAAe;CACf,eAAe;CAChB;;;AC7BD,MAAa,oCAAoC,CAAC,SAAS,WAAW;;;ACEtE,MAAM,WAAW;;AAGjB,SAAgB,QAAQ,OAAwB;AAC9C,QAAO,SAAS,KAAK,MAAM;;AAG7B,MAAM,oBAAoB,QAAQ,KAAK;;AAGvC,IAAa,wBAAb,MAAmC;CACjC,iBAA6D,EAAE;;CAE/D,wBAAoE,EAAE;CAEtE,cAAc;AACZ,OAAK,OAAO;;;CAId,MAAM,GAAG,QAAgE;EACvE,MAAM,MAAM,KAAK,UAAU,OAAO,GAAG;AACrC,MAAI,EAAE,OAAO,KAAK,gBAChB,MAAK,eAAe,OAAO,QAAQ,OAAO,IAAI,OAAO,MAAM,MAAM;AAEnE,SAAO,KAAK,eAAe;;;CAI7B,aAAa,SAAoE;EAC/E,MAAM,MAAM,KAAK,UAAU,QAAQ;AACnC,MAAI,EAAE,OAAO,KAAK,uBAChB,MAAK,sBAAsB,OAAO,QAAQ,SAAS,IAAI;AAEzD,SAAO,KAAK,sBAAsB;;;CAIpC,QAAQ;AACN,OAAK,iBAAiB;GAAE,IAAI;GAAmB,KAAK;GAAmB,MAAM;GAAmB;AAChG,OAAK,wBAAwB;GAAE,IAAI;GAAmB,KAAK;GAAmB,MAAM;GAAmB;;;;AAK3G,SAAgB,UAAU,OAAuB;AAC/C,QAAO,MAAM,QAAQ,mBAAmB,OAAO;;;AAIjD,SAAgB,WAAW,OAAuB;AAEhD,KAAI,MAAM,SAAS,IAAI,CACrB,OAAM,IAAI,MACR,6HACD;CAEH,MAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,KAAI,CAAC,MACH,QAAO;AAET,QAAO,MAAM,MAAM,MAAM;;;AAI3B,SAAgB,QAAQ,IAA+C;CACrE,MAAM,iBAAiB,GAAG,YAAY,IAAI;AAC1C,KAAI,mBAAmB,GACrB,QAAO,EAAE,OAAO,IAAI;AAEtB,QAAO;EACL,OAAO,GAAG,UAAU,iBAAiB,EAAE;EACvC,OAAO,GAAG,UAAU,GAAG,eAAe;EACvC;;;;AC3EH,MAAa,6BAA6B;CAAC;CAAS;CAAW;CAAW;CAAQ;CAAS;;;ACA3F,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,0CAA0C,CAAC,aAAa,UAAU;AAE/E,MAAa,+BAA+B;CAAC;CAAS;CAAQ;CAAS;;;;ACPvE,SAAgB,wBAAwB,OAAgB,EAAE,SAAiC;AACzF,KAAI,OAAO;AACT,MAAK,OAAO,UAAU,YAAY,OAAO,UAAU,YAAa,MAAM,QAAQ,MAAM,CAClF,OAAM,IAAI,MACR,+DAA+D,MAAM,QAAQ,MAAM,GAAG,UAAU,OAAO,QACxG;AAEH,UAAQ,OAAR;GACE,KAAK;AACH,QAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MAAM,2DAA2D;AAE7E;;;;;;AClBR,MAAa,iCAAiC;CAAC;CAAY;CAAS;CAAiB;;;ACArF,MAAa,iCAAiC;CAC5C;CACA;CACA;CACA;CACA;CACD"}
package/dist/js.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { lt as TokenNormalized } from "./types-Cwbw-_yP.js";
1
+ import { lt as TokenNormalized } from "./types-CVck8QfU.js";
2
2
 
3
3
  //#region src/js/index.d.ts
4
4
  interface TransformJSValueOptions {
package/dist/js.js CHANGED
@@ -7,7 +7,7 @@ function transformJSValue(token, { indent = 2, startingIndent = 0 }) {
7
7
  const indentStart = startingIndent > 0 ? " ".repeat(startingIndent ?? 2) : "";
8
8
  return JSON.stringify(token.$value, void 0, indent).replace(/\n/g, `\n${indentStart}`);
9
9
  }
10
-
11
10
  //#endregion
12
11
  export { transformJSValue };
12
+
13
13
  //# sourceMappingURL=js.js.map
package/dist/js.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"js.js","names":[],"sources":["../src/js/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\nexport interface TransformJSValueOptions {\n mode: string;\n /** indent space count */\n indent?: number;\n /** initial indent level */\n startingIndent?: number;\n}\n\n/**\n * Convert token value to a JS string via acorn/astring.\n * @deprecated\n */\nexport function transformJSValue<T extends TokenNormalized>(\n token: T,\n { indent = 2, startingIndent = 0 }: TransformJSValueOptions,\n) {\n const indentStart = startingIndent > 0 ? ' '.repeat(startingIndent ?? 2) : '';\n\n // note: since tokens are JSON-serializable to begin with, using\n // JSON.stringify generates the same output as an AST parser/generator would\n // but faster and without the added overhead (even acorn/astring leave object\n // keys quoted).\n\n // TODO: use @biomejs/js-api when it’s stable for pretty formatting\n return JSON.stringify(token.$value, undefined, indent).replace(/\\n/g, `\\n${indentStart}`);\n}\n"],"mappings":";;;;;AAcA,SAAgB,iBACd,OACA,EAAE,SAAS,GAAG,iBAAiB,KAC/B;CACA,MAAM,cAAc,iBAAiB,IAAI,IAAI,OAAO,kBAAkB,EAAE,GAAG;AAQ3E,QAAO,KAAK,UAAU,MAAM,QAAQ,QAAW,OAAO,CAAC,QAAQ,OAAO,KAAK,cAAc"}
1
+ {"version":3,"file":"js.js","names":[],"sources":["../src/js/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\nexport interface TransformJSValueOptions {\n mode: string;\n /** indent space count */\n indent?: number;\n /** initial indent level */\n startingIndent?: number;\n}\n\n/**\n * Convert token value to a JS string via acorn/astring.\n * @deprecated\n */\nexport function transformJSValue<T extends TokenNormalized>(\n token: T,\n { indent = 2, startingIndent = 0 }: TransformJSValueOptions,\n) {\n const indentStart = startingIndent > 0 ? ' '.repeat(startingIndent ?? 2) : '';\n\n // note: since tokens are JSON-serializable to begin with, using\n // JSON.stringify generates the same output as an AST parser/generator would\n // but faster and without the added overhead (even acorn/astring leave object\n // keys quoted).\n\n // TODO: use @biomejs/js-api when it’s stable for pretty formatting\n return JSON.stringify(token.$value, undefined, indent).replace(/\\n/g, `\\n${indentStart}`);\n}\n"],"mappings":";;;;;AAcA,SAAgB,iBACd,OACA,EAAE,SAAS,GAAG,iBAAiB,KAC/B;CACA,MAAM,cAAc,iBAAiB,IAAI,IAAI,OAAO,kBAAkB,EAAE,GAAG;AAQ3E,QAAO,KAAK,UAAU,MAAM,QAAQ,KAAA,GAAW,OAAO,CAAC,QAAQ,OAAO,KAAK,cAAc"}
@@ -1,5 +1,4 @@
1
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
2
  //#region src/color.ts
4
3
  /** Complete list of CSS Module 4 color spaces */
5
4
  const COLOR_SPACE = {
@@ -49,7 +48,6 @@ function tokenToColor(value) {
49
48
  alpha: value.alpha
50
49
  };
51
50
  }
52
-
53
51
  //#endregion
54
52
  //#region src/string.ts
55
53
  /** Pad string lengths */
@@ -88,7 +86,7 @@ function kebabCase(str) {
88
86
  }
89
87
  return output;
90
88
  }
91
-
92
89
  //#endregion
93
90
  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
91
+
92
+ //# sourceMappingURL=string-BJZKOUyT.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"string-BJZKOUyT.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"}
@@ -483,4 +483,4 @@ interface TokenTransformedMultiValue extends TokenTransformedBase {
483
483
  type TokenTransformed = TokenTransformedSingleValue | TokenTransformedMultiValue;
484
484
  //#endregion
485
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 };
486
- //# sourceMappingURL=types-Cwbw-_yP.d.ts.map
486
+ //# sourceMappingURL=types-CVck8QfU.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-Cwbw-_yP.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-CVck8QfU.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.3",
3
+ "version": "2.1.0",
4
4
  "description": "Various utilities for token types",
5
5
  "license": "MIT",
6
6
  "type": "module",