@cyberskill/design 1.0.0 → 1.1.1

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 (266) hide show
  1. package/DESIGN.md +10 -9
  2. package/README.md +31 -28
  3. package/SKILL.md +13 -9
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +660 -202
  6. package/_ds_manifest.json +1 -1
  7. package/_esm/cs.mjs +14 -8
  8. package/_esm/react.d.ts +216 -0
  9. package/_esm/react.mjs +114 -0
  10. package/base/collections.css +31 -0
  11. package/base/components.css +3 -0
  12. package/base/data.css +33 -0
  13. package/base/forms.css +8 -0
  14. package/base/interaction.css +1 -0
  15. package/base/typography.css +6 -0
  16. package/components/_i18n/strings.js +8 -4
  17. package/components/ai/ai-conversation.card.html +2 -2
  18. package/components/ai/ai-lumi.card.html +2 -2
  19. package/components/ai/ai.card.html +2 -2
  20. package/components/brand/brand.card.html +2 -2
  21. package/components/button/buttons.card.html +2 -2
  22. package/components/data/AspectRatio.d.ts +16 -0
  23. package/components/data/AspectRatio.figma.tsx +12 -0
  24. package/components/data/AspectRatio.jsx +16 -0
  25. package/components/data/AspectRatio.prompt.md +7 -0
  26. package/components/data/Collapsible.d.ts +21 -0
  27. package/components/data/Collapsible.figma.tsx +12 -0
  28. package/components/data/Collapsible.jsx +49 -0
  29. package/components/data/Collapsible.prompt.md +7 -0
  30. package/components/data/Image.d.ts +4 -0
  31. package/components/data/Image.prompt.md +2 -2
  32. package/components/data/Item.d.ts +26 -0
  33. package/components/data/Item.figma.tsx +12 -0
  34. package/components/data/Item.jsx +63 -0
  35. package/components/data/Item.prompt.md +10 -0
  36. package/components/data/ScrollArea.d.ts +16 -0
  37. package/components/data/ScrollArea.figma.tsx +12 -0
  38. package/components/data/ScrollArea.jsx +25 -0
  39. package/components/data/ScrollArea.prompt.md +7 -0
  40. package/components/data/collections.card.html +15 -4
  41. package/components/data/data.card.html +15 -4
  42. package/components/datatable/datatable.card.html +2 -2
  43. package/components/dialog/dialog.card.html +2 -2
  44. package/components/feedback/feedback-2.card.html +2 -2
  45. package/components/feedback/feedback.card.html +2 -2
  46. package/components/forms/Cascader.jsx +5 -3
  47. package/components/forms/Editor.prompt.md +1 -1
  48. package/components/forms/InputGroup.d.ts +4 -0
  49. package/components/forms/InputGroup.jsx +38 -8
  50. package/components/forms/InputGroup.prompt.md +3 -3
  51. package/components/forms/NativeSelect.d.ts +22 -0
  52. package/components/forms/NativeSelect.figma.tsx +12 -0
  53. package/components/forms/NativeSelect.jsx +56 -0
  54. package/components/forms/NativeSelect.prompt.md +10 -0
  55. package/components/forms/NumberField.d.ts +5 -0
  56. package/components/forms/NumberField.jsx +51 -7
  57. package/components/forms/NumberField.prompt.md +2 -2
  58. package/components/forms/SegmentedControl.jsx +1 -1
  59. package/components/forms/TagInput.d.ts +3 -0
  60. package/components/forms/TagInput.jsx +62 -20
  61. package/components/forms/TagInput.prompt.md +2 -2
  62. package/components/forms/forms-2.card.html +2 -2
  63. package/components/forms/forms.card.html +5 -4
  64. package/components/icon/Icon.prompt.md +1 -1
  65. package/components/icon/icon.card.html +2 -2
  66. package/components/logo/Logo.jsx +2 -1
  67. package/components/logo/logo.card.html +2 -2
  68. package/components/navigation/Menu.jsx +14 -1
  69. package/components/navigation/navigation.card.html +2 -2
  70. package/components/navigation/shell.card.html +2 -2
  71. package/components/overlays/AlertDialog.d.ts +29 -0
  72. package/components/overlays/AlertDialog.figma.tsx +12 -0
  73. package/components/overlays/AlertDialog.jsx +142 -0
  74. package/components/overlays/AlertDialog.prompt.md +12 -0
  75. package/components/overlays/Drawer.jsx +1 -1
  76. package/components/overlays/Popconfirm.jsx +14 -1
  77. package/components/overlays/Popover.jsx +14 -1
  78. package/components/overlays/alertdialog.card.html +42 -0
  79. package/components/overlays/overlays.card.html +2 -2
  80. package/components/textfield/textfield.card.html +2 -2
  81. package/docs/benchmark-rubric.md +46 -0
  82. package/docs/ci-cd.md +17 -11
  83. package/docs/consumer-grant.md +37 -0
  84. package/docs/consuming.md +45 -16
  85. package/docs/contrast-report.md +91 -103
  86. package/docs/conventions.md +12 -9
  87. package/docs/decisions.md +33 -10
  88. package/docs/deploy.md +1 -1
  89. package/docs/design-styles.md +26 -8
  90. package/docs/figma.md +3 -3
  91. package/docs/live-hub.md +5 -3
  92. package/docs/products.md +13 -11
  93. package/docs/quality-gates.md +35 -21
  94. package/docs/release-notes.md +21 -3
  95. package/docs/status/assets/favicon.svg +5 -0
  96. package/docs/status/assets/status-legacy.css +399 -0
  97. package/docs/status/assets/status-legacy.js +505 -0
  98. package/docs/status/assets/status.css +644 -0
  99. package/docs/status/assets/status.js +1308 -0
  100. package/docs/status/data/status-feed.json +1 -0
  101. package/docs/status/data/task/TASK-REL-001.js +1 -0
  102. package/docs/status/data/task/TASK-REL-002.js +1 -0
  103. package/docs/status/index.html +42 -0
  104. package/docs/status/roadmap.html +4 -0
  105. package/docs/status/status-legacy.html +117 -0
  106. package/docs/storybook.md +5 -4
  107. package/docs/sync.md +3 -2
  108. package/docs/tasks/BACKLOG.md +26 -0
  109. package/docs/tasks/release/TASK-REL-001-launch-1-1-0/spec.md +55 -0
  110. package/docs/tasks/release/TASK-REL-002-republish-1-1-1/spec.md +54 -0
  111. package/docs/template-schema-v2.md +15 -3
  112. package/docs/vi/benchmark-rubric.md +46 -0
  113. package/docs/vi/ci-cd.md +17 -11
  114. package/docs/vi/consumer-grant.md +37 -0
  115. package/docs/vi/consuming.md +45 -16
  116. package/docs/vi/contrast-report.md +94 -106
  117. package/docs/vi/conventions.md +12 -9
  118. package/docs/vi/decisions.md +33 -10
  119. package/docs/vi/deploy.md +1 -1
  120. package/docs/vi/design-styles.md +26 -8
  121. package/docs/vi/figma.md +3 -3
  122. package/docs/vi/live-hub.md +5 -3
  123. package/docs/vi/products.md +13 -11
  124. package/docs/vi/quality-gates.md +35 -21
  125. package/docs/vi/release-notes.md +26 -8
  126. package/docs/vi/storybook.md +5 -4
  127. package/docs/vi/sync.md +3 -2
  128. package/docs/vi/template-schema-v2.md +15 -3
  129. package/docs/viewer.html +2 -2
  130. package/fonts/spacegrotesk-var-latin-ext.woff2 +0 -0
  131. package/fonts/spacegrotesk-var-latin.woff2 +0 -0
  132. package/fonts/spacegrotesk-var-vietnamese.woff2 +0 -0
  133. package/guidelines/atomic-view.html +40 -27
  134. package/guidelines/elements-geometry.html +69 -0
  135. package/guidelines/elements-variants.html +17 -17
  136. package/guidelines/type-families.html +16 -10
  137. package/llms.txt +17 -11
  138. package/package.json +38 -16
  139. package/styles.css +1 -0
  140. package/templates/ai-cluster-demo.html +29 -14
  141. package/templates/app-shell/support.js +4 -4
  142. package/templates/article/content-schema.json +6 -0
  143. package/templates/article/support.js +4 -4
  144. package/templates/auth/support.js +4 -4
  145. package/templates/bod-deck/support.js +4 -4
  146. package/templates/bod-investor-update/support.js +4 -4
  147. package/templates/bod-memo/support.js +4 -4
  148. package/templates/bod-minutes/content-schema.json +12 -0
  149. package/templates/bod-minutes/support.js +4 -4
  150. package/templates/bod-report/support.js +4 -4
  151. package/templates/bod-resolution/support.js +4 -4
  152. package/templates/culture-event-invite/support.js +4 -4
  153. package/templates/dashboard/support.js +4 -4
  154. package/templates/delivery-change-note/support.js +4 -4
  155. package/templates/delivery-kickoff/support.js +4 -4
  156. package/templates/delivery-qbr-deck/support.js +4 -4
  157. package/templates/delivery-runbook/content-schema.json +6 -0
  158. package/templates/delivery-runbook/support.js +4 -4
  159. package/templates/delivery-status-email/support.js +4 -4
  160. package/templates/doc-style-guide/DocStyleGuide.dc.html +2 -2
  161. package/templates/doc-style-guide/support.js +4 -4
  162. package/templates/doc-suite-index/support.js +4 -4
  163. package/templates/doc-templates/DocTemplates.dc.html +1 -1
  164. package/templates/doc-templates/support.js +4 -4
  165. package/templates/email/support.js +4 -4
  166. package/templates/email-safe/README.md +17 -4
  167. package/templates/email-safe/email-launch.html +3 -3
  168. package/templates/email-safe/email-newsletter.html +1 -1
  169. package/templates/finance-dunning-email/support.js +4 -4
  170. package/templates/finance-expense-report/support.js +4 -4
  171. package/templates/finance-invoice/support.js +4 -4
  172. package/templates/finance-quote/support.js +4 -4
  173. package/templates/hr-announcement/support.js +4 -4
  174. package/templates/hr-interview-kit/content-schema.json +12 -0
  175. package/templates/hr-interview-kit/support.js +4 -4
  176. package/templates/hr-offboarding/content-schema.json +12 -0
  177. package/templates/hr-offboarding/support.js +4 -4
  178. package/templates/hr-performance-review/content-schema.json +12 -0
  179. package/templates/hr-performance-review/support.js +4 -4
  180. package/templates/hr-pip/content-schema.json +12 -0
  181. package/templates/hr-pip/support.js +4 -4
  182. package/templates/legal-msa/content-schema.json +16 -0
  183. package/templates/legal-msa/support.js +4 -4
  184. package/templates/legal-sow/support.js +4 -4
  185. package/templates/marketing-campaign-brief/support.js +4 -4
  186. package/templates/marketing-case-study/support.js +4 -4
  187. package/templates/marketing-launch/support.js +4 -4
  188. package/templates/marketing-newsletter/support.js +4 -4
  189. package/templates/marketing-page/content-schema.json +0 -1
  190. package/templates/marketing-page/support.js +4 -4
  191. package/templates/marketing-press-release/support.js +4 -4
  192. package/templates/marketing-social-kit/support.js +4 -4
  193. package/templates/playground.html +8 -4
  194. package/templates/sales-one-pager/support.js +4 -4
  195. package/templates/sales-proposal-deck/support.js +4 -4
  196. package/templates/settings/Settings.dc.html +26 -14
  197. package/templates/settings/content-schema.json +36 -0
  198. package/templates/settings/support.js +4 -4
  199. package/templates/slide-deck/support.js +4 -4
  200. package/templates/team-meeting-agenda/content-schema.json +16 -0
  201. package/templates/team-meeting-agenda/support.js +4 -4
  202. package/templates/tech-incident-report/support.js +4 -4
  203. package/templates/tech-release-notes/support.js +4 -4
  204. package/templates/tech-retro/content-schema.json +12 -0
  205. package/templates/tech-retro/support.js +4 -4
  206. package/templates/tech-rfc/content-schema.json +6 -0
  207. package/templates/tech-rfc/support.js +4 -4
  208. package/templates/vn-appointment-transfer/support.js +4 -4
  209. package/templates/vn-certificate-of-employment/support.js +4 -4
  210. package/templates/vn-code-of-conduct/support.js +4 -4
  211. package/templates/vn-compensation-regulation/support.js +4 -4
  212. package/templates/vn-contract-amendment/support.js +4 -4
  213. package/templates/vn-contractor-agreement/support.js +4 -4
  214. package/templates/vn-data-protection-policy/support.js +4 -4
  215. package/templates/vn-disciplinary-case-file/support.js +4 -4
  216. package/templates/vn-disciplinary-schedule/content-schema.json +15 -0
  217. package/templates/vn-disciplinary-schedule/support.js +4 -4
  218. package/templates/vn-employee-request/support.js +4 -4
  219. package/templates/vn-exit-handover/support.js +4 -4
  220. package/templates/vn-foreign-employee-pack/support.js +4 -4
  221. package/templates/vn-grassroots-democracy/support.js +4 -4
  222. package/templates/vn-infosec-policy/support.js +4 -4
  223. package/templates/vn-internal-labor-regulations/support.js +4 -4
  224. package/templates/vn-internship-agreement/support.js +4 -4
  225. package/templates/vn-job-description/support.js +4 -4
  226. package/templates/vn-labor-contract/support.js +4 -4
  227. package/templates/vn-labour-management-book/content-schema.json +15 -0
  228. package/templates/vn-labour-management-book/support.js +4 -4
  229. package/templates/vn-mutual-nda/support.js +4 -4
  230. package/templates/vn-ndnca-ip/support.js +4 -4
  231. package/templates/vn-offer-letter/support.js +4 -4
  232. package/templates/vn-onboarding-checklist/support.js +4 -4
  233. package/templates/vn-pdpl-consent/support.js +4 -4
  234. package/templates/vn-performance-evaluation-regulation/support.js +4 -4
  235. package/templates/vn-performance-review-form/support.js +4 -4
  236. package/templates/vn-phantom-stock/support.js +4 -4
  237. package/templates/vn-probation-contract/support.js +4 -4
  238. package/templates/vn-receipt-acknowledgement/content-schema.json +15 -0
  239. package/templates/vn-receipt-acknowledgement/support.js +4 -4
  240. package/templates/vn-remote-work-policy/support.js +4 -4
  241. package/templates/vn-resignation-letter/support.js +4 -4
  242. package/templates/vn-salary-scale/content-schema.json +15 -0
  243. package/templates/vn-salary-scale/support.js +4 -4
  244. package/templates/vn-sow-appendix/support.js +4 -4
  245. package/templates/vn-termination-decision/support.js +4 -4
  246. package/templates/vn-total-rewards-appendix/support.js +4 -4
  247. package/templates/vn-training-commitment/support.js +4 -4
  248. package/templates/vn-travel-expense-policy/support.js +4 -4
  249. package/tokens/element-seeds.json +112 -0
  250. package/tokens/elements.css +274 -187
  251. package/tokens/fonts.css +12 -3
  252. package/tokens/native/CSTokens.kt +84 -68
  253. package/tokens/native/CSTokens.swift +84 -68
  254. package/tokens/native/cs_tokens.dart +84 -68
  255. package/tokens/provenance.json +9 -9
  256. package/tokens/styles.css +15 -0
  257. package/tokens/tokens.dtcg.json +258 -233
  258. package/tokens/tokens.js +168 -167
  259. package/tokens/tokens.json +167 -166
  260. package/tokens/typography.css +9 -1
  261. package/ui_kits/status-hub/README.md +1 -2
  262. package/ui_kits/status-hub/index.html +2 -2
  263. package/ui_kits/status-hub/settings.html +6 -3
  264. package/ui_kits/website/chat.html +2 -2
  265. package/ui_kits/website/index.html +2 -2
  266. package/ui_kits/status-hub/identity-lab.html +0 -134
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "system": "CyberSkill Design System",
4
- "version": "1.0.0",
4
+ "version": "1.1.1",
5
5
  "generated": "2026-07-23",
6
6
  "note": "Generated from tokens/*.css. Root grouped by category; theme/element scopes carry overrides only. Regenerate after any token change (see docs/conventions.md)."
7
7
  },
@@ -53,14 +53,14 @@
53
53
  },
54
54
  "accent": {
55
55
  "--cs-accent": "#F4BA17",
56
- "--cs-accent-strong": "#B98200",
56
+ "--cs-accent-strong": "#A47D17",
57
57
  "--cs-accent-bright": "#F4BA17",
58
58
  "--cs-accent-on": "#45210E",
59
59
  "--cs-accent-tint": "#FBF4E9",
60
60
  "--cs-accent-ink": "#45210E",
61
- "--cs-accent-glow": "rgba(244, 186, 23, 0.5)",
61
+ "--cs-accent-glow": "rgba(244, 186, 23, 0.48)",
62
62
  "--cs-accent-grad-a": "#F4BA17",
63
- "--cs-accent-grad-b": "#C77B4A"
63
+ "--cs-accent-grad-b": "#FCAF91"
64
64
  },
65
65
  "depth": {
66
66
  "--cs-depth-bg": "0",
@@ -137,6 +137,7 @@
137
137
  },
138
138
  "font": {
139
139
  "--cs-font-family-ui": "'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif",
140
+ "--cs-font-family-display": "'Space Grotesk', 'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif",
140
141
  "--cs-font-family-mono": "'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
141
142
  "--cs-font-weight-regular": "400",
142
143
  "--cs-font-weight-medium": "500",
@@ -237,198 +238,198 @@
237
238
  }
238
239
  },
239
240
  "elements": {
241
+ "tho.sand": {
242
+ "--cs-accent": "#F8E9C0",
243
+ "--cs-accent-strong": "#90825E",
244
+ "--cs-accent-bright": "#F6EBCC",
245
+ "--cs-accent-on": "#292414",
246
+ "--cs-accent-tint": "#FBF7EA",
247
+ "--cs-accent-ink": "#292414",
248
+ "--cs-accent-glow": "rgba(248, 233, 192, 0.48)",
249
+ "--cs-accent-grad-a": "#F8E9C0",
250
+ "--cs-accent-grad-b": "#FCAF91",
251
+ "--cs-color-text-accent": "#90825E",
252
+ "--cs-color-link": "#90825E"
253
+ },
240
254
  "tho": {
241
255
  "--cs-accent": "#F4BA17",
242
- "--cs-accent-strong": "#B98200",
256
+ "--cs-accent-strong": "#A47D17",
243
257
  "--cs-accent-bright": "#F4BA17",
244
258
  "--cs-accent-on": "#45210E",
245
259
  "--cs-accent-tint": "#FBF4E9",
246
260
  "--cs-accent-ink": "#45210E",
247
- "--cs-accent-glow": "rgba(244, 186, 23, 0.5)",
261
+ "--cs-accent-glow": "rgba(244, 186, 23, 0.48)",
248
262
  "--cs-accent-grad-a": "#F4BA17",
249
- "--cs-accent-grad-b": "#C77B4A"
263
+ "--cs-accent-grad-b": "#FCAF91"
250
264
  },
251
265
  "tho.clay": {
252
- "--cs-accent": "#C77B4A",
253
- "--cs-accent-strong": "#8F5230",
254
- "--cs-accent-bright": "#EDBF9D",
255
- "--cs-accent-on": "#2E1607",
256
- "--cs-accent-tint": "#F8EDE4",
257
- "--cs-accent-ink": "#2E1607",
258
- "--cs-accent-glow": "rgba(199, 123, 74, 0.5)",
259
- "--cs-accent-grad-a": "#C77B4A",
260
- "--cs-accent-grad-b": "#F4BA17",
261
- "--cs-color-text-accent": "#8F5230",
262
- "--cs-color-link": "#8F5230"
266
+ "--cs-accent": "#513801",
267
+ "--cs-accent-strong": "#201300",
268
+ "--cs-accent-bright": "#DEC7A2",
269
+ "--cs-accent-on": "#2D220E",
270
+ "--cs-accent-tint": "#FFF6E7",
271
+ "--cs-accent-ink": "#2D220E",
272
+ "--cs-accent-glow": "rgba(81, 56, 1, 0.48)",
273
+ "--cs-accent-grad-a": "#513801",
274
+ "--cs-accent-grad-b": "#FCAF91",
275
+ "--cs-color-text-accent": "#201300",
276
+ "--cs-color-link": "#201300"
263
277
  },
264
- "tho.sand": {
265
- "--cs-accent": "#E4C98F",
266
- "--cs-accent-strong": "#A98B4E",
267
- "--cs-accent-bright": "#EFDCB2",
268
- "--cs-accent-on": "#3A2A10",
269
- "--cs-accent-tint": "#FAF3E3",
270
- "--cs-accent-ink": "#3A2A10",
271
- "--cs-accent-glow": "rgba(228, 201, 143, 0.55)",
272
- "--cs-accent-grad-a": "#E4C98F",
278
+ "hoa.plasma": {
279
+ "--cs-accent": "#FFE1D8",
280
+ "--cs-accent-strong": "#967C75",
281
+ "--cs-accent-bright": "#FCE6DF",
282
+ "--cs-accent-on": "#2C211E",
283
+ "--cs-accent-tint": "#FEF4F2",
284
+ "--cs-accent-ink": "#2C211E",
285
+ "--cs-accent-glow": "rgba(255, 225, 216, 0.48)",
286
+ "--cs-accent-grad-a": "#FFE1D8",
273
287
  "--cs-accent-grad-b": "#F4BA17",
274
- "--cs-color-text-accent": "#8A6F3C",
275
- "--cs-color-link": "#8A6F3C"
288
+ "--cs-color-text-accent": "#967C75",
289
+ "--cs-color-link": "#967C75"
276
290
  },
277
291
  "hoa": {
278
- "--cs-accent": "#E0632B",
279
- "--cs-accent-strong": "#A93E14",
280
- "--cs-accent-bright": "#F6A26B",
281
- "--cs-accent-on": "#231007",
282
- "--cs-accent-tint": "#FBEADF",
283
- "--cs-accent-ink": "#231007",
284
- "--cs-accent-glow": "rgba(224, 99, 43, 0.5)",
285
- "--cs-accent-grad-a": "#E0632B",
292
+ "--cs-accent": "#FCAF91",
293
+ "--cs-accent-strong": "#B47054",
294
+ "--cs-accent-bright": "#FED3C3",
295
+ "--cs-accent-on": "#381B10",
296
+ "--cs-accent-tint": "#FFF4F0",
297
+ "--cs-accent-ink": "#381B10",
298
+ "--cs-accent-glow": "rgba(252, 175, 145, 0.48)",
299
+ "--cs-accent-grad-a": "#FCAF91",
286
300
  "--cs-accent-grad-b": "#F4BA17",
287
- "--cs-color-text-accent": "#A93E14",
288
- "--cs-color-link": "#A93E14"
301
+ "--cs-color-text-accent": "#B47054",
302
+ "--cs-color-link": "#B47054"
289
303
  },
290
304
  "hoa.lava": {
291
- "--cs-accent": "#C43D1F",
292
- "--cs-accent-strong": "#7E1F0E",
293
- "--cs-accent-bright": "#F6AC85",
294
- "--cs-accent-on": "#1D0B05",
295
- "--cs-accent-tint": "#FAE5DC",
296
- "--cs-accent-ink": "#1D0B05",
297
- "--cs-accent-glow": "rgba(196, 61, 31, 0.55)",
298
- "--cs-accent-grad-a": "#C43D1F",
299
- "--cs-accent-grad-b": "#E0632B",
300
- "--cs-color-text-accent": "#9B2D14",
301
- "--cs-color-link": "#9B2D14"
305
+ "--cs-accent": "#622B06",
306
+ "--cs-accent-strong": "#280D00",
307
+ "--cs-accent-bright": "#F1BEA4",
308
+ "--cs-accent-on": "#361D0F",
309
+ "--cs-accent-tint": "#FFF4EF",
310
+ "--cs-accent-ink": "#361D0F",
311
+ "--cs-accent-glow": "rgba(98, 43, 6, 0.48)",
312
+ "--cs-accent-grad-a": "#622B06",
313
+ "--cs-accent-grad-b": "#F4BA17",
314
+ "--cs-color-text-accent": "#280D00",
315
+ "--cs-color-link": "#280D00"
302
316
  },
303
- "hoa.plasma": {
304
- "--cs-accent": "#E8506E",
305
- "--cs-accent-strong": "#B02348",
306
- "--cs-accent-bright": "#F7A8B8",
307
- "--cs-accent-on": "#200812",
308
- "--cs-accent-tint": "#FBE6EB",
309
- "--cs-accent-ink": "#200812",
310
- "--cs-accent-glow": "rgba(232, 80, 110, 0.5)",
311
- "--cs-accent-grad-a": "#E8506E",
312
- "--cs-accent-grad-b": "#F08A52",
313
- "--cs-color-text-accent": "#B02348",
314
- "--cs-color-link": "#B02348"
317
+ "thuy.mist": {
318
+ "--cs-accent": "#C0F5FC",
319
+ "--cs-accent-strong": "#5A8A90",
320
+ "--cs-accent-bright": "#CDF4F9",
321
+ "--cs-accent-on": "#13282B",
322
+ "--cs-accent-tint": "#EBFAFC",
323
+ "--cs-accent-ink": "#13282B",
324
+ "--cs-accent-glow": "rgba(192, 245, 252, 0.48)",
325
+ "--cs-accent-grad-a": "#C0F5FC",
326
+ "--cs-accent-grad-b": "#A3D768",
327
+ "--cs-color-text-accent": "#5A8A90",
328
+ "--cs-color-link": "#5A8A90"
315
329
  },
316
330
  "thuy": {
317
- "--cs-accent": "#4E8E9B",
318
- "--cs-accent-strong": "#2F5E6B",
319
- "--cs-accent-bright": "#A6D0DA",
320
- "--cs-accent-on": "#0E1D20",
321
- "--cs-accent-tint": "#E6F1F2",
322
- "--cs-accent-ink": "#0E1D20",
323
- "--cs-accent-glow": "rgba(78, 142, 155, 0.5)",
324
- "--cs-accent-grad-a": "#4E8E9B",
325
- "--cs-accent-grad-b": "#7A9B57",
326
- "--cs-color-text-accent": "#2F5E6B",
327
- "--cs-color-link": "#2F5E6B"
331
+ "--cs-accent": "#2EDBF7",
332
+ "--cs-accent-strong": "#108EA0",
333
+ "--cs-accent-bright": "#99EEFF",
334
+ "--cs-accent-on": "#012A30",
335
+ "--cs-accent-tint": "#E7FBFF",
336
+ "--cs-accent-ink": "#012A30",
337
+ "--cs-accent-glow": "rgba(46, 219, 247, 0.48)",
338
+ "--cs-accent-grad-a": "#2EDBF7",
339
+ "--cs-accent-grad-b": "#A3D768",
340
+ "--cs-color-text-accent": "#108EA0",
341
+ "--cs-color-link": "#108EA0"
328
342
  },
329
343
  "thuy.ocean": {
330
- "--cs-accent": "#2E5E7E",
331
- "--cs-accent-strong": "#1C3E56",
332
- "--cs-accent-bright": "#A9CCE0",
333
- "--cs-accent-on": "#0B161E",
334
- "--cs-accent-tint": "#E4EEF4",
335
- "--cs-accent-ink": "#0B161E",
336
- "--cs-accent-glow": "rgba(46, 94, 126, 0.55)",
337
- "--cs-accent-grad-a": "#2E5E7E",
338
- "--cs-accent-grad-b": "#4E8E9B",
339
- "--cs-color-text-accent": "#1C3E56",
340
- "--cs-color-link": "#1C3E56"
344
+ "--cs-accent": "#004554",
345
+ "--cs-accent-strong": "#011A21",
346
+ "--cs-accent-bright": "#A8D3E0",
347
+ "--cs-accent-on": "#10282F",
348
+ "--cs-accent-tint": "#EAFAFF",
349
+ "--cs-accent-ink": "#10282F",
350
+ "--cs-accent-glow": "rgba(0, 69, 84, 0.48)",
351
+ "--cs-accent-grad-a": "#004554",
352
+ "--cs-accent-grad-b": "#A3D768",
353
+ "--cs-color-text-accent": "#011A21",
354
+ "--cs-color-link": "#011A21"
341
355
  },
342
- "thuy.mist": {
343
- "--cs-accent": "#A7C4C9",
344
- "--cs-accent-strong": "#5E7F85",
345
- "--cs-accent-bright": "#C4DADD",
346
- "--cs-accent-on": "#16262A",
347
- "--cs-accent-tint": "#F0F6F7",
348
- "--cs-accent-ink": "#16262A",
349
- "--cs-accent-glow": "rgba(167, 196, 201, 0.55)",
350
- "--cs-accent-grad-a": "#A7C4C9",
351
- "--cs-accent-grad-b": "#4E8E9B",
352
- "--cs-color-text-accent": "#4A686E",
353
- "--cs-color-link": "#4A686E"
356
+ "moc.bamboo": {
357
+ "--cs-accent": "#E1F1C8",
358
+ "--cs-accent-strong": "#7C8965",
359
+ "--cs-accent-bright": "#E5F1D2",
360
+ "--cs-accent-on": "#212617",
361
+ "--cs-accent-tint": "#F4F9ED",
362
+ "--cs-accent-ink": "#212617",
363
+ "--cs-accent-glow": "rgba(225, 241, 200, 0.48)",
364
+ "--cs-accent-grad-a": "#E1F1C8",
365
+ "--cs-accent-grad-b": "#FCAF91",
366
+ "--cs-color-text-accent": "#7C8965",
367
+ "--cs-color-link": "#7C8965"
354
368
  },
355
369
  "moc": {
356
- "--cs-accent": "#7A9B57",
357
- "--cs-accent-strong": "#4C6B35",
358
- "--cs-accent-bright": "#A9C177",
359
- "--cs-accent-on": "#18200F",
360
- "--cs-accent-tint": "#EEF3E2",
361
- "--cs-accent-ink": "#18200F",
362
- "--cs-accent-glow": "rgba(122, 155, 87, 0.5)",
363
- "--cs-accent-grad-a": "#7A9B57",
364
- "--cs-accent-grad-b": "#E0632B",
365
- "--cs-color-text-accent": "#4C6B35",
366
- "--cs-color-link": "#4C6B35"
367
- },
368
- "moc.bamboo": {
369
- "--cs-accent": "#A9C177",
370
- "--cs-accent-strong": "#6B8442",
371
- "--cs-accent-bright": "#C4D69B",
372
- "--cs-accent-on": "#1C240F",
373
- "--cs-accent-tint": "#F3F7E8",
374
- "--cs-accent-ink": "#1C240F",
375
- "--cs-accent-glow": "rgba(169, 193, 119, 0.55)",
376
- "--cs-accent-grad-a": "#A9C177",
377
- "--cs-accent-grad-b": "#7A9B57",
378
- "--cs-color-text-accent": "#5B7237",
379
- "--cs-color-link": "#5B7237"
370
+ "--cs-accent": "#A3D768",
371
+ "--cs-accent-strong": "#629122",
372
+ "--cs-accent-bright": "#C5ED9C",
373
+ "--cs-accent-on": "#182A00",
374
+ "--cs-accent-tint": "#EFFCE3",
375
+ "--cs-accent-ink": "#182A00",
376
+ "--cs-accent-glow": "rgba(163, 215, 104, 0.48)",
377
+ "--cs-accent-grad-a": "#A3D768",
378
+ "--cs-accent-grad-b": "#FCAF91",
379
+ "--cs-color-text-accent": "#629122",
380
+ "--cs-color-link": "#629122"
380
381
  },
381
382
  "moc.forest": {
382
- "--cs-accent": "#3E5A2E",
383
- "--cs-accent-strong": "#263A1B",
384
- "--cs-accent-bright": "#B3CE9B",
385
- "--cs-accent-on": "#101708",
386
- "--cs-accent-tint": "#E9EFE1",
387
- "--cs-accent-ink": "#101708",
388
- "--cs-accent-glow": "rgba(62, 90, 46, 0.55)",
389
- "--cs-accent-grad-a": "#3E5A2E",
390
- "--cs-accent-grad-b": "#7A9B57",
391
- "--cs-color-text-accent": "#31481F",
392
- "--cs-color-link": "#31481F"
383
+ "--cs-accent": "#1A4A01",
384
+ "--cs-accent-strong": "#051D00",
385
+ "--cs-accent-bright": "#B0D8A3",
386
+ "--cs-accent-on": "#162A0E",
387
+ "--cs-accent-tint": "#ECFDE7",
388
+ "--cs-accent-ink": "#162A0E",
389
+ "--cs-accent-glow": "rgba(26, 74, 1, 0.48)",
390
+ "--cs-accent-grad-a": "#1A4A01",
391
+ "--cs-accent-grad-b": "#FCAF91",
392
+ "--cs-color-text-accent": "#051D00",
393
+ "--cs-color-link": "#051D00"
394
+ },
395
+ "kim.titanium": {
396
+ "--cs-accent": "#FEE5C7",
397
+ "--cs-accent-strong": "#947F65",
398
+ "--cs-accent-bright": "#FBE8D2",
399
+ "--cs-accent-on": "#2B2217",
400
+ "--cs-accent-tint": "#FDF5ED",
401
+ "--cs-accent-ink": "#2B2217",
402
+ "--cs-accent-glow": "rgba(254, 229, 199, 0.48)",
403
+ "--cs-accent-grad-a": "#FEE5C7",
404
+ "--cs-accent-grad-b": "#2EDBF7",
405
+ "--cs-color-text-accent": "#947F65",
406
+ "--cs-color-link": "#947F65"
393
407
  },
394
408
  "kim": {
395
- "--cs-accent": "#BFB29B",
396
- "--cs-accent-strong": "#7E7160",
397
- "--cs-accent-bright": "#D8CCB6",
398
- "--cs-accent-on": "#221C12",
399
- "--cs-accent-tint": "#F3EFE6",
400
- "--cs-accent-ink": "#221C12",
401
- "--cs-accent-glow": "rgba(191, 178, 155, 0.5)",
402
- "--cs-accent-grad-a": "#BFB29B",
403
- "--cs-accent-grad-b": "#4E8E9B",
404
- "--cs-color-text-accent": "#6E6151",
405
- "--cs-color-link": "#6E6151"
409
+ "--cs-accent": "#F3B958",
410
+ "--cs-accent-strong": "#AC780B",
411
+ "--cs-accent-bright": "#FDD89F",
412
+ "--cs-accent-on": "#312002",
413
+ "--cs-accent-tint": "#FFF5E7",
414
+ "--cs-accent-ink": "#312002",
415
+ "--cs-accent-glow": "rgba(243, 185, 88, 0.48)",
416
+ "--cs-accent-grad-a": "#F3B958",
417
+ "--cs-accent-grad-b": "#2EDBF7",
418
+ "--cs-color-text-accent": "#AC780B",
419
+ "--cs-color-link": "#AC780B"
406
420
  },
407
421
  "kim.steel": {
408
- "--cs-accent": "#9FA3A3",
409
- "--cs-accent-strong": "#63696B",
410
- "--cs-accent-bright": "#C2C6C6",
411
- "--cs-accent-on": "#191D1E",
412
- "--cs-accent-tint": "#EFF1F1",
413
- "--cs-accent-ink": "#191D1E",
414
- "--cs-accent-glow": "rgba(159, 163, 163, 0.5)",
415
- "--cs-accent-grad-a": "#9FA3A3",
416
- "--cs-accent-grad-b": "#BFB29B",
417
- "--cs-color-text-accent": "#565C5E",
418
- "--cs-color-link": "#565C5E"
419
- },
420
- "kim.titanium": {
421
- "--cs-accent": "#8A7F72",
422
- "--cs-accent-strong": "#56504A",
423
- "--cs-accent-bright": "#D9CFC0",
424
- "--cs-accent-on": "#171310",
425
- "--cs-accent-tint": "#EFEBE5",
426
- "--cs-accent-ink": "#171310",
427
- "--cs-accent-glow": "rgba(138, 127, 114, 0.5)",
428
- "--cs-accent-grad-a": "#8A7F72",
429
- "--cs-accent-grad-b": "#BFB29B",
430
- "--cs-color-text-accent": "#56504A",
431
- "--cs-color-link": "#56504A"
422
+ "--cs-accent": "#503901",
423
+ "--cs-accent-strong": "#1F1400",
424
+ "--cs-accent-bright": "#DCC8A2",
425
+ "--cs-accent-on": "#2D220E",
426
+ "--cs-accent-tint": "#FEF6E7",
427
+ "--cs-accent-ink": "#2D220E",
428
+ "--cs-accent-glow": "rgba(80, 57, 1, 0.48)",
429
+ "--cs-accent-grad-a": "#503901",
430
+ "--cs-accent-grad-b": "#2EDBF7",
431
+ "--cs-color-text-accent": "#1F1400",
432
+ "--cs-color-link": "#1F1400"
432
433
  }
433
434
  }
434
435
  }
@@ -5,8 +5,16 @@
5
5
  * usage (status hub: 11–24px chrome; hero display larger). Vietnamese-safe
6
6
  * line-heights (body 1.5 / heading 1.35) leave room for stacked diacritics. */
7
7
  :root {
8
- /* Families */
8
+ /* Families.
9
+ * `display` is the opt-in headline face (Space Grotesk, self-hosted 300-700,
10
+ * Vietnamese subset included) used by cyberskill.world / Lumi. Nothing points
11
+ * at it by default: opt a scope in with `--cs-heading-family:
12
+ * var(--cs-font-family-display)` or the `.cs-display-face` utility. Space
13
+ * Grotesk has no 800, so extrabold headings clamp to 700 within that family
14
+ * (CSS does not hop to the next stack family for a missing weight); Be
15
+ * Vietnam Pro in the stack covers glyphs outside Space Grotesk's subsets. */
9
16
  --cs-font-family-ui: 'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif;
17
+ --cs-font-family-display: 'Space Grotesk', 'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif;
10
18
  --cs-font-family-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
11
19
 
12
20
  /* Weights */
@@ -1,6 +1,6 @@
1
1
  # Status Hub — UI kit
2
2
 
3
- A high-fidelity recreation of **CyberSkill Status Hub** (`status-hub@2`): the single-page portfolio dashboard that ships inside the design system repo (`docs/status/`). One page, three lenses.
3
+ A high-fidelity recreation of **CyberSkill Status Hub** (`status-hub@2`): the single-page portfolio dashboard. One page, three lenses. (Gate / Health browsing for operators is Storybook **Status** / `_audit/run.html` — not this kit.)
4
4
 
5
5
  ## What it demonstrates
6
6
  - **Umber header** with the official Logo mark on an Ochre tile, the product title, and a warm-dark theme toggle (`data-theme` on the root — flip it to see the whole surface re-theme).
@@ -28,7 +28,6 @@ A high-fidelity recreation of **CyberSkill Status Hub** (`status-hub@2`): the si
28
28
 
29
29
  - `project.html` — full project detail view: breadcrumb, KPI stats, tasks, `cs-steps`, `cs-timeline`, `cs-dl` (dark toggle).
30
30
 
31
- - `identity-lab.html` — live Theme × Element switching on a product surface (15 element-variant pills · light/dark).
32
31
 
33
32
  - `status.css` — product component styles ported from the real status-hub stylesheet; **tokens come from the design system**, not redeclared.
34
33
 
@@ -9,8 +9,8 @@
9
9
  <link rel="stylesheet" href="../../styles.css" />
10
10
  <link rel="stylesheet" href="status.css" />
11
11
  <style>html,body{margin:0;background:var(--cs-color-surface-page);min-height:100vh}</style>
12
- <script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
13
- <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
12
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react.development.js" integrity="sha384-r22tQd8qRIHDPIkmdXZcVtvPi1Tj2x1QaW2tmFQHEvHscATUnHQ5siTyxWw5PMUs" crossorigin="anonymous"></script>
13
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react-dom.development.js" integrity="sha384-gJZYmumEmwqVmX3JVsLZq+4QrxoPGh/BW47Rk7SqNPCPFpTGnRtvmeRPJ7//ZDPk" crossorigin="anonymous"></script>
14
14
  <script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
15
15
  <script src="data.js"></script>
16
16
  </head>
@@ -59,9 +59,12 @@
59
59
  <section class="panel">
60
60
  <h3 class="sec">Notifications</h3>
61
61
  <p class="hint">We keep it quiet — only what you ask for.</p>
62
- <div class="toggle-row"><div><div class="t">Release notes</div><div class="d">A summary each time a project ships. Bilingual (EN + VN).</div></div><label class="cs-switch"><input type="checkbox" role="switch" checked /><span class="cs-switch__track"></span></label></div>
63
- <div class="toggle-row"><div><div class="t">Blocked-project alerts</div><div class="d">Get pinged when a project moves to Blocked.</div></div><label class="cs-switch"><input type="checkbox" role="switch" checked /><span class="cs-switch__track"></span></label></div>
64
- <div class="toggle-row"><div><div class="t">Weekly velocity digest</div><div class="d">Tasks shipped per week, every Monday morning.</div></div><label class="cs-switch"><input type="checkbox" role="switch" /><span class="cs-switch__track"></span></label></div>
62
+ <div class="cs-scroll-area" style="max-block-size:220px;padding-inline-end:6px" tabindex="0" aria-label="Notification preferences">
63
+ <div class="toggle-row"><div><div class="t">Release notes</div><div class="d">A summary each time a project ships. Bilingual (EN + VN).</div></div><label class="cs-switch"><input type="checkbox" role="switch" checked /><span class="cs-switch__track"></span></label></div>
64
+ <div class="toggle-row"><div><div class="t">Blocked-project alerts</div><div class="d">Get pinged when a project moves to Blocked.</div></div><label class="cs-switch"><input type="checkbox" role="switch" checked /><span class="cs-switch__track"></span></label></div>
65
+ <div class="toggle-row"><div><div class="t">Weekly velocity digest</div><div class="d">Tasks shipped per week, every Monday morning.</div></div><label class="cs-switch"><input type="checkbox" role="switch" /><span class="cs-switch__track"></span></label></div>
66
+ <div class="toggle-row"><div><div class="t">Quiet hours</div><div class="d">No pings between 22:00 and 07:00 local time.</div></div><label class="cs-switch"><input type="checkbox" role="switch" checked /><span class="cs-switch__track"></span></label></div>
67
+ </div>
65
68
  </section>
66
69
 
67
70
  <section class="danger">
@@ -30,8 +30,8 @@
30
30
  .lumi-answer-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
31
31
  @media (max-width: 820px) { .lumi-page { grid-template-columns: 1fr; } .lumi-side { display: none; } }
32
32
  </style>
33
- <script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
34
- <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
33
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react.development.js" integrity="sha384-r22tQd8qRIHDPIkmdXZcVtvPi1Tj2x1QaW2tmFQHEvHscATUnHQ5siTyxWw5PMUs" crossorigin="anonymous"></script>
34
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react-dom.development.js" integrity="sha384-gJZYmumEmwqVmX3JVsLZq+4QrxoPGh/BW47Rk7SqNPCPFpTGnRtvmeRPJ7//ZDPk" crossorigin="anonymous"></script>
35
35
  <script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
36
36
  <script src="../../_ds_bundle.js"></script>
37
37
  </head>
@@ -9,8 +9,8 @@
9
9
  <link rel="stylesheet" href="../../styles.css" />
10
10
  <link rel="stylesheet" href="site.css" />
11
11
  <style>html,body{margin:0}</style>
12
- <script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
13
- <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
12
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react.development.js" integrity="sha384-r22tQd8qRIHDPIkmdXZcVtvPi1Tj2x1QaW2tmFQHEvHscATUnHQ5siTyxWw5PMUs" crossorigin="anonymous"></script>
13
+ <script src="https://unpkg.com/umd-react@19.2.8/dist/react-dom.development.js" integrity="sha384-gJZYmumEmwqVmX3JVsLZq+4QrxoPGh/BW47Rk7SqNPCPFpTGnRtvmeRPJ7//ZDPk" crossorigin="anonymous"></script>
14
14
  <script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
15
15
  <script src="copy.js"></script>
16
16
  </head>