@utopia-studio-design/design-system-cli 0.7.1 → 0.8.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 (247) hide show
  1. package/bin/utopia-ds-mcp.mjs +18 -5
  2. package/bin/utopia-ds.mjs +16 -3
  3. package/data/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
  4. package/data/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
  5. package/data/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
  6. package/data/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
  7. package/data/blocks/semantic-pattern-parts/PatternParts.tsx +7 -0
  8. package/data/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
  9. package/data/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
  10. package/data/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
  11. package/data/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
  12. package/data/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
  13. package/data/blocks/semantic-pattern-parts/auth-parts.css +27 -0
  14. package/data/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
  15. package/data/blocks/semantic-pattern-parts/product-parts.css +25 -0
  16. package/data/blocks/semantic-pattern-parts/types.ts +3 -0
  17. package/data/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
  18. package/data/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
  19. package/data/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
  20. package/data/blocks/ux-pattern-examples/OnboardingExample.tsx +15 -0
  21. package/data/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
  22. package/data/blocks/ux-pattern-examples/ReviewExample.tsx +14 -0
  23. package/data/blocks/ux-pattern-examples/SignupExample.tsx +22 -0
  24. package/data/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
  25. package/data/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
  26. package/data/blocks/ux-pattern-examples/copy.ts +6 -0
  27. package/data/blocks/ux-pattern-examples/ux-examples.css +18 -0
  28. package/data/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
  29. package/data/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
  30. package/data/docs/ceramic-release-2026-09-06.md +2 -0
  31. package/data/docs/create-a-brandbook.md +79 -0
  32. package/data/docs/dextrum-document-family.md +47 -0
  33. package/data/docs/guide.md +2 -0
  34. package/data/docs/presentation-asset-repository.md +5 -0
  35. package/data/docs/ui-parts-qa.md +172 -0
  36. package/data/docs/ui-parts.md +105 -0
  37. package/data/docs/ux-pattern-adaptation-qa.md +38 -0
  38. package/data/docs/ux-pattern-adaptation.md +41 -0
  39. package/data/docs/ux-pattern-migration.md +111 -0
  40. package/data/docs/ux-pattern-release-2026-09-13.md +26 -0
  41. package/data/docs/ux-source-evidence/account-auth.json +41 -0
  42. package/data/docs/ux-source-evidence/account-forgot-password.json +36 -0
  43. package/data/docs/ux-source-evidence/account-invite.json +63 -0
  44. package/data/docs/ux-source-evidence/account-locked.json +63 -0
  45. package/data/docs/ux-source-evidence/account-login.json +28 -0
  46. package/data/docs/ux-source-evidence/account-mfa.json +62 -0
  47. package/data/docs/ux-source-evidence/account-onboarding-credentials.json +52 -0
  48. package/data/docs/ux-source-evidence/account-onboarding-legal.json +56 -0
  49. package/data/docs/ux-source-evidence/account-onboarding-orientation.json +66 -0
  50. package/data/docs/ux-source-evidence/account-onboarding-profile.json +50 -0
  51. package/data/docs/ux-source-evidence/account-onboarding.json +69 -0
  52. package/data/docs/ux-source-evidence/account-reset-password.json +27 -0
  53. package/data/docs/ux-source-evidence/account-session-expired.json +62 -0
  54. package/data/docs/ux-source-evidence/account-signup.json +33 -0
  55. package/data/docs/ux-source-evidence/account-verify-email.json +34 -0
  56. package/data/docs/ux-source-evidence/account-welcome.json +41 -0
  57. package/data/docs/ux-source-evidence/admin-analytics.json +54 -0
  58. package/data/docs/ux-source-evidence/admin-audit.json +31 -0
  59. package/data/docs/ux-source-evidence/admin-broadcasts-new.json +36 -0
  60. package/data/docs/ux-source-evidence/admin-broadcasts.json +41 -0
  61. package/data/docs/ux-source-evidence/admin-closures.json +52 -0
  62. package/data/docs/ux-source-evidence/admin-devices.json +51 -0
  63. package/data/docs/ux-source-evidence/admin-escalations.json +35 -0
  64. package/data/docs/ux-source-evidence/admin-incidents.json +54 -0
  65. package/data/docs/ux-source-evidence/admin-loading.json +17 -0
  66. package/data/docs/ux-source-evidence/admin-onboarding-detail.json +80 -0
  67. package/data/docs/ux-source-evidence/admin-onboarding.json +62 -0
  68. package/data/docs/ux-source-evidence/admin-payments.json +45 -0
  69. package/data/docs/ux-source-evidence/admin-providers.json +38 -0
  70. package/data/docs/ux-source-evidence/admin-settings.json +18 -0
  71. package/data/docs/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
  72. package/data/docs/ux-source-evidence/admin-subscriptions-detail.json +48 -0
  73. package/data/docs/ux-source-evidence/admin-subscriptions-new.json +43 -0
  74. package/data/docs/ux-source-evidence/admin-subscriptions.json +41 -0
  75. package/data/docs/ux-source-evidence/admin-transactions.json +41 -0
  76. package/data/docs/ux-source-evidence/error.json +30 -0
  77. package/data/docs/ux-source-evidence/loading.json +19 -0
  78. package/data/docs/ux-source-evidence/marketing-blog.json +48 -0
  79. package/data/docs/ux-source-evidence/marketing-contact.json +36 -0
  80. package/data/docs/ux-source-evidence/marketing.json +64 -0
  81. package/data/docs/ux-source-evidence/not-found.json +28 -0
  82. package/data/docs/ux-source-evidence/portal-loading.json +17 -0
  83. package/data/docs/ux-source-evidence/portal-mentor-messages.json +31 -0
  84. package/data/docs/ux-source-evidence/portal-mentor-profile.json +23 -0
  85. package/data/docs/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
  86. package/data/docs/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
  87. package/data/docs/ux-source-evidence/portal-mentor-settings.json +18 -0
  88. package/data/docs/ux-source-evidence/portal-mentor.json +38 -0
  89. package/data/docs/ux-source-evidence/portal-sessions-detail-live.json +48 -0
  90. package/data/docs/ux-source-evidence/portal-sponsor-billing.json +28 -0
  91. package/data/docs/ux-source-evidence/portal-sponsor-profile.json +22 -0
  92. package/data/docs/ux-source-evidence/portal-sponsor-sessions.json +28 -0
  93. package/data/docs/ux-source-evidence/portal-sponsor-settings.json +18 -0
  94. package/data/docs/ux-source-evidence/portal-sponsor-trainees.json +36 -0
  95. package/data/docs/ux-source-evidence/portal-sponsor.json +52 -0
  96. package/data/docs/ux-source-evidence/portal-trainee-competency.json +42 -0
  97. package/data/docs/ux-source-evidence/portal-trainee-credits.json +40 -0
  98. package/data/docs/ux-source-evidence/portal-trainee-mentors.json +48 -0
  99. package/data/docs/ux-source-evidence/portal-trainee-messages.json +32 -0
  100. package/data/docs/ux-source-evidence/portal-trainee-notifications.json +35 -0
  101. package/data/docs/ux-source-evidence/portal-trainee-profile.json +26 -0
  102. package/data/docs/ux-source-evidence/portal-trainee-request.json +54 -0
  103. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
  104. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
  105. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
  106. package/data/docs/ux-source-evidence/portal-trainee-sessions.json +36 -0
  107. package/data/docs/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
  108. package/data/docs/ux-source-evidence/portal-trainee-settings.json +18 -0
  109. package/data/docs/ux-source-evidence/portal-trainee.json +44 -0
  110. package/data/docs/ux-source-evidence/portal-tv-detail.json +39 -0
  111. package/data/docs/ux-source-evidence/portal-tv.json +44 -0
  112. package/data/docs/ux-source-evidence/shared-admin-admin-shell.json +35 -0
  113. package/data/docs/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
  114. package/data/docs/ux-source-evidence/shared-auth-auth-shell.json +25 -0
  115. package/data/docs/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
  116. package/data/docs/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
  117. package/data/docs/ux-source-evidence/shared-auth-status-indicator.json +41 -0
  118. package/data/docs/ux-source-evidence/shared-portal-empty-state.json +24 -0
  119. package/data/docs/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
  120. package/data/docs/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
  121. package/data/docs/ux-source-evidence/shared-portal-portal-shell.json +36 -0
  122. package/data/docs/ux-source-evidence/shared-portal-profile-form.json +32 -0
  123. package/data/docs/ux-source-evidence/shared-portal-settings-view.json +81 -0
  124. package/data/docs/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
  125. package/data/docs/ux-source-evidence/shared-portal-user-menu.json +34 -0
  126. package/data/manifests/blocks.json +230 -21
  127. package/data/manifests/brandbook-skill.json +33 -0
  128. package/data/manifests/catalog.json +1 -0
  129. package/data/manifests/patterns.json +358 -0
  130. package/data/manifests/theme-dextrum.json +132 -21
  131. package/data/manifests/themes.json +253 -39
  132. package/data/manifests/ui-patterns.json +1029 -0
  133. package/data/manifests/ux-examples.json +2177 -0
  134. package/data/manifests/ux-patterns.json +1135 -0
  135. package/data/manifests/ux-source-inventory.json +4669 -0
  136. package/data/ui-parts/blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx +87 -0
  137. package/data/ui-parts/blocks/analytics-dashboard/analytics-dashboard.css +92 -0
  138. package/data/ui-parts/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
  139. package/data/ui-parts/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
  140. package/data/ui-parts/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
  141. package/data/ui-parts/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
  142. package/data/ui-parts/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
  143. package/data/ui-parts/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
  144. package/data/ui-parts/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
  145. package/data/ui-parts/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
  146. package/data/ui-parts/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
  147. package/data/ui-parts/blocks/semantic-pattern-parts/auth-parts.css +27 -0
  148. package/data/ui-parts/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
  149. package/data/ui-parts/blocks/semantic-pattern-parts/product-parts.css +25 -0
  150. package/data/ui-parts/blocks/semantic-pattern-parts/types.ts +3 -0
  151. package/data/ui-parts/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
  152. package/data/ui-parts/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
  153. package/data/ui-parts/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
  154. package/data/ui-parts/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
  155. package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
  156. package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
  157. package/data/ui-parts/blocks/ux-pattern-examples/copy.ts +6 -0
  158. package/data/ui-parts/blocks/ux-pattern-examples/ux-examples.css +18 -0
  159. package/data/ui-parts/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
  160. package/data/ui-parts/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
  161. package/data/ux-source-evidence/account-auth.json +41 -0
  162. package/data/ux-source-evidence/account-forgot-password.json +36 -0
  163. package/data/ux-source-evidence/account-invite.json +63 -0
  164. package/data/ux-source-evidence/account-locked.json +63 -0
  165. package/data/ux-source-evidence/account-login.json +28 -0
  166. package/data/ux-source-evidence/account-mfa.json +62 -0
  167. package/data/ux-source-evidence/account-onboarding-credentials.json +52 -0
  168. package/data/ux-source-evidence/account-onboarding-legal.json +56 -0
  169. package/data/ux-source-evidence/account-onboarding-orientation.json +66 -0
  170. package/data/ux-source-evidence/account-onboarding-profile.json +50 -0
  171. package/data/ux-source-evidence/account-onboarding.json +69 -0
  172. package/data/ux-source-evidence/account-reset-password.json +27 -0
  173. package/data/ux-source-evidence/account-session-expired.json +62 -0
  174. package/data/ux-source-evidence/account-signup.json +33 -0
  175. package/data/ux-source-evidence/account-verify-email.json +34 -0
  176. package/data/ux-source-evidence/account-welcome.json +41 -0
  177. package/data/ux-source-evidence/admin-analytics.json +54 -0
  178. package/data/ux-source-evidence/admin-audit.json +31 -0
  179. package/data/ux-source-evidence/admin-broadcasts-new.json +36 -0
  180. package/data/ux-source-evidence/admin-broadcasts.json +41 -0
  181. package/data/ux-source-evidence/admin-closures.json +52 -0
  182. package/data/ux-source-evidence/admin-devices.json +51 -0
  183. package/data/ux-source-evidence/admin-escalations.json +35 -0
  184. package/data/ux-source-evidence/admin-incidents.json +54 -0
  185. package/data/ux-source-evidence/admin-loading.json +17 -0
  186. package/data/ux-source-evidence/admin-onboarding-detail.json +80 -0
  187. package/data/ux-source-evidence/admin-onboarding.json +62 -0
  188. package/data/ux-source-evidence/admin-payments.json +45 -0
  189. package/data/ux-source-evidence/admin-providers.json +38 -0
  190. package/data/ux-source-evidence/admin-settings.json +18 -0
  191. package/data/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
  192. package/data/ux-source-evidence/admin-subscriptions-detail.json +48 -0
  193. package/data/ux-source-evidence/admin-subscriptions-new.json +43 -0
  194. package/data/ux-source-evidence/admin-subscriptions.json +41 -0
  195. package/data/ux-source-evidence/admin-transactions.json +41 -0
  196. package/data/ux-source-evidence/error.json +30 -0
  197. package/data/ux-source-evidence/loading.json +19 -0
  198. package/data/ux-source-evidence/marketing-blog.json +48 -0
  199. package/data/ux-source-evidence/marketing-contact.json +36 -0
  200. package/data/ux-source-evidence/marketing.json +64 -0
  201. package/data/ux-source-evidence/not-found.json +28 -0
  202. package/data/ux-source-evidence/portal-loading.json +17 -0
  203. package/data/ux-source-evidence/portal-mentor-messages.json +31 -0
  204. package/data/ux-source-evidence/portal-mentor-profile.json +23 -0
  205. package/data/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
  206. package/data/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
  207. package/data/ux-source-evidence/portal-mentor-settings.json +18 -0
  208. package/data/ux-source-evidence/portal-mentor.json +38 -0
  209. package/data/ux-source-evidence/portal-sessions-detail-live.json +48 -0
  210. package/data/ux-source-evidence/portal-sponsor-billing.json +28 -0
  211. package/data/ux-source-evidence/portal-sponsor-profile.json +22 -0
  212. package/data/ux-source-evidence/portal-sponsor-sessions.json +28 -0
  213. package/data/ux-source-evidence/portal-sponsor-settings.json +18 -0
  214. package/data/ux-source-evidence/portal-sponsor-trainees.json +36 -0
  215. package/data/ux-source-evidence/portal-sponsor.json +52 -0
  216. package/data/ux-source-evidence/portal-trainee-competency.json +42 -0
  217. package/data/ux-source-evidence/portal-trainee-credits.json +40 -0
  218. package/data/ux-source-evidence/portal-trainee-mentors.json +48 -0
  219. package/data/ux-source-evidence/portal-trainee-messages.json +32 -0
  220. package/data/ux-source-evidence/portal-trainee-notifications.json +35 -0
  221. package/data/ux-source-evidence/portal-trainee-profile.json +26 -0
  222. package/data/ux-source-evidence/portal-trainee-request.json +54 -0
  223. package/data/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
  224. package/data/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
  225. package/data/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
  226. package/data/ux-source-evidence/portal-trainee-sessions.json +36 -0
  227. package/data/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
  228. package/data/ux-source-evidence/portal-trainee-settings.json +18 -0
  229. package/data/ux-source-evidence/portal-trainee.json +44 -0
  230. package/data/ux-source-evidence/portal-tv-detail.json +39 -0
  231. package/data/ux-source-evidence/portal-tv.json +44 -0
  232. package/data/ux-source-evidence/shared-admin-admin-shell.json +35 -0
  233. package/data/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
  234. package/data/ux-source-evidence/shared-auth-auth-shell.json +25 -0
  235. package/data/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
  236. package/data/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
  237. package/data/ux-source-evidence/shared-auth-status-indicator.json +41 -0
  238. package/data/ux-source-evidence/shared-portal-empty-state.json +24 -0
  239. package/data/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
  240. package/data/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
  241. package/data/ux-source-evidence/shared-portal-portal-shell.json +36 -0
  242. package/data/ux-source-evidence/shared-portal-profile-form.json +32 -0
  243. package/data/ux-source-evidence/shared-portal-settings-view.json +81 -0
  244. package/data/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
  245. package/data/ux-source-evidence/shared-portal-user-menu.json +34 -0
  246. package/lib/api.mjs +228 -4
  247. package/package.json +2 -2
@@ -229,7 +229,7 @@
229
229
  ],
230
230
  "principles": [
231
231
  "calm technical hierarchy",
232
- "blue-led product surfaces",
232
+ "neutral charcoal Dark and cool-neutral Light product surfaces",
233
233
  "Manrope product typography",
234
234
  "Lucide icon system"
235
235
  ],
@@ -237,7 +237,8 @@
237
237
  "kind": "logo",
238
238
  "src": "/brand/dextrum-logo.svg",
239
239
  "alt": "Dextrum",
240
- "usage": "Use only on Dextrum-branded surfaces."
240
+ "usage": "Canonical owner-supplied BLUE v2 transparent SVG. Preserve aspect ratio and colors. Document logo-on-band permits separate white rounded containers behind both logos on colored bands; do not bake a background into the SVG.",
241
+ "presentationSrc": "/brand/dextrum/blue-v2.svg"
241
242
  },
242
243
  "translations": {
243
244
  "ar": {
@@ -262,18 +263,18 @@
262
263
  "iconSystem": "lucide",
263
264
  "motionProfile": "swift",
264
265
  "values": {
265
- "--background": "#192B39",
266
+ "--background": "#0E1215",
266
267
  "--foreground": "#EAEAEA",
267
- "--card": "#2F3F4C",
268
+ "--card": "#171C20",
268
269
  "--card-foreground": "#EAEAEA",
269
270
  "--primary": "#3E8ECC",
270
- "--primary-foreground": "#EAEAEA",
271
- "--secondary": "#2F3F4C",
271
+ "--primary-foreground": "#101619",
272
+ "--secondary": "#1B2126",
272
273
  "--secondary-foreground": "#EAEAEA",
273
- "--muted": "#243746",
274
- "--muted-foreground": "#9BA6AE",
275
- "--border": "rgba(234,234,234,0.14)",
276
- "--input": "rgba(234,234,234,0.20)",
274
+ "--muted": "#171C20",
275
+ "--muted-foreground": "#909BA2",
276
+ "--border": "rgb(238 240 241 / 10%)",
277
+ "--input": "rgb(238 240 241 / 15%)",
277
278
  "--ring": "#3E8ECC",
278
279
  "--loading-background": "#192B39",
279
280
  "--loading-accent": "#3E8ECC",
@@ -321,9 +322,55 @@
321
322
  "--sidebar-rail-size": "8px",
322
323
  "--button-height": "40px",
323
324
  "--card-padding": "24px",
324
- "--overlay": "color-mix(in srgb, #192B39 84%, transparent)",
325
- "--modal-surface": "#2F3F4C",
326
- "--popover-surface": "#2F3F4C"
325
+ "--overlay": "rgb(5 8 10 / 78%)",
326
+ "--modal-surface": "#1B2126",
327
+ "--popover-surface": "#1B2126",
328
+ "--foreground-muted": "#ADB4B8",
329
+ "--foreground-subtle": "#7F898F",
330
+ "--popover": "#1B2126",
331
+ "--popover-foreground": "#EAEAEA",
332
+ "--primary-hover": "#4A9AD4",
333
+ "--primary-active": "#26689A",
334
+ "--accent": "#20272C",
335
+ "--accent-foreground": "#EAEAEA",
336
+ "--surface": "rgb(255 255 255 / 2.8%)",
337
+ "--surface-strong": "rgb(255 255 255 / 5%)",
338
+ "--surface-elevated": "#1B2126",
339
+ "--surface-hover": "rgb(255 255 255 / 7%)",
340
+ "--sidebar": "#11161A",
341
+ "--sidebar-foreground": "#EAEAEA",
342
+ "--sidebar-primary": "#3E8ECC",
343
+ "--sidebar-primary-foreground": "#101619",
344
+ "--sidebar-accent": "rgb(62 142 204 / 12%)",
345
+ "--sidebar-accent-foreground": "#EAEAEA",
346
+ "--sidebar-border": "rgb(238 240 241 / 8%)",
347
+ "--sidebar-ring": "#3E8ECC"
348
+ },
349
+ "revision": "v2",
350
+ "documentFamily": {
351
+ "id": "venture-document",
352
+ "rulingDate": "2026-09-07",
353
+ "exemplar": "2026-09-07_dextrum_onepager-totalenergies-tier1-v1_1.pptx",
354
+ "scope": [
355
+ "documents",
356
+ "decks",
357
+ "one-pagers"
358
+ ],
359
+ "tokens": {
360
+ "--document-strip-background": "#C9E0F5",
361
+ "--document-strip-foreground": "#192B39",
362
+ "--document-eyebrow-foreground": "#3E8ECC",
363
+ "--document-chip-background": "#FFFFFF",
364
+ "--document-chip-foreground": "#192B39",
365
+ "--document-band-background": "#5B87AD",
366
+ "--document-band-foreground": "#FFFFFF",
367
+ "--document-logo-container-background": "#FFFFFF",
368
+ "--document-logo-container-radius": "var(--radius-surface)"
369
+ },
370
+ "logoTreatment": "logo-on-band: preserve transparent logo assets inside separate white rounded containers behind both logos on colored bands. Never edit the mark.",
371
+ "precedence": "Product surfaces use Ceramic v2. Documents, decks and one-pagers follow the 07 Sep document rulings until superseded; HTML is a delivery format, not a reason to discard the document ruling.",
372
+ "identityManifest": "public/brand/dextrum/ceramic.assets.json",
373
+ "legacyNote": "The 01 Sep design-language document in the supplied kit is historical v1, not the current product token authority."
327
374
  }
328
375
  },
329
376
  {
@@ -334,29 +381,107 @@
334
381
  "role": "Visual theme",
335
382
  "description": "Black-and-white theme with a spectral accent.",
336
383
  "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"],
384
+ "bestFor": [
385
+ "AI products",
386
+ "Creative tools"
387
+ ],
388
+ "principles": [
389
+ "monochrome first",
390
+ "spectral color with purpose",
391
+ "crisp geometry",
392
+ "fast direct feedback",
393
+ "accessible color-independent states"
394
+ ],
339
395
  "preview": {
340
396
  "label": "PRISM / MONO",
341
397
  "foreground": "#090909",
342
398
  "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
399
  },
344
- "translations": {"ar": {"name": "Prism Mono", "role": "ثيم بصري", "description": "ثيم أبيض وأسود مع تدرج طيفي.", "bestFor": ["منتجات الذكاء الاصطناعي", "الأدوات الإبداعية"], "principles": ["الأبيض والأسود أولاً", "لون طيفي هادف", "هندسة واضحة", "استجابة سريعة", "حالات لا تعتمد على اللون وحده"]}},
400
+ "translations": {
401
+ "ar": {
402
+ "name": "Prism Mono",
403
+ "role": "ثيم بصري",
404
+ "description": "ثيم أبيض وأسود مع تدرج طيفي.",
405
+ "bestFor": [
406
+ "منتجات الذكاء الاصطناعي",
407
+ "الأدوات الإبداعية"
408
+ ],
409
+ "principles": [
410
+ "الأبيض والأسود أولاً",
411
+ "لون طيفي هادف",
412
+ "هندسة واضحة",
413
+ "استجابة سريعة",
414
+ "حالات لا تعتمد على اللون وحده"
415
+ ]
416
+ }
417
+ },
345
418
  "policyManifest": "packages/design-system/src/manifests/theme-prism-mono.json",
346
419
  "css": "packages/design-system/src/themes/prism-mono.css",
347
420
  "iconSystem": "lucide",
348
421
  "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)"
422
+ "--background": "#F8F8F6",
423
+ "--foreground": "#090909",
424
+ "--card": "#FFFFFF",
425
+ "--card-foreground": "#090909",
426
+ "--primary": "#090909",
427
+ "--primary-foreground": "#FFFFFF",
428
+ "--secondary": "#ECECEA",
429
+ "--secondary-foreground": "#090909",
430
+ "--muted": "#E4E4E0",
431
+ "--muted-foreground": "#5F5F5A",
432
+ "--border": "#CACAC5",
433
+ "--input": "#A9A9A3",
434
+ "--ring": "#1A73E8",
435
+ "--loading-background": "#F8F8F6",
436
+ "--loading-accent": "#1A73E8",
437
+ "--loading-foreground": "#090909",
438
+ "--radius": "14px",
439
+ "--radius-control": "999px",
440
+ "--radius-surface": "24px",
441
+ "--radius-chat-bubble": "20px",
442
+ "--radius-chat-composer": "28px",
443
+ "--radius-chat-token": "14px",
444
+ "--shadow-control": "0 1px 0 rgba(0,0,0,.08)",
445
+ "--motion-duration-press": "90ms",
446
+ "--motion-duration-page": "180ms",
447
+ "--motion-duration-expand": "180ms",
448
+ "--motion-duration-reveal": "220ms",
449
+ "--motion-duration-icon": "280ms",
450
+ "--motion-ease-standard": "cubic-bezier(0.2,0,0,1)",
451
+ "--motion-ease-emphasized": "cubic-bezier(0.16,1,0.3,1)",
452
+ "--motion-ease-icon": "cubic-bezier(0.16,1,0.3,1)",
453
+ "--motion-press-scale": ".98",
454
+ "--motion-distance-page": "6px",
455
+ "--motion-distance-reveal": "8px",
456
+ "--font-sans": "TWK Lausanne",
457
+ "--font-display": "TWK Lausanne",
458
+ "--font-ui-support": "TWK Lausanne",
459
+ "--font-marketing-display": "TWK Lausanne",
460
+ "--font-arabic": "IBM Plex Sans Arabic",
461
+ "--font-arabic-body": "IBM Plex Sans Arabic",
462
+ "--font-arabic-display": "IBM Plex Sans Arabic",
463
+ "--font-weight-arabic-body": "400",
464
+ "--font-weight-arabic-display": "700",
465
+ "--font-size-display": "clamp(2.75rem,7vw,5.75rem)",
466
+ "--font-size-arabic-body": "16px",
467
+ "--font-size-arabic-body-lg": "19px",
468
+ "--font-size-arabic-display": "clamp(2.6rem,6.6vw,5.4rem)",
469
+ "--line-height-arabic": "1.75",
470
+ "--line-height-arabic-body": "1.75",
471
+ "--line-height-arabic-display": "1.16",
472
+ "--tracking-arabic": "0",
473
+ "--tracking-arabic-display": "0",
474
+ "--sidebar-width": "17rem",
475
+ "--control-height-sm": "2rem",
476
+ "--sidebar-width-collapsed": "4rem",
477
+ "--sidebar-min-block-size": "30rem",
478
+ "--sidebar-rail-size": "8px",
479
+ "--button-height": "40px",
480
+ "--card-padding": "24px",
481
+ "--overlay": "rgb(9 9 9 / 82%)",
482
+ "--modal-surface": "#FFFFFF",
483
+ "--popover-surface": "#FFFFFF",
484
+ "--prism-spectrum": "linear-gradient(90deg,#EA4335,#FBBC04,#34A853,#4285F4)"
360
485
  }
361
486
  },
362
487
  {
@@ -377,7 +502,11 @@
377
502
  "independent brand and color mode",
378
503
  "restrained detector and assurance signals"
379
504
  ],
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)"},
505
+ "preview": {
506
+ "label": "BARRIER / INTELLIGENCE",
507
+ "foreground": "#D2AC6C",
508
+ "background": "radial-gradient(circle at 76% 20%, rgba(210,172,108,.24), transparent 32%), linear-gradient(145deg,#050505,#16120c 68%,#050505)"
509
+ },
381
510
  "translations": {
382
511
  "ar": {
383
512
  "name": "Barrier Intelligence",
@@ -487,21 +616,106 @@
487
616
  "role": "Visual theme",
488
617
  "description": "Early-web theme with rounded geometry and pastel colors.",
489
618
  "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": ["لطيف وواضح", "هندسة فقاعية", "طاقة الباستيل", "عمق ملموس", "حنين مع وصول حديث"]}},
619
+ "bestFor": [
620
+ "Youth and culture products",
621
+ "Community and campaign pages"
622
+ ],
623
+ "principles": [
624
+ "cute but legible",
625
+ "bubble geometry",
626
+ "pastel energy",
627
+ "tactile offset depth",
628
+ "nostalgia with modern accessibility"
629
+ ],
630
+ "preview": {
631
+ "label": "Y2K ✦ POP",
632
+ "foreground": "#35144F",
633
+ "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)"
634
+ },
635
+ "translations": {
636
+ "ar": {
637
+ "name": "Y2K Pop",
638
+ "role": "ثيم بصري",
639
+ "description": "ثيم مستوحى من الويب المبكر بهندسة مستديرة وألوان باستيل.",
640
+ "bestFor": [
641
+ "منتجات الشباب والثقافة",
642
+ "صفحات المجتمع والحملات"
643
+ ],
644
+ "principles": [
645
+ "لطيف وواضح",
646
+ "هندسة فقاعية",
647
+ "طاقة الباستيل",
648
+ "عمق ملموس",
649
+ "حنين مع وصول حديث"
650
+ ]
651
+ }
652
+ },
494
653
  "policyManifest": "packages/design-system/src/manifests/theme-y2k-pop.json",
495
654
  "css": "packages/design-system/src/themes/y2k-pop.css",
496
655
  "iconSystem": "lucide-rounded",
497
656
  "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"
657
+ "--background": "#FFF6FD",
658
+ "--foreground": "#35144F",
659
+ "--card": "#FFFFFF",
660
+ "--card-foreground": "#35144F",
661
+ "--primary": "#6C2BD9",
662
+ "--primary-foreground": "#FFFFFF",
663
+ "--secondary": "#FFD4F0",
664
+ "--secondary-foreground": "#35144F",
665
+ "--muted": "#EFE5FA",
666
+ "--muted-foreground": "#725E81",
667
+ "--border": "#8B68A5",
668
+ "--input": "#8B68A5",
669
+ "--ring": "#6C2BD9",
670
+ "--loading-background": "#FFF6FD",
671
+ "--loading-accent": "#6C2BD9",
672
+ "--loading-foreground": "#35144F",
673
+ "--radius": "22px",
674
+ "--radius-control": "999px",
675
+ "--radius-surface": "32px",
676
+ "--radius-chat-bubble": "26px",
677
+ "--radius-chat-composer": "32px",
678
+ "--radius-chat-token": "18px",
679
+ "--shadow-control": "3px 3px 0 #35144F",
680
+ "--motion-duration-press": "90ms",
681
+ "--motion-duration-page": "180ms",
682
+ "--motion-duration-expand": "200ms",
683
+ "--motion-duration-reveal": "240ms",
684
+ "--motion-duration-icon": "300ms",
685
+ "--motion-ease-standard": "cubic-bezier(.2,0,0,1)",
686
+ "--motion-ease-emphasized": "cubic-bezier(.2,1.35,.4,1)",
687
+ "--motion-ease-icon": "cubic-bezier(.2,1.35,.4,1)",
688
+ "--motion-press-scale": ".96",
689
+ "--motion-distance-page": "8px",
690
+ "--motion-distance-reveal": "12px",
691
+ "--font-sans": "TWK Lausanne",
692
+ "--font-display": "TWK Lausanne",
693
+ "--font-ui-support": "TWK Lausanne",
694
+ "--font-marketing-display": "TWK Lausanne",
695
+ "--font-arabic": "IBM Plex Sans Arabic",
696
+ "--font-arabic-body": "IBM Plex Sans Arabic",
697
+ "--font-arabic-display": "IBM Plex Sans Arabic",
698
+ "--font-weight-arabic-body": "400",
699
+ "--font-weight-arabic-display": "700",
700
+ "--font-size-display": "clamp(2.75rem,7.4vw,6rem)",
701
+ "--font-size-arabic-body": "16px",
702
+ "--font-size-arabic-body-lg": "19px",
703
+ "--font-size-arabic-display": "clamp(2.6rem,7vw,5.6rem)",
704
+ "--line-height-arabic": "1.75",
705
+ "--line-height-arabic-body": "1.75",
706
+ "--line-height-arabic-display": "1.18",
707
+ "--tracking-arabic": "0",
708
+ "--tracking-arabic-display": "0",
709
+ "--sidebar-width": "17rem",
710
+ "--control-height-sm": "2rem",
711
+ "--sidebar-width-collapsed": "4rem",
712
+ "--sidebar-min-block-size": "30rem",
713
+ "--sidebar-rail-size": "8px",
714
+ "--button-height": "42px",
715
+ "--card-padding": "24px",
716
+ "--overlay": "rgb(53 20 79 / 74%)",
717
+ "--modal-surface": "#FFFFFF",
718
+ "--popover-surface": "#FFFFFF"
505
719
  }
506
720
  },
507
721
  {