@utopia-studio-design/design-system-cli 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +28 -10
  2. package/bin/utopia-ds-mcp.mjs +6 -2
  3. package/bin/utopia-ds.mjs +94 -21
  4. package/data/docs/arabic-friendly.md +19 -2
  5. package/data/docs/billing-setup.md +80 -0
  6. package/data/docs/cer-003-032-033-round-8-repair.md +41 -0
  7. package/data/docs/cer-007-checkout.md +51 -0
  8. package/data/docs/cer-008-011-qa-repair.md +64 -0
  9. package/data/docs/cer-016-023-round-6-repair.md +92 -0
  10. package/data/docs/cer-024-031-round-7-repair.md +51 -0
  11. package/data/docs/cer-033-035-036-round-12-repair.md +37 -0
  12. package/data/docs/cer-035-037-round-10-repair.md +34 -0
  13. package/data/docs/charts.md +34 -3
  14. package/data/docs/chat-service-methodology.md +181 -0
  15. package/data/docs/code-block.md +20 -0
  16. package/data/docs/creative-production.md +149 -0
  17. package/data/docs/designer-agent-backend-contract.md +552 -0
  18. package/data/docs/email-resend.md +29 -0
  19. package/data/docs/foundations.md +46 -8
  20. package/data/docs/guide.md +9 -9
  21. package/data/docs/handover-billing-aiden.md +132 -0
  22. package/data/docs/logo-maker-methodology.md +109 -0
  23. package/data/docs/presentation-asset-repository.md +53 -0
  24. package/data/docs/product-architecture.md +42 -0
  25. package/data/docs/quick-start-ai.md +4 -4
  26. package/data/docs/shadcn-conversion.md +1 -1
  27. package/data/docs/sidebar-placement.md +56 -0
  28. package/data/docs/theme-authoring.md +6 -3
  29. package/data/manifests/catalog.json +42 -46
  30. package/data/manifests/components.json +317 -66
  31. package/data/manifests/logo-skills.json +174 -0
  32. package/data/manifests/motion-profiles.json +2 -2
  33. package/data/manifests/patterns.json +201 -7
  34. package/data/manifests/presentation-assets.schema.json +44 -0
  35. package/data/manifests/templates.json +87 -1
  36. package/data/manifests/theme-dextrum.json +7 -7
  37. package/data/manifests/theme-prism-mono.json +19 -0
  38. package/data/manifests/theme-utopia-cloudblur.json +135 -0
  39. package/data/manifests/theme-utopia-default.json +31 -31
  40. package/data/manifests/theme-vyapti.json +17 -1
  41. package/data/manifests/theme-y2k-pop.json +18 -0
  42. package/data/manifests/themes.json +285 -57
  43. package/data/templates/analytics-dashboard/main.tsx +14 -1
  44. package/data/templates/calendar-application/main.tsx +14 -1
  45. package/data/templates/chat-workspace/README.md +12 -0
  46. package/data/templates/chat-workspace/index.html +11 -0
  47. package/data/templates/chat-workspace/main.tsx +97 -0
  48. package/data/templates/chat-workspace/styles.css +19 -0
  49. package/data/templates/chat-workspace/template.manifest.json +13 -0
  50. package/data/templates/composition-registry-lab/main.tsx +12 -1
  51. package/data/templates/dashboard-composer/main.tsx +14 -1
  52. package/data/templates/database-workspace/main.tsx +14 -1
  53. package/data/templates/interaction-lab/main.tsx +12 -1
  54. package/data/templates/quantum-verification-story/README.md +12 -0
  55. package/data/templates/quantum-verification-story/components.json +21 -0
  56. package/data/templates/quantum-verification-story/eslint.config.mjs +13 -0
  57. package/data/templates/quantum-verification-story/next-env.d.ts +7 -0
  58. package/data/templates/quantum-verification-story/next.config.mjs +11 -0
  59. package/data/templates/quantum-verification-story/package-lock.json +7535 -0
  60. package/data/templates/quantum-verification-story/package.json +46 -0
  61. package/data/templates/quantum-verification-story/postcss.config.js +6 -0
  62. package/data/templates/quantum-verification-story/src/app/assessment/page.tsx +138 -0
  63. package/data/templates/quantum-verification-story/src/app/ceramic-theme.css +48 -0
  64. package/data/templates/quantum-verification-story/src/app/deployment/page.tsx +178 -0
  65. package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Bold.ttf +0 -0
  66. package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Medium.ttf +0 -0
  67. package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Regular.ttf +0 -0
  68. package/data/templates/quantum-verification-story/src/app/fonts/ReadexPro-Variable.ttf +0 -0
  69. package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-350.ttf +0 -0
  70. package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-500.ttf +0 -0
  71. package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-700.ttf +0 -0
  72. package/data/templates/quantum-verification-story/src/app/globals.css +175 -0
  73. package/data/templates/quantum-verification-story/src/app/layout.tsx +45 -0
  74. package/data/templates/quantum-verification-story/src/app/not-found.tsx +39 -0
  75. package/data/templates/quantum-verification-story/src/app/page.tsx +24 -0
  76. package/data/templates/quantum-verification-story/src/app/products/page.tsx +132 -0
  77. package/data/templates/quantum-verification-story/src/app/utopia-default.css +312 -0
  78. package/data/templates/quantum-verification-story/src/components/RotatingText.css +36 -0
  79. package/data/templates/quantum-verification-story/src/components/RotatingText.tsx +189 -0
  80. package/data/templates/quantum-verification-story/src/components/brand-mark.tsx +14 -0
  81. package/data/templates/quantum-verification-story/src/components/console-preview-section.tsx +57 -0
  82. package/data/templates/quantum-verification-story/src/components/console-preview.tsx +72 -0
  83. package/data/templates/quantum-verification-story/src/components/fade-up.tsx +54 -0
  84. package/data/templates/quantum-verification-story/src/components/floating-network.tsx +125 -0
  85. package/data/templates/quantum-verification-story/src/components/footer.tsx +83 -0
  86. package/data/templates/quantum-verification-story/src/components/harvest-timeline.tsx +70 -0
  87. package/data/templates/quantum-verification-story/src/components/lattice-diagram.tsx +73 -0
  88. package/data/templates/quantum-verification-story/src/components/lattice-field.tsx +129 -0
  89. package/data/templates/quantum-verification-story/src/components/nav.tsx +104 -0
  90. package/data/templates/quantum-verification-story/src/components/presentation-layout.tsx +91 -0
  91. package/data/templates/quantum-verification-story/src/components/readiness-estimator.tsx +135 -0
  92. package/data/templates/quantum-verification-story/src/components/scramble-text.tsx +60 -0
  93. package/data/templates/quantum-verification-story/src/components/section-backdrop.tsx +38 -0
  94. package/data/templates/quantum-verification-story/src/components/sections/clients.tsx +140 -0
  95. package/data/templates/quantum-verification-story/src/components/sections/contact.tsx +125 -0
  96. package/data/templates/quantum-verification-story/src/components/sections/hero.tsx +92 -0
  97. package/data/templates/quantum-verification-story/src/components/sections/moat.tsx +73 -0
  98. package/data/templates/quantum-verification-story/src/components/sections/offer.tsx +113 -0
  99. package/data/templates/quantum-verification-story/src/components/sections/pilot.tsx +63 -0
  100. package/data/templates/quantum-verification-story/src/components/sections/problem.tsx +53 -0
  101. package/data/templates/quantum-verification-story/src/components/text-particle.tsx +204 -0
  102. package/data/templates/quantum-verification-story/src/components/ticker.tsx +27 -0
  103. package/data/templates/quantum-verification-story/src/components/ui/badge.tsx +29 -0
  104. package/data/templates/quantum-verification-story/src/components/ui/button.tsx +55 -0
  105. package/data/templates/quantum-verification-story/src/components/ui/card.tsx +46 -0
  106. package/data/templates/quantum-verification-story/src/components/ui/cursor-driven-particle-typography.tsx +288 -0
  107. package/data/templates/quantum-verification-story/src/components/ui/input.tsx +20 -0
  108. package/data/templates/quantum-verification-story/src/components/ui/label.tsx +21 -0
  109. package/data/templates/quantum-verification-story/src/components/ui/separator.tsx +25 -0
  110. package/data/templates/quantum-verification-story/src/components/ui/textarea.tsx +19 -0
  111. package/data/templates/quantum-verification-story/src/lib/utils.ts +6 -0
  112. package/data/templates/quantum-verification-story/tailwind.config.js +95 -0
  113. package/data/templates/quantum-verification-story/template.manifest.json +23 -0
  114. package/data/templates/quantum-verification-story/tsconfig.json +42 -0
  115. package/data/templates/saas-solution-homepage/main.tsx +91 -14
  116. package/data/templates/saas-solution-homepage/privacy/index.html +1 -0
  117. package/data/templates/saas-solution-homepage/styles.css +47 -2
  118. package/data/templates/saas-solution-homepage/team/index.html +1 -0
  119. package/data/templates/saas-solution-homepage/template.manifest.json +41 -0
  120. package/data/templates/saas-solution-homepage/terms/index.html +1 -0
  121. package/lib/api.mjs +52 -3
  122. package/lib/template-runtime.mjs +1 -0
  123. package/package.json +2 -2
@@ -1,5 +1,15 @@
1
1
  {
2
2
  "defaultTheme": "utopia-default",
3
+ "galleryThemeIds": [
4
+ "utopia-default",
5
+ "utopia-cloudblur",
6
+ "dextrum",
7
+ "barrier-intelligence",
8
+ "renacore",
9
+ "vyapti",
10
+ "prism-mono",
11
+ "y2k-pop"
12
+ ],
3
13
  "intent": "Themes are token-contract and visual-policy implementations. Utopia Default is the first locked theme, not the entire design system.",
4
14
  "coreBoundary": {
5
15
  "owns": [
@@ -90,20 +100,22 @@
90
100
  "--card-padding",
91
101
  "--overlay",
92
102
  "--modal-surface",
93
- "--popover-surface"
103
+ "--popover-surface",
104
+ "--loading-background",
105
+ "--loading-accent",
106
+ "--loading-foreground"
94
107
  ],
95
108
  "themes": [
96
109
  {
97
110
  "id": "utopia-default",
98
- "name": "The Utopia Studio Default",
99
- "shortName": "Utopia Default",
111
+ "name": "The Utopia Studio",
112
+ "shortName": "The Utopia Studio",
100
113
  "locked": true,
101
- "role": "default brand theme",
102
- "description": "The default Ceramic theme for The Utopia Studio. It maps semantic roles to Special Black, White, Brick Red, Light Grey, TWK Lausanne, IBM Plex Sans Arabic, square geometry, and border-led depth.",
114
+ "role": "Primary site theme",
115
+ "description": "Default theme for The Utopia Studio and Ceramic.",
103
116
  "bestFor": [
104
117
  "The Utopia Studio products",
105
- "Ceramic documentation",
106
- "brand-led editorial and operational surfaces"
118
+ "Ceramic documentation"
107
119
  ],
108
120
  "principles": [
109
121
  "architectural hierarchy",
@@ -115,18 +127,18 @@
115
127
  "brandAsset": {
116
128
  "kind": "wordmark",
117
129
  "src": "/brand/the-utopia-studio-wordmark.avif",
130
+ "presentationSrc": "/brand/the-utopia-studio-wordmark.svg",
118
131
  "alt": "The Utopia Studio",
119
132
  "usage": "The wordmark may identify The Utopia Studio branded surfaces. It is not a required core component asset."
120
133
  },
121
134
  "translations": {
122
135
  "ar": {
123
- "name": "ثيم The Utopia Studio الافتراضي",
124
- "role": "ثيم العلامة الافتراضي",
125
- "description": "الثيم الافتراضي لـ Ceramic وThe Utopia Studio. يربط الأدوار الدلالية بألوان العلامة وخطي TWK Lausanne وIBM Plex Sans Arabic والهندسة المربعة والعمق المعتمد على الحدود.",
136
+ "name": "The Utopia Studio",
137
+ "role": "ثيم الموقع الأساسي",
138
+ "description": "الثيم الافتراضي لـ The Utopia Studio وCeramic.",
126
139
  "bestFor": [
127
140
  "منتجات The Utopia Studio",
128
- "توثيق Ceramic",
129
- "الأسطح التحريرية والتشغيلية المرتبطة بالعلامة"
141
+ "توثيق Ceramic"
130
142
  ],
131
143
  "principles": [
132
144
  "تسلسل معماري",
@@ -140,7 +152,7 @@
140
152
  },
141
153
  "policyManifest": "packages/design-system/src/manifests/theme-utopia-default.json",
142
154
  "css": "packages/design-system/src/themes/utopia-default.css",
143
- "iconSystem": "utopia-dot-bar",
155
+ "iconSystem": "phosphor",
144
156
  "motionProfile": "ceremonial",
145
157
  "values": {
146
158
  "--background": "#3C3235",
@@ -156,6 +168,9 @@
156
168
  "--border": "rgba(255,255,255,0.18)",
157
169
  "--input": "rgba(255,255,255,0.24)",
158
170
  "--ring": "#D77A59",
171
+ "--loading-background": "#3C3235",
172
+ "--loading-accent": "#CC5536",
173
+ "--loading-foreground": "#EEEEEE",
159
174
  "--radius": "0px",
160
175
  "--radius-control": "0px",
161
176
  "--radius-surface": "0px",
@@ -178,18 +193,18 @@
178
193
  "--font-display": "TWK Lausanne",
179
194
  "--font-ui-support": "TWK Lausanne",
180
195
  "--font-marketing-display": "TWK Lausanne",
181
- "--font-arabic": "IBM Plex Sans Arabic",
182
- "--font-arabic-body": "IBM Plex Sans Arabic",
183
- "--font-arabic-display": "IBM Plex Sans Arabic",
184
- "--font-weight-arabic-body": "400",
185
- "--font-weight-arabic-display": "700",
196
+ "--font-arabic": "Readex Pro",
197
+ "--font-arabic-body": "Readex Pro",
198
+ "--font-arabic-display": "Readex Pro",
199
+ "--font-weight-arabic-body": "300",
200
+ "--font-weight-arabic-display": "500",
186
201
  "--font-size-display": "clamp(44px, 8vw, 96px)",
187
202
  "--font-size-arabic-body": "16px",
188
203
  "--font-size-arabic-body-lg": "19px",
189
- "--font-size-arabic-display": "clamp(42px, 7.6vw, 91px)",
204
+ "--font-size-arabic-display": "clamp(40px, 7.3vw, 87px)",
190
205
  "--line-height-arabic": "1.75",
191
- "--line-height-arabic-body": "1.75",
192
- "--line-height-arabic-display": "1.16",
206
+ "--line-height-arabic-body": "1.85",
207
+ "--line-height-arabic-display": "1.28",
193
208
  "--tracking-arabic": "0",
194
209
  "--tracking-arabic-display": "0",
195
210
  "--sidebar-width": "17rem",
@@ -206,12 +221,11 @@
206
221
  "id": "dextrum",
207
222
  "name": "Dextrum",
208
223
  "locked": false,
209
- "role": "brand theme",
210
- "description": "Dark Blue, Ocean Blue, Charcoal Blue, Timid White. Manrope drives product UI and default headings; Clash Grotesk is marketing-only.",
224
+ "role": "Brand theme",
225
+ "description": "Theme for Dextrum product interfaces and technical sales pages.",
211
226
  "bestFor": [
212
227
  "Dextrum product UI",
213
- "technical sales surfaces",
214
- "data-heavy operational workflows"
228
+ "Technical sales pages"
215
229
  ],
216
230
  "principles": [
217
231
  "calm technical hierarchy",
@@ -229,11 +243,10 @@
229
243
  "ar": {
230
244
  "name": "Dextrum",
231
245
  "role": "ثيم علامة",
232
- "description": "ثيم تقني بأزرق داكن وأزرق محيطي وأبيض هادئ. يستخدم Manrope لواجهة المنتج وClash Grotesk للتسويق فقط.",
246
+ "description": "ثيم لواجهات منتجات Dextrum وصفحات المبيعات التقنية.",
233
247
  "bestFor": [
234
248
  "واجهات منتج Dextrum",
235
- "أسطح المبيعات التقنية",
236
- "سير العمل التشغيلي كثيف البيانات"
249
+ "صفحات المبيعات التقنية"
237
250
  ],
238
251
  "principles": [
239
252
  "تسلسل تقني هادئ",
@@ -262,6 +275,9 @@
262
275
  "--border": "rgba(234,234,234,0.14)",
263
276
  "--input": "rgba(234,234,234,0.20)",
264
277
  "--ring": "#3E8ECC",
278
+ "--loading-background": "#192B39",
279
+ "--loading-accent": "#3E8ECC",
280
+ "--loading-foreground": "#EAEAEA",
265
281
  "--radius": "6px",
266
282
  "--radius-control": "6px",
267
283
  "--radius-surface": "8px",
@@ -284,18 +300,18 @@
284
300
  "--font-display": "Manrope",
285
301
  "--font-ui-support": "Satoshi",
286
302
  "--font-marketing-display": "Clash Grotesk",
287
- "--font-arabic": "IBM Plex Sans Arabic",
288
- "--font-arabic-body": "IBM Plex Sans Arabic",
289
- "--font-arabic-display": "IBM Plex Sans Arabic",
290
- "--font-weight-arabic-body": "400",
291
- "--font-weight-arabic-display": "700",
303
+ "--font-arabic": "Readex Pro",
304
+ "--font-arabic-body": "Readex Pro",
305
+ "--font-arabic-display": "Readex Pro",
306
+ "--font-weight-arabic-body": "300",
307
+ "--font-weight-arabic-display": "500",
292
308
  "--font-size-display": "clamp(2.75rem, 7vw, 5.5rem)",
293
309
  "--font-size-arabic-body": "16px",
294
310
  "--font-size-arabic-body-lg": "18px",
295
- "--font-size-arabic-display": "clamp(2.625rem, 6.6vw, 5.25rem)",
311
+ "--font-size-arabic-display": "clamp(2.5rem, 6.2vw, 5rem)",
296
312
  "--line-height-arabic": "1.75",
297
- "--line-height-arabic-body": "1.75",
298
- "--line-height-arabic-display": "1.14",
313
+ "--line-height-arabic-body": "1.85",
314
+ "--line-height-arabic-display": "1.28",
299
315
  "--tracking-arabic": "0",
300
316
  "--tracking-arabic-display": "0",
301
317
  "--sidebar-width": "17rem",
@@ -310,16 +326,48 @@
310
326
  "--popover-surface": "#2F3F4C"
311
327
  }
312
328
  },
329
+ {
330
+ "id": "prism-mono",
331
+ "name": "Prism Mono",
332
+ "shortName": "Prism Mono",
333
+ "locked": false,
334
+ "role": "Visual theme",
335
+ "description": "Black-and-white theme with a spectral accent.",
336
+ "motionProfile": "swift",
337
+ "bestFor": ["AI products", "Creative tools"],
338
+ "principles": ["monochrome first", "spectral color with purpose", "crisp geometry", "fast direct feedback", "accessible color-independent states"],
339
+ "preview": {
340
+ "label": "PRISM / MONO",
341
+ "foreground": "#090909",
342
+ "background": "radial-gradient(circle at 78% 22%, rgba(66,133,244,.95), transparent 22%), radial-gradient(circle at 64% 70%, rgba(52,168,83,.9), transparent 24%), radial-gradient(circle at 34% 70%, rgba(251,188,4,.9), transparent 23%), radial-gradient(circle at 22% 22%, rgba(234,67,53,.9), transparent 24%), #f8f8f6"
343
+ },
344
+ "translations": {"ar": {"name": "Prism Mono", "role": "ثيم بصري", "description": "ثيم أبيض وأسود مع تدرج طيفي.", "bestFor": ["منتجات الذكاء الاصطناعي", "الأدوات الإبداعية"], "principles": ["الأبيض والأسود أولاً", "لون طيفي هادف", "هندسة واضحة", "استجابة سريعة", "حالات لا تعتمد على اللون وحده"]}},
345
+ "policyManifest": "packages/design-system/src/manifests/theme-prism-mono.json",
346
+ "css": "packages/design-system/src/themes/prism-mono.css",
347
+ "iconSystem": "lucide",
348
+ "values": {
349
+ "--background": "#F8F8F6", "--foreground": "#090909", "--card": "#FFFFFF", "--card-foreground": "#090909",
350
+ "--primary": "#090909", "--primary-foreground": "#FFFFFF", "--secondary": "#ECECEA", "--secondary-foreground": "#090909",
351
+ "--muted": "#E4E4E0", "--muted-foreground": "#5F5F5A", "--border": "#CACAC5", "--input": "#A9A9A3", "--ring": "#1A73E8",
352
+ "--loading-background": "#F8F8F6", "--loading-accent": "#1A73E8", "--loading-foreground": "#090909",
353
+ "--radius": "14px", "--radius-control": "999px", "--radius-surface": "24px", "--radius-chat-bubble": "20px", "--radius-chat-composer": "28px", "--radius-chat-token": "14px",
354
+ "--shadow-control": "0 1px 0 rgba(0,0,0,.08)", "--motion-duration-press": "90ms", "--motion-duration-page": "180ms", "--motion-duration-expand": "180ms", "--motion-duration-reveal": "220ms", "--motion-duration-icon": "280ms",
355
+ "--motion-ease-standard": "cubic-bezier(0.2,0,0,1)", "--motion-ease-emphasized": "cubic-bezier(0.16,1,0.3,1)", "--motion-ease-icon": "cubic-bezier(0.16,1,0.3,1)", "--motion-press-scale": ".98", "--motion-distance-page": "6px", "--motion-distance-reveal": "8px",
356
+ "--font-sans": "TWK Lausanne", "--font-display": "TWK Lausanne", "--font-ui-support": "TWK Lausanne", "--font-marketing-display": "TWK Lausanne", "--font-arabic": "IBM Plex Sans Arabic", "--font-arabic-body": "IBM Plex Sans Arabic", "--font-arabic-display": "IBM Plex Sans Arabic",
357
+ "--font-weight-arabic-body": "400", "--font-weight-arabic-display": "700", "--font-size-display": "clamp(2.75rem,7vw,5.75rem)", "--font-size-arabic-body": "16px", "--font-size-arabic-body-lg": "19px", "--font-size-arabic-display": "clamp(2.6rem,6.6vw,5.4rem)", "--line-height-arabic": "1.75", "--line-height-arabic-body": "1.75", "--line-height-arabic-display": "1.16", "--tracking-arabic": "0", "--tracking-arabic-display": "0",
358
+ "--sidebar-width": "17rem", "--control-height-sm": "2rem", "--sidebar-width-collapsed": "4rem", "--sidebar-min-block-size": "30rem", "--sidebar-rail-size": "8px", "--button-height": "40px", "--card-padding": "24px",
359
+ "--overlay": "rgb(9 9 9 / 82%)", "--modal-surface": "#FFFFFF", "--popover-surface": "#FFFFFF", "--prism-spectrum": "linear-gradient(90deg,#EA4335,#FBBC04,#34A853,#4285F4)"
360
+ }
361
+ },
313
362
  {
314
363
  "id": "barrier-intelligence",
315
364
  "name": "Barrier Intelligence",
316
365
  "locked": false,
317
- "role": "brand theme",
318
- "description": "Near-black surfaces with warm gold accents, restrained detector lime, domain assurance states, and Hanken Grotesk for product UI. Brand and color mode are selected independently.",
366
+ "role": "Brand theme",
367
+ "description": "Theme for Barrier Intelligence product and analytics interfaces.",
319
368
  "bestFor": [
320
369
  "Barrier Intelligence product UI",
321
- "risk and intelligence workflows",
322
- "high-contrast analytical products"
370
+ "Risk and intelligence workflows"
323
371
  ],
324
372
  "principles": [
325
373
  "near-black hierarchy",
@@ -329,15 +377,15 @@
329
377
  "independent brand and color mode",
330
378
  "restrained detector and assurance signals"
331
379
  ],
380
+ "preview": {"label": "BARRIER / INTELLIGENCE", "foreground": "#D2AC6C", "background": "radial-gradient(circle at 76% 20%, rgba(210,172,108,.24), transparent 32%), linear-gradient(145deg,#050505,#16120c 68%,#050505)"},
332
381
  "translations": {
333
382
  "ar": {
334
383
  "name": "Barrier Intelligence",
335
384
  "role": "ثيم علامة",
336
- "description": "ثيم بأسطح شبه سوداء ولمسات ذهبية دافئة وتسلسل حبر واضح وخط Hanken Grotesk لواجهة المنتج.",
385
+ "description": "ثيم لواجهات منتجات وتحليلات Barrier Intelligence.",
337
386
  "bestFor": [
338
387
  "واجهات Barrier Intelligence",
339
- "سير عمل المخاطر والاستخبارات",
340
- "المنتجات التحليلية عالية التباين"
388
+ "سير عمل المخاطر والاستخبارات"
341
389
  ],
342
390
  "principles": [
343
391
  "تسلسل شبه أسود",
@@ -366,6 +414,9 @@
366
414
  "--border": "color-mix(in srgb, #1C1C1C 82%, transparent)",
367
415
  "--input": "color-mix(in srgb, #1C1C1C 70%, transparent)",
368
416
  "--ring": "#A6824C",
417
+ "--loading-background": "#000000",
418
+ "--loading-accent": "#A6824C",
419
+ "--loading-foreground": "#F5F5F2",
369
420
  "--radius": "12px",
370
421
  "--radius-control": "6px",
371
422
  "--radius-surface": "14px",
@@ -428,18 +479,42 @@
428
479
  "--popover-surface": "#141414"
429
480
  }
430
481
  },
482
+ {
483
+ "id": "y2k-pop",
484
+ "name": "Y2K Pop",
485
+ "shortName": "Y2K Pop",
486
+ "locked": false,
487
+ "role": "Visual theme",
488
+ "description": "Early-web theme with rounded geometry and pastel colors.",
489
+ "motionProfile": "swift",
490
+ "bestFor": ["Youth and culture products", "Community and campaign pages"],
491
+ "principles": ["cute but legible", "bubble geometry", "pastel energy", "tactile offset depth", "nostalgia with modern accessibility"],
492
+ "preview": {"label": "Y2K ✦ POP", "foreground": "#35144F", "background": "radial-gradient(circle at 25% 22%,#fff 0 7%,transparent 8%), radial-gradient(circle at 78% 28%,#B6FF64 0 13%,transparent 14%), radial-gradient(circle at 30% 78%,#76E5FF 0 18%,transparent 19%), linear-gradient(135deg,#FFB9E8,#C8B6FF 55%,#FFF49A)"},
493
+ "translations": {"ar": {"name": "Y2K Pop", "role": "ثيم بصري", "description": "ثيم مستوحى من الويب المبكر بهندسة مستديرة وألوان باستيل.", "bestFor": ["منتجات الشباب والثقافة", "صفحات المجتمع والحملات"], "principles": ["لطيف وواضح", "هندسة فقاعية", "طاقة الباستيل", "عمق ملموس", "حنين مع وصول حديث"]}},
494
+ "policyManifest": "packages/design-system/src/manifests/theme-y2k-pop.json",
495
+ "css": "packages/design-system/src/themes/y2k-pop.css",
496
+ "iconSystem": "lucide-rounded",
497
+ "values": {
498
+ "--background": "#FFF6FD", "--foreground": "#35144F", "--card": "#FFFFFF", "--card-foreground": "#35144F",
499
+ "--primary": "#6C2BD9", "--primary-foreground": "#FFFFFF", "--secondary": "#FFD4F0", "--secondary-foreground": "#35144F", "--muted": "#EFE5FA", "--muted-foreground": "#725E81", "--border": "#8B68A5", "--input": "#8B68A5", "--ring": "#6C2BD9",
500
+ "--loading-background": "#FFF6FD", "--loading-accent": "#6C2BD9", "--loading-foreground": "#35144F",
501
+ "--radius": "22px", "--radius-control": "999px", "--radius-surface": "32px", "--radius-chat-bubble": "26px", "--radius-chat-composer": "32px", "--radius-chat-token": "18px", "--shadow-control": "3px 3px 0 #35144F",
502
+ "--motion-duration-press": "90ms", "--motion-duration-page": "180ms", "--motion-duration-expand": "200ms", "--motion-duration-reveal": "240ms", "--motion-duration-icon": "300ms", "--motion-ease-standard": "cubic-bezier(.2,0,0,1)", "--motion-ease-emphasized": "cubic-bezier(.2,1.35,.4,1)", "--motion-ease-icon": "cubic-bezier(.2,1.35,.4,1)", "--motion-press-scale": ".96", "--motion-distance-page": "8px", "--motion-distance-reveal": "12px",
503
+ "--font-sans": "TWK Lausanne", "--font-display": "TWK Lausanne", "--font-ui-support": "TWK Lausanne", "--font-marketing-display": "TWK Lausanne", "--font-arabic": "IBM Plex Sans Arabic", "--font-arabic-body": "IBM Plex Sans Arabic", "--font-arabic-display": "IBM Plex Sans Arabic", "--font-weight-arabic-body": "400", "--font-weight-arabic-display": "700", "--font-size-display": "clamp(2.75rem,7.4vw,6rem)", "--font-size-arabic-body": "16px", "--font-size-arabic-body-lg": "19px", "--font-size-arabic-display": "clamp(2.6rem,7vw,5.6rem)", "--line-height-arabic": "1.75", "--line-height-arabic-body": "1.75", "--line-height-arabic-display": "1.18", "--tracking-arabic": "0", "--tracking-arabic-display": "0",
504
+ "--sidebar-width": "17rem", "--control-height-sm": "2rem", "--sidebar-width-collapsed": "4rem", "--sidebar-min-block-size": "30rem", "--sidebar-rail-size": "8px", "--button-height": "42px", "--card-padding": "24px", "--overlay": "rgb(53 20 79 / 74%)", "--modal-surface": "#FFFFFF", "--popover-surface": "#FFFFFF"
505
+ }
506
+ },
431
507
  {
432
508
  "id": "renacore",
433
509
  "name": "Renacore",
434
510
  "shortName": "Renacore",
435
511
  "locked": false,
436
- "role": "brand theme",
437
- "description": "A calm, precise operational theme for critical energy infrastructure, built from a white product canvas, muted grey structure, and restrained Renacore Teal active states.",
512
+ "role": "Brand theme",
513
+ "description": "Theme for Renacore product interfaces and energy dashboards.",
438
514
  "motionProfile": "precise",
439
515
  "bestFor": [
440
- "Renacore marketing websites",
441
- "predictive-intelligence product interfaces",
442
- "energy infrastructure dashboards"
516
+ "Renacore product interfaces",
517
+ "Energy dashboards"
443
518
  ],
444
519
  "principles": [
445
520
  "quiet",
@@ -451,11 +526,10 @@
451
526
  "ar": {
452
527
  "name": "Renacore",
453
528
  "role": "ثيم علامة",
454
- "description": "ثيم تشغيلي هادئ ودقيق للبنية التحتية الحرجة للطاقة، مبني على مساحة بيضاء وهيكل رمادي وإشارات نشطة بلون Renacore Teal.",
529
+ "description": "ثيم لواجهات منتجات Renacore ولوحات معلومات الطاقة.",
455
530
  "bestFor": [
456
- "مواقع Renacore",
457
- "واجهات الذكاء التنبؤي",
458
- "لوحات معلومات البنية التحتية للطاقة"
531
+ "واجهات منتجات Renacore",
532
+ "لوحات معلومات الطاقة"
459
533
  ],
460
534
  "principles": [
461
535
  "هادئ",
@@ -488,6 +562,9 @@
488
562
  "--border": "#F2F2F2",
489
563
  "--input": "#D8D8D8",
490
564
  "--ring": "#12414B",
565
+ "--loading-background": "#020D13",
566
+ "--loading-accent": "#97D1DD",
567
+ "--loading-foreground": "#D6EAED",
491
568
  "--radius": "8px",
492
569
  "--radius-control": "6px",
493
570
  "--radius-surface": "12px",
@@ -541,13 +618,12 @@
541
618
  "name": "Vyapti",
542
619
  "shortName": "Vyapti",
543
620
  "locked": false,
544
- "role": "brand theme",
545
- "description": "White-first, deep-green technical theme for calm, precise, evidence-led product and marketing interfaces.",
621
+ "role": "Brand theme",
622
+ "description": "Theme for Vyapti product and technical marketing interfaces.",
546
623
  "motionProfile": "precise",
547
624
  "bestFor": [
548
625
  "Vyapti product interfaces",
549
- "security and cryptography workflows",
550
- "technical marketing and evidence-led content"
626
+ "Technical marketing pages"
551
627
  ],
552
628
  "principles": [
553
629
  "calm technical hierarchy",
@@ -556,6 +632,24 @@
556
632
  "spacious sections and compact controls",
557
633
  "Arabic-friendly logical layout"
558
634
  ],
635
+ "translations": {
636
+ "ar": {
637
+ "name": "Vyapti",
638
+ "role": "ثيم علامة",
639
+ "description": "ثيم لواجهات منتجات Vyapti وصفحات التسويق التقنية.",
640
+ "bestFor": [
641
+ "واجهات منتجات Vyapti",
642
+ "صفحات التسويق التقنية"
643
+ ],
644
+ "principles": [
645
+ "تسلسل تقني هادئ",
646
+ "أسطح منتج بيضاء",
647
+ "إبراز أخضر دلالي",
648
+ "أقسام واسعة وعناصر تحكم مدمجة",
649
+ "تخطيط منطقي داعم للعربية"
650
+ ]
651
+ }
652
+ },
559
653
  "policyManifest": "packages/design-system/src/manifests/theme-vyapti.json",
560
654
  "css": "packages/design-system/src/themes/vyapti.css",
561
655
  "iconSystem": "lucide",
@@ -573,6 +667,9 @@
573
667
  "--border": "rgb(1 37 25 / 10%)",
574
668
  "--input": "rgb(1 37 25 / 18%)",
575
669
  "--ring": "#0F9B6A",
670
+ "--loading-background": "#012519",
671
+ "--loading-accent": "#15B57F",
672
+ "--loading-foreground": "#FFFFFF",
576
673
  "--radius": "10px",
577
674
  "--radius-control": "10px",
578
675
  "--radius-surface": "18px",
@@ -621,6 +718,137 @@
621
718
  "--modal-surface": "#FFFFFF",
622
719
  "--popover-surface": "#FFFFFF"
623
720
  }
721
+ },
722
+ {
723
+ "id": "utopia-cloudblur",
724
+ "name": "Utopia Cloudblur",
725
+ "shortName": "Utopia Cloudblur",
726
+ "locked": false,
727
+ "role": "Brand theme",
728
+ "description": "Theme for the Utopia design-system homepage.",
729
+ "motionProfile": "ceremonial",
730
+ "bestFor": [
731
+ "Utopia design-system homepage",
732
+ "Editorial product pages"
733
+ ],
734
+ "principles": [
735
+ "mist-first readable canvas",
736
+ "one dominant cloud surface",
737
+ "localized spectral light",
738
+ "blur as progressive enhancement",
739
+ "Arabic-friendly logical layout"
740
+ ],
741
+ "preview": {
742
+ "label": "UTOPIA / CERAMIC",
743
+ "foreground": "#FFFFFF",
744
+ "background": "radial-gradient(circle at 22% 18%, rgba(141,235,244,.72), transparent 28%), radial-gradient(circle at 78% 72%, rgba(213,185,243,.68), transparent 30%), linear-gradient(145deg,#111b2a,#26354a 58%,#492f4b)"
745
+ },
746
+ "brandAsset": {
747
+ "kind": "wordmark",
748
+ "src": "/brand/the-utopia-studio-wordmark.avif",
749
+ "presentationSrc": "/brand/the-utopia-studio-wordmark.svg",
750
+ "alt": "The Utopia Studio",
751
+ "usage": "Use the wordmark on Utopia Cloudblur covers, closing slides, and other brand-identifying surfaces."
752
+ },
753
+ "signature": {
754
+ "id": "cloudblur-signal-widget",
755
+ "kind": "widget",
756
+ "status": "available",
757
+ "label": "Cloudblur Cards 01 + 02 Glass Widget",
758
+ "description": "The Cloudblur signature component is the Glass effect shared by cards 01 and 02: an overlapping two-card composition pairing a zero-fill ceramic system card with an unchanged lifestyle image card and the registered -45°/80%, 100/72/0/0/43 Glass treatment.",
759
+ "renderer": "cloudblur-signature-widget",
760
+ "source": "src/components/ThemeSignaturePreview.tsx",
761
+ "href": "#/#cloudblur-signature"
762
+ },
763
+ "translations": {
764
+ "ar": {
765
+ "name": "Utopia Cloudblur",
766
+ "role": "ثيم علامة",
767
+ "description": "ثيم للصفحة الرئيسية لنظام Utopia للتصميم.",
768
+ "bestFor": [
769
+ "الصفحة الرئيسية لنظام التصميم",
770
+ "صفحات المنتجات التحريرية"
771
+ ],
772
+ "principles": [
773
+ "خلفية فاتحة وواضحة",
774
+ "سطح ضبابي رئيسي واحد",
775
+ "إضاءة لونية هادئة",
776
+ "دعم العربية واتجاه RTL"
777
+ ],
778
+ "brandAssetUsage": "استخدم العلامة النصية على أغلفة Utopia Cloudblur وشرائح الختام والأسطح التي تعرّف العلامة.",
779
+ "signature": {
780
+ "label": "ويدجت بطاقات Cloudblur الخزفية",
781
+ "description": "ويدجت البصمة الخاص بالثيم: تكوين Glass من بطاقتين متداخلتين يجمع بطاقة نظام خزفية وبطاقة صورة أسلوب حياة ثابتة مع انكسار محايد وإضاءة اتجاهية واضحة."
782
+ }
783
+ }
784
+ },
785
+ "policyManifest": "packages/design-system/src/manifests/theme-utopia-cloudblur.json",
786
+ "css": "packages/design-system/src/themes/utopia-cloudblur.css",
787
+ "iconSystem": "phosphor",
788
+ "values": {
789
+ "--background": "#EEF1F5",
790
+ "--foreground": "#111B2A",
791
+ "--card": "rgb(255 255 255 / 72%)",
792
+ "--card-foreground": "#111B2A",
793
+ "--primary": "#111B2A",
794
+ "--primary-foreground": "#FFFFFF",
795
+ "--secondary": "rgb(255 255 255 / 58%)",
796
+ "--secondary-foreground": "#111B2A",
797
+ "--muted": "rgb(220 226 233 / 72%)",
798
+ "--muted-foreground": "#526071",
799
+ "--border": "rgb(17 27 42 / 13%)",
800
+ "--input": "rgb(17 27 42 / 20%)",
801
+ "--ring": "#087F92",
802
+ "--loading-background": "#09111D",
803
+ "--loading-accent": "#5DD7E5",
804
+ "--loading-foreground": "#FFFFFF",
805
+ "--radius": "14px",
806
+ "--radius-control": "999px",
807
+ "--radius-surface": "28px",
808
+ "--radius-chat-bubble": "20px",
809
+ "--radius-chat-composer": "28px",
810
+ "--radius-chat-token": "999px",
811
+ "--shadow-control": "0 0 0 4px rgb(93 215 229 / 28%)",
812
+ "--motion-duration-press": "110ms",
813
+ "--motion-duration-page": "360ms",
814
+ "--motion-duration-expand": "280ms",
815
+ "--motion-duration-reveal": "420ms",
816
+ "--motion-duration-icon": "320ms",
817
+ "--motion-ease-standard": "cubic-bezier(0.2, 0, 0, 1)",
818
+ "--motion-ease-emphasized": "cubic-bezier(0.16, 1, 0.3, 1)",
819
+ "--motion-ease-icon": "cubic-bezier(0.16, 1, 0.3, 1)",
820
+ "--motion-press-scale": "0.985",
821
+ "--motion-distance-page": "8px",
822
+ "--motion-distance-reveal": "12px",
823
+ "--font-sans": "TWK Lausanne",
824
+ "--font-display": "TWK Lausanne",
825
+ "--font-ui-support": "TWK Lausanne",
826
+ "--font-marketing-display": "TWK Lausanne",
827
+ "--font-arabic": "Readex Pro",
828
+ "--font-arabic-body": "Readex Pro",
829
+ "--font-arabic-display": "Readex Pro",
830
+ "--font-weight-arabic-body": "300",
831
+ "--font-weight-arabic-display": "500",
832
+ "--font-size-display": "clamp(2.75rem, 7vw, 6rem)",
833
+ "--font-size-arabic-body": "16px",
834
+ "--font-size-arabic-body-lg": "18px",
835
+ "--font-size-arabic-display": "clamp(2.5rem, 6.2vw, 5.25rem)",
836
+ "--line-height-arabic": "1.75",
837
+ "--line-height-arabic-body": "1.85",
838
+ "--line-height-arabic-display": "1.28",
839
+ "--tracking-arabic": "0",
840
+ "--tracking-arabic-display": "0",
841
+ "--sidebar-width": "17rem",
842
+ "--control-height-sm": "2.125rem",
843
+ "--sidebar-width-collapsed": "4rem",
844
+ "--sidebar-min-block-size": "30rem",
845
+ "--sidebar-rail-size": "8px",
846
+ "--button-height": "42px",
847
+ "--card-padding": "24px",
848
+ "--overlay": "rgb(9 17 29 / 72%)",
849
+ "--modal-surface": "#F8FAFC",
850
+ "--popover-surface": "#F8FAFC"
851
+ }
624
852
  }
625
853
  ],
626
854
  "plannedThemeSlots": [
@@ -797,7 +1025,7 @@
797
1025
  "Use start/end naming, not left/right APIs.",
798
1026
  "Validate mixed English/Arabic labels.",
799
1027
  "Use Arabic body and display typography tokens.",
800
- "Set Arabic display size from the Latin display scale at approximately 95%, with Arabic line-height preserved for readability.",
1028
+ "Set Arabic display size from the Latin display scale at approximately 90-92% (Arabic renders optically larger at equal px), with Arabic display line-height at least 1.28.",
801
1029
  "Do not map Latin uppercase display styling to Arabic.",
802
1030
  "Mirror directional arrows, chevrons, navigation, carousel, progress, and sidebar affordances intentionally.",
803
1031
  "Do not invent Arabic copy."
@@ -16,9 +16,22 @@ import {
16
16
  } from './AnalyticsDashboardBlocks'
17
17
  import '@utopia-studio-design/design-system/core.css'
18
18
  import '@utopia-studio-design/design-system/themes/utopia-default.css'
19
+ import '@utopia-studio-design/design-system/themes/dextrum.css'
20
+ import '@utopia-studio-design/design-system/themes/barrier-intelligence.css'
21
+ import '@utopia-studio-design/design-system/themes/renacore.css'
22
+ import '@utopia-studio-design/design-system/themes/vyapti.css'
23
+ import '@utopia-studio-design/design-system/themes/utopia-cloudblur.css'
19
24
  import './analytics-dashboard.css'
20
25
  import './styles.css'
21
26
 
27
+ const supportedThemes = ['utopia-default', 'dextrum', 'barrier-intelligence', 'renacore', 'vyapti', 'utopia-cloudblur'] as const
28
+ type TemplateTheme = (typeof supportedThemes)[number]
29
+ const defaultTheme: TemplateTheme = 'utopia-default'
30
+ const requestedTheme = new URLSearchParams(window.location.search).get('theme') as TemplateTheme | null
31
+ const activeTheme: TemplateTheme = requestedTheme && supportedThemes.includes(requestedTheme) ? requestedTheme : defaultTheme
32
+ document.documentElement.dataset.theme = activeTheme
33
+ document.documentElement.dataset.brand = activeTheme
34
+
22
35
  const baseData: ChartDatum[] = [
23
36
  { id: 'jan', label: 'Jan', values: { revenue: 42, previous: 35, forecast: 44 } },
24
37
  { id: 'feb', label: 'Feb', values: { revenue: 46, previous: 38, forecast: 47 } },
@@ -56,7 +69,7 @@ function App() {
56
69
  <main
57
70
  className="analytics-template"
58
71
  data-color-mode={dark ? 'dark' : 'light'}
59
- data-theme="utopia-default"
72
+ data-theme={activeTheme}
60
73
  dir="ltr"
61
74
  id="main-content"
62
75
  >
@@ -30,9 +30,22 @@ import {
30
30
  } from './calendar-localization'
31
31
  import '@utopia-studio-design/design-system/core.css'
32
32
  import '@utopia-studio-design/design-system/themes/utopia-default.css'
33
+ import '@utopia-studio-design/design-system/themes/dextrum.css'
34
+ import '@utopia-studio-design/design-system/themes/barrier-intelligence.css'
35
+ import '@utopia-studio-design/design-system/themes/renacore.css'
36
+ import '@utopia-studio-design/design-system/themes/vyapti.css'
37
+ import '@utopia-studio-design/design-system/themes/utopia-cloudblur.css'
33
38
  import './calendar-application.css'
34
39
  import './styles.css'
35
40
 
41
+ const supportedThemes = ['utopia-default', 'dextrum', 'barrier-intelligence', 'renacore', 'vyapti', 'utopia-cloudblur'] as const
42
+ type TemplateTheme = (typeof supportedThemes)[number]
43
+ const defaultTheme: TemplateTheme = 'utopia-default'
44
+ const requestedTheme = new URLSearchParams(window.location.search).get('theme') as TemplateTheme | null
45
+ const activeTheme: TemplateTheme = requestedTheme && supportedThemes.includes(requestedTheme) ? requestedTheme : defaultTheme
46
+ document.documentElement.dataset.theme = activeTheme
47
+ document.documentElement.dataset.brand = activeTheme
48
+
36
49
  const anchorDate = new Date(2026, 2, 9, 12)
37
50
  const resources: SchedulerResource[] = [
38
51
  { id: 'product', label: 'Product team', timezone: 'America/New_York' },
@@ -225,7 +238,7 @@ function App() {
225
238
  <main
226
239
  className="calendar-template"
227
240
  data-color-mode={dark ? 'dark' : 'light'}
228
- data-theme="utopia-default"
241
+ data-theme={activeTheme}
229
242
  dir={direction}
230
243
  id="main-content"
231
244
  >
@@ -0,0 +1,12 @@
1
+ # Ceramic Chat Workspace
2
+
3
+ Runnable starter for assistant, support, and collaborative chat products.
4
+ Conversation input and governed tools remain in the managed chat surface;
5
+ generated previews and durable artifacts update in the output rail.
6
+
7
+ Before shipping, replace all sample copy, connect real persistence and streaming
8
+ state, localize visible and accessible labels, and verify desktop/mobile,
9
+ English/Arabic, keyboard/touch, reload, error, and reduced-motion behavior.
10
+
11
+ See `docs/design-system/chat-service-methodology.md` for the complete design and
12
+ QA contract.
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en" dir="ltr" data-theme="utopia-default" data-color-mode="light">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="description" content="Ceramic managed chat workspace template." />
7
+ <title>Chat Workspace — Ceramic Design System</title>
8
+ </head>
9
+ <body><div id="root"></div><script type="module" src="./main.tsx"></script></body>
10
+ </html>
11
+