@utopia-studio-design/design-system-cli 0.4.0 → 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 +115 -7
- 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 +2 -1
- package/data/docs/interaction-foundation.md +109 -0
- package/data/docs/observability.md +165 -0
- package/data/docs/quick-start-ai.md +55 -1
- package/data/manifests/blocks.json +392 -0
- package/data/manifests/catalog.json +7 -4
- package/data/manifests/components.json +191 -3
- 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/lib/telemetry.mjs +74 -0
- package/package.json +4 -1
|
@@ -91,6 +91,352 @@
|
|
|
91
91
|
]
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "template-interaction-lab",
|
|
97
|
+
"title": "Interaction Lab",
|
|
98
|
+
"category": "development-tool",
|
|
99
|
+
"status": "available",
|
|
100
|
+
"purpose": "A runnable contract lab for developing and verifying Ceramic complex components before product-specific composition.",
|
|
101
|
+
"starterFor": [
|
|
102
|
+
"Charts development",
|
|
103
|
+
"Database surface development",
|
|
104
|
+
"Calendar and Scheduler development"
|
|
105
|
+
],
|
|
106
|
+
"sections": [
|
|
107
|
+
"Preview controls",
|
|
108
|
+
"Selection and reorder",
|
|
109
|
+
"Resize",
|
|
110
|
+
"Virtualized collection",
|
|
111
|
+
"Live status"
|
|
112
|
+
],
|
|
113
|
+
"requiredComponents": [
|
|
114
|
+
"Button",
|
|
115
|
+
"Interaction foundation"
|
|
116
|
+
],
|
|
117
|
+
"sourcePath": "templates/interaction-lab/main.tsx",
|
|
118
|
+
"entryPath": "templates/interaction-lab/index.html",
|
|
119
|
+
"manifestPath": "templates/interaction-lab/template.manifest.json",
|
|
120
|
+
"bundlePath": "templates/interaction-lab",
|
|
121
|
+
"pageCount": 1,
|
|
122
|
+
"pages": ["Interaction Lab"],
|
|
123
|
+
"useWhen": [
|
|
124
|
+
"A complex component needs a shared deterministic interaction fixture",
|
|
125
|
+
"Keyboard, touch, RTL, reduced motion, or large-collection behavior needs review"
|
|
126
|
+
],
|
|
127
|
+
"avoidWhen": [
|
|
128
|
+
"The product needs a finished domain workflow",
|
|
129
|
+
"Business data or mutation policy belongs in the application"
|
|
130
|
+
],
|
|
131
|
+
"rtlReady": true,
|
|
132
|
+
"preview": {
|
|
133
|
+
"kind": "interaction-lab",
|
|
134
|
+
"density": "compact"
|
|
135
|
+
},
|
|
136
|
+
"translations": {
|
|
137
|
+
"ar": {
|
|
138
|
+
"title": "مختبر التفاعل",
|
|
139
|
+
"purpose": "مختبر قابل للتشغيل لتطوير مكونات Ceramic المعقدة والتحقق من عقود التفاعل المشتركة قبل تركيبها في المنتج.",
|
|
140
|
+
"starterFor": [
|
|
141
|
+
"تطوير الرسوم البيانية",
|
|
142
|
+
"تطوير واجهات قواعد البيانات",
|
|
143
|
+
"تطوير التقويم والجدولة"
|
|
144
|
+
],
|
|
145
|
+
"sections": [
|
|
146
|
+
"عناصر التحكم في المعاينة",
|
|
147
|
+
"التحديد وإعادة الترتيب",
|
|
148
|
+
"تغيير الحجم",
|
|
149
|
+
"المجموعة الافتراضية",
|
|
150
|
+
"الحالة المباشرة"
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "template-composition-registry-lab",
|
|
157
|
+
"title": "Composition Registry Lab",
|
|
158
|
+
"category": "development-tool",
|
|
159
|
+
"status": "available",
|
|
160
|
+
"purpose": "A runnable review surface for Ceramic block definitions, design guardrails, versioned Layout JSON, and agent/editor ownership boundaries.",
|
|
161
|
+
"starterFor": [
|
|
162
|
+
"Agent-controlled dashboards",
|
|
163
|
+
"Studio modular layouts",
|
|
164
|
+
"Optional Puck visual-editor integration"
|
|
165
|
+
],
|
|
166
|
+
"sections": [
|
|
167
|
+
"Ownership boundary",
|
|
168
|
+
"Ceramic design guardrails",
|
|
169
|
+
"Block definition palette",
|
|
170
|
+
"Layout JSON preview",
|
|
171
|
+
"Developer evidence"
|
|
172
|
+
],
|
|
173
|
+
"requiredComponents": [
|
|
174
|
+
"Badge",
|
|
175
|
+
"Button",
|
|
176
|
+
"Composition Registry"
|
|
177
|
+
],
|
|
178
|
+
"sourcePath": "templates/composition-registry-lab/main.tsx",
|
|
179
|
+
"entryPath": "templates/composition-registry-lab/index.html",
|
|
180
|
+
"manifestPath": "templates/composition-registry-lab/template.manifest.json",
|
|
181
|
+
"bundlePath": "templates/composition-registry-lab",
|
|
182
|
+
"pageCount": 1,
|
|
183
|
+
"pages": ["Composition Registry Lab"],
|
|
184
|
+
"useWhen": [
|
|
185
|
+
"A product needs agent-readable modular dashboard composition",
|
|
186
|
+
"A human visual editor must share the same Ceramic block and layout contract"
|
|
187
|
+
],
|
|
188
|
+
"avoidWhen": [
|
|
189
|
+
"Arbitrary CSS or unregistered UI is required",
|
|
190
|
+
"The editor is expected to create Ceramic primitives or theme rules"
|
|
191
|
+
],
|
|
192
|
+
"rtlReady": true,
|
|
193
|
+
"preview": {
|
|
194
|
+
"kind": "composition-registry-lab",
|
|
195
|
+
"density": "balanced"
|
|
196
|
+
},
|
|
197
|
+
"translations": {
|
|
198
|
+
"ar": {
|
|
199
|
+
"title": "مختبر سجل التركيب",
|
|
200
|
+
"purpose": "واجهة مراجعة قابلة للتشغيل لتعريفات كتل Ceramic وضوابط التصميم وعقد تخطيط JSON وحدود ملكية المحرر.",
|
|
201
|
+
"starterFor": [
|
|
202
|
+
"لوحات تحكم يديرها الوكيل",
|
|
203
|
+
"تخطيطات Studio المعيارية",
|
|
204
|
+
"تكامل محرر Puck المرئي الاختياري"
|
|
205
|
+
],
|
|
206
|
+
"sections": [
|
|
207
|
+
"حدود الملكية",
|
|
208
|
+
"ضوابط تصميم Ceramic",
|
|
209
|
+
"لوحة تعريفات الكتل",
|
|
210
|
+
"معاينة تخطيط JSON",
|
|
211
|
+
"أدلة المطور"
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "template-analytics-dashboard",
|
|
218
|
+
"title": "Analytics Dashboard",
|
|
219
|
+
"category": "analytics",
|
|
220
|
+
"status": "available",
|
|
221
|
+
"purpose": "A runnable analytics dashboard covering Ceramic chart families, semantic series, complete data states, keyboard exploration, exact-value tables, RTL, and responsive behavior.",
|
|
222
|
+
"starterFor": [
|
|
223
|
+
"Executive and operational dashboards",
|
|
224
|
+
"Period comparison and benchmark analysis",
|
|
225
|
+
"Accessible data visualization"
|
|
226
|
+
],
|
|
227
|
+
"sections": [
|
|
228
|
+
"Preview controls",
|
|
229
|
+
"KPI grid",
|
|
230
|
+
"Primary trend chart",
|
|
231
|
+
"Benchmark comparison",
|
|
232
|
+
"Chart with data table"
|
|
233
|
+
],
|
|
234
|
+
"requiredComponents": [
|
|
235
|
+
"Chart Root",
|
|
236
|
+
"Badge",
|
|
237
|
+
"Button"
|
|
238
|
+
],
|
|
239
|
+
"sourcePath": "templates/analytics-dashboard/main.tsx",
|
|
240
|
+
"entryPath": "templates/analytics-dashboard/index.html",
|
|
241
|
+
"manifestPath": "templates/analytics-dashboard/template.manifest.json",
|
|
242
|
+
"bundlePath": "templates/analytics-dashboard",
|
|
243
|
+
"pageCount": 1,
|
|
244
|
+
"pages": ["Analytics Dashboard"],
|
|
245
|
+
"useWhen": [
|
|
246
|
+
"A product needs governed analytics with exact-value alternatives",
|
|
247
|
+
"Chart families and states must be evaluated in one responsive route"
|
|
248
|
+
],
|
|
249
|
+
"avoidWhen": [
|
|
250
|
+
"A single decorative sparkline is sufficient",
|
|
251
|
+
"Raw renderer styling or unlabeled data is required"
|
|
252
|
+
],
|
|
253
|
+
"rtlReady": true,
|
|
254
|
+
"preview": {
|
|
255
|
+
"kind": "analytics-dashboard",
|
|
256
|
+
"density": "data-rich"
|
|
257
|
+
},
|
|
258
|
+
"translations": {
|
|
259
|
+
"ar": {
|
|
260
|
+
"title": "لوحة تحليلات",
|
|
261
|
+
"purpose": "لوحة تحليلات قابلة للتشغيل تغطي عائلات مخططات Ceramic والسلاسل الدلالية وحالات البيانات الكاملة والاستكشاف بلوحة المفاتيح وجداول القيم الدقيقة واتجاه RTL والسلوك المتجاوب.",
|
|
262
|
+
"starterFor": [
|
|
263
|
+
"لوحات المعلومات التنفيذية والتشغيلية",
|
|
264
|
+
"مقارنة الفترات وتحليل المعايير",
|
|
265
|
+
"تصور البيانات المتاح"
|
|
266
|
+
],
|
|
267
|
+
"sections": [
|
|
268
|
+
"عناصر تحكم المعاينة",
|
|
269
|
+
"شبكة مؤشرات الأداء",
|
|
270
|
+
"مخطط الاتجاه الأساسي",
|
|
271
|
+
"مقارنة المعيار",
|
|
272
|
+
"المخطط مع جدول البيانات"
|
|
273
|
+
]
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "template-database-workspace",
|
|
279
|
+
"title": "Database Workspace",
|
|
280
|
+
"category": "database",
|
|
281
|
+
"status": "available",
|
|
282
|
+
"purpose": "A runnable schema-driven database workspace covering multiple property types, saved views, virtualization, inline editing, permissions, optimistic recovery, RTL, and mobile record details.",
|
|
283
|
+
"starterFor": [
|
|
284
|
+
"Product and project databases",
|
|
285
|
+
"Notion-style record workspaces",
|
|
286
|
+
"Large editable operational datasets"
|
|
287
|
+
],
|
|
288
|
+
"sections": [
|
|
289
|
+
"Direction and data-state controls",
|
|
290
|
+
"Saved views",
|
|
291
|
+
"Database toolbar",
|
|
292
|
+
"Virtualized record grid",
|
|
293
|
+
"Mobile record details"
|
|
294
|
+
],
|
|
295
|
+
"requiredComponents": ["Database Root", "Button", "Badge"],
|
|
296
|
+
"sourcePath": "templates/database-workspace/main.tsx",
|
|
297
|
+
"entryPath": "templates/database-workspace/index.html",
|
|
298
|
+
"manifestPath": "templates/database-workspace/template.manifest.json",
|
|
299
|
+
"bundlePath": "templates/database-workspace",
|
|
300
|
+
"pageCount": 1,
|
|
301
|
+
"pages": ["Database Workspace"],
|
|
302
|
+
"useWhen": [
|
|
303
|
+
"A product needs schema-driven editable records and multiple saved views",
|
|
304
|
+
"A dense desktop grid must become usable mobile record details"
|
|
305
|
+
],
|
|
306
|
+
"avoidWhen": [
|
|
307
|
+
"A read-only table is sufficient",
|
|
308
|
+
"The design system would need to own product persistence or authorization"
|
|
309
|
+
],
|
|
310
|
+
"rtlReady": true,
|
|
311
|
+
"preview": { "kind": "database-workspace", "density": "data-rich" },
|
|
312
|
+
"translations": {
|
|
313
|
+
"ar": {
|
|
314
|
+
"title": "مساحة عمل قاعدة البيانات",
|
|
315
|
+
"purpose": "مساحة عمل قابلة للتشغيل وسياقية المخطط تغطي أنواع خصائص متعددة والعروض المحفوظة والمحاكاة الافتراضية والتحرير المباشر والصلاحيات والاسترداد المتفائل واتجاه RTL وتفاصيل السجل على الهاتف.",
|
|
316
|
+
"starterFor": ["قواعد بيانات المنتجات والمشاريع", "مساحات عمل السجلات", "مجموعات البيانات التشغيلية الكبيرة"],
|
|
317
|
+
"sections": ["عناصر تحكم الاتجاه والحالة", "العروض المحفوظة", "شريط أدوات قاعدة البيانات", "شبكة السجلات الافتراضية", "تفاصيل السجل على الهاتف"]
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"id": "template-calendar-application",
|
|
323
|
+
"title": "Calendar Application",
|
|
324
|
+
"category": "calendar",
|
|
325
|
+
"status": "available",
|
|
326
|
+
"purpose": "A runnable application scheduler covering Month, Week, Day, and Agenda views, recurrence, overlap, conflicts, timezone display, event editing, permissions, RTL, and responsive behavior.",
|
|
327
|
+
"starterFor": ["Team calendars", "Resource scheduling", "Cross-timezone planning"],
|
|
328
|
+
"sections": ["Date and state controls", "Resource sidebar", "Scheduler canvas", "Accessible agenda", "Event editor"],
|
|
329
|
+
"requiredComponents": ["Scheduler Root", "Button"],
|
|
330
|
+
"packageDependencies": {
|
|
331
|
+
"@phosphor-icons/react": "^2.1.10"
|
|
332
|
+
},
|
|
333
|
+
"sourcePath": "templates/calendar-application/main.tsx",
|
|
334
|
+
"entryPath": "templates/calendar-application/index.html",
|
|
335
|
+
"manifestPath": "templates/calendar-application/template.manifest.json",
|
|
336
|
+
"bundlePath": "templates/calendar-application",
|
|
337
|
+
"pageCount": 1,
|
|
338
|
+
"pages": ["Calendar Application"],
|
|
339
|
+
"useWhen": [
|
|
340
|
+
"A product needs event and resource scheduling rather than date selection",
|
|
341
|
+
"Drag-like actions require accessible keyboard and touch alternatives"
|
|
342
|
+
],
|
|
343
|
+
"avoidWhen": [
|
|
344
|
+
"A date picker is sufficient",
|
|
345
|
+
"The design system would need to own persistence, authorization, or locale copy"
|
|
346
|
+
],
|
|
347
|
+
"rtlReady": true,
|
|
348
|
+
"preview": { "kind": "calendar-application", "density": "data-rich" },
|
|
349
|
+
"translations": {
|
|
350
|
+
"ar": {
|
|
351
|
+
"title": "تطبيق التقويم",
|
|
352
|
+
"purpose": "جدولة تطبيقية قابلة للتشغيل مع عروض الشهر والأسبوع واليوم وجدول الأعمال والتكرار والتعارضات والمناطق الزمنية وتحرير الأحداث واتجاه RTL.",
|
|
353
|
+
"starterFor": ["تقويمات الفرق", "جدولة الموارد", "التخطيط عبر المناطق الزمنية"],
|
|
354
|
+
"sections": ["عناصر تحكم التاريخ والحالة", "الشريط الجانبي للموارد", "لوحة الجدولة", "جدول الأعمال المتاح", "محرر الحدث"]
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"id": "template-dashboard-composer",
|
|
360
|
+
"title": "Dashboard Composer",
|
|
361
|
+
"category": "application-dashboard",
|
|
362
|
+
"status": "available",
|
|
363
|
+
"purpose": "A live Ceramic Layout JSON runtime and optional Puck editing layer for real To-do, Calendar, Issue Table, Chart Panel, Activity Feed, Agent Status, and Metrics blocks.",
|
|
364
|
+
"starterFor": [
|
|
365
|
+
"Agent-controlled personal dashboards",
|
|
366
|
+
"Studio modular application layouts",
|
|
367
|
+
"Human drag-and-drop through a registry-governed Puck adapter"
|
|
368
|
+
],
|
|
369
|
+
"sections": [
|
|
370
|
+
"Agent and human layout controls",
|
|
371
|
+
"Registered block palette",
|
|
372
|
+
"Live To-do block",
|
|
373
|
+
"Live Calendar block",
|
|
374
|
+
"Governed Issue Table block",
|
|
375
|
+
"Lazy semantic Chart Panel block",
|
|
376
|
+
"Localized Activity Feed block",
|
|
377
|
+
"Governed Agent Status and approval block",
|
|
378
|
+
"Locked Metrics block",
|
|
379
|
+
"Puck visual editor",
|
|
380
|
+
"Agent Status resilience State Lab",
|
|
381
|
+
"Layout JSON evidence"
|
|
382
|
+
],
|
|
383
|
+
"requiredComponents": [
|
|
384
|
+
"Composition Registry",
|
|
385
|
+
"Ceramic Puck Adapter",
|
|
386
|
+
"Scheduler Root",
|
|
387
|
+
"Database Root",
|
|
388
|
+
"Chart Root",
|
|
389
|
+
"Button",
|
|
390
|
+
"Badge",
|
|
391
|
+
"Checkbox"
|
|
392
|
+
],
|
|
393
|
+
"packageDependencies": {
|
|
394
|
+
"@phosphor-icons/react": "^2.1.10",
|
|
395
|
+
"@puckeditor/core": "^0.22.4"
|
|
396
|
+
},
|
|
397
|
+
"sourcePath": "templates/dashboard-composer/main.tsx",
|
|
398
|
+
"entryPath": "templates/dashboard-composer/index.html",
|
|
399
|
+
"manifestPath": "templates/dashboard-composer/template.manifest.json",
|
|
400
|
+
"bundlePath": "templates/dashboard-composer",
|
|
401
|
+
"pageCount": 3,
|
|
402
|
+
"pages": ["Dashboard Composer", "Puck Visual Editor", "Agent Status State Lab"],
|
|
403
|
+
"useWhen": [
|
|
404
|
+
"An agent must arrange reviewed blocks through the same JSON used by the runtime",
|
|
405
|
+
"A team needs human drag-and-drop without allowing arbitrary design-system bypasses"
|
|
406
|
+
],
|
|
407
|
+
"avoidWhen": [
|
|
408
|
+
"Arbitrary CSS or unregistered UI must be stored in the layout",
|
|
409
|
+
"The design system would need to own task, calendar, activity, agent execution, or approval persistence"
|
|
410
|
+
],
|
|
411
|
+
"rtlReady": true,
|
|
412
|
+
"preview": {
|
|
413
|
+
"kind": "dashboard-composer",
|
|
414
|
+
"density": "data-rich",
|
|
415
|
+
"agentStatusStateLab": true
|
|
416
|
+
},
|
|
417
|
+
"translations": {
|
|
418
|
+
"ar": {
|
|
419
|
+
"title": "مؤلف لوحة المعلومات",
|
|
420
|
+
"purpose": "وقت تشغيل مباشر لتخطيط Ceramic JSON وطبقة تحرير Puck اختيارية لكتل المهام والتقويم وجدول المشكلات والمخططات والنشاط وحالة الوكلاء والمقاييس الحقيقية.",
|
|
421
|
+
"starterFor": [
|
|
422
|
+
"لوحات معلومات شخصية يديرها الوكيل",
|
|
423
|
+
"تخطيطات تطبيقات Studio المعيارية",
|
|
424
|
+
"السحب والإفلات البشري عبر محول Puck الخاضع للسجل"
|
|
425
|
+
],
|
|
426
|
+
"sections": [
|
|
427
|
+
"عناصر تحكم الوكيل والإنسان",
|
|
428
|
+
"لوحة الكتل المسجلة",
|
|
429
|
+
"كتلة المهام المباشرة",
|
|
430
|
+
"كتلة التقويم المباشرة",
|
|
431
|
+
"كتلة جدول المشكلات المنضبطة",
|
|
432
|
+
"كتلة المخطط الدلالي",
|
|
433
|
+
"كتلة النشاط المترجمة",
|
|
434
|
+
"كتلة المقاييس المقفلة",
|
|
435
|
+
"محرر Puck المرئي",
|
|
436
|
+
"دليل Layout JSON"
|
|
437
|
+
]
|
|
438
|
+
}
|
|
439
|
+
}
|
|
94
440
|
}
|
|
95
441
|
]
|
|
96
442
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://utopia-studio.co/design-system/theme.schema.json",
|
|
3
|
+
"id": "renacore",
|
|
4
|
+
"name": "Renacore",
|
|
5
|
+
"type": "theme-policy",
|
|
6
|
+
"locked": false,
|
|
7
|
+
"motionProfile": "precise",
|
|
8
|
+
"summary": "Renacore maps Ceramic to a calm, precise, utilitarian operational workspace built for scanning and action. The canonical product canvas is light; dark inverse surfaces are reserved for focused marketing, monitoring, and media moments.",
|
|
9
|
+
"sourceFiles": [
|
|
10
|
+
"packages/design-system/src/themes/renacore.css",
|
|
11
|
+
"packages/design-system/src/manifests/theme-renacore.json",
|
|
12
|
+
"apps/web-dashboard/src/app/globals.css",
|
|
13
|
+
"apps/web-dashboard/tailwind.config.ts"
|
|
14
|
+
],
|
|
15
|
+
"brandPrimitives": {
|
|
16
|
+
"colors": {
|
|
17
|
+
"white": "#FFFFFF",
|
|
18
|
+
"black": "#000000",
|
|
19
|
+
"nearBlack": "#020D13",
|
|
20
|
+
"teal": "#12414B",
|
|
21
|
+
"tealHover": "#0E333B",
|
|
22
|
+
"signalCyan": "#97D1DD",
|
|
23
|
+
"ice": "#D6EAED",
|
|
24
|
+
"muted": "#F2F2F2",
|
|
25
|
+
"mutedForeground": "#666666",
|
|
26
|
+
"enterpriseCanvas": "#F7F4EC",
|
|
27
|
+
"enterpriseBorder": "#DED6C8",
|
|
28
|
+
"enterpriseInk": "#18211F",
|
|
29
|
+
"enterpriseMuted": "#51655F"
|
|
30
|
+
},
|
|
31
|
+
"typography": {
|
|
32
|
+
"latin": "Host Grotesk",
|
|
33
|
+
"arabic": "IBM Plex Sans Arabic",
|
|
34
|
+
"weights": [300, 400, 500, 600, 700, 800],
|
|
35
|
+
"productHeadingRule": "Use light headings on primary product surfaces. Reserve semibold for settings and dialog headings.",
|
|
36
|
+
"headlineCasing": "sentence",
|
|
37
|
+
"headlineTracking": "tight",
|
|
38
|
+
"eyebrowTracking": "0.2em",
|
|
39
|
+
"arabicDisplayRule": "Use IBM Plex Sans Arabic with native rhythm. Never apply Latin tracking or uppercase behavior."
|
|
40
|
+
},
|
|
41
|
+
"geometry": {
|
|
42
|
+
"baseRadius": "8px",
|
|
43
|
+
"controlRadius": "6px",
|
|
44
|
+
"smallRadius": "4px",
|
|
45
|
+
"surfaceRadius": "12px",
|
|
46
|
+
"elevation": "Low-contrast borders and restrained shadows. Chat composer is the highest-elevation product surface."
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"semanticMappings": {
|
|
50
|
+
"--background": "White",
|
|
51
|
+
"--foreground": "Black",
|
|
52
|
+
"--card": "Muted Grey",
|
|
53
|
+
"--card-foreground": "Black",
|
|
54
|
+
"--primary": "Renacore Teal",
|
|
55
|
+
"--primary-foreground": "White",
|
|
56
|
+
"--secondary": "Muted Grey",
|
|
57
|
+
"--secondary-foreground": "Renacore Teal",
|
|
58
|
+
"--muted": "Muted Grey",
|
|
59
|
+
"--muted-foreground": "40% Grey",
|
|
60
|
+
"--border": "Muted Grey",
|
|
61
|
+
"--ring": "Renacore Teal",
|
|
62
|
+
"--radius-control": "6px",
|
|
63
|
+
"--radius-surface": "12px",
|
|
64
|
+
"--font-sans": "Host Grotesk",
|
|
65
|
+
"--font-arabic": "IBM Plex Sans Arabic",
|
|
66
|
+
"--motion-duration-page": "300ms",
|
|
67
|
+
"--motion-duration-reveal": "500ms"
|
|
68
|
+
},
|
|
69
|
+
"visualPolicy": {
|
|
70
|
+
"tone": ["calm", "precise", "utilitarian", "executive", "operational"],
|
|
71
|
+
"allow": [
|
|
72
|
+
"white operational canvases with low-contrast grey structure",
|
|
73
|
+
"Renacore Teal for active, connected, linked, and focused states",
|
|
74
|
+
"light-weight Host Grotesk headings",
|
|
75
|
+
"tight heading tracking and widely tracked uppercase labels",
|
|
76
|
+
"rounded but compact controls",
|
|
77
|
+
"warm enterprise surfaces for administrative and control-plane pages",
|
|
78
|
+
"real industrial photography on marketing or contextual media surfaces",
|
|
79
|
+
"dark inverse fields for focused brand and marketing moments"
|
|
80
|
+
],
|
|
81
|
+
"avoid": [
|
|
82
|
+
"using dark marketing surfaces as the default product canvas",
|
|
83
|
+
"brand teal on every decorative element",
|
|
84
|
+
"heavy display typography across product surfaces",
|
|
85
|
+
"mixed icon families",
|
|
86
|
+
"generic loading spinners in branded AI or page-level loading states",
|
|
87
|
+
"dense effects, neon grids, and generic AI overlays",
|
|
88
|
+
"AI-generated infrastructure when credible real media is available"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"iconPolicy": {
|
|
92
|
+
"system": "lucide",
|
|
93
|
+
"description": "Wrap lucide-react icons with strokeWidth 1.5 and flex-shrink: 0. The Renacore monogram is a brand and loading asset, not a general interface icon.",
|
|
94
|
+
"allow": [
|
|
95
|
+
"Lucide icons at 16px and 20px defaults",
|
|
96
|
+
"1.5px strokes",
|
|
97
|
+
"accessible labels on icon-only buttons",
|
|
98
|
+
"the Renacore monogram as the sole branded loader"
|
|
99
|
+
],
|
|
100
|
+
"avoid": ["Phosphor icons", "emoji", "mixed icon families", "filled utility icons"]
|
|
101
|
+
},
|
|
102
|
+
"componentPolicy": {
|
|
103
|
+
"button": "Near Black default button with Pale Cyan text and sparse Cyan glow; hover to Renacore Teal.",
|
|
104
|
+
"input": "36px control with 6px radius, transparent field, low-contrast border, and 1px teal focus ring.",
|
|
105
|
+
"card": "12px radius, Muted Grey product surface, restrained border and shadow. Enterprise override uses warm border and white at 85%.",
|
|
106
|
+
"badge": "Compact status label. Reserve brand teal for active or connected states.",
|
|
107
|
+
"sidebar": "256px expanded, 60px collapsed; white canvas with compact active state in Muted Grey and Renacore Teal.",
|
|
108
|
+
"chatComposer": "16px radius, muted 30% field, 1.5px subtle border, and highest product elevation.",
|
|
109
|
+
"loader": "Animate the eight monogram paths with a 2s opacity pulse staggered by 150ms."
|
|
110
|
+
},
|
|
111
|
+
"marketingAssetPolicy": {
|
|
112
|
+
"priority": "Use licensed real industrial photography and footage before generated media.",
|
|
113
|
+
"camera": "Stable, observational, and physically credible. Favor scale, pressure, heat, steam, and layered infrastructure.",
|
|
114
|
+
"use": ["LNG trains", "compressors", "pipelines", "refineries", "operators", "control environments"],
|
|
115
|
+
"avoid": ["cyberpunk plants", "floating dashboards", "full-frame cyan washes", "physically implausible equipment"]
|
|
116
|
+
},
|
|
117
|
+
"arabicFriendly": {
|
|
118
|
+
"direction": "Support dir=\"rtl\" through logical CSS properties and mirrored directional motion.",
|
|
119
|
+
"typography": "Use IBM Plex Sans Arabic roles without Latin tracking or casing."
|
|
120
|
+
},
|
|
121
|
+
"translations": {
|
|
122
|
+
"ar": {
|
|
123
|
+
"summary": "يحوّل ثيم Renacore نظام Ceramic إلى مساحة تشغيلية هادئة ودقيقة وعملية، مصممة للمسح السريع واتخاذ الإجراء.",
|
|
124
|
+
"iconPolicy": {
|
|
125
|
+
"system": "Lucide",
|
|
126
|
+
"description": "استخدم أيقونات Lucide بسُمك 1.5 مع إبقاء شعار Renacore كأصل للهوية والتحميل فقط.",
|
|
127
|
+
"allow": ["أيقونات Lucide", "أيقونات أحادية اللون", "تسميات وصول للأزرار الأيقونية"]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"aiRules": [
|
|
132
|
+
"Treat DesignTokens as the authoritative source and map components through semantic roles.",
|
|
133
|
+
"Use the light operational canvas as the default Renacore product mode.",
|
|
134
|
+
"Use data-color-mode=\"dark\" only for deliberate inverse, monitoring, or marketing surfaces.",
|
|
135
|
+
"Use Host Grotesk throughout product UI and keep primary headings light.",
|
|
136
|
+
"Use Lucide icons with a 1.5 stroke and do not mix icon families.",
|
|
137
|
+
"Reserve Renacore Teal for active, connected, linked, and focused states.",
|
|
138
|
+
"Use the Renacore monogram as the sole branded page-level and AI loader.",
|
|
139
|
+
"Prefer real industrial media over generated infrastructure imagery.",
|
|
140
|
+
"Keep Arabic on IBM Plex Sans Arabic tokens without Latin casing or tracking."
|
|
141
|
+
]
|
|
142
|
+
}
|