@cyberskill/design 1.0.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 (970) hide show
  1. package/DESIGN.md +267 -0
  2. package/README.md +316 -0
  3. package/SKILL.md +64 -0
  4. package/VERSION +1 -0
  5. package/_ds_bundle.js +5377 -0
  6. package/_ds_manifest.json +1 -0
  7. package/_esm/cs.mjs +137 -0
  8. package/assets/aurora-gold.jpg +0 -0
  9. package/assets/aurora-hoa.png +0 -0
  10. package/assets/aurora-kim.png +0 -0
  11. package/assets/aurora-moc.png +0 -0
  12. package/assets/aurora-thuy.png +0 -0
  13. package/assets/favicon.svg +1 -0
  14. package/assets/logo-mark.png +0 -0
  15. package/assets/logo-mark.svg +10 -0
  16. package/assets/lumi-poster.webp +0 -0
  17. package/assets/og-dashboard.png +0 -0
  18. package/base/a11y.css +57 -0
  19. package/base/ai.css +67 -0
  20. package/base/collections.css +53 -0
  21. package/base/components.css +212 -0
  22. package/base/controls.css +329 -0
  23. package/base/data.css +48 -0
  24. package/base/feedback.css +60 -0
  25. package/base/forms.css +32 -0
  26. package/base/glass.css +119 -0
  27. package/base/interaction.css +50 -0
  28. package/base/navigation.css +39 -0
  29. package/base/reset.css +17 -0
  30. package/base/responsive.css +128 -0
  31. package/base/shell.css +55 -0
  32. package/base/typography.css +14 -0
  33. package/components/_i18n/i18n.js +56 -0
  34. package/components/_i18n/strings.js +187 -0
  35. package/components/_utils/cx.js +4 -0
  36. package/components/ai/AIDisclosureBadge.d.ts +16 -0
  37. package/components/ai/AIDisclosureBadge.figma.tsx +12 -0
  38. package/components/ai/AIDisclosureBadge.jsx +39 -0
  39. package/components/ai/AIDisclosureBadge.prompt.md +9 -0
  40. package/components/ai/ChatMessage.d.ts +17 -0
  41. package/components/ai/ChatMessage.figma.tsx +12 -0
  42. package/components/ai/ChatMessage.jsx +22 -0
  43. package/components/ai/ChatMessage.prompt.md +8 -0
  44. package/components/ai/CitationList.d.ts +13 -0
  45. package/components/ai/CitationList.figma.tsx +12 -0
  46. package/components/ai/CitationList.jsx +22 -0
  47. package/components/ai/CitationList.prompt.md +5 -0
  48. package/components/ai/ConfidenceMeter.d.ts +17 -0
  49. package/components/ai/ConfidenceMeter.figma.tsx +12 -0
  50. package/components/ai/ConfidenceMeter.jsx +43 -0
  51. package/components/ai/ConfidenceMeter.prompt.md +6 -0
  52. package/components/ai/HumanReviewGate.d.ts +20 -0
  53. package/components/ai/HumanReviewGate.figma.tsx +12 -0
  54. package/components/ai/HumanReviewGate.jsx +37 -0
  55. package/components/ai/HumanReviewGate.prompt.md +13 -0
  56. package/components/ai/PromptInput.d.ts +21 -0
  57. package/components/ai/PromptInput.figma.tsx +12 -0
  58. package/components/ai/PromptInput.jsx +48 -0
  59. package/components/ai/PromptInput.prompt.md +5 -0
  60. package/components/ai/PromptSuggestions.d.ts +12 -0
  61. package/components/ai/PromptSuggestions.figma.tsx +12 -0
  62. package/components/ai/PromptSuggestions.jsx +20 -0
  63. package/components/ai/PromptSuggestions.prompt.md +5 -0
  64. package/components/ai/TypingIndicator.d.ts +9 -0
  65. package/components/ai/TypingIndicator.figma.tsx +12 -0
  66. package/components/ai/TypingIndicator.jsx +14 -0
  67. package/components/ai/TypingIndicator.prompt.md +5 -0
  68. package/components/ai/ai-conversation.card.html +49 -0
  69. package/components/ai/ai-lumi.card.html +39 -0
  70. package/components/ai/ai.card.html +43 -0
  71. package/components/brand/LumiAvatar.d.ts +14 -0
  72. package/components/brand/LumiAvatar.figma.tsx +12 -0
  73. package/components/brand/LumiAvatar.jsx +11 -0
  74. package/components/brand/LumiAvatar.prompt.md +5 -0
  75. package/components/brand/brand.card.html +37 -0
  76. package/components/button/Button.d.ts +24 -0
  77. package/components/button/Button.figma.tsx +31 -0
  78. package/components/button/Button.jsx +42 -0
  79. package/components/button/Button.prompt.md +12 -0
  80. package/components/button/ButtonGroup.d.ts +11 -0
  81. package/components/button/ButtonGroup.figma.tsx +12 -0
  82. package/components/button/ButtonGroup.jsx +7 -0
  83. package/components/button/ButtonGroup.prompt.md +8 -0
  84. package/components/button/FloatingActionButton.d.ts +15 -0
  85. package/components/button/FloatingActionButton.figma.tsx +12 -0
  86. package/components/button/FloatingActionButton.jsx +20 -0
  87. package/components/button/FloatingActionButton.prompt.md +6 -0
  88. package/components/button/buttons.card.html +52 -0
  89. package/components/data/Accordion.d.ts +14 -0
  90. package/components/data/Accordion.figma.tsx +12 -0
  91. package/components/data/Accordion.jsx +25 -0
  92. package/components/data/Accordion.prompt.md +5 -0
  93. package/components/data/Avatar.d.ts +18 -0
  94. package/components/data/Avatar.figma.tsx +12 -0
  95. package/components/data/Avatar.jsx +17 -0
  96. package/components/data/Avatar.prompt.md +6 -0
  97. package/components/data/Card.d.ts +23 -0
  98. package/components/data/Card.figma.tsx +12 -0
  99. package/components/data/Card.jsx +27 -0
  100. package/components/data/Card.prompt.md +9 -0
  101. package/components/data/Carousel.d.ts +13 -0
  102. package/components/data/Carousel.figma.tsx +12 -0
  103. package/components/data/Carousel.jsx +26 -0
  104. package/components/data/Carousel.prompt.md +5 -0
  105. package/components/data/Chart.d.ts +17 -0
  106. package/components/data/Chart.figma.tsx +12 -0
  107. package/components/data/Chart.jsx +52 -0
  108. package/components/data/Chart.prompt.md +5 -0
  109. package/components/data/CodeBlock.d.ts +12 -0
  110. package/components/data/CodeBlock.figma.tsx +12 -0
  111. package/components/data/CodeBlock.jsx +21 -0
  112. package/components/data/CodeBlock.prompt.md +5 -0
  113. package/components/data/Comment.d.ts +18 -0
  114. package/components/data/Comment.figma.tsx +12 -0
  115. package/components/data/Comment.jsx +24 -0
  116. package/components/data/Comment.prompt.md +7 -0
  117. package/components/data/DescriptionList.d.ts +10 -0
  118. package/components/data/DescriptionList.figma.tsx +12 -0
  119. package/components/data/DescriptionList.jsx +16 -0
  120. package/components/data/DescriptionList.prompt.md +5 -0
  121. package/components/data/Divider.d.ts +13 -0
  122. package/components/data/Divider.figma.tsx +12 -0
  123. package/components/data/Divider.jsx +11 -0
  124. package/components/data/Divider.prompt.md +6 -0
  125. package/components/data/Image.d.ts +18 -0
  126. package/components/data/Image.figma.tsx +12 -0
  127. package/components/data/Image.jsx +37 -0
  128. package/components/data/Image.prompt.md +5 -0
  129. package/components/data/Kbd.d.ts +8 -0
  130. package/components/data/Kbd.figma.tsx +12 -0
  131. package/components/data/Kbd.jsx +7 -0
  132. package/components/data/Kbd.prompt.md +5 -0
  133. package/components/data/List.d.ts +16 -0
  134. package/components/data/List.figma.tsx +12 -0
  135. package/components/data/List.jsx +24 -0
  136. package/components/data/List.prompt.md +7 -0
  137. package/components/data/Masonry.d.ts +13 -0
  138. package/components/data/Masonry.figma.tsx +12 -0
  139. package/components/data/Masonry.jsx +11 -0
  140. package/components/data/Masonry.prompt.md +5 -0
  141. package/components/data/QRCode.d.ts +12 -0
  142. package/components/data/QRCode.figma.tsx +12 -0
  143. package/components/data/QRCode.jsx +17 -0
  144. package/components/data/QRCode.prompt.md +5 -0
  145. package/components/data/Sortable.d.ts +10 -0
  146. package/components/data/Sortable.figma.tsx +12 -0
  147. package/components/data/Sortable.jsx +30 -0
  148. package/components/data/Sortable.prompt.md +5 -0
  149. package/components/data/Splitter.d.ts +16 -0
  150. package/components/data/Splitter.figma.tsx +12 -0
  151. package/components/data/Splitter.jsx +31 -0
  152. package/components/data/Splitter.prompt.md +5 -0
  153. package/components/data/Stat.d.ts +15 -0
  154. package/components/data/Stat.figma.tsx +12 -0
  155. package/components/data/Stat.jsx +19 -0
  156. package/components/data/Stat.prompt.md +5 -0
  157. package/components/data/Terminal.d.ts +13 -0
  158. package/components/data/Terminal.figma.tsx +12 -0
  159. package/components/data/Terminal.jsx +32 -0
  160. package/components/data/Terminal.prompt.md +5 -0
  161. package/components/data/Timeline.d.ts +17 -0
  162. package/components/data/Timeline.figma.tsx +12 -0
  163. package/components/data/Timeline.jsx +20 -0
  164. package/components/data/Timeline.prompt.md +8 -0
  165. package/components/data/Tooltip.d.ts +14 -0
  166. package/components/data/Tooltip.figma.tsx +12 -0
  167. package/components/data/Tooltip.jsx +12 -0
  168. package/components/data/Tooltip.prompt.md +5 -0
  169. package/components/data/Tree.d.ts +13 -0
  170. package/components/data/Tree.figma.tsx +12 -0
  171. package/components/data/Tree.jsx +23 -0
  172. package/components/data/Tree.prompt.md +5 -0
  173. package/components/data/Watermark.d.ts +15 -0
  174. package/components/data/Watermark.figma.tsx +12 -0
  175. package/components/data/Watermark.jsx +15 -0
  176. package/components/data/Watermark.prompt.md +5 -0
  177. package/components/data/collections.card.html +52 -0
  178. package/components/data/data.card.html +50 -0
  179. package/components/data/qr-encode.js +80 -0
  180. package/components/datatable/DataGrid.d.ts +42 -0
  181. package/components/datatable/DataGrid.figma.tsx +12 -0
  182. package/components/datatable/DataGrid.jsx +149 -0
  183. package/components/datatable/DataGrid.prompt.md +12 -0
  184. package/components/datatable/DataTable.d.ts +25 -0
  185. package/components/datatable/DataTable.figma.tsx +12 -0
  186. package/components/datatable/DataTable.jsx +42 -0
  187. package/components/datatable/DataTable.prompt.md +15 -0
  188. package/components/datatable/TreeTable.d.ts +14 -0
  189. package/components/datatable/TreeTable.figma.tsx +12 -0
  190. package/components/datatable/TreeTable.jsx +47 -0
  191. package/components/datatable/TreeTable.prompt.md +6 -0
  192. package/components/datatable/datatable.card.html +51 -0
  193. package/components/dialog/Dialog.d.ts +22 -0
  194. package/components/dialog/Dialog.figma.tsx +12 -0
  195. package/components/dialog/Dialog.jsx +99 -0
  196. package/components/dialog/Dialog.prompt.md +17 -0
  197. package/components/dialog/dialog.card.html +46 -0
  198. package/components/feedback/Alert.d.ts +16 -0
  199. package/components/feedback/Alert.figma.tsx +17 -0
  200. package/components/feedback/Alert.jsx +29 -0
  201. package/components/feedback/Alert.prompt.md +6 -0
  202. package/components/feedback/Badge.d.ts +15 -0
  203. package/components/feedback/Badge.figma.tsx +12 -0
  204. package/components/feedback/Badge.jsx +12 -0
  205. package/components/feedback/Badge.prompt.md +6 -0
  206. package/components/feedback/EmptyState.d.ts +13 -0
  207. package/components/feedback/EmptyState.figma.tsx +12 -0
  208. package/components/feedback/EmptyState.jsx +16 -0
  209. package/components/feedback/EmptyState.prompt.md +7 -0
  210. package/components/feedback/ProgressBar.d.ts +15 -0
  211. package/components/feedback/ProgressBar.figma.tsx +12 -0
  212. package/components/feedback/ProgressBar.jsx +13 -0
  213. package/components/feedback/ProgressBar.prompt.md +5 -0
  214. package/components/feedback/Result.d.ts +15 -0
  215. package/components/feedback/Result.figma.tsx +12 -0
  216. package/components/feedback/Result.jsx +24 -0
  217. package/components/feedback/Result.prompt.md +7 -0
  218. package/components/feedback/Skeleton.d.ts +18 -0
  219. package/components/feedback/Skeleton.figma.tsx +12 -0
  220. package/components/feedback/Skeleton.jsx +22 -0
  221. package/components/feedback/Skeleton.prompt.md +6 -0
  222. package/components/feedback/Spinner.d.ts +11 -0
  223. package/components/feedback/Spinner.figma.tsx +12 -0
  224. package/components/feedback/Spinner.jsx +10 -0
  225. package/components/feedback/Spinner.prompt.md +5 -0
  226. package/components/feedback/StatusIndicator.d.ts +11 -0
  227. package/components/feedback/StatusIndicator.figma.tsx +12 -0
  228. package/components/feedback/StatusIndicator.jsx +12 -0
  229. package/components/feedback/StatusIndicator.prompt.md +5 -0
  230. package/components/feedback/Tag.d.ts +14 -0
  231. package/components/feedback/Tag.figma.tsx +12 -0
  232. package/components/feedback/Tag.jsx +19 -0
  233. package/components/feedback/Tag.prompt.md +6 -0
  234. package/components/feedback/Toast.d.ts +19 -0
  235. package/components/feedback/Toast.figma.tsx +12 -0
  236. package/components/feedback/Toast.jsx +30 -0
  237. package/components/feedback/Toast.prompt.md +7 -0
  238. package/components/feedback/feedback-2.card.html +43 -0
  239. package/components/feedback/feedback.card.html +50 -0
  240. package/components/forms/Calendar.d.ts +10 -0
  241. package/components/forms/Calendar.figma.tsx +12 -0
  242. package/components/forms/Calendar.jsx +43 -0
  243. package/components/forms/Calendar.prompt.md +5 -0
  244. package/components/forms/Cascader.d.ts +17 -0
  245. package/components/forms/Cascader.figma.tsx +12 -0
  246. package/components/forms/Cascader.jsx +58 -0
  247. package/components/forms/Cascader.prompt.md +5 -0
  248. package/components/forms/Checkbox.d.ts +13 -0
  249. package/components/forms/Checkbox.figma.tsx +12 -0
  250. package/components/forms/Checkbox.jsx +16 -0
  251. package/components/forms/Checkbox.prompt.md +6 -0
  252. package/components/forms/ColorPicker.d.ts +12 -0
  253. package/components/forms/ColorPicker.figma.tsx +12 -0
  254. package/components/forms/ColorPicker.jsx +44 -0
  255. package/components/forms/ColorPicker.prompt.md +5 -0
  256. package/components/forms/Combobox.d.ts +17 -0
  257. package/components/forms/Combobox.figma.tsx +12 -0
  258. package/components/forms/Combobox.jsx +49 -0
  259. package/components/forms/Combobox.prompt.md +6 -0
  260. package/components/forms/DatePicker.d.ts +15 -0
  261. package/components/forms/DatePicker.figma.tsx +12 -0
  262. package/components/forms/DatePicker.jsx +35 -0
  263. package/components/forms/DatePicker.prompt.md +5 -0
  264. package/components/forms/Editor.d.ts +12 -0
  265. package/components/forms/Editor.figma.tsx +12 -0
  266. package/components/forms/Editor.jsx +26 -0
  267. package/components/forms/Editor.prompt.md +5 -0
  268. package/components/forms/FileUpload.d.ts +14 -0
  269. package/components/forms/FileUpload.figma.tsx +12 -0
  270. package/components/forms/FileUpload.jsx +29 -0
  271. package/components/forms/FileUpload.prompt.md +5 -0
  272. package/components/forms/Form.d.ts +87 -0
  273. package/components/forms/Form.figma.tsx +12 -0
  274. package/components/forms/Form.jsx +316 -0
  275. package/components/forms/Form.prompt.md +46 -0
  276. package/components/forms/InlineEdit.d.ts +13 -0
  277. package/components/forms/InlineEdit.figma.tsx +12 -0
  278. package/components/forms/InlineEdit.jsx +27 -0
  279. package/components/forms/InlineEdit.prompt.md +5 -0
  280. package/components/forms/InputGroup.d.ts +20 -0
  281. package/components/forms/InputGroup.figma.tsx +12 -0
  282. package/components/forms/InputGroup.jsx +25 -0
  283. package/components/forms/InputGroup.prompt.md +6 -0
  284. package/components/forms/InputOTP.d.ts +16 -0
  285. package/components/forms/InputOTP.figma.tsx +12 -0
  286. package/components/forms/InputOTP.jsx +47 -0
  287. package/components/forms/InputOTP.prompt.md +5 -0
  288. package/components/forms/Mentions.d.ts +13 -0
  289. package/components/forms/Mentions.figma.tsx +12 -0
  290. package/components/forms/Mentions.jsx +31 -0
  291. package/components/forms/Mentions.prompt.md +5 -0
  292. package/components/forms/NumberField.d.ts +14 -0
  293. package/components/forms/NumberField.figma.tsx +12 -0
  294. package/components/forms/NumberField.jsx +21 -0
  295. package/components/forms/NumberField.prompt.md +5 -0
  296. package/components/forms/RadioGroup.d.ts +24 -0
  297. package/components/forms/RadioGroup.figma.tsx +12 -0
  298. package/components/forms/RadioGroup.jsx +32 -0
  299. package/components/forms/RadioGroup.prompt.md +6 -0
  300. package/components/forms/Rating.d.ts +16 -0
  301. package/components/forms/Rating.figma.tsx +12 -0
  302. package/components/forms/Rating.jsx +22 -0
  303. package/components/forms/Rating.prompt.md +6 -0
  304. package/components/forms/SearchField.d.ts +11 -0
  305. package/components/forms/SearchField.figma.tsx +12 -0
  306. package/components/forms/SearchField.jsx +25 -0
  307. package/components/forms/SearchField.prompt.md +5 -0
  308. package/components/forms/SegmentedControl.d.ts +13 -0
  309. package/components/forms/SegmentedControl.figma.tsx +12 -0
  310. package/components/forms/SegmentedControl.jsx +31 -0
  311. package/components/forms/SegmentedControl.prompt.md +6 -0
  312. package/components/forms/Select.d.ts +19 -0
  313. package/components/forms/Select.figma.tsx +12 -0
  314. package/components/forms/Select.jsx +27 -0
  315. package/components/forms/Select.prompt.md +6 -0
  316. package/components/forms/Slider.d.ts +6 -0
  317. package/components/forms/Slider.figma.tsx +12 -0
  318. package/components/forms/Slider.jsx +8 -0
  319. package/components/forms/Slider.prompt.md +5 -0
  320. package/components/forms/Switch.d.ts +12 -0
  321. package/components/forms/Switch.figma.tsx +12 -0
  322. package/components/forms/Switch.jsx +14 -0
  323. package/components/forms/Switch.prompt.md +5 -0
  324. package/components/forms/TagInput.d.ts +16 -0
  325. package/components/forms/TagInput.figma.tsx +12 -0
  326. package/components/forms/TagInput.jsx +39 -0
  327. package/components/forms/TagInput.prompt.md +5 -0
  328. package/components/forms/Textarea.d.ts +14 -0
  329. package/components/forms/Textarea.figma.tsx +12 -0
  330. package/components/forms/Textarea.jsx +19 -0
  331. package/components/forms/Textarea.prompt.md +5 -0
  332. package/components/forms/TimePicker.d.ts +16 -0
  333. package/components/forms/TimePicker.figma.tsx +12 -0
  334. package/components/forms/TimePicker.jsx +22 -0
  335. package/components/forms/TimePicker.prompt.md +5 -0
  336. package/components/forms/Toggle.d.ts +16 -0
  337. package/components/forms/Toggle.figma.tsx +12 -0
  338. package/components/forms/Toggle.jsx +15 -0
  339. package/components/forms/Toggle.prompt.md +6 -0
  340. package/components/forms/Transfer.d.ts +14 -0
  341. package/components/forms/Transfer.figma.tsx +12 -0
  342. package/components/forms/Transfer.jsx +41 -0
  343. package/components/forms/Transfer.prompt.md +5 -0
  344. package/components/forms/TreeSelect.d.ts +15 -0
  345. package/components/forms/TreeSelect.figma.tsx +12 -0
  346. package/components/forms/TreeSelect.jsx +35 -0
  347. package/components/forms/TreeSelect.prompt.md +5 -0
  348. package/components/forms/forms-2.card.html +40 -0
  349. package/components/forms/forms.card.html +40 -0
  350. package/components/icon/Icon.d.ts +26 -0
  351. package/components/icon/Icon.figma.tsx +12 -0
  352. package/components/icon/Icon.jsx +74 -0
  353. package/components/icon/Icon.prompt.md +8 -0
  354. package/components/icon/icon.card.html +38 -0
  355. package/components/logo/Logo.d.ts +18 -0
  356. package/components/logo/Logo.figma.tsx +12 -0
  357. package/components/logo/Logo.jsx +25 -0
  358. package/components/logo/Logo.prompt.md +10 -0
  359. package/components/logo/logo-data.js +214 -0
  360. package/components/logo/logo.card.html +44 -0
  361. package/components/navigation/Anchor.d.ts +11 -0
  362. package/components/navigation/Anchor.figma.tsx +12 -0
  363. package/components/navigation/Anchor.jsx +25 -0
  364. package/components/navigation/Anchor.prompt.md +5 -0
  365. package/components/navigation/BackTop.d.ts +9 -0
  366. package/components/navigation/BackTop.figma.tsx +12 -0
  367. package/components/navigation/BackTop.jsx +23 -0
  368. package/components/navigation/BackTop.prompt.md +5 -0
  369. package/components/navigation/Breadcrumb.d.ts +14 -0
  370. package/components/navigation/Breadcrumb.figma.tsx +12 -0
  371. package/components/navigation/Breadcrumb.jsx +24 -0
  372. package/components/navigation/Breadcrumb.prompt.md +5 -0
  373. package/components/navigation/CommandPalette.d.ts +19 -0
  374. package/components/navigation/CommandPalette.figma.tsx +12 -0
  375. package/components/navigation/CommandPalette.jsx +48 -0
  376. package/components/navigation/CommandPalette.prompt.md +7 -0
  377. package/components/navigation/Dock.d.ts +6 -0
  378. package/components/navigation/Dock.figma.tsx +12 -0
  379. package/components/navigation/Dock.jsx +22 -0
  380. package/components/navigation/Dock.prompt.md +5 -0
  381. package/components/navigation/HotKeys.d.ts +13 -0
  382. package/components/navigation/HotKeys.figma.tsx +12 -0
  383. package/components/navigation/HotKeys.jsx +44 -0
  384. package/components/navigation/HotKeys.prompt.md +5 -0
  385. package/components/navigation/Link.d.ts +12 -0
  386. package/components/navigation/Link.figma.tsx +12 -0
  387. package/components/navigation/Link.jsx +13 -0
  388. package/components/navigation/Link.prompt.md +5 -0
  389. package/components/navigation/Menu.d.ts +23 -0
  390. package/components/navigation/Menu.figma.tsx +12 -0
  391. package/components/navigation/Menu.jsx +36 -0
  392. package/components/navigation/Menu.prompt.md +9 -0
  393. package/components/navigation/Menubar.d.ts +7 -0
  394. package/components/navigation/Menubar.figma.tsx +12 -0
  395. package/components/navigation/Menubar.jsx +48 -0
  396. package/components/navigation/Menubar.prompt.md +5 -0
  397. package/components/navigation/NavigationMenu.d.ts +7 -0
  398. package/components/navigation/NavigationMenu.figma.tsx +12 -0
  399. package/components/navigation/NavigationMenu.jsx +38 -0
  400. package/components/navigation/NavigationMenu.prompt.md +5 -0
  401. package/components/navigation/Pagination.d.ts +13 -0
  402. package/components/navigation/Pagination.figma.tsx +12 -0
  403. package/components/navigation/Pagination.jsx +32 -0
  404. package/components/navigation/Pagination.prompt.md +5 -0
  405. package/components/navigation/Sidebar.d.ts +20 -0
  406. package/components/navigation/Sidebar.figma.tsx +12 -0
  407. package/components/navigation/Sidebar.jsx +24 -0
  408. package/components/navigation/Sidebar.prompt.md +8 -0
  409. package/components/navigation/Steps.d.ts +13 -0
  410. package/components/navigation/Steps.figma.tsx +12 -0
  411. package/components/navigation/Steps.jsx +20 -0
  412. package/components/navigation/Steps.prompt.md +5 -0
  413. package/components/navigation/Tabs.d.ts +21 -0
  414. package/components/navigation/Tabs.figma.tsx +12 -0
  415. package/components/navigation/Tabs.jsx +41 -0
  416. package/components/navigation/Tabs.prompt.md +6 -0
  417. package/components/navigation/Toolbar.d.ts +16 -0
  418. package/components/navigation/Toolbar.figma.tsx +12 -0
  419. package/components/navigation/Toolbar.jsx +32 -0
  420. package/components/navigation/Toolbar.prompt.md +5 -0
  421. package/components/navigation/navigation.card.html +51 -0
  422. package/components/navigation/shell.card.html +52 -0
  423. package/components/overlays/ContextMenu.d.ts +10 -0
  424. package/components/overlays/ContextMenu.figma.tsx +12 -0
  425. package/components/overlays/ContextMenu.jsx +28 -0
  426. package/components/overlays/ContextMenu.prompt.md +7 -0
  427. package/components/overlays/Drawer.d.ts +18 -0
  428. package/components/overlays/Drawer.figma.tsx +12 -0
  429. package/components/overlays/Drawer.jsx +44 -0
  430. package/components/overlays/Drawer.prompt.md +8 -0
  431. package/components/overlays/HoverCard.d.ts +13 -0
  432. package/components/overlays/HoverCard.figma.tsx +12 -0
  433. package/components/overlays/HoverCard.jsx +17 -0
  434. package/components/overlays/HoverCard.prompt.md +5 -0
  435. package/components/overlays/Popconfirm.d.ts +18 -0
  436. package/components/overlays/Popconfirm.figma.tsx +12 -0
  437. package/components/overlays/Popconfirm.jsx +33 -0
  438. package/components/overlays/Popconfirm.prompt.md +6 -0
  439. package/components/overlays/Popover.d.ts +17 -0
  440. package/components/overlays/Popover.figma.tsx +12 -0
  441. package/components/overlays/Popover.jsx +24 -0
  442. package/components/overlays/Popover.prompt.md +7 -0
  443. package/components/overlays/Tour.d.ts +13 -0
  444. package/components/overlays/Tour.figma.tsx +12 -0
  445. package/components/overlays/Tour.jsx +46 -0
  446. package/components/overlays/Tour.prompt.md +5 -0
  447. package/components/overlays/overlays.card.html +50 -0
  448. package/components/textfield/TextField.d.ts +18 -0
  449. package/components/textfield/TextField.figma.tsx +14 -0
  450. package/components/textfield/TextField.jsx +44 -0
  451. package/components/textfield/TextField.prompt.md +11 -0
  452. package/components/textfield/textfield.card.html +34 -0
  453. package/docs/ci-cd.md +84 -0
  454. package/docs/consuming.md +109 -0
  455. package/docs/contrast-report.md +125 -0
  456. package/docs/conventions.md +114 -0
  457. package/docs/decisions.md +94 -0
  458. package/docs/deploy.md +110 -0
  459. package/docs/design-styles.md +25 -0
  460. package/docs/figma.md +119 -0
  461. package/docs/live-hub.md +58 -0
  462. package/docs/products.md +26 -0
  463. package/docs/quality-gates.md +94 -0
  464. package/docs/release-notes.md +31 -0
  465. package/docs/storybook.md +56 -0
  466. package/docs/sync.md +48 -0
  467. package/docs/template-schema-v2.md +36 -0
  468. package/docs/vi/ci-cd.md +84 -0
  469. package/docs/vi/consuming.md +109 -0
  470. package/docs/vi/contrast-report.md +125 -0
  471. package/docs/vi/conventions.md +114 -0
  472. package/docs/vi/decisions.md +94 -0
  473. package/docs/vi/deploy.md +110 -0
  474. package/docs/vi/design-styles.md +25 -0
  475. package/docs/vi/figma.md +119 -0
  476. package/docs/vi/live-hub.md +58 -0
  477. package/docs/vi/products.md +26 -0
  478. package/docs/vi/quality-gates.md +94 -0
  479. package/docs/vi/release-notes.md +31 -0
  480. package/docs/vi/storybook.md +56 -0
  481. package/docs/vi/sync.md +48 -0
  482. package/docs/vi/template-schema-v2.md +36 -0
  483. package/docs/viewer.html +230 -0
  484. package/fonts/bevietnampro-300-latin-ext.woff2 +0 -0
  485. package/fonts/bevietnampro-300-latin.woff2 +0 -0
  486. package/fonts/bevietnampro-300-vietnamese.woff2 +0 -0
  487. package/fonts/bevietnampro-400-latin-ext.woff2 +0 -0
  488. package/fonts/bevietnampro-400-latin.woff2 +0 -0
  489. package/fonts/bevietnampro-400-vietnamese.woff2 +0 -0
  490. package/fonts/bevietnampro-400i-latin-ext.woff2 +0 -0
  491. package/fonts/bevietnampro-400i-latin.woff2 +0 -0
  492. package/fonts/bevietnampro-400i-vietnamese.woff2 +0 -0
  493. package/fonts/bevietnampro-500-latin-ext.woff2 +0 -0
  494. package/fonts/bevietnampro-500-latin.woff2 +0 -0
  495. package/fonts/bevietnampro-500-vietnamese.woff2 +0 -0
  496. package/fonts/bevietnampro-600-latin-ext.woff2 +0 -0
  497. package/fonts/bevietnampro-600-latin.woff2 +0 -0
  498. package/fonts/bevietnampro-600-vietnamese.woff2 +0 -0
  499. package/fonts/bevietnampro-600i-latin-ext.woff2 +0 -0
  500. package/fonts/bevietnampro-600i-latin.woff2 +0 -0
  501. package/fonts/bevietnampro-600i-vietnamese.woff2 +0 -0
  502. package/fonts/bevietnampro-700-latin-ext.woff2 +0 -0
  503. package/fonts/bevietnampro-700-latin.woff2 +0 -0
  504. package/fonts/bevietnampro-700-vietnamese.woff2 +0 -0
  505. package/fonts/bevietnampro-800-latin-ext.woff2 +0 -0
  506. package/fonts/bevietnampro-800-latin.woff2 +0 -0
  507. package/fonts/bevietnampro-800-vietnamese.woff2 +0 -0
  508. package/fonts/jetbrainsmono-400-cyrillic-ext.woff2 +0 -0
  509. package/fonts/jetbrainsmono-400-cyrillic.woff2 +0 -0
  510. package/fonts/jetbrainsmono-400-greek.woff2 +0 -0
  511. package/fonts/jetbrainsmono-400-latin-ext.woff2 +0 -0
  512. package/fonts/jetbrainsmono-400-latin.woff2 +0 -0
  513. package/fonts/jetbrainsmono-400-vietnamese.woff2 +0 -0
  514. package/fonts/jetbrainsmono-500-cyrillic-ext.woff2 +0 -0
  515. package/fonts/jetbrainsmono-500-cyrillic.woff2 +0 -0
  516. package/fonts/jetbrainsmono-500-greek.woff2 +0 -0
  517. package/fonts/jetbrainsmono-500-latin-ext.woff2 +0 -0
  518. package/fonts/jetbrainsmono-500-latin.woff2 +0 -0
  519. package/fonts/jetbrainsmono-500-vietnamese.woff2 +0 -0
  520. package/fonts/jetbrainsmono-700-cyrillic-ext.woff2 +0 -0
  521. package/fonts/jetbrainsmono-700-cyrillic.woff2 +0 -0
  522. package/fonts/jetbrainsmono-700-greek.woff2 +0 -0
  523. package/fonts/jetbrainsmono-700-latin-ext.woff2 +0 -0
  524. package/fonts/jetbrainsmono-700-latin.woff2 +0 -0
  525. package/fonts/jetbrainsmono-700-vietnamese.woff2 +0 -0
  526. package/guidelines/atomic-view.html +497 -0
  527. package/guidelines/brand-iconography.html +51 -0
  528. package/guidelines/brand-imagery.html +23 -0
  529. package/guidelines/brand-interaction.html +24 -0
  530. package/guidelines/brand-voice.html +24 -0
  531. package/guidelines/colors-anchors.html +20 -0
  532. package/guidelines/colors-semantic.html +19 -0
  533. package/guidelines/colors-surfaces.html +19 -0
  534. package/guidelines/colors-text.html +20 -0
  535. package/guidelines/documents.html +43 -0
  536. package/guidelines/elements-components.html +27 -0
  537. package/guidelines/elements-concept.html +48 -0
  538. package/guidelines/elements-variants.html +49 -0
  539. package/guidelines/motion-interaction.html +29 -0
  540. package/guidelines/motion.html +53 -0
  541. package/guidelines/nav-model.cjs +113 -0
  542. package/guidelines/responsive-bilingual.html +75 -0
  543. package/guidelines/rtl-preview.html +115 -0
  544. package/guidelines/spacing-breakpoints.html +20 -0
  545. package/guidelines/spacing-radius.html +19 -0
  546. package/guidelines/spacing-scale.html +21 -0
  547. package/guidelines/surfaces-aurora.html +20 -0
  548. package/guidelines/surfaces-depth.html +27 -0
  549. package/guidelines/surfaces-glass.html +21 -0
  550. package/guidelines/surfaces-shadow.html +20 -0
  551. package/guidelines/type-families.html +25 -0
  552. package/guidelines/type-lineheight.html +16 -0
  553. package/guidelines/type-scale.html +21 -0
  554. package/guidelines/type-weights.html +20 -0
  555. package/llms.txt +70 -0
  556. package/package.json +88 -0
  557. package/styles.css +39 -0
  558. package/templates/_vendor/deck-stage.js +2584 -0
  559. package/templates/ai-cluster-demo.html +46 -0
  560. package/templates/app-shell/.thumbnail +0 -0
  561. package/templates/app-shell/AppShell.dc.html +80 -0
  562. package/templates/app-shell/content-schema.json +114 -0
  563. package/templates/app-shell/ds-base.js +23 -0
  564. package/templates/app-shell/support.js +1841 -0
  565. package/templates/article/.thumbnail +0 -0
  566. package/templates/article/Article.dc.html +67 -0
  567. package/templates/article/content-schema.json +80 -0
  568. package/templates/article/ds-base.js +23 -0
  569. package/templates/article/support.js +1841 -0
  570. package/templates/auth/.thumbnail +0 -0
  571. package/templates/auth/Auth.dc.html +72 -0
  572. package/templates/auth/content-schema.json +74 -0
  573. package/templates/auth/ds-base.js +23 -0
  574. package/templates/auth/support.js +1841 -0
  575. package/templates/bod-deck/.thumbnail +0 -0
  576. package/templates/bod-deck/BodDeck.dc.html +106 -0
  577. package/templates/bod-deck/content-schema.json +171 -0
  578. package/templates/bod-deck/ds-base.js +23 -0
  579. package/templates/bod-deck/support.js +1841 -0
  580. package/templates/bod-investor-update/.thumbnail +0 -0
  581. package/templates/bod-investor-update/BodInvestorUpdate.dc.html +81 -0
  582. package/templates/bod-investor-update/content-schema.json +105 -0
  583. package/templates/bod-investor-update/ds-base.js +23 -0
  584. package/templates/bod-investor-update/support.js +1841 -0
  585. package/templates/bod-memo/.thumbnail +0 -0
  586. package/templates/bod-memo/BodMemo.dc.html +87 -0
  587. package/templates/bod-memo/ds-base.js +23 -0
  588. package/templates/bod-memo/support.js +1841 -0
  589. package/templates/bod-minutes/.thumbnail +0 -0
  590. package/templates/bod-minutes/BodMinutes.dc.html +84 -0
  591. package/templates/bod-minutes/ds-base.js +23 -0
  592. package/templates/bod-minutes/support.js +1841 -0
  593. package/templates/bod-report/.thumbnail +0 -0
  594. package/templates/bod-report/BodReport.dc.html +106 -0
  595. package/templates/bod-report/content-schema.json +29 -0
  596. package/templates/bod-report/ds-base.js +23 -0
  597. package/templates/bod-report/support.js +1841 -0
  598. package/templates/bod-resolution/.thumbnail +0 -0
  599. package/templates/bod-resolution/BodResolution.dc.html +87 -0
  600. package/templates/bod-resolution/content-schema.json +123 -0
  601. package/templates/bod-resolution/ds-base.js +23 -0
  602. package/templates/bod-resolution/support.js +1841 -0
  603. package/templates/culture-event-invite/.thumbnail +0 -0
  604. package/templates/culture-event-invite/CultureEventInvite.dc.html +73 -0
  605. package/templates/culture-event-invite/ds-base.js +23 -0
  606. package/templates/culture-event-invite/support.js +1841 -0
  607. package/templates/dashboard/.thumbnail +0 -0
  608. package/templates/dashboard/Dashboard.dc.html +120 -0
  609. package/templates/dashboard/content-schema.json +97 -0
  610. package/templates/dashboard/ds-base.js +23 -0
  611. package/templates/dashboard/support.js +1841 -0
  612. package/templates/delivery-change-note/.thumbnail +0 -0
  613. package/templates/delivery-change-note/DeliveryChangeNote.dc.html +85 -0
  614. package/templates/delivery-change-note/content-schema.json +158 -0
  615. package/templates/delivery-change-note/ds-base.js +23 -0
  616. package/templates/delivery-change-note/support.js +1841 -0
  617. package/templates/delivery-kickoff/.thumbnail +0 -0
  618. package/templates/delivery-kickoff/DeliveryKickoff.dc.html +112 -0
  619. package/templates/delivery-kickoff/content-schema.json +223 -0
  620. package/templates/delivery-kickoff/ds-base.js +23 -0
  621. package/templates/delivery-kickoff/support.js +1841 -0
  622. package/templates/delivery-qbr-deck/.thumbnail +0 -0
  623. package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +118 -0
  624. package/templates/delivery-qbr-deck/content-schema.json +177 -0
  625. package/templates/delivery-qbr-deck/ds-base.js +23 -0
  626. package/templates/delivery-qbr-deck/support.js +1841 -0
  627. package/templates/delivery-runbook/.thumbnail +0 -0
  628. package/templates/delivery-runbook/DeliveryRunbook.dc.html +91 -0
  629. package/templates/delivery-runbook/content-schema.json +211 -0
  630. package/templates/delivery-runbook/ds-base.js +23 -0
  631. package/templates/delivery-runbook/support.js +1841 -0
  632. package/templates/delivery-status-email/.thumbnail +0 -0
  633. package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +78 -0
  634. package/templates/delivery-status-email/ds-base.js +23 -0
  635. package/templates/delivery-status-email/support.js +1841 -0
  636. package/templates/doc-style-guide/.thumbnail +0 -0
  637. package/templates/doc-style-guide/DocStyleGuide.dc.html +148 -0
  638. package/templates/doc-style-guide/ds-base.js +23 -0
  639. package/templates/doc-style-guide/support.js +1841 -0
  640. package/templates/doc-suite-index/.thumbnail +0 -0
  641. package/templates/doc-suite-index/DocSuiteIndex.dc.html +201 -0
  642. package/templates/doc-suite-index/content-schema.json +12 -0
  643. package/templates/doc-suite-index/ds-base.js +23 -0
  644. package/templates/doc-suite-index/support.js +1841 -0
  645. package/templates/doc-templates/.thumbnail +0 -0
  646. package/templates/doc-templates/DocTemplates.dc.html +118 -0
  647. package/templates/doc-templates/ds-base.js +23 -0
  648. package/templates/doc-templates/support.js +1841 -0
  649. package/templates/email/.thumbnail +0 -0
  650. package/templates/email/Email-VN-standalone.html +59 -0
  651. package/templates/email/Email.dc.html +67 -0
  652. package/templates/email/ds-base.js +23 -0
  653. package/templates/email/support.js +1841 -0
  654. package/templates/email-safe/README.md +28 -0
  655. package/templates/email-safe/email-announcement.html +88 -0
  656. package/templates/email-safe/email-dunning.html +59 -0
  657. package/templates/email-safe/email-investor.html +88 -0
  658. package/templates/email-safe/email-launch.html +88 -0
  659. package/templates/email-safe/email-newsletter.html +62 -0
  660. package/templates/email-safe/email-status.html +88 -0
  661. package/templates/email-safe/email-transactional.html +88 -0
  662. package/templates/finance-dunning-email/.thumbnail +0 -0
  663. package/templates/finance-dunning-email/FinanceDunningEmail.dc.html +58 -0
  664. package/templates/finance-dunning-email/ds-base.js +23 -0
  665. package/templates/finance-dunning-email/support.js +1841 -0
  666. package/templates/finance-expense-report/.thumbnail +0 -0
  667. package/templates/finance-expense-report/FinanceExpenseReport.dc.html +82 -0
  668. package/templates/finance-expense-report/ds-base.js +23 -0
  669. package/templates/finance-expense-report/support.js +1841 -0
  670. package/templates/finance-invoice/.thumbnail +0 -0
  671. package/templates/finance-invoice/FinanceInvoice.dc.html +92 -0
  672. package/templates/finance-invoice/ds-base.js +23 -0
  673. package/templates/finance-invoice/support.js +1841 -0
  674. package/templates/finance-quote/.thumbnail +0 -0
  675. package/templates/finance-quote/FinanceQuote.dc.html +86 -0
  676. package/templates/finance-quote/ds-base.js +23 -0
  677. package/templates/finance-quote/support.js +1841 -0
  678. package/templates/hr-announcement/.thumbnail +0 -0
  679. package/templates/hr-announcement/HrAnnouncement.dc.html +64 -0
  680. package/templates/hr-announcement/ds-base.js +23 -0
  681. package/templates/hr-announcement/support.js +1841 -0
  682. package/templates/hr-interview-kit/.thumbnail +0 -0
  683. package/templates/hr-interview-kit/HrInterviewKit.dc.html +102 -0
  684. package/templates/hr-interview-kit/ds-base.js +23 -0
  685. package/templates/hr-interview-kit/support.js +1841 -0
  686. package/templates/hr-offboarding/.thumbnail +0 -0
  687. package/templates/hr-offboarding/HrOffboarding.dc.html +86 -0
  688. package/templates/hr-offboarding/ds-base.js +23 -0
  689. package/templates/hr-offboarding/support.js +1841 -0
  690. package/templates/hr-performance-review/.thumbnail +0 -0
  691. package/templates/hr-performance-review/HrPerformanceReview.dc.html +95 -0
  692. package/templates/hr-performance-review/ds-base.js +23 -0
  693. package/templates/hr-performance-review/support.js +1841 -0
  694. package/templates/hr-pip/.thumbnail +0 -0
  695. package/templates/hr-pip/HrPip.dc.html +73 -0
  696. package/templates/hr-pip/ds-base.js +23 -0
  697. package/templates/hr-pip/support.js +1841 -0
  698. package/templates/image-slots-demo.html +57 -0
  699. package/templates/kitchen-sink.html +127 -0
  700. package/templates/legal-msa/.thumbnail +0 -0
  701. package/templates/legal-msa/LegalMsa.dc.html +85 -0
  702. package/templates/legal-msa/ds-base.js +23 -0
  703. package/templates/legal-msa/support.js +1841 -0
  704. package/templates/legal-sow/.thumbnail +0 -0
  705. package/templates/legal-sow/LegalSow.dc.html +125 -0
  706. package/templates/legal-sow/ds-base.js +23 -0
  707. package/templates/legal-sow/support.js +1841 -0
  708. package/templates/marketing-campaign-brief/.thumbnail +0 -0
  709. package/templates/marketing-campaign-brief/MarketingCampaignBrief.dc.html +86 -0
  710. package/templates/marketing-campaign-brief/content-schema.json +139 -0
  711. package/templates/marketing-campaign-brief/ds-base.js +23 -0
  712. package/templates/marketing-campaign-brief/support.js +1841 -0
  713. package/templates/marketing-case-study/.thumbnail +0 -0
  714. package/templates/marketing-case-study/MarketingCaseStudy.dc.html +82 -0
  715. package/templates/marketing-case-study/content-schema.json +103 -0
  716. package/templates/marketing-case-study/ds-base.js +23 -0
  717. package/templates/marketing-case-study/support.js +1841 -0
  718. package/templates/marketing-launch/.thumbnail +0 -0
  719. package/templates/marketing-launch/MarketingLaunch.dc.html +84 -0
  720. package/templates/marketing-launch/ds-base.js +23 -0
  721. package/templates/marketing-launch/support.js +1841 -0
  722. package/templates/marketing-newsletter/.thumbnail +0 -0
  723. package/templates/marketing-newsletter/MarketingNewsletter.dc.html +109 -0
  724. package/templates/marketing-newsletter/ds-base.js +23 -0
  725. package/templates/marketing-newsletter/support.js +1841 -0
  726. package/templates/marketing-page/.thumbnail +0 -0
  727. package/templates/marketing-page/MarketingPage.dc.html +132 -0
  728. package/templates/marketing-page/content-schema.json +33 -0
  729. package/templates/marketing-page/ds-base.js +23 -0
  730. package/templates/marketing-page/support.js +1841 -0
  731. package/templates/marketing-press-release/.thumbnail +0 -0
  732. package/templates/marketing-press-release/MarketingPressRelease.dc.html +84 -0
  733. package/templates/marketing-press-release/content-schema.json +116 -0
  734. package/templates/marketing-press-release/ds-base.js +23 -0
  735. package/templates/marketing-press-release/support.js +1841 -0
  736. package/templates/marketing-social-kit/.thumbnail +0 -0
  737. package/templates/marketing-social-kit/MarketingSocialKit.dc.html +77 -0
  738. package/templates/marketing-social-kit/content-schema.json +54 -0
  739. package/templates/marketing-social-kit/ds-base.js +23 -0
  740. package/templates/marketing-social-kit/support.js +1841 -0
  741. package/templates/playground.html +79 -0
  742. package/templates/sales-one-pager/.thumbnail +0 -0
  743. package/templates/sales-one-pager/SalesOnePager.dc.html +103 -0
  744. package/templates/sales-one-pager/content-schema.json +73 -0
  745. package/templates/sales-one-pager/ds-base.js +23 -0
  746. package/templates/sales-one-pager/support.js +1841 -0
  747. package/templates/sales-proposal-deck/.thumbnail +0 -0
  748. package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +159 -0
  749. package/templates/sales-proposal-deck/content-schema.json +273 -0
  750. package/templates/sales-proposal-deck/ds-base.js +23 -0
  751. package/templates/sales-proposal-deck/support.js +1841 -0
  752. package/templates/schema/content-schema.schema.json +31 -0
  753. package/templates/settings/.thumbnail +0 -0
  754. package/templates/settings/Settings.dc.html +86 -0
  755. package/templates/settings/content-schema.json +131 -0
  756. package/templates/settings/ds-base.js +23 -0
  757. package/templates/settings/support.js +1841 -0
  758. package/templates/slide-deck/.thumbnail +0 -0
  759. package/templates/slide-deck/SlideDeck.dc.html +86 -0
  760. package/templates/slide-deck/content-schema.json +23 -0
  761. package/templates/slide-deck/ds-base.js +23 -0
  762. package/templates/slide-deck/support.js +1841 -0
  763. package/templates/team-meeting-agenda/.thumbnail +0 -0
  764. package/templates/team-meeting-agenda/TeamMeetingAgenda.dc.html +93 -0
  765. package/templates/team-meeting-agenda/ds-base.js +23 -0
  766. package/templates/team-meeting-agenda/support.js +1841 -0
  767. package/templates/tech-incident-report/.thumbnail +0 -0
  768. package/templates/tech-incident-report/TechIncidentReport.dc.html +111 -0
  769. package/templates/tech-incident-report/content-schema.json +25 -0
  770. package/templates/tech-incident-report/ds-base.js +23 -0
  771. package/templates/tech-incident-report/support.js +1841 -0
  772. package/templates/tech-release-notes/.thumbnail +0 -0
  773. package/templates/tech-release-notes/TechReleaseNotes.dc.html +79 -0
  774. package/templates/tech-release-notes/ds-base.js +23 -0
  775. package/templates/tech-release-notes/support.js +1841 -0
  776. package/templates/tech-retro/.thumbnail +0 -0
  777. package/templates/tech-retro/TechRetro.dc.html +84 -0
  778. package/templates/tech-retro/ds-base.js +23 -0
  779. package/templates/tech-retro/support.js +1841 -0
  780. package/templates/tech-rfc/.thumbnail +0 -0
  781. package/templates/tech-rfc/TechRfc.dc.html +87 -0
  782. package/templates/tech-rfc/content-schema.json +115 -0
  783. package/templates/tech-rfc/ds-base.js +23 -0
  784. package/templates/tech-rfc/support.js +1841 -0
  785. package/templates/vn-appointment-transfer/.thumbnail +0 -0
  786. package/templates/vn-appointment-transfer/VnAppointmentTransfer.dc.html +101 -0
  787. package/templates/vn-appointment-transfer/ds-base.js +23 -0
  788. package/templates/vn-appointment-transfer/support.js +1841 -0
  789. package/templates/vn-certificate-of-employment/.thumbnail +0 -0
  790. package/templates/vn-certificate-of-employment/VnCertificateOfEmployment.dc.html +84 -0
  791. package/templates/vn-certificate-of-employment/ds-base.js +23 -0
  792. package/templates/vn-certificate-of-employment/support.js +1841 -0
  793. package/templates/vn-code-of-conduct/.thumbnail +0 -0
  794. package/templates/vn-code-of-conduct/VnCodeOfConduct.dc.html +105 -0
  795. package/templates/vn-code-of-conduct/ds-base.js +23 -0
  796. package/templates/vn-code-of-conduct/support.js +1841 -0
  797. package/templates/vn-compensation-regulation/.thumbnail +0 -0
  798. package/templates/vn-compensation-regulation/VnCompensationRegulation.dc.html +122 -0
  799. package/templates/vn-compensation-regulation/ds-base.js +23 -0
  800. package/templates/vn-compensation-regulation/support.js +1841 -0
  801. package/templates/vn-contract-amendment/.thumbnail +0 -0
  802. package/templates/vn-contract-amendment/VnContractAmendment.dc.html +107 -0
  803. package/templates/vn-contract-amendment/ds-base.js +23 -0
  804. package/templates/vn-contract-amendment/support.js +1841 -0
  805. package/templates/vn-contractor-agreement/.thumbnail +0 -0
  806. package/templates/vn-contractor-agreement/VnContractorAgreement.dc.html +120 -0
  807. package/templates/vn-contractor-agreement/ds-base.js +23 -0
  808. package/templates/vn-contractor-agreement/support.js +1841 -0
  809. package/templates/vn-data-protection-policy/.thumbnail +0 -0
  810. package/templates/vn-data-protection-policy/VnDataProtectionPolicy.dc.html +116 -0
  811. package/templates/vn-data-protection-policy/ds-base.js +23 -0
  812. package/templates/vn-data-protection-policy/support.js +1841 -0
  813. package/templates/vn-disciplinary-case-file/.thumbnail +0 -0
  814. package/templates/vn-disciplinary-case-file/VnDisciplinaryCaseFile.dc.html +172 -0
  815. package/templates/vn-disciplinary-case-file/ds-base.js +23 -0
  816. package/templates/vn-disciplinary-case-file/support.js +1841 -0
  817. package/templates/vn-disciplinary-schedule/.thumbnail +0 -0
  818. package/templates/vn-disciplinary-schedule/VnDisciplinarySchedule.dc.html +91 -0
  819. package/templates/vn-disciplinary-schedule/ds-base.js +23 -0
  820. package/templates/vn-disciplinary-schedule/support.js +1841 -0
  821. package/templates/vn-employee-request/.thumbnail +0 -0
  822. package/templates/vn-employee-request/VnEmployeeRequest.dc.html +137 -0
  823. package/templates/vn-employee-request/ds-base.js +23 -0
  824. package/templates/vn-employee-request/support.js +1841 -0
  825. package/templates/vn-exit-handover/.thumbnail +0 -0
  826. package/templates/vn-exit-handover/VnExitHandover.dc.html +228 -0
  827. package/templates/vn-exit-handover/ds-base.js +23 -0
  828. package/templates/vn-exit-handover/support.js +1841 -0
  829. package/templates/vn-foreign-employee-pack/.thumbnail +0 -0
  830. package/templates/vn-foreign-employee-pack/VnForeignEmployeePack.dc.html +129 -0
  831. package/templates/vn-foreign-employee-pack/content-schema.json +22 -0
  832. package/templates/vn-foreign-employee-pack/ds-base.js +23 -0
  833. package/templates/vn-foreign-employee-pack/support.js +1841 -0
  834. package/templates/vn-grassroots-democracy/.thumbnail +0 -0
  835. package/templates/vn-grassroots-democracy/VnGrassrootsDemocracy.dc.html +117 -0
  836. package/templates/vn-grassroots-democracy/ds-base.js +23 -0
  837. package/templates/vn-grassroots-democracy/support.js +1841 -0
  838. package/templates/vn-infosec-policy/.thumbnail +0 -0
  839. package/templates/vn-infosec-policy/VnInfosecPolicy.dc.html +116 -0
  840. package/templates/vn-infosec-policy/ds-base.js +23 -0
  841. package/templates/vn-infosec-policy/support.js +1841 -0
  842. package/templates/vn-internal-labor-regulations/.thumbnail +0 -0
  843. package/templates/vn-internal-labor-regulations/VnInternalLaborRegulations.dc.html +155 -0
  844. package/templates/vn-internal-labor-regulations/ds-base.js +23 -0
  845. package/templates/vn-internal-labor-regulations/support.js +1841 -0
  846. package/templates/vn-internship-agreement/.thumbnail +0 -0
  847. package/templates/vn-internship-agreement/VnInternshipAgreement.dc.html +112 -0
  848. package/templates/vn-internship-agreement/ds-base.js +23 -0
  849. package/templates/vn-internship-agreement/support.js +1841 -0
  850. package/templates/vn-job-description/.thumbnail +0 -0
  851. package/templates/vn-job-description/VnJobDescription.dc.html +85 -0
  852. package/templates/vn-job-description/ds-base.js +23 -0
  853. package/templates/vn-job-description/support.js +1841 -0
  854. package/templates/vn-labor-contract/.thumbnail +0 -0
  855. package/templates/vn-labor-contract/VnLaborContract.dc.html +180 -0
  856. package/templates/vn-labor-contract/ds-base.js +23 -0
  857. package/templates/vn-labor-contract/support.js +1841 -0
  858. package/templates/vn-labour-management-book/.thumbnail +0 -0
  859. package/templates/vn-labour-management-book/VnLabourManagementBook.dc.html +115 -0
  860. package/templates/vn-labour-management-book/ds-base.js +23 -0
  861. package/templates/vn-labour-management-book/support.js +1841 -0
  862. package/templates/vn-mutual-nda/.thumbnail +0 -0
  863. package/templates/vn-mutual-nda/VnMutualNda.dc.html +114 -0
  864. package/templates/vn-mutual-nda/ds-base.js +23 -0
  865. package/templates/vn-mutual-nda/support.js +1841 -0
  866. package/templates/vn-ndnca-ip/.thumbnail +0 -0
  867. package/templates/vn-ndnca-ip/VnNdncaIp.dc.html +157 -0
  868. package/templates/vn-ndnca-ip/ds-base.js +23 -0
  869. package/templates/vn-ndnca-ip/support.js +1841 -0
  870. package/templates/vn-offer-letter/.thumbnail +0 -0
  871. package/templates/vn-offer-letter/VnOfferLetter.dc.html +84 -0
  872. package/templates/vn-offer-letter/ds-base.js +23 -0
  873. package/templates/vn-offer-letter/support.js +1841 -0
  874. package/templates/vn-onboarding-checklist/.thumbnail +0 -0
  875. package/templates/vn-onboarding-checklist/VnOnboardingChecklist.dc.html +98 -0
  876. package/templates/vn-onboarding-checklist/content-schema.json +12 -0
  877. package/templates/vn-onboarding-checklist/ds-base.js +23 -0
  878. package/templates/vn-onboarding-checklist/support.js +1841 -0
  879. package/templates/vn-pdpl-consent/.thumbnail +0 -0
  880. package/templates/vn-pdpl-consent/VnPdplConsent.dc.html +111 -0
  881. package/templates/vn-pdpl-consent/ds-base.js +23 -0
  882. package/templates/vn-pdpl-consent/support.js +1841 -0
  883. package/templates/vn-performance-evaluation-regulation/.thumbnail +0 -0
  884. package/templates/vn-performance-evaluation-regulation/VnPerformanceEvaluationRegulation.dc.html +135 -0
  885. package/templates/vn-performance-evaluation-regulation/ds-base.js +23 -0
  886. package/templates/vn-performance-evaluation-regulation/support.js +1841 -0
  887. package/templates/vn-performance-review-form/.thumbnail +0 -0
  888. package/templates/vn-performance-review-form/VnPerformanceReviewForm.dc.html +129 -0
  889. package/templates/vn-performance-review-form/ds-base.js +23 -0
  890. package/templates/vn-performance-review-form/support.js +1841 -0
  891. package/templates/vn-phantom-stock/.thumbnail +0 -0
  892. package/templates/vn-phantom-stock/VnPhantomStock.dc.html +184 -0
  893. package/templates/vn-phantom-stock/content-schema.json +17 -0
  894. package/templates/vn-phantom-stock/ds-base.js +23 -0
  895. package/templates/vn-phantom-stock/support.js +1841 -0
  896. package/templates/vn-probation-contract/.thumbnail +0 -0
  897. package/templates/vn-probation-contract/VnProbationContract.dc.html +126 -0
  898. package/templates/vn-probation-contract/ds-base.js +23 -0
  899. package/templates/vn-probation-contract/support.js +1841 -0
  900. package/templates/vn-receipt-acknowledgement/.thumbnail +0 -0
  901. package/templates/vn-receipt-acknowledgement/VnReceiptAcknowledgement.dc.html +106 -0
  902. package/templates/vn-receipt-acknowledgement/ds-base.js +23 -0
  903. package/templates/vn-receipt-acknowledgement/support.js +1841 -0
  904. package/templates/vn-remote-work-policy/.thumbnail +0 -0
  905. package/templates/vn-remote-work-policy/VnRemoteWorkPolicy.dc.html +103 -0
  906. package/templates/vn-remote-work-policy/ds-base.js +23 -0
  907. package/templates/vn-remote-work-policy/support.js +1841 -0
  908. package/templates/vn-resignation-letter/.thumbnail +0 -0
  909. package/templates/vn-resignation-letter/VnResignationLetter.dc.html +71 -0
  910. package/templates/vn-resignation-letter/ds-base.js +23 -0
  911. package/templates/vn-resignation-letter/support.js +1841 -0
  912. package/templates/vn-salary-scale/.thumbnail +0 -0
  913. package/templates/vn-salary-scale/VnSalaryScale.dc.html +110 -0
  914. package/templates/vn-salary-scale/ds-base.js +23 -0
  915. package/templates/vn-salary-scale/support.js +1841 -0
  916. package/templates/vn-sow-appendix/.thumbnail +0 -0
  917. package/templates/vn-sow-appendix/VnSowAppendix.dc.html +70 -0
  918. package/templates/vn-sow-appendix/ds-base.js +23 -0
  919. package/templates/vn-sow-appendix/support.js +1841 -0
  920. package/templates/vn-termination-decision/.thumbnail +0 -0
  921. package/templates/vn-termination-decision/VnTerminationDecision.dc.html +80 -0
  922. package/templates/vn-termination-decision/ds-base.js +23 -0
  923. package/templates/vn-termination-decision/support.js +1841 -0
  924. package/templates/vn-total-rewards-appendix/.thumbnail +0 -0
  925. package/templates/vn-total-rewards-appendix/VnTotalRewardsAppendix.dc.html +138 -0
  926. package/templates/vn-total-rewards-appendix/ds-base.js +23 -0
  927. package/templates/vn-total-rewards-appendix/support.js +1841 -0
  928. package/templates/vn-training-commitment/.thumbnail +0 -0
  929. package/templates/vn-training-commitment/VnTrainingCommitment.dc.html +105 -0
  930. package/templates/vn-training-commitment/ds-base.js +23 -0
  931. package/templates/vn-training-commitment/support.js +1841 -0
  932. package/templates/vn-travel-expense-policy/.thumbnail +0 -0
  933. package/templates/vn-travel-expense-policy/VnTravelExpensePolicy.dc.html +113 -0
  934. package/templates/vn-travel-expense-policy/ds-base.js +23 -0
  935. package/templates/vn-travel-expense-policy/support.js +1841 -0
  936. package/tokens/colors.css +77 -0
  937. package/tokens/component-tokens.css +46 -0
  938. package/tokens/elements.css +300 -0
  939. package/tokens/elevation.css +46 -0
  940. package/tokens/fonts.css +51 -0
  941. package/tokens/motion.css +25 -0
  942. package/tokens/native/CSTokens.kt +255 -0
  943. package/tokens/native/CSTokens.swift +257 -0
  944. package/tokens/native/cs_tokens.dart +253 -0
  945. package/tokens/provenance.json +52 -0
  946. package/tokens/spacing.css +34 -0
  947. package/tokens/tokens.dtcg.json +1222 -0
  948. package/tokens/tokens.js +436 -0
  949. package/tokens/tokens.json +434 -0
  950. package/tokens/typography.css +67 -0
  951. package/tokens/viewer.html +261 -0
  952. package/ui_kits/deck/README.md +21 -0
  953. package/ui_kits/deck/index.html +120 -0
  954. package/ui_kits/status-hub/README.md +40 -0
  955. package/ui_kits/status-hub/StatusHub.jsx +270 -0
  956. package/ui_kits/status-hub/data.js +57 -0
  957. package/ui_kits/status-hub/identity-lab.html +134 -0
  958. package/ui_kits/status-hub/index.html +24 -0
  959. package/ui_kits/status-hub/login.html +65 -0
  960. package/ui_kits/status-hub/project.html +137 -0
  961. package/ui_kits/status-hub/settings.html +88 -0
  962. package/ui_kits/status-hub/status.css +199 -0
  963. package/ui_kits/website/README.md +36 -0
  964. package/ui_kits/website/Website.jsx +167 -0
  965. package/ui_kits/website/careers.html +109 -0
  966. package/ui_kits/website/chat.html +133 -0
  967. package/ui_kits/website/copy.js +76 -0
  968. package/ui_kits/website/index.html +24 -0
  969. package/ui_kits/website/site.css +121 -0
  970. package/ui_kits/website/work.html +119 -0
@@ -0,0 +1,261 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>CyberSkill · Tokens</title>
7
+ <link rel="stylesheet" href="../styles.css">
8
+ <style>
9
+ *{box-sizing:border-box}html,body{height:100%}
10
+ body{margin:0;font-family:var(--cs-font-family-ui);background:var(--cs-color-surface-page);color:var(--cs-color-text-primary);display:flex;flex-direction:column}
11
+ .bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 16px;background:var(--cs-color-surface-panel);border-block-end:1px solid var(--cs-color-border-default)}
12
+ .bar h1{font-size:15px;font-weight:800;margin:0;letter-spacing:-.01em}
13
+ .bar h1 b{color:var(--cs-color-brand-umber)}
14
+ [data-theme="dark"] .bar h1 b{color:var(--cs-color-brand-ochre)}
15
+ .modes{display:flex;gap:4px;padding:3px;border-radius:999px;background:var(--cs-color-surface-page);border:1px solid var(--cs-color-border-default)}
16
+ .modes button{appearance:none;border:0;background:transparent;font:600 12.5px var(--cs-font-family-ui);padding:6px 12px;border-radius:999px;cursor:pointer;color:var(--cs-color-text-primary)}
17
+ .modes button[aria-pressed="true"]{background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse)}
18
+ .filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-inline-start:auto}
19
+ .filters input,.filters select{font:inherit;font-size:12.5px;padding:6px 10px;border-radius:8px;border:1px solid var(--cs-color-border-default);background:var(--cs-color-surface-page);color:var(--cs-color-text-primary);min-width:0}
20
+ .filters input{width:min(220px,40vw)}
21
+ .meta{font:12px/1.4 var(--cs-font-family-mono);font-weight:600;color:var(--cs-color-text-primary)}
22
+ .chips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 16px;background:var(--cs-color-surface-panel);border-block-end:1px solid var(--cs-color-border-default)}
23
+ .chips button{appearance:none;border:1px solid var(--cs-color-border-default);background:var(--cs-color-surface-page);color:var(--cs-color-text-primary);font:600 11.5px var(--cs-font-family-ui);padding:5px 10px;border-radius:999px;cursor:pointer}
24
+ .chips button[aria-pressed="true"]{background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse);border-color:var(--cs-color-brand-umber)}
25
+ .chips button .n{font-family:var(--cs-font-family-mono);font-size:10px;opacity:.85;margin-inline-start:4px}
26
+ .panel{flex:1;min-height:0;overflow:auto}
27
+ .panel.hide{display:none}
28
+ table{width:100%;border-collapse:collapse;font-size:13px}
29
+ th,td{text-align:start;padding:8px 12px;border-block-end:1px solid var(--cs-color-border-default);vertical-align:top}
30
+ th{position:sticky;top:0;background:var(--cs-color-surface-panel);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--cs-color-text-primary);z-index:1;font-weight:800}
31
+ tr:hover td{background:var(--cs-color-surface-raised)}
32
+ .swatch{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid var(--cs-color-border-default);vertical-align:middle;margin-inline-end:6px}
33
+ code{font-family:var(--cs-font-family-mono);font-size:12px}
34
+ .path{font-family:var(--cs-font-family-mono);font-size:12px;word-break:break-all}
35
+ .group{color:var(--cs-color-text-primary);opacity:.72;font-size:12px;font-weight:600}
36
+ .copy{appearance:none;border:1px solid var(--cs-color-border-default);background:var(--cs-color-surface-page);color:var(--cs-color-brand-umber);font:700 10.5px var(--cs-font-family-mono);padding:3px 7px;border-radius:6px;cursor:pointer;margin-inline-start:6px}
37
+ .copy:hover{border-color:var(--cs-color-brand-ochre)}
38
+ .copy.ok{background:#dcfce7;color:#166534;border-color:#16a34a55}
39
+ #raw{margin:0;padding:16px 18px;font:12px/1.5 var(--cs-font-family-mono);white-space:pre;overflow:auto;min-height:100%;background:var(--cs-color-surface-panel);color:var(--cs-color-text-primary)}
40
+ .empty{padding:28px;color:var(--cs-color-text-primary);font-size:13.5px}
41
+ .src{font-size:12px;color:var(--cs-color-text-primary);font-weight:600}
42
+ .src select{font:inherit;font-size:12px;padding:4px 8px;border-radius:6px;border:1px solid var(--cs-color-border-default);background:var(--cs-color-surface-page);color:var(--cs-color-text-primary)}
43
+ .src-help{margin:0;padding:8px 16px;font:12.5px/1.45 var(--cs-font-family-ui);color:var(--cs-color-text-primary);background:var(--cs-color-surface-panel);border-block-end:1px solid var(--cs-color-border-default)}
44
+ .src-help code{font-family:var(--cs-font-family-mono);font-size:11.5px}
45
+ .toast{position:fixed;inset-block-end:16px;inset-inline-end:16px;background:var(--cs-color-brand-umber);color:var(--cs-color-text-inverse);font:600 12.5px var(--cs-font-family-ui);padding:8px 12px;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .15s}
46
+ .toast.on{opacity:1}
47
+ </style>
48
+ </head>
49
+ <body data-chrome="tokens-viewer">
50
+ <div class="bar">
51
+ <h1><b>Tokens</b></h1>
52
+ <div class="modes" role="group" aria-label="View mode">
53
+ <button type="button" id="modeTable" aria-pressed="true">Table</button>
54
+ <button type="button" id="modeRaw" aria-pressed="false">Raw</button>
55
+ </div>
56
+ <div class="filters" id="tableFilters">
57
+ <input id="q" type="search" placeholder="Filter path or value…" autocomplete="off">
58
+ <span class="meta" id="count"></span>
59
+ </div>
60
+ <div class="src">
61
+ Source
62
+ <select id="source" aria-label="Token source">
63
+ <option value="tokens.dtcg.json" selected>tokens.dtcg.json (W3C DTCG)</option>
64
+ <option value="tokens.json">tokens.json (CSS-grouped)</option>
65
+ </select>
66
+ </div>
67
+ </div>
68
+ <p class="src-help" id="srcHelp">DTCG is the design-tool + native-regen interchange. <code>tokens.json</code> is the CSS-oriented grouped export for agents. Runtime UI still resolves from <code>styles.css</code> / <code>tokens/*.css</code>. Keeping both files is intentional — see <code>docs/decisions.md</code> §5.</p>
69
+ <div class="chips" id="chips" aria-label="Token groups"></div>
70
+ <div class="panel" id="tablePanel">
71
+ <table>
72
+ <thead><tr><th>Token</th><th>Group</th><th>Value</th><th>Type</th><th>Copy</th></tr></thead>
73
+ <tbody id="tbody"></tbody>
74
+ </table>
75
+ <p class="empty hide" id="empty">No tokens match this filter.</p>
76
+ </div>
77
+ <pre class="panel hide" id="raw"></pre>
78
+ <div class="toast" id="toast" role="status">Copied</div>
79
+ <script>
80
+ const tbody=document.getElementById('tbody');
81
+ const empty=document.getElementById('empty');
82
+ const countEl=document.getElementById('count');
83
+ const qEl=document.getElementById('q');
84
+ const sourceEl=document.getElementById('source');
85
+ const rawEl=document.getElementById('raw');
86
+ const tablePanel=document.getElementById('tablePanel');
87
+ const tableFilters=document.getElementById('tableFilters');
88
+ const modeTable=document.getElementById('modeTable');
89
+ const modeRaw=document.getElementById('modeRaw');
90
+ const chipsEl=document.getElementById('chips');
91
+ const toast=document.getElementById('toast');
92
+
93
+ let rows=[];
94
+ let rawText='';
95
+ let mode='table';
96
+ let activeGroup='';
97
+ let lastCopied='';
98
+
99
+ function isColor(v){
100
+ if(typeof v!=='string') return false;
101
+ return /^#([0-9a-f]{3,8})$/i.test(v.trim()) || /^rgba?\(/i.test(v) || /^oklch\(/i.test(v) || /^hsl/i.test(v);
102
+ }
103
+ function fmt(v){
104
+ if(v==null) return '';
105
+ if(typeof v==='object') return JSON.stringify(v);
106
+ return String(v);
107
+ }
108
+ function flattenDtcg(obj, path='', group=''){
109
+ const out=[];
110
+ if(!obj || typeof obj!=='object') return out;
111
+ const hasValue = Object.prototype.hasOwnProperty.call(obj,'$value') || Object.prototype.hasOwnProperty.call(obj,'value');
112
+ if(hasValue){
113
+ const value = obj.$value!==undefined ? obj.$value : obj.value;
114
+ const type = obj.$type || obj.type || '';
115
+ out.push({path: path || '(root)', group: group || path.split('.')[0] || '', value, type});
116
+ return out;
117
+ }
118
+ for(const [k,v] of Object.entries(obj)){
119
+ if(k.startsWith('$')) continue;
120
+ const nextPath = path ? path+'.'+k : k;
121
+ const nextGroup = path ? group : k;
122
+ if(v && typeof v==='object') out.push(...flattenDtcg(v, nextPath, nextGroup || k));
123
+ else out.push({path: nextPath, group: nextGroup || k, value: v, type: typeof v});
124
+ }
125
+ return out;
126
+ }
127
+ function flattenTokensJson(data){
128
+ const out=[];
129
+ const root = data.root || data;
130
+ if(!root || typeof root!=='object') return out;
131
+ for(const [group, bag] of Object.entries(root)){
132
+ if(group.startsWith('$')) continue;
133
+ if(!bag || typeof bag!=='object'){
134
+ out.push({path: group, group: 'root', value: bag, type: typeof bag});
135
+ continue;
136
+ }
137
+ for(const [name, value] of Object.entries(bag)){
138
+ if(name.startsWith('$')) continue;
139
+ if(value && typeof value==='object' && !Array.isArray(value) && (value.value!==undefined || value.$value!==undefined)){
140
+ out.push({path: name, group, value: value.value!==undefined?value.value:value.$value, type: value.type||value.$type||''});
141
+ } else {
142
+ out.push({path: name, group, value, type: typeof value});
143
+ }
144
+ }
145
+ }
146
+ for(const scope of ['themes','elements']){
147
+ const block = data[scope];
148
+ if(!block || typeof block!=='object') continue;
149
+ for(const [scopeName, bag] of Object.entries(block)){
150
+ if(!bag || typeof bag!=='object') continue;
151
+ for(const [name, value] of Object.entries(bag)){
152
+ out.push({path: name, group: scope+'.'+scopeName, value, type: typeof value});
153
+ }
154
+ }
155
+ }
156
+ return out;
157
+ }
158
+ function setMode(next){
159
+ mode=next;
160
+ modeTable.setAttribute('aria-pressed', mode==='table'?'true':'false');
161
+ modeRaw.setAttribute('aria-pressed', mode==='raw'?'true':'false');
162
+ tablePanel.classList.toggle('hide', mode!=='table');
163
+ rawEl.classList.toggle('hide', mode!=='raw');
164
+ tableFilters.style.visibility = mode==='table'?'visible':'hidden';
165
+ chipsEl.style.display = mode==='table'?'flex':'none';
166
+ }
167
+ function showToast(msg){
168
+ toast.textContent=msg;
169
+ toast.classList.add('on');
170
+ clearTimeout(showToast._t);
171
+ showToast._t=setTimeout(()=>toast.classList.remove('on'),1200);
172
+ }
173
+ async function copyText(text, label){
174
+ lastCopied=text;
175
+ let ok=false;
176
+ try{ await navigator.clipboard.writeText(text); ok=true; }catch(e){
177
+ try{
178
+ const ta=document.createElement('textarea'); ta.value=text; document.body.appendChild(ta); ta.select();
179
+ ok=document.execCommand('copy'); ta.remove();
180
+ }catch(e2){}
181
+ }
182
+ showToast(ok?('Copied '+label):'Copy blocked — value selected in memory');
183
+ window.__csTokensLastCopy={ok, text, label, at:Date.now()};
184
+ return ok;
185
+ }
186
+ function filteredRows(){
187
+ const q=(qEl.value||'').trim().toLowerCase();
188
+ return rows.filter(r=>{
189
+ if(activeGroup && r.group!==activeGroup) return false;
190
+ if(!q) return true;
191
+ return (r.path+' '+fmt(r.value)+' '+r.group+' '+(r.type||'')).toLowerCase().includes(q);
192
+ });
193
+ }
194
+ function renderChips(){
195
+ const counts=new Map();
196
+ for(const r of rows) counts.set(r.group, (counts.get(r.group)||0)+1);
197
+ const groups=[...counts.keys()].sort();
198
+ chipsEl.innerHTML='';
199
+ const all=document.createElement('button');
200
+ all.type='button'; all.setAttribute('aria-pressed', activeGroup===''?'true':'false');
201
+ all.innerHTML='All<span class="n">'+rows.length+'</span>';
202
+ all.onclick=()=>{ activeGroup=''; renderChips(); renderTable(); };
203
+ chipsEl.appendChild(all);
204
+ for(const g of groups){
205
+ const b=document.createElement('button');
206
+ b.type='button'; b.setAttribute('aria-pressed', activeGroup===g?'true':'false');
207
+ b.innerHTML=esc(g)+'<span class="n">'+counts.get(g)+'</span>';
208
+ b.onclick=()=>{ activeGroup = activeGroup===g ? '' : g; renderChips(); renderTable(); };
209
+ chipsEl.appendChild(b);
210
+ }
211
+ }
212
+ function renderTable(){
213
+ const filtered=filteredRows();
214
+ countEl.textContent = filtered.length+' / '+rows.length;
215
+ tbody.innerHTML='';
216
+ empty.classList.toggle('hide', filtered.length>0);
217
+ const frag=document.createDocumentFragment();
218
+ for(const r of filtered){
219
+ const tr=document.createElement('tr');
220
+ const val=fmt(r.value);
221
+ const sw = isColor(val) ? '<span class="swatch" style="background:'+val.replace(/"/g,'')+'"></span>' : '';
222
+ tr.innerHTML = '<td class="path">'+esc(r.path)+'</td>'
223
+ +'<td class="group">'+esc(r.group)+'</td>'
224
+ +'<td>'+sw+'<code>'+esc(val)+'</code></td>'
225
+ +'<td class="group">'+esc(r.type||'')+'</td>'
226
+ +'<td><button type="button" class="copy" data-copy="path" data-v="'+esc(r.path)+'">path</button>'
227
+ +'<button type="button" class="copy" data-copy="value" data-v="'+esc(val)+'">value</button></td>';
228
+ frag.appendChild(tr);
229
+ }
230
+ tbody.appendChild(frag);
231
+ tbody.querySelectorAll('.copy').forEach(btn=>{
232
+ btn.addEventListener('click',async()=>{
233
+ const ok=await copyText(btn.getAttribute('data-v')||'', btn.getAttribute('data-copy')||'token');
234
+ if(ok){ btn.classList.add('ok'); setTimeout(()=>btn.classList.remove('ok'),900); }
235
+ });
236
+ });
237
+ window.__csTokensViewer={rows:rows.length, filtered:filtered.length, group:activeGroup||null, mode, lastCopied};
238
+ }
239
+ function esc(s){ return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;'); }
240
+ async function load(){
241
+ const file=sourceEl.value;
242
+ const r=await fetch('./'+file,{cache:'no-store'});
243
+ rawText=await r.text();
244
+ rawEl.textContent=rawText;
245
+ let data;
246
+ try{ data=JSON.parse(rawText); }catch(e){ rows=[]; renderChips(); renderTable(); return; }
247
+ rows = file.includes('dtcg') ? flattenDtcg(data) : flattenTokensJson(data);
248
+ rows.sort((a,b)=>a.path.localeCompare(b.path) || a.group.localeCompare(b.group));
249
+ activeGroup='';
250
+ renderChips();
251
+ renderTable();
252
+ }
253
+ modeTable.onclick=()=>setMode('table');
254
+ modeRaw.onclick=()=>setMode('raw');
255
+ qEl.addEventListener('input',()=>{ clearTimeout(qEl._t); qEl._t=setTimeout(renderTable,120); });
256
+ sourceEl.addEventListener('change',load);
257
+ setMode('table');
258
+ load().catch(e=>{ rawEl.textContent=String(e); rows=[]; renderChips(); renderTable(); });
259
+ </script>
260
+ </body>
261
+ </html>
@@ -0,0 +1,21 @@
1
+ # Brand deck — UI kit
2
+
3
+ A ready-to-present **16:9 CyberSkill deck** built on the `deck-stage` starter. It doubles as the design system's **PDF / PPTX export** reference: because it's a real deck-stage deck, it exports with no rebuild.
4
+
5
+ ## What it demonstrates
6
+ Five brand slides — umber title, light agenda, a by-the-numbers stat slide, an umber big-quote, and an umber closing — all painted from `styles.css` tokens (Umber/Ochre anchors, Be Vietnam Pro, JetBrains Mono numerals) with the official Logo mark.
7
+
8
+ ## Files
9
+ - `index.html` — the deck. `<deck-stage width="1920" height="1080">` with one `<section>` per slide; links `styles.css` for tokens + fonts.
10
+
11
+ - deck-stage runtime lives at `templates/_vendor/deck-stage.js` (kept out of the compiled bundle; scaling, keyboard nav, thumbnail rail, print-to-PDF).
12
+
13
+ - Export **PPTX/PDF on demand** from the live deck (the host's export flows); no pre-generated binary is kept in the repo.
14
+
15
+ ## Export
16
+ - **PDF** — open `index.html` and Print → Save as PDF. `deck-stage` lays out one clean page per slide automatically.
17
+
18
+ - **PPTX** — regenerate anytime from the showing deck; slides are `deck-stage > [data-deck-active]` navigated with `goTo(n)`, `resetTransformSelector: "deck-stage"`, at 1920×1080. Be Vietnam Pro + JetBrains Mono map to matching Google Fonts so text stays on-brand and Vietnamese diacritics render.
19
+
20
+ ## Authoring
21
+ Slides are static inline-styled `<section>`s — edit copy directly. Keep to two backgrounds (umber / panel) and one accent (ochre); don't set position/size on a `<section>` (the component positions them).
@@ -0,0 +1,120 @@
1
+ <!-- @dsCard group="Deck" viewport="1280x720" name="Brand deck — CyberSkill" subtitle="16:9 presentation on deck-stage — PDF & PPTX ready" -->
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>CyberSkill · Brand deck</title>
8
+ <link rel="icon" href="../../assets/favicon.svg" />
9
+ <link rel="stylesheet" href="../../styles.css" />
10
+ <style>
11
+ html, body { margin: 0; background: #2a1a0d; }
12
+ deck-stage:not(:defined) { visibility: hidden; }
13
+ .sl { box-sizing: border-box; display: flex; flex-direction: column; font-family: var(--cs-font-family-ui); }
14
+ .sl-umber { background: var(--cs-color-brand-umber); color: #fff; }
15
+ .sl-page { background: var(--cs-color-surface-panel); color: var(--cs-color-text-primary); }
16
+ .sl-pad { padding: 96px 120px; }
17
+ .sl-center { justify-content: center; }
18
+ .eyebrow { font-size: 22px; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; color: var(--cs-color-brand-ochre); }
19
+ .eyebrow-dark { color: var(--cs-color-text-accent); }
20
+ .display { font-size: 108px; font-weight: 800; letter-spacing: -.02em; line-height: 1.02; color: var(--cs-color-brand-ochre); margin: 22px 0 12px; }
21
+ .h2 { font-size: 68px; font-weight: 800; letter-spacing: -.02em; margin: 14px 0 40px; }
22
+ .vn { font-size: 34px; font-weight: 600; opacity: .9; }
23
+ .lockup { display: flex; align-items: center; gap: 20px; }
24
+ .lockup img { width: 76px; height: 76px; }
25
+ .lockup b { font-size: 34px; font-weight: 800; letter-spacing: -.01em; }
26
+ .foot { display: flex; justify-content: space-between; align-items: center; font-size: 24px; opacity: .72; margin-top: auto; }
27
+ .foot .num { font-family: var(--cs-font-family-mono); color: var(--cs-color-brand-ochre); }
28
+ .cols3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 44px; }
29
+ .col { border-top: 5px solid var(--cs-color-brand-ochre); padding-top: 28px; }
30
+ .col .n { font-family: var(--cs-font-family-mono); font-weight: 700; font-size: 24px; color: var(--cs-color-text-accent); }
31
+ .col h3 { font-size: 38px; margin: 12px 0 12px; letter-spacing: -.01em; }
32
+ .col p { font-size: 24px; line-height: 1.5; color: var(--cs-color-text-muted); margin: 0; }
33
+ .quote { font-size: 72px; font-weight: 700; line-height: 1.22; max-width: 1400px; }
34
+ .quote .hl { color: var(--cs-color-brand-ochre); }
35
+ .stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 56px; margin-top: 24px; }
36
+ .stat .v { font-size: 96px; font-weight: 800; letter-spacing: -.02em; color: var(--cs-color-brand-ochre); line-height: 1; }
37
+ .stat .l { font-size: 26px; opacity: .85; margin-top: 10px; }
38
+ .close-wrap { align-items: center; text-align: center; justify-content: center; }
39
+ .close-wrap img { width: 128px; height: 128px; }
40
+ </style>
41
+ </head>
42
+ <body>
43
+ <deck-stage width="1920" height="1080">
44
+ <section class="sl sl-umber sl-pad" data-label="Title">
45
+ <div class="lockup" style="margin-bottom:56px"><img src="../../assets/logo-mark.svg" alt="CyberSkill" /><b>CyberSkill</b></div>
46
+ <div class="eyebrow" data-vi="Đánh giá sản phẩm · Q3 2026">Product review · Q3 2026</div>
47
+ <div class="display">Turn Your Will<br />Into Real</div>
48
+ <div class="vn" data-vi="Hiện Thực Hoá Ý Chí · nhìn lại những gì đã ra mắt">Hiện Thực Hoá Ý Chí · a look at what shipped</div>
49
+ <div class="foot"><span data-vi="Lumi · CyberSkill · Sài Gòn">Lumi · CyberSkill · Saigon</span><span class="num">01</span></div>
50
+ </section>
51
+
52
+ <section class="sl sl-page sl-pad sl-center" data-label="Agenda">
53
+ <div class="eyebrow eyebrow-dark" data-vi="Nội dung chính">What we'll cover</div>
54
+ <div class="h2" data-vi="Ba điều đã ra mắt">Three things that shipped</div>
55
+ <div class="cols3">
56
+ <div class="col"><div class="n">01</div><h3>Liquid Glass</h3><p data-vi="Năm chất liệu, nay gắn vào component.">Five materials, now bound to components.</p></div>
57
+ <div class="col"><div class="n">02</div><h3 data-vi="15 gói Ngũ Hành">15 element packs</h3><p data-vi="Đã kiểm chứng — không cảnh báo nào trên toàn bộ.">Verified — zero warnings across the set.</p></div>
58
+ <div class="col"><div class="n">03</div><h3 data-vi="Thần đèn Lumi">Lumi genie</h3><p data-vi="Luồng tiếp nhận điều ước, có con người kiểm duyệt.">A wish-capture flow, human in the loop.</p></div>
59
+ </div>
60
+ <div class="foot" style="color:var(--cs-color-text-muted)"><span>Turn Your Will Into Real</span><span class="num">02</span></div>
61
+ </section>
62
+
63
+ <section class="sl sl-page sl-pad sl-center" data-label="By the numbers">
64
+ <div class="eyebrow eyebrow-dark" data-vi="Từ 2020">Since 2020</div>
65
+ <div class="h2" data-vi="Những con số">By the numbers</div>
66
+ <div class="stats">
67
+ <div class="stat"><div class="v">40+</div><div class="l" style="color:var(--cs-color-text-muted)" data-vi="Điều ước đã thực hiện">Wishes granted</div></div>
68
+ <div class="stat"><div class="v">1 day</div><div class="l" style="color:var(--cs-color-text-muted)" data-vi="Thời gian phản hồi">Reply time</div></div>
69
+ <div class="stat"><div class="v">EN·VN</div><div class="l" style="color:var(--cs-color-text-muted)" data-vi="Song ngữ mặc định">Bilingual by default</div></div>
70
+ </div>
71
+ <div class="foot" style="color:var(--cs-color-text-muted)"><span data-vi="Xưởng phần mềm Sài Gòn">Saigon software studio</span><span class="num">03</span></div>
72
+ </section>
73
+
74
+ <section class="sl sl-page sl-pad sl-center" data-label="Ngũ Hành">
75
+ <div class="eyebrow eyebrow-dark" data-vi="Bản sắc sản phẩm theo ngũ hành">Elemental product identity</div>
76
+ <div class="h2" data-vi="Ngũ Hành — năm hành, một xưởng">Ngũ Hành — five elements, one studio</div>
77
+ <div style="display:grid;grid-template-columns:repeat(5,1fr);gap:28px">
78
+ <div style="border-radius:18px;background:radial-gradient(120% 100% at 50% -20%, rgba(122,155,87,0.55), transparent 62%),#18200F;color:#fff;padding:34px 28px"><div style="font-size:40px;font-weight:800">Mộc</div><div style="font-size:22px;opacity:.75" data-vi="Gỗ · sinh trưởng">Wood · growth</div><div style="height:10px;border-radius:99px;background:#7A9B57;margin-top:26px"></div></div>
79
+ <div style="border-radius:18px;background:radial-gradient(120% 100% at 50% -20%, rgba(224,99,43,0.55), transparent 62%),#231007;color:#fff;padding:34px 28px"><div style="font-size:40px;font-weight:800">Hỏa</div><div style="font-size:22px;opacity:.75" data-vi="Lửa · năng lượng">Fire · energy</div><div style="height:10px;border-radius:99px;background:#E0632B;margin-top:26px"></div></div>
80
+ <div style="border-radius:18px;background:radial-gradient(120% 100% at 50% -20%, rgba(244,186,23,0.55), transparent 62%),#45210E;color:#fff;padding:34px 28px;outline:4px solid var(--cs-color-brand-ochre);outline-offset:4px"><div style="font-size:40px;font-weight:800">Thổ</div><div style="font-size:22px;opacity:.75" data-vi="Đất · chính xưởng">Earth · the studio</div><div style="height:10px;border-radius:99px;background:#F4BA17;margin-top:26px"></div></div>
81
+ <div style="border-radius:18px;background:radial-gradient(120% 100% at 50% -20%, rgba(191,178,155,0.55), transparent 62%),#221C12;color:#fff;padding:34px 28px"><div style="font-size:40px;font-weight:800">Kim</div><div style="font-size:22px;opacity:.75" data-vi="Kim loại · chuẩn xác">Metal · precision</div><div style="height:10px;border-radius:99px;background:#BFB29B;margin-top:26px"></div></div>
82
+ <div style="border-radius:18px;background:radial-gradient(120% 100% at 50% -20%, rgba(78,142,155,0.55), transparent 62%),#0E1D20;color:#fff;padding:34px 28px"><div style="font-size:40px;font-weight:800">Thủy</div><div style="font-size:22px;opacity:.75" data-vi="Nước · trôi chảy">Water · flow</div><div style="height:10px;border-radius:99px;background:#4E8E9B;margin-top:26px"></div></div>
83
+ </div>
84
+ <div style="font-size:24px;color:var(--cs-color-text-muted);margin-top:36px" data-vi="Mỗi sản phẩm mang một hành; phối màu theo Tương sinh. Lumi luôn giữ sắc vàng.">Each product takes one element; mixes follow Tương sinh. Lumi stays golden in every one.</div>
85
+ <div class="foot" style="color:var(--cs-color-text-muted)"><span>Hiện Thực Hoá Ý Chí</span><span class="num">04</span></div>
86
+ </section>
87
+
88
+ <section class="sl sl-umber sl-pad sl-center" data-label="Quote">
89
+ <div class="quote"><span data-vi="“Một điều ước rõ ràng, được một đội ngũ thật thực hiện — ">“A clear wish, granted by a real team — </span><span class="hl" data-vi="xây để ra mắt, bền để dùng lâu.">built to ship, built to last.</span>”</div>
90
+ <div style="margin-top:40px;font-size:26px;opacity:.75" data-vi="Lời hứa của CyberSkill">The CyberSkill promise</div>
91
+ <div class="foot"><span data-vi="Ấm áp · Thẳng thắn · Trung thực · Tôn trọng">Warm · Direct · Honest · Respectful</span><span class="num">05</span></div>
92
+ </section>
93
+
94
+ <section class="sl sl-umber sl-pad close-wrap" data-label="Closing">
95
+ <img src="../../assets/logo-mark.svg" alt="CyberSkill" />
96
+ <div class="display" style="margin-top:28px" data-vi="Ước một điều">Make a wish</div>
97
+ <div class="vn" data-vi="cyberskill.world · trả lời trong một ngày làm việc">cyberskill.world · we reply within one business day</div>
98
+ </section>
99
+ </deck-stage>
100
+ <script src="../../templates/_vendor/deck-stage.js"></script>
101
+ <button id="langToggle" style="position:fixed;left:20px;bottom:20px;z-index:60;border:1px solid rgba(255,255,255,.3);background:rgba(26,17,8,.85);color:#F4BA17;height:44px;padding:0 16px;border-radius:999px;cursor:pointer;font:600 14px var(--cs-font-family-ui)">Tiếng Việt</button>
102
+ <script>
103
+ (function(){
104
+ var KEY="cs_site_lang", link=document.getElementById("langToggle");
105
+ function apply(vi){
106
+ document.documentElement.setAttribute("lang", vi?"vi":"en");
107
+ document.querySelectorAll("[data-vi]").forEach(function(el){
108
+ if(!el.dataset.en) el.dataset.en=el.textContent;
109
+ el.textContent = vi ? el.dataset.vi : el.dataset.en;
110
+ });
111
+ if(link) link.textContent = vi ? "English" : "Tiếng Việt";
112
+ try{localStorage.setItem(KEY, vi?"vi":"en");}catch(e){}
113
+ }
114
+ var vi=false; try{vi=localStorage.getItem(KEY)==="vi";}catch(e){}
115
+ if(vi) apply(true);
116
+ if(link) link.addEventListener("click", function(){ apply(document.documentElement.getAttribute("lang")!=="vi"); });
117
+ })();
118
+ </script>
119
+ </body>
120
+ </html>
@@ -0,0 +1,40 @@
1
+ # Status Hub — UI kit
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.
4
+
5
+ ## What it demonstrates
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).
7
+
8
+ - **Deck**: clickable KPI stats (filter the board by status), a segmented progress bar with legend, and a velocity spark chart.
9
+
10
+ - **"Now shipping"** Ochre callout.
11
+
12
+ - **Command bar** (sticky, Light-Glass-adjacent): search, a segmented **Board / Table / Releases** lens switcher, a status facet, and a live count.
13
+
14
+ - **Board lens** — project cards with segmented mini-bars, status pills, and mono task chips.
15
+
16
+ - **Table lens** — dense, solid-surface data table.
17
+
18
+ - **Releases lens** — a shipped/now timeline.
19
+
20
+ - **Detail drawer** — slides in on card/row click with meta, tasks, and a risk callout.
21
+
22
+ ## Files
23
+ - `index.html` — entry; loads `styles.css` (design tokens) + `status.css` (product layer), React, and the app.
24
+
25
+ - `login.html` — split sign-in (brand panel + form; dark toggle).
26
+
27
+ - `settings.html` — Tabs, form controls, switches, danger zone (dark toggle).
28
+
29
+ - `project.html` — full project detail view: breadcrumb, KPI stats, tasks, `cs-steps`, `cs-timeline`, `cs-dl` (dark toggle).
30
+
31
+ - `identity-lab.html` — live Theme × Element switching on a product surface (15 element-variant pills · light/dark).
32
+
33
+ - `status.css` — product component styles ported from the real status-hub stylesheet; **tokens come from the design system**, not redeclared.
34
+
35
+ - `data.js` — fictional, on-brand sample data (`window.SH_DATA`).
36
+
37
+ - `StatusHub.jsx` — the interactive app (`window.StatusHub`).
38
+
39
+ ## Fidelity notes
40
+ This is a cosmetic recreation: search/sort/filter are shallow and data is fake. Colours, spacing, pills, chips, radii, and the warm-dark theme are taken verbatim from the source token vocabulary. The real product is vanilla HTML+CSS (no React); this kit uses light React only for lens/drawer state.