@terrazzo/token-tools 0.0.0 → 0.0.2

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.
@@ -4,6 +4,13 @@ export type ColorValue = string | {
4
4
  colorSpace: string;
5
5
  channels: [number, number, number];
6
6
  alpha: number;
7
+ hex?: string;
8
+ };
9
+ export type WideGamutColorValue = {
10
+ '.': string;
11
+ srgb: string;
12
+ p3: string;
13
+ rec2020: string;
7
14
  };
8
15
  export declare const defaultAliasTransform: (id: string) => string;
9
16
  /** Convert boolean value to CSS string */
@@ -16,24 +23,27 @@ export interface BorderValue {
16
23
  color: string | ColorValue;
17
24
  style: string | StrokeStyleValue;
18
25
  }
26
+ /** Generate shorthand CSS for select token types */
27
+ export declare function generateShorthand({ $type, localID }: {
28
+ $type: string;
29
+ localID: string;
30
+ }): string | undefined;
19
31
  /** Convert border value to multiple CSS values */
20
- export declare function transformBorderValue(value: BorderValue, { aliasOf, partialAliasOf, transformAlias, }?: {
32
+ export declare function transformBorderValue(value: BorderValue, { aliasOf, partialAliasOf, transformAlias, }: {
21
33
  aliasOf?: string;
22
34
  partialAliasOf?: Partial<Record<keyof typeof value, string>>;
23
- transformAlias?: IDGenerator;
24
- }): {
25
- width: ReturnType<typeof transformDimensionValue>;
26
- color: ReturnType<typeof transformColorValue>;
27
- style: ReturnType<typeof transformStrokeStyleValue>;
35
+ transformAlias: IDGenerator;
36
+ }): string | {
37
+ '.': string;
38
+ srgb: string;
39
+ p3: string;
40
+ rec2020: string;
28
41
  };
29
42
  /** Convert color value to CSS string */
30
- export declare function transformColorValue(value: string | ColorValue,
31
- /** (optional) Clamp gamut to `srgb` or `p3` gamut (default: don’t clamp) */
32
- { aliasOf, gamut, transformAlias, }?: {
43
+ export declare function transformColorValue(value: string | ColorValue, { aliasOf, transformAlias }?: {
33
44
  aliasOf?: string;
34
- gamut?: 'srgb' | 'p3';
35
45
  transformAlias?: IDGenerator;
36
- }): string;
46
+ }): string | WideGamutColorValue;
37
47
  export type CubicBézierValue = [string | number, string | number, string | number, string | number];
38
48
  /** Convert cubicBezier value to CSS */
39
49
  export declare function transformCubicBezierValue(value: CubicBézierValue, { aliasOf, partialAliasOf, transformAlias, }?: {
@@ -45,7 +55,7 @@ export declare function transformCubicBezierValue(value: CubicBézierValue, { al
45
55
  export declare function transformCompositeAlias<T extends {}>(value: T, { aliasOf, transformAlias }: {
46
56
  aliasOf: string;
47
57
  transformAlias?: IDGenerator;
48
- }): Record<keyof T, string>;
58
+ }): Record<string, string>;
49
59
  export type DimensionValue = string;
50
60
  /** Convert dimension value to CSS */
51
61
  export declare function transformDimensionValue(value: number | string, { aliasOf, transformAlias }?: {
@@ -78,7 +88,7 @@ export declare function transformGradientValue(value: GradientStop[], { aliasOf,
78
88
  aliasOf?: string;
79
89
  partialAliasOf?: Partial<Record<keyof GradientStop, string>>[];
80
90
  transformAlias?: IDGenerator;
81
- }): string;
91
+ }): string | WideGamutColorValue;
82
92
  export interface ShadowLayer {
83
93
  color: ColorValue;
84
94
  offsetX: string;
@@ -97,16 +107,17 @@ export declare function transformNumberValue(value: number, { aliasOf, transform
97
107
  transformAlias?: IDGenerator;
98
108
  }): string;
99
109
  /** Convert shadow subvalue to CSS */
100
- export declare function transformShadowLayer(value: ShadowLayer, { partialAliasOf, transformAlias, }?: {
110
+ export declare function transformShadowLayer(value: ShadowLayer, { color, partialAliasOf, transformAlias, }: {
111
+ color: string;
101
112
  partialAliasOf?: Partial<Record<keyof ShadowLayer, string>>;
102
113
  transformAlias?: IDGenerator;
103
- }): string;
114
+ }): string | Record<string, string>;
104
115
  /** Convert shadow value to CSS */
105
116
  export declare function transformShadowValue(value: ShadowLayer[], { aliasOf, partialAliasOf, transformAlias, }?: {
106
117
  aliasOf?: string;
107
118
  partialAliasOf?: Partial<Record<keyof ShadowLayer, string>>[];
108
119
  transformAlias?: IDGenerator;
109
- }): string;
120
+ }): string | Record<string, string>;
110
121
  /** Convert string value to CSS */
111
122
  export declare function transformStringValue(value: string | number | boolean, { aliasOf, transformAlias }?: {
112
123
  aliasOf?: string;
@@ -134,7 +145,7 @@ export declare function transformTransitionValue(value: TransitionValue, { alias
134
145
  }): {
135
146
  duration: ReturnType<typeof transformDurationValue>;
136
147
  delay: ReturnType<typeof transformDurationValue>;
137
- timingFunction: ReturnType<typeof transformCubicBezierValue>;
148
+ 'timing-function': ReturnType<typeof transformCubicBezierValue>;
138
149
  };
139
150
  /** Convert typography value to multiple CSS values */
140
151
  export declare function transformTypographyValue(value: Record<string, string | string[]>, { aliasOf, partialAliasOf, transformAlias, }?: {
package/dist/css/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { formatCss, clampChroma } from 'culori';
1
+ import { clampChroma, formatCss, displayable } from 'culori';
2
2
  import { kebabCase } from 'scule';
3
3
  import { CSS_TO_CULORI, parseColor } from '../color.js';
4
4
  export const defaultAliasTransform = (id) => `var(${makeCSSVar(id)})`;
@@ -12,32 +12,49 @@ export function transformBooleanValue(value, { aliasOf, transformAlias = default
12
12
  }
13
13
  return value ? '1' : '0';
14
14
  }
15
+ /** Generate shorthand CSS for select token types */
16
+ export function generateShorthand({ $type, localID }) {
17
+ switch ($type) {
18
+ case 'transition': {
19
+ return ['duration', 'delay', 'timing-function']
20
+ .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))
21
+ .join(' ');
22
+ }
23
+ // note: "typography" is not set in shorthand because it can often unset values unintentionally.
24
+ // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font
25
+ }
26
+ }
15
27
  /** Convert border value to multiple CSS values */
16
- export function transformBorderValue(value, { aliasOf, partialAliasOf, transformAlias = defaultAliasTransform, } = {}) {
28
+ export function transformBorderValue(value, { aliasOf, partialAliasOf, transformAlias = defaultAliasTransform, }) {
17
29
  if (aliasOf) {
18
- return transformCompositeAlias(value, { aliasOf, transformAlias });
30
+ return transformAlias(aliasOf);
19
31
  }
20
- return {
21
- width: partialAliasOf?.width
22
- ? transformAlias(partialAliasOf.width)
23
- : transformDimensionValue(value.width, { transformAlias }),
24
- color: partialAliasOf?.color
25
- ? transformAlias(partialAliasOf.color)
26
- : transformColorValue(value.color, { transformAlias }),
27
- style: partialAliasOf?.style
28
- ? transformAlias(partialAliasOf.style)
29
- : transformStrokeStyleValue(value.style, { transformAlias }),
30
- };
32
+ const width = partialAliasOf?.width
33
+ ? transformAlias(partialAliasOf.width)
34
+ : transformDimensionValue(value.width, { transformAlias });
35
+ const color = partialAliasOf?.color
36
+ ? transformAlias(partialAliasOf.color)
37
+ : transformColorValue(value.color, { transformAlias });
38
+ const style = partialAliasOf?.style
39
+ ? transformAlias(partialAliasOf.style)
40
+ : transformStrokeStyleValue(value.style, { transformAlias });
41
+ const formatBorder = (colorKey) => [width, style, typeof color === 'string' ? color : color[colorKey]].join(' ');
42
+ return typeof color === 'string' || displayable(color.p3)
43
+ ? formatBorder('.')
44
+ : {
45
+ '.': formatBorder('.'),
46
+ srgb: formatBorder('srgb'),
47
+ p3: formatBorder('p3'),
48
+ rec2020: formatBorder('rec2020'),
49
+ };
31
50
  }
32
51
  /** Convert color value to CSS string */
33
- export function transformColorValue(value,
34
- /** (optional) Clamp gamut to `srgb` or `p3` gamut (default: don’t clamp) */
35
- { aliasOf, gamut, transformAlias = defaultAliasTransform, } = {}) {
52
+ export function transformColorValue(value, { aliasOf, transformAlias = defaultAliasTransform } = {}) {
36
53
  if (aliasOf) {
37
54
  return transformAlias(aliasOf);
38
55
  }
39
56
  const { colorSpace, channels, alpha } = typeof value === 'string' ? parseColor(value) : value;
40
- let color = { mode: CSS_TO_CULORI[colorSpace], alpha };
57
+ const color = { mode: CSS_TO_CULORI[colorSpace], alpha };
41
58
  switch (color.mode) {
42
59
  case 'a98':
43
60
  case 'rec2020':
@@ -90,13 +107,14 @@ export function transformColorValue(value,
90
107
  break;
91
108
  }
92
109
  }
93
- if (gamut === 'srgb') {
94
- color = clampChroma(color, color.mode, 'rgb');
95
- }
96
- else if (gamut === 'p3') {
97
- color = clampChroma(color, color.mode, 'p3');
98
- }
99
- return formatCss(color);
110
+ return displayable(color)
111
+ ? formatCss(color)
112
+ : {
113
+ '.': formatCss(color),
114
+ srgb: (typeof value === 'object' && value.hex) || formatCss(clampChroma(color, color.mode, 'rgb')),
115
+ p3: formatCss(clampChroma(color, color.mode, 'p3')),
116
+ rec2020: formatCss(clampChroma(color, color.mode, 'rec2020')),
117
+ };
100
118
  }
101
119
  /** Convert cubicBezier value to CSS */
102
120
  export function transformCubicBezierValue(value, { aliasOf, partialAliasOf, transformAlias = defaultAliasTransform, } = {}) {
@@ -167,12 +185,21 @@ export function transformGradientValue(value, { aliasOf, partialAliasOf, transfo
167
185
  if (aliasOf) {
168
186
  return transformAlias(aliasOf);
169
187
  }
170
- return value
171
- .map(({ color, position }, i) => [
172
- partialAliasOf?.[i]?.color ? transformAlias(partialAliasOf[i].color) : transformColorValue(color),
173
- partialAliasOf?.[i]?.position ? transformAlias(String(partialAliasOf[i].position)) : `${100 * position}%`,
174
- ].join(' '))
175
- .join(', ');
188
+ const colors = value.map(({ color }, i) => partialAliasOf?.[i]?.color ? transformAlias(partialAliasOf[i].color) : transformColorValue(color));
189
+ const positions = value.map(({ position }, i) => partialAliasOf?.[i]?.position ? transformAlias(String(partialAliasOf[i].position)) : `${100 * position}%`);
190
+ const isHDR = colors.some((c) => typeof c === 'object');
191
+ const formatStop = (index, colorKey = '.') => [
192
+ typeof colors[index] === 'string' ? colors[index] : colors[index][colorKey],
193
+ positions[index],
194
+ ].join(' ');
195
+ return !isHDR
196
+ ? value.map((_, i) => formatStop(i, positions[i])).join(', ')
197
+ : {
198
+ '.': value.map((_, i) => formatStop(i, '.')).join(', '),
199
+ srgb: value.map((_, i) => formatStop(i, 'srgb')).join(', '),
200
+ p3: value.map((_, i) => formatStop(i, 'p3')).join(', '),
201
+ rec2020: value.map((_, i) => formatStop(i, 'rec2020')).join(', '),
202
+ };
176
203
  }
177
204
  /** Convert link value to CSS */
178
205
  export function transformLinkValue(value, { aliasOf, transformAlias = defaultAliasTransform } = {}) {
@@ -186,31 +213,42 @@ export function transformNumberValue(value, { aliasOf, transformAlias = defaultA
186
213
  return aliasOf ? transformAlias(aliasOf) : String(value);
187
214
  }
188
215
  /** Convert shadow subvalue to CSS */
189
- export function transformShadowLayer(value, { partialAliasOf, transformAlias = defaultAliasTransform, } = {}) {
190
- return [
191
- partialAliasOf?.offsetX
192
- ? transformAlias(partialAliasOf.offsetX)
193
- : transformDimensionValue(value.offsetX, { transformAlias }),
194
- partialAliasOf?.offsetY
195
- ? transformAlias(partialAliasOf.offsetY)
196
- : transformDimensionValue(value.offsetY, { transformAlias }),
197
- partialAliasOf?.blur
198
- ? transformAlias(partialAliasOf.blur)
199
- : transformDimensionValue(value.blur, { transformAlias }),
200
- partialAliasOf?.spread
201
- ? transformAlias(partialAliasOf.spread)
202
- : transformDimensionValue(value.spread, { transformAlias }),
203
- partialAliasOf?.color ? transformAlias(partialAliasOf.color) : transformColorValue(value.color, { transformAlias }),
204
- ].join(' ');
216
+ export function transformShadowLayer(value, { color, partialAliasOf, transformAlias = defaultAliasTransform, }) {
217
+ const offsetX = partialAliasOf?.offsetX
218
+ ? transformAlias(partialAliasOf.offsetX)
219
+ : transformDimensionValue(value.offsetX, { transformAlias });
220
+ const offsetY = partialAliasOf?.offsetY
221
+ ? transformAlias(partialAliasOf.offsetY)
222
+ : transformDimensionValue(value.offsetY, { transformAlias });
223
+ const blur = partialAliasOf?.blur
224
+ ? transformAlias(partialAliasOf.blur)
225
+ : transformDimensionValue(value.blur, { transformAlias });
226
+ const spread = partialAliasOf?.spread
227
+ ? transformAlias(partialAliasOf.spread)
228
+ : transformDimensionValue(value.spread, { transformAlias });
229
+ return [offsetX, offsetY, blur, spread, color].join(' ');
205
230
  }
206
231
  /** Convert shadow value to CSS */
207
232
  export function transformShadowValue(value, { aliasOf, partialAliasOf, transformAlias = defaultAliasTransform, } = {}) {
208
233
  if (aliasOf) {
209
234
  return transformAlias(aliasOf);
210
235
  }
211
- return value
212
- .map((v, i) => transformShadowLayer(v, { partialAliasOf: partialAliasOf?.[i], transformAlias }))
236
+ const colors = value.map(({ color }, i) => partialAliasOf?.[i]?.color
237
+ ? transformAlias(partialAliasOf[i].color)
238
+ : transformColorValue(color, { transformAlias }));
239
+ const isHDR = colors.some((c) => typeof c === 'object');
240
+ const formatShadow = (colorKey) => value
241
+ .map((v, i) => transformShadowLayer(v, {
242
+ color: typeof colors[i] === 'string'
243
+ ? colors[i]
244
+ : colors[i][colorKey],
245
+ partialAliasOf: partialAliasOf?.[i],
246
+ transformAlias,
247
+ }))
213
248
  .join(', ');
249
+ return !isHDR
250
+ ? formatShadow('.')
251
+ : { '.': formatShadow('.'), srgb: formatShadow('srgb'), p3: formatShadow('p3'), rec2020: formatShadow('rec2020') };
214
252
  }
215
253
  /** Convert string value to CSS */
216
254
  export function transformStringValue(value, { aliasOf, transformAlias = defaultAliasTransform } = {}) {
@@ -237,7 +275,7 @@ export function transformTransitionValue(value, { aliasOf, partialAliasOf, trans
237
275
  delay: partialAliasOf?.delay
238
276
  ? transformAlias(partialAliasOf.delay)
239
277
  : transformDurationValue(value.delay, { transformAlias }),
240
- timingFunction: partialAliasOf?.timingFunction
278
+ 'timing-function': partialAliasOf?.timingFunction
241
279
  ? transformAlias(partialAliasOf.timingFunction)
242
280
  : transformCubicBezierValue(value.timingFunction, { transformAlias }),
243
281
  };
@@ -280,7 +318,10 @@ const CSS_VAR_RE = /(?:(\p{Uppercase_Letter}?\p{Lowercase_Letter}+|\p{Uppercase_
280
318
  * Code by @dfrankland
281
319
  */
282
320
  export function makeCSSVar(name, { prefix, wrapVar = false } = {}) {
283
- const property = [...(prefix ? [prefix] : []), ...name.split(CSS_VAR_RE).filter(Boolean)].join('-');
321
+ let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');
322
+ if (prefix && !property.startsWith(`${prefix}-`)) {
323
+ property = `${prefix}-${property}`;
324
+ }
284
325
  const finalProperty = `--${property}`.toLocaleLowerCase();
285
326
  return wrapVar ? `var(${finalProperty})` : finalProperty;
286
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/css/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@terrazzo/token-tools",
3
3
  "description": "Various utilities for token types",
4
- "version": "0.0.0",
4
+ "version": "0.0.2",
5
5
  "author": {
6
6
  "name": "Drew Powers",
7
7
  "email": "drew@pow.rs"
@@ -31,11 +31,13 @@
31
31
  "./*": "./*"
32
32
  },
33
33
  "dependencies": {
34
- "@types/culori": "^2.1.0",
35
34
  "culori": "^4.0.1",
36
35
  "scule": "^1.3.0",
37
36
  "wildcard-match": "^5.1.3"
38
37
  },
38
+ "devDependencies": {
39
+ "@types/culori": "^2.1.0"
40
+ },
39
41
  "scripts": {
40
42
  "build": "pnpm run build:clean && pnpm run build:ts && pnpm run build:license",
41
43
  "build:clean": "del dist",
package/src/css/index.ts CHANGED
@@ -1,11 +1,17 @@
1
- import { type Color, formatCss, clampChroma } from 'culori';
1
+ import { clampChroma, type Color, formatCss, displayable } from 'culori';
2
2
  import { kebabCase } from 'scule';
3
3
  import { CSS_TO_CULORI, parseColor } from '../color.js';
4
4
 
5
5
  /** Function that generates a var(…) statement */
6
6
  export type IDGenerator = (id: string) => string;
7
7
 
8
- export type ColorValue = string | { colorSpace: string; channels: [number, number, number]; alpha: number };
8
+ // note: this is the lowest-level package, so this type has to be redeclared
9
+ // here rather than create a circular dep with @terrazzo/parser
10
+ export type ColorValue =
11
+ | string
12
+ | { colorSpace: string; channels: [number, number, number]; alpha: number; hex?: string };
13
+
14
+ export type WideGamutColorValue = { '.': string; srgb: string; p3: string; rec2020: string };
9
15
 
10
16
  export const defaultAliasTransform = (id: string) => `var(${makeCSSVar(id)})`;
11
17
 
@@ -29,10 +35,22 @@ export interface BorderValue {
29
35
  style: string | StrokeStyleValue;
30
36
  }
31
37
 
38
+ /** Generate shorthand CSS for select token types */
39
+ export function generateShorthand({ $type, localID }: { $type: string; localID: string }): string | undefined {
40
+ switch ($type) {
41
+ case 'transition': {
42
+ return ['duration', 'delay', 'timing-function']
43
+ .map((p) => makeCSSVar(`${localID}-${p}`, { wrapVar: true }))
44
+ .join(' ');
45
+ }
46
+ // note: "typography" is not set in shorthand because it can often unset values unintentionally.
47
+ // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font
48
+ }
49
+ }
50
+
32
51
  /** Convert border value to multiple CSS values */
33
52
  export function transformBorderValue(
34
53
  value: BorderValue,
35
-
36
54
  {
37
55
  aliasOf,
38
56
  partialAliasOf,
@@ -40,49 +58,47 @@ export function transformBorderValue(
40
58
  }: {
41
59
  aliasOf?: string;
42
60
  partialAliasOf?: Partial<Record<keyof typeof value, string>>;
43
- transformAlias?: IDGenerator;
44
- } = {},
45
- ): {
46
- width: ReturnType<typeof transformDimensionValue>;
47
- color: ReturnType<typeof transformColorValue>;
48
- style: ReturnType<typeof transformStrokeStyleValue>;
49
- } {
61
+ transformAlias: IDGenerator;
62
+ },
63
+ ) {
50
64
  if (aliasOf) {
51
- return transformCompositeAlias(value, { aliasOf, transformAlias });
65
+ return transformAlias(aliasOf);
52
66
  }
53
- return {
54
- width: partialAliasOf?.width
55
- ? transformAlias(partialAliasOf.width)
56
- : transformDimensionValue(value.width, { transformAlias }),
57
- color: partialAliasOf?.color
58
- ? transformAlias(partialAliasOf.color)
59
- : transformColorValue(value.color, { transformAlias }),
60
- style: partialAliasOf?.style
61
- ? transformAlias(partialAliasOf.style)
62
- : transformStrokeStyleValue(value.style, { transformAlias }),
63
- };
67
+
68
+ const width = partialAliasOf?.width
69
+ ? transformAlias(partialAliasOf.width)
70
+ : transformDimensionValue(value.width, { transformAlias });
71
+ const color = partialAliasOf?.color
72
+ ? transformAlias(partialAliasOf.color)
73
+ : transformColorValue(value.color, { transformAlias });
74
+ const style = partialAliasOf?.style
75
+ ? transformAlias(partialAliasOf.style)
76
+ : transformStrokeStyleValue(value.style, { transformAlias });
77
+
78
+ const formatBorder = (colorKey: string) =>
79
+ [width, style, typeof color === 'string' ? color : color[colorKey as keyof typeof color]].join(' ');
80
+
81
+ return typeof color === 'string' || displayable(color.p3)
82
+ ? formatBorder('.')
83
+ : {
84
+ '.': formatBorder('.'),
85
+ srgb: formatBorder('srgb'),
86
+ p3: formatBorder('p3'),
87
+ rec2020: formatBorder('rec2020'),
88
+ };
64
89
  }
65
90
 
66
91
  /** Convert color value to CSS string */
67
92
  export function transformColorValue(
68
93
  value: string | ColorValue,
69
- /** (optional) Clamp gamut to `srgb` or `p3` gamut (default: don’t clamp) */
70
- {
71
- aliasOf,
72
- gamut,
73
- transformAlias = defaultAliasTransform,
74
- }: {
75
- aliasOf?: string;
76
- gamut?: 'srgb' | 'p3';
77
- transformAlias?: IDGenerator;
78
- } = {},
79
- ): string {
94
+ { aliasOf, transformAlias = defaultAliasTransform }: { aliasOf?: string; transformAlias?: IDGenerator } = {},
95
+ ): string | WideGamutColorValue {
80
96
  if (aliasOf) {
81
97
  return transformAlias(aliasOf);
82
98
  }
83
99
 
84
100
  const { colorSpace, channels, alpha } = typeof value === 'string' ? parseColor(value) : value;
85
- let color = { mode: CSS_TO_CULORI[colorSpace], alpha } as Color;
101
+ const color = { mode: CSS_TO_CULORI[colorSpace], alpha } as Color;
86
102
  switch (color.mode) {
87
103
  case 'a98':
88
104
  case 'rec2020':
@@ -135,12 +151,15 @@ export function transformColorValue(
135
151
  break;
136
152
  }
137
153
  }
138
- if (gamut === 'srgb') {
139
- color = clampChroma(color, color.mode, 'rgb');
140
- } else if (gamut === 'p3') {
141
- color = clampChroma(color, color.mode, 'p3');
142
- }
143
- return formatCss(color);
154
+
155
+ return displayable(color)
156
+ ? formatCss(color)
157
+ : {
158
+ '.': formatCss(color),
159
+ srgb: (typeof value === 'object' && value.hex) || formatCss(clampChroma(color, color.mode, 'rgb')),
160
+ p3: formatCss(clampChroma(color, color.mode, 'p3')),
161
+ rec2020: formatCss(clampChroma(color, color.mode, 'rec2020')),
162
+ };
144
163
  }
145
164
 
146
165
  export type CubicBézierValue = [string | number, string | number, string | number, string | number];
@@ -170,7 +189,7 @@ export function transformCubicBezierValue(
170
189
  export function transformCompositeAlias<T extends {}>(
171
190
  value: T,
172
191
  { aliasOf, transformAlias = defaultAliasTransform }: { aliasOf: string; transformAlias?: IDGenerator },
173
- ): Record<keyof T, string> {
192
+ ): Record<string, string> {
174
193
  const output: Record<string, string> = {};
175
194
  for (const key in value) {
176
195
  output[kebabCase(key)] = transformAlias(`${aliasOf}-${key}`);
@@ -269,18 +288,31 @@ export function transformGradientValue(
269
288
  partialAliasOf?: Partial<Record<keyof GradientStop, string>>[];
270
289
  transformAlias?: IDGenerator;
271
290
  } = {},
272
- ): string {
291
+ ): string | WideGamutColorValue {
273
292
  if (aliasOf) {
274
293
  return transformAlias(aliasOf);
275
294
  }
276
- return value
277
- .map(({ color, position }, i) =>
278
- [
279
- partialAliasOf?.[i]?.color ? transformAlias(partialAliasOf[i]!.color as string) : transformColorValue(color),
280
- partialAliasOf?.[i]?.position ? transformAlias(String(partialAliasOf[i]!.position)) : `${100 * position}%`,
281
- ].join(' '),
282
- )
283
- .join(', ');
295
+ const colors = value.map(({ color }, i) =>
296
+ partialAliasOf?.[i]?.color ? transformAlias(partialAliasOf[i]!.color as string) : transformColorValue(color),
297
+ );
298
+ const positions = value.map(({ position }, i) =>
299
+ partialAliasOf?.[i]?.position ? transformAlias(String(partialAliasOf[i]!.position)) : `${100 * position}%`,
300
+ );
301
+ const isHDR = colors.some((c) => typeof c === 'object');
302
+ const formatStop = (index: number, colorKey = '.') =>
303
+ [
304
+ typeof colors[index] === 'string' ? colors[index] : colors[index]![colorKey as keyof (typeof colors)[number]],
305
+ positions[index]!,
306
+ ].join(' ');
307
+
308
+ return !isHDR
309
+ ? value.map((_, i) => formatStop(i, positions[i]!)).join(', ')
310
+ : {
311
+ '.': value.map((_, i) => formatStop(i, '.')).join(', '),
312
+ srgb: value.map((_, i) => formatStop(i, 'srgb')).join(', '),
313
+ p3: value.map((_, i) => formatStop(i, 'p3')).join(', '),
314
+ rec2020: value.map((_, i) => formatStop(i, 'rec2020')).join(', '),
315
+ };
284
316
  }
285
317
 
286
318
  export interface ShadowLayer {
@@ -314,25 +346,29 @@ export function transformNumberValue(
314
346
  export function transformShadowLayer(
315
347
  value: ShadowLayer,
316
348
  {
349
+ color,
317
350
  partialAliasOf,
318
351
  transformAlias = defaultAliasTransform,
319
- }: { partialAliasOf?: Partial<Record<keyof ShadowLayer, string>>; transformAlias?: IDGenerator } = {},
320
- ): string {
321
- return [
322
- partialAliasOf?.offsetX
323
- ? transformAlias(partialAliasOf.offsetX)
324
- : transformDimensionValue(value.offsetX, { transformAlias }),
325
- partialAliasOf?.offsetY
326
- ? transformAlias(partialAliasOf.offsetY)
327
- : transformDimensionValue(value.offsetY, { transformAlias }),
328
- partialAliasOf?.blur
329
- ? transformAlias(partialAliasOf.blur)
330
- : transformDimensionValue(value.blur, { transformAlias }),
331
- partialAliasOf?.spread
332
- ? transformAlias(partialAliasOf.spread)
333
- : transformDimensionValue(value.spread, { transformAlias }),
334
- partialAliasOf?.color ? transformAlias(partialAliasOf.color) : transformColorValue(value.color, { transformAlias }),
335
- ].join(' ');
352
+ }: {
353
+ color: string;
354
+ partialAliasOf?: Partial<Record<keyof ShadowLayer, string>>;
355
+ transformAlias?: IDGenerator;
356
+ },
357
+ ): string | Record<string, string> {
358
+ const offsetX = partialAliasOf?.offsetX
359
+ ? transformAlias(partialAliasOf.offsetX)
360
+ : transformDimensionValue(value.offsetX, { transformAlias });
361
+ const offsetY = partialAliasOf?.offsetY
362
+ ? transformAlias(partialAliasOf.offsetY)
363
+ : transformDimensionValue(value.offsetY, { transformAlias });
364
+ const blur = partialAliasOf?.blur
365
+ ? transformAlias(partialAliasOf.blur)
366
+ : transformDimensionValue(value.blur, { transformAlias });
367
+ const spread = partialAliasOf?.spread
368
+ ? transformAlias(partialAliasOf.spread)
369
+ : transformDimensionValue(value.spread, { transformAlias });
370
+
371
+ return [offsetX, offsetY, blur, spread, color].join(' ');
336
372
  }
337
373
 
338
374
  /** Convert shadow value to CSS */
@@ -347,13 +383,34 @@ export function transformShadowValue(
347
383
  partialAliasOf?: Partial<Record<keyof ShadowLayer, string>>[];
348
384
  transformAlias?: IDGenerator;
349
385
  } = {},
350
- ): string {
386
+ ): string | Record<string, string> {
351
387
  if (aliasOf) {
352
388
  return transformAlias(aliasOf);
353
389
  }
354
- return value
355
- .map((v, i) => transformShadowLayer(v, { partialAliasOf: partialAliasOf?.[i], transformAlias }))
356
- .join(', ');
390
+ const colors = value.map(({ color }, i) =>
391
+ partialAliasOf?.[i]?.color
392
+ ? transformAlias(partialAliasOf[i]!.color!)
393
+ : transformColorValue(color, { transformAlias }),
394
+ );
395
+ const isHDR = colors.some((c) => typeof c === 'object');
396
+
397
+ const formatShadow = (colorKey: string) =>
398
+ value
399
+ .map((v, i) =>
400
+ transformShadowLayer(v, {
401
+ color:
402
+ typeof colors[i] === 'string'
403
+ ? (colors[i] as string)
404
+ : colors[i]![colorKey as keyof (typeof colors)[number]]!,
405
+ partialAliasOf: partialAliasOf?.[i],
406
+ transformAlias,
407
+ }),
408
+ )
409
+ .join(', ');
410
+
411
+ return !isHDR
412
+ ? formatShadow('.')
413
+ : { '.': formatShadow('.'), srgb: formatShadow('srgb'), p3: formatShadow('p3'), rec2020: formatShadow('rec2020') };
357
414
  }
358
415
 
359
416
  /** Convert string value to CSS */
@@ -409,10 +466,14 @@ export function transformTransitionValue(
409
466
  ): {
410
467
  duration: ReturnType<typeof transformDurationValue>;
411
468
  delay: ReturnType<typeof transformDurationValue>;
412
- timingFunction: ReturnType<typeof transformCubicBezierValue>;
469
+ 'timing-function': ReturnType<typeof transformCubicBezierValue>;
413
470
  } {
414
471
  if (aliasOf) {
415
- return transformCompositeAlias(value, { aliasOf, transformAlias });
472
+ return transformCompositeAlias(value, { aliasOf, transformAlias }) as {
473
+ duration: ReturnType<typeof transformDurationValue>;
474
+ delay: ReturnType<typeof transformDurationValue>;
475
+ 'timing-function': ReturnType<typeof transformCubicBezierValue>;
476
+ };
416
477
  }
417
478
  return {
418
479
  duration: partialAliasOf?.duration
@@ -421,7 +482,7 @@ export function transformTransitionValue(
421
482
  delay: partialAliasOf?.delay
422
483
  ? transformAlias(partialAliasOf.delay)
423
484
  : transformDurationValue(value.delay, { transformAlias }),
424
- timingFunction: partialAliasOf?.timingFunction
485
+ 'timing-function': partialAliasOf?.timingFunction
425
486
  ? transformAlias(partialAliasOf.timingFunction)
426
487
  : transformCubicBezierValue(value.timingFunction, { transformAlias }),
427
488
  };
@@ -481,7 +542,10 @@ export interface MakeCSSVarOptions {
481
542
  * Code by @dfrankland
482
543
  */
483
544
  export function makeCSSVar(name: string, { prefix, wrapVar = false }: MakeCSSVarOptions = {}): string {
484
- const property = [...(prefix ? [prefix] : []), ...name.split(CSS_VAR_RE).filter(Boolean)].join('-');
545
+ let property = name.split(CSS_VAR_RE).filter(Boolean).join('-');
546
+ if (prefix && !property.startsWith(`${prefix}-`)) {
547
+ property = `${prefix}-${property}`;
548
+ }
485
549
  const finalProperty = `--${property}`.toLocaleLowerCase();
486
550
  return wrapVar ? `var(${finalProperty})` : finalProperty;
487
551
  }