feat: migrate shadcn/ui components to JSON wrapper definitions (Phase 8)

Implemented JSON wrappers for 29 key shadcn/ui components, enabling
JSON-based configuration for commonly-used library components. These
stay as TSX internally but are now JSON-compatible.

Components migrated:
- Button: ShadcnButton
- Badge: ShadcnBadge
- Card family: ShadcnCard, ShadcnCardHeader, ShadcnCardTitle, ShadcnCardContent
- Form inputs: ShadcnLabel, ShadcnInput, ShadcnTextarea, ShadcnCheckbox, ShadcnSwitch
- Separator: ShadcnSeparator
- ScrollArea: ShadcnScrollArea
- Tabs family: ShadcnTabs, ShadcnTabsList, ShadcnTabsTrigger, ShadcnTabsContent
- Dialog family: ShadcnDialog, ShadcnDialogContent, ShadcnDialogHeader, ShadcnDialogTitle
- Select family: ShadcnSelect, ShadcnSelectTrigger, ShadcnSelectContent, ShadcnSelectItem
- Slider: ShadcnSlider
- Tooltip family: ShadcnTooltip, ShadcnTooltipTrigger, ShadcnTooltipContent

Files created:
- 14 TypeScript interface files in src/lib/json-ui/interfaces/
- 29 JSON definition files in src/components/json-definitions/

Updated exports in:
- src/lib/json-ui/json-components.ts (29 new components)
- src/lib/json-ui/interfaces/index.ts (14 new interfaces)

Build: ✓ PASSED
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-21 04:07:03 +00:00
parent e4b0b92d80
commit 788109dfe3
61 changed files with 2035 additions and 5 deletions

View File

@@ -2,7 +2,7 @@
"$schema": "./schemas/json-components-registry-schema.json",
"version": "2.0.0",
"description": "Registry of all components in the application",
"lastUpdated": "2026-01-21T01:57:14.374Z",
"lastUpdated": "2026-01-21T03:35:00.000Z",
"categories": {
"layout": "Layout and container components",
"input": "Form inputs and interactive controls",
@@ -4359,11 +4359,223 @@
"type": "update",
"source": "actions",
"jsonCompatible": true
},
{
"type": "ErrorPanelHeader",
"name": "ErrorPanelHeader",
"category": "custom",
"canHaveChildren": false,
"description": "Error panel header with action buttons",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "error-panel",
"notes": "Reusable header component"
}
},
{
"type": "ErrorPanelEmptyState",
"name": "ErrorPanelEmptyState",
"category": "feedback",
"canHaveChildren": false,
"description": "Error panel empty state with conditional rendering",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "error-panel"
}
},
{
"type": "PWAUpdateSection",
"name": "PWAUpdateSection",
"category": "custom",
"canHaveChildren": false,
"description": "PWA update settings section",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "pwa-settings"
}
},
{
"type": "PWACacheSection",
"name": "PWACacheSection",
"category": "custom",
"canHaveChildren": false,
"description": "PWA cache settings section",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "pwa-settings"
}
},
{
"type": "ConflictResolutionStats",
"name": "ConflictResolutionStats",
"category": "data",
"canHaveChildren": false,
"description": "Conflict resolution statistics cards",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "conflict-resolution"
}
},
{
"type": "HowItWorksCard",
"name": "HowItWorksCard",
"category": "display",
"canHaveChildren": false,
"description": "Instructional card with numbered steps",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "data-binding-designer"
}
},
{
"type": "SearchResults",
"name": "SearchResults",
"category": "display",
"canHaveChildren": false,
"description": "Search results list with categories",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "global-search"
}
},
{
"type": "SearchEmptyState",
"name": "SearchEmptyState",
"category": "feedback",
"canHaveChildren": false,
"description": "Search empty state message",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "global-search"
}
},
{
"type": "ComprehensiveDemoHeader",
"name": "ComprehensiveDemoHeader",
"category": "display",
"canHaveChildren": false,
"description": "Feature demo header with gradient text",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "comprehensive-demo"
}
},
{
"type": "ComprehensiveDemoStatsRow",
"name": "ComprehensiveDemoStatsRow",
"category": "data",
"canHaveChildren": false,
"description": "Statistics cards for task tracking",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "comprehensive-demo"
}
},
{
"type": "ConfigCard",
"name": "ConfigCard",
"category": "custom",
"canHaveChildren": false,
"description": "Configuration input card",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"feature": "project-settings",
"notes": "Reusable configuration pattern"
}
},
{
"type": "StatusCard",
"name": "StatusCard",
"category": "feedback",
"canHaveChildren": false,
"description": "Status indicator card with icon",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"notes": "Reusable status pattern"
}
},
{
"type": "InfoSection",
"name": "InfoSection",
"category": "display",
"canHaveChildren": false,
"description": "Information section with key-value pairs",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"notes": "Reusable info display pattern"
}
},
{
"type": "ListHeader",
"name": "ListHeader",
"category": "display",
"canHaveChildren": false,
"description": "List header with count badge",
"status": "supported",
"source": "feature-components",
"jsonCompatible": true,
"metadata": {
"conversionDate": "2026-01-21",
"phase": "9",
"notes": "Reusable list header pattern"
}
}
],
"statistics": {
"total": 360,
"jsonCompatible": 204,
"coverage": "57%"
"total": 373,
"jsonCompatible": 223,
"coverage": "60%"
}
}