{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "brand-ui", "items": [ { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "app-shell", "type": "registry:block", "title": "App shell", "description": "Sidebar + top nav + page layout scaffold for an internal app.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "registry/blocks/app-shell/app-shell-page.tsx", "type": "registry:page", "target": "app/(app)/page.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "ai-chat-shell", "type": "registry:block", "title": "AI chat shell", "description": "Chat surface with transcript, composer, tool calls and a context rail.", "dependencies": [ "@elabs-ai/components-ai", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/ai-chat-shell/ai-chat.tsx", "type": "registry:component", "target": "components/ai-chat-shell/ai-chat.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "data-table", "type": "registry:block", "title": "Data table", "description": "Filterable, sortable, paginated TanStack data table with toolbar.", "dependencies": [ "@elabs-ai/components-data", "@elabs-ai/components-icons", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/data-table/data-table-block.tsx", "type": "registry:component", "target": "components/data-table/data-table-block.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "chart-frame-data", "type": "registry:block", "title": "ChartFrame + data table", "description": "ChartFrame (expand / flip-to-table / download-CSV) wired to @elabs-ai/components-data: full TanStack DataTable on flip and downloadCsv on export.", "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-data", "@elabs-ai/components-icons", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/chart-frame-data/chart-frame-data-block.tsx", "type": "registry:component", "target": "components/chart-frame-data/chart-frame-data-block.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "ai-chart", "type": "registry:block", "title": "AI chart in conversation", "description": "Renders a model's chart tool-output inside an AI conversation — AutoChart (@elabs-ai/components-charts) composed with Tool/ToolOutput from @elabs-ai/components-ai. The canonical copy-owned home for @elabs-ai/components-ai + @elabs-ai/components-charts cross-sibling composition.", "dependencies": [ "@elabs-ai/components-ai", "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/ai-chart/ai-chart-block.tsx", "type": "registry:component", "target": "components/ai-chart/ai-chart-block.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "flow-canvas", "type": "registry:block", "title": "Flow canvas", "description": "Branded React Flow canvas with custom nodes, edges and controls.", "dependencies": [ "@elabs-ai/components-flow", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "@xyflow/react" ], "files": [ { "path": "registry/blocks/flow-canvas/flow-canvas.tsx", "type": "registry:component", "target": "components/flow-canvas/flow-canvas.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "flow-builder", "type": "registry:block", "title": "Flow builder", "description": "Workflow-builder canvas with a node palette, auto-layout, grouping, placeholder growth, insert-between, an inspector, and copy-own undo/redo + copy/paste.", "dependencies": [ "@elabs-ai/components-flow", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "@xyflow/react", "lucide-react" ], "files": [ { "path": "registry/blocks/flow-builder/flow-builder.tsx", "type": "registry:component", "target": "components/flow-builder/flow-builder.tsx" }, { "path": "registry/blocks/flow-builder/use-copy-paste.ts", "type": "registry:component", "target": "components/flow-builder/use-copy-paste.ts" }, { "path": "registry/blocks/flow-builder/use-undo-redo.ts", "type": "registry:component", "target": "components/flow-builder/use-undo-redo.ts" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "marketing-hero", "type": "registry:block", "title": "Marketing hero", "description": "Landing hero section with eyebrow, headline, CTAs and logo strip.", "dependencies": [ "@elabs-ai/components-marketing", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/marketing-hero/marketing-hero.tsx", "type": "registry:component", "target": "components/marketing-hero/marketing-hero.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "code-workspace", "type": "registry:block", "title": "Code workspace", "description": "Multi-file Monaco code editor with brand-ui tabs and token theming (wire @elabs-ai/components-editor/monaco-environment once at the app entry).", "dependencies": [ "@elabs-ai/components-editor", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "monaco-editor" ], "files": [ { "path": "registry/blocks/code-workspace/code-workspace.tsx", "type": "registry:component", "target": "components/code-workspace/code-workspace.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sidebar-02", "type": "registry:block", "title": "App shell — dashboard inset", "description": "Collapsible-icon dashboard sidebar with inset content, team switcher and collapsible nav groups. Adapted from blocks.so.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "packages/ui/src/blocks/sidebar-02/app-sidebar.tsx", "type": "registry:component", "target": "components/sidebar-02/app-sidebar.tsx" }, { "path": "packages/ui/src/blocks/sidebar-02/logo.tsx", "type": "registry:component", "target": "components/sidebar-02/logo.tsx" }, { "path": "packages/ui/src/blocks/sidebar-02/nav-main.tsx", "type": "registry:component", "target": "components/sidebar-02/nav-main.tsx" }, { "path": "packages/ui/src/blocks/sidebar-02/nav-notifications.tsx", "type": "registry:component", "target": "components/sidebar-02/nav-notifications.tsx" }, { "path": "packages/ui/src/blocks/sidebar-02/team-switcher.tsx", "type": "registry:component", "target": "components/sidebar-02/team-switcher.tsx" } ], "categories": ["sidebar", "app-shell"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sidebar-04", "type": "registry:block", "title": "App shell — mail (double-sided)", "description": "Two-column mail shell: icon rail + searchable message list + reading pane. Adapted from blocks.so.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "packages/ui/src/blocks/sidebar-04/app-sidebar.tsx", "type": "registry:component", "target": "components/sidebar-04/app-sidebar.tsx" }, { "path": "packages/ui/src/blocks/sidebar-04/mail-context.tsx", "type": "registry:component", "target": "components/sidebar-04/mail-context.tsx" }, { "path": "packages/ui/src/blocks/sidebar-04/nav-user.tsx", "type": "registry:component", "target": "components/sidebar-04/nav-user.tsx" } ], "categories": ["sidebar", "app-shell"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sidebar-05", "type": "registry:block", "title": "App shell — double-sided nav", "description": "Primary nav rail that expands a contextual second panel of sub-items. Adapted from blocks.so.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "packages/ui/src/blocks/sidebar-05/app-sidebar.tsx", "type": "registry:component", "target": "components/sidebar-05/app-sidebar.tsx" }, { "path": "packages/ui/src/blocks/sidebar-05/team-switcher.tsx", "type": "registry:component", "target": "components/sidebar-05/team-switcher.tsx" } ], "categories": ["sidebar", "app-shell"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-card-parts", "type": "registry:block", "title": "Stat Card — shared parts", "description": "The pieces every stat-card block shares: the edge-to-edge chart bleed wrapper, the chart-hover→value/label/trend bridge, and the tokenized trend badge. Installed once and reused by the stat-card blocks rather than copied into each.", "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react" ], "files": [ { "path": "registry/blocks/stat-card-parts/stat-card-chart.tsx", "type": "registry:component", "target": "components/stat-card-parts/stat-card-chart.tsx" }, { "path": "registry/blocks/stat-card-parts/stat-card-hover-bridge.tsx", "type": "registry:component", "target": "components/stat-card-parts/stat-card-hover-bridge.tsx" }, { "path": "registry/blocks/stat-card-parts/trend-badge.tsx", "type": "registry:component", "target": "components/stat-card-parts/trend-badge.tsx" } ], "categories": ["stat-card"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-card-area-01", "type": "registry:block", "title": "Stat Card — Area", "description": "KPI stat card with a live area chart sparkline, hover-driven value/label updates, and a tokenized trend badge.", "registryDependencies": ["stat-card-parts"], "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "@visx/curve" ], "files": [ { "path": "registry/blocks/stat-card-area-01/data/revenue-series.ts", "type": "registry:component", "target": "components/stat-card-area-01/data/revenue-series.ts" }, { "path": "registry/blocks/stat-card-area-01/stat-card-area.tsx", "type": "registry:component", "target": "components/stat-card-area-01/stat-card-area.tsx" } ], "categories": ["stat-card"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-card-line-01", "type": "registry:block", "title": "Stat Card — Line", "description": "KPI stat card with an inline line chart, hover-driven value/label updates, and a tokenized trend badge.", "registryDependencies": ["stat-card-parts"], "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "@visx/curve" ], "files": [ { "path": "registry/blocks/stat-card-line-01/data/sessions-series.ts", "type": "registry:component", "target": "components/stat-card-line-01/data/sessions-series.ts" }, { "path": "registry/blocks/stat-card-line-01/stat-card-line.tsx", "type": "registry:component", "target": "components/stat-card-line-01/stat-card-line.tsx" } ], "categories": ["stat-card"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-card-choropleth-01", "type": "registry:block", "title": "Stat Card — Choropleth Map", "description": "KPI stat card with a choropleth world-map chart, hover-driven country value/label updates, and a tokenized trend badge.", "registryDependencies": ["stat-card-parts"], "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "geojson", "topojson-client" ], "files": [ { "path": "registry/blocks/stat-card-choropleth-01/data/visitors.ts", "type": "registry:component", "target": "components/stat-card-choropleth-01/data/visitors.ts" }, { "path": "registry/blocks/stat-card-choropleth-01/lib/use-world-data.tsx", "type": "registry:component", "target": "components/stat-card-choropleth-01/lib/use-world-data.tsx" }, { "path": "registry/blocks/stat-card-choropleth-01/stat-card-choropleth-hover-bridge.tsx", "type": "registry:component", "target": "components/stat-card-choropleth-01/stat-card-choropleth-hover-bridge.tsx" }, { "path": "registry/blocks/stat-card-choropleth-01/stat-card-choropleth.tsx", "type": "registry:component", "target": "components/stat-card-choropleth-01/stat-card-choropleth.tsx" } ], "categories": ["stat-card"] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-cards-01", "type": "registry:block", "title": "Stat Cards — elevated KPI tiles", "description": "Elevated KPI tiles beyond a flat number: MetricCard + inline Sparkline (bar or line, coloured by a --chart-* token), a goal/progress tile, and a this-vs-last comparison tile.", "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui" ], "files": [ { "path": "registry/blocks/stat-cards-01/comparison-stat-card.tsx", "type": "registry:component", "target": "components/stat-cards-01/comparison-stat-card.tsx" }, { "path": "registry/blocks/stat-cards-01/data/spark-series.ts", "type": "registry:component", "target": "components/stat-cards-01/data/spark-series.ts" }, { "path": "registry/blocks/stat-cards-01/goal-stat-card.tsx", "type": "registry:component", "target": "components/stat-cards-01/goal-stat-card.tsx" }, { "path": "registry/blocks/stat-cards-01/spark-stat-cards.tsx", "type": "registry:component", "target": "components/stat-cards-01/spark-stat-cards.tsx" }, { "path": "registry/blocks/stat-cards-01/stat-cards.tsx", "type": "registry:component", "target": "components/stat-cards-01/stat-cards.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "chart-card-kpi-01", "type": "registry:block", "title": "Chart Card — KPI header", "description": "An elevated chart-in-a-card: a header with a headline KPI + delta + a segmented period control (ToggleGroup), a token-coloured AreaChart, and a footer breakdown legend. The period control re-renders the chart.", "dependencies": [ "@elabs-ai/components-charts", "@elabs-ai/components-tokens", "@elabs-ai/components-ui", "@visx/curve" ], "files": [ { "path": "registry/blocks/chart-card-kpi-01/data/revenue-period-series.ts", "type": "registry:component", "target": "components/chart-card-kpi-01/data/revenue-period-series.ts" }, { "path": "registry/blocks/chart-card-kpi-01/revenue-chart-card.tsx", "type": "registry:component", "target": "components/chart-card-kpi-01/revenue-chart-card.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stat-list-01", "type": "registry:block", "title": "Stat List — ranked list, leaderboard, activity feed", "description": "Compact summary widgets: a ranked list with share bars + delta (Sales by country), a leaderboard (Top performers), and a transaction/activity feed with signed amounts.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "registry/blocks/stat-list-01/data/countries.ts", "type": "registry:component", "target": "components/stat-list-01/data/countries.ts" }, { "path": "registry/blocks/stat-list-01/data/performers.ts", "type": "registry:component", "target": "components/stat-list-01/data/performers.ts" }, { "path": "registry/blocks/stat-list-01/data/transactions.ts", "type": "registry:component", "target": "components/stat-list-01/data/transactions.ts" }, { "path": "registry/blocks/stat-list-01/leaderboard-widget.tsx", "type": "registry:component", "target": "components/stat-list-01/leaderboard-widget.tsx" }, { "path": "registry/blocks/stat-list-01/ranked-list-widget.tsx", "type": "registry:component", "target": "components/stat-list-01/ranked-list-widget.tsx" }, { "path": "registry/blocks/stat-list-01/stat-list.tsx", "type": "registry:component", "target": "components/stat-list-01/stat-list.tsx" }, { "path": "registry/blocks/stat-list-01/transaction-feed-widget.tsx", "type": "registry:component", "target": "components/stat-list-01/transaction-feed-widget.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "integration-grid-01", "type": "registry:block", "title": "Integration Grid", "description": "A responsive grid of integration cards (icon + name + description + connect/manage action + connection status) under a page header with an Add action — the canonical ‘connect your tools’ surface. Logos are consumer-supplied (Lucide placeholders here).", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui", "lucide-react"], "files": [ { "path": "registry/blocks/integration-grid-01/data/integrations.ts", "type": "registry:component", "target": "components/integration-grid-01/data/integrations.ts" }, { "path": "registry/blocks/integration-grid-01/integration-card.tsx", "type": "registry:component", "target": "components/integration-grid-01/integration-card.tsx" }, { "path": "registry/blocks/integration-grid-01/integration-grid.tsx", "type": "registry:component", "target": "components/integration-grid-01/integration-grid.tsx" } ] }, { "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "form-wizard-01", "type": "registry:block", "title": "Form Wizard — checkout flow", "description": "A multi-step form with a horizontal numbered stepper (the Wizard primitive) — a checkout flow (Customer → Shipping → Payment → Review) with real fields, correct autocomplete/type hints, and a Descriptions review step.", "dependencies": ["@elabs-ai/components-tokens", "@elabs-ai/components-ui"], "files": [ { "path": "registry/blocks/form-wizard-01/checkout-wizard.tsx", "type": "registry:component", "target": "components/form-wizard-01/checkout-wizard.tsx" }, { "path": "registry/blocks/form-wizard-01/data/steps.ts", "type": "registry:component", "target": "components/form-wizard-01/data/steps.ts" }, { "path": "registry/blocks/form-wizard-01/field.tsx", "type": "registry:component", "target": "components/form-wizard-01/field.tsx" } ] } ] }