From 5c0a97f1ff070bb6eca2191250c243a1ae379e69 Mon Sep 17 00:00:00 2001 From: David Anthony Date: Wed, 11 Feb 2026 11:09:06 -0800 Subject: [PATCH 1/8] feat(apollo-wind): add Getting Started section with templates, theming, and AI prototyping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Maestro, Delegate, Admin, and Flow template systems with multiple page variants (Landing, Dashboard, Settings, Data Management, Properties) - Implement dual-theme architecture: Future (dark/light) and Legacy (dark/light) with CSS custom properties and shadcn bridge pattern - Add custom components: MaestroHeader, FlowPanel, PropertiesSimple, PropertiesExpanded, Canvas, ChatComposer, and more - Create Prototyping documentation page with 5 tabs: Overview, Use Cases, Use Figma, Use AI, and Best Practices - Add apollo-ai-context.md — portable AI context file for consistent prototyping with LLMs (components, tokens, patterns, rules) - Install and configure @storybook/addon-mcp for live component metadata exposure to AI coding agents - Install and configure @storybook/addon-a11y for accessibility auditing - Hide addons panel by default, remove background switcher from toolbar - Reorganize Storybook sidebar: flatten Templates (remove Future folder), rename Current to Xrchive, rename Theme/Current to Theme/Legacy - Move legacy-theme.css to foundation/Future/ alongside future-theme.css - Upgrade all component stories to use Storybook categories - Delete deprecated example files and consolidate into new template system Co-authored-by: Cursor feat(apollo-wind): add Getting Started section with templates, theming, and AI prototyping - Add Getting Started landing page and AI prototyping documentation - Implement Future theme system (dark/light) with CSS custom properties - Add gradient tokens (6 theme-aware gradients) to foundation - Create shared FutureTheme type for consistent theme prop typing - Add Onboarding, Agentic Process, and Empty & Errors template sections - Implement Flow template responsive panel behavior and properties panels - Add global theme sync for Radix portal components via preview decorator - Add aria-label and type="button" to all icon-only buttons for accessibility - Remove unused imports, functions, and dead code across story files - Delete legacy Xrchive templates (New Project, VSCode) Co-authored-by: Cursor --- packages/apollo-wind/.storybook/main.ts | 14 +- packages/apollo-wind/.storybook/manager.js | 2 +- packages/apollo-wind/.storybook/manager.ts | 3 +- .../apollo-wind/.storybook/preview-head.html | 8 + packages/apollo-wind/.storybook/preview.tsx | 95 +- packages/apollo-wind/apollo-ai-context.md | 242 +++ packages/apollo-wind/package.json | 2 + .../src/components/custom/canvas.stories.tsx | 25 + .../src/components/custom/canvas.tsx | 36 + .../custom/chat-composer.stories.tsx | 21 + .../src/components/custom/chat-composer.tsx | 100 + .../custom/chat-first-experience.stories.tsx | 29 + .../custom/chat-first-experience.tsx | 86 + .../chat-prompt-suggestions.stories.tsx | 28 + .../custom/chat-prompt-suggestions.tsx | 50 + .../custom/chat-steps-view.stories.tsx | 57 + .../src/components/custom/chat-steps-view.tsx | 288 +++ .../components/custom/flow-node.stories.tsx | 45 + .../src/components/custom/flow-node.tsx | 66 + .../custom/flow-properties-bar.stories.tsx | 21 + .../components/custom/flow-properties-bar.tsx | 92 + .../flow-properties-expanded.stories.tsx | 28 + .../custom/flow-properties-expanded.tsx | 289 +++ .../custom/flow-properties-simple.tsx | 411 ++++ .../custom/global-header.stories.tsx | 85 + .../src/components/custom/global-header.tsx | 382 ++++ .../custom/grid-maestro.stories.tsx | 35 + .../src/components/custom/grid-maestro.tsx | 56 + .../custom/panel-delegate.stories.tsx | 74 + .../src/components/custom/panel-delegate.tsx | 343 ++++ .../components/custom/panel-flow.stories.tsx | 50 + .../src/components/custom/panel-flow.tsx | 288 +++ .../custom/panel-maestro.stories.tsx | 58 + .../src/components/custom/panel-maestro.tsx | 92 + .../custom/toolbar-canvas.stories.tsx | 21 + .../src/components/custom/toolbar-canvas.tsx | 125 ++ .../custom/toolbar-view.stories.tsx | 21 + .../src/components/custom/toolbar-view.tsx | 120 ++ .../src/components/ui/accordion.stories.tsx | 2 +- .../components/ui/alert-dialog.stories.tsx | 2 +- .../src/components/ui/alert.stories.tsx | 2 +- .../components/ui/aspect-ratio.stories.tsx | 2 +- .../src/components/ui/badge.stories.tsx | 2 +- .../src/components/ui/breadcrumb.stories.tsx | 2 +- .../components/ui/button-group.stories.tsx | 2 +- .../src/components/ui/button.stories.tsx | 2 +- .../src/components/ui/calendar.stories.tsx | 2 +- .../src/components/ui/card.stories.tsx | 2 +- .../src/components/ui/checkbox.stories.tsx | 2 +- .../src/components/ui/collapsible.stories.tsx | 2 +- .../src/components/ui/combobox.stories.tsx | 2 +- .../src/components/ui/command.stories.tsx | 2 +- .../ui/component-gallery.stories.tsx | 2 +- .../components/ui/context-menu.stories.tsx | 2 +- .../src/components/ui/data-table.stories.tsx | 2 +- .../src/components/ui/date-picker.stories.tsx | 2 +- .../components/ui/datetime-picker.stories.tsx | 2 +- .../src/components/ui/dialog.stories.tsx | 2 +- .../src/components/ui/drawer.stories.tsx | 2 +- .../components/ui/dropdown-menu.stories.tsx | 2 +- .../src/components/ui/empty-state.stories.tsx | 2 +- .../src/components/ui/file-upload.stories.tsx | 2 +- .../src/components/ui/hover-card.stories.tsx | 2 +- .../apollo-wind/src/components/ui/index.ts | 1 + .../src/components/ui/input.stories.tsx | 2 +- .../src/components/ui/label.stories.tsx | 2 +- .../components/ui/layout/column.stories.tsx | 2 +- .../src/components/ui/layout/grid.stories.tsx | 2 +- .../src/components/ui/layout/row.stories.tsx | 2 +- .../src/components/ui/menubar.stories.tsx | 2 +- .../components/ui/multi-select.stories.tsx | 2 +- .../components/ui/navigation-menu.stories.tsx | 2 +- .../src/components/ui/pagination.stories.tsx | 2 +- .../src/components/ui/popover.stories.tsx | 2 +- .../src/components/ui/progress.stories.tsx | 2 +- .../src/components/ui/radio-group.stories.tsx | 2 +- .../src/components/ui/resizable.stories.tsx | 2 +- .../src/components/ui/scroll-area.stories.tsx | 2 +- .../src/components/ui/search.stories.tsx | 2 +- .../src/components/ui/select.stories.tsx | 2 +- .../src/components/ui/separator.stories.tsx | 2 +- .../src/components/ui/sheet.stories.tsx | 2 +- .../src/components/ui/skeleton.stories.tsx | 2 +- .../src/components/ui/slider.stories.tsx | 2 +- .../src/components/ui/sonner.stories.tsx | 2 +- .../src/components/ui/spinner.stories.tsx | 2 +- .../src/components/ui/stats-card.stories.tsx | 2 +- .../src/components/ui/stepper.stories.tsx | 2 +- .../src/components/ui/switch.stories.tsx | 2 +- .../src/components/ui/table.stories.tsx | 2 +- .../src/components/ui/tabs.stories.tsx | 2 +- .../src/components/ui/textarea.stories.tsx | 2 +- .../components/ui/toggle-group.stories.tsx | 2 +- .../src/components/ui/toggle.stories.tsx | 2 +- .../src/components/ui/tooltip.stories.tsx | 2 +- .../src/components/ui/viewport-guard.tsx | 92 + .../examples/admin-layout-example.stories.tsx | 305 --- .../src/examples/admin-layout-example.tsx | 483 ----- .../examples/app-shell-example.stories.tsx | 15 - .../src/examples/app-shell-example.tsx | 362 ---- .../examples/dashboard-example.stories.tsx | 15 - .../src/examples/dashboard-example.tsx | 388 ---- .../data-management-example.stories.tsx | 15 - .../src/examples/data-management-example.tsx | 399 ---- .../flow-editor-layout-example.stories.tsx | 255 --- .../examples/flow-editor-layout-example.tsx | 285 --- .../examples/flow-start-example.stories.tsx | 120 -- .../src/examples/flow-start-example.tsx | 390 ---- .../examples/form-builder-example.stories.tsx | 15 - .../examples/new-project-example.stories.tsx | 137 -- .../src/examples/new-project-example.tsx | 400 ---- .../src/examples/settings-example.stories.tsx | 15 - .../src/examples/settings-example.tsx | 461 ----- .../src/examples/vscode-example.stories.tsx | 295 --- .../src/examples/vscode-example.tsx | 418 ---- .../src/foundation/Future/colors.stories.tsx | 171 ++ .../src/foundation/Future/colors.ts | 162 ++ .../src/foundation/Future/future-theme.css | 288 +++ .../src/foundation/Future/icons.stories.tsx | 25 + .../src/foundation/Future/legacy-theme.css | 261 +++ .../src/foundation/Future/radius.stories.tsx | 75 + .../src/foundation/Future/radius.ts | 38 + .../foundation/Future/responsive.stories.tsx | 116 ++ .../src/foundation/Future/responsive.ts | 50 + .../src/foundation/Future/shadows.stories.tsx | 75 + .../src/foundation/Future/shadows.ts | 35 + .../src/foundation/Future/spacing.stories.tsx | 144 ++ .../src/foundation/Future/spacing.ts | 91 + .../src/foundation/Future/strokes.stories.tsx | 118 ++ .../src/foundation/Future/strokes.ts | 60 + .../src/foundation/Future/theme.stories.tsx | 610 ++++++ .../src/foundation/Future/types.ts | 20 + .../foundation/Future/typography.stories.tsx | 196 ++ .../src/foundation/Future/typography.ts | 113 ++ .../{ => Legacy}/colors.stories.tsx | 2 +- .../foundation/{ => Legacy}/icons.stories.tsx | 2 +- .../{ => Legacy}/spacing.stories.tsx | 2 +- .../{ => Legacy}/typography.stories.tsx | 2 +- .../src/foundation/colors-future.stories.tsx | 15 - .../src/foundation/icons-future.stories.tsx | 15 - .../src/foundation/spacing-future.stories.tsx | 15 - .../foundation/typography-future.stories.tsx | 15 - .../getting-started.stories.tsx | 187 +- .../getting-started/prototyping.stories.tsx | 716 ++++++- packages/apollo-wind/src/styles/tailwind.css | 2 + .../src/templates/Admin/admin.stories.tsx | 1764 +++++++++++++++++ .../templates/Delegate/delegate.stories.tsx | 404 ++++ .../templates/Delegate/template-delegate.tsx | 97 + .../EmptyErrors/empty-errors.stories.tsx | 135 ++ .../src/templates/Flow/flow.stories.tsx | 170 ++ .../src/templates/Flow/template-flow.tsx | 263 +++ .../form-builder-example.stories.tsx | 0 .../Forms}/form-builder-example.tsx | 0 .../src/templates/Maestro/maestro.stories.tsx | 877 ++++++++ .../templates/Maestro/template-maestro.tsx | 170 ++ .../src/templates/More/more.stories.tsx | 503 +++++ .../admin-layout-example.stories.tsx | 305 --- .../src/templates/admin-layout-example.tsx | 483 ----- .../templates/app-shell-example.stories.tsx | 15 - .../src/templates/app-shell-example.tsx | 362 ---- .../templates/dashboard-example.stories.tsx | 15 - .../src/templates/dashboard-example.tsx | 388 ---- .../data-management-example.stories.tsx | 15 - .../src/templates/data-management-example.tsx | 399 ---- .../src/templates/delegate.stories.tsx | 15 - .../flow-editor-layout-example.stories.tsx | 255 --- .../templates/flow-editor-layout-example.tsx | 285 --- .../templates/flow-start-example.stories.tsx | 120 -- .../src/templates/flow-start-example.tsx | 390 ---- .../src/templates/flow.stories.tsx | 15 - .../src/templates/form-builder-example.tsx | 399 ---- .../templates/new-project-example.stories.tsx | 137 -- .../src/templates/new-project-example.tsx | 400 ---- .../templates/settings-example.stories.tsx | 15 - .../src/templates/settings-example.tsx | 461 ----- .../src/templates/vscode-example.stories.tsx | 295 --- .../src/templates/vscode-example.tsx | 418 ---- packages/apollo-wind/tests/setup.ts | 3 + pnpm-lock.yaml | 133 ++ 179 files changed, 11827 insertions(+), 10266 deletions(-) create mode 100644 packages/apollo-wind/apollo-ai-context.md create mode 100644 packages/apollo-wind/src/components/custom/canvas.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/canvas.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-composer.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-composer.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-first-experience.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-first-experience.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-prompt-suggestions.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-prompt-suggestions.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-steps-view.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/chat-steps-view.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-node.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-node.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-properties-bar.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-properties-bar.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-properties-expanded.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-properties-expanded.tsx create mode 100644 packages/apollo-wind/src/components/custom/flow-properties-simple.tsx create mode 100644 packages/apollo-wind/src/components/custom/global-header.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/global-header.tsx create mode 100644 packages/apollo-wind/src/components/custom/grid-maestro.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/grid-maestro.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-delegate.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-delegate.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-flow.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-flow.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-maestro.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/panel-maestro.tsx create mode 100644 packages/apollo-wind/src/components/custom/toolbar-canvas.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/toolbar-canvas.tsx create mode 100644 packages/apollo-wind/src/components/custom/toolbar-view.stories.tsx create mode 100644 packages/apollo-wind/src/components/custom/toolbar-view.tsx create mode 100644 packages/apollo-wind/src/components/ui/viewport-guard.tsx delete mode 100644 packages/apollo-wind/src/examples/admin-layout-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/admin-layout-example.tsx delete mode 100644 packages/apollo-wind/src/examples/app-shell-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/app-shell-example.tsx delete mode 100644 packages/apollo-wind/src/examples/dashboard-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/dashboard-example.tsx delete mode 100644 packages/apollo-wind/src/examples/data-management-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/data-management-example.tsx delete mode 100644 packages/apollo-wind/src/examples/flow-editor-layout-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/flow-editor-layout-example.tsx delete mode 100644 packages/apollo-wind/src/examples/flow-start-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/flow-start-example.tsx delete mode 100644 packages/apollo-wind/src/examples/form-builder-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/new-project-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/new-project-example.tsx delete mode 100644 packages/apollo-wind/src/examples/settings-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/settings-example.tsx delete mode 100644 packages/apollo-wind/src/examples/vscode-example.stories.tsx delete mode 100644 packages/apollo-wind/src/examples/vscode-example.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/colors.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/colors.ts create mode 100644 packages/apollo-wind/src/foundation/Future/future-theme.css create mode 100644 packages/apollo-wind/src/foundation/Future/icons.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/legacy-theme.css create mode 100644 packages/apollo-wind/src/foundation/Future/radius.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/radius.ts create mode 100644 packages/apollo-wind/src/foundation/Future/responsive.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/responsive.ts create mode 100644 packages/apollo-wind/src/foundation/Future/shadows.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/shadows.ts create mode 100644 packages/apollo-wind/src/foundation/Future/spacing.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/spacing.ts create mode 100644 packages/apollo-wind/src/foundation/Future/strokes.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/strokes.ts create mode 100644 packages/apollo-wind/src/foundation/Future/theme.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/types.ts create mode 100644 packages/apollo-wind/src/foundation/Future/typography.stories.tsx create mode 100644 packages/apollo-wind/src/foundation/Future/typography.ts rename packages/apollo-wind/src/foundation/{ => Legacy}/colors.stories.tsx (99%) rename packages/apollo-wind/src/foundation/{ => Legacy}/icons.stories.tsx (99%) rename packages/apollo-wind/src/foundation/{ => Legacy}/spacing.stories.tsx (99%) rename packages/apollo-wind/src/foundation/{ => Legacy}/typography.stories.tsx (99%) delete mode 100644 packages/apollo-wind/src/foundation/colors-future.stories.tsx delete mode 100644 packages/apollo-wind/src/foundation/icons-future.stories.tsx delete mode 100644 packages/apollo-wind/src/foundation/spacing-future.stories.tsx delete mode 100644 packages/apollo-wind/src/foundation/typography-future.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Admin/admin.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Delegate/delegate.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Delegate/template-delegate.tsx create mode 100644 packages/apollo-wind/src/templates/EmptyErrors/empty-errors.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Flow/flow.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Flow/template-flow.tsx rename packages/apollo-wind/src/templates/{ => Forms}/form-builder-example.stories.tsx (100%) rename packages/apollo-wind/src/{examples => templates/Forms}/form-builder-example.tsx (100%) create mode 100644 packages/apollo-wind/src/templates/Maestro/maestro.stories.tsx create mode 100644 packages/apollo-wind/src/templates/Maestro/template-maestro.tsx create mode 100644 packages/apollo-wind/src/templates/More/more.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/admin-layout-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/admin-layout-example.tsx delete mode 100644 packages/apollo-wind/src/templates/app-shell-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/app-shell-example.tsx delete mode 100644 packages/apollo-wind/src/templates/dashboard-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/dashboard-example.tsx delete mode 100644 packages/apollo-wind/src/templates/data-management-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/data-management-example.tsx delete mode 100644 packages/apollo-wind/src/templates/delegate.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/flow-editor-layout-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/flow-editor-layout-example.tsx delete mode 100644 packages/apollo-wind/src/templates/flow-start-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/flow-start-example.tsx delete mode 100644 packages/apollo-wind/src/templates/flow.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/form-builder-example.tsx delete mode 100644 packages/apollo-wind/src/templates/new-project-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/new-project-example.tsx delete mode 100644 packages/apollo-wind/src/templates/settings-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/settings-example.tsx delete mode 100644 packages/apollo-wind/src/templates/vscode-example.stories.tsx delete mode 100644 packages/apollo-wind/src/templates/vscode-example.tsx diff --git a/packages/apollo-wind/.storybook/main.ts b/packages/apollo-wind/.storybook/main.ts index 572e831ba..66aeeda74 100644 --- a/packages/apollo-wind/.storybook/main.ts +++ b/packages/apollo-wind/.storybook/main.ts @@ -34,7 +34,19 @@ if (isDev) { const config: StorybookConfig = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], - addons: ['@storybook/addon-links', '@storybook/addon-docs'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-docs', + '@storybook/addon-a11y', + '@storybook/addon-mcp', + ], + + // Enable the component manifest so Storybook MCP can expose + // machine-readable component metadata (APIs, props, usage examples) + // to AI agents and coding tools. + features: { + experimentalComponentsManifest: true, + }, // Serve only public/ (e.g. ui-path.svg for sidebar logo); single dir to avoid route conflicts staticDirs: ['../public'], diff --git a/packages/apollo-wind/.storybook/manager.js b/packages/apollo-wind/.storybook/manager.js index d1ff96415..15b1d8bfe 100644 --- a/packages/apollo-wind/.storybook/manager.js +++ b/packages/apollo-wind/.storybook/manager.js @@ -4,6 +4,6 @@ import theme from './theme'; addons.setConfig({ theme, sidebar: { - collapsedRoots: ['theme', 'forms'], + collapsedRoots: ['forms'], }, }); diff --git a/packages/apollo-wind/.storybook/manager.ts b/packages/apollo-wind/.storybook/manager.ts index d1ff96415..6b3749784 100644 --- a/packages/apollo-wind/.storybook/manager.ts +++ b/packages/apollo-wind/.storybook/manager.ts @@ -3,7 +3,8 @@ import theme from './theme'; addons.setConfig({ theme, + showPanel: false, sidebar: { - collapsedRoots: ['theme', 'forms'], + collapsedRoots: ['components', 'forms'], }, }); diff --git a/packages/apollo-wind/.storybook/preview-head.html b/packages/apollo-wind/.storybook/preview-head.html index 8180973ce..23bd16877 100644 --- a/packages/apollo-wind/.storybook/preview-head.html +++ b/packages/apollo-wind/.storybook/preview-head.html @@ -1,3 +1,11 @@ + + + + + ; }; const ChartTooltip = RechartsPrimitive.Tooltip; @@ -232,7 +236,7 @@ function ChartTooltipContent({ {itemConfig?.label || item.name} - {item.value && ( + {item.value != null && ( {item.value.toLocaleString()} diff --git a/packages/apollo-wind/src/components/ui/data-table.stories.tsx b/packages/apollo-wind/src/components/ui/data-table.stories.tsx index 476985997..2ca23a6af 100644 --- a/packages/apollo-wind/src/components/ui/data-table.stories.tsx +++ b/packages/apollo-wind/src/components/ui/data-table.stories.tsx @@ -34,7 +34,6 @@ import { DropdownMenuTrigger, } from './dropdown-menu'; import type { EditableCellMeta } from './editable-cell'; -import { Input } from './input'; import { Label } from './label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select'; import { Separator } from './separator'; diff --git a/packages/apollo-wind/src/components/ui/data-table.tsx b/packages/apollo-wind/src/components/ui/data-table.tsx index 7e70ca5f2..31a5f684e 100644 --- a/packages/apollo-wind/src/components/ui/data-table.tsx +++ b/packages/apollo-wind/src/components/ui/data-table.tsx @@ -74,7 +74,7 @@ export function DataTable({ const [sorting, setSorting] = React.useState([]); const [columnFilters, setColumnFilters] = React.useState([]); const [columnVisibility, setColumnVisibility] = React.useState({}); - const [internalRowSelection, setInternalRowSelection] = React.useState({}); + const [internalRowSelection, setInternalRowSelection] = React.useState>({}); const isControlled = controlledRowSelection !== undefined; const rowSelection = isControlled ? controlledRowSelection : internalRowSelection; diff --git a/packages/apollo-wind/src/components/ui/hover-card.stories.tsx b/packages/apollo-wind/src/components/ui/hover-card.stories.tsx index 5a4f4341e..d64471acb 100644 --- a/packages/apollo-wind/src/components/ui/hover-card.stories.tsx +++ b/packages/apollo-wind/src/components/ui/hover-card.stories.tsx @@ -2,10 +2,8 @@ import type { Meta } from '@storybook/react-vite'; import { Calendar, ExternalLink, - FileText, GitBranch, MapPin, - MoreHorizontal, Star, Users, } from 'lucide-react'; diff --git a/packages/apollo-wind/src/components/ui/tabs.stories.tsx b/packages/apollo-wind/src/components/ui/tabs.stories.tsx index fb9d3d597..48b0a0dab 100644 --- a/packages/apollo-wind/src/components/ui/tabs.stories.tsx +++ b/packages/apollo-wind/src/components/ui/tabs.stories.tsx @@ -1,5 +1,5 @@ import type { Meta } from '@storybook/react-vite'; -import { Bell, CreditCard, Settings, Shield, User } from 'lucide-react'; +import { Bell, Shield, User } from 'lucide-react'; import { Button } from './button'; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './card'; import { Input } from './input'; diff --git a/packages/apollo-wind/src/templates/Experiments/ideas.stories.tsx b/packages/apollo-wind/src/templates/Experiments/ideas.stories.tsx index 6104db916..23b6f34fb 100644 --- a/packages/apollo-wind/src/templates/Experiments/ideas.stories.tsx +++ b/packages/apollo-wind/src/templates/Experiments/ideas.stories.tsx @@ -50,7 +50,7 @@ import { // Template components — available to the LLM via liveScope import { MaestroTemplate, Canvas, Grid, GridItem } from '../Maestro/template-maestro'; -import { Panel } from '@/components/custom/panel-maestro'; +import { MaestroPanel } from '@/components/custom/panel-maestro'; import { FlowTemplate } from '../Flow/template-flow'; import { DelegateTemplate } from '../Delegate/template-delegate'; import { @@ -107,7 +107,7 @@ const baseLiveScope = { Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, // Templates & layout primitives - MaestroTemplate, Canvas, Grid, GridItem, Panel, + MaestroTemplate, Canvas, Grid, GridItem, MaestroPanel, FlowTemplate, DelegateTemplate, AdminTemplate, AdminSidebar, AdminSidebarHeader, AdminSidebarNav, AdminPageHeader, AdminToolbar, @@ -132,7 +132,7 @@ function getTemplateInstruction(template: TemplateChoice): string { MaestroTemplate props: theme, title, tenantName, defaultLeftPanelCollapsed, leftPanelContent (ReactNode), defaultRightPanelCollapsed, rightPanelContent (ReactNode), children (main canvas). -Sub-components available: Canvas (scrollable main area), Grid + GridItem (responsive grid), Panel (collapsible side panel). +Sub-components available: Canvas (scrollable main area), Grid + GridItem (responsive grid), MaestroPanel (collapsible side panel). Use Grid with GridItem children for dashboard-style card layouts. GridItem accepts colSpan and rowSpan for sizing. leftPanelContent and rightPanelContent render inside collapsible panels.`; diff --git a/packages/apollo-wind/src/templates/Maestro/template-maestro.tsx b/packages/apollo-wind/src/templates/Maestro/template-maestro.tsx index 0b328108e..fd9420155 100644 --- a/packages/apollo-wind/src/templates/Maestro/template-maestro.tsx +++ b/packages/apollo-wind/src/templates/Maestro/template-maestro.tsx @@ -2,15 +2,15 @@ import * as React from 'react'; import type { MaestroHeaderProps } from '@/components/custom/global-header'; import { MaestroHeader } from '@/components/custom/global-header'; import { Canvas, Grid, GridItem } from '@/components/custom/grid-maestro'; -import type { PanelProps } from '@/components/custom/panel-maestro'; -import { Panel } from '@/components/custom/panel-maestro'; +import type { MaestroPanelProps } from '@/components/custom/panel-maestro'; +import { MaestroPanel } from '@/components/custom/panel-maestro'; import { ViewportGuard } from '@/components/custom/viewport-guard'; import type { FutureTheme } from '@/foundation/Future/types'; import { fontFamily } from '@/foundation/Future/typography'; import { cn } from '@/lib'; // Re-export types and components for convenience -export type { MaestroHeaderProps, PanelProps }; +export type { MaestroHeaderProps, MaestroPanelProps }; export { Canvas, Grid, GridItem }; // ============================================================================ @@ -61,9 +61,9 @@ export interface MaestroTemplateProps { * * Composed of: * - **MaestroHeader** — global header with logo, actions, tenant selector, avatar - * - **Panel side="left"** — collapsible left panel (300px expanded / 32px collapsed) + * - **MaestroPanel side="left"** — collapsible left panel (300px expanded / 32px collapsed) * - **Canvas** — scrollable main area with ResizeObserver-based grid reflow - * - **Panel side="right"** — collapsible right panel (300px expanded / 32px collapsed) + * - **MaestroPanel side="right"** — collapsible right panel (300px expanded / 32px collapsed) * * ### Responsive auto-collapse * @@ -150,25 +150,25 @@ export function MaestroTemplate({ {/* Body: left panel + canvas + right panel */}
{/* Left panel */} - setLeftCollapsed((prev) => !prev)} > {leftPanelContent} - + {/* Canvas (main content) */} {children} {/* Right panel */} - setRightCollapsed((prev) => !prev)} > {rightPanelContent} - +