@utopia-studio-design/design-system-cli 0.4.1 → 0.6.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 +23 -0
- package/bin/utopia-ds-mcp.mjs +9 -2
- package/bin/utopia-ds.mjs +106 -8
- package/data/blocks/activity-feed/ActivityFeedBlock.tsx +255 -0
- package/data/blocks/activity-feed/README.md +16 -0
- package/data/blocks/activity-feed/activity-feed-contract.ts +96 -0
- package/data/blocks/activity-feed/activity-feed-fixture.ts +22 -0
- package/data/blocks/activity-feed/activity-feed.css +154 -0
- package/data/blocks/agent-status/AgentStatusBlock.tsx +313 -0
- package/data/blocks/agent-status/README.md +15 -0
- package/data/blocks/agent-status/agent-status-contract.ts +133 -0
- package/data/blocks/agent-status/agent-status-fixture.ts +79 -0
- package/data/blocks/agent-status/agent-status.css +216 -0
- package/data/blocks/analytics-dashboard/AnalyticsDashboardBlocks.tsx +107 -0
- package/data/blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx +87 -0
- package/data/blocks/analytics-dashboard/README.md +17 -0
- package/data/blocks/analytics-dashboard/analytics-dashboard.css +92 -0
- package/data/blocks/calendar-application/CalendarApplicationBlocks.tsx +519 -0
- package/data/blocks/calendar-application/README.md +20 -0
- package/data/blocks/calendar-application/calendar-application.css +216 -0
- package/data/blocks/calendar-application/calendar-localization.ts +90 -0
- package/data/blocks/calendar-application/calendar-panel-contract.ts +72 -0
- package/data/blocks/dashboard-composer/CeramicPuckAdapter.tsx +380 -0
- package/data/blocks/dashboard-composer/DashboardComposerBlocks.tsx +337 -0
- package/data/blocks/dashboard-composer/README.md +16 -0
- package/data/blocks/dashboard-composer/RegistryDataBlocks.tsx +238 -0
- package/data/blocks/dashboard-composer/dashboard-composer.css +328 -0
- package/data/blocks/database-workspace/DatabaseWorkspaceBlocks.tsx +240 -0
- package/data/blocks/database-workspace/README.md +9 -0
- package/data/blocks/database-workspace/database-workspace.css +107 -0
- package/data/blocks/interaction-workbench/InteractionWorkbench.tsx +271 -0
- package/data/blocks/interaction-workbench/README.md +9 -0
- package/data/blocks/interaction-workbench/interaction-workbench.css +226 -0
- package/data/docs/calendar.md +164 -0
- package/data/docs/charts.md +95 -0
- package/data/docs/composition-registry.md +174 -0
- package/data/docs/dashboard-composer.md +94 -0
- package/data/docs/database.md +68 -0
- package/data/docs/examples/dashboard-layout.v1.json +65 -0
- package/data/docs/foundations.md +1 -1
- package/data/docs/interaction-foundation.md +109 -0
- package/data/docs/quick-start-ai.md +23 -1
- package/data/manifests/blocks.json +392 -0
- package/data/manifests/catalog.json +7 -4
- package/data/manifests/components.json +179 -0
- package/data/manifests/composition-registry.json +427 -0
- package/data/manifests/motion-profiles.json +1 -1
- package/data/manifests/patterns.json +113 -1
- package/data/manifests/templates.json +346 -0
- package/data/manifests/theme-renacore.json +142 -0
- package/data/manifests/theme-vyapti.json +125 -0
- package/data/manifests/themes.json +400 -28
- package/data/templates/analytics-dashboard/AnalyticsDashboardBlocks.tsx +107 -0
- package/data/templates/analytics-dashboard/AnalyticsMetricBlocks.tsx +87 -0
- package/data/templates/analytics-dashboard/README.md +6 -0
- package/data/templates/analytics-dashboard/analytics-dashboard.css +92 -0
- package/data/templates/analytics-dashboard/index.html +13 -0
- package/data/templates/analytics-dashboard/main.tsx +196 -0
- package/data/templates/analytics-dashboard/styles.css +120 -0
- package/data/templates/analytics-dashboard/template.manifest.json +17 -0
- package/data/templates/calendar-application/CalendarApplicationBlocks.tsx +519 -0
- package/data/templates/calendar-application/README.md +10 -0
- package/data/templates/calendar-application/calendar-application.css +216 -0
- package/data/templates/calendar-application/calendar-localization.ts +90 -0
- package/data/templates/calendar-application/index.html +14 -0
- package/data/templates/calendar-application/main.tsx +409 -0
- package/data/templates/calendar-application/styles.css +248 -0
- package/data/templates/calendar-application/template.manifest.json +27 -0
- package/data/templates/composition-registry-lab/README.md +9 -0
- package/data/templates/composition-registry-lab/index.html +14 -0
- package/data/templates/composition-registry-lab/main.tsx +217 -0
- package/data/templates/composition-registry-lab/sample-layout.json +63 -0
- package/data/templates/composition-registry-lab/styles.css +343 -0
- package/data/templates/composition-registry-lab/template.manifest.json +34 -0
- package/data/templates/dashboard-composer/ActivityFeedBlock.tsx +255 -0
- package/data/templates/dashboard-composer/AgentStatusBlock.tsx +313 -0
- package/data/templates/dashboard-composer/AnalyticsDashboardBlocks.tsx +107 -0
- package/data/templates/dashboard-composer/AnalyticsMetricBlocks.tsx +87 -0
- package/data/templates/dashboard-composer/CalendarApplicationBlocks.tsx +519 -0
- package/data/templates/dashboard-composer/CeramicPuckAdapter.tsx +380 -0
- package/data/templates/dashboard-composer/DashboardComposerBlocks.tsx +337 -0
- package/data/templates/dashboard-composer/DatabaseWorkspaceBlocks.tsx +240 -0
- package/data/templates/dashboard-composer/README.md +53 -0
- package/data/templates/dashboard-composer/RegistryDataBlocks.tsx +238 -0
- package/data/templates/dashboard-composer/activity-feed-contract.ts +96 -0
- package/data/templates/dashboard-composer/activity-feed-fixture.ts +22 -0
- package/data/templates/dashboard-composer/activity-feed.css +154 -0
- package/data/templates/dashboard-composer/agent-status-contract.ts +133 -0
- package/data/templates/dashboard-composer/agent-status-fixture.ts +79 -0
- package/data/templates/dashboard-composer/agent-status-lab/index.html +19 -0
- package/data/templates/dashboard-composer/agent-status-lab/main.tsx +151 -0
- package/data/templates/dashboard-composer/agent-status-lab/styles.css +139 -0
- package/data/templates/dashboard-composer/agent-status.css +216 -0
- package/data/templates/dashboard-composer/analytics-dashboard.css +92 -0
- package/data/templates/dashboard-composer/calendar-application.css +216 -0
- package/data/templates/dashboard-composer/calendar-localization.ts +90 -0
- package/data/templates/dashboard-composer/calendar-panel-contract.ts +72 -0
- package/data/templates/dashboard-composer/dashboard-composer.css +328 -0
- package/data/templates/dashboard-composer/database-workspace.css +107 -0
- package/data/templates/dashboard-composer/index.html +14 -0
- package/data/templates/dashboard-composer/main.tsx +550 -0
- package/data/templates/dashboard-composer/sample-layout.json +147 -0
- package/data/templates/dashboard-composer/styles.css +198 -0
- package/data/templates/dashboard-composer/template.manifest.json +34 -0
- package/data/templates/dashboard-composer/visual-editor/PuckEditorSurface.tsx +132 -0
- package/data/templates/dashboard-composer/visual-editor/VisualEditorApp.tsx +343 -0
- package/data/templates/dashboard-composer/visual-editor/index.html +17 -0
- package/data/templates/dashboard-composer/visual-editor/main.tsx +95 -0
- package/data/templates/dashboard-composer/visual-editor/styles.css +310 -0
- package/data/templates/database-workspace/DatabaseWorkspaceBlocks.tsx +240 -0
- package/data/templates/database-workspace/README.md +5 -0
- package/data/templates/database-workspace/database-workspace.css +107 -0
- package/data/templates/database-workspace/index.html +14 -0
- package/data/templates/database-workspace/main.tsx +247 -0
- package/data/templates/database-workspace/styles.css +121 -0
- package/data/templates/database-workspace/template.manifest.json +19 -0
- package/data/templates/interaction-lab/InteractionWorkbench.tsx +271 -0
- package/data/templates/interaction-lab/README.md +7 -0
- package/data/templates/interaction-lab/index.html +14 -0
- package/data/templates/interaction-lab/interaction-workbench.css +226 -0
- package/data/templates/interaction-lab/main.tsx +104 -0
- package/data/templates/interaction-lab/styles.css +224 -0
- package/data/templates/interaction-lab/template.manifest.json +36 -0
- package/lib/api.mjs +72 -5
- package/lib/composition-runtime.mjs +382 -0
- package/package.json +4 -1
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"intent": "Copyable Ceramic compositions that demonstrate a reviewed interaction contract without turning product workflow into a core primitive.",
|
|
4
|
+
"blocks": [
|
|
5
|
+
{
|
|
6
|
+
"id": "interaction-workbench",
|
|
7
|
+
"title": "Interaction Workbench",
|
|
8
|
+
"status": "available",
|
|
9
|
+
"category": "interaction-lab",
|
|
10
|
+
"purpose": "A deterministic lab for selection, logical grid navigation, typeahead, reordering, resizing, virtualization, undo, RTL, and reduced motion.",
|
|
11
|
+
"bundlePath": "blocks/interaction-workbench",
|
|
12
|
+
"sourcePath": "blocks/interaction-workbench/InteractionWorkbench.tsx",
|
|
13
|
+
"exportName": "InteractionWorkbench",
|
|
14
|
+
"requiredImports": [
|
|
15
|
+
"@utopia-studio-design/design-system",
|
|
16
|
+
"@utopia-studio-design/design-system/Interaction"
|
|
17
|
+
],
|
|
18
|
+
"contracts": [
|
|
19
|
+
"single, multiple, range, and select-all selection",
|
|
20
|
+
"roving focus and logical grid navigation",
|
|
21
|
+
"pointer drag with keyboard and touch alternatives",
|
|
22
|
+
"resize with keyboard-operable native range input",
|
|
23
|
+
"virtualized range calculation and stable item keys",
|
|
24
|
+
"undo and redo command history"
|
|
25
|
+
],
|
|
26
|
+
"rtlReady": true,
|
|
27
|
+
"reducedMotion": true,
|
|
28
|
+
"responsiveMinimum": "320px"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "analytics-chart-card",
|
|
32
|
+
"title": "Analytics Chart Card",
|
|
33
|
+
"status": "available",
|
|
34
|
+
"category": "analytics",
|
|
35
|
+
"purpose": "A page-ready chart composition with governed states, semantic series, keyboard exploration, and optional exact-value evidence.",
|
|
36
|
+
"bundlePath": "blocks/analytics-dashboard",
|
|
37
|
+
"sourcePath": "blocks/analytics-dashboard/AnalyticsDashboardBlocks.tsx",
|
|
38
|
+
"exportName": "AnalyticsChartCard",
|
|
39
|
+
"requiredImports": [
|
|
40
|
+
"@utopia-studio-design/design-system/Charts"
|
|
41
|
+
],
|
|
42
|
+
"contracts": [
|
|
43
|
+
"line, bar, area, stacked, scatter, and donut families",
|
|
44
|
+
"loading, empty, error, partial, and ready states",
|
|
45
|
+
"keyboard point exploration and live exact values",
|
|
46
|
+
"semantic series and pattern differentiation"
|
|
47
|
+
],
|
|
48
|
+
"rtlReady": true,
|
|
49
|
+
"reducedMotion": true,
|
|
50
|
+
"responsiveMinimum": "320px"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "kpi-grid",
|
|
54
|
+
"title": "KPI Grid",
|
|
55
|
+
"status": "available",
|
|
56
|
+
"category": "analytics",
|
|
57
|
+
"purpose": "A governed metric group with locale-aware values, comparisons, density, and complete data states.",
|
|
58
|
+
"bundlePath": "blocks/analytics-dashboard",
|
|
59
|
+
"sourcePath": "blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx",
|
|
60
|
+
"exportName": "KPIGrid",
|
|
61
|
+
"requiredImports": [
|
|
62
|
+
"@utopia-studio-design/design-system/Badge"
|
|
63
|
+
],
|
|
64
|
+
"contracts": [
|
|
65
|
+
"locale-aware number, percent, and currency formatting",
|
|
66
|
+
"compact, default, and comfortable density",
|
|
67
|
+
"loading, empty, error, partial, and ready states"
|
|
68
|
+
],
|
|
69
|
+
"rtlReady": true,
|
|
70
|
+
"reducedMotion": true,
|
|
71
|
+
"responsiveMinimum": "320px"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "comparison-chart-panel",
|
|
75
|
+
"title": "Comparison Chart Panel",
|
|
76
|
+
"status": "available",
|
|
77
|
+
"category": "analytics",
|
|
78
|
+
"purpose": "A benchmark and period-comparison chart panel with semantic annotations.",
|
|
79
|
+
"bundlePath": "blocks/analytics-dashboard",
|
|
80
|
+
"sourcePath": "blocks/analytics-dashboard/AnalyticsDashboardBlocks.tsx",
|
|
81
|
+
"exportName": "ComparisonChartPanel",
|
|
82
|
+
"requiredImports": [
|
|
83
|
+
"@utopia-studio-design/design-system/Charts"
|
|
84
|
+
],
|
|
85
|
+
"contracts": [
|
|
86
|
+
"benchmark annotation",
|
|
87
|
+
"period comparison",
|
|
88
|
+
"legend synchronization",
|
|
89
|
+
"accessible summary"
|
|
90
|
+
],
|
|
91
|
+
"rtlReady": true,
|
|
92
|
+
"reducedMotion": true,
|
|
93
|
+
"responsiveMinimum": "320px"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "chart-with-data-table",
|
|
97
|
+
"title": "Chart with Data Table",
|
|
98
|
+
"status": "available",
|
|
99
|
+
"category": "analytics",
|
|
100
|
+
"purpose": "A chart paired with a semantic table as the exact-value and screen-reader alternative.",
|
|
101
|
+
"bundlePath": "blocks/analytics-dashboard",
|
|
102
|
+
"sourcePath": "blocks/analytics-dashboard/AnalyticsDashboardBlocks.tsx",
|
|
103
|
+
"exportName": "ChartWithDataTable",
|
|
104
|
+
"requiredImports": [
|
|
105
|
+
"@utopia-studio-design/design-system/Charts"
|
|
106
|
+
],
|
|
107
|
+
"contracts": [
|
|
108
|
+
"visual and table data parity",
|
|
109
|
+
"component-owned horizontal overflow",
|
|
110
|
+
"semantic caption, row headers, and column headers"
|
|
111
|
+
],
|
|
112
|
+
"rtlReady": true,
|
|
113
|
+
"reducedMotion": true,
|
|
114
|
+
"responsiveMinimum": "320px"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "database-toolbar",
|
|
118
|
+
"title": "Database Toolbar",
|
|
119
|
+
"status": "available",
|
|
120
|
+
"category": "database",
|
|
121
|
+
"purpose": "Search, filter, sort, group, and create controls for a schema-driven record workspace.",
|
|
122
|
+
"bundlePath": "blocks/database-workspace",
|
|
123
|
+
"sourcePath": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx",
|
|
124
|
+
"exportName": "DatabaseToolbar",
|
|
125
|
+
"requiredImports": ["@utopia-studio-design/design-system/Database"],
|
|
126
|
+
"contracts": ["query controls", "saved view context", "permission-aware create action"],
|
|
127
|
+
"rtlReady": true,
|
|
128
|
+
"reducedMotion": true,
|
|
129
|
+
"responsiveMinimum": "320px"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "database-table-block",
|
|
133
|
+
"title": "Database Table Block",
|
|
134
|
+
"status": "available",
|
|
135
|
+
"category": "database",
|
|
136
|
+
"purpose": "A virtualized, editable semantic record grid with controlled persistence and mobile record transformation.",
|
|
137
|
+
"bundlePath": "blocks/database-workspace",
|
|
138
|
+
"sourcePath": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx",
|
|
139
|
+
"exportName": "DatabaseTableBlock",
|
|
140
|
+
"requiredImports": ["@utopia-studio-design/design-system/Database"],
|
|
141
|
+
"contracts": ["schema-driven properties", "grid keyboard model", "virtualization", "optimistic recovery"],
|
|
142
|
+
"rtlReady": true,
|
|
143
|
+
"reducedMotion": true,
|
|
144
|
+
"responsiveMinimum": "320px"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "saved-views-bar",
|
|
148
|
+
"title": "Saved Views Bar",
|
|
149
|
+
"status": "available",
|
|
150
|
+
"category": "database",
|
|
151
|
+
"purpose": "An explicit saved-view switcher for governed filter, sort, grouping, and visibility presets.",
|
|
152
|
+
"bundlePath": "blocks/database-workspace",
|
|
153
|
+
"sourcePath": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx",
|
|
154
|
+
"exportName": "SavedViewsBar",
|
|
155
|
+
"requiredImports": ["@utopia-studio-design/design-system/Database"],
|
|
156
|
+
"contracts": ["controlled active view", "current view semantics"],
|
|
157
|
+
"rtlReady": true,
|
|
158
|
+
"reducedMotion": true,
|
|
159
|
+
"responsiveMinimum": "320px"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "record-detail-drawer",
|
|
163
|
+
"title": "Record Detail Drawer",
|
|
164
|
+
"status": "available",
|
|
165
|
+
"category": "database",
|
|
166
|
+
"purpose": "A mobile and desktop detail surface that preserves every property outside the dense grid.",
|
|
167
|
+
"bundlePath": "blocks/database-workspace",
|
|
168
|
+
"sourcePath": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx",
|
|
169
|
+
"exportName": "RecordDetailDrawer",
|
|
170
|
+
"requiredImports": ["@utopia-studio-design/design-system/Database"],
|
|
171
|
+
"contracts": ["dialog semantics", "complete property detail", "logical inline-end placement"],
|
|
172
|
+
"rtlReady": true,
|
|
173
|
+
"reducedMotion": true,
|
|
174
|
+
"responsiveMinimum": "320px"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "bulk-action-bar",
|
|
178
|
+
"title": "Bulk Action Bar",
|
|
179
|
+
"status": "available",
|
|
180
|
+
"category": "database",
|
|
181
|
+
"purpose": "A permission-aware action surface for selected records.",
|
|
182
|
+
"bundlePath": "blocks/database-workspace",
|
|
183
|
+
"sourcePath": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx",
|
|
184
|
+
"exportName": "BulkActionBar",
|
|
185
|
+
"requiredImports": ["@utopia-studio-design/design-system/Button"],
|
|
186
|
+
"contracts": ["selection count", "clear selection", "bulk mutation action"],
|
|
187
|
+
"rtlReady": true,
|
|
188
|
+
"reducedMotion": true,
|
|
189
|
+
"responsiveMinimum": "320px"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "scheduler-shell",
|
|
193
|
+
"title": "Scheduler Shell",
|
|
194
|
+
"status": "available",
|
|
195
|
+
"category": "calendar",
|
|
196
|
+
"purpose": "An application scheduler shell with Month, Week, Day, Agenda, timezone, recurrence, conflict, and mutation contracts.",
|
|
197
|
+
"bundlePath": "blocks/calendar-application",
|
|
198
|
+
"sourcePath": "blocks/calendar-application/CalendarApplicationBlocks.tsx",
|
|
199
|
+
"exportName": "SchedulerShell",
|
|
200
|
+
"requiredImports": ["@utopia-studio-design/design-system/Calendar"],
|
|
201
|
+
"contracts": ["controlled events and adapter", "accessible agenda", "keyboard and touch move alternatives", "responsive view transition"],
|
|
202
|
+
"rtlReady": true,
|
|
203
|
+
"reducedMotion": true,
|
|
204
|
+
"responsiveMinimum": "320px"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "calendar-sidebar",
|
|
208
|
+
"title": "Calendar Sidebar",
|
|
209
|
+
"status": "available",
|
|
210
|
+
"category": "calendar",
|
|
211
|
+
"purpose": "Date and resource controls for a multi-calendar scheduler.",
|
|
212
|
+
"bundlePath": "blocks/calendar-application",
|
|
213
|
+
"sourcePath": "blocks/calendar-application/CalendarApplicationBlocks.tsx",
|
|
214
|
+
"exportName": "CalendarSidebar",
|
|
215
|
+
"requiredImports": ["@utopia-studio-design/design-system/Calendar"],
|
|
216
|
+
"contracts": ["controlled date", "resource visibility", "logical sidebar placement"],
|
|
217
|
+
"rtlReady": true,
|
|
218
|
+
"reducedMotion": true,
|
|
219
|
+
"responsiveMinimum": "320px"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"id": "event-editor-drawer",
|
|
223
|
+
"title": "Event Editor Drawer",
|
|
224
|
+
"status": "available",
|
|
225
|
+
"category": "calendar",
|
|
226
|
+
"purpose": "A modal event editor with occurrence-versus-series scope, validation, dismissal, and focus restoration.",
|
|
227
|
+
"bundlePath": "blocks/calendar-application",
|
|
228
|
+
"sourcePath": "blocks/calendar-application/CalendarApplicationBlocks.tsx",
|
|
229
|
+
"exportName": "EventEditorDrawer",
|
|
230
|
+
"requiredImports": ["@utopia-studio-design/design-system/Calendar"],
|
|
231
|
+
"contracts": ["modal focus and scroll lock", "Escape dismissal", "recurrence edit scope", "required and chronological date validation", "async save recovery with preserved draft", "controlled save and delete"],
|
|
232
|
+
"rtlReady": true,
|
|
233
|
+
"reducedMotion": true,
|
|
234
|
+
"responsiveMinimum": "320px"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "agenda-panel",
|
|
238
|
+
"title": "Agenda Panel",
|
|
239
|
+
"status": "available",
|
|
240
|
+
"category": "calendar",
|
|
241
|
+
"purpose": "A chronological semantic event list that remains available beside or instead of visual time grids.",
|
|
242
|
+
"bundlePath": "blocks/calendar-application",
|
|
243
|
+
"sourcePath": "blocks/calendar-application/CalendarApplicationBlocks.tsx",
|
|
244
|
+
"exportName": "AgendaPanel",
|
|
245
|
+
"requiredImports": ["@utopia-studio-design/design-system/Calendar"],
|
|
246
|
+
"contracts": ["chronological event order", "screen-reader names", "equivalent event activation"],
|
|
247
|
+
"rtlReady": true,
|
|
248
|
+
"reducedMotion": true,
|
|
249
|
+
"responsiveMinimum": "320px"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"id": "timezone-selector",
|
|
253
|
+
"title": "Timezone Selector",
|
|
254
|
+
"status": "available",
|
|
255
|
+
"category": "calendar",
|
|
256
|
+
"purpose": "An explicit IANA timezone selector for cross-timezone event display.",
|
|
257
|
+
"bundlePath": "blocks/calendar-application",
|
|
258
|
+
"sourcePath": "blocks/calendar-application/CalendarApplicationBlocks.tsx",
|
|
259
|
+
"exportName": "TimezoneSelector",
|
|
260
|
+
"requiredImports": ["@utopia-studio-design/design-system/Calendar"],
|
|
261
|
+
"contracts": ["IANA timezone values", "controlled selection", "visible display context"],
|
|
262
|
+
"rtlReady": true,
|
|
263
|
+
"reducedMotion": true,
|
|
264
|
+
"responsiveMinimum": "320px"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "activity-feed",
|
|
268
|
+
"title": "Activity Feed",
|
|
269
|
+
"status": "available",
|
|
270
|
+
"category": "operations",
|
|
271
|
+
"purpose": "A locale-aware chronological activity stream with grouped views, semantic sources, timezone formatting, and recoverable pagination.",
|
|
272
|
+
"bundlePath": "blocks/activity-feed",
|
|
273
|
+
"sourcePath": "blocks/activity-feed/ActivityFeedBlock.tsx",
|
|
274
|
+
"exportName": "ActivityFeedBlock",
|
|
275
|
+
"requiredImports": [
|
|
276
|
+
"@utopia-studio-design/design-system/Badge",
|
|
277
|
+
"@utopia-studio-design/design-system/Button",
|
|
278
|
+
"@utopia-studio-design/design-system/DataDisplay",
|
|
279
|
+
"@utopia-studio-design/design-system/Utilities"
|
|
280
|
+
],
|
|
281
|
+
"contracts": [
|
|
282
|
+
"actor-independent localized activity labels",
|
|
283
|
+
"none, day, and source grouping",
|
|
284
|
+
"locale and IANA timezone-aware timestamps",
|
|
285
|
+
"inherit, auto, LTR, and RTL direction modes",
|
|
286
|
+
"loading, empty, error, and ready states",
|
|
287
|
+
"recoverable page-size pagination",
|
|
288
|
+
"product-owned records and backend cursors"
|
|
289
|
+
],
|
|
290
|
+
"rtlReady": true,
|
|
291
|
+
"reducedMotion": true,
|
|
292
|
+
"responsiveMinimum": "320px"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"id": "agent-status",
|
|
296
|
+
"title": "Agent Status",
|
|
297
|
+
"status": "available",
|
|
298
|
+
"category": "agentic",
|
|
299
|
+
"purpose": "A locale-aware execution surface for progress, risk, approval, failure, and completion with product-owned operational data and decisions.",
|
|
300
|
+
"bundlePath": "blocks/agent-status",
|
|
301
|
+
"sourcePath": "blocks/agent-status/AgentStatusBlock.tsx",
|
|
302
|
+
"exportName": "AgentStatusBlock",
|
|
303
|
+
"requiredImports": [
|
|
304
|
+
"@utopia-studio-design/design-system/Badge",
|
|
305
|
+
"@utopia-studio-design/design-system/Button",
|
|
306
|
+
"@utopia-studio-design/design-system/DataDisplay",
|
|
307
|
+
"@utopia-studio-design/design-system/Utilities"
|
|
308
|
+
],
|
|
309
|
+
"contracts": [
|
|
310
|
+
"queued, running, approval, blocked, failed, and completed states",
|
|
311
|
+
"localized progress, risk, timestamps, and accessible state labels",
|
|
312
|
+
"inherit, auto, LTR, and RTL direction modes",
|
|
313
|
+
"loading, empty, error, filtered-empty, and ready states",
|
|
314
|
+
"product-owned execution records and approval callbacks",
|
|
315
|
+
"sanitized summaries without raw prompts, stacks, credentials, or command output"
|
|
316
|
+
],
|
|
317
|
+
"rtlReady": true,
|
|
318
|
+
"reducedMotion": true,
|
|
319
|
+
"responsiveMinimum": "320px"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"id": "todo-list",
|
|
323
|
+
"title": "To-do List",
|
|
324
|
+
"status": "available",
|
|
325
|
+
"category": "productivity",
|
|
326
|
+
"purpose": "A focused task list with controlled product data, semantic filters, completion, due context, priority, and complete loading states.",
|
|
327
|
+
"bundlePath": "blocks/dashboard-composer",
|
|
328
|
+
"sourcePath": "blocks/dashboard-composer/DashboardComposerBlocks.tsx",
|
|
329
|
+
"exportName": "TodoListBlock",
|
|
330
|
+
"requiredImports": [
|
|
331
|
+
"@utopia-studio-design/design-system/Badge",
|
|
332
|
+
"@utopia-studio-design/design-system/Button",
|
|
333
|
+
"@utopia-studio-design/design-system/Forms"
|
|
334
|
+
],
|
|
335
|
+
"contracts": [
|
|
336
|
+
"controlled and uncontrolled task data",
|
|
337
|
+
"keyboard and pointer completion",
|
|
338
|
+
"semantic task filters",
|
|
339
|
+
"loading, empty, error, and ready states",
|
|
340
|
+
"product-owned persistence"
|
|
341
|
+
],
|
|
342
|
+
"rtlReady": true,
|
|
343
|
+
"reducedMotion": true,
|
|
344
|
+
"responsiveMinimum": "320px"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"id": "ceramic-dashboard-renderer",
|
|
348
|
+
"title": "Ceramic Dashboard Renderer",
|
|
349
|
+
"status": "available",
|
|
350
|
+
"category": "composition",
|
|
351
|
+
"purpose": "A Layout JSON runtime that maps registered definitions to product renderers and validates every agent-style move or removal.",
|
|
352
|
+
"bundlePath": "blocks/dashboard-composer",
|
|
353
|
+
"sourcePath": "blocks/dashboard-composer/DashboardComposerBlocks.tsx",
|
|
354
|
+
"exportName": "CeramicDashboardRenderer",
|
|
355
|
+
"requiredImports": ["@utopia-studio-design/design-system/Composition"],
|
|
356
|
+
"contracts": [
|
|
357
|
+
"versioned layout validation",
|
|
358
|
+
"product-supplied renderer map",
|
|
359
|
+
"locked block and region enforcement",
|
|
360
|
+
"keyboard and touch arrange controls",
|
|
361
|
+
"responsive registered placement"
|
|
362
|
+
],
|
|
363
|
+
"rtlReady": true,
|
|
364
|
+
"reducedMotion": true,
|
|
365
|
+
"responsiveMinimum": "320px"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"id": "ceramic-puck-adapter",
|
|
369
|
+
"title": "Ceramic Puck Adapter",
|
|
370
|
+
"status": "available",
|
|
371
|
+
"category": "composition",
|
|
372
|
+
"purpose": "An optional visual-editor adapter that generates Puck fields and permissions from the Ceramic registry, then validates Puck output before producing Layout JSON.",
|
|
373
|
+
"bundlePath": "blocks/dashboard-composer",
|
|
374
|
+
"sourcePath": "blocks/dashboard-composer/CeramicPuckAdapter.tsx",
|
|
375
|
+
"exportName": "createCeramicPuckConfig",
|
|
376
|
+
"requiredImports": [
|
|
377
|
+
"@puckeditor/core",
|
|
378
|
+
"@utopia-studio-design/design-system/Composition"
|
|
379
|
+
],
|
|
380
|
+
"contracts": [
|
|
381
|
+
"registry-generated component palette and semantic fields",
|
|
382
|
+
"Puck Data and Ceramic Layout JSON conversion",
|
|
383
|
+
"locked block and region permissions",
|
|
384
|
+
"validated publish boundary",
|
|
385
|
+
"no arbitrary style payloads"
|
|
386
|
+
],
|
|
387
|
+
"rtlReady": true,
|
|
388
|
+
"reducedMotion": true,
|
|
389
|
+
"responsiveMinimum": "320px"
|
|
390
|
+
}
|
|
391
|
+
]
|
|
392
|
+
}
|
|
@@ -193,10 +193,13 @@
|
|
|
193
193
|
"Avatar",
|
|
194
194
|
"Badge",
|
|
195
195
|
"Bubble",
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
196
|
+
"Calendar",
|
|
197
|
+
"Scheduler Root",
|
|
198
|
+
"Carousel",
|
|
199
|
+
"Chart",
|
|
200
|
+
"Chart Root",
|
|
201
|
+
"Database Root",
|
|
202
|
+
"Data Table",
|
|
200
203
|
"Empty",
|
|
201
204
|
"Item",
|
|
202
205
|
"Kbd",
|
|
@@ -853,6 +853,8 @@
|
|
|
853
853
|
"defaultSelectedDate": "Initial selected date for uncontrolled usage.",
|
|
854
854
|
"onSelect": "Called with a Date when an enabled day is selected.",
|
|
855
855
|
"onMonthChange": "Called when previous/next or month/year controls change the visible month.",
|
|
856
|
+
"locale": "BCP 47 locale used for month/day labels, direction, and default numeral selection.",
|
|
857
|
+
"numberingSystem": "Optional react-day-picker numeral system override. Defaults to the locale-resolved numbering system.",
|
|
856
858
|
"weekStartsOn": "Use product locale requirements. 0 is Sunday, 1 Monday, 6 Saturday.",
|
|
857
859
|
"disabledDates": "Product-owned predicate for disabled days."
|
|
858
860
|
},
|
|
@@ -1020,6 +1022,62 @@
|
|
|
1020
1022
|
"Utopia brand primitives inside reusable component logic"
|
|
1021
1023
|
]
|
|
1022
1024
|
},
|
|
1025
|
+
{
|
|
1026
|
+
"name": "Chart Root",
|
|
1027
|
+
"category": "Data Display",
|
|
1028
|
+
"status": "available",
|
|
1029
|
+
"packageImport": "import { ChartRoot, ChartDataTable, ChartLegendList, ChartResponsiveContainer, ChartTooltipPanel, RechartsChartRenderer } from '@utopia-studio-design/design-system/Charts';",
|
|
1030
|
+
"sourcePath": "packages/design-system/src/components/Charts.tsx",
|
|
1031
|
+
"shadcnFoundation": [
|
|
1032
|
+
"shadcn/ui chart composition",
|
|
1033
|
+
"Recharts adapter boundary",
|
|
1034
|
+
"Ceramic interaction foundation",
|
|
1035
|
+
"semantic visualization token contract"
|
|
1036
|
+
],
|
|
1037
|
+
"fallbackToShadcn": "chart",
|
|
1038
|
+
"requiredTokens": [
|
|
1039
|
+
"--visualization-series-1",
|
|
1040
|
+
"--visualization-series-2",
|
|
1041
|
+
"--visualization-positive",
|
|
1042
|
+
"--visualization-negative",
|
|
1043
|
+
"--visualization-neutral",
|
|
1044
|
+
"--visualization-forecast",
|
|
1045
|
+
"--visualization-benchmark",
|
|
1046
|
+
"--visualization-grid",
|
|
1047
|
+
"--interaction-selection-surface",
|
|
1048
|
+
"--interaction-selection-border"
|
|
1049
|
+
],
|
|
1050
|
+
"useWhen": [
|
|
1051
|
+
"Application analytics need Line, Bar, Area, Stacked, Scatter, or Donut families",
|
|
1052
|
+
"Charts need controlled series visibility and keyboard point exploration",
|
|
1053
|
+
"Loading, empty, error, partial, and ready data states must remain explicit",
|
|
1054
|
+
"A semantic data table is required as the exact-value alternative"
|
|
1055
|
+
],
|
|
1056
|
+
"avoidWhen": [
|
|
1057
|
+
"A small decorative bar scaffold is sufficient",
|
|
1058
|
+
"The chart lacks an accessible summary or stable series IDs",
|
|
1059
|
+
"Renderer-specific styling must bypass Ceramic tokens"
|
|
1060
|
+
],
|
|
1061
|
+
"neverInvent": [
|
|
1062
|
+
"Raw series colors",
|
|
1063
|
+
"Color-only series identity",
|
|
1064
|
+
"Missing values represented as zero",
|
|
1065
|
+
"SVG-only interaction without a keyboard and table alternative",
|
|
1066
|
+
"Left/right-only keyboard behavior",
|
|
1067
|
+
"Utopia brand primitives inside reusable component logic"
|
|
1068
|
+
],
|
|
1069
|
+
"ai": {
|
|
1070
|
+
"props": {
|
|
1071
|
+
"type": "'line' | 'bar' | 'area' | 'stacked' | 'scatter' | 'donut'",
|
|
1072
|
+
"state": "'loading' | 'empty' | 'error' | 'partial' | 'ready'",
|
|
1073
|
+
"renderer": "Optional tree-shakeable adapter implementing ChartRendererProps.",
|
|
1074
|
+
"direction": "'ltr' | 'rtl'. Changes chronological rendering and logical Arrow key exploration.",
|
|
1075
|
+
"showDataTable": "boolean. Renders the exact-value semantic table alternative."
|
|
1076
|
+
},
|
|
1077
|
+
"arabicFriendly": "Chart Root inherits localized labels and formatters from the consumer, mirrors chronological start and logical keyboard exploration under RTL, and keeps numbers formatted by the supplied locale.",
|
|
1078
|
+
"cli": "npm run ds -- component \"Chart Root\" --dense"
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1023
1081
|
{
|
|
1024
1082
|
"name": "Assistant Panel",
|
|
1025
1083
|
"category": "Chat",
|
|
@@ -2295,6 +2353,127 @@
|
|
|
2295
2353
|
"Utopia brand primitives inside reusable component logic"
|
|
2296
2354
|
]
|
|
2297
2355
|
},
|
|
2356
|
+
{
|
|
2357
|
+
"name": "Scheduler Root",
|
|
2358
|
+
"category": "Data Display",
|
|
2359
|
+
"status": "available",
|
|
2360
|
+
"packageImport": "import { SchedulerRoot, MonthView, WeekView, DayView, AgendaView, TimeGrid, AllDayLane, EventCard, DateNavigator } from '@utopia-studio-design/design-system/Calendar';",
|
|
2361
|
+
"sourcePath": "packages/design-system/src/components/Calendar.tsx",
|
|
2362
|
+
"shadcnFoundation": [
|
|
2363
|
+
"shadcn/ui Calendar through the Ceramic react-day-picker Calendar",
|
|
2364
|
+
"Ceramic Button, IconButton, and ButtonGroup composition",
|
|
2365
|
+
"Radix Select through the Ceramic Select family",
|
|
2366
|
+
"Ceramic interaction foundation",
|
|
2367
|
+
"application scheduler",
|
|
2368
|
+
"controlled persistence adapter"
|
|
2369
|
+
],
|
|
2370
|
+
"fallbackToShadcn": "calendar, button group, select, sheet",
|
|
2371
|
+
"requiredTokens": [
|
|
2372
|
+
"--background",
|
|
2373
|
+
"--surface",
|
|
2374
|
+
"--popover-surface",
|
|
2375
|
+
"--foreground",
|
|
2376
|
+
"--muted-foreground",
|
|
2377
|
+
"--border",
|
|
2378
|
+
"--ring",
|
|
2379
|
+
"--interaction-selection-surface",
|
|
2380
|
+
"--interaction-selection-border",
|
|
2381
|
+
"--success",
|
|
2382
|
+
"--warning",
|
|
2383
|
+
"--destructive"
|
|
2384
|
+
],
|
|
2385
|
+
"useWhen": [
|
|
2386
|
+
"A product needs event or resource scheduling rather than date selection",
|
|
2387
|
+
"Month, Week, Day, and Agenda views share controlled events",
|
|
2388
|
+
"Recurrence, overlap, conflict, permissions, and timezone display need one contract"
|
|
2389
|
+
],
|
|
2390
|
+
"avoidWhen": [
|
|
2391
|
+
"A date picker or single-date Calendar is sufficient",
|
|
2392
|
+
"Product persistence or authorization would be owned by the component package",
|
|
2393
|
+
"Pointer drag would be the only way to move or resize an event"
|
|
2394
|
+
],
|
|
2395
|
+
"neverInvent": [
|
|
2396
|
+
"Raw event colors",
|
|
2397
|
+
"Persistence or authorization inside SchedulerRoot",
|
|
2398
|
+
"Mouse-only move or resize behavior",
|
|
2399
|
+
"Hidden timezone conversion",
|
|
2400
|
+
"Left/right-only layout rules",
|
|
2401
|
+
"Utopia brand primitives inside reusable component logic"
|
|
2402
|
+
],
|
|
2403
|
+
"ai": {
|
|
2404
|
+
"props": {
|
|
2405
|
+
"events": "Controlled SchedulerEvent records with stable IDs and ISO instants.",
|
|
2406
|
+
"timezone": "IANA timezone used for displayed date and time; stored instants remain unchanged.",
|
|
2407
|
+
"view": "Controlled month, week, day, or agenda view.",
|
|
2408
|
+
"adapter": "Optional controlled mutation adapter. Ceramic provides optimistic UI and rollback but never owns persistence.",
|
|
2409
|
+
"permissions": "Explicit create, edit, move, resize, duplicate, and delete capabilities.",
|
|
2410
|
+
"direction": "Optional ltr or rtl override. When omitted, direction is derived from locale.",
|
|
2411
|
+
"locale": "BCP 47 locale used for labels, dates, numerals, week information, and automatic direction.",
|
|
2412
|
+
"weekStartsOn": "Optional JS weekday override. Defaults to Intl.Locale week information.",
|
|
2413
|
+
"weekendDays": "Optional JS weekday list. Defaults to Intl.Locale weekend information.",
|
|
2414
|
+
"calendarSystem": "Primary display calendar. Event placement remains based on Gregorian instants.",
|
|
2415
|
+
"secondaryCalendar": "Optional secondary display calendar such as islamic-umalqura.",
|
|
2416
|
+
"labels": "Product-localized visible and accessibility copy. Use labels.monthGrid for the ARIA month grid, labels.compactView for shorter mobile view names, labels.compactMore for narrow month-cell overflow counts, and labels.selectDate for date actions."
|
|
2417
|
+
},
|
|
2418
|
+
"arabicFriendly": "Event titles and accessibility copy are product-localized; logical placement and navigation mirror in RTL, while dates, times, and numerals use the supplied locale and timezone."
|
|
2419
|
+
}
|
|
2420
|
+
},
|
|
2421
|
+
{
|
|
2422
|
+
"name": "Database Root",
|
|
2423
|
+
"category": "Data Display",
|
|
2424
|
+
"status": "available",
|
|
2425
|
+
"packageImport": "import { DatabaseRoot, DataGrid, DatabasePropertyCell } from '@utopia-studio-design/design-system/Database';",
|
|
2426
|
+
"sourcePath": "packages/design-system/src/components/Database.tsx",
|
|
2427
|
+
"shadcnFoundation": [
|
|
2428
|
+
"data table and form composition",
|
|
2429
|
+
"Ceramic interaction foundation",
|
|
2430
|
+
"schema-driven record grid",
|
|
2431
|
+
"controlled persistence adapter"
|
|
2432
|
+
],
|
|
2433
|
+
"fallbackToShadcn": "data-table",
|
|
2434
|
+
"requiredTokens": [
|
|
2435
|
+
"--background",
|
|
2436
|
+
"--surface",
|
|
2437
|
+
"--surface-elevated",
|
|
2438
|
+
"--foreground",
|
|
2439
|
+
"--muted-foreground",
|
|
2440
|
+
"--border",
|
|
2441
|
+
"--input",
|
|
2442
|
+
"--ring",
|
|
2443
|
+
"--interaction-selection-surface",
|
|
2444
|
+
"--interaction-selection-border"
|
|
2445
|
+
],
|
|
2446
|
+
"useWhen": [
|
|
2447
|
+
"A product needs schema-driven editable records and saved views",
|
|
2448
|
+
"Large datasets need virtualized grid navigation and controlled persistence",
|
|
2449
|
+
"A dense desktop grid must transform into mobile record details"
|
|
2450
|
+
],
|
|
2451
|
+
"avoidWhen": [
|
|
2452
|
+
"A read-only Table or lightweight DataTable is sufficient",
|
|
2453
|
+
"Product persistence or authorization would be owned by the component package",
|
|
2454
|
+
"Arbitrary cell CSS is required instead of registered property types"
|
|
2455
|
+
],
|
|
2456
|
+
"neverInvent": [
|
|
2457
|
+
"Raw property colors",
|
|
2458
|
+
"Persistence or authorization inside DatabaseRoot",
|
|
2459
|
+
"Mouse-only resize, reorder, or editing behavior",
|
|
2460
|
+
"Page-level horizontal overflow",
|
|
2461
|
+
"Left/right-only layout rules",
|
|
2462
|
+
"Utopia brand primitives inside reusable component logic"
|
|
2463
|
+
],
|
|
2464
|
+
"ai": {
|
|
2465
|
+
"props": {
|
|
2466
|
+
"schema": "DatabaseSchema with stable property IDs and text, number, select, multi-select, date, person, checkbox, or URL property types.",
|
|
2467
|
+
"records": "Controlled records with stable IDs and property values.",
|
|
2468
|
+
"density": "compact, default, or comfortable. Density changes desktop row height without changing mobile record semantics.",
|
|
2469
|
+
"query": "Semantic filters, sorts, and grouping; saved view state stays product-controlled.",
|
|
2470
|
+
"adapter": "Optional controlled mutation adapter. Ceramic applies optimistic UI and rollback but never owns persistence.",
|
|
2471
|
+
"permissions": "Explicit edit, resize, reorder, and bulk-action capabilities.",
|
|
2472
|
+
"direction": "ltr or rtl. Logical grid navigation and inline placement follow direction."
|
|
2473
|
+
},
|
|
2474
|
+
"arabicFriendly": "Property labels and values are supplied by the product; grid arrows follow logical inline direction, dates and numbers use the supplied locale, and the mobile record-detail transformation preserves property order."
|
|
2475
|
+
}
|
|
2476
|
+
},
|
|
2298
2477
|
{
|
|
2299
2478
|
"name": "Data Table",
|
|
2300
2479
|
"category": "Data Display",
|