@sudosandwich/limps-headless 0.1.3
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/LICENSE +21 -0
- package/README.md +339 -0
- package/bin/limps-headless +2 -0
- package/dist/analysis/index.d.ts +6 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +6 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/ir/build-ir.d.ts +10 -0
- package/dist/analysis/ir/build-ir.d.ts.map +1 -0
- package/dist/analysis/ir/build-ir.js +102 -0
- package/dist/analysis/ir/build-ir.js.map +1 -0
- package/dist/analysis/ir/types.d.ts +44 -0
- package/dist/analysis/ir/types.d.ts.map +1 -0
- package/dist/analysis/ir/types.js +2 -0
- package/dist/analysis/ir/types.js.map +1 -0
- package/dist/analysis/module-graph.d.ts +20 -0
- package/dist/analysis/module-graph.d.ts.map +1 -0
- package/dist/analysis/module-graph.js +104 -0
- package/dist/analysis/module-graph.js.map +1 -0
- package/dist/analysis/passes/behavior-evidence.d.ts +9 -0
- package/dist/analysis/passes/behavior-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/behavior-evidence.js +80 -0
- package/dist/analysis/passes/behavior-evidence.js.map +1 -0
- package/dist/analysis/passes/import-evidence.d.ts +3 -0
- package/dist/analysis/passes/import-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/import-evidence.js +58 -0
- package/dist/analysis/passes/import-evidence.js.map +1 -0
- package/dist/analysis/passes/index.d.ts +15 -0
- package/dist/analysis/passes/index.d.ts.map +1 -0
- package/dist/analysis/passes/index.js +21 -0
- package/dist/analysis/passes/index.js.map +1 -0
- package/dist/analysis/passes/jsx-evidence.d.ts +8 -0
- package/dist/analysis/passes/jsx-evidence.d.ts.map +1 -0
- package/dist/analysis/passes/jsx-evidence.js +149 -0
- package/dist/analysis/passes/jsx-evidence.js.map +1 -0
- package/dist/analysis/ts-program.d.ts +12 -0
- package/dist/analysis/ts-program.d.ts.map +1 -0
- package/dist/analysis/ts-program.js +59 -0
- package/dist/analysis/ts-program.js.map +1 -0
- package/dist/analyzer/disambiguator.d.ts +20 -0
- package/dist/analyzer/disambiguator.d.ts.map +1 -0
- package/dist/analyzer/disambiguator.js +83 -0
- package/dist/analyzer/disambiguator.js.map +1 -0
- package/dist/analyzer/index.d.ts +26 -0
- package/dist/analyzer/index.d.ts.map +1 -0
- package/dist/analyzer/index.js +68 -0
- package/dist/analyzer/index.js.map +1 -0
- package/dist/analyzer/parser.d.ts +23 -0
- package/dist/analyzer/parser.d.ts.map +1 -0
- package/dist/analyzer/parser.js +58 -0
- package/dist/analyzer/parser.js.map +1 -0
- package/dist/analyzer/patterns.d.ts +42 -0
- package/dist/analyzer/patterns.d.ts.map +1 -0
- package/dist/analyzer/patterns.js +206 -0
- package/dist/analyzer/patterns.js.map +1 -0
- package/dist/analyzer/props.d.ts +16 -0
- package/dist/analyzer/props.d.ts.map +1 -0
- package/dist/analyzer/props.js +235 -0
- package/dist/analyzer/props.js.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts +10 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.d.ts.map +1 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js +26 -0
- package/dist/analyzer/rules/checkbox-switch-toggle.js.map +1 -0
- package/dist/analyzer/rules/dialog-popover.d.ts +10 -0
- package/dist/analyzer/rules/dialog-popover.d.ts.map +1 -0
- package/dist/analyzer/rules/dialog-popover.js +25 -0
- package/dist/analyzer/rules/dialog-popover.js.map +1 -0
- package/dist/analyzer/rules/index.d.ts +24 -0
- package/dist/analyzer/rules/index.d.ts.map +1 -0
- package/dist/analyzer/rules/index.js +51 -0
- package/dist/analyzer/rules/index.js.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts +10 -0
- package/dist/analyzer/rules/tooltip-hovercard.d.ts.map +1 -0
- package/dist/analyzer/rules/tooltip-hovercard.js +21 -0
- package/dist/analyzer/rules/tooltip-hovercard.js.map +1 -0
- package/dist/analyzer/scorer.d.ts +12 -0
- package/dist/analyzer/scorer.d.ts.map +1 -0
- package/dist/analyzer/scorer.js +171 -0
- package/dist/analyzer/scorer.js.map +1 -0
- package/dist/analyzer/weights.d.ts +28 -0
- package/dist/analyzer/weights.d.ts.map +1 -0
- package/dist/analyzer/weights.js +40 -0
- package/dist/analyzer/weights.js.map +1 -0
- package/dist/audit/analyses/migration.d.ts +42 -0
- package/dist/audit/analyses/migration.d.ts.map +1 -0
- package/dist/audit/analyses/migration.js +91 -0
- package/dist/audit/analyses/migration.js.map +1 -0
- package/dist/audit/discover-components.d.ts +7 -0
- package/dist/audit/discover-components.d.ts.map +1 -0
- package/dist/audit/discover-components.js +486 -0
- package/dist/audit/discover-components.js.map +1 -0
- package/dist/audit/generate-report.d.ts +28 -0
- package/dist/audit/generate-report.d.ts.map +1 -0
- package/dist/audit/generate-report.js +333 -0
- package/dist/audit/generate-report.js.map +1 -0
- package/dist/audit/index.d.ts +8 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +8 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/run-audit.d.ts +33 -0
- package/dist/audit/run-audit.d.ts.map +1 -0
- package/dist/audit/run-audit.js +287 -0
- package/dist/audit/run-audit.js.map +1 -0
- package/dist/audit/types.d.ts +135 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +5 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/cache/index.d.ts +110 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +176 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/storage.d.ts +73 -0
- package/dist/cache/storage.d.ts.map +1 -0
- package/dist/cache/storage.js +176 -0
- package/dist/cache/storage.js.map +1 -0
- package/dist/cache/ttl.d.ts +62 -0
- package/dist/cache/ttl.d.ts.map +1 -0
- package/dist/cache/ttl.js +96 -0
- package/dist/cache/ttl.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +6 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +43 -0
- package/dist/cli/commands/analyze.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +6 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +73 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/check-updates.d.ts +6 -0
- package/dist/cli/commands/check-updates.d.ts.map +1 -0
- package/dist/cli/commands/check-updates.js +34 -0
- package/dist/cli/commands/check-updates.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +7 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +48 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/extract.d.ts +6 -0
- package/dist/cli/commands/extract.d.ts.map +1 -0
- package/dist/cli/commands/extract.js +42 -0
- package/dist/cli/commands/extract.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +33 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/flags.d.ts +9 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +22 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/differ/hints.d.ts +21 -0
- package/dist/differ/hints.d.ts.map +1 -0
- package/dist/differ/hints.js +105 -0
- package/dist/differ/hints.js.map +1 -0
- package/dist/differ/index.d.ts +25 -0
- package/dist/differ/index.d.ts.map +1 -0
- package/dist/differ/index.js +115 -0
- package/dist/differ/index.js.map +1 -0
- package/dist/differ/props.d.ts +36 -0
- package/dist/differ/props.d.ts.map +1 -0
- package/dist/differ/props.js +210 -0
- package/dist/differ/props.js.map +1 -0
- package/dist/differ/severity.d.ts +31 -0
- package/dist/differ/severity.d.ts.map +1 -0
- package/dist/differ/severity.js +65 -0
- package/dist/differ/severity.js.map +1 -0
- package/dist/differ/types.d.ts +109 -0
- package/dist/differ/types.d.ts.map +1 -0
- package/dist/differ/types.js +5 -0
- package/dist/differ/types.js.map +1 -0
- package/dist/extractor/classifier.d.ts +30 -0
- package/dist/extractor/classifier.d.ts.map +1 -0
- package/dist/extractor/classifier.js +150 -0
- package/dist/extractor/classifier.js.map +1 -0
- package/dist/extractor/forward-ref.d.ts +28 -0
- package/dist/extractor/forward-ref.d.ts.map +1 -0
- package/dist/extractor/forward-ref.js +134 -0
- package/dist/extractor/forward-ref.js.map +1 -0
- package/dist/extractor/index.d.ts +25 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +43 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/interface.d.ts +40 -0
- package/dist/extractor/interface.d.ts.map +1 -0
- package/dist/extractor/interface.js +233 -0
- package/dist/extractor/interface.js.map +1 -0
- package/dist/extractor/jsdoc.d.ts +24 -0
- package/dist/extractor/jsdoc.d.ts.map +1 -0
- package/dist/extractor/jsdoc.js +74 -0
- package/dist/extractor/jsdoc.js.map +1 -0
- package/dist/extractor/project.d.ts +17 -0
- package/dist/extractor/project.d.ts.map +1 -0
- package/dist/extractor/project.js +33 -0
- package/dist/extractor/project.js.map +1 -0
- package/dist/extractor/props.d.ts +24 -0
- package/dist/extractor/props.d.ts.map +1 -0
- package/dist/extractor/props.js +78 -0
- package/dist/extractor/props.js.map +1 -0
- package/dist/extractor/type-resolver.d.ts +32 -0
- package/dist/extractor/type-resolver.d.ts.map +1 -0
- package/dist/extractor/type-resolver.js +129 -0
- package/dist/extractor/type-resolver.js.map +1 -0
- package/dist/fetcher/index.d.ts +7 -0
- package/dist/fetcher/index.d.ts.map +1 -0
- package/dist/fetcher/index.js +7 -0
- package/dist/fetcher/index.js.map +1 -0
- package/dist/fetcher/npm-registry.d.ts +45 -0
- package/dist/fetcher/npm-registry.d.ts.map +1 -0
- package/dist/fetcher/npm-registry.js +217 -0
- package/dist/fetcher/npm-registry.js.map +1 -0
- package/dist/fetcher/unified-package.d.ts +27 -0
- package/dist/fetcher/unified-package.d.ts.map +1 -0
- package/dist/fetcher/unified-package.js +99 -0
- package/dist/fetcher/unified-package.js.map +1 -0
- package/dist/fetcher/unpkg.d.ts +20 -0
- package/dist/fetcher/unpkg.d.ts.map +1 -0
- package/dist/fetcher/unpkg.js +58 -0
- package/dist/fetcher/unpkg.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base.d.ts +10 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +80 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/interface.d.ts +56 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +5 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/radix-backend.d.ts +11 -0
- package/dist/providers/radix-backend.d.ts.map +1 -0
- package/dist/providers/radix-backend.js +107 -0
- package/dist/providers/radix-backend.js.map +1 -0
- package/dist/providers/radix.d.ts +6 -0
- package/dist/providers/radix.d.ts.map +1 -0
- package/dist/providers/radix.js +21 -0
- package/dist/providers/radix.js.map +1 -0
- package/dist/providers/registry.d.ts +17 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +55 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/rules/engine.d.ts +4 -0
- package/dist/rules/engine.d.ts.map +1 -0
- package/dist/rules/engine.js +37 -0
- package/dist/rules/engine.js.map +1 -0
- package/dist/rules/index.d.ts +6 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/predicates.d.ts +10 -0
- package/dist/rules/predicates.d.ts.map +1 -0
- package/dist/rules/predicates.js +93 -0
- package/dist/rules/predicates.js.map +1 -0
- package/dist/rules/rulesets/base-ui.d.ts +3 -0
- package/dist/rules/rulesets/base-ui.d.ts.map +1 -0
- package/dist/rules/rulesets/base-ui.js +65 -0
- package/dist/rules/rulesets/base-ui.js.map +1 -0
- package/dist/rules/rulesets/radix-legacy.d.ts +3 -0
- package/dist/rules/rulesets/radix-legacy.d.ts.map +1 -0
- package/dist/rules/rulesets/radix-legacy.js +38 -0
- package/dist/rules/rulesets/radix-legacy.js.map +1 -0
- package/dist/rules/types.d.ts +57 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +2 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/signatures/disambiguation.d.ts +30 -0
- package/dist/signatures/disambiguation.d.ts.map +1 -0
- package/dist/signatures/disambiguation.js +99 -0
- package/dist/signatures/disambiguation.js.map +1 -0
- package/dist/signatures/distinguishing.d.ts +29 -0
- package/dist/signatures/distinguishing.d.ts.map +1 -0
- package/dist/signatures/distinguishing.js +108 -0
- package/dist/signatures/distinguishing.js.map +1 -0
- package/dist/signatures/generator.d.ts +20 -0
- package/dist/signatures/generator.d.ts.map +1 -0
- package/dist/signatures/generator.js +147 -0
- package/dist/signatures/generator.js.map +1 -0
- package/dist/signatures/index.d.ts +10 -0
- package/dist/signatures/index.d.ts.map +1 -0
- package/dist/signatures/index.js +10 -0
- package/dist/signatures/index.js.map +1 -0
- package/dist/signatures/inference.d.ts +37 -0
- package/dist/signatures/inference.d.ts.map +1 -0
- package/dist/signatures/inference.js +132 -0
- package/dist/signatures/inference.js.map +1 -0
- package/dist/tools/analyze-component.d.ts +41 -0
- package/dist/tools/analyze-component.d.ts.map +1 -0
- package/dist/tools/analyze-component.js +274 -0
- package/dist/tools/analyze-component.js.map +1 -0
- package/dist/tools/check-updates.d.ts +33 -0
- package/dist/tools/check-updates.d.ts.map +1 -0
- package/dist/tools/check-updates.js +81 -0
- package/dist/tools/check-updates.js.map +1 -0
- package/dist/tools/diff-versions.d.ts +39 -0
- package/dist/tools/diff-versions.d.ts.map +1 -0
- package/dist/tools/diff-versions.js +78 -0
- package/dist/tools/diff-versions.js.map +1 -0
- package/dist/tools/extract-primitive.d.ts +50 -0
- package/dist/tools/extract-primitive.d.ts.map +1 -0
- package/dist/tools/extract-primitive.js +145 -0
- package/dist/tools/extract-primitive.js.map +1 -0
- package/dist/tools/generate-report.d.ts +29 -0
- package/dist/tools/generate-report.d.ts.map +1 -0
- package/dist/tools/generate-report.js +36 -0
- package/dist/tools/generate-report.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-primitives.d.ts +41 -0
- package/dist/tools/list-primitives.d.ts.map +1 -0
- package/dist/tools/list-primitives.js +74 -0
- package/dist/tools/list-primitives.js.map +1 -0
- package/dist/tools/run-audit.d.ts +43 -0
- package/dist/tools/run-audit.d.ts.map +1 -0
- package/dist/tools/run-audit.js +60 -0
- package/dist/tools/run-audit.js.map +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/docs/architecture.md +88 -0
- package/docs/providers.md +47 -0
- package/docs/tools.md +143 -0
- package/package.json +59 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distinguishing props for Radix primitives.
|
|
3
|
+
* Knowledge base for identifying specific primitives by their unique props.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Props that distinguish this primitive from others.
|
|
7
|
+
* These are props or sub-components that are characteristic of a specific primitive.
|
|
8
|
+
*/
|
|
9
|
+
const DISTINGUISHING_PROPS = {
|
|
10
|
+
// Overlays/Modals
|
|
11
|
+
Dialog: ['modal', 'Overlay'],
|
|
12
|
+
AlertDialog: ['Action', 'Cancel'],
|
|
13
|
+
Popover: ['side', 'align', 'sideOffset', 'alignOffset'],
|
|
14
|
+
Tooltip: ['delayDuration', 'skipDelayDuration', 'disableHoverableContent'],
|
|
15
|
+
HoverCard: ['openDelay', 'closeDelay'],
|
|
16
|
+
// Menus
|
|
17
|
+
DropdownMenu: ['Sub', 'SubTrigger', 'SubContent', 'RadioGroup', 'CheckboxItem'],
|
|
18
|
+
ContextMenu: ['Sub', 'SubTrigger', 'SubContent', 'onOpenChange'],
|
|
19
|
+
Menubar: ['Menu', 'Sub', 'SubTrigger', 'SubContent'],
|
|
20
|
+
NavigationMenu: ['Viewport', 'Indicator', 'List', 'Link'],
|
|
21
|
+
// Selection
|
|
22
|
+
Select: ['Value', 'Viewport', 'ScrollUpButton', 'ScrollDownButton', 'ItemText'],
|
|
23
|
+
Combobox: ['Input', 'Empty', 'Group', 'ItemIndicator'],
|
|
24
|
+
// Structure
|
|
25
|
+
Tabs: ['List', 'orientation'],
|
|
26
|
+
Accordion: ['Item', 'Header', 'collapsible', 'type'],
|
|
27
|
+
Collapsible: ['collapsible'],
|
|
28
|
+
// Controls
|
|
29
|
+
Slider: ['min', 'max', 'step', 'Range', 'Thumb', 'Track'],
|
|
30
|
+
Switch: ['checked', 'Thumb'],
|
|
31
|
+
Checkbox: ['checked', 'Indicator'],
|
|
32
|
+
RadioGroup: ['Item', 'Indicator', 'orientation'],
|
|
33
|
+
ToggleGroup: ['type', 'rovingFocus'],
|
|
34
|
+
Toggle: ['pressed'],
|
|
35
|
+
// Display
|
|
36
|
+
Avatar: ['Image', 'Fallback'],
|
|
37
|
+
Progress: ['value', 'max', 'Indicator'],
|
|
38
|
+
AspectRatio: ['ratio'],
|
|
39
|
+
Separator: ['orientation', 'decorative'],
|
|
40
|
+
// Form
|
|
41
|
+
Label: ['htmlFor'],
|
|
42
|
+
Form: ['Field', 'Label', 'Control', 'Message', 'ValidityState'],
|
|
43
|
+
// Other
|
|
44
|
+
Toast: ['Provider', 'Viewport', 'Action', 'Close', 'Title', 'Description'],
|
|
45
|
+
ScrollArea: ['Scrollbar', 'Thumb', 'Corner'],
|
|
46
|
+
Toolbar: ['Button', 'Link', 'ToggleGroup', 'Separator'],
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Props that indicate this is NOT a specific primitive.
|
|
50
|
+
* Useful for disambiguation when primitives have similar APIs.
|
|
51
|
+
*/
|
|
52
|
+
const ANTI_PATTERN_PROPS = {
|
|
53
|
+
// Dialog doesn't have these (AlertDialog does)
|
|
54
|
+
Dialog: ['Action', 'Cancel'],
|
|
55
|
+
// AlertDialog doesn't have modal prop (Dialog does)
|
|
56
|
+
AlertDialog: ['modal'],
|
|
57
|
+
// Popover doesn't have delay props (Tooltip/HoverCard do)
|
|
58
|
+
Popover: ['delayDuration', 'openDelay', 'closeDelay'],
|
|
59
|
+
// Tooltip doesn't have openDelay/closeDelay (HoverCard does)
|
|
60
|
+
Tooltip: ['openDelay', 'closeDelay'],
|
|
61
|
+
// HoverCard doesn't have delayDuration (Tooltip does)
|
|
62
|
+
HoverCard: ['delayDuration', 'skipDelayDuration'],
|
|
63
|
+
// Select doesn't have Sub/SubTrigger (DropdownMenu does)
|
|
64
|
+
Select: ['Sub', 'SubTrigger', 'SubContent', 'CheckboxItem'],
|
|
65
|
+
// DropdownMenu doesn't have Value/Viewport (Select does)
|
|
66
|
+
DropdownMenu: ['Value', 'Viewport', 'ScrollUpButton', 'ItemText'],
|
|
67
|
+
// Checkbox doesn't have Thumb (Switch does)
|
|
68
|
+
Checkbox: ['Thumb'],
|
|
69
|
+
// Switch doesn't have Indicator with checkmark (Checkbox does)
|
|
70
|
+
Switch: ['Indicator'],
|
|
71
|
+
// RadioGroup doesn't have 'type' prop (ToggleGroup does)
|
|
72
|
+
RadioGroup: ['type'],
|
|
73
|
+
// ToggleGroup doesn't have 'Item' requiring 'value' selection
|
|
74
|
+
ToggleGroup: [],
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Get the distinguishing props for a primitive.
|
|
78
|
+
* @param primitiveName - Name of the Radix primitive
|
|
79
|
+
* @returns Array of prop/sub-component names that distinguish this primitive
|
|
80
|
+
*/
|
|
81
|
+
export function getDistinguishingProps(primitiveName) {
|
|
82
|
+
return DISTINGUISHING_PROPS[primitiveName] || [];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get the anti-pattern props for a primitive.
|
|
86
|
+
* These props indicate the component is NOT this primitive.
|
|
87
|
+
* @param primitiveName - Name of the Radix primitive
|
|
88
|
+
* @returns Array of prop names that indicate NOT this primitive
|
|
89
|
+
*/
|
|
90
|
+
export function getAntiPatternProps(primitiveName) {
|
|
91
|
+
return ANTI_PATTERN_PROPS[primitiveName] || [];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get all known primitive names.
|
|
95
|
+
* @returns Array of all primitive names in the knowledge base
|
|
96
|
+
*/
|
|
97
|
+
export function getKnownPrimitives() {
|
|
98
|
+
return Object.keys(DISTINGUISHING_PROPS);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Check if a primitive name is known in the knowledge base.
|
|
102
|
+
* @param primitiveName - Name to check
|
|
103
|
+
* @returns True if the primitive is known
|
|
104
|
+
*/
|
|
105
|
+
export function isKnownPrimitive(primitiveName) {
|
|
106
|
+
return primitiveName in DISTINGUISHING_PROPS;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=distinguishing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distinguishing.js","sourceRoot":"","sources":["../../src/signatures/distinguishing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main signature generator for Radix primitives.
|
|
3
|
+
* Combines inference, distinguishing, and disambiguation to create BehaviorSignature.
|
|
4
|
+
*/
|
|
5
|
+
import type { ExtractedPrimitive, BehaviorSignature } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate a BehaviorSignature from an ExtractedPrimitive.
|
|
8
|
+
* This is the main entry point for signature generation.
|
|
9
|
+
*
|
|
10
|
+
* @param extracted - The extracted primitive data
|
|
11
|
+
* @returns The generated behavior signature
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateSignature(extracted: ExtractedPrimitive): BehaviorSignature;
|
|
14
|
+
/**
|
|
15
|
+
* Generate signatures for multiple primitives.
|
|
16
|
+
* @param extractedList - Array of extracted primitives
|
|
17
|
+
* @returns Array of behavior signatures
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateSignatures(extractedList: ExtractedPrimitive[]): BehaviorSignature[];
|
|
20
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/signatures/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAqH3B;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,GAAG,iBAAiB,CAuDlF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,kBAAkB,EAAE,GAClC,iBAAiB,EAAE,CAErB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main signature generator for Radix primitives.
|
|
3
|
+
* Combines inference, distinguishing, and disambiguation to create BehaviorSignature.
|
|
4
|
+
*/
|
|
5
|
+
import { inferStatePattern, inferCompositionPattern, inferRenderingPattern, } from './inference.js';
|
|
6
|
+
import { getDistinguishingProps, getAntiPatternProps } from './distinguishing.js';
|
|
7
|
+
import { getSimilarPrimitives, getDisambiguationRule } from './disambiguation.js';
|
|
8
|
+
/**
|
|
9
|
+
* Patterns for inferring sub-component roles from names.
|
|
10
|
+
*/
|
|
11
|
+
const ROLE_PATTERNS = {
|
|
12
|
+
trigger: [/^Trigger$/i, /Trigger$/i],
|
|
13
|
+
content: [/^Content$/i, /Content$/i, /^Portal$/i],
|
|
14
|
+
overlay: [/^Overlay$/i, /^Backdrop$/i],
|
|
15
|
+
item: [/^Item$/i, /Item$/i, /^Option$/i],
|
|
16
|
+
indicator: [/^Indicator$/i, /^Thumb$/i, /^Range$/i],
|
|
17
|
+
other: [], // Default fallback
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Infer the role of a sub-component based on its name.
|
|
21
|
+
* @param componentName - Name of the sub-component
|
|
22
|
+
* @returns The inferred role
|
|
23
|
+
*/
|
|
24
|
+
function inferSubComponentRole(componentName) {
|
|
25
|
+
// Check each role's patterns in priority order
|
|
26
|
+
const roleOrder = [
|
|
27
|
+
'trigger',
|
|
28
|
+
'content',
|
|
29
|
+
'overlay',
|
|
30
|
+
'item',
|
|
31
|
+
'indicator',
|
|
32
|
+
];
|
|
33
|
+
for (const role of roleOrder) {
|
|
34
|
+
const patterns = ROLE_PATTERNS[role];
|
|
35
|
+
if (patterns.some((pattern) => pattern.test(componentName))) {
|
|
36
|
+
return role;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return 'other';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Determine if a sub-component is required based on its name and props.
|
|
43
|
+
* @param subComponent - The sub-component definition
|
|
44
|
+
* @param primitiveName - The primitive name for context
|
|
45
|
+
* @returns True if the component is required
|
|
46
|
+
*/
|
|
47
|
+
function isSubComponentRequired(subComponent, primitiveName) {
|
|
48
|
+
const name = subComponent.name;
|
|
49
|
+
// Root is always required
|
|
50
|
+
if (name === 'Root') {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
// Trigger is usually required for interactive primitives
|
|
54
|
+
const interactivePrimitives = [
|
|
55
|
+
'Dialog',
|
|
56
|
+
'AlertDialog',
|
|
57
|
+
'Popover',
|
|
58
|
+
'Tooltip',
|
|
59
|
+
'HoverCard',
|
|
60
|
+
'DropdownMenu',
|
|
61
|
+
'ContextMenu',
|
|
62
|
+
'Select',
|
|
63
|
+
'Collapsible',
|
|
64
|
+
];
|
|
65
|
+
if (name === 'Trigger' && interactivePrimitives.includes(primitiveName)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
// Content is usually required for compound primitives
|
|
69
|
+
const contentRequiredPrimitives = [
|
|
70
|
+
'Dialog',
|
|
71
|
+
'AlertDialog',
|
|
72
|
+
'Popover',
|
|
73
|
+
'Tooltip',
|
|
74
|
+
'HoverCard',
|
|
75
|
+
'DropdownMenu',
|
|
76
|
+
'ContextMenu',
|
|
77
|
+
'Select',
|
|
78
|
+
'Tabs',
|
|
79
|
+
'Accordion',
|
|
80
|
+
'Collapsible',
|
|
81
|
+
];
|
|
82
|
+
if (name === 'Content' && contentRequiredPrimitives.includes(primitiveName)) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
// Item is required for list-based primitives
|
|
86
|
+
if (name === 'Item') {
|
|
87
|
+
const itemRequiredPrimitives = ['RadioGroup', 'ToggleGroup', 'Tabs', 'Accordion'];
|
|
88
|
+
return itemRequiredPrimitives.includes(primitiveName);
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Generate a BehaviorSignature from an ExtractedPrimitive.
|
|
94
|
+
* This is the main entry point for signature generation.
|
|
95
|
+
*
|
|
96
|
+
* @param extracted - The extracted primitive data
|
|
97
|
+
* @returns The generated behavior signature
|
|
98
|
+
*/
|
|
99
|
+
export function generateSignature(extracted) {
|
|
100
|
+
// Get all props from root and sub-components for pattern inference
|
|
101
|
+
const allRootProps = extracted.rootProps;
|
|
102
|
+
// Find the main props (from Root or primary component)
|
|
103
|
+
const rootSubComponent = extracted.subComponents.find((c) => c.name === 'Root');
|
|
104
|
+
const primaryProps = rootSubComponent
|
|
105
|
+
? [...allRootProps, ...rootSubComponent.props]
|
|
106
|
+
: allRootProps;
|
|
107
|
+
// Remove duplicates by prop name
|
|
108
|
+
const uniqueProps = Array.from(new Map(primaryProps.map((p) => [p.name, p])).values());
|
|
109
|
+
// Infer patterns
|
|
110
|
+
const statePattern = inferStatePattern(uniqueProps);
|
|
111
|
+
const compositionPattern = inferCompositionPattern(extracted.subComponents);
|
|
112
|
+
const renderingPattern = inferRenderingPattern(extracted.subComponents, uniqueProps);
|
|
113
|
+
// Get distinguishing characteristics
|
|
114
|
+
const distinguishingProps = getDistinguishingProps(extracted.name);
|
|
115
|
+
const antiPatternProps = getAntiPatternProps(extracted.name);
|
|
116
|
+
// Map sub-components with roles
|
|
117
|
+
const subComponents = extracted.subComponents.map((sc) => ({
|
|
118
|
+
name: sc.name,
|
|
119
|
+
role: inferSubComponentRole(sc.name),
|
|
120
|
+
required: isSubComponentRequired(sc, extracted.name),
|
|
121
|
+
}));
|
|
122
|
+
// Get disambiguation info
|
|
123
|
+
const similarTo = getSimilarPrimitives(extracted.name);
|
|
124
|
+
const disambiguationRule = getDisambiguationRule(extracted.name);
|
|
125
|
+
return {
|
|
126
|
+
primitive: extracted.name,
|
|
127
|
+
package: extracted.package,
|
|
128
|
+
version: extracted.version,
|
|
129
|
+
statePattern,
|
|
130
|
+
compositionPattern,
|
|
131
|
+
renderingPattern,
|
|
132
|
+
distinguishingProps,
|
|
133
|
+
antiPatternProps,
|
|
134
|
+
subComponents,
|
|
135
|
+
similarTo,
|
|
136
|
+
disambiguationRule,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Generate signatures for multiple primitives.
|
|
141
|
+
* @param extractedList - Array of extracted primitives
|
|
142
|
+
* @returns Array of behavior signatures
|
|
143
|
+
*/
|
|
144
|
+
export function generateSignatures(extractedList) {
|
|
145
|
+
return extractedList.map(generateSignature);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/signatures/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signature generation module for Radix primitives.
|
|
3
|
+
*
|
|
4
|
+
* Transforms ExtractedPrimitive data into BehaviorSignature contracts.
|
|
5
|
+
*/
|
|
6
|
+
export { inferStatePattern, inferCompositionPattern, inferRenderingPattern, } from './inference.js';
|
|
7
|
+
export { getDistinguishingProps, getAntiPatternProps, getKnownPrimitives, isKnownPrimitive, } from './distinguishing.js';
|
|
8
|
+
export { getSimilarPrimitives, getDisambiguationRule, getSimilarityGroup, areSimilar, } from './disambiguation.js';
|
|
9
|
+
export { generateSignature, generateSignatures } from './generator.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signatures/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signature generation module for Radix primitives.
|
|
3
|
+
*
|
|
4
|
+
* Transforms ExtractedPrimitive data into BehaviorSignature contracts.
|
|
5
|
+
*/
|
|
6
|
+
export { inferStatePattern, inferCompositionPattern, inferRenderingPattern, } from './inference.js';
|
|
7
|
+
export { getDistinguishingProps, getAntiPatternProps, getKnownPrimitives, isKnownPrimitive, } from './distinguishing.js';
|
|
8
|
+
export { getSimilarPrimitives, getDisambiguationRule, getSimilarityGroup, areSimilar, } from './disambiguation.js';
|
|
9
|
+
export { generateSignature, generateSignatures } from './generator.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatures/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern inference for Radix primitives.
|
|
3
|
+
* Analyzes ExtractedPrimitive data to determine behavioral patterns.
|
|
4
|
+
*/
|
|
5
|
+
import type { PropDefinition, SubComponentDefinition, StatePattern, CompositionPattern, RenderingPattern } from '../types/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Infer the state pattern from root props.
|
|
8
|
+
*
|
|
9
|
+
* State patterns:
|
|
10
|
+
* - binary: Has open/defaultOpen + onOpenChange (Dialog, Popover, Tooltip)
|
|
11
|
+
* - single-value: Has value + onValueChange without array type (Select, RadioGroup)
|
|
12
|
+
* - multi-value: Has value[] + onValueChange (ToggleGroup type="multiple")
|
|
13
|
+
* - range: Has min, max, step props (Slider)
|
|
14
|
+
* - text: Has value as string type + onChange (TextField patterns)
|
|
15
|
+
* - none: No state control props (Separator, AspectRatio)
|
|
16
|
+
*/
|
|
17
|
+
export declare function inferStatePattern(props: PropDefinition[]): StatePattern;
|
|
18
|
+
/**
|
|
19
|
+
* Infer the composition pattern from sub-components.
|
|
20
|
+
*
|
|
21
|
+
* Composition patterns:
|
|
22
|
+
* - monolithic: Single component, no sub-components (Checkbox, Switch)
|
|
23
|
+
* - compound: Root + Trigger + Content pattern, 3+ sub-components
|
|
24
|
+
* - provider: Only provides context, no UI (Direction Provider)
|
|
25
|
+
*/
|
|
26
|
+
export declare function inferCompositionPattern(subComponents: SubComponentDefinition[]): CompositionPattern;
|
|
27
|
+
/**
|
|
28
|
+
* Infer the rendering pattern from sub-components and props.
|
|
29
|
+
*
|
|
30
|
+
* Rendering patterns:
|
|
31
|
+
* - portal: Has Portal sub-component that's always used
|
|
32
|
+
* - portal-conditional: Has Portal that only renders when open
|
|
33
|
+
* - conditional: Shows/hides content based on state (Accordion)
|
|
34
|
+
* - inline: Always renders in place (Checkbox, Radio)
|
|
35
|
+
*/
|
|
36
|
+
export declare function inferRenderingPattern(subComponents: SubComponentDefinition[], props: PropDefinition[]): RenderingPattern;
|
|
37
|
+
//# sourceMappingURL=inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/signatures/inference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,CAyDvE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,sBAAsB,EAAE,GACtC,kBAAkB,CAmCpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,sBAAsB,EAAE,EACvC,KAAK,EAAE,cAAc,EAAE,GACtB,gBAAgB,CA0ClB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern inference for Radix primitives.
|
|
3
|
+
* Analyzes ExtractedPrimitive data to determine behavioral patterns.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Infer the state pattern from root props.
|
|
7
|
+
*
|
|
8
|
+
* State patterns:
|
|
9
|
+
* - binary: Has open/defaultOpen + onOpenChange (Dialog, Popover, Tooltip)
|
|
10
|
+
* - single-value: Has value + onValueChange without array type (Select, RadioGroup)
|
|
11
|
+
* - multi-value: Has value[] + onValueChange (ToggleGroup type="multiple")
|
|
12
|
+
* - range: Has min, max, step props (Slider)
|
|
13
|
+
* - text: Has value as string type + onChange (TextField patterns)
|
|
14
|
+
* - none: No state control props (Separator, AspectRatio)
|
|
15
|
+
*/
|
|
16
|
+
export function inferStatePattern(props) {
|
|
17
|
+
const propNames = new Set(props.map((p) => p.name));
|
|
18
|
+
const propMap = new Map(props.map((p) => [p.name, p]));
|
|
19
|
+
// Check for range pattern (Slider) - most specific first
|
|
20
|
+
if (propNames.has('min') ||
|
|
21
|
+
propNames.has('max') ||
|
|
22
|
+
propNames.has('step') ||
|
|
23
|
+
propNames.has('minStepsBetweenThumbs')) {
|
|
24
|
+
return 'range';
|
|
25
|
+
}
|
|
26
|
+
// Check for binary pattern (Dialog, Popover, Tooltip, etc.)
|
|
27
|
+
const hasBinaryState = (propNames.has('open') || propNames.has('defaultOpen')) &&
|
|
28
|
+
propNames.has('onOpenChange');
|
|
29
|
+
const hasCheckedState = (propNames.has('checked') || propNames.has('defaultChecked')) &&
|
|
30
|
+
propNames.has('onCheckedChange');
|
|
31
|
+
const hasPressedState = (propNames.has('pressed') || propNames.has('defaultPressed')) &&
|
|
32
|
+
propNames.has('onPressedChange');
|
|
33
|
+
if (hasBinaryState || hasCheckedState || hasPressedState) {
|
|
34
|
+
return 'binary';
|
|
35
|
+
}
|
|
36
|
+
// Check for value patterns (Select, RadioGroup, ToggleGroup)
|
|
37
|
+
if (propNames.has('value') ||
|
|
38
|
+
propNames.has('defaultValue') ||
|
|
39
|
+
propNames.has('onValueChange')) {
|
|
40
|
+
const valueProp = propMap.get('value') || propMap.get('defaultValue');
|
|
41
|
+
const valueType = valueProp?.type || '';
|
|
42
|
+
// Multi-value: array type
|
|
43
|
+
if (valueType.includes('[]') || valueType.includes('Array')) {
|
|
44
|
+
return 'multi-value';
|
|
45
|
+
}
|
|
46
|
+
// Text: string type with typical text input patterns
|
|
47
|
+
if (valueType === 'string' &&
|
|
48
|
+
(propNames.has('onChange') || propNames.has('onInput'))) {
|
|
49
|
+
return 'text';
|
|
50
|
+
}
|
|
51
|
+
// Single-value: everything else with value
|
|
52
|
+
return 'single-value';
|
|
53
|
+
}
|
|
54
|
+
// No state control props found
|
|
55
|
+
return 'none';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Infer the composition pattern from sub-components.
|
|
59
|
+
*
|
|
60
|
+
* Composition patterns:
|
|
61
|
+
* - monolithic: Single component, no sub-components (Checkbox, Switch)
|
|
62
|
+
* - compound: Root + Trigger + Content pattern, 3+ sub-components
|
|
63
|
+
* - provider: Only provides context, no UI (Direction Provider)
|
|
64
|
+
*/
|
|
65
|
+
export function inferCompositionPattern(subComponents) {
|
|
66
|
+
const componentNames = new Set(subComponents.map((c) => c.name));
|
|
67
|
+
// Provider pattern: only has Provider or Root with no visual components
|
|
68
|
+
const providerOnlyNames = ['Provider', 'Root'];
|
|
69
|
+
const hasOnlyProviderComponents = subComponents.length <= 1 &&
|
|
70
|
+
subComponents.every((c) => providerOnlyNames.includes(c.name));
|
|
71
|
+
// Check if it looks like a context provider (no UI components)
|
|
72
|
+
if (hasOnlyProviderComponents && subComponents.length === 1) {
|
|
73
|
+
const firstComponent = subComponents[0];
|
|
74
|
+
// If the only component has very few props and they're all context-related
|
|
75
|
+
const hasMinimalProps = firstComponent.props.length <= 3;
|
|
76
|
+
const hasNoVisualProps = !firstComponent.props.some((p) => p.name === 'asChild' || p.name === 'className' || p.name === 'style');
|
|
77
|
+
if (hasMinimalProps && hasNoVisualProps) {
|
|
78
|
+
return 'provider';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Compound pattern: 3+ sub-components or has Trigger/Content pattern
|
|
82
|
+
const hasCompoundPattern = (componentNames.has('Trigger') || componentNames.has('Content')) &&
|
|
83
|
+
subComponents.length >= 2;
|
|
84
|
+
const hasMultipleComponents = subComponents.length >= 3;
|
|
85
|
+
if (hasCompoundPattern || hasMultipleComponents) {
|
|
86
|
+
return 'compound';
|
|
87
|
+
}
|
|
88
|
+
// Monolithic: single component or very few sub-components
|
|
89
|
+
return 'monolithic';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Infer the rendering pattern from sub-components and props.
|
|
93
|
+
*
|
|
94
|
+
* Rendering patterns:
|
|
95
|
+
* - portal: Has Portal sub-component that's always used
|
|
96
|
+
* - portal-conditional: Has Portal that only renders when open
|
|
97
|
+
* - conditional: Shows/hides content based on state (Accordion)
|
|
98
|
+
* - inline: Always renders in place (Checkbox, Radio)
|
|
99
|
+
*/
|
|
100
|
+
export function inferRenderingPattern(subComponents, props) {
|
|
101
|
+
const componentNames = new Set(subComponents.map((c) => c.name));
|
|
102
|
+
const propNames = new Set(props.map((p) => p.name));
|
|
103
|
+
// Check for Portal sub-component
|
|
104
|
+
const hasPortal = componentNames.has('Portal');
|
|
105
|
+
// Check for overlay components (suggest portaling)
|
|
106
|
+
const hasOverlay = componentNames.has('Overlay') || componentNames.has('Backdrop');
|
|
107
|
+
// Check for state-dependent rendering
|
|
108
|
+
const hasOpenState = propNames.has('open') ||
|
|
109
|
+
propNames.has('defaultOpen') ||
|
|
110
|
+
propNames.has('onOpenChange');
|
|
111
|
+
const hasForceMount = [...subComponents].some((c) => c.props.some((p) => p.name === 'forceMount'));
|
|
112
|
+
// Portal pattern
|
|
113
|
+
if (hasPortal) {
|
|
114
|
+
// Portal-conditional: has open state (renders portal when open)
|
|
115
|
+
if (hasOpenState) {
|
|
116
|
+
return 'portal-conditional';
|
|
117
|
+
}
|
|
118
|
+
// Portal: always portals (like Toast)
|
|
119
|
+
return 'portal';
|
|
120
|
+
}
|
|
121
|
+
// Has overlay suggests portal behavior even without explicit Portal component
|
|
122
|
+
if (hasOverlay && hasOpenState) {
|
|
123
|
+
return 'portal-conditional';
|
|
124
|
+
}
|
|
125
|
+
// Conditional pattern: has forceMount prop or open state without portal
|
|
126
|
+
if (hasForceMount || hasOpenState) {
|
|
127
|
+
return 'conditional';
|
|
128
|
+
}
|
|
129
|
+
// Default to inline
|
|
130
|
+
return 'inline';
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/signatures/inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool for analyzing local React components against Radix signatures.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { ExtensionTool } from '@sudosandwich/limps/extensions';
|
|
6
|
+
/**
|
|
7
|
+
* Input schema for headless_analyze_component tool.
|
|
8
|
+
*/
|
|
9
|
+
export declare const analyzeComponentInputSchema: z.ZodObject<{
|
|
10
|
+
filePath: z.ZodString;
|
|
11
|
+
radixVersion: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
12
|
+
threshold: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
13
|
+
provider: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
14
|
+
ruleset: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
"radix-legacy": "radix-legacy";
|
|
16
|
+
both: "both";
|
|
17
|
+
"base-ui": "base-ui";
|
|
18
|
+
}>>>;
|
|
19
|
+
evidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
20
|
+
summary: "summary";
|
|
21
|
+
verbose: "verbose";
|
|
22
|
+
}>>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type AnalyzeComponentInput = z.infer<typeof analyzeComponentInputSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* Handler for the headless_analyze_component tool.
|
|
27
|
+
*
|
|
28
|
+
* @param input - Tool input parameters
|
|
29
|
+
* @returns Analysis result with recommendation and matches
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleAnalyzeComponent(input: unknown): Promise<{
|
|
32
|
+
content: {
|
|
33
|
+
type: 'text';
|
|
34
|
+
text: string;
|
|
35
|
+
}[];
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* MCP tool definition for analyzing a React component.
|
|
39
|
+
*/
|
|
40
|
+
export declare const analyzeComponentTool: ExtensionTool;
|
|
41
|
+
//# sourceMappingURL=analyze-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-component.d.ts","sourceRoot":"","sources":["../../src/tools/analyze-component.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AASpE;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBA2BtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAoEhF;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CA6KxD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAMlC,CAAC"}
|