@utopia-studio-design/design-system-cli 0.4.1 → 0.5.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/themes.json +314 -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,427 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"layoutSchemaVersion": 1,
|
|
4
|
+
"intent": "Ceramic-owned composition definitions for agent, Studio runtime, and optional visual-editor control of modular dashboard layouts.",
|
|
5
|
+
"designGuardrails": {
|
|
6
|
+
"sourceOfTruth": "Ceramic Composition Registry and versioned Layout JSON",
|
|
7
|
+
"editorRole": "Puck and other editors are optional adapters that read and write this contract; they do not define components, styling, or schema.",
|
|
8
|
+
"forbiddenPayloads": [
|
|
9
|
+
"raw colors",
|
|
10
|
+
"raw shadows",
|
|
11
|
+
"raw radii",
|
|
12
|
+
"arbitrary spacing",
|
|
13
|
+
"className",
|
|
14
|
+
"style",
|
|
15
|
+
"sx",
|
|
16
|
+
"css",
|
|
17
|
+
"token overrides"
|
|
18
|
+
],
|
|
19
|
+
"requiredContracts": [
|
|
20
|
+
"Ceramic components",
|
|
21
|
+
"semantic tokens",
|
|
22
|
+
"registered props",
|
|
23
|
+
"responsive placement",
|
|
24
|
+
"loading empty error ready states",
|
|
25
|
+
"RTL",
|
|
26
|
+
"reduced motion",
|
|
27
|
+
"agent permissions",
|
|
28
|
+
"user locks"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"definitions": [
|
|
32
|
+
{
|
|
33
|
+
"id": "interaction-workbench",
|
|
34
|
+
"version": 1,
|
|
35
|
+
"title": "Interaction Workbench",
|
|
36
|
+
"category": "development-tool",
|
|
37
|
+
"description": "Runnable Ceramic interaction fixture for selection, movement, resize, virtualization, direction, and recovery.",
|
|
38
|
+
"availability": "available",
|
|
39
|
+
"renderer": "blocks/interaction-workbench/InteractionWorkbench.tsx#InteractionWorkbench",
|
|
40
|
+
"propsSchema": {
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": [],
|
|
43
|
+
"properties": {
|
|
44
|
+
"direction": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"enum": ["ltr", "rtl"]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"allowedSpans": [6, 8, 12],
|
|
51
|
+
"allowedSurfaces": ["default", "subtle"],
|
|
52
|
+
"responsiveBehavior": "stack",
|
|
53
|
+
"states": ["ready"],
|
|
54
|
+
"dataRequirements": ["deterministic fixture data"],
|
|
55
|
+
"rtlReady": true,
|
|
56
|
+
"reducedMotion": true,
|
|
57
|
+
"agentPermissions": {
|
|
58
|
+
"create": true,
|
|
59
|
+
"remove": true,
|
|
60
|
+
"move": true,
|
|
61
|
+
"editableProps": ["direction"]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "metric-grid",
|
|
66
|
+
"version": 1,
|
|
67
|
+
"title": "Metric Grid",
|
|
68
|
+
"category": "analytics",
|
|
69
|
+
"description": "A governed group of comparable metrics with semantic emphasis and compact responsive behavior.",
|
|
70
|
+
"availability": "available",
|
|
71
|
+
"renderer": "blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx#KPIGrid",
|
|
72
|
+
"propsSchema": {
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"required": ["metrics"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"metrics": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"minItems": 1,
|
|
79
|
+
"items": { "type": "string" }
|
|
80
|
+
},
|
|
81
|
+
"density": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": ["compact", "default", "comfortable"]
|
|
84
|
+
},
|
|
85
|
+
"comparison": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"enum": ["none", "previous-period", "target"]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"allowedSpans": [3, 4, 6, 12],
|
|
92
|
+
"allowedSurfaces": ["default", "subtle", "elevated"],
|
|
93
|
+
"responsiveBehavior": "stack",
|
|
94
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
95
|
+
"dataRequirements": ["metric id", "label", "value", "format", "comparison"],
|
|
96
|
+
"rtlReady": true,
|
|
97
|
+
"reducedMotion": true,
|
|
98
|
+
"agentPermissions": {
|
|
99
|
+
"create": true,
|
|
100
|
+
"remove": true,
|
|
101
|
+
"move": true,
|
|
102
|
+
"editableProps": ["metrics", "density", "comparison"]
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "issue-table",
|
|
107
|
+
"version": 1,
|
|
108
|
+
"title": "Issue Table",
|
|
109
|
+
"category": "database",
|
|
110
|
+
"description": "A dense issue workspace with governed columns, views, selection, overflow, and batch actions.",
|
|
111
|
+
"availability": "available",
|
|
112
|
+
"renderer": "blocks/database-workspace/DatabaseWorkspaceBlocks.tsx#DatabaseTableBlock",
|
|
113
|
+
"propsSchema": {
|
|
114
|
+
"additionalProperties": false,
|
|
115
|
+
"required": ["view"],
|
|
116
|
+
"properties": {
|
|
117
|
+
"view": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": ["active", "backlog", "blocked", "completed"]
|
|
120
|
+
},
|
|
121
|
+
"density": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"enum": ["compact", "default", "comfortable"]
|
|
124
|
+
},
|
|
125
|
+
"columns": {
|
|
126
|
+
"type": "array",
|
|
127
|
+
"minItems": 1,
|
|
128
|
+
"items": { "type": "string" }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"allowedSpans": [6, 8, 12],
|
|
133
|
+
"allowedSurfaces": ["default", "subtle"],
|
|
134
|
+
"responsiveBehavior": "scroll",
|
|
135
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
136
|
+
"dataRequirements": ["stable row ids", "column definitions", "permissions", "pagination or virtualization"],
|
|
137
|
+
"rtlReady": true,
|
|
138
|
+
"reducedMotion": true,
|
|
139
|
+
"agentPermissions": {
|
|
140
|
+
"create": true,
|
|
141
|
+
"remove": true,
|
|
142
|
+
"move": true,
|
|
143
|
+
"editableProps": [
|
|
144
|
+
"view",
|
|
145
|
+
"density",
|
|
146
|
+
"columns"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "chart-panel",
|
|
152
|
+
"version": 1,
|
|
153
|
+
"title": "Chart Panel",
|
|
154
|
+
"category": "analytics",
|
|
155
|
+
"description": "A chart composition with semantic series, summary, legend, tooltip, and accessible table alternative.",
|
|
156
|
+
"availability": "available",
|
|
157
|
+
"renderer": "blocks/analytics-dashboard/AnalyticsDashboardBlocks.tsx#AnalyticsChartCard",
|
|
158
|
+
"propsSchema": {
|
|
159
|
+
"additionalProperties": false,
|
|
160
|
+
"required": ["chartType"],
|
|
161
|
+
"properties": {
|
|
162
|
+
"chartType": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"enum": ["line", "bar", "area", "stacked", "scatter", "donut"]
|
|
165
|
+
},
|
|
166
|
+
"comparison": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"enum": ["none", "previous-period", "benchmark", "target"]
|
|
169
|
+
},
|
|
170
|
+
"showTable": {
|
|
171
|
+
"type": "boolean"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"allowedSpans": [4, 6, 8, 12],
|
|
176
|
+
"allowedSurfaces": ["default", "subtle", "elevated"],
|
|
177
|
+
"responsiveBehavior": "preserve",
|
|
178
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
179
|
+
"dataRequirements": ["series ids", "labels", "values", "formatters", "accessible summary"],
|
|
180
|
+
"rtlReady": true,
|
|
181
|
+
"reducedMotion": true,
|
|
182
|
+
"agentPermissions": {
|
|
183
|
+
"create": true,
|
|
184
|
+
"remove": true,
|
|
185
|
+
"move": true,
|
|
186
|
+
"editableProps": ["chartType", "comparison", "showTable"]
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"id": "calendar-panel",
|
|
191
|
+
"version": 1,
|
|
192
|
+
"title": "Calendar Panel",
|
|
193
|
+
"category": "temporal",
|
|
194
|
+
"description": "A locale-aware calendar or scheduler composition with timezone, navigation, event priority, and collision contracts.",
|
|
195
|
+
"availability": "available",
|
|
196
|
+
"renderer": "blocks/calendar-application/CalendarApplicationBlocks.tsx#SchedulerShell",
|
|
197
|
+
"propsSchema": {
|
|
198
|
+
"additionalProperties": false,
|
|
199
|
+
"required": ["view", "timeZone"],
|
|
200
|
+
"properties": {
|
|
201
|
+
"view": {
|
|
202
|
+
"type": "string",
|
|
203
|
+
"enum": ["month", "week", "day", "agenda"]
|
|
204
|
+
},
|
|
205
|
+
"timeZone": {
|
|
206
|
+
"type": "string"
|
|
207
|
+
},
|
|
208
|
+
"locale": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"enum": ["en-US", "ar-SA", "ar-EG", "ar-AE"]
|
|
211
|
+
},
|
|
212
|
+
"direction": {
|
|
213
|
+
"type": "string",
|
|
214
|
+
"enum": ["inherit", "auto", "ltr", "rtl"]
|
|
215
|
+
},
|
|
216
|
+
"weekStartsOn": {
|
|
217
|
+
"type": "number",
|
|
218
|
+
"minimum": 0,
|
|
219
|
+
"maximum": 6
|
|
220
|
+
},
|
|
221
|
+
"secondaryCalendar": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"enum": ["none", "islamic-umalqura"]
|
|
224
|
+
},
|
|
225
|
+
"initialScrollHour": {
|
|
226
|
+
"type": "number",
|
|
227
|
+
"minimum": 0,
|
|
228
|
+
"maximum": 23
|
|
229
|
+
},
|
|
230
|
+
"showAgendaAlternative": {
|
|
231
|
+
"type": "boolean"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"allowedSpans": [6, 8, 12],
|
|
236
|
+
"allowedSurfaces": ["default", "subtle"],
|
|
237
|
+
"responsiveBehavior": "collapse",
|
|
238
|
+
"states": ["loading", "empty", "error", "conflict", "ready"],
|
|
239
|
+
"dataRequirements": ["event ids", "instants", "IANA timezone", "BCP 47 locale", "localized labels", "permissions", "conflict policy"],
|
|
240
|
+
"rtlReady": true,
|
|
241
|
+
"reducedMotion": true,
|
|
242
|
+
"agentPermissions": {
|
|
243
|
+
"create": true,
|
|
244
|
+
"remove": true,
|
|
245
|
+
"move": true,
|
|
246
|
+
"editableProps": [
|
|
247
|
+
"view",
|
|
248
|
+
"timeZone",
|
|
249
|
+
"locale",
|
|
250
|
+
"direction",
|
|
251
|
+
"weekStartsOn",
|
|
252
|
+
"secondaryCalendar",
|
|
253
|
+
"initialScrollHour",
|
|
254
|
+
"showAgendaAlternative"
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"id": "todo-list",
|
|
260
|
+
"version": 1,
|
|
261
|
+
"title": "To-do List",
|
|
262
|
+
"category": "productivity",
|
|
263
|
+
"description": "A focused task list with completion, priority, due context, semantic filters, and product-owned persistence.",
|
|
264
|
+
"availability": "available",
|
|
265
|
+
"renderer": "blocks/dashboard-composer/DashboardComposerBlocks.tsx#TodoListBlock",
|
|
266
|
+
"propsSchema": {
|
|
267
|
+
"additionalProperties": false,
|
|
268
|
+
"required": [],
|
|
269
|
+
"properties": {
|
|
270
|
+
"title": {
|
|
271
|
+
"type": "string"
|
|
272
|
+
},
|
|
273
|
+
"filter": {
|
|
274
|
+
"type": "string",
|
|
275
|
+
"enum": ["all", "today", "upcoming", "completed"]
|
|
276
|
+
},
|
|
277
|
+
"density": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"enum": ["compact", "default", "comfortable"]
|
|
280
|
+
},
|
|
281
|
+
"showCompleted": {
|
|
282
|
+
"type": "boolean"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"allowedSpans": [4, 6, 8, 12],
|
|
287
|
+
"allowedSurfaces": ["default", "subtle"],
|
|
288
|
+
"responsiveBehavior": "stack",
|
|
289
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
290
|
+
"dataRequirements": ["stable task ids", "localized task labels", "completion state", "product mutation adapter"],
|
|
291
|
+
"rtlReady": true,
|
|
292
|
+
"reducedMotion": true,
|
|
293
|
+
"agentPermissions": {
|
|
294
|
+
"create": true,
|
|
295
|
+
"remove": true,
|
|
296
|
+
"move": true,
|
|
297
|
+
"editableProps": ["title", "filter", "density", "showCompleted"]
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "activity-feed",
|
|
302
|
+
"version": 1,
|
|
303
|
+
"title": "Activity Feed",
|
|
304
|
+
"category": "operations",
|
|
305
|
+
"description": "A locale-aware chronological activity stream with actor-independent labels, semantic sources, grouped views, and recoverable pagination.",
|
|
306
|
+
"availability": "available",
|
|
307
|
+
"renderer": "blocks/activity-feed/ActivityFeedBlock.tsx#ActivityFeedBlock",
|
|
308
|
+
"propsSchema": {
|
|
309
|
+
"additionalProperties": false,
|
|
310
|
+
"required": [],
|
|
311
|
+
"properties": {
|
|
312
|
+
"density": {
|
|
313
|
+
"type": "string",
|
|
314
|
+
"enum": ["compact", "default", "comfortable"]
|
|
315
|
+
},
|
|
316
|
+
"groupBy": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"enum": ["none", "day", "source"]
|
|
319
|
+
},
|
|
320
|
+
"locale": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"enum": ["en-US", "ar-SA", "ar-EG", "ar-AE"]
|
|
323
|
+
},
|
|
324
|
+
"direction": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"enum": ["inherit", "auto", "ltr", "rtl"]
|
|
327
|
+
},
|
|
328
|
+
"timeZone": {
|
|
329
|
+
"type": "string"
|
|
330
|
+
},
|
|
331
|
+
"showSources": {
|
|
332
|
+
"type": "boolean"
|
|
333
|
+
},
|
|
334
|
+
"pageSize": {
|
|
335
|
+
"type": "number",
|
|
336
|
+
"minimum": 2,
|
|
337
|
+
"maximum": 20
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"allowedSpans": [3, 4, 6, 12],
|
|
342
|
+
"allowedSurfaces": ["default", "subtle"],
|
|
343
|
+
"responsiveBehavior": "stack",
|
|
344
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
345
|
+
"dataRequirements": ["activity id", "instant", "IANA timezone", "BCP 47 locale", "localized label", "source", "pagination cursor"],
|
|
346
|
+
"rtlReady": true,
|
|
347
|
+
"reducedMotion": true,
|
|
348
|
+
"agentPermissions": {
|
|
349
|
+
"create": true,
|
|
350
|
+
"remove": true,
|
|
351
|
+
"move": true,
|
|
352
|
+
"editableProps": [
|
|
353
|
+
"density",
|
|
354
|
+
"groupBy",
|
|
355
|
+
"locale",
|
|
356
|
+
"direction",
|
|
357
|
+
"timeZone",
|
|
358
|
+
"showSources",
|
|
359
|
+
"pageSize"
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"id": "agent-status",
|
|
365
|
+
"version": 1,
|
|
366
|
+
"title": "Agent Status",
|
|
367
|
+
"category": "agentic",
|
|
368
|
+
"description": "A locale-aware agent execution surface that separates progress, risk, approval, failure, and completion while products retain control of operational data and decisions.",
|
|
369
|
+
"availability": "available",
|
|
370
|
+
"renderer": "blocks/agent-status/AgentStatusBlock.tsx#AgentStatusBlock",
|
|
371
|
+
"propsSchema": {
|
|
372
|
+
"additionalProperties": false,
|
|
373
|
+
"required": [],
|
|
374
|
+
"properties": {
|
|
375
|
+
"density": {
|
|
376
|
+
"type": "string",
|
|
377
|
+
"enum": ["compact", "default", "comfortable"]
|
|
378
|
+
},
|
|
379
|
+
"filter": {
|
|
380
|
+
"type": "string",
|
|
381
|
+
"enum": ["all", "active", "attention", "completed"]
|
|
382
|
+
},
|
|
383
|
+
"locale": {
|
|
384
|
+
"type": "string",
|
|
385
|
+
"enum": ["en-US", "ar-SA", "ar-EG", "ar-AE"]
|
|
386
|
+
},
|
|
387
|
+
"direction": {
|
|
388
|
+
"type": "string",
|
|
389
|
+
"enum": ["inherit", "auto", "ltr", "rtl"]
|
|
390
|
+
},
|
|
391
|
+
"timeZone": {
|
|
392
|
+
"type": "string"
|
|
393
|
+
},
|
|
394
|
+
"showApprovals": {
|
|
395
|
+
"type": "boolean"
|
|
396
|
+
},
|
|
397
|
+
"maxItems": {
|
|
398
|
+
"type": "number",
|
|
399
|
+
"minimum": 1,
|
|
400
|
+
"maximum": 12
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
"allowedSpans": [3, 4, 6, 12],
|
|
405
|
+
"allowedSurfaces": ["default", "subtle", "elevated"],
|
|
406
|
+
"responsiveBehavior": "stack",
|
|
407
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
408
|
+
"dataRequirements": ["stable execution id", "localized agent and task labels", "execution state", "bounded progress", "risk state", "human approval request", "sanitized summary", "instant", "IANA timezone"],
|
|
409
|
+
"rtlReady": true,
|
|
410
|
+
"reducedMotion": true,
|
|
411
|
+
"agentPermissions": {
|
|
412
|
+
"create": true,
|
|
413
|
+
"remove": true,
|
|
414
|
+
"move": true,
|
|
415
|
+
"editableProps": [
|
|
416
|
+
"density",
|
|
417
|
+
"filter",
|
|
418
|
+
"locale",
|
|
419
|
+
"direction",
|
|
420
|
+
"timeZone",
|
|
421
|
+
"showApprovals",
|
|
422
|
+
"maxItems"
|
|
423
|
+
]
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
]
|
|
427
|
+
}
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
{
|
|
87
87
|
"id": "precise",
|
|
88
88
|
"label": "Precise dissolve",
|
|
89
|
-
"themes": ["barrier-intelligence"],
|
|
89
|
+
"themes": ["barrier-intelligence", "renacore"],
|
|
90
90
|
"personality": "precise",
|
|
91
91
|
"description": "Controlled dissolves and small scale changes for analytical surfaces.",
|
|
92
92
|
"rules": ["Prefer opacity over travel", "Keep scale changes below two percent", "Preserve analytical continuity"],
|
|
@@ -8,5 +8,117 @@
|
|
|
8
8
|
"Themes are token-contract and visual-policy implementations, not decorative skins.",
|
|
9
9
|
"Arabic-friendly support is a baseline requirement."
|
|
10
10
|
],
|
|
11
|
-
"antiPatterns": ["Invented tokens", "Generic SaaS gradients", "Rounded marketing cards", "Glassmorphism", "Raw left/right APIs", "Unreviewed Arabic copy"]
|
|
11
|
+
"antiPatterns": ["Invented tokens", "Generic SaaS gradients", "Rounded marketing cards", "Glassmorphism", "Raw left/right APIs", "Unreviewed Arabic copy"],
|
|
12
|
+
"patterns": [
|
|
13
|
+
{
|
|
14
|
+
"id": "composite-keyboard-navigation",
|
|
15
|
+
"title": "Keyboard navigation in composite widgets",
|
|
16
|
+
"contract": "Keep one tab stop, move roving focus with logical arrows, support Home/End and documented Page movement, and preserve the active key when data changes.",
|
|
17
|
+
"requiredAlternatives": ["pointer", "keyboard", "touch"],
|
|
18
|
+
"rtl": "Inline ArrowLeft and ArrowRight movement follows reading direction; block movement does not flip."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "inclusive-drag-and-drop",
|
|
22
|
+
"title": "Drag and drop with keyboard and touch alternatives",
|
|
23
|
+
"contract": "Every drag action has Move earlier/Move later controls, announces the result, and restores focus to the moved item.",
|
|
24
|
+
"requiredAlternatives": ["pointer drag", "keyboard move", "touch move controls"],
|
|
25
|
+
"reducedMotion": "Commit the final order without animated displacement."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "optimistic-recovery",
|
|
29
|
+
"title": "Optimistic mutation, error recovery, and undo",
|
|
30
|
+
"contract": "Apply the local result, expose Undo, rollback on a failed commit, and announce both failure and restored state without losing focus."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "responsive-dense-surface",
|
|
34
|
+
"title": "Responsive transformation of dense desktop surfaces",
|
|
35
|
+
"contract": "At narrow widths preserve the task and reading order, own horizontal scrolling inside the dense region, and expose equivalent actions without hover dependency."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "chart-period-comparison",
|
|
39
|
+
"title": "Period comparison and benchmark analysis",
|
|
40
|
+
"contract": "Keep current, previous, target, forecast, and benchmark series semantically distinct in labels, line patterns, tokens, and the data table; never rely on hue alone.",
|
|
41
|
+
"states": ["loading", "empty", "error", "partial", "ready"],
|
|
42
|
+
"rtl": "Chronological start follows reading direction while period labels and numbers preserve their locale."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "chart-drill-down",
|
|
46
|
+
"title": "Drill down from summary to detail",
|
|
47
|
+
"contract": "A selected metric or point exposes an explicit action into detail without making the SVG geometry the only actionable surface. Restore focus to the originating summary when returning."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "chart-table-alternative",
|
|
51
|
+
"title": "Chart plus accessible tabular alternative",
|
|
52
|
+
"contract": "Provide a concise chart summary, keyboard point explorer, and semantic table containing the same series identities, periods, missing values, and formatted values."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "chart-data-availability",
|
|
56
|
+
"title": "No-data, delayed-data, and partial-data communication",
|
|
57
|
+
"contract": "Differentiate loading, empty, error, and partial data. Never draw missing values as zero; identify unavailable cells and preserve recovery guidance."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "database-inline-editing",
|
|
61
|
+
"title": "Inline database editing and validation",
|
|
62
|
+
"contract": "Enter or double-click starts editing, validation remains attached to the property, Escape cancels, Enter or blur commits, and focus returns to the same cell."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "database-query-views",
|
|
66
|
+
"title": "Filtering, sorting, grouping, and saved database views",
|
|
67
|
+
"contract": "Persist semantic query clauses and property visibility in named views without encoding presentation-only CSS."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "database-bulk-actions",
|
|
71
|
+
"title": "Database multi-selection and bulk actions",
|
|
72
|
+
"contract": "Expose selected record count and permission-aware bulk actions while preserving row and cell focus."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "database-optimistic-recovery",
|
|
76
|
+
"title": "Database optimistic mutation and undo",
|
|
77
|
+
"contract": "Apply a controlled local mutation, announce saving, rollback rejected commits, expose Undo, and never make the design system own persistence."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "database-mobile-detail",
|
|
81
|
+
"title": "Dense grid to mobile record detail",
|
|
82
|
+
"contract": "Replace the dense grid with scannable record cards at narrow widths and open a complete record detail surface without page-level horizontal scrolling."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "calendar-create-edit",
|
|
86
|
+
"title": "Create and edit a calendar event",
|
|
87
|
+
"contract": "Create and edit through a controlled modal surface with explicit start, end, all-day state, validation, focus restoration, and product-owned persistence."
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "calendar-move-resize-recovery",
|
|
91
|
+
"title": "Move and resize with conflict recovery",
|
|
92
|
+
"contract": "Pointer manipulation must have keyboard and touch controls; invalid, overlapping, unavailable, or rejected changes are announced and never silently committed."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "calendar-recurrence-scope",
|
|
96
|
+
"title": "Edit an occurrence or recurring series",
|
|
97
|
+
"contract": "A recurring event edit explicitly chooses this occurrence or the entire series, preserving stable series identity and occurrence exceptions."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "calendar-date-timezone-navigation",
|
|
101
|
+
"title": "Navigate dates, ranges, and timezones",
|
|
102
|
+
"contract": "Today, previous, next, direct date, view, and IANA timezone controls remain explicit; displayed event date and time update without changing the stored instant."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "calendar-responsive-views",
|
|
106
|
+
"title": "Responsive month, day, and agenda views",
|
|
107
|
+
"contract": "Dense week and month grids transform to a usable day or agenda task on narrow screens while the semantic agenda remains available to assistive technology."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "todo-completion-and-recovery",
|
|
111
|
+
"title": "Complete and recover a task",
|
|
112
|
+
"contract": "Task completion remains keyboard and pointer operable, announces aggregate progress, keeps product data controlled, and does not make Layout JSON own task records.",
|
|
113
|
+
"states": ["loading", "empty", "error", "ready"],
|
|
114
|
+
"rtl": "Checkbox, task label, metadata, and destructive action follow logical reading order."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "agent-dashboard-composition",
|
|
118
|
+
"title": "Agent and human dashboard composition",
|
|
119
|
+
"contract": "Agents and human arrange controls write the same versioned Layout JSON, validate before commit, preserve locked blocks and regions, and render only registered semantic props.",
|
|
120
|
+
"requiredAlternatives": ["agent mutation", "keyboard controls", "touch controls"],
|
|
121
|
+
"rtl": "Placement uses logical reading order while registered column and span values remain deterministic."
|
|
122
|
+
}
|
|
123
|
+
]
|
|
12
124
|
}
|