Fix all validation errors - add missing component definitions

Fixed all "Unknown component type" validation errors by:

1. Restored Card sub-components (CardHeader, CardTitle, CardDescription, CardContent, CardFooter)
   - Restored src/components/ui/card.tsx with all sub-components
   - Created JSON definitions for all 5 Card sub-components

2. Restored Tabs sub-components (TabsList, TabsTrigger, TabsContent)
   - Restored src/components/ui/tabs.tsx with all sub-components
   - Created JSON definitions for all 3 Tabs sub-components

3. Added 20 missing custom page components
   - Created JSON wrappers for all custom page components
   - AtomicLibraryShowcase, CodeEditor, ComponentTreeBuilder, etc.
   - All components properly reference their TypeScript implementations

4. Updated registry system
   - Enhanced update-registry-from-json.ts to support 'custom' source
   - Added components directory scanning
   - Registry now includes all 342 components

Results:
-  All "Unknown component type" errors resolved
-  Registry updated: 322 → 342 components (+20)
-  28 new JSON files created (8 UI sub-components + 20 custom components)
- ⚠️ Remaining validation errors are pre-existing schema format issues in page definitions (unrelated to component conversion)

Registry Statistics:
- Total components: 342
- JSON compatible: 119
- By source: atoms (142), ui (65), molecules (45), icons (38), custom (20), organisms (16), wrappers (10), primitive (6)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 19:59:10 +00:00
parent 3864fd247a
commit 043eb427d3
33 changed files with 1012 additions and 14 deletions
@@ -0,0 +1,10 @@
{
"type": "AtomicLibraryShowcase",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/AtomicLibraryShowcase",
"export": "AtomicLibraryShowcase"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "CodeEditor",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/CodeEditor",
"export": "CodeEditor"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "ComponentTreeBuilder",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/ComponentTreeBuilder",
"export": "ComponentTreeBuilder"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "ComponentTreeManager",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/ComponentTreeManager",
"export": "ComponentTreeManager"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "ConflictResolutionPage",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/ConflictResolutionPage",
"export": "ConflictResolutionPage"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "DockerBuildDebugger",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/DockerBuildDebugger",
"export": "DockerBuildDebugger"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "DocumentationView",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/DocumentationView",
"export": "DocumentationView"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "ErrorPanel",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/ErrorPanel",
"export": "ErrorPanel"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "FaviconDesigner",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/FaviconDesigner",
"export": "FaviconDesigner"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "FeatureIdeaCloud",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/FeatureIdeaCloud",
"export": "FeatureIdeaCloud"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "FeatureToggleSettings",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/FeatureToggleSettings",
"export": "FeatureToggleSettings"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "JSONComponentTreeManager",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/JSONComponentTreeManager",
"export": "JSONComponentTreeManager"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "JSONLambdaDesigner",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/JSONLambdaDesigner",
"export": "JSONLambdaDesigner"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "JSONModelDesigner",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/JSONModelDesigner",
"export": "JSONModelDesigner"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "PWASettings",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/PWASettings",
"export": "PWASettings"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "PersistenceDashboard",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/PersistenceDashboard",
"export": "PersistenceDashboard"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "PersistenceExample",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/PersistenceExample",
"export": "PersistenceExample"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "ProjectDashboard",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/ProjectDashboard",
"export": "ProjectDashboard"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "SassStylesShowcase",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/SassStylesShowcase",
"export": "SassStylesShowcase"
},
"props": {}
}
@@ -0,0 +1,10 @@
{
"type": "StyleDesigner",
"jsonCompatible": false,
"wrapperRequired": true,
"load": {
"path": "@/components/StyleDesigner",
"export": "StyleDesigner"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "CardContent",
"source": "ui",
"load": {
"path": "@/components/ui/card",
"export": "CardContent"
},
"props": {}
}
@@ -0,0 +1,9 @@
{
"type": "CardDescription",
"source": "ui",
"load": {
"path": "@/components/ui/card",
"export": "CardDescription"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "CardFooter",
"source": "ui",
"load": {
"path": "@/components/ui/card",
"export": "CardFooter"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "CardHeader",
"source": "ui",
"load": {
"path": "@/components/ui/card",
"export": "CardHeader"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "CardTitle",
"source": "ui",
"load": {
"path": "@/components/ui/card",
"export": "CardTitle"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "TabsContent",
"source": "ui",
"load": {
"path": "@/components/ui/tabs",
"export": "TabsContent"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "TabsList",
"source": "ui",
"load": {
"path": "@/components/ui/tabs",
"export": "TabsList"
},
"props": {}
}
+9
View File
@@ -0,0 +1,9 @@
{
"type": "TabsTrigger",
"source": "ui",
"load": {
"path": "@/components/ui/tabs",
"export": "TabsTrigger"
},
"props": {}
}