{items.map((item, index) => (
- {renderItem(item, index)}
+ {renderItem ? renderItem(item, index) : renderFallbackItem(item)}
))}
diff --git a/src/lib/component-definitions.ts b/src/lib/component-definitions.ts
index 8093398..f5d9e36 100644
--- a/src/lib/component-definitions.ts
+++ b/src/lib/component-definitions.ts
@@ -264,6 +264,17 @@ export const componentDefinitions: ComponentDefinition[] = [
icon: 'List',
defaultProps: { items: [], emptyMessage: 'No items' }
},
+ {
+ type: 'DataList',
+ label: 'Data List',
+ category: 'data',
+ icon: 'List',
+ defaultProps: {
+ items: ['Daily summary', 'New signups', 'Pending approvals'],
+ emptyMessage: 'No updates',
+ itemClassName: 'rounded-md border border-border bg-card/50 px-4 py-2'
+ }
+ },
{
type: 'Table',
label: 'Table',
@@ -271,6 +282,25 @@ export const componentDefinitions: ComponentDefinition[] = [
icon: 'Table',
defaultProps: { data: [], columns: [] }
},
+ {
+ type: 'DataTable',
+ label: 'Data Table',
+ category: 'data',
+ icon: 'Table',
+ defaultProps: {
+ columns: [
+ { key: 'name', header: 'Name' },
+ { key: 'status', header: 'Status' },
+ { key: 'owner', header: 'Owner' },
+ ],
+ data: [
+ { name: 'Launch Plan', status: 'In Progress', owner: 'Avery' },
+ { name: 'Design Review', status: 'Scheduled', owner: 'Jordan' },
+ { name: 'QA Checklist', status: 'Done', owner: 'Riley' },
+ ],
+ emptyMessage: 'No records available',
+ }
+ },
{
type: 'KeyValue',
label: 'Key Value',
@@ -285,6 +315,45 @@ export const componentDefinitions: ComponentDefinition[] = [
icon: 'ChartBar',
defaultProps: { title: 'Metric', value: '0' }
},
+ {
+ type: 'MetricCard',
+ label: 'Metric Card',
+ category: 'data',
+ icon: 'ChartBar',
+ defaultProps: {
+ label: 'Active Users',
+ value: '1,248',
+ trend: { value: 12.4, direction: 'up' },
+ }
+ },
+ {
+ type: 'Timeline',
+ label: 'Timeline',
+ category: 'data',
+ icon: 'Clock',
+ defaultProps: {
+ items: [
+ {
+ title: 'Planning',
+ description: 'Finalize milestones',
+ timestamp: 'Mon 9:00 AM',
+ status: 'completed',
+ },
+ {
+ title: 'Execution',
+ description: 'Kick off delivery',
+ timestamp: 'Tue 11:00 AM',
+ status: 'current',
+ },
+ {
+ title: 'Review',
+ description: 'Collect feedback',
+ timestamp: 'Wed 3:00 PM',
+ status: 'pending',
+ },
+ ],
+ }
+ },
// Custom Components
{
type: 'DataCard',
diff --git a/src/lib/json-ui/component-registry.ts b/src/lib/json-ui/component-registry.ts
index 3e53dfe..507a5d1 100644
--- a/src/lib/json-ui/component-registry.ts
+++ b/src/lib/json-ui/component-registry.ts
@@ -136,10 +136,16 @@ export const shadcnComponents: UIComponentRegistry = {
AvatarImage,
}
-export const atomComponents: UIComponentRegistry = buildRegistryFromNames(
- atomRegistryNames,
- AtomComponents as Record