@utopia-studio-design/design-system-cli 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -10
- package/bin/utopia-ds-mcp.mjs +6 -2
- package/bin/utopia-ds.mjs +94 -21
- package/data/docs/arabic-friendly.md +19 -2
- package/data/docs/billing-setup.md +80 -0
- package/data/docs/cer-003-032-033-round-8-repair.md +41 -0
- package/data/docs/cer-007-checkout.md +51 -0
- package/data/docs/cer-008-011-qa-repair.md +64 -0
- package/data/docs/cer-016-023-round-6-repair.md +92 -0
- package/data/docs/cer-024-031-round-7-repair.md +51 -0
- package/data/docs/cer-033-035-036-round-12-repair.md +37 -0
- package/data/docs/cer-035-037-round-10-repair.md +34 -0
- package/data/docs/charts.md +34 -3
- package/data/docs/chat-service-methodology.md +181 -0
- package/data/docs/code-block.md +20 -0
- package/data/docs/creative-production.md +149 -0
- package/data/docs/designer-agent-backend-contract.md +552 -0
- package/data/docs/email-resend.md +29 -0
- package/data/docs/foundations.md +46 -8
- package/data/docs/guide.md +9 -9
- package/data/docs/handover-billing-aiden.md +132 -0
- package/data/docs/logo-maker-methodology.md +109 -0
- package/data/docs/presentation-asset-repository.md +53 -0
- package/data/docs/product-architecture.md +42 -0
- package/data/docs/quick-start-ai.md +4 -4
- package/data/docs/shadcn-conversion.md +1 -1
- package/data/docs/sidebar-placement.md +56 -0
- package/data/docs/theme-authoring.md +6 -3
- package/data/manifests/catalog.json +42 -46
- package/data/manifests/components.json +317 -66
- package/data/manifests/logo-skills.json +174 -0
- package/data/manifests/motion-profiles.json +2 -2
- package/data/manifests/patterns.json +201 -7
- package/data/manifests/presentation-assets.schema.json +44 -0
- package/data/manifests/templates.json +87 -1
- package/data/manifests/theme-dextrum.json +7 -7
- package/data/manifests/theme-prism-mono.json +19 -0
- package/data/manifests/theme-utopia-cloudblur.json +135 -0
- package/data/manifests/theme-utopia-default.json +31 -31
- package/data/manifests/theme-vyapti.json +17 -1
- package/data/manifests/theme-y2k-pop.json +18 -0
- package/data/manifests/themes.json +285 -57
- package/data/templates/analytics-dashboard/main.tsx +14 -1
- package/data/templates/calendar-application/main.tsx +14 -1
- package/data/templates/chat-workspace/README.md +12 -0
- package/data/templates/chat-workspace/index.html +11 -0
- package/data/templates/chat-workspace/main.tsx +97 -0
- package/data/templates/chat-workspace/styles.css +19 -0
- package/data/templates/chat-workspace/template.manifest.json +13 -0
- package/data/templates/composition-registry-lab/main.tsx +12 -1
- package/data/templates/dashboard-composer/main.tsx +14 -1
- package/data/templates/database-workspace/main.tsx +14 -1
- package/data/templates/interaction-lab/main.tsx +12 -1
- package/data/templates/quantum-verification-story/README.md +12 -0
- package/data/templates/quantum-verification-story/components.json +21 -0
- package/data/templates/quantum-verification-story/eslint.config.mjs +13 -0
- package/data/templates/quantum-verification-story/next-env.d.ts +7 -0
- package/data/templates/quantum-verification-story/next.config.mjs +11 -0
- package/data/templates/quantum-verification-story/package-lock.json +7535 -0
- package/data/templates/quantum-verification-story/package.json +46 -0
- package/data/templates/quantum-verification-story/postcss.config.js +6 -0
- package/data/templates/quantum-verification-story/src/app/assessment/page.tsx +138 -0
- package/data/templates/quantum-verification-story/src/app/ceramic-theme.css +48 -0
- package/data/templates/quantum-verification-story/src/app/deployment/page.tsx +178 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Bold.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Medium.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Regular.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/ReadexPro-Variable.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-350.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-500.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-700.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/globals.css +175 -0
- package/data/templates/quantum-verification-story/src/app/layout.tsx +45 -0
- package/data/templates/quantum-verification-story/src/app/not-found.tsx +39 -0
- package/data/templates/quantum-verification-story/src/app/page.tsx +24 -0
- package/data/templates/quantum-verification-story/src/app/products/page.tsx +132 -0
- package/data/templates/quantum-verification-story/src/app/utopia-default.css +312 -0
- package/data/templates/quantum-verification-story/src/components/RotatingText.css +36 -0
- package/data/templates/quantum-verification-story/src/components/RotatingText.tsx +189 -0
- package/data/templates/quantum-verification-story/src/components/brand-mark.tsx +14 -0
- package/data/templates/quantum-verification-story/src/components/console-preview-section.tsx +57 -0
- package/data/templates/quantum-verification-story/src/components/console-preview.tsx +72 -0
- package/data/templates/quantum-verification-story/src/components/fade-up.tsx +54 -0
- package/data/templates/quantum-verification-story/src/components/floating-network.tsx +125 -0
- package/data/templates/quantum-verification-story/src/components/footer.tsx +83 -0
- package/data/templates/quantum-verification-story/src/components/harvest-timeline.tsx +70 -0
- package/data/templates/quantum-verification-story/src/components/lattice-diagram.tsx +73 -0
- package/data/templates/quantum-verification-story/src/components/lattice-field.tsx +129 -0
- package/data/templates/quantum-verification-story/src/components/nav.tsx +104 -0
- package/data/templates/quantum-verification-story/src/components/presentation-layout.tsx +91 -0
- package/data/templates/quantum-verification-story/src/components/readiness-estimator.tsx +135 -0
- package/data/templates/quantum-verification-story/src/components/scramble-text.tsx +60 -0
- package/data/templates/quantum-verification-story/src/components/section-backdrop.tsx +38 -0
- package/data/templates/quantum-verification-story/src/components/sections/clients.tsx +140 -0
- package/data/templates/quantum-verification-story/src/components/sections/contact.tsx +125 -0
- package/data/templates/quantum-verification-story/src/components/sections/hero.tsx +92 -0
- package/data/templates/quantum-verification-story/src/components/sections/moat.tsx +73 -0
- package/data/templates/quantum-verification-story/src/components/sections/offer.tsx +113 -0
- package/data/templates/quantum-verification-story/src/components/sections/pilot.tsx +63 -0
- package/data/templates/quantum-verification-story/src/components/sections/problem.tsx +53 -0
- package/data/templates/quantum-verification-story/src/components/text-particle.tsx +204 -0
- package/data/templates/quantum-verification-story/src/components/ticker.tsx +27 -0
- package/data/templates/quantum-verification-story/src/components/ui/badge.tsx +29 -0
- package/data/templates/quantum-verification-story/src/components/ui/button.tsx +55 -0
- package/data/templates/quantum-verification-story/src/components/ui/card.tsx +46 -0
- package/data/templates/quantum-verification-story/src/components/ui/cursor-driven-particle-typography.tsx +288 -0
- package/data/templates/quantum-verification-story/src/components/ui/input.tsx +20 -0
- package/data/templates/quantum-verification-story/src/components/ui/label.tsx +21 -0
- package/data/templates/quantum-verification-story/src/components/ui/separator.tsx +25 -0
- package/data/templates/quantum-verification-story/src/components/ui/textarea.tsx +19 -0
- package/data/templates/quantum-verification-story/src/lib/utils.ts +6 -0
- package/data/templates/quantum-verification-story/tailwind.config.js +95 -0
- package/data/templates/quantum-verification-story/template.manifest.json +23 -0
- package/data/templates/quantum-verification-story/tsconfig.json +42 -0
- package/data/templates/saas-solution-homepage/main.tsx +91 -14
- package/data/templates/saas-solution-homepage/privacy/index.html +1 -0
- package/data/templates/saas-solution-homepage/styles.css +47 -2
- package/data/templates/saas-solution-homepage/team/index.html +1 -0
- package/data/templates/saas-solution-homepage/template.manifest.json +41 -0
- package/data/templates/saas-solution-homepage/terms/index.html +1 -0
- package/lib/api.mjs +52 -3
- package/lib/template-runtime.mjs +1 -0
- package/package.json +2 -2
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"category": "Disclosure",
|
|
6
6
|
"status": "available",
|
|
7
7
|
"packageImport": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@utopia-studio-design/design-system/Accordion';",
|
|
8
|
-
"sourcePath": "packages/design-system/src/components/
|
|
8
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
9
9
|
"shadcnFoundation": [
|
|
10
10
|
"accordion",
|
|
11
11
|
"Radix Accordion",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
],
|
|
46
46
|
"ai": {
|
|
47
47
|
"props": {
|
|
48
|
+
"SidebarProvider.placement": "Sets the navigation's logical side to start or end. Defaults to start and remains semantic across LTR and RTL.",
|
|
48
49
|
"type": "Use single for one open item, multiple for independent open items.",
|
|
49
50
|
"collapsible": "Allow the active single item to close when the content is optional.",
|
|
50
51
|
"AccordionItem": "Requires a stable value for Radix state.",
|
|
@@ -111,7 +112,7 @@
|
|
|
111
112
|
"category": "Feedback",
|
|
112
113
|
"status": "available",
|
|
113
114
|
"packageImport": "import { Alert, AlertDescription, AlertTitle } from '@utopia-studio-design/design-system/Alert';",
|
|
114
|
-
"sourcePath": "packages/design-system/src/components/
|
|
115
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
115
116
|
"shadcnFoundation": [
|
|
116
117
|
"alert",
|
|
117
118
|
"shadcn/ui registry",
|
|
@@ -178,7 +179,7 @@
|
|
|
178
179
|
"category": "Feedback",
|
|
179
180
|
"status": "available",
|
|
180
181
|
"packageImport": "import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@utopia-studio-design/design-system/AlertDialog';",
|
|
181
|
-
"sourcePath": "packages/design-system/src/components/
|
|
182
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
182
183
|
"shadcnFoundation": [
|
|
183
184
|
"alert-dialog",
|
|
184
185
|
"Radix AlertDialog",
|
|
@@ -281,7 +282,7 @@
|
|
|
281
282
|
"category": "Data Display",
|
|
282
283
|
"status": "available",
|
|
283
284
|
"packageImport": "import { Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentGroup, AttachmentMedia, AttachmentTitle, AttachmentTrigger } from '@utopia-studio-design/design-system/Attachment';",
|
|
284
|
-
"sourcePath": "packages/design-system/src/components/
|
|
285
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
285
286
|
"shadcnFoundation": [
|
|
286
287
|
"attachment",
|
|
287
288
|
"shadcn/ui registry",
|
|
@@ -333,7 +334,7 @@
|
|
|
333
334
|
"AttachmentMedia": "Leading media slot for file icon, image thumbnail, spinner, or generated artifact preview. Use variant=\"image\" for thumbnails.",
|
|
334
335
|
"AttachmentContent": "Text content wrapper containing title and description.",
|
|
335
336
|
"AttachmentActions": "Inline-end action group for open, remove, retry, or download actions.",
|
|
336
|
-
"AttachmentTrigger": "Dashed add/upload trigger; product owns file input behavior."
|
|
337
|
+
"AttachmentTrigger": "Dashed add/upload trigger; product owns file input behavior. Inside ChatComposer toolbarStart it resolves to the compact semantic chat action size and retains a visible focus ring."
|
|
337
338
|
},
|
|
338
339
|
"arabicFriendly": "Use AttachmentMedia at inline-start and AttachmentActions at inline-end. In dir=\"rtl\", action placement, progress, image cards, and truncation must mirror through logical layout. Do not invent Arabic file names or production copy."
|
|
339
340
|
}
|
|
@@ -627,8 +628,8 @@
|
|
|
627
628
|
"name": "Bubble",
|
|
628
629
|
"category": "Data Display",
|
|
629
630
|
"status": "available",
|
|
630
|
-
"packageImport": "import { Bubble } from '@utopia-studio-design/design-system/
|
|
631
|
-
"sourcePath": "packages/design-system/src/components/
|
|
631
|
+
"packageImport": "import { Bubble } from '@utopia-studio-design/design-system/Primitives';",
|
|
632
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
632
633
|
"shadcnFoundation": [
|
|
633
634
|
"bubble",
|
|
634
635
|
"shadcn/ui registry",
|
|
@@ -939,8 +940,8 @@
|
|
|
939
940
|
"name": "Carousel",
|
|
940
941
|
"category": "Data Display",
|
|
941
942
|
"status": "available",
|
|
942
|
-
"packageImport": "import { Carousel, CarouselButton, CarouselContent, CarouselControls, CarouselItem } from '@utopia-studio-design/design-system/
|
|
943
|
-
"sourcePath": "packages/design-system/src/components/
|
|
943
|
+
"packageImport": "import { Carousel, CarouselButton, CarouselContent, CarouselControls, CarouselItem } from '@utopia-studio-design/design-system/Primitives';",
|
|
944
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
944
945
|
"shadcnFoundation": [
|
|
945
946
|
"carousel",
|
|
946
947
|
"scroll snap carousel",
|
|
@@ -983,8 +984,8 @@
|
|
|
983
984
|
"name": "Chart",
|
|
984
985
|
"category": "Data Display",
|
|
985
986
|
"status": "available",
|
|
986
|
-
"packageImport": "import { Chart, ChartBars } from '@utopia-studio-design/design-system/
|
|
987
|
-
"sourcePath": "packages/design-system/src/components/
|
|
987
|
+
"packageImport": "import { Chart, ChartBars } from '@utopia-studio-design/design-system/Primitives';",
|
|
988
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
988
989
|
"shadcnFoundation": [
|
|
989
990
|
"chart",
|
|
990
991
|
"shadcn/ui chart pattern",
|
|
@@ -1048,7 +1049,7 @@
|
|
|
1048
1049
|
"--interaction-selection-border"
|
|
1049
1050
|
],
|
|
1050
1051
|
"useWhen": [
|
|
1051
|
-
"Application analytics need
|
|
1052
|
+
"Application analytics need Cartesian, radial, matrix, hierarchy, financial, flow, range, or compact KPI chart families",
|
|
1052
1053
|
"Charts need controlled series visibility and keyboard point exploration",
|
|
1053
1054
|
"Loading, empty, error, partial, and ready data states must remain explicit",
|
|
1054
1055
|
"A semantic data table is required as the exact-value alternative"
|
|
@@ -1068,7 +1069,8 @@
|
|
|
1068
1069
|
],
|
|
1069
1070
|
"ai": {
|
|
1070
1071
|
"props": {
|
|
1071
|
-
"
|
|
1072
|
+
"appearance": "'default' | 'mono-rounded'. The mono-rounded preset adapts Amicro Monocharts' monochrome palette and rounded geometry without changing the semantic chart contract.",
|
|
1073
|
+
"type": "Supports 26 families: line, bar, area, stacked, scatter, donut, composed, step, candlestick, kpi, pyramid, radial, gauge, bullet, sankey, radar, funnel, heatmap, sparkline, bubble, treemap, stream, meter, waterfall, polar, and range.",
|
|
1072
1074
|
"state": "'loading' | 'empty' | 'error' | 'partial' | 'ready'",
|
|
1073
1075
|
"renderer": "Optional tree-shakeable adapter implementing ChartRendererProps.",
|
|
1074
1076
|
"direction": "'ltr' | 'rtl'. Changes chronological rendering and logical Arrow key exploration.",
|
|
@@ -1190,7 +1192,16 @@
|
|
|
1190
1192
|
"--focus-ring-width",
|
|
1191
1193
|
"--radius-chat-bubble",
|
|
1192
1194
|
"--radius-chat-composer",
|
|
1193
|
-
"--radius-chat-token"
|
|
1195
|
+
"--radius-chat-token",
|
|
1196
|
+
"--font-size-workspace-body",
|
|
1197
|
+
"--font-size-workspace-label",
|
|
1198
|
+
"--line-height-workspace-body",
|
|
1199
|
+
"--workspace-panel-padding",
|
|
1200
|
+
"--workspace-content-max-inline-size",
|
|
1201
|
+
"--workspace-composer-min-block-size",
|
|
1202
|
+
"--chat-composer-action-size",
|
|
1203
|
+
"--chat-composer-action-icon-size",
|
|
1204
|
+
"--chat-scroller-end-reserve"
|
|
1194
1205
|
],
|
|
1195
1206
|
"useWhen": [
|
|
1196
1207
|
"Building assistant, support, collaboration, or AI product chat surfaces",
|
|
@@ -1211,6 +1222,10 @@
|
|
|
1211
1222
|
"ai": {
|
|
1212
1223
|
"props": {
|
|
1213
1224
|
"dir": "Use inherited dir by default. Set dir=\"rtl\" only for isolated smoke tests.",
|
|
1225
|
+
"density": "Use compact for persistent product workspaces such as agent consoles and editors; keep default for standalone conversational surfaces.",
|
|
1226
|
+
"drawer": "Render selected attachment or context previews above the input. Do not place the upload trigger or send action here.",
|
|
1227
|
+
"toolbarStart": "Render compact source, attachment, or add controls at the logical start of the bottom toolbar. Icon-only controls inherit the chat action-size contract; do not restore the theme's default button size in page CSS.",
|
|
1228
|
+
"actions": "Render send, stop, dictation, or model actions at the logical end of the same bottom toolbar. Chat action size and icon scale stay proportional to workspace typography through semantic tokens.",
|
|
1214
1229
|
"role": "Use user, assistant, or system where the component exposes message role.",
|
|
1215
1230
|
"metadata": "Pass localized timestamp/read/tool metadata from the app layer.",
|
|
1216
1231
|
"children": "Use product-owned copy. The design system supplies layout and tokens only.",
|
|
@@ -1593,9 +1608,12 @@
|
|
|
1593
1608
|
"ai": {
|
|
1594
1609
|
"props": {
|
|
1595
1610
|
"dir": "Use inherited dir by default. Set dir=\"rtl\" only for isolated smoke tests.",
|
|
1596
|
-
"
|
|
1597
|
-
"
|
|
1598
|
-
"
|
|
1611
|
+
"scrollMode": "Use managed for viewport-height agent, assistant, or support workspaces; keep static when the document intentionally owns a short transcript.",
|
|
1612
|
+
"messagesLabel": "Required localized region name when scrollMode is managed.",
|
|
1613
|
+
"jumpToLatestLabel": "Required localized live-edge action name when scrollMode is managed.",
|
|
1614
|
+
"composerSubmission": "In managed mode, submitting from the Chat Composer returns the conversation to the live edge after the new message commits. Offscreen assistant updates still preserve the reader's position until they submit or choose the jump action.",
|
|
1615
|
+
"isStreaming": "Reflect the truthful current response state; it never starts or simulates generation.",
|
|
1616
|
+
"children": "Use product-owned copy. The design system supplies layout, scrolling behavior, and tokens only."
|
|
1599
1617
|
},
|
|
1600
1618
|
"arabicFriendly": "Chat components use logical spacing, role-based alignment, mixed-script safe typography, and mirrored message flow in dir=\"rtl\". Do not invent Arabic copy in reusable components."
|
|
1601
1619
|
}
|
|
@@ -1632,7 +1650,10 @@
|
|
|
1632
1650
|
"--focus-ring-width",
|
|
1633
1651
|
"--radius-chat-bubble",
|
|
1634
1652
|
"--radius-chat-composer",
|
|
1635
|
-
"--radius-chat-token"
|
|
1653
|
+
"--radius-chat-token",
|
|
1654
|
+
"--chat-composer-action-size",
|
|
1655
|
+
"--chat-composer-action-icon-size",
|
|
1656
|
+
"--chat-scroller-end-reserve"
|
|
1636
1657
|
],
|
|
1637
1658
|
"useWhen": [
|
|
1638
1659
|
"Building assistant, support, collaboration, or AI product chat surfaces",
|
|
@@ -1656,11 +1677,64 @@
|
|
|
1656
1677
|
"role": "Use user, assistant, or system where the component exposes message role.",
|
|
1657
1678
|
"metadata": "Pass localized timestamp/read/tool metadata from the app layer.",
|
|
1658
1679
|
"children": "Use product-owned copy. The design system supplies layout and tokens only.",
|
|
1659
|
-
"accessibilityText": "The required accessibilityLabel prop names the scroll action; the optional label prop is localized visible status copy."
|
|
1680
|
+
"accessibilityText": "The required accessibilityLabel prop names the scroll action; the optional label prop is localized visible status copy.",
|
|
1681
|
+
"placement": "Managed message scrollers reserve a dedicated end rail for this action. Do not position it over tool, input, or message content."
|
|
1660
1682
|
},
|
|
1661
1683
|
"arabicFriendly": "Chat components use logical spacing, role-based alignment, mixed-script safe typography, and mirrored message flow in dir=\"rtl\". Do not invent Arabic copy in reusable components."
|
|
1662
1684
|
}
|
|
1663
1685
|
},
|
|
1686
|
+
{
|
|
1687
|
+
"name": "Chat Message Scroller",
|
|
1688
|
+
"category": "Chat",
|
|
1689
|
+
"status": "available",
|
|
1690
|
+
"packageImport": "import { ChatMessageScroller } from '@utopia-studio-design/design-system/Chat';",
|
|
1691
|
+
"sourcePath": "packages/design-system/src/components/Chat.tsx",
|
|
1692
|
+
"shadcnFoundation": [
|
|
1693
|
+
"message-scroller behavior",
|
|
1694
|
+
"scroll-area",
|
|
1695
|
+
"AI/chat product primitive",
|
|
1696
|
+
"semantic Utopia wrapper"
|
|
1697
|
+
],
|
|
1698
|
+
"fallbackToShadcn": "message-scroller",
|
|
1699
|
+
"requiredTokens": [
|
|
1700
|
+
"--surface-elevated",
|
|
1701
|
+
"--foreground",
|
|
1702
|
+
"--ring",
|
|
1703
|
+
"--focus-ring-width",
|
|
1704
|
+
"--workspace-panel-padding",
|
|
1705
|
+
"--workspace-content-max-inline-size",
|
|
1706
|
+
"--motion-duration-reveal",
|
|
1707
|
+
"--motion-ease-standard"
|
|
1708
|
+
],
|
|
1709
|
+
"useWhen": [
|
|
1710
|
+
"A conversation owns internal scrolling inside an agent, assistant, or support workspace",
|
|
1711
|
+
"Streaming should follow only while the user remains at the live edge",
|
|
1712
|
+
"History prepend, reload, and offscreen updates must preserve reading position"
|
|
1713
|
+
],
|
|
1714
|
+
"avoidWhen": [
|
|
1715
|
+
"The transcript is short static content and the document intentionally owns scrolling",
|
|
1716
|
+
"The surface is a marketing testimonial rather than an interactive conversation"
|
|
1717
|
+
],
|
|
1718
|
+
"neverInvent": [
|
|
1719
|
+
"Always-on bottom locking that interrupts reading",
|
|
1720
|
+
"Unlocalized region and jump-action labels",
|
|
1721
|
+
"Visible scrollbar chrome on Ceramic product surfaces",
|
|
1722
|
+
"Page-local scroll ownership for a managed conversation",
|
|
1723
|
+
"Left/right-only layout rules",
|
|
1724
|
+
"Utopia brand primitives inside reusable component logic"
|
|
1725
|
+
],
|
|
1726
|
+
"ai": {
|
|
1727
|
+
"props": {
|
|
1728
|
+
"accessibilityLabel": "Required localized name for the scrollable message region.",
|
|
1729
|
+
"jumpToLatestLabel": "Required localized action name for the live-edge control.",
|
|
1730
|
+
"isStreaming": "Reflect the truthful current response state so the log exposes aria-busy and follows only at the live edge.",
|
|
1731
|
+
"scrollToEnd": "Use the imperative handle only for explicit live-edge intent such as composer submission or the localized jump action; never use it to interrupt a reader for passive offscreen updates.",
|
|
1732
|
+
"defaultPosition": "Use end for existing conversations and start only for intentionally top-origin transcripts.",
|
|
1733
|
+
"preserveScrollOnPrepend": "Keep enabled when loading older history above the current viewport."
|
|
1734
|
+
},
|
|
1735
|
+
"arabicFriendly": "Uses logical placement for the live-edge action and inherits dir for mixed-script messages without changing chronological DOM order."
|
|
1736
|
+
}
|
|
1737
|
+
},
|
|
1664
1738
|
{
|
|
1665
1739
|
"name": "Chat Message",
|
|
1666
1740
|
"category": "Chat",
|
|
@@ -1933,7 +2007,9 @@
|
|
|
1933
2007
|
"--focus-ring-width",
|
|
1934
2008
|
"--radius-chat-bubble",
|
|
1935
2009
|
"--radius-chat-composer",
|
|
1936
|
-
"--radius-chat-token"
|
|
2010
|
+
"--radius-chat-token",
|
|
2011
|
+
"--chat-composer-action-size",
|
|
2012
|
+
"--chat-composer-action-icon-size"
|
|
1937
2013
|
],
|
|
1938
2014
|
"useWhen": [
|
|
1939
2015
|
"Building assistant, support, collaboration, or AI product chat surfaces",
|
|
@@ -1957,7 +2033,8 @@
|
|
|
1957
2033
|
"role": "Use user, assistant, or system where the component exposes message role.",
|
|
1958
2034
|
"metadata": "Pass localized timestamp/read/tool metadata from the app layer.",
|
|
1959
2035
|
"children": "Use product-owned copy. The design system supplies layout and tokens only.",
|
|
1960
|
-
"accessibilityText": "The required label prop is localized product copy for the send action and current state."
|
|
2036
|
+
"accessibilityText": "The required label prop is localized product copy for the send action and current state.",
|
|
2037
|
+
"size": "Uses the compact semantic chat action size and icon scale rather than the active theme's generic button height."
|
|
1961
2038
|
},
|
|
1962
2039
|
"arabicFriendly": "Chat components use logical spacing, role-based alignment, mixed-script safe typography, and mirrored message flow in dir=\"rtl\". Do not invent Arabic copy in reusable components."
|
|
1963
2040
|
}
|
|
@@ -2082,6 +2159,61 @@
|
|
|
2082
2159
|
"arabicFriendly": "Chat components use logical spacing, role-based alignment, mixed-script safe typography, and mirrored message flow in dir=\"rtl\". Do not invent Arabic copy in reusable components."
|
|
2083
2160
|
}
|
|
2084
2161
|
},
|
|
2162
|
+
{
|
|
2163
|
+
"name": "Chat Tool Panel",
|
|
2164
|
+
"category": "Chat",
|
|
2165
|
+
"status": "available",
|
|
2166
|
+
"packageImport": "import { ChatToolPanel } from '@utopia-studio-design/design-system/Chat';",
|
|
2167
|
+
"sourcePath": "packages/design-system/src/components/Chat.tsx",
|
|
2168
|
+
"shadcnFoundation": [
|
|
2169
|
+
"collapsible",
|
|
2170
|
+
"item",
|
|
2171
|
+
"AI/chat tool primitive",
|
|
2172
|
+
"semantic Utopia wrapper"
|
|
2173
|
+
],
|
|
2174
|
+
"fallbackToShadcn": "collapsible + item",
|
|
2175
|
+
"requiredTokens": [
|
|
2176
|
+
"--surface",
|
|
2177
|
+
"--surface-hover",
|
|
2178
|
+
"--surface-strong",
|
|
2179
|
+
"--foreground",
|
|
2180
|
+
"--foreground-subtle",
|
|
2181
|
+
"--border",
|
|
2182
|
+
"--radius-surface",
|
|
2183
|
+
"--workspace-row-min-block-size",
|
|
2184
|
+
"--workspace-panel-padding",
|
|
2185
|
+
"--chat-tool-panel-max-block-size",
|
|
2186
|
+
"--motion-duration-expand",
|
|
2187
|
+
"--motion-ease-standard"
|
|
2188
|
+
],
|
|
2189
|
+
"useWhen": [
|
|
2190
|
+
"Search, configuration, connection, or approval controls must stay inside the conversation",
|
|
2191
|
+
"A tool needs a compact summary when idle and a bounded work area when active",
|
|
2192
|
+
"Selected context should remain reviewable without displacing the composer"
|
|
2193
|
+
],
|
|
2194
|
+
"avoidWhen": [
|
|
2195
|
+
"The content is a generated preview or durable artifact; place that in the output rail",
|
|
2196
|
+
"The control is a single short action that fits directly in a message"
|
|
2197
|
+
],
|
|
2198
|
+
"neverInvent": [
|
|
2199
|
+
"Unbounded document-like sections inside the transcript",
|
|
2200
|
+
"Generated output inside the tool input panel",
|
|
2201
|
+
"Raw product status or counts that are not backed by data",
|
|
2202
|
+
"Page-local colors, radii, typography, or disclosure motion",
|
|
2203
|
+
"Left/right-only layout rules",
|
|
2204
|
+
"Utopia brand primitives inside reusable component logic"
|
|
2205
|
+
],
|
|
2206
|
+
"ai": {
|
|
2207
|
+
"props": {
|
|
2208
|
+
"title": "Required localized factual tool name.",
|
|
2209
|
+
"description": "Optional concise localized purpose; keep details inside expanded content.",
|
|
2210
|
+
"count": "Optional truthful count or compact status summary.",
|
|
2211
|
+
"expanded": "Use for controlled disclosure when product state must persist.",
|
|
2212
|
+
"onExpandedChange": "Persist disclosure only when it materially helps task recovery."
|
|
2213
|
+
},
|
|
2214
|
+
"arabicFriendly": "Uses logical grid placement and inherited direction; disclosure rotation is direction-neutral and chronological message order remains unchanged."
|
|
2215
|
+
}
|
|
2216
|
+
},
|
|
2085
2217
|
{
|
|
2086
2218
|
"name": "Chat Tool Calls",
|
|
2087
2219
|
"category": "Chat",
|
|
@@ -2114,7 +2246,12 @@
|
|
|
2114
2246
|
"--focus-ring-width",
|
|
2115
2247
|
"--radius-chat-bubble",
|
|
2116
2248
|
"--radius-chat-composer",
|
|
2117
|
-
"--radius-chat-token"
|
|
2249
|
+
"--radius-chat-token",
|
|
2250
|
+
"--font-size-body",
|
|
2251
|
+
"--font-size-small",
|
|
2252
|
+
"--line-height-body",
|
|
2253
|
+
"--font-size-workspace-label",
|
|
2254
|
+
"--line-height-workspace-body"
|
|
2118
2255
|
],
|
|
2119
2256
|
"useWhen": [
|
|
2120
2257
|
"Building assistant, support, collaboration, or AI product chat surfaces",
|
|
@@ -2138,6 +2275,7 @@
|
|
|
2138
2275
|
"role": "Use user, assistant, or system where the component exposes message role.",
|
|
2139
2276
|
"metadata": "Pass localized timestamp/read/tool metadata from the app layer.",
|
|
2140
2277
|
"children": "Use product-owned copy. The design system supplies layout and tokens only.",
|
|
2278
|
+
"status": "Use pending only for active work. It renders a complete circular track with a rotating indeterminate arc; reduced-motion keeps the ring visible and stops rotation.",
|
|
2141
2279
|
"accessibilityText": "The required label prop is a localized summary of the tool-call group; call labels, descriptions, durations, and states come from product data."
|
|
2142
2280
|
},
|
|
2143
2281
|
"arabicFriendly": "Chat components use logical spacing, role-based alignment, mixed-script safe typography, and mirrored message flow in dir=\"rtl\". Do not invent Arabic copy in reusable components."
|
|
@@ -2192,8 +2330,8 @@
|
|
|
2192
2330
|
"name": "Collapsible",
|
|
2193
2331
|
"category": "Disclosure",
|
|
2194
2332
|
"status": "available",
|
|
2195
|
-
"packageImport": "import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@utopia-studio-design/design-system/
|
|
2196
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2333
|
+
"packageImport": "import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
2334
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2197
2335
|
"shadcnFoundation": [
|
|
2198
2336
|
"collapsible",
|
|
2199
2337
|
"Radix Collapsible",
|
|
@@ -2237,8 +2375,8 @@
|
|
|
2237
2375
|
"name": "Combobox",
|
|
2238
2376
|
"category": "Forms",
|
|
2239
2377
|
"status": "available",
|
|
2240
|
-
"packageImport": "import { Combobox, ComboboxContent, ComboboxInput, ComboboxOption, ComboboxTrigger } from '@utopia-studio-design/design-system/
|
|
2241
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2378
|
+
"packageImport": "import { Combobox, ComboboxContent, ComboboxInput, ComboboxOption, ComboboxTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
2379
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2242
2380
|
"shadcnFoundation": [
|
|
2243
2381
|
"combobox",
|
|
2244
2382
|
"shadcn/ui registry",
|
|
@@ -2478,8 +2616,8 @@
|
|
|
2478
2616
|
"name": "Data Table",
|
|
2479
2617
|
"category": "Data Display",
|
|
2480
2618
|
"status": "available",
|
|
2481
|
-
"packageImport": "import { DataTable, DataTableBody, DataTableCell, DataTableFooter, DataTableHead, DataTableHeader, DataTableRow, DataTableShell, DataTableToolbar } from '@utopia-studio-design/design-system/
|
|
2482
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2619
|
+
"packageImport": "import { DataTable, DataTableBody, DataTableCell, DataTableFooter, DataTableHead, DataTableHeader, DataTableRow, DataTableShell, DataTableToolbar } from '@utopia-studio-design/design-system/Primitives';",
|
|
2620
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2483
2621
|
"shadcnFoundation": [
|
|
2484
2622
|
"data-table",
|
|
2485
2623
|
"TanStack Table-compatible composition pattern",
|
|
@@ -2591,8 +2729,8 @@
|
|
|
2591
2729
|
"name": "Dialog",
|
|
2592
2730
|
"category": "Feedback",
|
|
2593
2731
|
"status": "available",
|
|
2594
|
-
"packageImport": "import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@utopia-studio-design/design-system/
|
|
2595
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2732
|
+
"packageImport": "import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
2733
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2596
2734
|
"shadcnFoundation": [
|
|
2597
2735
|
"dialog",
|
|
2598
2736
|
"shadcn/ui registry",
|
|
@@ -2640,8 +2778,8 @@
|
|
|
2640
2778
|
"name": "Direction",
|
|
2641
2779
|
"category": "Utilities",
|
|
2642
2780
|
"status": "available",
|
|
2643
|
-
"packageImport": "import { Direction } from '@utopia-studio-design/design-system/
|
|
2644
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2781
|
+
"packageImport": "import { Direction } from '@utopia-studio-design/design-system/Primitives';",
|
|
2782
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2645
2783
|
"shadcnFoundation": [
|
|
2646
2784
|
"direction",
|
|
2647
2785
|
"shadcn/ui registry",
|
|
@@ -2677,8 +2815,8 @@
|
|
|
2677
2815
|
"name": "Drawer",
|
|
2678
2816
|
"category": "Feedback",
|
|
2679
2817
|
"status": "available",
|
|
2680
|
-
"packageImport": "import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from '@utopia-studio-design/design-system/
|
|
2681
|
-
"sourcePath": "packages/design-system/src/components/
|
|
2818
|
+
"packageImport": "import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
2819
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
2682
2820
|
"shadcnFoundation": [
|
|
2683
2821
|
"drawer",
|
|
2684
2822
|
"shadcn/ui registry",
|
|
@@ -3079,8 +3217,8 @@
|
|
|
3079
3217
|
"name": "Input Group",
|
|
3080
3218
|
"category": "Forms",
|
|
3081
3219
|
"status": "available",
|
|
3082
|
-
"packageImport": "import { InputGroup, InputGroupInput, InputGroupText } from '@utopia-studio-design/design-system/
|
|
3083
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3220
|
+
"packageImport": "import { InputGroup, InputGroupInput, InputGroupText } from '@utopia-studio-design/design-system/Primitives';",
|
|
3221
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3084
3222
|
"shadcnFoundation": [
|
|
3085
3223
|
"input-group",
|
|
3086
3224
|
"shadcn/ui registry",
|
|
@@ -3117,8 +3255,8 @@
|
|
|
3117
3255
|
"name": "Input OTP",
|
|
3118
3256
|
"category": "Forms",
|
|
3119
3257
|
"status": "available",
|
|
3120
|
-
"packageImport": "import { InputOTP } from '@utopia-studio-design/design-system/
|
|
3121
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3258
|
+
"packageImport": "import { InputOTP } from '@utopia-studio-design/design-system/Primitives';",
|
|
3259
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3122
3260
|
"shadcnFoundation": [
|
|
3123
3261
|
"input-otp",
|
|
3124
3262
|
"shadcn/ui registry",
|
|
@@ -3159,8 +3297,8 @@
|
|
|
3159
3297
|
"name": "Item",
|
|
3160
3298
|
"category": "Data Display",
|
|
3161
3299
|
"status": "available",
|
|
3162
|
-
"packageImport": "import { Item, ItemActions, ItemContent, ItemDescription, ItemTitle } from '@utopia-studio-design/design-system/
|
|
3163
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3300
|
+
"packageImport": "import { Item, ItemActions, ItemContent, ItemDescription, ItemTitle } from '@utopia-studio-design/design-system/Primitives';",
|
|
3301
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3164
3302
|
"shadcnFoundation": [
|
|
3165
3303
|
"item",
|
|
3166
3304
|
"shadcn/ui registry",
|
|
@@ -3196,8 +3334,8 @@
|
|
|
3196
3334
|
"name": "Kbd",
|
|
3197
3335
|
"category": "Data Display",
|
|
3198
3336
|
"status": "available",
|
|
3199
|
-
"packageImport": "import { Kbd } from '@utopia-studio-design/design-system/
|
|
3200
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3337
|
+
"packageImport": "import { Kbd } from '@utopia-studio-design/design-system/Primitives';",
|
|
3338
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3201
3339
|
"shadcnFoundation": [
|
|
3202
3340
|
"kbd",
|
|
3203
3341
|
"shadcn/ui registry",
|
|
@@ -3231,8 +3369,8 @@
|
|
|
3231
3369
|
"name": "Label",
|
|
3232
3370
|
"category": "Forms",
|
|
3233
3371
|
"status": "available",
|
|
3234
|
-
"packageImport": "import { Label } from '@utopia-studio-design/design-system/
|
|
3235
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3372
|
+
"packageImport": "import { Label } from '@utopia-studio-design/design-system/Primitives';",
|
|
3373
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3236
3374
|
"shadcnFoundation": [
|
|
3237
3375
|
"label",
|
|
3238
3376
|
"shadcn/ui registry",
|
|
@@ -3267,8 +3405,8 @@
|
|
|
3267
3405
|
"name": "Menubar",
|
|
3268
3406
|
"category": "Navigation",
|
|
3269
3407
|
"status": "available",
|
|
3270
|
-
"packageImport": "import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '@utopia-studio-design/design-system/
|
|
3271
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3408
|
+
"packageImport": "import { Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
3409
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3272
3410
|
"shadcnFoundation": [
|
|
3273
3411
|
"menubar",
|
|
3274
3412
|
"shadcn/ui registry",
|
|
@@ -3543,8 +3681,8 @@
|
|
|
3543
3681
|
"name": "Navigation Menu",
|
|
3544
3682
|
"category": "Navigation",
|
|
3545
3683
|
"status": "available",
|
|
3546
|
-
"packageImport": "import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport } from '@utopia-studio-design/design-system/
|
|
3547
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3684
|
+
"packageImport": "import { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport } from '@utopia-studio-design/design-system/Primitives';",
|
|
3685
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3548
3686
|
"shadcnFoundation": [
|
|
3549
3687
|
"navigation-menu",
|
|
3550
3688
|
"shadcn/ui registry",
|
|
@@ -3590,8 +3728,8 @@
|
|
|
3590
3728
|
"name": "Pagination",
|
|
3591
3729
|
"category": "Navigation",
|
|
3592
3730
|
"status": "available",
|
|
3593
|
-
"packageImport": "import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '@utopia-studio-design/design-system/
|
|
3594
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3731
|
+
"packageImport": "import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '@utopia-studio-design/design-system/Primitives';",
|
|
3732
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3595
3733
|
"shadcnFoundation": [
|
|
3596
3734
|
"pagination",
|
|
3597
3735
|
"shadcn/ui registry",
|
|
@@ -3791,8 +3929,8 @@
|
|
|
3791
3929
|
"name": "Resizable",
|
|
3792
3930
|
"category": "Layout",
|
|
3793
3931
|
"status": "available",
|
|
3794
|
-
"packageImport": "import { Resizable, ResizableHandle, ResizablePanel } from '@utopia-studio-design/design-system/
|
|
3795
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3932
|
+
"packageImport": "import { Resizable, ResizableHandle, ResizablePanel } from '@utopia-studio-design/design-system/Primitives';",
|
|
3933
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3796
3934
|
"shadcnFoundation": [
|
|
3797
3935
|
"resizable",
|
|
3798
3936
|
"shadcn/ui registry",
|
|
@@ -3838,8 +3976,8 @@
|
|
|
3838
3976
|
"name": "Scroll Area",
|
|
3839
3977
|
"category": "Layout",
|
|
3840
3978
|
"status": "available",
|
|
3841
|
-
"packageImport": "import { ScrollArea, ScrollAreaCorner, ScrollAreaViewport, ScrollBar } from '@utopia-studio-design/design-system/
|
|
3842
|
-
"sourcePath": "packages/design-system/src/components/
|
|
3979
|
+
"packageImport": "import { ScrollArea, ScrollAreaCorner, ScrollAreaViewport, ScrollBar } from '@utopia-studio-design/design-system/Primitives';",
|
|
3980
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3843
3981
|
"shadcnFoundation": [
|
|
3844
3982
|
"scroll-area",
|
|
3845
3983
|
"shadcn/ui registry",
|
|
@@ -3971,8 +4109,8 @@
|
|
|
3971
4109
|
"name": "Separator",
|
|
3972
4110
|
"category": "Layout",
|
|
3973
4111
|
"status": "available",
|
|
3974
|
-
"packageImport": "import { Separator } from '@utopia-studio-design/design-system/
|
|
3975
|
-
"sourcePath": "packages/design-system/src/components/
|
|
4112
|
+
"packageImport": "import { Separator } from '@utopia-studio-design/design-system/Primitives';",
|
|
4113
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
3976
4114
|
"shadcnFoundation": [
|
|
3977
4115
|
"separator",
|
|
3978
4116
|
"shadcn/ui registry",
|
|
@@ -4002,8 +4140,8 @@
|
|
|
4002
4140
|
"name": "Sheet",
|
|
4003
4141
|
"category": "Feedback",
|
|
4004
4142
|
"status": "available",
|
|
4005
|
-
"packageImport": "import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from '@utopia-studio-design/design-system/
|
|
4006
|
-
"sourcePath": "packages/design-system/src/components/
|
|
4143
|
+
"packageImport": "import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from '@utopia-studio-design/design-system/Primitives';",
|
|
4144
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
4007
4145
|
"shadcnFoundation": [
|
|
4008
4146
|
"sheet",
|
|
4009
4147
|
"shadcn/ui registry",
|
|
@@ -4432,7 +4570,8 @@
|
|
|
4432
4570
|
"SidebarMenuButton.isActive": "Marks the item active and supplies aria-current=page unless the consumer provides another aria-current value.",
|
|
4433
4571
|
"SidebarMenuButton.tooltip": "Provides collapsed hover/focus help and an accessible name when aria-label is omitted."
|
|
4434
4572
|
},
|
|
4435
|
-
"
|
|
4573
|
+
"usage": "Wrap the complete shell in SidebarProvider and pass placement=start|end. Keep Sidebar and SidebarInset as siblings so the provider can place navigation on the requested logical side. Persist the semantic value, never a physical left/right value.",
|
|
4574
|
+
"arabicFriendly": "Use dir=rtl at the shell boundary and provide localized collapseLabel, expandLabel, overlay labels, rail labels, and tooltip strings. placement=start resolves to the physical right in RTL, while placement=end resolves to the physical left. Borders, active indicators, rails, tooltips, off-canvas motion, submenus, and badges mirror automatically."
|
|
4436
4575
|
}
|
|
4437
4576
|
},
|
|
4438
4577
|
{
|
|
@@ -4506,6 +4645,7 @@
|
|
|
4506
4645
|
"NavigationIcon"
|
|
4507
4646
|
],
|
|
4508
4647
|
"props": {
|
|
4648
|
+
"SidebarProvider.placement": "Sets the block on the logical start or end side. Defaults to start.",
|
|
4509
4649
|
"SidebarBlockType1.brand": "Required app-owned brand node shown only in the expanded sidebar.",
|
|
4510
4650
|
"SidebarBlockType1.collapsedIcon": "Optional app-owned compact mark shown in the collapsed desktop trigger; hover reveals the panel icon.",
|
|
4511
4651
|
"SidebarBlockType1.children": "Grouped Sidebar navigation primitives. Product routing remains consumer-owned.",
|
|
@@ -4514,8 +4654,8 @@
|
|
|
4514
4654
|
"SidebarBlockType1Workspace.label": "Required factual workspace label. Keep detailed metadata in the consumer-owned dialog.",
|
|
4515
4655
|
"SidebarBlockType1Workspace.description": "Optional short metadata only; omit when it would truncate into low-value ellipsis."
|
|
4516
4656
|
},
|
|
4517
|
-
"usage": "Wrap the application shell in SidebarProvider. Render SidebarBlockType1 with localized labels and app-owned brand/navigation/footer slots. Use SidebarBlockType1Trigger in the mobile topbar so the menu remains visible when the off-canvas sidebar is closed.",
|
|
4518
|
-
"arabicFriendly": "All alignment and off-canvas positioning use logical properties. Provide localized trigger, overlay, group, item, and workspace labels. The hamburger
|
|
4657
|
+
"usage": "Wrap the application shell in SidebarProvider and pass the persisted semantic placement. Render SidebarBlockType1 with localized labels and app-owned brand/navigation/footer slots. Use SidebarBlockType1Trigger in the mobile topbar so the menu remains visible when the off-canvas sidebar is closed.",
|
|
4658
|
+
"arabicFriendly": "All alignment and off-canvas positioning use logical properties. placement=start is physically right in RTL and placement=end is physically left. Provide localized trigger, overlay, group, item, and workspace labels. The hamburger remains direction-neutral; the panel control reflects the physical panel side."
|
|
4519
4659
|
}
|
|
4520
4660
|
},
|
|
4521
4661
|
{
|
|
@@ -4556,8 +4696,8 @@
|
|
|
4556
4696
|
"name": "Sonner",
|
|
4557
4697
|
"category": "Feedback",
|
|
4558
4698
|
"status": "available",
|
|
4559
|
-
"packageImport": "import { Toaster, toast } from '@utopia-studio-design/design-system/
|
|
4560
|
-
"sourcePath": "packages/design-system/src/components/
|
|
4699
|
+
"packageImport": "import { Toaster, toast } from '@utopia-studio-design/design-system/Primitives';",
|
|
4700
|
+
"sourcePath": "packages/design-system/src/components/Primitives.tsx",
|
|
4561
4701
|
"shadcnFoundation": [
|
|
4562
4702
|
"sonner",
|
|
4563
4703
|
"shadcn/ui registry",
|
|
@@ -4637,9 +4777,9 @@
|
|
|
4637
4777
|
],
|
|
4638
4778
|
"fallbackToShadcn": "spinner",
|
|
4639
4779
|
"requiredTokens": [
|
|
4640
|
-
"--
|
|
4641
|
-
"--
|
|
4642
|
-
"--
|
|
4780
|
+
"--loading-background",
|
|
4781
|
+
"--loading-accent",
|
|
4782
|
+
"--loading-foreground",
|
|
4643
4783
|
"--brand-loader-size",
|
|
4644
4784
|
"--brand-loader-duration-enter",
|
|
4645
4785
|
"--brand-loader-duration-cycle",
|
|
@@ -4927,6 +5067,8 @@
|
|
|
4927
5067
|
"--secondary",
|
|
4928
5068
|
"--secondary-hover",
|
|
4929
5069
|
"--secondary-active",
|
|
5070
|
+
"--interaction-selection-surface",
|
|
5071
|
+
"--interaction-selection-border",
|
|
4930
5072
|
"--radius-control",
|
|
4931
5073
|
"--button-height",
|
|
4932
5074
|
"--focus-ring-width"
|
|
@@ -5327,6 +5469,115 @@
|
|
|
5327
5469
|
"arabicFriendly": "Trigger and content align with logical inline start/end."
|
|
5328
5470
|
}
|
|
5329
5471
|
},
|
|
5472
|
+
{
|
|
5473
|
+
"name": "Code Block",
|
|
5474
|
+
"category": "Data Display",
|
|
5475
|
+
"status": "available",
|
|
5476
|
+
"packageImport": "import { CodeBlock } from '@utopia-studio-design/design-system/CodeBlock';",
|
|
5477
|
+
"sourcePath": "packages/design-system/src/components/CodeBlock.tsx",
|
|
5478
|
+
"shadcnFoundation": ["code block", "button", "semantic Utopia wrapper"],
|
|
5479
|
+
"fallbackToShadcn": "code-block",
|
|
5480
|
+
"requiredTokens": [
|
|
5481
|
+
"--surface", "--surface-hover", "--foreground", "--muted-foreground", "--border",
|
|
5482
|
+
"--success-text", "--radius-surface", "--font-mono", "--font-size-small",
|
|
5483
|
+
"--font-size-supporting", "--button-height-lg", "--icon-size-md", "--space-4",
|
|
5484
|
+
"--focus-ring", "--focus-ring-width"
|
|
5485
|
+
],
|
|
5486
|
+
"useWhen": [
|
|
5487
|
+
"Documentation exposes code, commands, configuration, or agent instructions",
|
|
5488
|
+
"Users need to copy an exact reusable snippet",
|
|
5489
|
+
"A language label helps identify the snippet format"
|
|
5490
|
+
],
|
|
5491
|
+
"avoidWhen": [
|
|
5492
|
+
"A short inline identifier belongs inside prose",
|
|
5493
|
+
"The content is editable; use a text input or code editor",
|
|
5494
|
+
"Copying the content would be unsafe or misleading"
|
|
5495
|
+
],
|
|
5496
|
+
"neverInvent": [
|
|
5497
|
+
"Utopia brand primitives or raw brand colors",
|
|
5498
|
+
"Unlocalized copy feedback",
|
|
5499
|
+
"A second interactive copy control outside the code block",
|
|
5500
|
+
"Left/right-only positioning"
|
|
5501
|
+
],
|
|
5502
|
+
"ai": {
|
|
5503
|
+
"props": {
|
|
5504
|
+
"code": "Exact plain-text content rendered and copied by the component.",
|
|
5505
|
+
"language": "Short visible format label such as tsx, bash, json, or text.",
|
|
5506
|
+
"copyLabel": "Localized accessible name for the idle copy action.",
|
|
5507
|
+
"copiedLabel": "Localized accessible name and live feedback after a successful copy.",
|
|
5508
|
+
"onCopyError": "Optional callback for consumer-owned clipboard error handling.",
|
|
5509
|
+
"className": "Optional consumer class applied to the semantic root."
|
|
5510
|
+
},
|
|
5511
|
+
"rules": [
|
|
5512
|
+
"Use one CodeBlock for each independently reusable snippet.",
|
|
5513
|
+
"Keep copied text byte-for-byte aligned with the visible code.",
|
|
5514
|
+
"Supply localized copyLabel and copiedLabel in localized products.",
|
|
5515
|
+
"Do not place a second copy button beside CodeBlock."
|
|
5516
|
+
],
|
|
5517
|
+
"arabicFriendly": "The header follows logical inline direction while code content remains LTR for stable commands and source. Localize copyLabel and copiedLabel; never invent Arabic production code or copy."
|
|
5518
|
+
}
|
|
5519
|
+
},
|
|
5520
|
+
{
|
|
5521
|
+
"name": "Workspace Journey",
|
|
5522
|
+
"category": "Navigation",
|
|
5523
|
+
"status": "available",
|
|
5524
|
+
"packageImport": "import { WorkspaceJourney } from '@utopia-studio-design/design-system/Navigation';",
|
|
5525
|
+
"sourcePath": "packages/design-system/src/components/Navigation.tsx",
|
|
5526
|
+
"shadcnFoundation": [
|
|
5527
|
+
"semantic navigation",
|
|
5528
|
+
"button",
|
|
5529
|
+
"responsive dense surface",
|
|
5530
|
+
"Ceramic workspace wrapper"
|
|
5531
|
+
],
|
|
5532
|
+
"fallbackToShadcn": "navigation-menu",
|
|
5533
|
+
"requiredTokens": [
|
|
5534
|
+
"--surface-hover",
|
|
5535
|
+
"--foreground-subtle",
|
|
5536
|
+
"--border",
|
|
5537
|
+
"--interaction-selection-surface",
|
|
5538
|
+
"--success-text",
|
|
5539
|
+
"--primary",
|
|
5540
|
+
"--workspace-row-min-block-size",
|
|
5541
|
+
"--workspace-panel-padding",
|
|
5542
|
+
"--font-size-workspace-body",
|
|
5543
|
+
"--font-size-workspace-label",
|
|
5544
|
+
"--focus-ring-width",
|
|
5545
|
+
"--focus-ring-offset",
|
|
5546
|
+
"--ring"
|
|
5547
|
+
],
|
|
5548
|
+
"useWhen": [
|
|
5549
|
+
"A persistent workspace exposes ordered stages with complete, current, and locked states",
|
|
5550
|
+
"Users need to revisit completed stages without rolling back workflow progress",
|
|
5551
|
+
"The same stage navigation must reflow between a vertical rail, a compact horizontal strip, and a two-column mobile summary"
|
|
5552
|
+
],
|
|
5553
|
+
"avoidWhen": [
|
|
5554
|
+
"The sequence submits one linear form; use a form progress pattern",
|
|
5555
|
+
"Every destination is independently available; use Tabs or Side Nav",
|
|
5556
|
+
"The stages are only decorative status and cannot change the visible workspace"
|
|
5557
|
+
],
|
|
5558
|
+
"neverInvent": [
|
|
5559
|
+
"Page-owned stage truncation or overflow rules",
|
|
5560
|
+
"Raw colors, radii, spacing, or left/right positioning",
|
|
5561
|
+
"Left/right-only layout rules instead of logical properties",
|
|
5562
|
+
"Utopia brand primitives inside reusable component logic",
|
|
5563
|
+
"A horizontal strip or carousel that clips unreachable stages",
|
|
5564
|
+
"Color-only current, complete, or locked state"
|
|
5565
|
+
],
|
|
5566
|
+
"ai": {
|
|
5567
|
+
"props": {
|
|
5568
|
+
"aria-label": "Localized name for the stage navigation region.",
|
|
5569
|
+
"items": "Ordered stable ids, labels, localized state labels, and complete/current/locked states.",
|
|
5570
|
+
"selectedId": "The stage whose content is currently visible; it receives aria-current=step.",
|
|
5571
|
+
"onSelect": "Changes only the visible stage. Locked stages remain disabled."
|
|
5572
|
+
},
|
|
5573
|
+
"rules": [
|
|
5574
|
+
"Labels stay on one line and ellipsize visually while aria-label and title preserve the complete label.",
|
|
5575
|
+
"At compact widths all stages share the available row; at mobile widths the component reflows to two columns without adding horizontal scrolling.",
|
|
5576
|
+
"Do not use the component to imply progress that the application has not persisted."
|
|
5577
|
+
],
|
|
5578
|
+
"arabicFriendly": "Logical inline borders mirror in RTL. Localized labels keep their full accessible name even when visually truncated."
|
|
5579
|
+
}
|
|
5580
|
+
},
|
|
5330
5581
|
{
|
|
5331
5582
|
"name": "Typography",
|
|
5332
5583
|
"category": "Data Display",
|