@yahoo/uds 3.171.1 → 3.172.1
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/automated-config/dist/utils/getConfigVariantProperties.d.cts +2 -2
- package/dist/automated-config/dist/utils/getConfigVariantProperties.d.ts +2 -2
- package/dist/components/Link.cjs +3 -3
- package/dist/components/Link.js +3 -3
- package/dist/components/client/Popover/UDSPopoverConfigProvider.d.cts +1 -1
- package/dist/components/client/Popover/UDSPopoverConfigProvider.d.ts +1 -1
- package/dist/css/dist/purger/optimized/ast/expressions.cjs +278 -278
- package/dist/css/dist/purger/optimized/ast/expressions.js +278 -278
- package/dist/css/dist/purger/optimized/ast/jsx.cjs +67 -36
- package/dist/css/dist/purger/optimized/ast/jsx.js +67 -35
- package/dist/css/dist/purger/optimized/ast/oxc.cjs +265 -0
- package/dist/css/dist/purger/optimized/ast/oxc.js +253 -0
- package/dist/css/dist/purger/optimized/ast/props.cjs +21 -15
- package/dist/css/dist/purger/optimized/ast/props.js +21 -14
- package/dist/css/dist/purger/optimized/ast/spread.cjs +19 -19
- package/dist/css/dist/purger/optimized/ast/spread.js +19 -18
- package/dist/css/dist/purger/optimized/purgeFromCode.cjs +86 -101
- package/dist/css/dist/purger/optimized/purgeFromCode.js +86 -100
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.cts +2 -2
- package/dist/tailwind-internal/dist/utils/getShadowStyles.d.ts +2 -2
- package/dist/tailwind-v3/dist/purger/legacy/purgeCSS.cjs +1 -1
- package/dist/tailwind-v3/dist/purger/legacy/purgeCSS.js +1 -1
- package/dist/uds/generated/componentData.cjs +340 -340
- package/dist/uds/generated/componentData.js +340 -340
- package/dist/uds/package.cjs +2 -0
- package/dist/uds/package.js +2 -0
- package/generated/componentData.json +783 -783
- package/package.json +3 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS v0.0.0-development */
|
|
2
2
|
import { isPerfEnabled } from "../../css/perf.js";
|
|
3
|
+
import { getJsxAttributeName, getJsxTagName, getPropertyName, getStringLiteralValue, getText, isStringLiteral, parseSource } from "./ast/oxc.js";
|
|
3
4
|
import { extractStringLiterals } from "./ast/expressions.js";
|
|
4
5
|
import { getParentComponentInfo } from "./ast/jsx.js";
|
|
5
6
|
import { resolveSpreadFromUsages } from "./ast/spread.js";
|
|
6
|
-
import { Node, Project, SyntaxKind } from "ts-morph";
|
|
7
7
|
//#region ../css/dist/purger/optimized/purgeFromCode.mjs
|
|
8
8
|
/*! © 2026 Yahoo, Inc. UDS CSS v0.0.0-development */
|
|
9
9
|
/**
|
|
@@ -51,13 +51,6 @@ const resolveComponentInfo = (name) => {
|
|
|
51
51
|
const mappedName = componentNameLookup?.[normalized];
|
|
52
52
|
if (mappedName && componentCache) return componentCache[mappedName];
|
|
53
53
|
};
|
|
54
|
-
const getModuleSpecifierValue = (importDecl) => {
|
|
55
|
-
return importDecl.getModuleSpecifierValue() ?? importDecl.getModuleSpecifier().getText().replace(/^['"]|['"]$/g, "");
|
|
56
|
-
};
|
|
57
|
-
const isTypeOnlyNamedImport = (importDecl, importName) => {
|
|
58
|
-
if (importDecl.isTypeOnly()) return true;
|
|
59
|
-
return importDecl.getNamedImports().find((namedImport) => namedImport.getName() === importName)?.isTypeOnly() ?? false;
|
|
60
|
-
};
|
|
61
54
|
const isUdsComponentModule = (moduleSpecifier) => {
|
|
62
55
|
const cleaned = moduleSpecifier.replace(/^['"]|['"]$/g, "");
|
|
63
56
|
return cleaned === "@yahoo/uds" || cleaned.startsWith("@yahoo/uds/");
|
|
@@ -133,27 +126,27 @@ const resolveRuntimeSelectorValues = (selectorTemplate, componentInfo, userProps
|
|
|
133
126
|
return value === void 0 ? [] : [String(value)];
|
|
134
127
|
});
|
|
135
128
|
};
|
|
136
|
-
const extractClassNamePrimitives = (
|
|
129
|
+
const extractClassNamePrimitives = (source) => {
|
|
137
130
|
const classes = [];
|
|
138
|
-
|
|
139
|
-
if (attr
|
|
140
|
-
const initializer = attr.
|
|
131
|
+
source.jsxAttributes.forEach((attr) => {
|
|
132
|
+
if (getJsxAttributeName(source, attr) !== "className") return;
|
|
133
|
+
const initializer = attr.value;
|
|
141
134
|
if (!initializer) return;
|
|
142
135
|
const values = [];
|
|
143
|
-
if (
|
|
144
|
-
else if (
|
|
145
|
-
const expr = initializer.
|
|
146
|
-
if (expr) values.push(...extractStringLiterals(expr));
|
|
136
|
+
if (isStringLiteral(initializer)) values.push(getStringLiteralValue(initializer));
|
|
137
|
+
else if (initializer.type === "JSXExpressionContainer") {
|
|
138
|
+
const expr = initializer.expression;
|
|
139
|
+
if (expr && expr.type !== "JSXEmptyExpression") values.push(...extractStringLiterals(expr, source));
|
|
147
140
|
}
|
|
148
141
|
values.forEach((raw) => {
|
|
149
142
|
classes.push(...raw.split(/\s+/).filter(Boolean));
|
|
150
143
|
});
|
|
151
144
|
});
|
|
152
|
-
|
|
153
|
-
if (prop.
|
|
154
|
-
const initializer = prop.
|
|
145
|
+
source.objectProperties.forEach((prop) => {
|
|
146
|
+
if (prop.shorthand || getPropertyName(source, prop) !== "className") return;
|
|
147
|
+
const initializer = prop.value;
|
|
155
148
|
if (!initializer) return;
|
|
156
|
-
extractStringLiterals(initializer).forEach((raw) => {
|
|
149
|
+
extractStringLiterals(initializer, source).forEach((raw) => {
|
|
157
150
|
classes.push(...raw.split(/\s+/).filter(Boolean));
|
|
158
151
|
});
|
|
159
152
|
});
|
|
@@ -183,8 +176,7 @@ const purgeFromCodeOptimized = async (code, options) => {
|
|
|
183
176
|
unresolvedWrapperSpreads: []
|
|
184
177
|
};
|
|
185
178
|
const projectCreateStart = performance.now();
|
|
186
|
-
const
|
|
187
|
-
const sourceFile = project.createSourceFile(options.filePath ?? "input.tsx", code, { overwrite: true });
|
|
179
|
+
const source = parseSource(options.filePath ?? "input.tsx", code);
|
|
188
180
|
const projectCreateMs = performance.now() - projectCreateStart;
|
|
189
181
|
const stats = {
|
|
190
182
|
filesScanned: 1,
|
|
@@ -195,17 +187,16 @@ const purgeFromCodeOptimized = async (code, options) => {
|
|
|
195
187
|
expressionsResolved: 0
|
|
196
188
|
};
|
|
197
189
|
const purgeContext = {
|
|
198
|
-
|
|
190
|
+
sources: [source],
|
|
199
191
|
componentUsageCache: /* @__PURE__ */ new Map(),
|
|
200
192
|
spreadCache: /* @__PURE__ */ new Map(),
|
|
201
|
-
udsImportingFiles: /* @__PURE__ */ new Set(),
|
|
202
193
|
stats
|
|
203
194
|
};
|
|
204
195
|
const importParseStart = performance.now();
|
|
205
196
|
const imports = [];
|
|
206
|
-
|
|
207
|
-
if (isUdsComponentModule(
|
|
208
|
-
if (
|
|
197
|
+
source.staticImports.forEach((staticImport) => {
|
|
198
|
+
if (isUdsComponentModule(staticImport.moduleRequest.value)) staticImport.entries.forEach((entry) => {
|
|
199
|
+
if (entry.importName.kind === "Name" && entry.importName.name && !entry.isType) imports.push(entry.importName.name);
|
|
209
200
|
});
|
|
210
201
|
});
|
|
211
202
|
const importParseMs = performance.now() - importParseStart;
|
|
@@ -215,17 +206,16 @@ const purgeFromCodeOptimized = async (code, options) => {
|
|
|
215
206
|
const unresolvedWrapperSpreads = [];
|
|
216
207
|
const referencedComponents = /* @__PURE__ */ new Set();
|
|
217
208
|
const getStylesExtractStart = performance.now();
|
|
218
|
-
const getStylesProps = extractGetStylesCalls(
|
|
209
|
+
const getStylesProps = extractGetStylesCalls(source, stats, variants);
|
|
219
210
|
const getStylesExtractMs = performance.now() - getStylesExtractStart;
|
|
220
211
|
const jsxAnalysisStart = performance.now();
|
|
221
|
-
const jsxElementsCache = sourceFile.getDescendants().filter((node) => Node.isJsxOpeningElement(node) || Node.isJsxSelfClosingElement(node));
|
|
222
212
|
imports.forEach((imp) => {
|
|
223
|
-
findComponentReferences(
|
|
224
|
-
const componentName = reference
|
|
213
|
+
findComponentReferences(source, imp).forEach((reference) => {
|
|
214
|
+
const componentName = getJsxTagName(source, reference) || imp;
|
|
225
215
|
referencedComponents.add(componentName);
|
|
226
216
|
const propsMap = componentProps.get(componentName) ?? /* @__PURE__ */ new Map();
|
|
227
217
|
const unresolvedSpreadProps = componentUnresolvedSpreadProps.get(componentName) ?? /* @__PURE__ */ new Set();
|
|
228
|
-
const { props, unknownSpreadWrappers } = extractPropsFromReference(reference, stats,
|
|
218
|
+
const { props, unknownSpreadWrappers } = extractPropsFromReference(reference, stats, source, purgeContext);
|
|
229
219
|
props.forEach(({ propName, values, fromSpread }) => {
|
|
230
220
|
if (values.length > 0) {
|
|
231
221
|
const existing = propsMap.get(propName) ?? /* @__PURE__ */ new Set();
|
|
@@ -381,7 +371,7 @@ const purgeFromCodeOptimized = async (code, options) => {
|
|
|
381
371
|
});
|
|
382
372
|
});
|
|
383
373
|
});
|
|
384
|
-
if (options.includeAllClassNamePrimitives) safelist.push(...extractClassNamePrimitives(
|
|
374
|
+
if (options.includeAllClassNamePrimitives) safelist.push(...extractClassNamePrimitives(source));
|
|
385
375
|
const finalSafelist = [...new Set(safelist)].sort();
|
|
386
376
|
const safelistGenerationMs = performance.now() - safelistGenStart;
|
|
387
377
|
stats.timeMs = Math.round(performance.now() - startTime);
|
|
@@ -404,15 +394,14 @@ const purgeFromCodeOptimized = async (code, options) => {
|
|
|
404
394
|
/**
|
|
405
395
|
* Find JSX references for a component in the source file
|
|
406
396
|
*/
|
|
407
|
-
const findComponentReferences = (
|
|
397
|
+
const findComponentReferences = (source, componentName) => {
|
|
408
398
|
const references = [];
|
|
409
399
|
const seenTags = /* @__PURE__ */ new Set();
|
|
410
|
-
const allJsxElements = jsxElementsCache ?? sourceFile.getDescendants().filter((node) => Node.isJsxOpeningElement(node) || Node.isJsxSelfClosingElement(node));
|
|
411
400
|
const collectMatchingTags = (localName) => {
|
|
412
|
-
for (const node of
|
|
413
|
-
const tagName = node
|
|
401
|
+
for (const node of source.jsxElements) {
|
|
402
|
+
const tagName = getJsxTagName(source, node);
|
|
414
403
|
if (tagName === localName || tagName.startsWith(`${localName}.`)) {
|
|
415
|
-
const key = `${tagName}:${node.
|
|
404
|
+
const key = `${tagName}:${node.start}`;
|
|
416
405
|
if (!seenTags.has(key)) {
|
|
417
406
|
seenTags.add(key);
|
|
418
407
|
references.push(node);
|
|
@@ -420,11 +409,11 @@ const findComponentReferences = (sourceFile, componentName, jsxElementsCache) =>
|
|
|
420
409
|
}
|
|
421
410
|
}
|
|
422
411
|
};
|
|
423
|
-
|
|
424
|
-
if (!isUdsComponentModule(
|
|
425
|
-
|
|
426
|
-
if (
|
|
427
|
-
collectMatchingTags(
|
|
412
|
+
source.staticImports.forEach((staticImport) => {
|
|
413
|
+
if (!isUdsComponentModule(staticImport.moduleRequest.value)) return;
|
|
414
|
+
staticImport.entries.forEach((entry) => {
|
|
415
|
+
if (entry.importName.kind !== "Name" || entry.importName.name !== componentName || entry.isType) return;
|
|
416
|
+
collectMatchingTags(entry.localName.value);
|
|
428
417
|
});
|
|
429
418
|
});
|
|
430
419
|
return references;
|
|
@@ -438,22 +427,21 @@ const findComponentReferences = (sourceFile, componentName, jsxElementsCache) =>
|
|
|
438
427
|
* 3. Otherwise the spread is unknown: reported via `unknownSpreadWrappers` so the
|
|
439
428
|
* caller can over-include variant classes and emit cross-file metadata.
|
|
440
429
|
*/
|
|
441
|
-
const extractPropsFromReference = (reference, stats,
|
|
430
|
+
const extractPropsFromReference = (reference, stats, source, purgeContext) => {
|
|
442
431
|
const props = [];
|
|
443
432
|
const unknownSpreadWrappers = [];
|
|
444
|
-
reference.
|
|
445
|
-
if (attr.
|
|
446
|
-
const
|
|
447
|
-
const propName = jsxAttr.getNameNode().getText();
|
|
433
|
+
reference.attributes.forEach((attr) => {
|
|
434
|
+
if (attr.type === "JSXAttribute") {
|
|
435
|
+
const propName = getJsxAttributeName(source, attr);
|
|
448
436
|
const values = [];
|
|
449
|
-
const initializer =
|
|
450
|
-
if (initializer &&
|
|
451
|
-
values.push(initializer
|
|
437
|
+
const initializer = attr.value;
|
|
438
|
+
if (initializer && isStringLiteral(initializer)) {
|
|
439
|
+
values.push(getStringLiteralValue(initializer));
|
|
452
440
|
stats.expressionsResolved++;
|
|
453
|
-
} else if (initializer && initializer.
|
|
454
|
-
const expression = initializer.
|
|
455
|
-
if (expression) {
|
|
456
|
-
const resolved = extractStringLiterals(expression);
|
|
441
|
+
} else if (initializer && initializer.type === "JSXExpressionContainer") {
|
|
442
|
+
const expression = initializer.expression;
|
|
443
|
+
if (expression && expression.type !== "JSXEmptyExpression") {
|
|
444
|
+
const resolved = extractStringLiterals(expression, source);
|
|
457
445
|
values.push(...resolved);
|
|
458
446
|
if (resolved.length > 0) stats.expressionsResolved++;
|
|
459
447
|
}
|
|
@@ -464,9 +452,10 @@ const extractPropsFromReference = (reference, stats, sourceFile, purgeContext) =
|
|
|
464
452
|
fromSpread: false
|
|
465
453
|
});
|
|
466
454
|
}
|
|
467
|
-
if (attr.
|
|
468
|
-
const
|
|
469
|
-
const
|
|
455
|
+
if (attr.type === "JSXSpreadAttribute") {
|
|
456
|
+
const expression = attr.argument;
|
|
457
|
+
const spreadName = getText(source, expression);
|
|
458
|
+
const resolvedSpreadProps = traceSpreadInFile(spreadName, source);
|
|
470
459
|
if (resolvedSpreadProps.length > 0) {
|
|
471
460
|
stats.spreadsTraced++;
|
|
472
461
|
resolvedSpreadProps.forEach(([propName, values]) => {
|
|
@@ -478,7 +467,7 @@ const extractPropsFromReference = (reference, stats, sourceFile, purgeContext) =
|
|
|
478
467
|
});
|
|
479
468
|
return;
|
|
480
469
|
}
|
|
481
|
-
const usageResolved = resolveSpreadFromUsages(reference, spreadName, purgeContext);
|
|
470
|
+
const usageResolved = resolveSpreadFromUsages(reference, spreadName, source, purgeContext);
|
|
482
471
|
if (usageResolved) {
|
|
483
472
|
usageResolved.forEach((values, propName) => {
|
|
484
473
|
props.push({
|
|
@@ -490,7 +479,7 @@ const extractPropsFromReference = (reference, stats, sourceFile, purgeContext) =
|
|
|
490
479
|
return;
|
|
491
480
|
}
|
|
492
481
|
stats.spreadsUnresolved++;
|
|
493
|
-
const parentInfo = getParentComponentInfo(reference);
|
|
482
|
+
const parentInfo = getParentComponentInfo(reference, source);
|
|
494
483
|
const isWrapperParamSpread = parentInfo && (parentInfo.spreadRestIdentifier === spreadName || parentInfo.paramIdentifier === spreadName);
|
|
495
484
|
unknownSpreadWrappers.push(isWrapperParamSpread ? parentInfo.componentName : void 0);
|
|
496
485
|
}
|
|
@@ -503,19 +492,18 @@ const extractPropsFromReference = (reference, stats, sourceFile, purgeContext) =
|
|
|
503
492
|
/**
|
|
504
493
|
* Trace spread props to their source within the same file.
|
|
505
494
|
*/
|
|
506
|
-
const traceSpreadInFile = (spreadName,
|
|
495
|
+
const traceSpreadInFile = (spreadName, source) => {
|
|
507
496
|
const props = /* @__PURE__ */ new Map();
|
|
508
|
-
const varDecl =
|
|
497
|
+
const varDecl = source.variableDeclarators.find((declaration) => declaration.id.type === "Identifier" && declaration.id.name === spreadName);
|
|
509
498
|
if (!varDecl) return [];
|
|
510
|
-
const initializer = varDecl.
|
|
499
|
+
const initializer = varDecl.init;
|
|
511
500
|
if (!initializer) return [];
|
|
512
501
|
getSpreadObjectLiteralCandidates(initializer).forEach((objLiteral) => {
|
|
513
|
-
objLiteral.
|
|
514
|
-
if (
|
|
515
|
-
const
|
|
516
|
-
const
|
|
517
|
-
const
|
|
518
|
-
const values = propInit ? extractStringLiterals(propInit) : [];
|
|
502
|
+
objLiteral.properties.forEach((prop) => {
|
|
503
|
+
if (prop.type !== "Property" || prop.shorthand) return;
|
|
504
|
+
const propName = getPropertyName(source, prop);
|
|
505
|
+
const propInit = prop.value;
|
|
506
|
+
const values = propInit ? extractStringLiterals(propInit, source) : [];
|
|
519
507
|
const existingValues = props.get(propName) ?? /* @__PURE__ */ new Set();
|
|
520
508
|
values.forEach((value) => existingValues.add(value));
|
|
521
509
|
props.set(propName, existingValues);
|
|
@@ -524,10 +512,10 @@ const traceSpreadInFile = (spreadName, sourceFile) => {
|
|
|
524
512
|
return [...props.entries()].map(([propName, values]) => [propName, [...values]]);
|
|
525
513
|
};
|
|
526
514
|
const getSpreadObjectLiteralCandidates = (node) => {
|
|
527
|
-
if (
|
|
528
|
-
if (
|
|
529
|
-
if (
|
|
530
|
-
if (
|
|
515
|
+
if (node.type === "ObjectExpression") return [node];
|
|
516
|
+
if (node.type === "ParenthesizedExpression") return getSpreadObjectLiteralCandidates(node.expression);
|
|
517
|
+
if (node.type === "TSAsExpression" || node.type === "TSTypeAssertion" || node.type === "TSSatisfiesExpression") return getSpreadObjectLiteralCandidates(node.expression);
|
|
518
|
+
if (node.type === "ConditionalExpression") return [...getSpreadObjectLiteralCandidates(node.consequent), ...getSpreadObjectLiteralCandidates(node.alternate)];
|
|
531
519
|
return [];
|
|
532
520
|
};
|
|
533
521
|
/**
|
|
@@ -535,22 +523,22 @@ const getSpreadObjectLiteralCandidates = (node) => {
|
|
|
535
523
|
* This handles cases like:
|
|
536
524
|
* const styles = getStyles({ backgroundColor: 'brand', spacing: '4' });
|
|
537
525
|
*/
|
|
538
|
-
const extractGetStylesCalls = (
|
|
526
|
+
const extractGetStylesCalls = (source, stats, variants) => {
|
|
539
527
|
const props = /* @__PURE__ */ new Map();
|
|
540
528
|
const VALID_VARIANTS = new Set(Object.keys(variants));
|
|
541
|
-
|
|
542
|
-
if (call.
|
|
543
|
-
const args = call.
|
|
529
|
+
source.callExpressions.forEach((call) => {
|
|
530
|
+
if (getText(source, call.callee) !== "getStyles") return;
|
|
531
|
+
const args = call.arguments;
|
|
544
532
|
if (args.length === 0) return;
|
|
545
533
|
const firstArg = args[0];
|
|
546
|
-
if (
|
|
547
|
-
firstArg.
|
|
548
|
-
if (prop.
|
|
549
|
-
|
|
550
|
-
const propName =
|
|
551
|
-
const propInit =
|
|
534
|
+
if (firstArg.type !== "ObjectExpression") return;
|
|
535
|
+
firstArg.properties.forEach((prop) => {
|
|
536
|
+
if (prop.type !== "Property") return;
|
|
537
|
+
if (!prop.shorthand) {
|
|
538
|
+
const propName = getPropertyName(source, prop);
|
|
539
|
+
const propInit = prop.value;
|
|
552
540
|
if (propInit && VALID_VARIANTS.has(propName)) {
|
|
553
|
-
const values = extractStringLiterals(propInit);
|
|
541
|
+
const values = extractStringLiterals(propInit, source);
|
|
554
542
|
if (values.length > 0) {
|
|
555
543
|
const existing = props.get(propName) ?? /* @__PURE__ */ new Set();
|
|
556
544
|
values.forEach((v) => existing.add(v));
|
|
@@ -558,11 +546,10 @@ const extractGetStylesCalls = (sourceFile, stats, variants) => {
|
|
|
558
546
|
stats.expressionsResolved++;
|
|
559
547
|
}
|
|
560
548
|
}
|
|
561
|
-
} else
|
|
562
|
-
const
|
|
563
|
-
const propName = shorthand.getName();
|
|
549
|
+
} else {
|
|
550
|
+
const propName = getPropertyName(source, prop);
|
|
564
551
|
if (VALID_VARIANTS.has(propName)) {
|
|
565
|
-
const values = extractStringLiterals(
|
|
552
|
+
const values = extractStringLiterals(prop.value, source);
|
|
566
553
|
if (values.length > 0) {
|
|
567
554
|
const existing = props.get(propName) ?? /* @__PURE__ */ new Set();
|
|
568
555
|
values.forEach((v) => existing.add(v));
|
|
@@ -618,21 +605,20 @@ const resolveWrapperSpreadSafelist = (wrapperSpreads, sources, variants) => {
|
|
|
618
605
|
const wrapperNames = [...targetsByWrapper.keys()];
|
|
619
606
|
const usageProps = /* @__PURE__ */ new Map();
|
|
620
607
|
sources.filter((code) => wrapperNames.some((name) => code.includes(`<${name}`))).forEach((code) => {
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
const tagName = node
|
|
608
|
+
const source = parseSource("wrapper-usage.tsx", code);
|
|
609
|
+
source.jsxElements.forEach((node) => {
|
|
610
|
+
const tagName = getJsxTagName(source, node);
|
|
624
611
|
if (!targetsByWrapper.has(tagName)) return;
|
|
625
612
|
const propsMap = usageProps.get(tagName) ?? /* @__PURE__ */ new Map();
|
|
626
|
-
node.
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
const propName = jsxAttr.getNameNode().getText();
|
|
613
|
+
node.attributes.forEach((attr) => {
|
|
614
|
+
if (attr.type !== "JSXAttribute") return;
|
|
615
|
+
const propName = getJsxAttributeName(source, attr);
|
|
630
616
|
const values = [];
|
|
631
|
-
const initializer =
|
|
632
|
-
if (initializer &&
|
|
633
|
-
else if (initializer &&
|
|
634
|
-
const expression = initializer.
|
|
635
|
-
if (expression) values.push(...extractStringLiterals(expression));
|
|
617
|
+
const initializer = attr.value;
|
|
618
|
+
if (initializer && isStringLiteral(initializer)) values.push(getStringLiteralValue(initializer));
|
|
619
|
+
else if (initializer && initializer.type === "JSXExpressionContainer") {
|
|
620
|
+
const expression = initializer.expression;
|
|
621
|
+
if (expression && expression.type !== "JSXEmptyExpression") values.push(...extractStringLiterals(expression, source));
|
|
636
622
|
}
|
|
637
623
|
if (values.length === 0) return;
|
|
638
624
|
const existing = propsMap.get(propName) ?? /* @__PURE__ */ new Set();
|
|
@@ -10,8 +10,8 @@ declare function getShadowStyles({
|
|
|
10
10
|
}: {
|
|
11
11
|
config: UniversalTokensConfig;
|
|
12
12
|
shadowType: ShadowType;
|
|
13
|
-
}): Record<".uds-inset-shadow-
|
|
14
|
-
readonly [x: string]: "var(--uds-inset-shadow-
|
|
13
|
+
}): Record<".uds-inset-shadow-none" | ".uds-inset-shadow-xs" | ".uds-inset-shadow-sm" | ".uds-inset-shadow-md" | ".uds-inset-shadow-lg" | ".uds-inset-shadow-xl" | ".uds-inset-shadow-2xl" | ".uds-inset-shadow-elevation-0" | ".uds-inset-shadow-elevation-1" | ".uds-inset-shadow-elevation-2" | ".uds-inset-shadow-elevation-3" | ".uds-inset-shadow-elevation-4" | ".uds-inset-shadow-elevation-5" | ".uds-drop-shadow-none" | ".uds-drop-shadow-xs" | ".uds-drop-shadow-sm" | ".uds-drop-shadow-md" | ".uds-drop-shadow-lg" | ".uds-drop-shadow-xl" | ".uds-drop-shadow-2xl" | ".uds-drop-shadow-elevation-0" | ".uds-drop-shadow-elevation-1" | ".uds-drop-shadow-elevation-2" | ".uds-drop-shadow-elevation-3" | ".uds-drop-shadow-elevation-4" | ".uds-drop-shadow-elevation-5", {
|
|
14
|
+
readonly [x: string]: "var(--uds-inset-shadow-none)" | "var(--uds-inset-shadow-xs)" | "var(--uds-inset-shadow-sm)" | "var(--uds-inset-shadow-md)" | "var(--uds-inset-shadow-lg)" | "var(--uds-inset-shadow-xl)" | "var(--uds-inset-shadow-2xl)" | "var(--uds-inset-shadow-elevation-0)" | "var(--uds-inset-shadow-elevation-1)" | "var(--uds-inset-shadow-elevation-2)" | "var(--uds-inset-shadow-elevation-3)" | "var(--uds-inset-shadow-elevation-4)" | "var(--uds-inset-shadow-elevation-5)" | "var(--uds-drop-shadow-none)" | "var(--uds-drop-shadow-xs)" | "var(--uds-drop-shadow-sm)" | "var(--uds-drop-shadow-md)" | "var(--uds-drop-shadow-lg)" | "var(--uds-drop-shadow-xl)" | "var(--uds-drop-shadow-2xl)" | "var(--uds-drop-shadow-elevation-0)" | "var(--uds-drop-shadow-elevation-1)" | "var(--uds-drop-shadow-elevation-2)" | "var(--uds-drop-shadow-elevation-3)" | "var(--uds-drop-shadow-elevation-4)" | "var(--uds-drop-shadow-elevation-5)" | "var(--uds-drop-shadow, 0 0 transparent), var(--uds-inset-shadow, 0 0 transparent), var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow, 0 0 transparent)";
|
|
15
15
|
readonly boxShadow: "var(--uds-drop-shadow, 0 0 transparent), var(--uds-inset-shadow, 0 0 transparent), var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow, 0 0 transparent)";
|
|
16
16
|
}>; //#endregion
|
|
17
17
|
//#endregion
|
|
@@ -10,8 +10,8 @@ declare function getShadowStyles({
|
|
|
10
10
|
}: {
|
|
11
11
|
config: UniversalTokensConfig;
|
|
12
12
|
shadowType: ShadowType;
|
|
13
|
-
}): Record<".uds-inset-shadow-
|
|
14
|
-
readonly [x: string]: "var(--uds-inset-shadow-
|
|
13
|
+
}): Record<".uds-inset-shadow-none" | ".uds-inset-shadow-xs" | ".uds-inset-shadow-sm" | ".uds-inset-shadow-md" | ".uds-inset-shadow-lg" | ".uds-inset-shadow-xl" | ".uds-inset-shadow-2xl" | ".uds-inset-shadow-elevation-0" | ".uds-inset-shadow-elevation-1" | ".uds-inset-shadow-elevation-2" | ".uds-inset-shadow-elevation-3" | ".uds-inset-shadow-elevation-4" | ".uds-inset-shadow-elevation-5" | ".uds-drop-shadow-none" | ".uds-drop-shadow-xs" | ".uds-drop-shadow-sm" | ".uds-drop-shadow-md" | ".uds-drop-shadow-lg" | ".uds-drop-shadow-xl" | ".uds-drop-shadow-2xl" | ".uds-drop-shadow-elevation-0" | ".uds-drop-shadow-elevation-1" | ".uds-drop-shadow-elevation-2" | ".uds-drop-shadow-elevation-3" | ".uds-drop-shadow-elevation-4" | ".uds-drop-shadow-elevation-5", {
|
|
14
|
+
readonly [x: string]: "var(--uds-inset-shadow-none)" | "var(--uds-inset-shadow-xs)" | "var(--uds-inset-shadow-sm)" | "var(--uds-inset-shadow-md)" | "var(--uds-inset-shadow-lg)" | "var(--uds-inset-shadow-xl)" | "var(--uds-inset-shadow-2xl)" | "var(--uds-inset-shadow-elevation-0)" | "var(--uds-inset-shadow-elevation-1)" | "var(--uds-inset-shadow-elevation-2)" | "var(--uds-inset-shadow-elevation-3)" | "var(--uds-inset-shadow-elevation-4)" | "var(--uds-inset-shadow-elevation-5)" | "var(--uds-drop-shadow-none)" | "var(--uds-drop-shadow-xs)" | "var(--uds-drop-shadow-sm)" | "var(--uds-drop-shadow-md)" | "var(--uds-drop-shadow-lg)" | "var(--uds-drop-shadow-xl)" | "var(--uds-drop-shadow-2xl)" | "var(--uds-drop-shadow-elevation-0)" | "var(--uds-drop-shadow-elevation-1)" | "var(--uds-drop-shadow-elevation-2)" | "var(--uds-drop-shadow-elevation-3)" | "var(--uds-drop-shadow-elevation-4)" | "var(--uds-drop-shadow-elevation-5)" | "var(--uds-drop-shadow, 0 0 transparent), var(--uds-inset-shadow, 0 0 transparent), var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow, 0 0 transparent)";
|
|
15
15
|
readonly boxShadow: "var(--uds-drop-shadow, 0 0 transparent), var(--uds-inset-shadow, 0 0 transparent), var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent), var(--tw-shadow, 0 0 transparent)";
|
|
16
16
|
}>; //#endregion
|
|
17
17
|
//#endregion
|
|
@@ -8,9 +8,9 @@ const require_index = require("../../packages/css-tokens/dist/index.cjs");
|
|
|
8
8
|
let node_fs = require("node:fs");
|
|
9
9
|
let node_path = require("node:path");
|
|
10
10
|
node_path = require_runtime.__toESM(node_path, 1);
|
|
11
|
-
let ts_morph = require("ts-morph");
|
|
12
11
|
let fast_glob = require("fast-glob");
|
|
13
12
|
fast_glob = require_runtime.__toESM(fast_glob, 1);
|
|
13
|
+
let ts_morph = require("ts-morph");
|
|
14
14
|
//#region ../tailwind-v3/dist/purger/legacy/purgeCSS.mjs
|
|
15
15
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
16
16
|
const scaleModeToClass = {
|
|
@@ -6,8 +6,8 @@ import { findReferencesAsJsxElements, getUsedPropsInReference } from "../../util
|
|
|
6
6
|
import { DARK_COLOR_MODE_CLASSNAME, LARGE_SCALE_MODE_CLASSNAME, LIGHT_COLOR_MODE_CLASSNAME, MEDIUM_SCALE_MODE_CLASSNAME, SMALL_SCALE_MODE_CLASSNAME, XLARGE_SCALE_MODE_CLASSNAME, XSMALL_SCALE_MODE_CLASSNAME, XXLARGE_SCALE_MODE_CLASSNAME, XXXLARGE_SCALE_MODE_CLASSNAME } from "../../packages/css-tokens/dist/index.js";
|
|
7
7
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
8
8
|
import path from "node:path";
|
|
9
|
-
import { Node, Project, SyntaxKind, ts } from "ts-morph";
|
|
10
9
|
import fg from "fast-glob";
|
|
10
|
+
import { Node, Project, SyntaxKind, ts } from "ts-morph";
|
|
11
11
|
//#region ../tailwind-v3/dist/purger/legacy/purgeCSS.mjs
|
|
12
12
|
/*! © 2026 Yahoo, Inc. UDS Tailwind and Purger v0.0.0-development */
|
|
13
13
|
const scaleModeToClass = {
|