logicstamp-context 0.2.3 → 0.2.5
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/LLM_CONTEXT.md +2 -2
- package/README.md +96 -585
- package/dist/cli/commands/compare.d.ts.map +1 -1
- package/dist/cli/commands/compare.js +120 -13
- package/dist/cli/commands/compare.js.map +1 -1
- package/dist/cli/commands/context/fileWriter.d.ts.map +1 -1
- package/dist/cli/commands/context/fileWriter.js +68 -6
- package/dist/cli/commands/context/fileWriter.js.map +1 -1
- package/dist/cli/commands/context/tokenEstimator.d.ts.map +1 -1
- package/dist/cli/commands/context/tokenEstimator.js +12 -4
- package/dist/cli/commands/context/tokenEstimator.js.map +1 -1
- package/dist/cli/commands/context.d.ts.map +1 -1
- package/dist/cli/commands/context.js +71 -2
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +84 -8
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/handlers/compareHandler.d.ts.map +1 -1
- package/dist/cli/handlers/compareHandler.js +123 -9
- package/dist/cli/handlers/compareHandler.js.map +1 -1
- package/dist/core/astParser/detectors.d.ts.map +1 -1
- package/dist/core/astParser/detectors.js +130 -57
- package/dist/core/astParser/detectors.js.map +1 -1
- package/dist/core/astParser/extractors/componentExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/componentExtractor.js +89 -20
- package/dist/core/astParser/extractors/componentExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/eventExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/eventExtractor.js +83 -28
- package/dist/core/astParser/extractors/eventExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/propExtractor.js +130 -51
- package/dist/core/astParser/extractors/propExtractor.js.map +1 -1
- package/dist/core/astParser/extractors/stateExtractor.d.ts.map +1 -1
- package/dist/core/astParser/extractors/stateExtractor.js +95 -44
- package/dist/core/astParser/extractors/stateExtractor.js.map +1 -1
- package/dist/core/astParser.d.ts +1 -0
- package/dist/core/astParser.d.ts.map +1 -1
- package/dist/core/astParser.js +74 -26
- package/dist/core/astParser.js.map +1 -1
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +28 -1
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/pack/loader.d.ts.map +1 -1
- package/dist/core/pack/loader.js +22 -2
- package/dist/core/pack/loader.js.map +1 -1
- package/dist/core/styleExtractor/index.d.ts +2 -0
- package/dist/core/styleExtractor/index.d.ts.map +1 -1
- package/dist/core/styleExtractor/index.js +2 -0
- package/dist/core/styleExtractor/index.js.map +1 -1
- package/dist/core/styleExtractor/layout.d.ts +13 -2
- package/dist/core/styleExtractor/layout.d.ts.map +1 -1
- package/dist/core/styleExtractor/layout.js +135 -65
- package/dist/core/styleExtractor/layout.js.map +1 -1
- package/dist/core/styleExtractor/material.d.ts +19 -0
- package/dist/core/styleExtractor/material.d.ts.map +1 -0
- package/dist/core/styleExtractor/material.js +328 -0
- package/dist/core/styleExtractor/material.js.map +1 -0
- package/dist/core/styleExtractor/motion.d.ts +2 -2
- package/dist/core/styleExtractor/motion.d.ts.map +1 -1
- package/dist/core/styleExtractor/motion.js +425 -56
- package/dist/core/styleExtractor/motion.js.map +1 -1
- package/dist/core/styleExtractor/radix.d.ts +29 -0
- package/dist/core/styleExtractor/radix.d.ts.map +1 -0
- package/dist/core/styleExtractor/radix.js +315 -0
- package/dist/core/styleExtractor/radix.js.map +1 -0
- package/dist/core/styleExtractor/scss.d.ts.map +1 -1
- package/dist/core/styleExtractor/scss.js +37 -23
- package/dist/core/styleExtractor/scss.js.map +1 -1
- package/dist/core/styleExtractor/shadcn.d.ts +20 -0
- package/dist/core/styleExtractor/shadcn.d.ts.map +1 -0
- package/dist/core/styleExtractor/shadcn.js +345 -0
- package/dist/core/styleExtractor/shadcn.js.map +1 -0
- package/dist/core/styleExtractor/styleExtractor.d.ts.map +1 -1
- package/dist/core/styleExtractor/styleExtractor.js +270 -78
- package/dist/core/styleExtractor/styleExtractor.js.map +1 -1
- package/dist/core/styleExtractor/styled.d.ts +1 -1
- package/dist/core/styleExtractor/styled.d.ts.map +1 -1
- package/dist/core/styleExtractor/styled.js +308 -23
- package/dist/core/styleExtractor/styled.js.map +1 -1
- package/dist/core/styleExtractor/tailwind.d.ts +21 -3
- package/dist/core/styleExtractor/tailwind.d.ts.map +1 -1
- package/dist/core/styleExtractor/tailwind.js +279 -46
- package/dist/core/styleExtractor/tailwind.js.map +1 -1
- package/dist/types/UIFContract.d.ts +45 -0
- package/dist/types/UIFContract.d.ts.map +1 -1
- package/dist/types/UIFContract.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +41 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/debug.d.ts +12 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +16 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/fsx.d.ts +2 -1
- package/dist/utils/fsx.d.ts.map +1 -1
- package/dist/utils/fsx.js +99 -28
- package/dist/utils/fsx.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +28 -1
- package/dist/utils/gitignore.js.map +1 -1
- package/package.json +1 -1
- package/schema/logicstamp.context.schema.json +48 -1
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShadCN/UI extractor - Extracts ShadCN/UI component library usage
|
|
3
|
+
* ShadCN/UI is a collection of re-usable components built with Radix UI and Tailwind CSS
|
|
4
|
+
*/
|
|
5
|
+
import { SyntaxKind, } from 'ts-morph';
|
|
6
|
+
import { debugError } from '../../utils/debug.js';
|
|
7
|
+
/**
|
|
8
|
+
* Common ShadCN/UI component names
|
|
9
|
+
* These are typically imported from @/components/ui/*
|
|
10
|
+
*/
|
|
11
|
+
const SHADCN_COMPONENTS = [
|
|
12
|
+
'Accordion', 'AccordionContent', 'AccordionItem', 'AccordionTrigger',
|
|
13
|
+
'Alert', 'AlertDescription', 'AlertTitle',
|
|
14
|
+
'AlertDialog', 'AlertDialogAction', 'AlertDialogCancel', 'AlertDialogContent', 'AlertDialogDescription',
|
|
15
|
+
'AlertDialogFooter', 'AlertDialogHeader', 'AlertDialogTitle', 'AlertDialogTrigger',
|
|
16
|
+
'AspectRatio',
|
|
17
|
+
'Avatar', 'AvatarFallback', 'AvatarImage',
|
|
18
|
+
'Badge',
|
|
19
|
+
'Button',
|
|
20
|
+
'Calendar',
|
|
21
|
+
'Card', 'CardContent', 'CardDescription', 'CardFooter', 'CardHeader', 'CardTitle',
|
|
22
|
+
'Checkbox',
|
|
23
|
+
'Collapsible', 'CollapsibleContent', 'CollapsibleTrigger',
|
|
24
|
+
'Command', 'CommandDialog', 'CommandEmpty', 'CommandGroup', 'CommandInput', 'CommandItem',
|
|
25
|
+
'CommandList', 'CommandSeparator', 'CommandShortcut',
|
|
26
|
+
'ContextMenu', 'ContextMenuCheckboxItem', 'ContextMenuContent', 'ContextMenuItem',
|
|
27
|
+
'ContextMenuLabel', 'ContextMenuRadioGroup', 'ContextMenuRadioItem', 'ContextMenuSeparator',
|
|
28
|
+
'ContextMenuShortcut', 'ContextMenuSub', 'ContextMenuSubContent', 'ContextMenuSubTrigger',
|
|
29
|
+
'ContextMenuTrigger',
|
|
30
|
+
'Dialog', 'DialogContent', 'DialogDescription', 'DialogFooter', 'DialogHeader', 'DialogTitle',
|
|
31
|
+
'DialogTrigger',
|
|
32
|
+
'DropdownMenu', 'DropdownMenuCheckboxItem', 'DropdownMenuContent', 'DropdownMenuItem',
|
|
33
|
+
'DropdownMenuLabel', 'DropdownMenuRadioGroup', 'DropdownMenuRadioItem', 'DropdownMenuSeparator',
|
|
34
|
+
'DropdownMenuShortcut', 'DropdownMenuSub', 'DropdownMenuSubContent', 'DropdownMenuSubTrigger',
|
|
35
|
+
'DropdownMenuTrigger',
|
|
36
|
+
'Form', 'FormControl', 'FormDescription', 'FormField', 'FormItem', 'FormLabel', 'FormMessage',
|
|
37
|
+
'HoverCard', 'HoverCardContent', 'HoverCardTrigger',
|
|
38
|
+
'Input',
|
|
39
|
+
'Label',
|
|
40
|
+
'Menubar', 'MenubarCheckboxItem', 'MenubarContent', 'MenubarItem', 'MenubarLabel',
|
|
41
|
+
'MenubarMenu', 'MenubarRadioGroup', 'MenubarRadioItem', 'MenubarSeparator', 'MenubarShortcut',
|
|
42
|
+
'MenubarSub', 'MenubarSubContent', 'MenubarSubTrigger', 'MenubarTrigger',
|
|
43
|
+
'NavigationMenu', 'NavigationMenuContent', 'NavigationMenuItem', 'NavigationMenuLink',
|
|
44
|
+
'NavigationMenuList', 'NavigationMenuTrigger',
|
|
45
|
+
'Popover', 'PopoverContent', 'PopoverTrigger',
|
|
46
|
+
'Progress',
|
|
47
|
+
'RadioGroup', 'RadioGroupItem',
|
|
48
|
+
'ScrollArea', 'ScrollBar',
|
|
49
|
+
'Select', 'SelectContent', 'SelectGroup', 'SelectItem', 'SelectLabel', 'SelectSeparator',
|
|
50
|
+
'SelectTrigger', 'SelectValue',
|
|
51
|
+
'Separator',
|
|
52
|
+
'Sheet', 'SheetContent', 'SheetDescription', 'SheetFooter', 'SheetHeader', 'SheetTitle',
|
|
53
|
+
'SheetTrigger',
|
|
54
|
+
'Skeleton',
|
|
55
|
+
'Slider',
|
|
56
|
+
'Switch',
|
|
57
|
+
'Table', 'TableBody', 'TableCaption', 'TableCell', 'TableFooter', 'TableHead', 'TableHeader',
|
|
58
|
+
'TableRow',
|
|
59
|
+
'Tabs', 'TabsContent', 'TabsList', 'TabsTrigger',
|
|
60
|
+
'Textarea',
|
|
61
|
+
'Toast', 'ToastAction', 'ToastClose', 'ToastDescription', 'ToastProvider', 'ToastTitle',
|
|
62
|
+
'ToastViewport', 'Toaster',
|
|
63
|
+
'Toggle', 'ToggleGroup', 'ToggleGroupItem',
|
|
64
|
+
'Tooltip', 'TooltipContent', 'TooltipProvider', 'TooltipTrigger',
|
|
65
|
+
];
|
|
66
|
+
/**
|
|
67
|
+
* Common ShadCN/UI variant prop values
|
|
68
|
+
* These are the typical variant values used across components
|
|
69
|
+
*/
|
|
70
|
+
const SHADCN_VARIANTS = {
|
|
71
|
+
button: ['default', 'destructive', 'outline', 'secondary', 'ghost', 'link'],
|
|
72
|
+
badge: ['default', 'secondary', 'destructive', 'outline'],
|
|
73
|
+
alert: ['default', 'destructive'],
|
|
74
|
+
card: ['default', 'elevated', 'outlined'],
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Common ShadCN/UI size prop values
|
|
78
|
+
*/
|
|
79
|
+
const SHADCN_SIZES = ['default', 'sm', 'lg', 'icon', 'xs', 'xl'];
|
|
80
|
+
/**
|
|
81
|
+
* ShadCN/UI import path patterns
|
|
82
|
+
*/
|
|
83
|
+
const SHADCN_IMPORT_PATTERNS = [
|
|
84
|
+
/^@\/components\/ui\//,
|
|
85
|
+
/^~\/components\/ui\//,
|
|
86
|
+
/^components\/ui\//,
|
|
87
|
+
/^\.\.?\/.*\/ui\//,
|
|
88
|
+
];
|
|
89
|
+
/**
|
|
90
|
+
* Extract ShadCN/UI usage from a source file
|
|
91
|
+
*/
|
|
92
|
+
export function extractShadcnUI(source) {
|
|
93
|
+
try {
|
|
94
|
+
// Track component usage counts (incremented on both imports and JSX usage)
|
|
95
|
+
// This gives us frequency-based ranking of components within the file
|
|
96
|
+
const componentCounts = new Map();
|
|
97
|
+
const variants = new Map();
|
|
98
|
+
const sizes = new Set();
|
|
99
|
+
const localToShadcn = new Map(); // Map local alias → canonical component name
|
|
100
|
+
let hasShadcnImport = false;
|
|
101
|
+
// Check for ShadCN/UI imports - wrap AST-risky operation
|
|
102
|
+
let importDeclarations = [];
|
|
103
|
+
try {
|
|
104
|
+
importDeclarations = source.getImportDeclarations();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// If AST traversal fails, return empty result
|
|
108
|
+
return {
|
|
109
|
+
components: [],
|
|
110
|
+
variants: {},
|
|
111
|
+
sizes: [],
|
|
112
|
+
features: {},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
importDeclarations.forEach(imp => {
|
|
116
|
+
const moduleSpecifier = imp.getModuleSpecifierValue();
|
|
117
|
+
// Check if it's a ShadCN/UI import path
|
|
118
|
+
const isShadcnImport = SHADCN_IMPORT_PATTERNS.some(pattern => pattern.test(moduleSpecifier));
|
|
119
|
+
if (isShadcnImport) {
|
|
120
|
+
hasShadcnImport = true;
|
|
121
|
+
// Extract component names from imports (including aliases)
|
|
122
|
+
const namedImports = imp.getNamedImports();
|
|
123
|
+
namedImports.forEach(namedImport => {
|
|
124
|
+
const importName = namedImport.getName(); // Original/canonical name
|
|
125
|
+
const aliasNode = namedImport.getAliasNode();
|
|
126
|
+
const localName = aliasNode?.getText() ?? importName; // Local alias or original
|
|
127
|
+
if (SHADCN_COMPONENTS.includes(importName)) {
|
|
128
|
+
// Count import as one usage
|
|
129
|
+
componentCounts.set(importName, (componentCounts.get(importName) ?? 0) + 1);
|
|
130
|
+
// Track the mapping from local name (alias or original) to canonical component
|
|
131
|
+
localToShadcn.set(localName, importName);
|
|
132
|
+
// Always map canonical name to itself (for direct usage without alias)
|
|
133
|
+
localToShadcn.set(importName, importName);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
// Check for default imports
|
|
137
|
+
// Note: Only recognizes default imports where the import name matches a canonical
|
|
138
|
+
// ShadCN component name. Aliased default imports (e.g., "import PrimaryButton from ...")
|
|
139
|
+
// won't be recognized, but ShadCN typically uses named imports anyway.
|
|
140
|
+
const defaultImport = imp.getDefaultImport();
|
|
141
|
+
if (defaultImport) {
|
|
142
|
+
const defaultName = defaultImport.getText();
|
|
143
|
+
if (SHADCN_COMPONENTS.includes(defaultName)) {
|
|
144
|
+
componentCounts.set(defaultName, (componentCounts.get(defaultName) ?? 0) + 1);
|
|
145
|
+
localToShadcn.set(defaultName, defaultName);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// Also check for component usage in JSX using AST – but ONLY if we saw a ShadCN import
|
|
151
|
+
if (hasShadcnImport) {
|
|
152
|
+
// Extract from JSX elements - wrap AST-risky operation
|
|
153
|
+
let jsxElements = [];
|
|
154
|
+
try {
|
|
155
|
+
jsxElements = [
|
|
156
|
+
...source.getDescendantsOfKind(SyntaxKind.JsxElement),
|
|
157
|
+
...source.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// If AST traversal fails, continue with what we have (imports only)
|
|
162
|
+
}
|
|
163
|
+
for (const element of jsxElements) {
|
|
164
|
+
const openingElement = 'getOpeningElement' in element
|
|
165
|
+
? element.getOpeningElement()
|
|
166
|
+
: element;
|
|
167
|
+
const rawTag = openingElement.getTagNameNode().getText();
|
|
168
|
+
// Handle namespace tags like <Dialog.Root> or <Dialog.Trigger>
|
|
169
|
+
const baseTag = rawTag.includes('.')
|
|
170
|
+
? rawTag.split('.')[0]
|
|
171
|
+
: rawTag;
|
|
172
|
+
// Map local alias to canonical component name
|
|
173
|
+
const componentName = localToShadcn.get(baseTag) ?? baseTag;
|
|
174
|
+
if (SHADCN_COMPONENTS.includes(componentName)) {
|
|
175
|
+
// Count each JSX usage (in addition to import count)
|
|
176
|
+
componentCounts.set(componentName, (componentCounts.get(componentName) ?? 0) + 1);
|
|
177
|
+
// Extract variant prop usage from JSX attributes
|
|
178
|
+
const attributes = openingElement.getAttributes();
|
|
179
|
+
for (const attr of attributes) {
|
|
180
|
+
if (attr.getKind() !== SyntaxKind.JsxAttribute)
|
|
181
|
+
continue;
|
|
182
|
+
const jsxAttr = attr;
|
|
183
|
+
const attrName = jsxAttr.getNameNode().getText();
|
|
184
|
+
// Extract variant prop
|
|
185
|
+
if (attrName === 'variant') {
|
|
186
|
+
const initializer = jsxAttr.getInitializer();
|
|
187
|
+
if (initializer && initializer.getKind() === SyntaxKind.StringLiteral) {
|
|
188
|
+
const variantValue = initializer.getLiteralText?.() ??
|
|
189
|
+
initializer.getText().slice(1, -1);
|
|
190
|
+
// Determine component type
|
|
191
|
+
let componentType = 'other';
|
|
192
|
+
if (componentName === 'Button')
|
|
193
|
+
componentType = 'button';
|
|
194
|
+
else if (componentName === 'Badge')
|
|
195
|
+
componentType = 'badge';
|
|
196
|
+
else if (componentName === 'Alert')
|
|
197
|
+
componentType = 'alert';
|
|
198
|
+
else if (componentName === 'Card')
|
|
199
|
+
componentType = 'card';
|
|
200
|
+
if (!variants.has(componentType)) {
|
|
201
|
+
variants.set(componentType, new Set());
|
|
202
|
+
}
|
|
203
|
+
// For Card, don't filter strictly (custom variants are common)
|
|
204
|
+
// For other components, only record known variants
|
|
205
|
+
const allowed = SHADCN_VARIANTS[componentType];
|
|
206
|
+
if (componentType === 'card' || !allowed || allowed.includes(variantValue)) {
|
|
207
|
+
variants.get(componentType).add(variantValue);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Extract size prop
|
|
212
|
+
if (attrName === 'size') {
|
|
213
|
+
const initializer = jsxAttr.getInitializer();
|
|
214
|
+
if (initializer && initializer.getKind() === SyntaxKind.StringLiteral) {
|
|
215
|
+
const sizeValue = initializer.getLiteralText?.() ??
|
|
216
|
+
initializer.getText().slice(1, -1);
|
|
217
|
+
if (SHADCN_SIZES.includes(sizeValue)) {
|
|
218
|
+
sizes.add(sizeValue);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Check for form usage (react-hook-form integration) using AST
|
|
227
|
+
let usesForm = false;
|
|
228
|
+
try {
|
|
229
|
+
const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
|
|
230
|
+
usesForm =
|
|
231
|
+
callExpressions.some(callExpr => {
|
|
232
|
+
const expr = callExpr.getExpression();
|
|
233
|
+
return expr.getKind() === SyntaxKind.Identifier &&
|
|
234
|
+
['useForm', 'FormProvider', 'Controller'].includes(expr.getText());
|
|
235
|
+
}) ||
|
|
236
|
+
componentCounts.has('Form') ||
|
|
237
|
+
componentCounts.has('FormField');
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// If AST traversal fails, check only component counts
|
|
241
|
+
usesForm = componentCounts.has('Form') || componentCounts.has('FormField');
|
|
242
|
+
}
|
|
243
|
+
// Check for theme usage (next-themes or similar) using AST
|
|
244
|
+
let usesTheme = false;
|
|
245
|
+
try {
|
|
246
|
+
const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
|
|
247
|
+
usesTheme =
|
|
248
|
+
callExpressions.some(callExpr => {
|
|
249
|
+
const expr = callExpr.getExpression();
|
|
250
|
+
return expr.getKind() === SyntaxKind.Identifier && expr.getText() === 'useTheme';
|
|
251
|
+
}) ||
|
|
252
|
+
importDeclarations.some(imp => {
|
|
253
|
+
const moduleSpecifier = imp.getModuleSpecifierValue();
|
|
254
|
+
return (imp.getNamedImports().some(n => n.getName() === 'ThemeProvider') ||
|
|
255
|
+
/theme-provider/i.test(moduleSpecifier));
|
|
256
|
+
}) ||
|
|
257
|
+
// Check for theme- classes in Tailwind (would need to check className attributes)
|
|
258
|
+
source.getDescendantsOfKind(SyntaxKind.JsxAttribute).some(attr => {
|
|
259
|
+
const jsxAttr = attr;
|
|
260
|
+
const attrName = jsxAttr.getNameNode().getText();
|
|
261
|
+
if (attrName === 'className' || attrName === 'class') {
|
|
262
|
+
const initializer = jsxAttr.getInitializer();
|
|
263
|
+
if (initializer) {
|
|
264
|
+
const text = initializer.getText();
|
|
265
|
+
return /theme-/.test(text) || /dark:/.test(text);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return false;
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// If AST traversal fails, check only imports
|
|
273
|
+
usesTheme = importDeclarations.some(imp => {
|
|
274
|
+
const moduleSpecifier = imp.getModuleSpecifierValue();
|
|
275
|
+
return (imp.getNamedImports().some(n => n.getName() === 'ThemeProvider') ||
|
|
276
|
+
/theme-provider/i.test(moduleSpecifier));
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// Check for icon usage (lucide-react is common with ShadCN) using AST
|
|
280
|
+
let usesIcons = false;
|
|
281
|
+
try {
|
|
282
|
+
usesIcons = importDeclarations.some(imp => {
|
|
283
|
+
const moduleSpecifier = imp.getModuleSpecifierValue();
|
|
284
|
+
return moduleSpecifier === 'lucide-react' ||
|
|
285
|
+
moduleSpecifier === '@radix-ui/react-icons' ||
|
|
286
|
+
moduleSpecifier.startsWith('react-icons');
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// If AST traversal fails, skip icon detection
|
|
291
|
+
}
|
|
292
|
+
// Calculate component density based on number of distinct ShadCN components in the file
|
|
293
|
+
// This is the count of unique components, not total JSX usage count
|
|
294
|
+
let componentDensity;
|
|
295
|
+
const distinctComponentCount = componentCounts.size;
|
|
296
|
+
if (distinctComponentCount > 0) {
|
|
297
|
+
if (distinctComponentCount <= 3)
|
|
298
|
+
componentDensity = 'low';
|
|
299
|
+
else if (distinctComponentCount <= 8)
|
|
300
|
+
componentDensity = 'medium';
|
|
301
|
+
else
|
|
302
|
+
componentDensity = 'high';
|
|
303
|
+
}
|
|
304
|
+
// Convert variants Map to Record with sorted arrays
|
|
305
|
+
const variantsRecord = {};
|
|
306
|
+
variants.forEach((variantSet, componentType) => {
|
|
307
|
+
variantsRecord[componentType] = Array.from(variantSet).sort();
|
|
308
|
+
});
|
|
309
|
+
// Sort components by usage count (descending), then alphabetically, then take top 30
|
|
310
|
+
const components = Array.from(componentCounts.entries())
|
|
311
|
+
.sort((a, b) => {
|
|
312
|
+
// First sort by count (descending)
|
|
313
|
+
if (b[1] !== a[1]) {
|
|
314
|
+
return b[1] - a[1];
|
|
315
|
+
}
|
|
316
|
+
// Then alphabetically
|
|
317
|
+
return a[0].localeCompare(b[0]);
|
|
318
|
+
})
|
|
319
|
+
.slice(0, 30)
|
|
320
|
+
.map(([name]) => name);
|
|
321
|
+
return {
|
|
322
|
+
components, // Top 30 components by usage frequency
|
|
323
|
+
variants: variantsRecord,
|
|
324
|
+
sizes: Array.from(sizes).sort(),
|
|
325
|
+
features: {
|
|
326
|
+
...(usesForm && { usesForm: true }),
|
|
327
|
+
...(usesTheme && { usesTheme: true }),
|
|
328
|
+
...(usesIcons && { usesIcons: true }),
|
|
329
|
+
...(componentDensity && { componentDensity }),
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
debugError('shadcn', 'extractShadcnUI', {
|
|
335
|
+
error: error instanceof Error ? error.message : String(error),
|
|
336
|
+
});
|
|
337
|
+
return {
|
|
338
|
+
components: [],
|
|
339
|
+
variants: {},
|
|
340
|
+
sizes: [],
|
|
341
|
+
features: {},
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=shadcn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadcn.js","sourceRoot":"","sources":["../../../src/core/styleExtractor/shadcn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styleExtractor.d.ts","sourceRoot":"","sources":["../../../src/core/styleExtractor/styleExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"styleExtractor.d.ts","sourceRoot":"","sources":["../../../src/core/styleExtractor/styleExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAA4B,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAC;AAW9E;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA4DnH"}
|