@utopia-studio-design/design-system-cli 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -10
- package/bin/utopia-ds-mcp.mjs +6 -2
- package/bin/utopia-ds.mjs +94 -21
- package/data/docs/arabic-friendly.md +19 -2
- package/data/docs/billing-setup.md +80 -0
- package/data/docs/cer-003-032-033-round-8-repair.md +41 -0
- package/data/docs/cer-007-checkout.md +51 -0
- package/data/docs/cer-008-011-qa-repair.md +64 -0
- package/data/docs/cer-016-023-round-6-repair.md +92 -0
- package/data/docs/cer-024-031-round-7-repair.md +51 -0
- package/data/docs/cer-033-035-036-round-12-repair.md +37 -0
- package/data/docs/cer-035-037-round-10-repair.md +34 -0
- package/data/docs/charts.md +34 -3
- package/data/docs/chat-service-methodology.md +181 -0
- package/data/docs/code-block.md +20 -0
- package/data/docs/creative-production.md +149 -0
- package/data/docs/designer-agent-backend-contract.md +552 -0
- package/data/docs/email-resend.md +29 -0
- package/data/docs/foundations.md +46 -8
- package/data/docs/guide.md +9 -9
- package/data/docs/handover-billing-aiden.md +132 -0
- package/data/docs/logo-maker-methodology.md +109 -0
- package/data/docs/presentation-asset-repository.md +53 -0
- package/data/docs/product-architecture.md +42 -0
- package/data/docs/quick-start-ai.md +4 -4
- package/data/docs/shadcn-conversion.md +1 -1
- package/data/docs/sidebar-placement.md +56 -0
- package/data/docs/theme-authoring.md +6 -3
- package/data/manifests/catalog.json +42 -46
- package/data/manifests/components.json +317 -66
- package/data/manifests/logo-skills.json +174 -0
- package/data/manifests/motion-profiles.json +2 -2
- package/data/manifests/patterns.json +201 -7
- package/data/manifests/presentation-assets.schema.json +44 -0
- package/data/manifests/templates.json +87 -1
- package/data/manifests/theme-dextrum.json +7 -7
- package/data/manifests/theme-prism-mono.json +19 -0
- package/data/manifests/theme-utopia-cloudblur.json +135 -0
- package/data/manifests/theme-utopia-default.json +31 -31
- package/data/manifests/theme-vyapti.json +17 -1
- package/data/manifests/theme-y2k-pop.json +18 -0
- package/data/manifests/themes.json +285 -57
- package/data/templates/analytics-dashboard/main.tsx +14 -1
- package/data/templates/calendar-application/main.tsx +14 -1
- package/data/templates/chat-workspace/README.md +12 -0
- package/data/templates/chat-workspace/index.html +11 -0
- package/data/templates/chat-workspace/main.tsx +97 -0
- package/data/templates/chat-workspace/styles.css +19 -0
- package/data/templates/chat-workspace/template.manifest.json +13 -0
- package/data/templates/composition-registry-lab/main.tsx +12 -1
- package/data/templates/dashboard-composer/main.tsx +14 -1
- package/data/templates/database-workspace/main.tsx +14 -1
- package/data/templates/interaction-lab/main.tsx +12 -1
- package/data/templates/quantum-verification-story/README.md +12 -0
- package/data/templates/quantum-verification-story/components.json +21 -0
- package/data/templates/quantum-verification-story/eslint.config.mjs +13 -0
- package/data/templates/quantum-verification-story/next-env.d.ts +7 -0
- package/data/templates/quantum-verification-story/next.config.mjs +11 -0
- package/data/templates/quantum-verification-story/package-lock.json +7535 -0
- package/data/templates/quantum-verification-story/package.json +46 -0
- package/data/templates/quantum-verification-story/postcss.config.js +6 -0
- package/data/templates/quantum-verification-story/src/app/assessment/page.tsx +138 -0
- package/data/templates/quantum-verification-story/src/app/ceramic-theme.css +48 -0
- package/data/templates/quantum-verification-story/src/app/deployment/page.tsx +178 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Bold.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Medium.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/IBMPlexSansArabic-Regular.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/ReadexPro-Variable.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-350.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-500.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/fonts/TWKLausanne-700.ttf +0 -0
- package/data/templates/quantum-verification-story/src/app/globals.css +175 -0
- package/data/templates/quantum-verification-story/src/app/layout.tsx +45 -0
- package/data/templates/quantum-verification-story/src/app/not-found.tsx +39 -0
- package/data/templates/quantum-verification-story/src/app/page.tsx +24 -0
- package/data/templates/quantum-verification-story/src/app/products/page.tsx +132 -0
- package/data/templates/quantum-verification-story/src/app/utopia-default.css +312 -0
- package/data/templates/quantum-verification-story/src/components/RotatingText.css +36 -0
- package/data/templates/quantum-verification-story/src/components/RotatingText.tsx +189 -0
- package/data/templates/quantum-verification-story/src/components/brand-mark.tsx +14 -0
- package/data/templates/quantum-verification-story/src/components/console-preview-section.tsx +57 -0
- package/data/templates/quantum-verification-story/src/components/console-preview.tsx +72 -0
- package/data/templates/quantum-verification-story/src/components/fade-up.tsx +54 -0
- package/data/templates/quantum-verification-story/src/components/floating-network.tsx +125 -0
- package/data/templates/quantum-verification-story/src/components/footer.tsx +83 -0
- package/data/templates/quantum-verification-story/src/components/harvest-timeline.tsx +70 -0
- package/data/templates/quantum-verification-story/src/components/lattice-diagram.tsx +73 -0
- package/data/templates/quantum-verification-story/src/components/lattice-field.tsx +129 -0
- package/data/templates/quantum-verification-story/src/components/nav.tsx +104 -0
- package/data/templates/quantum-verification-story/src/components/presentation-layout.tsx +91 -0
- package/data/templates/quantum-verification-story/src/components/readiness-estimator.tsx +135 -0
- package/data/templates/quantum-verification-story/src/components/scramble-text.tsx +60 -0
- package/data/templates/quantum-verification-story/src/components/section-backdrop.tsx +38 -0
- package/data/templates/quantum-verification-story/src/components/sections/clients.tsx +140 -0
- package/data/templates/quantum-verification-story/src/components/sections/contact.tsx +125 -0
- package/data/templates/quantum-verification-story/src/components/sections/hero.tsx +92 -0
- package/data/templates/quantum-verification-story/src/components/sections/moat.tsx +73 -0
- package/data/templates/quantum-verification-story/src/components/sections/offer.tsx +113 -0
- package/data/templates/quantum-verification-story/src/components/sections/pilot.tsx +63 -0
- package/data/templates/quantum-verification-story/src/components/sections/problem.tsx +53 -0
- package/data/templates/quantum-verification-story/src/components/text-particle.tsx +204 -0
- package/data/templates/quantum-verification-story/src/components/ticker.tsx +27 -0
- package/data/templates/quantum-verification-story/src/components/ui/badge.tsx +29 -0
- package/data/templates/quantum-verification-story/src/components/ui/button.tsx +55 -0
- package/data/templates/quantum-verification-story/src/components/ui/card.tsx +46 -0
- package/data/templates/quantum-verification-story/src/components/ui/cursor-driven-particle-typography.tsx +288 -0
- package/data/templates/quantum-verification-story/src/components/ui/input.tsx +20 -0
- package/data/templates/quantum-verification-story/src/components/ui/label.tsx +21 -0
- package/data/templates/quantum-verification-story/src/components/ui/separator.tsx +25 -0
- package/data/templates/quantum-verification-story/src/components/ui/textarea.tsx +19 -0
- package/data/templates/quantum-verification-story/src/lib/utils.ts +6 -0
- package/data/templates/quantum-verification-story/tailwind.config.js +95 -0
- package/data/templates/quantum-verification-story/template.manifest.json +23 -0
- package/data/templates/quantum-verification-story/tsconfig.json +42 -0
- package/data/templates/saas-solution-homepage/main.tsx +91 -14
- package/data/templates/saas-solution-homepage/privacy/index.html +1 -0
- package/data/templates/saas-solution-homepage/styles.css +47 -2
- package/data/templates/saas-solution-homepage/team/index.html +1 -0
- package/data/templates/saas-solution-homepage/template.manifest.json +41 -0
- package/data/templates/saas-solution-homepage/terms/index.html +1 -0
- package/lib/api.mjs +52 -3
- package/lib/template-runtime.mjs +1 -0
- package/package.json +2 -2
|
@@ -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
|
|
99
|
-
"shortName": "Utopia
|
|
111
|
+
"name": "The Utopia Studio",
|
|
112
|
+
"shortName": "The Utopia Studio",
|
|
100
113
|
"locked": true,
|
|
101
|
-
"role": "
|
|
102
|
-
"description": "
|
|
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": "
|
|
124
|
-
"role": "ثيم
|
|
125
|
-
"description": "الثيم الافتراضي لـ
|
|
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": "
|
|
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": "
|
|
182
|
-
"--font-arabic-body": "
|
|
183
|
-
"--font-arabic-display": "
|
|
184
|
-
"--font-weight-arabic-body": "
|
|
185
|
-
"--font-weight-arabic-display": "
|
|
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(
|
|
204
|
+
"--font-size-arabic-display": "clamp(40px, 7.3vw, 87px)",
|
|
190
205
|
"--line-height-arabic": "1.75",
|
|
191
|
-
"--line-height-arabic-body": "1.
|
|
192
|
-
"--line-height-arabic-display": "1.
|
|
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": "
|
|
210
|
-
"description": "
|
|
224
|
+
"role": "Brand theme",
|
|
225
|
+
"description": "Theme for Dextrum product interfaces and technical sales pages.",
|
|
211
226
|
"bestFor": [
|
|
212
227
|
"Dextrum product UI",
|
|
213
|
-
"
|
|
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": "ثيم
|
|
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": "
|
|
288
|
-
"--font-arabic-body": "
|
|
289
|
-
"--font-arabic-display": "
|
|
290
|
-
"--font-weight-arabic-body": "
|
|
291
|
-
"--font-weight-arabic-display": "
|
|
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.
|
|
311
|
+
"--font-size-arabic-display": "clamp(2.5rem, 6.2vw, 5rem)",
|
|
296
312
|
"--line-height-arabic": "1.75",
|
|
297
|
-
"--line-height-arabic-body": "1.
|
|
298
|
-
"--line-height-arabic-display": "1.
|
|
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": "
|
|
318
|
-
"description": "
|
|
366
|
+
"role": "Brand theme",
|
|
367
|
+
"description": "Theme for Barrier Intelligence product and analytics interfaces.",
|
|
319
368
|
"bestFor": [
|
|
320
369
|
"Barrier Intelligence product UI",
|
|
321
|
-
"
|
|
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": "ثيم
|
|
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": "
|
|
437
|
-
"description": "
|
|
512
|
+
"role": "Brand theme",
|
|
513
|
+
"description": "Theme for Renacore product interfaces and energy dashboards.",
|
|
438
514
|
"motionProfile": "precise",
|
|
439
515
|
"bestFor": [
|
|
440
|
-
"Renacore
|
|
441
|
-
"
|
|
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": "ثيم
|
|
529
|
+
"description": "ثيم لواجهات منتجات Renacore ولوحات معلومات الطاقة.",
|
|
455
530
|
"bestFor": [
|
|
456
|
-
"
|
|
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": "
|
|
545
|
-
"description": "
|
|
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
|
-
"
|
|
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
|
|
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=
|
|
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=
|
|
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
|
+
|