@breadstone-infrastructure/style-dictionary 0.0.205 → 0.0.206

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.
Files changed (73) hide show
  1. package/formats/index.d.ts +3 -0
  2. package/formats/index.d.ts.map +1 -0
  3. package/formats/index.js +19 -0
  4. package/formats/index.js.map +1 -0
  5. package/formats/tailwind/v3/DesignTokenType.d.ts +10 -0
  6. package/formats/tailwind/v3/DesignTokenType.d.ts.map +1 -0
  7. package/formats/tailwind/v3/DesignTokenType.js +3 -0
  8. package/formats/tailwind/v3/DesignTokenType.js.map +1 -0
  9. package/formats/tailwind/v3/TailwindPropertyMapping.d.ts +61 -0
  10. package/formats/tailwind/v3/TailwindPropertyMapping.d.ts.map +1 -0
  11. package/formats/tailwind/v3/TailwindPropertyMapping.js +421 -0
  12. package/formats/tailwind/v3/TailwindPropertyMapping.js.map +1 -0
  13. package/formats/tailwind/v3/TailwindV3PropertyMapping.d.ts +61 -0
  14. package/formats/tailwind/v3/TailwindV3PropertyMapping.d.ts.map +1 -0
  15. package/formats/tailwind/v3/TailwindV3PropertyMapping.js +421 -0
  16. package/formats/tailwind/v3/TailwindV3PropertyMapping.js.map +1 -0
  17. package/formats/tailwind/v3/buildTailwindConfig.d.ts +23 -0
  18. package/formats/tailwind/v3/buildTailwindConfig.d.ts.map +1 -0
  19. package/formats/tailwind/v3/buildTailwindConfig.js +281 -0
  20. package/formats/tailwind/v3/buildTailwindConfig.js.map +1 -0
  21. package/formats/tailwind/v3/buildTailwindV3Config.d.ts +24 -0
  22. package/formats/tailwind/v3/buildTailwindV3Config.d.ts.map +1 -0
  23. package/formats/tailwind/v3/buildTailwindV3Config.js +282 -0
  24. package/formats/tailwind/v3/buildTailwindV3Config.js.map +1 -0
  25. package/formats/tailwind/v3/index.d.ts +5 -0
  26. package/formats/tailwind/v3/index.d.ts.map +1 -0
  27. package/formats/tailwind/v3/index.js +21 -0
  28. package/formats/tailwind/v3/index.js.map +1 -0
  29. package/formats/tailwind/v3/tailwindFormat.d.ts +13 -0
  30. package/formats/tailwind/v3/tailwindFormat.d.ts.map +1 -0
  31. package/formats/tailwind/v3/tailwindFormat.js +57 -0
  32. package/formats/tailwind/v3/tailwindFormat.js.map +1 -0
  33. package/formats/tailwind/v3/tailwindFormat2.d.ts +13 -0
  34. package/formats/tailwind/v3/tailwindFormat2.d.ts.map +1 -0
  35. package/formats/tailwind/v3/tailwindFormat2.js +65 -0
  36. package/formats/tailwind/v3/tailwindFormat2.js.map +1 -0
  37. package/formats/tailwind/v3/tailwindV3Format.d.ts +32 -0
  38. package/formats/tailwind/v3/tailwindV3Format.d.ts.map +1 -0
  39. package/formats/tailwind/v3/tailwindV3Format.js +123 -0
  40. package/formats/tailwind/v3/tailwindV3Format.js.map +1 -0
  41. package/formats/tailwind/v4/DesignTokenType.d.ts +10 -0
  42. package/formats/tailwind/v4/DesignTokenType.d.ts.map +1 -0
  43. package/formats/tailwind/v4/DesignTokenType.js +3 -0
  44. package/formats/tailwind/v4/DesignTokenType.js.map +1 -0
  45. package/formats/tailwind/v4/TailwindV4PropertyMapping.d.ts +45 -0
  46. package/formats/tailwind/v4/TailwindV4PropertyMapping.d.ts.map +1 -0
  47. package/formats/tailwind/v4/TailwindV4PropertyMapping.js +322 -0
  48. package/formats/tailwind/v4/TailwindV4PropertyMapping.js.map +1 -0
  49. package/formats/tailwind/v4/buildTailwindV4Theme.d.ts +71 -0
  50. package/formats/tailwind/v4/buildTailwindV4Theme.d.ts.map +1 -0
  51. package/formats/tailwind/v4/buildTailwindV4Theme.js +247 -0
  52. package/formats/tailwind/v4/buildTailwindV4Theme.js.map +1 -0
  53. package/formats/tailwind/v4/index.d.ts +2 -0
  54. package/formats/tailwind/v4/index.d.ts.map +1 -0
  55. package/formats/tailwind/v4/index.js +18 -0
  56. package/formats/tailwind/v4/index.js.map +1 -0
  57. package/formats/tailwind/v4/tailwindV4Format.d.ts +55 -0
  58. package/formats/tailwind/v4/tailwindV4Format.d.ts.map +1 -0
  59. package/formats/tailwind/v4/tailwindV4Format.js +88 -0
  60. package/formats/tailwind/v4/tailwindV4Format.js.map +1 -0
  61. package/index.d.ts +3 -9
  62. package/index.d.ts.map +1 -1
  63. package/index.js +3 -17
  64. package/index.js.map +1 -1
  65. package/package.json +2 -2
  66. package/preprocessors/index.d.ts +3 -0
  67. package/preprocessors/index.d.ts.map +1 -0
  68. package/preprocessors/index.js +19 -0
  69. package/preprocessors/index.js.map +1 -0
  70. package/transforms/index.d.ts +7 -0
  71. package/transforms/index.d.ts.map +1 -0
  72. package/transforms/index.js +23 -0
  73. package/transforms/index.js.map +1 -0
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ /* eslint-disable max-depth */
3
+ // #region Imports
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildTailwindConfig = buildTailwindConfig;
6
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
7
+ const getType_js_1 = require("../../../utilities/getType.js");
8
+ const getValue_js_1 = require("../../../utilities/getValue.js");
9
+ const TailwindPropertyMapping_js_1 = require("./TailwindPropertyMapping.js");
10
+ // #endregion
11
+ /**
12
+ * Normalizes a raw token value into a JS value suitable for a Tailwind config.
13
+ *
14
+ * @param value Raw token value.
15
+ * @returns Normalized value (string, number, or array) that can be used in Tailwind config.
16
+ * @private
17
+ */
18
+ function normalizeValue(value) {
19
+ if (Array.isArray(value)) {
20
+ return value.map((v) => String(v));
21
+ }
22
+ if (typeof value === 'string' || typeof value === 'number') {
23
+ return value;
24
+ }
25
+ return String(value);
26
+ }
27
+ /**
28
+ * Deeply sets a value on an object via a path array. Similar to lodash.set.
29
+ *
30
+ * @param obj Target object.
31
+ * @param path Array of keys.
32
+ * @param value Value to set.
33
+ * @private
34
+ */
35
+ function deepSet(obj, path, value) {
36
+ let current = obj;
37
+ for (let i = 0; i < path.length; i++) {
38
+ const key = path[i];
39
+ if (i === path.length - 1) {
40
+ current[key] = value;
41
+ }
42
+ else {
43
+ if (!current[key] || typeof current[key] !== 'object') {
44
+ current[key] = {};
45
+ }
46
+ current = current[key];
47
+ }
48
+ }
49
+ }
50
+ /**
51
+ * Validates that tokens use supported logical types and logs warnings
52
+ * for those that cannot be mapped to Tailwind.
53
+ *
54
+ * This does not throw, it only logs — matching the original behavior.
55
+ *
56
+ * @param tokens All transformed tokens.
57
+ * @param ignoredNames Optional substrings; tokens whose name contains any of them are ignored.
58
+ * @private
59
+ */
60
+ function validateTokenTypes(tokens, ignoredNames = []) {
61
+ const supported = new Set(TailwindPropertyMapping_js_1.SUPPORTED_TOKEN_TYPES);
62
+ tokens
63
+ .filter((token) => {
64
+ const lower = token.name.toLowerCase();
65
+ return !ignoredNames.some((substr) => lower.includes(substr.toLowerCase()));
66
+ })
67
+ .forEach((token) => {
68
+ // If token has a valid category mapping, skip type validation
69
+ const rawCategory = token.category;
70
+ if (rawCategory) {
71
+ const categoryKey = rawCategory;
72
+ if (TailwindPropertyMapping_js_1.CATEGORY_TO_KEY_MAPPING[categoryKey]) {
73
+ return; // Category is valid, no need to check type
74
+ }
75
+ }
76
+ const type = (0, getType_js_1.getType)(token);
77
+ if (!type) {
78
+ return;
79
+ }
80
+ if (!supported.has(type)) {
81
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Type "${type}" is not supported in Tailwind builder for token "${token.path.join('.')}:${token.name}".`)}`);
82
+ }
83
+ });
84
+ }
85
+ /**
86
+ * Resolves the mapping for a token in three steps:
87
+ *
88
+ * 1. If a `category` is present and mapped, use that mapping.
89
+ * 2. Otherwise, fall back to token type via `getType` and `TOKEN_TYPE_TO_KEY_MAPPING`.
90
+ * 3. If neither yields a mapping, return undefined (caller will log and skip).
91
+ *
92
+ * @param token The token to resolve mapping for.
93
+ * @returns An IKeyMapping when resolvable, otherwise undefined.
94
+ * @private
95
+ */
96
+ function resolveMappingForToken(token) {
97
+ const rawCategory = token.category;
98
+ // 1. Category-based mapping (if present)
99
+ if (rawCategory) {
100
+ const categoryKey = rawCategory;
101
+ const byCategory = TailwindPropertyMapping_js_1.CATEGORY_TO_KEY_MAPPING[categoryKey];
102
+ if (byCategory) {
103
+ return byCategory;
104
+ }
105
+ // Category was provided but not recognized; we fall back to type-based logic.
106
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.name}" specifies category "${rawCategory}", which is not mapped. Falling back to token type.`)}`);
107
+ }
108
+ // 2. Type-based mapping
109
+ // Try multiple type properties: token.type (set by transforms), token.$type (original), token.original.type, token.original.$type
110
+ const type = (token.type ?? token.$type ?? token.original.type ?? token.original.$type);
111
+ if (type) {
112
+ const byType = TailwindPropertyMapping_js_1.TOKEN_TYPE_TO_KEY_MAPPING[type];
113
+ if (byType) {
114
+ return byType;
115
+ }
116
+ }
117
+ // 3. Nothing found: no mapping available
118
+ return undefined;
119
+ }
120
+ /**
121
+ * Builds a TailwindConfig object (with `theme.extend`) from a list of Style-Dictionary tokens.
122
+ *
123
+ * Resolution priority per token:
124
+ *
125
+ * 1. If `token.category` is present and matches a known Tailwind theme key
126
+ * (configured in CATEGORY_TO_KEY_MAPPING), that mapping is used.
127
+ * 2. Otherwise, the token's logical type (`getType(token)`) is used with
128
+ * TOKEN_TYPE_TO_KEY_MAPPING as a fallback routing.
129
+ * 3. If neither category nor type yields a mapping, the token is skipped
130
+ * and a warning is logged.
131
+ *
132
+ * Additionally, this function validates token types up-front and logs warnings
133
+ * for unsupported types (non-blocking).
134
+ *
135
+ * @param allTokens All transformed tokens from Style-Dictionary.
136
+ * @param ignoredTokenNameSubstrings Optional substrings; tokens whose name contains any of them are ignored entirely.
137
+ * @returns A TailwindConfig where `theme.extend` contains the mapped tokens.
138
+ */
139
+ function buildTailwindConfig(allTokens, ignoredTokenNameSubstrings = []) {
140
+ // Pre-validation of token types (non-blocking, only logs)
141
+ validateTokenTypes(allTokens, ignoredTokenNameSubstrings);
142
+ const config = { theme: { extend: {} } };
143
+ for (const token of allTokens) {
144
+ const lowerName = token.name.toLowerCase();
145
+ const tokenPath = token.path.join('.');
146
+ // Check if any ignored substring appears in the token name OR path
147
+ if (ignoredTokenNameSubstrings.some((substr) => lowerName.includes(substr.toLowerCase()) ||
148
+ tokenPath.toLowerCase().includes(substr.toLowerCase()))) {
149
+ continue;
150
+ }
151
+ // Skip expanded shadow parts (offsetX, offsetY, blur, spread, color sub-tokens)
152
+ // These are created by expandShadowPreprocessor and should be ignored for Tailwind
153
+ const shadowPartPattern = /\.(offsetX|offsetY|blur|spread|color)\.\d+$/i;
154
+ if (shadowPartPattern.test(tokenPath)) {
155
+ continue;
156
+ }
157
+ // Skip duration tokens (they're typically enums/metadata)
158
+ if (token.path[0] === 'duration' && !token.value) {
159
+ continue;
160
+ }
161
+ const mapping = resolveMappingForToken(token);
162
+ if (!mapping) {
163
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.path.join('.')}:${token.name}" cannot be mapped to Tailwind (no valid category or type mapping). Skipping.`)}`);
164
+ continue;
165
+ }
166
+ const { themeKey, strategy } = mapping;
167
+ if (!config.theme?.extend) {
168
+ if (!config.theme) {
169
+ config.theme = {};
170
+ config.theme.extend = {};
171
+ }
172
+ else {
173
+ config.theme.extend = {};
174
+ }
175
+ }
176
+ const extend = config.theme.extend;
177
+ // eslint-disable-next-line no-multi-assign
178
+ const section = extend[themeKey] ??= {};
179
+ const rawValue = (0, getValue_js_1.getValue)(token);
180
+ const normalized = normalizeValue(rawValue);
181
+ const rawPath = token.path.length > 0 ? token.path : [token.name];
182
+ // Apply pathTransform if defined
183
+ const transformedPath = mapping.pathTransform
184
+ ? mapping.pathTransform(rawPath)
185
+ : rawPath;
186
+ // Warn if pathTransform returned original path unchanged (meaning it couldn't transform)
187
+ // Compare content, not reference, for arrays
188
+ const pathsAreEqual = Array.isArray(transformedPath) && Array.isArray(rawPath)
189
+ ? transformedPath.length === rawPath.length && transformedPath.every((val, idx) => val === rawPath[idx])
190
+ : transformedPath === rawPath;
191
+ if (mapping.pathTransform && pathsAreEqual) {
192
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.path.join('.')}:${token.name}" could not be transformed by pathTransform. Using raw path.`)}`);
193
+ }
194
+ switch (strategy) {
195
+ case 'flat': {
196
+ // For flat strategy, use the transformed path as a single key
197
+ const key = typeof transformedPath === 'string'
198
+ ? transformedPath
199
+ : Array.isArray(transformedPath)
200
+ ? transformedPath.join('-')
201
+ : rawPath.join('-');
202
+ section[key] = normalized;
203
+ break;
204
+ }
205
+ case 'nested': {
206
+ // For nested strategy, split the transformed path if it's a string
207
+ const path = typeof transformedPath === 'string'
208
+ ? transformedPath.split('.')
209
+ : Array.isArray(transformedPath)
210
+ ? transformedPath
211
+ : rawPath;
212
+ deepSet(section, path, normalized);
213
+ break;
214
+ }
215
+ case 'shadeMap': {
216
+ // For shadeMap strategy, use the transformed path as array [group, shade]
217
+ // Example: ['primary', '500'] -> colors.primary['500']
218
+ // Example: ['primary-dark', '500'] -> colors['primary-dark']['500']
219
+ // Special case: if only DEFAULT exists, output direct value instead of { DEFAULT: value }
220
+ const path = Array.isArray(transformedPath)
221
+ ? transformedPath
222
+ : typeof transformedPath === 'string'
223
+ ? transformedPath.split('-')
224
+ : rawPath;
225
+ const [group, ...rest] = path;
226
+ const shadeKey = rest.join('-') || 'DEFAULT';
227
+ // If this is the first value for this group, we don't know yet if it will be a single value or object
228
+ // Store values temporarily and resolve at the end
229
+ section[group] ??= {};
230
+ section[group][shadeKey] = normalized;
231
+ break;
232
+ }
233
+ case 'shadow': {
234
+ // For shadow strategy, use the transformed path as a single key
235
+ const key = typeof transformedPath === 'string'
236
+ ? transformedPath
237
+ : Array.isArray(transformedPath)
238
+ ? transformedPath.join('-')
239
+ : rawPath.join('-');
240
+ section[key] = Array.isArray(normalized) ? normalized.map((v) => String(v)).join(', ') : String(normalized);
241
+ break;
242
+ }
243
+ default: {
244
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Unsupported mapping strategy "${String(strategy)}" for token "${token.name}".`)}`);
245
+ break;
246
+ }
247
+ }
248
+ }
249
+ // Post-process: normalize single-entry objects to use DEFAULT key
250
+ // If a category has only one key-value pair that is NOT already "DEFAULT", rename it to "DEFAULT"
251
+ // Example: { "borderRadius": { "layout-radius": "12px" } } -> { "borderRadius": { "DEFAULT": "12px" } }
252
+ if (config.theme?.extend) {
253
+ const extend = config.theme.extend;
254
+ for (const [categoryKey, categoryValue] of Object.entries(extend)) {
255
+ if (typeof categoryValue === 'object' && categoryValue !== null && !Array.isArray(categoryValue)) {
256
+ const obj = categoryValue;
257
+ const keys = Object.keys(obj);
258
+ // If only one entry exists and it's not already "DEFAULT", rename it to "DEFAULT"
259
+ if (keys.length === 1 && keys[0] !== 'DEFAULT') {
260
+ const value = obj[keys[0]];
261
+ extend[categoryKey] = { DEFAULT: value };
262
+ }
263
+ else if (categoryKey === 'colors') {
264
+ // For colors, recursively normalize nested single-entry objects to use DEFAULT
265
+ // Example: { "background": { "some-key": "..." } } -> { "background": { "DEFAULT": "..." } }
266
+ for (const [colorKey, colorValue] of Object.entries(obj)) {
267
+ if (typeof colorValue === 'object' && colorValue !== null && !Array.isArray(colorValue)) {
268
+ const colorObj = colorValue;
269
+ const colorKeys = Object.keys(colorObj);
270
+ if (colorKeys.length === 1 && colorKeys[0] !== 'DEFAULT') {
271
+ obj[colorKey] = { DEFAULT: colorObj[colorKeys[0]] };
272
+ }
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ return config;
280
+ }
281
+ //# sourceMappingURL=buildTailwindConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTailwindConfig.js","sourceRoot":"","sources":["../../../../src/formats/tailwind/v3/buildTailwindConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Config as TailwindConfig } from 'tailwindcss';
2
+ import type { TransformedToken } from 'style-dictionary/types';
3
+ /**
4
+ * Builds a TailwindConfig object (with `theme.extend`) from a list of Style-Dictionary tokens.
5
+ *
6
+ * Resolution priority per token:
7
+ *
8
+ * 1. If `token.category` is present and matches a known Tailwind theme key
9
+ * (configured in CATEGORY_TO_V3_KEY_MAPPING), that mapping is used.
10
+ * 2. Otherwise, the token's logical type (`getType(token)`) is used with
11
+ * TOKEN_TYPE_TO_V3_KEY_MAPPING as a fallback routing.
12
+ * 3. If neither category nor type yields a mapping, the token is skipped
13
+ * and a warning is logged.
14
+ *
15
+ * Additionally, this function validates token types up-front and logs warnings
16
+ * for unsupported types (non-blocking).
17
+ *
18
+ * @param allTokens All transformed tokens from Style-Dictionary.
19
+ * @param ignoredTokenNameSubstrings Optional substrings; tokens whose name contains any of them are ignored entirely.
20
+ * @returns A TailwindConfig where `theme.extend` contains the mapped tokens.
21
+ * @public
22
+ */
23
+ export declare function buildTailwindV3Config(allTokens: ReadonlyArray<TransformedToken>, ignoredTokenNameSubstrings?: Array<string>): TailwindConfig;
24
+ //# sourceMappingURL=buildTailwindV3Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTailwindV3Config.d.ts","sourceRoot":"","sources":["../../../../src/formats/tailwind/v3/buildTailwindV3Config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAoI/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC1C,0BAA0B,GAAE,KAAK,CAAC,MAAM,CAAM,GAC/C,cAAc,CA6JhB"}
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ /* eslint-disable max-depth */
3
+ // #region Imports
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.buildTailwindV3Config = buildTailwindV3Config;
6
+ const utilities_1 = require("@breadstone-infrastructure/utilities");
7
+ const getType_js_1 = require("../../../utilities/getType.js");
8
+ const getValue_js_1 = require("../../../utilities/getValue.js");
9
+ const TailwindV3PropertyMapping_js_1 = require("./TailwindV3PropertyMapping.js");
10
+ // #endregion
11
+ /**
12
+ * Normalizes a raw token value into a JS value suitable for a Tailwind config.
13
+ *
14
+ * @param value Raw token value.
15
+ * @returns Normalized value (string, number, or array) that can be used in Tailwind config.
16
+ * @private
17
+ */
18
+ function normalizeValue(value) {
19
+ if (Array.isArray(value)) {
20
+ return value.map((v) => String(v));
21
+ }
22
+ if (typeof value === 'string' || typeof value === 'number') {
23
+ return value;
24
+ }
25
+ return String(value);
26
+ }
27
+ /**
28
+ * Deeply sets a value on an object via a path array. Similar to lodash.set.
29
+ *
30
+ * @param obj Target object.
31
+ * @param path Array of keys.
32
+ * @param value Value to set.
33
+ * @private
34
+ */
35
+ function deepSet(obj, path, value) {
36
+ let current = obj;
37
+ for (let i = 0; i < path.length; i++) {
38
+ const key = path[i];
39
+ if (i === path.length - 1) {
40
+ current[key] = value;
41
+ }
42
+ else {
43
+ if (!current[key] || typeof current[key] !== 'object') {
44
+ current[key] = {};
45
+ }
46
+ current = current[key];
47
+ }
48
+ }
49
+ }
50
+ /**
51
+ * Validates that tokens use supported logical types and logs warnings
52
+ * for those that cannot be mapped to Tailwind.
53
+ *
54
+ * This does not throw, it only logs — matching the original behavior.
55
+ *
56
+ * @param tokens All transformed tokens.
57
+ * @param ignoredNames Optional substrings; tokens whose name contains any of them are ignored.
58
+ * @private
59
+ */
60
+ function validateTokenTypes(tokens, ignoredNames = []) {
61
+ const supported = new Set(TailwindV3PropertyMapping_js_1.SUPPORTED_TOKEN_TYPES);
62
+ tokens
63
+ .filter((token) => {
64
+ const lower = token.name.toLowerCase();
65
+ return !ignoredNames.some((substr) => lower.includes(substr.toLowerCase()));
66
+ })
67
+ .forEach((token) => {
68
+ // If token has a valid category mapping, skip type validation
69
+ const rawCategory = token.category;
70
+ if (rawCategory) {
71
+ const categoryKey = rawCategory;
72
+ if (TailwindV3PropertyMapping_js_1.CATEGORY_TO_V3_KEY_MAPPING[categoryKey]) {
73
+ return; // Category is valid, no need to check type
74
+ }
75
+ }
76
+ const type = (0, getType_js_1.getType)(token);
77
+ if (!type) {
78
+ return;
79
+ }
80
+ if (!supported.has(type)) {
81
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Type "${type}" is not supported in Tailwind v3 builder for token "${token.path.join('.')}:${token.name}".`)}`);
82
+ }
83
+ });
84
+ }
85
+ /**
86
+ * Resolves the mapping for a token in three steps:
87
+ *
88
+ * 1. If a `category` is present and mapped, use that mapping.
89
+ * 2. Otherwise, fall back to token type via `getType` and `TOKEN_TYPE_TO_V3_KEY_MAPPING`.
90
+ * 3. If neither yields a mapping, return undefined (caller will log and skip).
91
+ *
92
+ * @param token The token to resolve mapping for.
93
+ * @returns An IV3KeyMapping when resolvable, otherwise undefined.
94
+ * @private
95
+ */
96
+ function resolveMappingForToken(token) {
97
+ const rawCategory = token.category;
98
+ // 1. Category-based mapping (if present)
99
+ if (rawCategory) {
100
+ const categoryKey = rawCategory;
101
+ const byCategory = TailwindV3PropertyMapping_js_1.CATEGORY_TO_V3_KEY_MAPPING[categoryKey];
102
+ if (byCategory) {
103
+ return byCategory;
104
+ }
105
+ // Category was provided but not recognized; we fall back to type-based logic.
106
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.name}" specifies category "${rawCategory}", which is not mapped. Falling back to token type.`)}`);
107
+ }
108
+ // 2. Type-based mapping
109
+ // Try multiple type properties: token.type (set by transforms), token.$type (original), token.original.type, token.original.$type
110
+ const type = (token.type ?? token.$type ?? token.original.type ?? token.original.$type);
111
+ if (type) {
112
+ const byType = TailwindV3PropertyMapping_js_1.TOKEN_TYPE_TO_V3_KEY_MAPPING[type];
113
+ if (byType) {
114
+ return byType;
115
+ }
116
+ }
117
+ // 3. Nothing found: no mapping available
118
+ return undefined;
119
+ }
120
+ /**
121
+ * Builds a TailwindConfig object (with `theme.extend`) from a list of Style-Dictionary tokens.
122
+ *
123
+ * Resolution priority per token:
124
+ *
125
+ * 1. If `token.category` is present and matches a known Tailwind theme key
126
+ * (configured in CATEGORY_TO_V3_KEY_MAPPING), that mapping is used.
127
+ * 2. Otherwise, the token's logical type (`getType(token)`) is used with
128
+ * TOKEN_TYPE_TO_V3_KEY_MAPPING as a fallback routing.
129
+ * 3. If neither category nor type yields a mapping, the token is skipped
130
+ * and a warning is logged.
131
+ *
132
+ * Additionally, this function validates token types up-front and logs warnings
133
+ * for unsupported types (non-blocking).
134
+ *
135
+ * @param allTokens All transformed tokens from Style-Dictionary.
136
+ * @param ignoredTokenNameSubstrings Optional substrings; tokens whose name contains any of them are ignored entirely.
137
+ * @returns A TailwindConfig where `theme.extend` contains the mapped tokens.
138
+ * @public
139
+ */
140
+ function buildTailwindV3Config(allTokens, ignoredTokenNameSubstrings = []) {
141
+ // Pre-validation of token types (non-blocking, only logs)
142
+ validateTokenTypes(allTokens, ignoredTokenNameSubstrings);
143
+ const config = { theme: { extend: {} } };
144
+ for (const token of allTokens) {
145
+ const lowerName = token.name.toLowerCase();
146
+ const tokenPath = token.path.join('.');
147
+ // Check if any ignored substring appears in the token name OR path
148
+ if (ignoredTokenNameSubstrings.some((substr) => lowerName.includes(substr.toLowerCase()) ||
149
+ tokenPath.toLowerCase().includes(substr.toLowerCase()))) {
150
+ continue;
151
+ }
152
+ // Skip expanded shadow parts (offsetX, offsetY, blur, spread, color sub-tokens)
153
+ // These are created by expandShadowPreprocessor and should be ignored for Tailwind
154
+ const shadowPartPattern = /\.(offsetX|offsetY|blur|spread|color)\.\d+$/i;
155
+ if (shadowPartPattern.test(tokenPath)) {
156
+ continue;
157
+ }
158
+ // Skip duration tokens (they're typically enums/metadata)
159
+ if (token.path[0] === 'duration' && !token.value) {
160
+ continue;
161
+ }
162
+ const mapping = resolveMappingForToken(token);
163
+ if (!mapping) {
164
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.path.join('.')}:${token.name}" cannot be mapped to Tailwind v3 (no valid category or type mapping). Skipping.`)}`);
165
+ continue;
166
+ }
167
+ const { themeKey, strategy } = mapping;
168
+ if (!config.theme?.extend) {
169
+ if (!config.theme) {
170
+ config.theme = {};
171
+ config.theme.extend = {};
172
+ }
173
+ else {
174
+ config.theme.extend = {};
175
+ }
176
+ }
177
+ const extend = config.theme.extend;
178
+ // eslint-disable-next-line no-multi-assign
179
+ const section = extend[themeKey] ??= {};
180
+ const rawValue = (0, getValue_js_1.getValue)(token);
181
+ const normalized = normalizeValue(rawValue);
182
+ const rawPath = token.path.length > 0 ? token.path : [token.name];
183
+ // Apply pathTransform if defined
184
+ const transformedPath = mapping.pathTransform
185
+ ? mapping.pathTransform(rawPath)
186
+ : rawPath;
187
+ // Warn if pathTransform returned original path unchanged (meaning it couldn't transform)
188
+ // Compare content, not reference, for arrays
189
+ const pathsAreEqual = Array.isArray(transformedPath) && Array.isArray(rawPath)
190
+ ? transformedPath.length === rawPath.length && transformedPath.every((val, idx) => val === rawPath[idx])
191
+ : transformedPath === rawPath;
192
+ if (mapping.pathTransform && pathsAreEqual) {
193
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Token "${token.path.join('.')}:${token.name}" could not be transformed by pathTransform. Using raw path.`)}`);
194
+ }
195
+ switch (strategy) {
196
+ case 'flat': {
197
+ // For flat strategy, use the transformed path as a single key
198
+ const key = typeof transformedPath === 'string'
199
+ ? transformedPath
200
+ : Array.isArray(transformedPath)
201
+ ? transformedPath.join('-')
202
+ : rawPath.join('-');
203
+ section[key] = normalized;
204
+ break;
205
+ }
206
+ case 'nested': {
207
+ // For nested strategy, split the transformed path if it's a string
208
+ const path = typeof transformedPath === 'string'
209
+ ? transformedPath.split('.')
210
+ : Array.isArray(transformedPath)
211
+ ? transformedPath
212
+ : rawPath;
213
+ deepSet(section, path, normalized);
214
+ break;
215
+ }
216
+ case 'shadeMap': {
217
+ // For shadeMap strategy, use the transformed path as array [group, shade]
218
+ // Example: ['primary', '500'] -> colors.primary['500']
219
+ // Example: ['primary-dark', '500'] -> colors['primary-dark']['500']
220
+ // Special case: if only DEFAULT exists, output direct value instead of { DEFAULT: value }
221
+ const path = Array.isArray(transformedPath)
222
+ ? transformedPath
223
+ : typeof transformedPath === 'string'
224
+ ? transformedPath.split('-')
225
+ : rawPath;
226
+ const [group, ...rest] = path;
227
+ const shadeKey = rest.join('-') || 'DEFAULT';
228
+ // If this is the first value for this group, we don't know yet if it will be a single value or object
229
+ // Store values temporarily and resolve at the end
230
+ section[group] ??= {};
231
+ section[group][shadeKey] = normalized;
232
+ break;
233
+ }
234
+ case 'shadow': {
235
+ // For shadow strategy, use the transformed path as a single key
236
+ const key = typeof transformedPath === 'string'
237
+ ? transformedPath
238
+ : Array.isArray(transformedPath)
239
+ ? transformedPath.join('-')
240
+ : rawPath.join('-');
241
+ section[key] = Array.isArray(normalized) ? normalized.map((v) => String(v)).join(', ') : String(normalized);
242
+ break;
243
+ }
244
+ default: {
245
+ console.warn(`${(0, utilities_1.symbol)('warning')} ${(0, utilities_1.yellow)(`Unsupported mapping strategy "${String(strategy)}" for token "${token.name}".`)}`);
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ // Post-process: normalize single-entry objects to use DEFAULT key
251
+ // If a category has only one key-value pair that is NOT already "DEFAULT", rename it to "DEFAULT"
252
+ // Example: { "borderRadius": { "layout-radius": "12px" } } -> { "borderRadius": { "DEFAULT": "12px" } }
253
+ if (config.theme?.extend) {
254
+ const extend = config.theme.extend;
255
+ for (const [categoryKey, categoryValue] of Object.entries(extend)) {
256
+ if (typeof categoryValue === 'object' && categoryValue !== null && !Array.isArray(categoryValue)) {
257
+ const obj = categoryValue;
258
+ const keys = Object.keys(obj);
259
+ // If only one entry exists and it's not already "DEFAULT", rename it to "DEFAULT"
260
+ if (keys.length === 1 && keys[0] !== 'DEFAULT') {
261
+ const value = obj[keys[0]];
262
+ extend[categoryKey] = { DEFAULT: value };
263
+ }
264
+ else if (categoryKey === 'colors') {
265
+ // For colors, recursively normalize nested single-entry objects to use DEFAULT
266
+ // Example: { "background": { "some-key": "..." } } -> { "background": { "DEFAULT": "..." } }
267
+ for (const [colorKey, colorValue] of Object.entries(obj)) {
268
+ if (typeof colorValue === 'object' && colorValue !== null && !Array.isArray(colorValue)) {
269
+ const colorObj = colorValue;
270
+ const colorKeys = Object.keys(colorObj);
271
+ if (colorKeys.length === 1 && colorKeys[0] !== 'DEFAULT') {
272
+ obj[colorKey] = { DEFAULT: colorObj[colorKeys[0]] };
273
+ }
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ return config;
281
+ }
282
+ //# sourceMappingURL=buildTailwindV3Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTailwindV3Config.js","sourceRoot":"","sources":["../../../../src/formats/tailwind/v3/buildTailwindV3Config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './tailwindV3Format.js';
2
+ export * from './buildTailwindV3Config.js';
3
+ export * from './DesignTokenType.js';
4
+ export * from './TailwindV3PropertyMapping.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/formats/tailwind/v3/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./tailwindV3Format.js"), exports);
18
+ __exportStar(require("./buildTailwindV3Config.js"), exports);
19
+ __exportStar(require("./DesignTokenType.js"), exports);
20
+ __exportStar(require("./TailwindV3PropertyMapping.js"), exports);
21
+ //# sourceMappingURL=index.js.map