@terrazzo/token-tools 0.10.3 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/css.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { BooleanTokenNormalized, BorderTokenNormalized, ColorTokenNormalized, CubicBezierTokenNormalized, DimensionTokenNormalized, DurationTokenNormalized, FontFamilyTokenNormalized, FontWeightTokenNormalized, GradientTokenNormalized, LinkTokenNormalized, NumberTokenNormalized, ShadowTokenNormalized, ShadowValueNormalized, StringTokenNormalized, StrokeStyleTokenNormalized, TokenNormalized, TokenNormalizedSet, TransitionTokenNormalized, TypographyTokenNormalized } from "./types-BOWDcBsq.js";
1
+ import { BooleanTokenNormalized, BorderTokenNormalized, ColorTokenNormalized, CubicBezierTokenNormalized, DimensionTokenNormalized, DurationTokenNormalized, FontFamilyTokenNormalized, FontWeightTokenNormalized, GradientTokenNormalized, LinkTokenNormalized, NumberTokenNormalized, ShadowTokenNormalized, ShadowValueNormalized, StringTokenNormalized, StrokeStyleTokenNormalized, TokenNormalized, TokenNormalizedSet, TransitionTokenNormalized, TypographyTokenNormalized } from "./types-CoqP_8W1.js";
2
2
  import { Color } from "culori/fn";
3
3
 
4
4
  //#region src/css/lib.d.ts
@@ -30,7 +30,6 @@ declare function makeCSSVar(name: string, {
30
30
  prefix,
31
31
  wrapVar
32
32
  }?: MakeCSSVarOptions): string;
33
- //# sourceMappingURL=lib.d.ts.map
34
33
  //#endregion
35
34
  //#region src/css/css-types.d.ts
36
35
  interface TransformCSSValueOptions {
@@ -48,7 +47,6 @@ interface TransformCSSValueOptions {
48
47
  depth?: 24 | 30 | 36 | 48 | 'unlimited';
49
48
  };
50
49
  }
51
- //# sourceMappingURL=css-types.d.ts.map
52
50
  //#endregion
53
51
  //#region src/css/color.d.ts
54
52
  type WideGamutColorValue = {
@@ -68,7 +66,6 @@ declare const DEPTH_ROUNDING: {
68
66
  type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';
69
67
  /** Round color to certain depth. */
70
68
  declare function roundColor<T extends Color = Color>(color: T, depth?: Depth): T;
71
- //# sourceMappingURL=color.d.ts.map
72
69
  //#endregion
73
70
  //#region src/css/boolean.d.ts
74
71
  /** Convert boolean value to CSS string */
@@ -76,7 +73,6 @@ declare function transformBoolean(token: BooleanTokenNormalized, {
76
73
  tokensSet,
77
74
  transformAlias
78
75
  }: TransformCSSValueOptions): string;
79
- //# sourceMappingURL=boolean.d.ts.map
80
76
  //#endregion
81
77
  //#region src/css/border.d.ts
82
78
  /** Convert border value to multiple CSS values */
@@ -86,46 +82,37 @@ declare function transformBorder(token: BorderTokenNormalized, options: Transfor
86
82
  p3: string;
87
83
  rec2020: string;
88
84
  };
89
- //# sourceMappingURL=border.d.ts.map
90
85
  //#endregion
91
86
  //#region src/css/cubic-bezier.d.ts
92
87
  /** Convert cubicBezier value to CSS */
93
88
  declare function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): string;
94
- //# sourceMappingURL=cubic-bezier.d.ts.map
95
89
  //#endregion
96
90
  //#region src/css/dimension.d.ts
97
91
  /** Convert dimension value to CSS */
98
92
  declare function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): string;
99
- //# sourceMappingURL=dimension.d.ts.map
100
93
  //#endregion
101
94
  //#region src/css/duration.d.ts
102
95
  /** Convert duration value to CSS */
103
96
  declare function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): string;
104
- //# sourceMappingURL=duration.d.ts.map
105
97
  //#endregion
106
98
  //#region src/css/font-family.d.ts
107
99
  declare function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): string;
108
- //# sourceMappingURL=font-family.d.ts.map
109
100
  //#endregion
110
101
  //#region src/css/font-weight.d.ts
111
102
  /** Convert fontWeight value to CSS */
112
103
  declare function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): string;
113
- //# sourceMappingURL=font-weight.d.ts.map
114
104
  //#endregion
115
105
  //#region src/css/gradient.d.ts
116
106
  /** Convert gradient value to CSS */
117
107
  declare function transformGradient(token: GradientTokenNormalized, options: TransformCSSValueOptions): string | WideGamutColorValue;
118
- //# sourceMappingURL=gradient.d.ts.map
119
108
  //#endregion
120
109
  //#region src/css/link.d.ts
121
110
  /** Convert link value to CSS */
122
111
  declare function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): string;
123
- //# sourceMappingURL=link.d.ts.map
124
112
  //#endregion
125
113
  //#region src/css/number.d.ts
126
114
  /** Convert number value to CSS */
127
115
  declare function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): string;
128
- //# sourceMappingURL=number.d.ts.map
129
116
  //#endregion
130
117
  //#region src/css/shadow.d.ts
131
118
  /** Convert shadow subvalue to CSS */
@@ -135,28 +122,22 @@ declare function transformShadowLayer(value: ShadowValueNormalized, options: Tra
135
122
  }): string | Record<string, string>;
136
123
  /** Convert shadow value to CSS */
137
124
  declare function transformShadow(token: ShadowTokenNormalized, options: TransformCSSValueOptions): string | Record<string, string>;
138
- //# sourceMappingURL=shadow.d.ts.map
139
125
  //#endregion
140
126
  //#region src/css/string.d.ts
141
127
  /** Convert string value to CSS */
142
128
  declare function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): string;
143
- //# sourceMappingURL=string.d.ts.map
144
129
  //#endregion
145
130
  //#region src/css/stroke-style.d.ts
146
131
  /** Convert strokeStyle value to CSS */
147
132
  declare function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): string;
148
- //# sourceMappingURL=stroke-style.d.ts.map
149
133
  //#endregion
150
134
  //#region src/css/transition.d.ts
151
135
  /** Convert transition value to shorthand */
152
136
  declare function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions): string;
153
- //# sourceMappingURL=transition.d.ts.map
154
137
  //#endregion
155
138
  //#region src/css/typography.d.ts
156
139
  /** Convert typography value to multiple CSS values */
157
140
  declare function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions): Record<string, string>;
158
- //# sourceMappingURL=typography.d.ts.map
159
-
160
141
  //#endregion
161
142
  //#region src/css/index.d.ts
162
143
  /** Main CSS Transform */
@@ -166,8 +147,6 @@ declare function transformCSSValue<T extends TokenNormalized = TokenNormalized>(
166
147
  }: {
167
148
  mode: keyof T['mode'];
168
149
  } & TransformCSSValueOptions): string | WideGamutColorValue | Record<string, string> | undefined;
169
- //# sourceMappingURL=index.d.ts.map
170
-
171
150
  //#endregion
172
151
  export { DEPTH_ROUNDING, Depth, IDGenerator, MakeCSSVarOptions, WideGamutColorValue, defaultAliasTransform, generateShorthand, makeCSSVar, roundColor, transformBoolean, transformBorder, transformCSSValue, transformColor, transformCubicBezier, transformDimension, transformDuration, transformFontFamily, transformFontWeight, transformGradient, transformLink, transformNumber, transformShadow, transformShadowLayer, transformString, transformStrokeStyle, transformTransition, transformTypography };
173
152
  //# sourceMappingURL=css.d.ts.map
package/dist/css.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"css.d.ts","names":[],"sources":["../src/css/lib.ts","../src/css/css-types.ts","../src/css/color.ts","../src/css/boolean.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/dimension.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/stroke-style.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"css.d.ts","names":[],"sources":["../src/css/lib.ts","../src/css/css-types.ts","../src/css/color.ts","../src/css/boolean.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/dimension.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/stroke-style.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/css.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from "./string-BwN3ybNv.js";
1
+ import { CSS_TO_CULORI, kebabCase, parseColor, tokenToCulori } from "./string-D3-qmBT2.js";
2
2
  import { displayable, formatCss, formatHex, formatHex8, modeA98, modeHsl, modeHwb, modeLab, modeLab65, modeLch, modeLrgb, modeOkhsv, modeOklab, modeOklch, modeP3, modeProphoto, modeRec2020, modeRgb, modeXyz50, modeXyz65, round, toGamut, useMode } from "culori/fn";
3
3
  import { displayable as displayable$1 } from "culori";
4
4
 
@@ -252,9 +252,8 @@ function transformShadowLayer(value, options) {
252
252
  const offsetY = partialAliasOf?.offsetY ? transformAlias(tokensSet[partialAliasOf.offsetY]) : transformDimension({ $value: value.offsetY }, options);
253
253
  const blur = partialAliasOf?.blur ? transformAlias(tokensSet[partialAliasOf.blur]) : transformDimension({ $value: value.blur }, options);
254
254
  const spread = partialAliasOf?.spread ? transformAlias(tokensSet[partialAliasOf.spread]) : transformDimension({ $value: value.spread }, options);
255
- const inset = value?.inset === true ? "inset" : void 0;
256
255
  return [
257
- inset,
256
+ value?.inset === true ? "inset" : void 0,
258
257
  offsetX,
259
258
  offsetY,
260
259
  blur,
@@ -316,28 +315,23 @@ function transformTypography(token, options) {
316
315
  const resolvedToken = tokensSet[aliasedID];
317
316
  transformedValue = transformAlias(resolvedToken.$type === "typography" ? { id: `${aliasedID}-${property}` } : resolvedToken);
318
317
  } else switch (property) {
319
- case "fontFamily": {
318
+ case "fontFamily":
320
319
  transformedValue = transformFontFamily({ $value: subvalue }, options);
321
320
  break;
322
- }
323
321
  case "fontSize":
324
- case "letterSpacing": {
322
+ case "letterSpacing":
325
323
  transformedValue = transformDimension({ $value: subvalue }, options);
326
324
  break;
327
- }
328
- case "fontWeight": {
325
+ case "fontWeight":
329
326
  transformedValue = transformFontWeight({ $value: subvalue }, options);
330
327
  break;
331
- }
332
- case "lineHeight": {
328
+ case "lineHeight":
333
329
  if (typeof subvalue === "number") transformedValue = transformNumber({ $value: subvalue }, options);
334
330
  else transformedValue = transformDimension({ $value: subvalue }, options);
335
331
  break;
336
- }
337
- default: {
332
+ default:
338
333
  transformedValue = transformString({ $value: subvalue }, options);
339
334
  break;
340
- }
341
335
  }
342
336
  output[kebabCase(property)] = transformedValue;
343
337
  }
package/dist/css.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","names":["token: TokenNormalized","name: string","token: BooleanTokenNormalized","token: ColorTokenNormalized","options: TransformCSSValueOptions","formatColor: (color: Color) => string","converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color>","$value: ColorTokenNormalized['$value']","culoriColor: Color","depth: Depth","color: T","token: DimensionTokenNormalized","options: TransformCSSValueOptions","token: StrokeStyleTokenNormalized","options: TransformCSSValueOptions","token: BorderTokenNormalized","options: TransformCSSValueOptions","colorKey: string","token: CubicBezierTokenNormalized","options: TransformCSSValueOptions","token: DurationTokenNormalized","options: TransformCSSValueOptions","token: FontFamilyTokenNormalized","options: TransformCSSValueOptions","token: FontWeightTokenNormalized","options: TransformCSSValueOptions","token: GradientTokenNormalized","options: TransformCSSValueOptions","colors: (string | WideGamutColorValue)[]","positions: string[]","i: number","token: LinkTokenNormalized","options: TransformCSSValueOptions","token: NumberTokenNormalized","options: TransformCSSValueOptions","value: ShadowValueNormalized","options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n }","token: ShadowTokenNormalized","options: TransformCSSValueOptions","colorKey: string","token: StringTokenNormalized","options: TransformCSSValueOptions","token: TransitionTokenNormalized","options: TransformCSSValueOptions","token: TypographyTokenNormalized","options: TransformCSSValueOptions","output: Record<string, string>","transformedValue: string","token: T","tokenWithModeValue: T"],"sources":["../src/css/lib.ts","../src/css/boolean.ts","../src/css/color.ts","../src/css/dimension.ts","../src/css/stroke-style.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\n/** Function that generates a var(…) statement */\nexport type IDGenerator<T = TokenNormalized> = (token: T) => string;\n\nexport function defaultAliasTransform(token: TokenNormalized) {\n if (!token) {\n throw new Error('Undefined token');\n }\n return `var(${makeCSSVar(token.id)})`;\n}\n\n/** Generate shorthand CSS for select token types */\nexport function generateShorthand({ $type, localID }: { $type: string; localID: string }): string | undefined {\n switch ($type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n // note: \"typography\" is not set in shorthand because it can often unset values unintentionally.\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n }\n}\n\nconst CSS_VAR_RE =\n /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n\nexport interface MakeCSSVarOptions {\n /** Prefix with string */\n prefix?: string;\n /**\n * Wrap with `var(…)`\n * @default false\n */\n wrapVar?: boolean;\n}\n\n/**\n * Generate a valid CSS variable from any string\n * Code by @dfrankland\n */\nexport function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {\n if (typeof name !== 'string') {\n throw new Error(`makeCSSVar() Expected string, received ${name}`);\n }\n\n let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');\n if (prefix && !property.startsWith(`${prefix}-`)) {\n property = `${prefix}-${property}`;\n }\n const finalProperty = `--${property}`.toLocaleLowerCase();\n return wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n","import type { BooleanTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert boolean value to CSS string */\nexport function transformBoolean(\n token: BooleanTokenNormalized,\n { tokensSet, transformAlias = defaultAliasTransform }: TransformCSSValueOptions,\n): string {\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import {\n type Color,\n displayable,\n formatCss,\n formatHex,\n formatHex8,\n modeA98,\n modeHsl,\n modeHwb,\n modeLab,\n modeLab65,\n modeLch,\n modeLrgb,\n modeOkhsv,\n modeOklab,\n modeOklch,\n modeP3,\n modeProphoto,\n modeRec2020,\n modeRgb,\n modeXyz50,\n modeXyz65,\n round,\n toGamut,\n useMode,\n} from 'culori/fn';\nimport { CSS_TO_CULORI, type CULORI_TO_CSS, parseColor, tokenToCulori } from '../color.js';\nimport type { ColorTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nexport type WideGamutColorValue = {\n '.': string;\n srgb: string;\n p3: string;\n rec2020: string;\n};\n\n/** Convert color value to CSS string */\nexport function transformColor(\n token: ColorTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToCulori({ colorSpace, components, alpha });\n\n if (!color) {\n throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n }\n\n let formatColor: (color: Color) => string = formatCss;\n if (options.color?.legacyHex) {\n formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n }\n\n return displayable(color)\n ? formatColor(color)\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nconst converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color> = {\n a98: useMode(modeA98),\n hsl: useMode(modeHsl),\n hwb: useMode(modeHwb),\n lab: useMode(modeLab),\n lab65: useMode(modeLab65),\n lch: useMode(modeLch),\n lrgb: useMode(modeLrgb),\n oklab: useMode(modeOklab),\n oklch: useMode(modeOklch),\n okhsv: useMode(modeOkhsv),\n p3: useMode(modeP3),\n prophoto: useMode(modeProphoto),\n rec2020: useMode(modeRec2020),\n rgb: useMode(modeRgb),\n xyz50: useMode(modeXyz50),\n xyz65: useMode(modeXyz65),\n};\n\nexport const DEPTH_ROUNDING = {\n 24: round(4), // 24-bit almost fits into 3 decimal places, but not quite\n 30: round(4),\n 36: round(5),\n 48: round(6),\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n * Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n * we have to do an additional step of converting back. So we’re not really converting;\n * we’re just preserving the original colorspace.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], culoriColor: Color, depth: Depth = 30) {\n if (!($value.colorSpace in CSS_TO_CULORI)) {\n throw new Error(\n `Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || 'oklab';\n let gamutSpace = conversionSpace;\n // bugfix. \"lab\" and \"oklab\" have a bug in Culori\n // https://github.com/Evercoder/culori/issues/261\n if (gamutSpace === 'lab' || gamutSpace === 'lab65') {\n gamutSpace = 'lch';\n } else if (gamutSpace === 'oklab') {\n gamutSpace = 'oklch';\n }\n let srgb = converters[conversionSpace](toGamut('rgb', gamutSpace)(culoriColor));\n let p3 = converters[conversionSpace](toGamut('p3', gamutSpace)(culoriColor));\n let rec2020 = converters[conversionSpace](toGamut('rec2020', gamutSpace)(culoriColor));\n if (typeof depth === 'number') {\n if (!DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n srgb = roundColor(srgb, depth);\n p3 = roundColor(p3, depth);\n rec2020 = roundColor(rec2020, depth);\n }\n return {\n '.': formatCss(culoriColor),\n srgb: formatCss(srgb),\n p3: formatCss(p3),\n rec2020: formatCss(rec2020),\n };\n}\n\n/** Round color to certain depth. */\nexport function roundColor<T extends Color = Color>(color: T, depth: Depth = 30): T {\n if (depth === 'unlimited') {\n return color;\n }\n const newColor = { ...color };\n for (const [k, v] of Object.entries(color)) {\n if (typeof v !== 'number' || k === 'mode') {\n continue;\n }\n newColor[k as keyof T] = DEPTH_ROUNDING[depth](v) as T[keyof T];\n }\n return newColor;\n}\n","import type { DimensionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert dimension value to CSS */\nexport function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return token.$value.value === 0 ? '0' : `${token.$value.value}${token.$value.unit}`;\n}\n","import type { StrokeStyleTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert strokeStyle value to CSS */\nexport function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return typeof token.$value === 'string' ? token.$value : 'dashed'; // CSS doesn’t have `dash-array`; it’s just \"dashed\"\n}\n","import { displayable } from 'culori';\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformStrokeStyle } from './stroke-style.js';\n\n/** Convert border value to multiple CSS values */\nexport function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const width = token.partialAliasOf?.width\n ? transformAlias(tokensSet[token.partialAliasOf.width]!)\n : transformDimension({ $value: token.$value.width } as DimensionTokenNormalized, options);\n const color = token.partialAliasOf?.color\n ? transformAlias(tokensSet[token.partialAliasOf.color]!)\n : transformColor({ $value: token.$value.color } as ColorTokenNormalized, options);\n const style = token.partialAliasOf?.style\n ? transformAlias(tokensSet[token.partialAliasOf.style]!)\n : transformStrokeStyle({ $value: token.$value.style } as StrokeStyleTokenNormalized, options);\n\n const formatBorder = (colorKey: string) =>\n [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');\n\n return typeof color === 'string' || displayable(color.p3)\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert cubicBezier value to CSS */\nexport function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `cubic-bezier(${token.$value\n .map((v, i) => (token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]!) : v))\n .join(', ')})`;\n}\n","import type { DurationTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert duration value to CSS */\nexport function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return `${token.$value.value}${token.$value.unit}`;\n}\n","import type { FontFamilyTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\n\nexport function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value.map((fontName) => (FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`)).join(', ');\n}\n","import type { FontWeightTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert fontWeight value to CSS */\nexport function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type { ColorTokenNormalized, GradientTokenNormalized } from '../types.js';\nimport { transformColor, type WideGamutColorValue } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert gradient value to CSS */\nexport function transformGradient(\n token: GradientTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n let isHDR = false;\n\n const colors: (string | WideGamutColorValue)[] = [];\n const positions: string[] = [];\n\n for (let i = 0; i < token.$value.length; i++) {\n const { color, position } = token.$value[i]!;\n const colorValue = token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: color } as ColorTokenNormalized, options);\n if (typeof colorValue !== 'string') {\n isHDR = true;\n }\n colors.push(colorValue);\n positions.push(\n token.partialAliasOf?.[i]?.position\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.position!]!)\n : `${100 * position}%`,\n );\n }\n\n function formatStop(i: number, colorKey = '.') {\n return `${typeof colors[i] === 'string' ? colors[i] : colors[i]![colorKey as keyof (typeof colors)[number]]} ${positions[i]}`;\n }\n\n return !isHDR\n ? token.$value.map((_, i) => formatStop(i, positions[i]!)).join(', ')\n : {\n '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '),\n srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '),\n p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '),\n rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '),\n };\n}\n","import type { LinkTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert link value to CSS */\nexport function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `url(\"${token.$value}\")`;\n}\n","import type { NumberTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert number value to CSS */\nexport function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type {\n ColorTokenNormalized,\n DimensionTokenNormalized,\n ShadowTokenNormalized,\n ShadowValueNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert shadow subvalue to CSS */\nexport function transformShadowLayer(\n value: ShadowValueNormalized,\n options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n },\n): string | Record<string, string> {\n const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n const offsetX = partialAliasOf?.offsetX\n ? transformAlias(tokensSet[partialAliasOf.offsetX]!)\n : transformDimension({ $value: value.offsetX } as DimensionTokenNormalized, options);\n const offsetY = partialAliasOf?.offsetY\n ? transformAlias(tokensSet[partialAliasOf.offsetY]!)\n : transformDimension({ $value: value.offsetY } as DimensionTokenNormalized, options);\n const blur = partialAliasOf?.blur\n ? transformAlias(tokensSet[partialAliasOf.blur]!)\n : transformDimension({ $value: value.blur } as DimensionTokenNormalized, options);\n const spread = partialAliasOf?.spread\n ? transformAlias(tokensSet[partialAliasOf.spread]!)\n : transformDimension({ $value: value.spread } as DimensionTokenNormalized, options);\n const inset = value?.inset === true ? 'inset' : undefined;\n\n return [inset, offsetX, offsetY, blur, spread, colorValue].filter(Boolean).join(' ');\n}\n\n/** Convert shadow value to CSS */\nexport function transformShadow(\n token: ShadowTokenNormalized,\n options: TransformCSSValueOptions,\n): string | Record<string, string> {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n const colors = token.$value.map((v, i) =>\n token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: v.color } as ColorTokenNormalized, options),\n );\n const isHDR = colors.some((c) => typeof c === 'object');\n\n const formatShadow = (colorKey: string) =>\n token.$value\n .map((v, i) =>\n transformShadowLayer(v, {\n tokensSet,\n colorValue:\n typeof colors[i] === 'string'\n ? (colors[i] as string)\n : colors[i]![colorKey as keyof (typeof colors)[number]]!,\n partialAliasOf: token.partialAliasOf?.[i],\n transformAlias,\n }),\n )\n .join(', ');\n\n return !isHDR\n ? formatShadow('.')\n : {\n '.': formatShadow('.'),\n srgb: formatShadow('srgb'),\n p3: formatShadow('p3'),\n rec2020: formatShadow('rec2020'),\n };\n}\n","import type { StringTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert string value to CSS */\nexport function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n // this seems like a useless function—because it is—but this is a placeholder\n // that can handle unexpected values in the future should any arise\n return String(token.$value);\n}\n","import type { CubicBezierTokenNormalized, DurationTokenNormalized, TransitionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDuration } from './duration.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert transition value to shorthand */\nexport function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const duration = token.partialAliasOf?.duration\n ? transformAlias(tokensSet[token.partialAliasOf.duration]!)\n : transformDuration({ $value: token.$value.duration } as DurationTokenNormalized, options);\n const delay = token.partialAliasOf?.delay\n ? transformAlias(tokensSet[token.partialAliasOf.delay]!)\n : transformDuration({ $value: token.$value.delay } as DurationTokenNormalized, options);\n const timingFunction = token.partialAliasOf?.timingFunction\n ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]!)\n : transformCubicBezier({ $value: token.$value.timingFunction } as CubicBezierTokenNormalized, options);\n\n return `${duration} ${delay} ${timingFunction}`;\n}\n","import { kebabCase } from '../string.js';\nimport type {\n DimensionTokenNormalized,\n FontFamilyTokenNormalized,\n FontWeightTokenNormalized,\n NumberTokenNormalized,\n StringTokenNormalized,\n TokenNormalized,\n TypographyTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformNumber } from './number.js';\nimport { transformString } from './string.js';\n\n/** Convert typography value to multiple CSS values */\nexport function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n const output: Record<string, string> = {};\n for (const [property, subvalue] of Object.entries(token.$value)) {\n let transformedValue: string;\n const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n if (aliasedID) {\n const resolvedToken = tokensSet[aliasedID] as TypographyTokenNormalized;\n transformedValue = transformAlias(\n // if resolving against a typography token, inject the property as well\n resolvedToken.$type === 'typography' ? ({ id: `${aliasedID}-${property}` } as TokenNormalized) : resolvedToken,\n );\n } else {\n switch (property) {\n case 'fontFamily': {\n transformedValue = transformFontFamily({ $value: subvalue } as FontFamilyTokenNormalized, options);\n break;\n }\n case 'fontSize':\n case 'letterSpacing': {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n break;\n }\n case 'fontWeight': {\n transformedValue = transformFontWeight({ $value: subvalue } as FontWeightTokenNormalized, options);\n break;\n }\n case 'lineHeight': {\n if (typeof subvalue === 'number') {\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n }\n break;\n }\n default: {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n break;\n }\n }\n }\n output[kebabCase(property)] = transformedValue;\n }\n return output;\n}\n","import type { TokenNormalized } from '../types.js';\nimport { transformBoolean } from './boolean.js';\nimport { transformBorder } from './border.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDimension } from './dimension.js';\nimport { transformDuration } from './duration.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { transformGradient } from './gradient.js';\nimport { transformLink } from './link.js';\nimport { transformNumber } from './number.js';\nimport { transformShadow } from './shadow.js';\nimport { transformString } from './string.js';\nimport { transformStrokeStyle } from './stroke-style.js';\nimport { transformTransition } from './transition.js';\nimport { transformTypography } from './typography.js';\n\nexport * from './boolean.js';\nexport * from './border.js';\nexport * from './color.js';\nexport * from './cubic-bezier.js';\nexport * from './dimension.js';\nexport * from './duration.js';\nexport * from './font-family.js';\nexport * from './font-weight.js';\nexport * from './gradient.js';\nexport * from './lib.js';\nexport * from './link.js';\nexport * from './number.js';\nexport * from './shadow.js';\nexport * from './string.js';\nexport * from './stroke-style.js';\nexport * from './transition.js';\nexport * from './typography.js';\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n { mode, ...options }: { mode: keyof T['mode'] } & TransformCSSValueOptions,\n) {\n const selectedMode = token.mode[mode as keyof typeof token.mode];\n if (!selectedMode) {\n return;\n }\n const tokenWithModeValue: T = {\n id: token.id,\n $type: token.$type,\n // note: do NOT carry over aliasOf/partialAliasOf as that will result in incorrect values\n ...selectedMode,\n } as any;\n switch (tokenWithModeValue.$type) {\n case 'boolean': {\n return transformBoolean(tokenWithModeValue, options);\n }\n case 'border': {\n return transformBorder(tokenWithModeValue, options);\n }\n case 'color': {\n return transformColor(tokenWithModeValue, options);\n }\n case 'cubicBezier': {\n return transformCubicBezier(tokenWithModeValue, options);\n }\n case 'dimension': {\n return transformDimension(tokenWithModeValue, options);\n }\n case 'duration': {\n return transformDuration(tokenWithModeValue, options);\n }\n case 'fontFamily': {\n return transformFontFamily(tokenWithModeValue, options);\n }\n case 'fontWeight': {\n return transformFontWeight(tokenWithModeValue, options);\n }\n case 'gradient': {\n return transformGradient(tokenWithModeValue, options);\n }\n case 'link': {\n return transformLink(tokenWithModeValue, options);\n }\n case 'number': {\n return transformNumber(tokenWithModeValue, options);\n }\n case 'shadow': {\n return transformShadow(tokenWithModeValue, options);\n }\n case 'string': {\n return transformString(tokenWithModeValue, options);\n }\n case 'strokeStyle': {\n return transformStrokeStyle(tokenWithModeValue, options);\n }\n case 'transition': {\n return transformTransition(tokenWithModeValue, options);\n }\n case 'typography': {\n return transformTypography(tokenWithModeValue, options);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"css.js","names":["formatColor: (color: Color) => string","converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color>","displayable","colors: (string | WideGamutColorValue)[]","positions: string[]","output: Record<string, string>","transformedValue: string","tokenWithModeValue: T"],"sources":["../src/css/lib.ts","../src/css/boolean.ts","../src/css/color.ts","../src/css/dimension.ts","../src/css/stroke-style.ts","../src/css/border.ts","../src/css/cubic-bezier.ts","../src/css/duration.ts","../src/css/font-family.ts","../src/css/font-weight.ts","../src/css/gradient.ts","../src/css/link.ts","../src/css/number.ts","../src/css/shadow.ts","../src/css/string.ts","../src/css/transition.ts","../src/css/typography.ts","../src/css/index.ts"],"sourcesContent":["import type { TokenNormalized } from '../types.js';\n\n/** Function that generates a var(…) statement */\nexport type IDGenerator<T = TokenNormalized> = (token: T) => string;\n\nexport function defaultAliasTransform(token: TokenNormalized) {\n if (!token) {\n throw new Error('Undefined token');\n }\n return `var(${makeCSSVar(token.id)})`;\n}\n\n/** Generate shorthand CSS for select token types */\nexport function generateShorthand({ $type, localID }: { $type: string; localID: string }): string | undefined {\n switch ($type) {\n case 'transition': {\n return ['duration', 'delay', 'timing-function']\n .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))\n .join(' ');\n }\n // note: \"typography\" is not set in shorthand because it can often unset values unintentionally.\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n }\n}\n\nconst CSS_VAR_RE =\n /(?:(\\p{Uppercase_Letter}?[\\p{Lowercase_Letter}\\p{Number}]+|[\\p{Uppercase_Letter}\\p{Number}]+|[\\u{80}-\\u{10FFFF}\\p{Number}]+)|.)/u;\n\nexport interface MakeCSSVarOptions {\n /** Prefix with string */\n prefix?: string;\n /**\n * Wrap with `var(…)`\n * @default false\n */\n wrapVar?: boolean;\n}\n\n/**\n * Generate a valid CSS variable from any string\n * Code by @dfrankland\n */\nexport function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {\n if (typeof name !== 'string') {\n throw new Error(`makeCSSVar() Expected string, received ${name}`);\n }\n\n let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');\n if (prefix && !property.startsWith(`${prefix}-`)) {\n property = `${prefix}-${property}`;\n }\n const finalProperty = `--${property}`.toLocaleLowerCase();\n return wrapVar ? `var(${finalProperty})` : finalProperty;\n}\n","import type { BooleanTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert boolean value to CSS string */\nexport function transformBoolean(\n token: BooleanTokenNormalized,\n { tokensSet, transformAlias = defaultAliasTransform }: TransformCSSValueOptions,\n): string {\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value === true ? '1' : '0';\n}\n","import {\n type Color,\n displayable,\n formatCss,\n formatHex,\n formatHex8,\n modeA98,\n modeHsl,\n modeHwb,\n modeLab,\n modeLab65,\n modeLch,\n modeLrgb,\n modeOkhsv,\n modeOklab,\n modeOklch,\n modeP3,\n modeProphoto,\n modeRec2020,\n modeRgb,\n modeXyz50,\n modeXyz65,\n round,\n toGamut,\n useMode,\n} from 'culori/fn';\nimport { CSS_TO_CULORI, type CULORI_TO_CSS, parseColor, tokenToCulori } from '../color.js';\nimport type { ColorTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nexport type WideGamutColorValue = {\n '.': string;\n srgb: string;\n p3: string;\n rec2020: string;\n};\n\n/** Convert color value to CSS string */\nexport function transformColor(\n token: ColorTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { transformAlias = defaultAliasTransform, tokensSet } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const {\n colorSpace,\n components,\n alpha = 1,\n } = typeof token.$value === 'string' ? parseColor(token.$value) : token.$value;\n const color = tokenToCulori({ colorSpace, components, alpha });\n\n if (!color) {\n throw new Error(`Can’t convert color ${JSON.stringify(token.$value)} to Culori color`);\n }\n\n let formatColor: (color: Color) => string = formatCss;\n if (options.color?.legacyHex) {\n formatColor = color.alpha !== 1 ? formatHex8 : formatHex;\n }\n\n return displayable(color)\n ? formatColor(color)\n : downsample({ colorSpace, components, alpha }, color, options.color?.depth);\n}\n\nconst converters: Record<keyof typeof CULORI_TO_CSS, (color: Color) => Color> = {\n a98: useMode(modeA98),\n hsl: useMode(modeHsl),\n hwb: useMode(modeHwb),\n lab: useMode(modeLab),\n lab65: useMode(modeLab65),\n lch: useMode(modeLch),\n lrgb: useMode(modeLrgb),\n oklab: useMode(modeOklab),\n oklch: useMode(modeOklch),\n okhsv: useMode(modeOkhsv),\n p3: useMode(modeP3),\n prophoto: useMode(modeProphoto),\n rec2020: useMode(modeRec2020),\n rgb: useMode(modeRgb),\n xyz50: useMode(modeXyz50),\n xyz65: useMode(modeXyz65),\n};\n\nexport const DEPTH_ROUNDING = {\n 24: round(4), // 24-bit almost fits into 3 decimal places, but not quite\n 30: round(4),\n 36: round(5),\n 48: round(6),\n};\n\nexport type Depth = keyof typeof DEPTH_ROUNDING | 'unlimited';\n\n/**\n * Downsample color to sRGB/Display P3/Rec2020 colorspaces.\n * Note: because Culori tends to convert to RGB color spaces to ensure the operation,\n * we have to do an additional step of converting back. So we’re not really converting;\n * we’re just preserving the original colorspace.\n */\nfunction downsample($value: ColorTokenNormalized['$value'], culoriColor: Color, depth: Depth = 30) {\n if (!($value.colorSpace in CSS_TO_CULORI)) {\n throw new Error(\n `Invalid colorSpace \"${$value.colorSpace}\". Expected one of: ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n const conversionSpace = CSS_TO_CULORI[$value.colorSpace] || 'oklab';\n let gamutSpace = conversionSpace;\n // bugfix. \"lab\" and \"oklab\" have a bug in Culori\n // https://github.com/Evercoder/culori/issues/261\n if (gamutSpace === 'lab' || gamutSpace === 'lab65') {\n gamutSpace = 'lch';\n } else if (gamutSpace === 'oklab') {\n gamutSpace = 'oklch';\n }\n let srgb = converters[conversionSpace](toGamut('rgb', gamutSpace)(culoriColor));\n let p3 = converters[conversionSpace](toGamut('p3', gamutSpace)(culoriColor));\n let rec2020 = converters[conversionSpace](toGamut('rec2020', gamutSpace)(culoriColor));\n if (typeof depth === 'number') {\n if (!DEPTH_ROUNDING[depth]) {\n throw new Error(`Invalid bit depth: ${depth}. Supported values: ${Object.keys(DEPTH_ROUNDING).join(', ')}`);\n }\n srgb = roundColor(srgb, depth);\n p3 = roundColor(p3, depth);\n rec2020 = roundColor(rec2020, depth);\n }\n return {\n '.': formatCss(culoriColor),\n srgb: formatCss(srgb),\n p3: formatCss(p3),\n rec2020: formatCss(rec2020),\n };\n}\n\n/** Round color to certain depth. */\nexport function roundColor<T extends Color = Color>(color: T, depth: Depth = 30): T {\n if (depth === 'unlimited') {\n return color;\n }\n const newColor = { ...color };\n for (const [k, v] of Object.entries(color)) {\n if (typeof v !== 'number' || k === 'mode') {\n continue;\n }\n newColor[k as keyof T] = DEPTH_ROUNDING[depth](v) as T[keyof T];\n }\n return newColor;\n}\n","import type { DimensionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert dimension value to CSS */\nexport function transformDimension(token: DimensionTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return token.$value.value === 0 ? '0' : `${token.$value.value}${token.$value.unit}`;\n}\n","import type { StrokeStyleTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert strokeStyle value to CSS */\nexport function transformStrokeStyle(token: StrokeStyleTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return typeof token.$value === 'string' ? token.$value : 'dashed'; // CSS doesn’t have `dash-array`; it’s just \"dashed\"\n}\n","import { displayable } from 'culori';\nimport type {\n BorderTokenNormalized,\n ColorTokenNormalized,\n DimensionTokenNormalized,\n StrokeStyleTokenNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformStrokeStyle } from './stroke-style.js';\n\n/** Convert border value to multiple CSS values */\nexport function transformBorder(token: BorderTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const width = token.partialAliasOf?.width\n ? transformAlias(tokensSet[token.partialAliasOf.width]!)\n : transformDimension({ $value: token.$value.width } as DimensionTokenNormalized, options);\n const color = token.partialAliasOf?.color\n ? transformAlias(tokensSet[token.partialAliasOf.color]!)\n : transformColor({ $value: token.$value.color } as ColorTokenNormalized, options);\n const style = token.partialAliasOf?.style\n ? transformAlias(tokensSet[token.partialAliasOf.style]!)\n : transformStrokeStyle({ $value: token.$value.style } as StrokeStyleTokenNormalized, options);\n\n const formatBorder = (colorKey: string) =>\n [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');\n\n return typeof color === 'string' || displayable(color.p3)\n ? formatBorder('.')\n : {\n '.': formatBorder('.'),\n srgb: formatBorder('srgb'),\n p3: formatBorder('p3'),\n rec2020: formatBorder('rec2020'),\n };\n}\n","import type { CubicBezierTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert cubicBezier value to CSS */\nexport function transformCubicBezier(token: CubicBezierTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `cubic-bezier(${token.$value\n .map((v, i) => (token.partialAliasOf?.[i] ? transformAlias(tokensSet[token.partialAliasOf[i]]!) : v))\n .join(', ')})`;\n}\n","import type { DurationTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert duration value to CSS */\nexport function transformDuration(token: DurationTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n return `${token.$value.value}${token.$value.unit}`;\n}\n","import type { FontFamilyTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\nconst FONT_NAME_KEYWORD = /^[a-z-]+$/;\n\nexport function transformFontFamily(token: FontFamilyTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return token.$value.map((fontName) => (FONT_NAME_KEYWORD.test(fontName) ? fontName : `\"${fontName}\"`)).join(', ');\n}\n","import type { FontWeightTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert fontWeight value to CSS */\nexport function transformFontWeight(token: FontWeightTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type { ColorTokenNormalized, GradientTokenNormalized } from '../types.js';\nimport { transformColor, type WideGamutColorValue } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert gradient value to CSS */\nexport function transformGradient(\n token: GradientTokenNormalized,\n options: TransformCSSValueOptions,\n): string | WideGamutColorValue {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n let isHDR = false;\n\n const colors: (string | WideGamutColorValue)[] = [];\n const positions: string[] = [];\n\n for (let i = 0; i < token.$value.length; i++) {\n const { color, position } = token.$value[i]!;\n const colorValue = token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: color } as ColorTokenNormalized, options);\n if (typeof colorValue !== 'string') {\n isHDR = true;\n }\n colors.push(colorValue);\n positions.push(\n token.partialAliasOf?.[i]?.position\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.position!]!)\n : `${100 * position}%`,\n );\n }\n\n function formatStop(i: number, colorKey = '.') {\n return `${typeof colors[i] === 'string' ? colors[i] : colors[i]![colorKey as keyof (typeof colors)[number]]} ${positions[i]}`;\n }\n\n return !isHDR\n ? token.$value.map((_, i) => formatStop(i, positions[i]!)).join(', ')\n : {\n '.': token.$value.map((_, i) => formatStop(i, '.')).join(', '),\n srgb: token.$value.map((_, i) => formatStop(i, 'srgb')).join(', '),\n p3: token.$value.map((_, i) => formatStop(i, 'p3')).join(', '),\n rec2020: token.$value.map((_, i) => formatStop(i, 'rec2020')).join(', '),\n };\n}\n","import type { LinkTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert link value to CSS */\nexport function transformLink(token: LinkTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return `url(\"${token.$value}\")`;\n}\n","import type { NumberTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert number value to CSS */\nexport function transformNumber(token: NumberTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n return String(token.$value);\n}\n","import type {\n ColorTokenNormalized,\n DimensionTokenNormalized,\n ShadowTokenNormalized,\n ShadowValueNormalized,\n} from '../types.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert shadow subvalue to CSS */\nexport function transformShadowLayer(\n value: ShadowValueNormalized,\n options: TransformCSSValueOptions & {\n colorValue: string;\n partialAliasOf?: Partial<Record<keyof typeof value, string>>;\n },\n): string | Record<string, string> {\n const { tokensSet, colorValue, partialAliasOf, transformAlias = defaultAliasTransform } = options;\n const offsetX = partialAliasOf?.offsetX\n ? transformAlias(tokensSet[partialAliasOf.offsetX]!)\n : transformDimension({ $value: value.offsetX } as DimensionTokenNormalized, options);\n const offsetY = partialAliasOf?.offsetY\n ? transformAlias(tokensSet[partialAliasOf.offsetY]!)\n : transformDimension({ $value: value.offsetY } as DimensionTokenNormalized, options);\n const blur = partialAliasOf?.blur\n ? transformAlias(tokensSet[partialAliasOf.blur]!)\n : transformDimension({ $value: value.blur } as DimensionTokenNormalized, options);\n const spread = partialAliasOf?.spread\n ? transformAlias(tokensSet[partialAliasOf.spread]!)\n : transformDimension({ $value: value.spread } as DimensionTokenNormalized, options);\n const inset = value?.inset === true ? 'inset' : undefined;\n\n return [inset, offsetX, offsetY, blur, spread, colorValue].filter(Boolean).join(' ');\n}\n\n/** Convert shadow value to CSS */\nexport function transformShadow(\n token: ShadowTokenNormalized,\n options: TransformCSSValueOptions,\n): string | Record<string, string> {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n const colors = token.$value.map((v, i) =>\n token.partialAliasOf?.[i]?.color\n ? transformAlias(tokensSet[token.partialAliasOf[i]!.color!]!)\n : transformColor({ $value: v.color } as ColorTokenNormalized, options),\n );\n const isHDR = colors.some((c) => typeof c === 'object');\n\n const formatShadow = (colorKey: string) =>\n token.$value\n .map((v, i) =>\n transformShadowLayer(v, {\n tokensSet,\n colorValue:\n typeof colors[i] === 'string'\n ? (colors[i] as string)\n : colors[i]![colorKey as keyof (typeof colors)[number]]!,\n partialAliasOf: token.partialAliasOf?.[i],\n transformAlias,\n }),\n )\n .join(', ');\n\n return !isHDR\n ? formatShadow('.')\n : {\n '.': formatShadow('.'),\n srgb: formatShadow('srgb'),\n p3: formatShadow('p3'),\n rec2020: formatShadow('rec2020'),\n };\n}\n","import type { StringTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert string value to CSS */\nexport function transformString(token: StringTokenNormalized, options: TransformCSSValueOptions): string {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n // this seems like a useless function—because it is—but this is a placeholder\n // that can handle unexpected values in the future should any arise\n return String(token.$value);\n}\n","import type { CubicBezierTokenNormalized, DurationTokenNormalized, TransitionTokenNormalized } from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDuration } from './duration.js';\nimport { defaultAliasTransform } from './lib.js';\n\n/** Convert transition value to shorthand */\nexport function transformTransition(token: TransitionTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n if (token.aliasChain?.[0]) {\n return transformAlias(tokensSet[token.aliasChain[0]]!);\n }\n\n const duration = token.partialAliasOf?.duration\n ? transformAlias(tokensSet[token.partialAliasOf.duration]!)\n : transformDuration({ $value: token.$value.duration } as DurationTokenNormalized, options);\n const delay = token.partialAliasOf?.delay\n ? transformAlias(tokensSet[token.partialAliasOf.delay]!)\n : transformDuration({ $value: token.$value.delay } as DurationTokenNormalized, options);\n const timingFunction = token.partialAliasOf?.timingFunction\n ? transformAlias(tokensSet[token.partialAliasOf.timingFunction]!)\n : transformCubicBezier({ $value: token.$value.timingFunction } as CubicBezierTokenNormalized, options);\n\n return `${duration} ${delay} ${timingFunction}`;\n}\n","import { kebabCase } from '../string.js';\nimport type {\n DimensionTokenNormalized,\n FontFamilyTokenNormalized,\n FontWeightTokenNormalized,\n NumberTokenNormalized,\n StringTokenNormalized,\n TokenNormalized,\n TypographyTokenNormalized,\n} from '../types.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformDimension } from './dimension.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { defaultAliasTransform } from './lib.js';\nimport { transformNumber } from './number.js';\nimport { transformString } from './string.js';\n\n/** Convert typography value to multiple CSS values */\nexport function transformTypography(token: TypographyTokenNormalized, options: TransformCSSValueOptions) {\n const { tokensSet, transformAlias = defaultAliasTransform } = options;\n const output: Record<string, string> = {};\n for (const [property, subvalue] of Object.entries(token.$value)) {\n let transformedValue: string;\n const aliasedID = token.aliasChain?.[0] ?? token.partialAliasOf?.[property];\n if (aliasedID) {\n const resolvedToken = tokensSet[aliasedID] as TypographyTokenNormalized;\n transformedValue = transformAlias(\n // if resolving against a typography token, inject the property as well\n resolvedToken.$type === 'typography' ? ({ id: `${aliasedID}-${property}` } as TokenNormalized) : resolvedToken,\n );\n } else {\n switch (property) {\n case 'fontFamily': {\n transformedValue = transformFontFamily({ $value: subvalue } as FontFamilyTokenNormalized, options);\n break;\n }\n case 'fontSize':\n case 'letterSpacing': {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n break;\n }\n case 'fontWeight': {\n transformedValue = transformFontWeight({ $value: subvalue } as FontWeightTokenNormalized, options);\n break;\n }\n case 'lineHeight': {\n if (typeof subvalue === 'number') {\n transformedValue = transformNumber({ $value: subvalue } as NumberTokenNormalized, options);\n } else {\n transformedValue = transformDimension({ $value: subvalue } as DimensionTokenNormalized, options);\n }\n break;\n }\n default: {\n transformedValue = transformString({ $value: subvalue } as StringTokenNormalized, options);\n break;\n }\n }\n }\n output[kebabCase(property)] = transformedValue;\n }\n return output;\n}\n","import type { TokenNormalized } from '../types.js';\nimport { transformBoolean } from './boolean.js';\nimport { transformBorder } from './border.js';\nimport { transformColor } from './color.js';\nimport type { TransformCSSValueOptions } from './css-types.js';\nimport { transformCubicBezier } from './cubic-bezier.js';\nimport { transformDimension } from './dimension.js';\nimport { transformDuration } from './duration.js';\nimport { transformFontFamily } from './font-family.js';\nimport { transformFontWeight } from './font-weight.js';\nimport { transformGradient } from './gradient.js';\nimport { transformLink } from './link.js';\nimport { transformNumber } from './number.js';\nimport { transformShadow } from './shadow.js';\nimport { transformString } from './string.js';\nimport { transformStrokeStyle } from './stroke-style.js';\nimport { transformTransition } from './transition.js';\nimport { transformTypography } from './typography.js';\n\nexport * from './boolean.js';\nexport * from './border.js';\nexport * from './color.js';\nexport * from './cubic-bezier.js';\nexport * from './dimension.js';\nexport * from './duration.js';\nexport * from './font-family.js';\nexport * from './font-weight.js';\nexport * from './gradient.js';\nexport * from './lib.js';\nexport * from './link.js';\nexport * from './number.js';\nexport * from './shadow.js';\nexport * from './string.js';\nexport * from './stroke-style.js';\nexport * from './transition.js';\nexport * from './typography.js';\n\n/** Main CSS Transform */\nexport function transformCSSValue<T extends TokenNormalized = TokenNormalized>(\n token: T,\n { mode, ...options }: { mode: keyof T['mode'] } & TransformCSSValueOptions,\n) {\n const selectedMode = token.mode[mode as keyof typeof token.mode];\n if (!selectedMode) {\n return;\n }\n const tokenWithModeValue: T = {\n id: token.id,\n $type: token.$type,\n // note: do NOT carry over aliasOf/partialAliasOf as that will result in incorrect values\n ...selectedMode,\n } as any;\n switch (tokenWithModeValue.$type) {\n case 'boolean': {\n return transformBoolean(tokenWithModeValue, options);\n }\n case 'border': {\n return transformBorder(tokenWithModeValue, options);\n }\n case 'color': {\n return transformColor(tokenWithModeValue, options);\n }\n case 'cubicBezier': {\n return transformCubicBezier(tokenWithModeValue, options);\n }\n case 'dimension': {\n return transformDimension(tokenWithModeValue, options);\n }\n case 'duration': {\n return transformDuration(tokenWithModeValue, options);\n }\n case 'fontFamily': {\n return transformFontFamily(tokenWithModeValue, options);\n }\n case 'fontWeight': {\n return transformFontWeight(tokenWithModeValue, options);\n }\n case 'gradient': {\n return transformGradient(tokenWithModeValue, options);\n }\n case 'link': {\n return transformLink(tokenWithModeValue, options);\n }\n case 'number': {\n return transformNumber(tokenWithModeValue, options);\n }\n case 'shadow': {\n return transformShadow(tokenWithModeValue, options);\n }\n case 'string': {\n return transformString(tokenWithModeValue, options);\n }\n case 'strokeStyle': {\n return transformStrokeStyle(tokenWithModeValue, options);\n }\n case 'transition': {\n return transformTransition(tokenWithModeValue, options);\n }\n case 'typography': {\n return transformTypography(tokenWithModeValue, options);\n }\n }\n}\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized } from "./types-BOWDcBsq.js";
1
+ import { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupNormalized, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized } from "./types-CoqP_8W1.js";
2
2
  import "culori/css";
3
3
  import { Color } from "culori/fn";
4
4
 
5
+ //#region src/border.d.ts
6
+ declare const BORDER_REQUIRED_PROPERTIES: readonly ["color", "width", "style"];
7
+ //#endregion
5
8
  //#region src/color.d.ts
6
9
  declare const CULORI_TO_CSS: Record<Extract<Color['mode'], 'a98' | 'lab' | 'lab65' | 'lch' | 'oklab' | 'oklch' | 'okhsv' | 'hsl' | 'hwb' | 'lrgb' | 'p3' | 'prophoto' | 'rec2020' | 'rgb' | 'xyz50' | 'xyz65'>, ColorSpace>;
7
10
  declare const CSS_TO_CULORI: {
@@ -32,7 +35,32 @@ interface ColorSpaceDefinition {
32
35
  }
33
36
  /** Complete list of CSS Module 4 Colorspaces */
34
37
  declare const COLORSPACE: Record<ColorSpace, ColorSpaceDefinition>;
35
- //# sourceMappingURL=color.d.ts.map
38
+ //#endregion
39
+ //#region src/font-weight.d.ts
40
+ /** Mapping of valid names to numeric weights */
41
+ declare const FONT_WEIGHTS: {
42
+ thin: number;
43
+ hairline: number;
44
+ 'extra-light': number;
45
+ 'ultra-light': number;
46
+ light: number;
47
+ normal: number;
48
+ regular: number;
49
+ book: number;
50
+ medium: number;
51
+ 'semi-bold': number;
52
+ 'demi-bold': number;
53
+ bold: number;
54
+ 'extra-bold': number;
55
+ 'ultra-bold': number;
56
+ black: number;
57
+ heavy: number;
58
+ 'extra-black': number;
59
+ 'ultra-black': number;
60
+ };
61
+ //#endregion
62
+ //#region src/gradient.d.ts
63
+ declare const GRADIENT_REQUIRED_STOP_PROPERTIES: readonly ["color", "position"];
36
64
  //#endregion
37
65
  //#region src/id.d.ts
38
66
  /** Is this token an alias of another? */
@@ -48,7 +76,9 @@ declare function splitID(id: string): {
48
76
  local: string;
49
77
  group?: string;
50
78
  };
51
- //# sourceMappingURL=id.d.ts.map
79
+ //#endregion
80
+ //#region src/shadow.d.ts
81
+ declare const SHADOW_REQUIRED_PROPERTIES: readonly ["color", "offsetX", "offsetY", "blur", "spread"];
52
82
  //#endregion
53
83
  //#region src/string.d.ts
54
84
  /** Pad string lengths */
@@ -57,7 +87,11 @@ declare function padStr(input: string, length: number, alignment?: 'left' | 'cen
57
87
  declare function pluralize<T = string>(count: number, singular: T, plural: T): T;
58
88
  /** Turn a string into kebab-case */
59
89
  declare function kebabCase(str: string): string;
60
- //# sourceMappingURL=string.d.ts.map
90
+ //#endregion
91
+ //#region src/stroke-style.d.ts
92
+ declare const STROKE_STYLE_STRING_VALUES: readonly ["solid", "dashed", "dotted", "double", "groove", "ridge", "outset", "inset"];
93
+ declare const STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES: readonly ["dashArray", "lineCap"];
94
+ declare const STROKE_STYLE_LINE_CAP_VALUES: readonly ["round", "butt", "square"];
61
95
  //#endregion
62
96
  //#region src/transform.d.ts
63
97
  interface CustomTransformOptions {
@@ -68,8 +102,12 @@ interface CustomTransformOptions {
68
102
  declare function validateCustomTransform(value: unknown, {
69
103
  $type
70
104
  }: CustomTransformOptions): void;
71
- //# sourceMappingURL=transform.d.ts.map
72
-
73
105
  //#endregion
74
- export { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, ColorSpace, ColorSpaceDefinition, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, CustomTransformOptions, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
106
+ //#region src/transition.d.ts
107
+ declare const TRANSITION_REQUIRED_PROPERTIES: readonly ["duration", "delay", "timingFunction"];
108
+ //#endregion
109
+ //#region src/typography.d.ts
110
+ declare const TYPOGRAPHY_REQUIRED_PROPERTIES: readonly ["fontFamily", "fontSize", "fontWeight", "letterSpacing", "lineHeight"];
111
+ //#endregion
112
+ export { AliasToken, AliasValue, BORDER_REQUIRED_PROPERTIES, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, ColorSpace, ColorSpaceDefinition, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, CustomTransformOptions, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FONT_WEIGHTS, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GRADIENT_REQUIRED_STOP_PROPERTIES, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupNormalized, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
75
113
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/color.ts","../src/id.ts","../src/string.ts","../src/transform.ts"],"sourcesContent":[],"mappings":";;;;;cAMa,eAAe,OAC1B,QACE,oKAkBF;cAoBW;EAxCA,SAAA,SAsCH,EAAA,KAAA;EAAA,SAAA,YAAA,EAAA,IAAA;EAAA,SApCN,GAAA,EAAA,KAAA;EAAK,SADP,GAAA,EAAA,KAAA;EAAO,SAmBP,GAAA,EAAA,KAAA;EAAU,SApBgB,SAAA,EAAA,OAAA;EAAM,SAAA,GAAA,EAAA,KAAA;EAwCrB,SAAA,KAAA,EAkBH,OAAA;EAGM,SAAA,KAAU,EAAA,OAAA;EAmEV,SAAA,KAAA,EAAa,OAAA;EAAA,SAAA,cAAA,EAAA,UAAA;EAAA,SAAQ,OAAA,EAAA,SAAA;EAAoB,SAAG,IAAA,EAAA,KAAA;EAAK,SAAA,aAAA,EAAA,MAAA;EA2DhD,SAAA,GAAA,EAAA,OAAA;EAKJ,SAAA,SAwHZ,EAAA,OAAA;EAAA,SAAA,SAAA,EAAA,OAAA;CAAA;;AAxHwB,iBAnIT,UAAA,CAmIS,KAAA,EAAA,MAAA,CAAA,EAnIkB,oBAmIlB;AAAM;iBAhEf,aAAA,QAAqB,uBAAuB;UA2D3C,oBAAA;;AC5LjB;AAKA;AASgB,cDmLH,UCnLY,EDmLA,MCnLA,CDmLO,UCnLP,EDmLmB,oBCnLnB,CAAA;AAKzB;;;;iBAnBgB,OAAA;;iBAKA,aAAA;;ADJH,iBCaG,SAAA,CDyBN,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;AApCN,iBCgBY,UAAA,CDhBZ,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;AAkBF,iBCac,OAAA,CDbd,EAAA,EAAA,MAAA,CAAA,EAAA;EAAU,KApBgB,EAAA,MAAA;EAAM,KAAA,CAAA,EAAA,MAAA;AAwClC,CAAA;AAqBA;;;;iBElEgB,MAAA;;iBAuBA,+CAA+C,WAAW,IAAI;;AFlBjE,iBEuBG,SAAA,CFeN,GAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;;UG5CO,sBAAA;;;;;AHMJ,iBGAG,uBAAA,CHsCN,KAAA,EAAA,OAAA,EAAA;EAAA;AAAA,CAAA,EGtCyD,sBHsCzD,CAAA,EAAA,IAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/border.ts","../src/color.ts","../src/font-weight.ts","../src/gradient.ts","../src/id.ts","../src/shadow.ts","../src/string.ts","../src/stroke-style.ts","../src/transform.ts","../src/transition.ts","../src/typography.ts"],"sourcesContent":[],"mappings":";;;;;cAAa;;;cCMA,eAAe,OAC1B,QACE,oKAkBF;cAoBW;ED9CA,SAAA,SAAA,EAAA,KAAA;;;;ECMA,SAAA,GAAA,EAAA,KAsCH;EAAA,SAAA,SAAA,EAAA,OAAA;WApCN,GAAA,EAAA,KAAA;WADF,KAAA,EAAA,OAAA;WAmBA,KAAA,EAAA,OAAA;WApB0B,KAAA,EAAA,OAAA;EAAM,SAAA,cAAA,EAAA,UAAA;EAwCrB,SAAA,OAkBH,EAAA,SAAA;EAGM,SAAA,IAAU,EAAA,KAAA;EAmEV,SAAA,aAAa,EAAA,MAAA;EAAA,SAAA,GAAA,EAAA,OAAA;WAAQ,SAAA,EAAA,OAAA;WAAuB,SAAA,EAAA,OAAA;CAAK;AA2DjE;AAKa,iBAnIG,UAAA,CA2Pf,KAAA,EAAA,MAAA,CAAA,EA3P0C,oBA2P1C;;AAxH+B,iBAhEhB,aAAA,CAgEgB,KAAA,EAhEK,oBAgEL,CAAA,EAhE4B,KAgE5B,GAAA,SAAA;AAAY,UAL3B,oBAAA,CAK2B;QAAnB,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,CAAA,EAAA;;;cAAZ,YAAY,OAAO,YAAY;;;;cCrM/B;;;;EFDA,aAAA,EAAA,MAAA;;;;ECMA,IAAA,EAAA,MAAA;EAsCH,MAAA,EAAA,MAAA;aApCN,EAAA,MAAA;aADF,EAAA,MAAA;MAmBA,EAAA,MAAA;cApB0B,EAAA,MAAA;EAAM,YAAA,EAAA,MAAA;EAwCrB,KAAA,EAAA,MAAA;EAqBG,KAAA,EAAA,MAAU;EAmEV,aAAA,EAAA,MAAa;EAAA,aAAA,EAAA,MAAA;;;;cEtIhB;;;;iBCKG,OAAA;;iBAKA,aAAA;;AJVH,iBImBG,SAAA,CJnB8D,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;iBIwB9D,UAAA;;AHlBH,iBGiCG,OAAA,CHKN,EAAA,EAAA,MAAA,CAAA,EAAA;EAAA,KAAA,EAAA,MAAA;OApCN,CAAA,EAAA,MAAA;;;;cIRS;;;;iBCCG,MAAA;;iBAuBA,+CAA+C,WAAW,IAAI;;ANxBjE,iBM6BG,SAAA,CN7B8D,GAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;cOAjE;cAWA;cAEA;;;UCbI,sBAAA;;;;;ARAJ,iBQMG,uBAAA,CRN8D,KAAA,EAAA,OAAA,EAAA;EAAA;AAAA,CAAA,EQMX,sBRNW,CAAA,EAAA,IAAA;;;cSAjE;;;cCAA"}
package/dist/index.js CHANGED
@@ -1,6 +1,42 @@
1
- import { COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori } from "./string-BwN3ybNv.js";
1
+ import { COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori } from "./string-D3-qmBT2.js";
2
2
  import wcmatch from "wildcard-match";
3
3
 
4
+ //#region src/border.ts
5
+ const BORDER_REQUIRED_PROPERTIES = [
6
+ "color",
7
+ "width",
8
+ "style"
9
+ ];
10
+
11
+ //#endregion
12
+ //#region src/font-weight.ts
13
+ /** Mapping of valid names to numeric weights */
14
+ const FONT_WEIGHTS = {
15
+ thin: 100,
16
+ hairline: 100,
17
+ "extra-light": 200,
18
+ "ultra-light": 200,
19
+ light: 300,
20
+ normal: 400,
21
+ regular: 400,
22
+ book: 400,
23
+ medium: 500,
24
+ "semi-bold": 600,
25
+ "demi-bold": 600,
26
+ bold: 700,
27
+ "extra-bold": 800,
28
+ "ultra-bold": 800,
29
+ black: 900,
30
+ heavy: 900,
31
+ "extra-black": 950,
32
+ "ultra-black": 950
33
+ };
34
+
35
+ //#endregion
36
+ //#region src/gradient.ts
37
+ const GRADIENT_REQUIRED_STOP_PROPERTIES = ["color", "position"];
38
+
39
+ //#endregion
4
40
  //#region src/id.ts
5
41
  const ALIAS_RE = /^\{([^}]+)\}$/;
6
42
  /** Is this token an alias of another? */
@@ -32,6 +68,35 @@ function splitID(id) {
32
68
  };
33
69
  }
34
70
 
71
+ //#endregion
72
+ //#region src/shadow.ts
73
+ const SHADOW_REQUIRED_PROPERTIES = [
74
+ "color",
75
+ "offsetX",
76
+ "offsetY",
77
+ "blur",
78
+ "spread"
79
+ ];
80
+
81
+ //#endregion
82
+ //#region src/stroke-style.ts
83
+ const STROKE_STYLE_STRING_VALUES = [
84
+ "solid",
85
+ "dashed",
86
+ "dotted",
87
+ "double",
88
+ "groove",
89
+ "ridge",
90
+ "outset",
91
+ "inset"
92
+ ];
93
+ const STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES = ["dashArray", "lineCap"];
94
+ const STROKE_STYLE_LINE_CAP_VALUES = [
95
+ "round",
96
+ "butt",
97
+ "square"
98
+ ];
99
+
35
100
  //#endregion
36
101
  //#region src/transform.ts
37
102
  /** Give a user pertinent feedback if they override a transform incorrectly */
@@ -39,14 +104,31 @@ function validateCustomTransform(value, { $type }) {
39
104
  if (value) {
40
105
  if (typeof value !== "string" && typeof value !== "object" || Array.isArray(value)) throw new Error(`transform(): expected string or Object of strings, received ${Array.isArray(value) ? "Array" : typeof value}`);
41
106
  switch ($type) {
42
- case "typography": {
107
+ case "typography":
43
108
  if (typeof value !== "object") throw new Error("transform(): typography tokens must be an object of keys");
44
109
  break;
45
- }
46
110
  }
47
111
  }
48
112
  }
49
113
 
50
114
  //#endregion
51
- export { COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
115
+ //#region src/transition.ts
116
+ const TRANSITION_REQUIRED_PROPERTIES = [
117
+ "duration",
118
+ "delay",
119
+ "timingFunction"
120
+ ];
121
+
122
+ //#endregion
123
+ //#region src/typography.ts
124
+ const TYPOGRAPHY_REQUIRED_PROPERTIES = [
125
+ "fontFamily",
126
+ "fontSize",
127
+ "fontWeight",
128
+ "letterSpacing",
129
+ "lineHeight"
130
+ ];
131
+
132
+ //#endregion
133
+ export { BORDER_REQUIRED_PROPERTIES, COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, FONT_WEIGHTS, GRADIENT_REQUIRED_STOP_PROPERTIES, SHADOW_REQUIRED_PROPERTIES, STROKE_STYLE_LINE_CAP_VALUES, STROKE_STYLE_OBJECT_REQUIRED_PROPERTIES, STROKE_STYLE_STRING_VALUES, TRANSITION_REQUIRED_PROPERTIES, TYPOGRAPHY_REQUIRED_PROPERTIES, getTokenMatch, isAlias, kebabCase, makeAlias, padStr, parseAlias, parseColor, pluralize, splitID, tokenToCulori, validateCustomTransform };
52
134
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["value: string","tokenId: string","globPatterns: string[]","input: string","id: string","value: unknown"],"sources":["../src/id.ts","../src/transform.ts"],"sourcesContent":["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\n/** Same as isTokenMatch but returns the matching pattern */\nexport function getTokenMatch(tokenId: string, globPatterns: string[]): string | undefined {\n for (const pattern of globPatterns) {\n if (wcmatch(pattern)(tokenId)) {\n return pattern;\n }\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 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"],"mappings":";;;;AAEA,MAAM,WAAW;;AAGjB,SAAgB,QAAQA,OAAwB;AAC9C,QAAO,SAAS,KAAK,MAAM;AAC5B;;AAGD,SAAgB,cAAcC,SAAiBC,cAA4C;AACzF,MAAK,MAAM,WAAW,aACpB,KAAI,QAAQ,QAAQ,CAAC,QAAQ,CAC3B,QAAO;AAGZ;;AAGD,SAAgB,UAAUC,OAAuB;AAC/C,QAAO,MAAM,QAAQ,mBAAmB,OAAO;AAChD;;AAGD,SAAgB,WAAWA,OAAuB;AAEhD,KAAI,MAAM,SAAS,IAAI,CACrB,OAAM,IAAI,MACR;CAGJ,MAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,MAAK,MACH,QAAO;AAET,QAAO,MAAM,MAAM,MAAM;AAC1B;;AAGD,SAAgB,QAAQC,IAA+C;CACrE,MAAM,iBAAiB,GAAG,YAAY,IAAI;AAC1C,KAAI,mBAAmB,GACrB,QAAO,EAAE,OAAO,GAAI;AAEtB,QAAO;EACL,OAAO,GAAG,UAAU,iBAAiB,EAAE;EACvC,OAAO,GAAG,UAAU,GAAG,eAAe;CACvC;AACF;;;;;AC1CD,SAAgB,wBAAwBC,OAAgB,EAAE,OAA+B,EAAE;AACzF,KAAI,OAAO;AACT,aAAY,UAAU,mBAAmB,UAAU,YAAa,MAAM,QAAQ,MAAM,CAClF,OAAM,IAAI,MACR,CAAC,4DAA4D,EAAE,MAAM,QAAQ,MAAM,GAAG,iBAAiB,OAAO;AAGlH,UAAQ,OAAR;GACE,KAAK,cAAc;AACjB,eAAW,UAAU,SACnB,OAAM,IAAI,MAAM;AAElB;GACD;EACF;CACF;AACF"}
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\n/** Same as isTokenMatch but returns the matching pattern */\nexport function getTokenMatch(tokenId: string, globPatterns: string[]): string | undefined {\n for (const pattern of globPatterns) {\n if (wcmatch(pattern)(tokenId)) {\n return pattern;\n }\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;;;AAI7B,SAAgB,cAAc,SAAiB,cAA4C;AACzF,MAAK,MAAM,WAAW,aACpB,KAAI,QAAQ,QAAQ,CAAC,QAAQ,CAC3B,QAAO;;;AAMb,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;;;;;AC/CH,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 { TokenNormalized } from "./types-BOWDcBsq.js";
1
+ import { TokenNormalized } from "./types-CoqP_8W1.js";
2
2
 
3
3
  //#region src/js/index.d.ts
4
4
  interface TransformJSValueOptions {
@@ -16,8 +16,6 @@ declare function transformJSValue<T extends TokenNormalized>(token: T, {
16
16
  indent,
17
17
  startingIndent
18
18
  }: TransformJSValueOptions): string | undefined;
19
- //# sourceMappingURL=index.d.ts.map
20
-
21
19
  //#endregion
22
20
  export { TransformJSValueOptions, transformJSValue };
23
21
  //# sourceMappingURL=js.d.ts.map
package/dist/js.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"js.d.ts","names":[],"sources":["../src/js/index.ts"],"sourcesContent":[],"mappings":";;;UAEiB,uBAAA;;EAAA;EAWD,MAAA,CAAA,EAAA,MAAA;EAAgB;EAAA,cAAW,CAAA,EAAA,MAAA;;;;;AAEC,iBAF5B,gBAE4B,CAAA,UAFD,eAEC,CAAA,CAAA,KAAA,EADnC,CACmC,EAAA;EAAA,IAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,MAAA,GAAA,SAAA;AAAuB"}
1
+ {"version":3,"file":"js.d.ts","names":[],"sources":["../src/js/index.ts"],"sourcesContent":[],"mappings":";;;UAEiB,uBAAA;;EAAA;EAWD,MAAA,CAAA,EAAA,MAAA;EAAgB;gBAAW,CAAA,EAAA,MAAA;;;;;AAEC,iBAF5B,gBAE4B,CAAA,UAFD,eAEC,CAAA,CAAA,KAAA,EADnC,CACmC,EAAA;EAAA,IAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,MAAA,GAAA,SAAA"}
package/dist/js.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"js.js","names":["token: T"],"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 */\nexport function transformJSValue<T extends TokenNormalized>(\n token: T,\n { mode, indent = 2, startingIndent = 0 }: TransformJSValueOptions,\n) {\n if (!(mode in token.mode)) {\n return;\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\n return JSON.stringify(token.mode[mode]!.$value, undefined, indent).replace(/\\n/g, `\\n${indentStart}`);\n}\n"],"mappings":";;;;AAaA,SAAgB,iBACdA,OACA,EAAE,MAAM,SAAS,GAAG,iBAAiB,GAA4B,EACjE;AACA,OAAM,QAAQ,MAAM,MAClB;CAEF,MAAM,cAAc,iBAAiB,IAAI,IAAI,OAAO,kBAAkB,EAAE,GAAG;AAS3E,QAAO,KAAK,UAAU,MAAM,KAAK,MAAO,gBAAmB,OAAO,CAAC,QAAQ,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC;AACtG"}
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 */\nexport function transformJSValue<T extends TokenNormalized>(\n token: T,\n { mode, indent = 2, startingIndent = 0 }: TransformJSValueOptions,\n) {\n if (!(mode in token.mode)) {\n return;\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\n return JSON.stringify(token.mode[mode]!.$value, undefined, indent).replace(/\\n/g, `\\n${indentStart}`);\n}\n"],"mappings":";;;;AAaA,SAAgB,iBACd,OACA,EAAE,MAAM,SAAS,GAAG,iBAAiB,KACrC;AACA,KAAI,EAAE,QAAQ,MAAM,MAClB;CAEF,MAAM,cAAc,iBAAiB,IAAI,IAAI,OAAO,kBAAkB,EAAE,GAAG;AAS3E,QAAO,KAAK,UAAU,MAAM,KAAK,MAAO,QAAQ,QAAW,OAAO,CAAC,QAAQ,OAAO,KAAK,cAAc"}
@@ -57,14 +57,13 @@ function parseColor(color) {
57
57
  case "p3":
58
58
  case "prophoto":
59
59
  case "lrgb":
60
- case "rgb": {
60
+ case "rgb":
61
61
  components = [
62
62
  result.r,
63
63
  result.g,
64
64
  result.b
65
65
  ];
66
66
  break;
67
- }
68
67
  case "hsl": {
69
68
  const maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1;
70
69
  const maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1;
@@ -87,40 +86,36 @@ function parseColor(color) {
87
86
  }
88
87
  case "lab":
89
88
  case "lab65":
90
- case "oklab": {
89
+ case "oklab":
91
90
  components = [
92
91
  result.l,
93
92
  result.a,
94
93
  result.b
95
94
  ];
96
95
  break;
97
- }
98
96
  case "lch":
99
- case "oklch": {
97
+ case "oklch":
100
98
  components = [
101
99
  result.l,
102
100
  result.c,
103
101
  result.h ?? 0
104
102
  ];
105
103
  break;
106
- }
107
- case "okhsv": {
104
+ case "okhsv":
108
105
  components = [
109
106
  result.h ?? 0,
110
107
  result.s,
111
108
  result.v
112
109
  ];
113
110
  break;
114
- }
115
111
  case "xyz50":
116
- case "xyz65": {
112
+ case "xyz65":
117
113
  components = [
118
114
  result.x,
119
115
  result.y,
120
116
  result.z
121
117
  ];
122
118
  break;
123
- }
124
119
  }
125
120
  const value = {
126
121
  colorSpace,
@@ -175,10 +170,9 @@ function tokenToCulori(value) {
175
170
  case "lab":
176
171
  case "lab-d65":
177
172
  case "oklab": {
178
- const [l, a, b] = value.components;
179
- const mode = value.colorSpace === "lab-d65" ? "lab65" : value.colorSpace;
173
+ const [l = 0, a = 0, b = 0] = value.components;
180
174
  return {
181
- mode,
175
+ mode: value.colorSpace === "lab-d65" ? "lab65" : value.colorSpace,
182
176
  l,
183
177
  a,
184
178
  b,
@@ -351,4 +345,4 @@ function kebabCase(str) {
351
345
 
352
346
  //#endregion
353
347
  export { COLORSPACE, CSS_TO_CULORI, CULORI_TO_CSS, kebabCase, padStr, parseColor, pluralize, tokenToCulori };
354
- //# sourceMappingURL=string-BwN3ybNv.js.map
348
+ //# sourceMappingURL=string-D3-qmBT2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-D3-qmBT2.js","names":["CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lab65'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'okhsv'\n | 'hsl'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n>","components: [number, number, number]","value: ColorValueNormalized","COLORSPACE: Record<ColorSpace, ColorSpaceDefinition>"],"sources":["../src/color.ts","../src/string.ts"],"sourcesContent":["import 'culori/css';\nimport { type Color, formatHex, parse } from 'culori/fn';\nimport type { ColorSpace, ColorValueNormalized } from './types.js';\n\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nexport const CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lab65'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'okhsv'\n | 'hsl'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n> = {\n a98: 'a98-rgb',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n lab65: 'lab-d65',\n lch: 'lch',\n lrgb: 'srgb-linear',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n p3: 'display-p3',\n prophoto: 'prophoto-rgb',\n rec2020: 'rec2020',\n rgb: 'srgb',\n xyz50: 'xyz-d50',\n xyz65: 'xyz-d65',\n} as const;\n\nexport const CSS_TO_CULORI = {\n 'a98-rgb': 'a98',\n 'display-p3': 'p3',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n 'lab-d65': 'lab65',\n lch: 'lch',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n 'prophoto-rgb': 'prophoto',\n rec2020: 'rec2020',\n srgb: 'rgb',\n 'srgb-linear': 'lrgb',\n xyz: 'xyz65',\n 'xyz-d50': 'xyz50',\n 'xyz-d65': 'xyz65',\n} as const;\n\n/** Parse any color */\nexport function parseColor(color: string): ColorValueNormalized {\n const result = parse(color);\n if (!result) {\n throw new Error(`Unable to parse color \"${color}\"`);\n }\n if (!(result.mode in CULORI_TO_CSS)) {\n throw new Error(`Unsupported color space: ${result.mode}`);\n }\n const colorSpace = CULORI_TO_CSS[result.mode as keyof typeof CULORI_TO_CSS]!;\n let components: [number, number, number] = [0, 0, 0];\n switch (result.mode) {\n case 'a98':\n case 'rec2020':\n case 'p3':\n case 'prophoto':\n case 'lrgb':\n case 'rgb': {\n components = [result.r, result.g, result.b];\n break;\n }\n case 'hsl': {\n const maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.s * maxS, result.l * maxL];\n break;\n }\n case 'hwb': {\n const maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.w * maxW, result.b * maxB];\n break;\n }\n case 'lab':\n case 'lab65':\n case 'oklab': {\n components = [result.l, result.a, result.b];\n break;\n }\n case 'lch':\n case 'oklch': {\n components = [result.l, result.c, result.h ?? 0];\n break;\n }\n case 'okhsv': {\n components = [result.h ?? 0, result.s, result.v];\n break;\n }\n case 'xyz50':\n case 'xyz65': {\n components = [result.x, result.y, result.z];\n break;\n }\n }\n const value: ColorValueNormalized = {\n colorSpace,\n components,\n alpha: result.alpha ?? 1,\n };\n if (HEX_RE.test(color)) {\n // Note: this intentionally does NOT include alpha; it’s already in alpha.\n // Always use formatHex (not formatHex8).\n value.hex = formatHex(result);\n }\n return value;\n}\n\n/** Convert a color token to a Culori color */\nexport function tokenToCulori(value: ColorValueNormalized): Color | undefined {\n switch (value.colorSpace) {\n case 'a98-rgb':\n case 'display-p3':\n case 'prophoto-rgb':\n case 'rec2020':\n case 'srgb':\n case 'srgb-linear': {\n const [r, g, b] = value.components;\n return {\n mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n r,\n g,\n b,\n alpha: value.alpha,\n } as Color;\n }\n case 'hsl': {\n const [h, s, l] = value.components;\n const maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hsl', h: h!, s: s! / maxS, l: l! / maxL, alpha: value.alpha };\n }\n case 'hwb': {\n const [h, w, b] = value.components;\n const maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hwb', h: h!, w: w! / maxW, b: b! / maxB, alpha: value.alpha };\n }\n case 'lab':\n case 'lab-d65':\n case 'oklab': {\n const [l = 0, a = 0, b = 0] = value.components;\n const mode = value.colorSpace === 'lab-d65' ? 'lab65' : value.colorSpace;\n return { mode, l: l!, a: a!, b: b!, alpha: value.alpha };\n }\n case 'lch':\n case 'oklch': {\n const [l, c, h] = value.components;\n return { mode: value.colorSpace, l: l!, c: c!, h: h!, alpha: value.alpha };\n }\n case 'okhsv': {\n const [h, s, v] = value.components;\n return { mode: value.colorSpace, h: h!, s: s!, v: v!, alpha: value.alpha };\n }\n case 'xyz':\n case 'xyz-d50':\n case 'xyz-d65': {\n const [x, y, z] = value.components;\n return { mode: CSS_TO_CULORI[value.colorSpace], x: x!, y: y!, z: z!, alpha: value.alpha };\n }\n default: {\n throw new Error(\n `Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n }\n}\n\nexport interface ColorSpaceDefinition {\n ranges: [min: number, max: number][];\n}\n\n/** Complete list of CSS Module 4 Colorspaces */\nexport const COLORSPACE: Record<ColorSpace, ColorSpaceDefinition> = {\n 'a98-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'display-p3': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n hsl: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n hwb: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n lab: {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n 'lab-d65': {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n lch: {\n ranges: [\n [0.0, 100.0],\n [0, 150.0],\n [0.0, 360.0],\n ],\n },\n oklab: {\n ranges: [\n [0.0, 1.0],\n [-0.4, 0.4],\n [-0.4, 0.4],\n ],\n },\n oklch: {\n ranges: [\n [0.0, 1.0],\n [0.0, 0.4],\n [0.0, 360.0],\n ],\n },\n okhsv: {\n ranges: [\n [0.0, 360.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'prophoto-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n rec2020: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n srgb: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'srgb-linear': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d50': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n xyz: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d65': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n};\n","/** Pad string lengths */\nexport function padStr(input: string, length: number, alignment: 'left' | 'center' | 'right' = 'left'): string {\n const d =\n Math.min(length || 0, 1000) - // guard against NaNs and Infinity\n input.length;\n if (d > 0) {\n switch (alignment) {\n case 'left': {\n return `${input}${' '.repeat(d)}`;\n }\n case 'right': {\n return `${' '.repeat(d)}${input}`;\n }\n case 'center': {\n const left = Math.floor(d / 2);\n const right = d - left;\n return `${' '.repeat(left)}${input}${' '.repeat(right)}`;\n }\n }\n }\n return input;\n}\n\n/** Pluralize strings */\nexport function pluralize<T = string>(count: number, singular: T, plural: T): T {\n return count === 1 ? singular : plural;\n}\n\n/** Turn a string into kebab-case */\nexport function kebabCase(str: string): string {\n let output = '';\n for (const c of str.split('')) {\n if (c === '.') {\n output += '-';\n continue;\n }\n let isFirstUppercase = true;\n if (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n output += `-${c.toLocaleLowerCase()}`;\n isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters\n continue;\n } else {\n isFirstUppercase = true; // reset\n }\n\n output += c;\n }\n return output;\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { ObjectNode } from "@humanwhocodes/momoa";
1
+ import * as momoa from "@humanwhocodes/momoa";
2
2
 
3
3
  //#region src/types.d.ts
4
4
  interface TokenCore<E extends {} = Record<string, unknown>> {
5
- $description?: string;
6
- $deprecated?: string | boolean;
5
+ $description?: string | undefined;
6
+ $deprecated?: string | boolean | undefined;
7
7
  $extensions?: E;
8
8
  }
9
9
  type Token = BooleanToken | BorderToken | ColorToken | CubicBezierToken | DimensionToken | DurationToken | FontFamilyToken | FontWeightToken | GradientToken | LinkToken | NumberToken | ShadowToken | StringToken | TransitionToken | TypographyToken | StrokeStyleToken;
@@ -42,16 +42,15 @@ interface ColorToken extends TokenCore {
42
42
  }
43
43
  type ColorValue = string | {
44
44
  colorSpace: ColorSpace;
45
- channels?: [number, number, number];
46
- components: [number, number, number];
47
- alpha?: number;
45
+ components: (number | null | string)[];
46
+ alpha?: string | number;
48
47
  hex?: string;
49
48
  };
50
49
  interface CubicBezierToken extends TokenCore {
51
50
  $type: 'cubicBezier';
52
51
  $value: CubicBezierValue | AliasValue;
53
52
  }
54
- type CubicBezierValue = [number, number, number, number];
53
+ type CubicBezierValue = [number | string, number | string, number | string, number | string];
55
54
  /**
56
55
  * 8.2 Dimension
57
56
  */
@@ -193,71 +192,87 @@ interface TypographyValue {
193
192
  [key: string]: unknown;
194
193
  }
195
194
  interface GroupCore {
196
- $description?: string;
195
+ $deprecated?: string | boolean | undefined;
196
+ $description?: string | undefined;
197
197
  $type?: Token['$type'];
198
198
  $extensions?: Record<string, unknown>;
199
199
  }
200
200
  type Group = GroupCore | {
201
- [key: string]: GroupOrToken | GroupCore;
201
+ [key: string]: GroupOrToken;
202
202
  };
203
203
  type GroupOrToken = Group | Token;
204
204
  /** Modes only have a subset of information from the root token, that is allowed to diverge (e.g. id will never differ, so don’t bother storing it on mode). */
205
- type TokenMode<T extends TokenNormalized> = Pick<T, '$value' | 'aliasOf' | 'aliasChain' | 'partialAliasOf' | 'source'> & {
206
- originalValue: T['originalValue']['$value'];
205
+ type TokenMode<T extends TokenNormalized> = Pick<T, '$value' | 'aliasOf' | 'aliasChain' | 'aliasedBy' | 'partialAliasOf' | 'dependencies' | 'source'> & {
206
+ originalValue: NonNullable<T['originalValue']>['$value'] | undefined;
207
207
  };
208
208
  type ModeMap<T extends TokenNormalized> = {
209
209
  '.': TokenMode<T>;
210
210
  [mode: string]: TokenMode<T> | undefined;
211
211
  };
212
+ interface GroupNormalized {
213
+ $description: string | undefined;
214
+ $deprecated: string | boolean | undefined;
215
+ $extensions: Record<string, unknown> | undefined;
216
+ $type: Token['$type'] | undefined;
217
+ id: string;
218
+ /** IDs of all tokens contained in this group */
219
+ tokens: string[];
220
+ }
212
221
  interface TokenNormalizedCore<$type extends Token['$type']> {
213
222
  $type: $type;
214
- $description?: string;
215
- $extensions?: Record<string, unknown>;
216
- $deprecated?: string | boolean;
223
+ $description: string | undefined;
224
+ $extensions: Record<string, unknown> | undefined;
225
+ $deprecated: string | boolean | undefined;
217
226
  id: string;
227
+ /** Originating token location */
218
228
  source: {
229
+ /** @deprecated use filename instead */
219
230
  loc?: string;
220
- node: ObjectNode;
231
+ filename: string | undefined;
232
+ node: momoa.ObjectNode;
221
233
  };
234
+ /** JSON Schema form of ID */
235
+ jsonID: string;
236
+ originalValue: unknown;
222
237
  /** The **final** aliased ID */
223
- aliasOf?: string;
238
+ aliasOf: string | undefined;
224
239
  /** The entire alias chain, starting from the source token. The last item will match `.aliasOf`. */
225
- aliasChain?: string[];
240
+ aliasChain: string[] | undefined;
226
241
  /** If this token is aliased in other tokens. */
227
- aliasedBy?: string[];
228
- group: {
229
- $description?: string;
230
- $extensions?: Record<string, unknown>;
231
- $type?: $type;
232
- id: string;
233
- /** IDs of all tokens contained in this group */
234
- tokens: string[];
235
- };
242
+ aliasedBy: string[] | undefined;
243
+ /** All references from other tokens that compose this one, if any */
244
+ dependencies: string[] | undefined;
245
+ group: GroupNormalized;
236
246
  }
237
247
  type TokenNormalized = BooleanTokenNormalized | BorderTokenNormalized | ColorTokenNormalized | CubicBezierTokenNormalized | DimensionTokenNormalized | DurationTokenNormalized | FontFamilyTokenNormalized | FontWeightTokenNormalized | GradientTokenNormalized | LinkTokenNormalized | NumberTokenNormalized | ShadowTokenNormalized | StringTokenNormalized | StrokeStyleTokenNormalized | TransitionTokenNormalized | TypographyTokenNormalized;
238
248
  type TokenNormalizedSet = Record<string, TokenNormalized>;
239
249
  interface BooleanTokenNormalized extends TokenNormalizedCore<'boolean'> {
240
250
  $value: BooleanValue;
241
- partialAliasOf?: never;
251
+ partialAliasOf: undefined;
242
252
  mode: ModeMap<BooleanTokenNormalized>;
243
- originalValue: BooleanToken | AliasToken;
253
+ originalValue: BooleanToken | AliasToken | undefined;
244
254
  }
245
255
  interface BorderTokenNormalized extends TokenNormalizedCore<'border'> {
246
256
  $value: BorderValueNormalized;
247
- partialAliasOf?: Partial<Record<keyof BorderValueNormalized, string>>;
257
+ partialAliasOf: Record<keyof BorderValueNormalized, string | undefined> | undefined;
248
258
  mode: ModeMap<BorderTokenNormalized>;
249
- originalValue: BorderToken | AliasToken;
259
+ originalValue: BorderToken | AliasToken | undefined;
250
260
  }
251
261
  interface BorderValueNormalized {
252
262
  color: ColorValueNormalized;
253
263
  width: DimensionValue;
254
- style: StrokeStyleValueExpanded;
264
+ style: StrokeStyleValue;
255
265
  }
256
266
  interface ColorTokenNormalized extends TokenNormalizedCore<'color'> {
257
267
  $value: ColorValueNormalized;
258
268
  mode: ModeMap<ColorTokenNormalized>;
259
- partialAliasOf?: never;
260
- originalValue: ColorToken | AliasToken;
269
+ partialAliasOf: {
270
+ colorSpace: string | undefined;
271
+ components: (string | undefined)[];
272
+ alpha: string | undefined;
273
+ hex: string | undefined;
274
+ } | undefined;
275
+ originalValue: ColorToken | AliasToken | undefined;
261
276
  }
262
277
  interface ColorValueNormalized {
263
278
  /**
@@ -266,10 +281,9 @@ interface ColorValueNormalized {
266
281
  * @see https://www.w3.org/TR/css-color-4/#predefined
267
282
  */
268
283
  colorSpace: ColorSpace;
269
- channels?: [number, number, number];
270
284
  /** Color components. Will be normalized to 1 unless the colorspace prevents it (e.g. XYZ, LAB) */
271
- components: [number, number, number];
272
- /** Alpha channel, normalized from 0 – 1 */
285
+ components: (number | null)[];
286
+ /** Alpha component, normalized from 0 – 1 */
273
287
  alpha: number;
274
288
  /** Hex fallback (for sRGB) */
275
289
  hex?: string;
@@ -277,44 +291,48 @@ interface ColorValueNormalized {
277
291
  type ColorSpace = 'a98-rgb' | 'display-p3' | 'hsl' | 'hwb' | 'lab' | 'lab-d65' | 'lch' | 'okhsv' | 'oklab' | 'oklch' | 'prophoto-rgb' | 'rec2020' | 'srgb-linear' | 'srgb' | 'xyz' | 'xyz-d50' | 'xyz-d65';
278
292
  interface CubicBezierTokenNormalized extends TokenNormalizedCore<'cubicBezier'> {
279
293
  $value: CubicBezierValue;
280
- partialAliasOf?: [string | undefined, string | undefined, string | undefined, string | undefined];
294
+ /** Parts of this token rely on others */
295
+ partialAliasOf: [string | undefined, string | undefined, string | undefined, string | undefined] | undefined;
281
296
  mode: ModeMap<CubicBezierTokenNormalized>;
282
- originalValue: CubicBezierToken | AliasToken;
297
+ originalValue: CubicBezierToken | AliasToken | undefined;
283
298
  }
284
299
  interface DimensionTokenNormalized extends TokenNormalizedCore<'dimension'> {
285
300
  $value: DimensionValue;
286
- partialAliasOf?: never;
301
+ /** Parts of this token rely on others */
302
+ partialAliasOf: undefined;
287
303
  mode: ModeMap<DimensionTokenNormalized>;
288
- originalValue: DimensionToken | AliasToken;
304
+ originalValue: DimensionToken | AliasToken | undefined;
289
305
  }
290
306
  interface DurationTokenNormalized extends TokenNormalizedCore<'duration'> {
291
307
  $value: DurationValue;
292
- partialAliasOf?: never;
308
+ /** Parts of this token rely on others */
309
+ partialAliasOf: undefined;
293
310
  mode: ModeMap<DurationTokenNormalized>;
294
- originalValue: DurationToken | AliasToken;
311
+ originalValue: DurationToken | AliasToken | undefined;
295
312
  }
296
313
  interface FontFamilyTokenNormalized extends TokenNormalizedCore<'fontFamily'> {
297
314
  $value: FontFamilyValueNormalized;
298
- aliasOf?: string;
299
- partialAliasOf?: never;
315
+ /** Parts of this token rely on others */
316
+ partialAliasOf: undefined;
300
317
  mode: ModeMap<FontFamilyTokenNormalized>;
301
- originalValue: FontFamilyToken | AliasToken;
318
+ originalValue: FontFamilyToken | AliasToken | undefined;
302
319
  }
303
320
  type FontFamilyValueNormalized = string[];
304
321
  interface FontWeightTokenNormalized extends TokenNormalizedCore<'fontWeight'> {
305
322
  $type: 'fontWeight';
306
323
  $value: FontWeightValueNormalized;
307
- aliasOf?: string;
308
- partialAliasOf?: never;
324
+ /** Parts of this token rely on others */
325
+ partialAliasOf: undefined;
309
326
  mode: ModeMap<FontWeightTokenNormalized>;
310
- originalValue: FontWeightToken | AliasToken;
327
+ originalValue: FontWeightToken | AliasToken | undefined;
311
328
  }
312
329
  type FontWeightValueNormalized = number;
313
330
  interface GradientTokenNormalized extends TokenNormalizedCore<'gradient'> {
314
331
  $value: GradientValueNormalized;
315
- partialAliasOf?: Partial<Record<keyof GradientStopNormalized, string>>[];
332
+ /** Parts of this token rely on others */
333
+ partialAliasOf: Record<keyof GradientStopNormalized, string | undefined>[] | undefined;
316
334
  mode: ModeMap<GradientTokenNormalized>;
317
- originalValue: GradientTokenNormalized | AliasToken;
335
+ originalValue: GradientToken | AliasToken | undefined;
318
336
  }
319
337
  type GradientValueNormalized = GradientStopNormalized[];
320
338
  interface GradientStopNormalized {
@@ -323,21 +341,24 @@ interface GradientStopNormalized {
323
341
  }
324
342
  interface LinkTokenNormalized extends TokenNormalizedCore<'link'> {
325
343
  $value: LinkValue;
326
- partialAliasOf?: never;
344
+ /** Parts of this token rely on others */
345
+ partialAliasOf: undefined;
327
346
  mode: ModeMap<LinkTokenNormalized>;
328
- originalValue: LinkToken | AliasToken;
347
+ originalValue: LinkToken | AliasToken | undefined;
329
348
  }
330
349
  interface NumberTokenNormalized extends TokenNormalizedCore<'number'> {
331
350
  $value: NumberValue;
332
- partialAliasOf?: never;
351
+ /** Parts of this token rely on others */
352
+ partialAliasOf: undefined;
333
353
  mode: ModeMap<NumberTokenNormalized>;
334
- originalValue: NumberToken | AliasToken;
354
+ originalValue: NumberToken | AliasToken | undefined;
335
355
  }
336
356
  interface ShadowTokenNormalized extends TokenNormalizedCore<'shadow'> {
337
357
  $value: ShadowValueNormalized[];
338
- partialAliasOf?: Partial<Record<keyof ShadowValueNormalized, string>>[];
358
+ /** Parts of this token rely on others */
359
+ partialAliasOf: Record<keyof ShadowValue, string | undefined>[] | undefined;
339
360
  mode: ModeMap<ShadowTokenNormalized>;
340
- originalValue: ShadowToken | AliasToken;
361
+ originalValue: ShadowToken | AliasToken | undefined;
341
362
  }
342
363
  interface ShadowValueNormalized {
343
364
  color: ColorValueNormalized;
@@ -349,21 +370,25 @@ interface ShadowValueNormalized {
349
370
  }
350
371
  interface StringTokenNormalized extends TokenNormalizedCore<'string'> {
351
372
  $value: StringValue;
352
- partialAliasOf?: never;
373
+ /** Parts of this token rely on others */
374
+ partialAliasOf: undefined;
353
375
  mode: ModeMap<StringTokenNormalized>;
354
- originalValue: StringTokenNormalized | AliasToken;
376
+ originalValue: StringToken | AliasToken | undefined;
355
377
  }
356
378
  interface StrokeStyleTokenNormalized extends TokenNormalizedCore<'strokeStyle'> {
357
379
  $value: StrokeStyleValueExpanded;
358
- partialAliasOf?: never;
380
+ partialAliasOf: {
381
+ dashArray: (string | undefined)[];
382
+ } | undefined;
359
383
  mode: ModeMap<StrokeStyleTokenNormalized>;
360
- originalValue: StrokeStyleToken | AliasToken;
384
+ originalValue: StrokeStyleToken | AliasToken | undefined;
361
385
  }
362
386
  interface TransitionTokenNormalized extends TokenNormalizedCore<'transition'> {
363
387
  $value: TransitionValueNormalized;
364
- partialAliasOf?: Partial<Record<keyof TransitionValueNormalized, string>>;
388
+ /** Parts of this token rely on others */
389
+ partialAliasOf: Record<keyof TransitionValueNormalized, string | undefined> | undefined;
365
390
  mode: ModeMap<TransitionTokenNormalized>;
366
- originalValue: TransitionToken | AliasToken;
391
+ originalValue: TransitionToken | AliasToken | undefined;
367
392
  }
368
393
  interface TransitionValueNormalized {
369
394
  duration: DurationValue;
@@ -372,13 +397,14 @@ interface TransitionValueNormalized {
372
397
  }
373
398
  interface TypographyTokenNormalized extends TokenNormalizedCore<'typography'> {
374
399
  $value: TypographyValueNormalized;
375
- partialAliasOf?: Record<string, string>;
400
+ /** Parts of this token rely on others */
401
+ partialAliasOf: Record<keyof TypographyValueNormalized, string | undefined> | undefined;
376
402
  mode: ModeMap<TypographyTokenNormalized>;
377
- originalValue: TypographyToken | AliasToken;
403
+ originalValue: TypographyToken | AliasToken | undefined;
378
404
  }
379
405
  interface TypographyValueNormalized {
380
- fontFamily?: FontFamilyValue;
381
- fontSize?: DimensionValue;
406
+ fontFamily: FontFamilyValue;
407
+ fontSize: DimensionValue;
382
408
  fontStyle?: string;
383
409
  fontVariant?: string;
384
410
  fontVariantAlternatives?: string;
@@ -389,15 +415,13 @@ interface TypographyValueNormalized {
389
415
  fontVariantNumeric?: string;
390
416
  fontVariantPosition?: string;
391
417
  fontVariationSettings?: string;
392
- fontWeight?: FontWeightValue;
393
- letterSpacing?: DimensionValue;
394
- lineHeight?: DimensionValue | NumberValue;
418
+ fontWeight: FontWeightValue;
419
+ letterSpacing: DimensionValue;
420
+ lineHeight: DimensionValue | NumberValue;
395
421
  textDecoration?: string;
396
422
  textTransform?: string;
397
423
  [key: string]: unknown;
398
424
  }
399
- //# sourceMappingURL=types.d.ts.map
400
-
401
425
  //#endregion
402
- export { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized };
403
- //# sourceMappingURL=types-BOWDcBsq.d.ts.map
426
+ export { AliasToken, AliasValue, BooleanToken, BooleanTokenNormalized, BooleanValue, BorderToken, BorderTokenNormalized, BorderValue, BorderValueNormalized, ColorSpace, ColorToken, ColorTokenNormalized, ColorValue, ColorValueNormalized, CubicBezierToken, CubicBezierTokenNormalized, CubicBezierValue, DimensionToken, DimensionTokenNormalized, DimensionValue, DurationToken, DurationTokenNormalized, DurationValue, FontFamilyToken, FontFamilyTokenNormalized, FontFamilyValue, FontFamilyValueNormalized, FontWeightToken, FontWeightTokenNormalized, FontWeightValue, FontWeightValueNormalized, GradientStop, GradientStopNormalized, GradientToken, GradientTokenNormalized, GradientValue, GradientValueNormalized, Group, GroupCore, GroupNormalized, GroupOrToken, LinkToken, LinkTokenNormalized, LinkValue, ModeMap, NumberToken, NumberTokenNormalized, NumberValue, ShadowToken, ShadowTokenNormalized, ShadowValue, ShadowValueNormalized, StringToken, StringTokenNormalized, StringValue, StrokeStyleToken, StrokeStyleTokenNormalized, StrokeStyleValue, StrokeStyleValueExpanded, Token, TokenCore, TokenMode, TokenNormalized, TokenNormalizedCore, TokenNormalizedSet, TokensSet, TransitionToken, TransitionTokenNormalized, TransitionValue, TransitionValueNormalized, TypographyToken, TypographyTokenNormalized, TypographyValue, TypographyValueNormalized };
427
+ //# sourceMappingURL=types-CoqP_8W1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-CoqP_8W1.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terrazzo/token-tools",
3
- "version": "0.10.3",
3
+ "version": "2.0.0-alpha.0",
4
4
  "description": "Various utilities for token types",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -35,12 +35,12 @@
35
35
  "./package.json": "./package.json"
36
36
  },
37
37
  "dependencies": {
38
- "@humanwhocodes/momoa": "^3.3.8",
38
+ "@humanwhocodes/momoa": "^3.3.9",
39
39
  "culori": "^4.0.2",
40
40
  "wildcard-match": "^5.1.4"
41
41
  },
42
42
  "devDependencies": {
43
- "@types/culori": "^4.0.0"
43
+ "@types/culori": "^4.0.1"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "rolldown -c && attw --profile esm-only --pack .",
@@ -1 +0,0 @@
1
- {"version":3,"file":"string-BwN3ybNv.js","names":["CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lab65'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'okhsv'\n | 'hsl'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n>","color: string","components: [number, number, number]","value: ColorValueNormalized","COLORSPACE: Record<ColorSpace, ColorSpaceDefinition>","input: string","length: number","alignment: 'left' | 'center' | 'right'","count: number","singular: T","plural: T","str: string"],"sources":["../src/color.ts","../src/string.ts"],"sourcesContent":["import 'culori/css';\nimport { type Color, formatHex, parse } from 'culori/fn';\nimport type { ColorSpace, ColorValueNormalized } from './types.js';\n\nconst HEX_RE = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nexport const CULORI_TO_CSS: Record<\n Extract<\n Color['mode'],\n | 'a98'\n | 'lab'\n | 'lab65'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'okhsv'\n | 'hsl'\n | 'hwb'\n | 'lrgb'\n | 'p3'\n | 'prophoto'\n | 'rec2020'\n | 'rgb'\n | 'xyz50'\n | 'xyz65'\n >,\n ColorSpace\n> = {\n a98: 'a98-rgb',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n lab65: 'lab-d65',\n lch: 'lch',\n lrgb: 'srgb-linear',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n p3: 'display-p3',\n prophoto: 'prophoto-rgb',\n rec2020: 'rec2020',\n rgb: 'srgb',\n xyz50: 'xyz-d50',\n xyz65: 'xyz-d65',\n} as const;\n\nexport const CSS_TO_CULORI = {\n 'a98-rgb': 'a98',\n 'display-p3': 'p3',\n hsl: 'hsl',\n hwb: 'hwb',\n lab: 'lab',\n 'lab-d65': 'lab65',\n lch: 'lch',\n oklab: 'oklab',\n oklch: 'oklch',\n okhsv: 'okhsv',\n 'prophoto-rgb': 'prophoto',\n rec2020: 'rec2020',\n srgb: 'rgb',\n 'srgb-linear': 'lrgb',\n xyz: 'xyz65',\n 'xyz-d50': 'xyz50',\n 'xyz-d65': 'xyz65',\n} as const;\n\n/** Parse any color */\nexport function parseColor(color: string): ColorValueNormalized {\n const result = parse(color);\n if (!result) {\n throw new Error(`Unable to parse color \"${color}\"`);\n }\n if (!(result.mode in CULORI_TO_CSS)) {\n throw new Error(`Unsupported color space: ${result.mode}`);\n }\n const colorSpace = CULORI_TO_CSS[result.mode as keyof typeof CULORI_TO_CSS]!;\n let components: [number, number, number] = [0, 0, 0];\n switch (result.mode) {\n case 'a98':\n case 'rec2020':\n case 'p3':\n case 'prophoto':\n case 'lrgb':\n case 'rgb': {\n components = [result.r, result.g, result.b];\n break;\n }\n case 'hsl': {\n const maxS = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxL = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.s * maxS, result.l * maxL];\n break;\n }\n case 'hwb': {\n const maxW = COLORSPACE[colorSpace].ranges[1]?.[1] ?? 1.0;\n const maxB = COLORSPACE[colorSpace].ranges[2]?.[1] ?? 1.0;\n components = [result.h ?? 0, result.w * maxW, result.b * maxB];\n break;\n }\n case 'lab':\n case 'lab65':\n case 'oklab': {\n components = [result.l, result.a, result.b];\n break;\n }\n case 'lch':\n case 'oklch': {\n components = [result.l, result.c, result.h ?? 0];\n break;\n }\n case 'okhsv': {\n components = [result.h ?? 0, result.s, result.v];\n break;\n }\n case 'xyz50':\n case 'xyz65': {\n components = [result.x, result.y, result.z];\n break;\n }\n }\n const value: ColorValueNormalized = {\n colorSpace,\n components,\n alpha: result.alpha ?? 1,\n };\n if (HEX_RE.test(color)) {\n // Note: this intentionally does NOT include alpha; it’s already in alpha.\n // Always use formatHex (not formatHex8).\n value.hex = formatHex(result);\n }\n return value;\n}\n\n/** Convert a color token to a Culori color */\nexport function tokenToCulori(value: ColorValueNormalized): Color | undefined {\n switch (value.colorSpace) {\n case 'a98-rgb':\n case 'display-p3':\n case 'prophoto-rgb':\n case 'rec2020':\n case 'srgb':\n case 'srgb-linear': {\n const [r, g, b] = value.components;\n return {\n mode: CSS_TO_CULORI[value.colorSpace] || value.colorSpace,\n r,\n g,\n b,\n alpha: value.alpha,\n } as Color;\n }\n case 'hsl': {\n const [h, s, l] = value.components;\n const maxS = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxL = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hsl', h, s: s / maxS, l: l / maxL, alpha: value.alpha };\n }\n case 'hwb': {\n const [h, w, b] = value.components;\n const maxW = COLORSPACE[value.colorSpace].ranges[1]?.[1] ?? 1;\n const maxB = COLORSPACE[value.colorSpace].ranges[2]?.[1] ?? 1;\n return { mode: 'hwb', h, w: w / maxW, b: b / maxB, alpha: value.alpha };\n }\n case 'lab':\n case 'lab-d65':\n case 'oklab': {\n const [l, a, b] = value.components;\n const mode = value.colorSpace === 'lab-d65' ? 'lab65' : value.colorSpace;\n return { mode, l, a, b, alpha: value.alpha };\n }\n case 'lch':\n case 'oklch': {\n const [l, c, h] = value.components;\n return { mode: value.colorSpace, l, c, h, alpha: value.alpha };\n }\n case 'okhsv': {\n const [h, s, v] = value.components;\n return { mode: value.colorSpace, h, s, v, alpha: value.alpha };\n }\n case 'xyz':\n case 'xyz-d50':\n case 'xyz-d65': {\n const [x, y, z] = value.components;\n return { mode: CSS_TO_CULORI[value.colorSpace], x, y, z, alpha: value.alpha };\n }\n default: {\n throw new Error(\n `Invalid colorSpace \"${value.colorSpace}\". Expected one of ${Object.keys(CSS_TO_CULORI).join(', ')}`,\n );\n }\n }\n}\n\nexport interface ColorSpaceDefinition {\n ranges: [min: number, max: number][];\n}\n\n/** Complete list of CSS Module 4 Colorspaces */\nexport const COLORSPACE: Record<ColorSpace, ColorSpaceDefinition> = {\n 'a98-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'display-p3': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n hsl: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n hwb: {\n ranges: [\n [0.0, 360.0],\n [0.0, 100.0],\n [0.0, 100.0],\n ],\n },\n lab: {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n 'lab-d65': {\n ranges: [\n [0.0, 100.0],\n [-125.0, 125.0],\n [-125.0, 125.0],\n ],\n },\n lch: {\n ranges: [\n [0.0, 100.0],\n [0, 150.0],\n [0.0, 360.0],\n ],\n },\n oklab: {\n ranges: [\n [0.0, 1.0],\n [-0.4, 0.4],\n [-0.4, 0.4],\n ],\n },\n oklch: {\n ranges: [\n [0.0, 1.0],\n [0.0, 0.4],\n [0.0, 360.0],\n ],\n },\n okhsv: {\n ranges: [\n [0.0, 360.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'prophoto-rgb': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n rec2020: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n srgb: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'srgb-linear': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d50': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n xyz: {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n 'xyz-d65': {\n ranges: [\n [0.0, 1.0],\n [0.0, 1.0],\n [0.0, 1.0],\n ],\n },\n};\n","/** Pad string lengths */\nexport function padStr(input: string, length: number, alignment: 'left' | 'center' | 'right' = 'left'): string {\n const d =\n Math.min(length || 0, 1000) - // guard against NaNs and Infinity\n input.length;\n if (d > 0) {\n switch (alignment) {\n case 'left': {\n return `${input}${' '.repeat(d)}`;\n }\n case 'right': {\n return `${' '.repeat(d)}${input}`;\n }\n case 'center': {\n const left = Math.floor(d / 2);\n const right = d - left;\n return `${' '.repeat(left)}${input}${' '.repeat(right)}`;\n }\n }\n }\n return input;\n}\n\n/** Pluralize strings */\nexport function pluralize<T = string>(count: number, singular: T, plural: T): T {\n return count === 1 ? singular : plural;\n}\n\n/** Turn a string into kebab-case */\nexport function kebabCase(str: string): string {\n let output = '';\n for (const c of str.split('')) {\n if (c === '.') {\n output += '-';\n continue;\n }\n let isFirstUppercase = true;\n if (isFirstUppercase && /\\p{Uppercase_Letter}/u.test(c)) {\n output += `-${c.toLocaleLowerCase()}`;\n isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters\n continue;\n } else {\n isFirstUppercase = true; // reset\n }\n\n output += c;\n }\n return output;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-BOWDcBsq.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}