@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,38 @@
1
+ <!-- @dsCard group="Components" viewport="700x180" name="Icon" subtitle="In-repo line-icon set — currentColor, 1.75 stroke" -->
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
+ <link rel="stylesheet" href="../../styles.css" />
8
+ <style>
9
+ body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; color: var(--cs-color-text-primary); }
10
+ .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 10px; max-width: 640px; }
11
+ .cell { display: grid; place-items: center; gap: 8px; padding: 14px 6px; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-panel); }
12
+ .cell span { font-family: var(--cs-font-family-mono); font-size: 11px; color: var(--cs-color-text-muted); }
13
+ .cell .g { color: var(--cs-color-brand-umber); }
14
+ .cell:nth-child(6) .g { color: var(--cs-color-brand-ochre); }
15
+ </style>
16
+ <script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
17
+ <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
18
+ <script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
19
+ <script src="../../_ds_bundle.js"></script>
20
+ </head>
21
+ <body>
22
+ <div id="root"></div>
23
+ <script type="text/babel">
24
+ const { Icon } = (window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]||{});
25
+ const names = ["close","sun","moon","arrow-right","check","sparkle","chat","sound-on","sound-off","search","sliders","upload","download","calendar","user","plus","trash","external","menu","chevron-down","chevron-up","chevron-left","chevron-right","edit","copy","info","alert-triangle"];
26
+ function Demo() {
27
+ return (
28
+ <div className="grid">
29
+ {names.map((n) => (
30
+ <div className="cell" key={n}><span className="g" style={{color:"inherit"}}><Icon name={n} size="lg" /></span><span>{n}</span></div>
31
+ ))}
32
+ </div>
33
+ );
34
+ }
35
+ ReactDOM.createRoot(document.getElementById("root")).render(<Demo />);
36
+ </script>
37
+ </body>
38
+ </html>
@@ -0,0 +1,18 @@
1
+ import type * as React from "react";
2
+
3
+ /**
4
+ * CyberSkill brand mark — the exact official master artwork (Umber ground,
5
+ * Ochre genie figure). Use whenever a product is for or owned by CyberSkill;
6
+ * never recreate, retype, or recolour it. For third-party tenants, swap the
7
+ * tenant's own logo instead (do not use this mark to represent another company).
8
+ */
9
+ export interface LogoProps extends React.SVGAttributes<SVGSVGElement> {
10
+ /** Rendered width/height in px. Default 32. */
11
+ size?: number;
12
+ /** Accessible name. Default "CyberSkill". */
13
+ title?: string;
14
+ /** When true, the mark is decorative (aria-hidden, no title). */
15
+ decorative?: boolean;
16
+ }
17
+
18
+ export function Logo(props: LogoProps): React.ReactElement;
@@ -0,0 +1,12 @@
1
+ import figma from '@figma/code-connect'
2
+ import { Logo } from './Logo.jsx'
3
+
4
+ /**
5
+ * Code Connect stub — Logo
6
+ * Prop maps stay minimal until the matching Figma library component is published;
7
+ * then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
8
+ */
9
+ figma.connect(Logo, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-50', {
10
+ example: () => <Logo />,
11
+ imports: ["import { Logo } from '@cyberskill/design'"],
12
+ })
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import { CS_LOGO_VIEWBOX, CS_LOGO_MARK_INNER } from "./logo-data.js";
3
+ import { cx } from "../_utils/cx.js";
4
+
5
+ /**
6
+ * CyberSkill brand mark. Renders the EXACT official master artwork (Umber ground,
7
+ * Ochre genie figure). Use whenever a product is for or owned by CyberSkill.
8
+ * Do not recreate or recolour the mark.
9
+ */
10
+ export function Logo({ size = 32, title = "CyberSkill", decorative = false, className, ...props }) {
11
+ return (
12
+ <svg
13
+ {...props}
14
+ className={cx("cs-logo", className)}
15
+ width={size}
16
+ height={size}
17
+ viewBox={CS_LOGO_VIEWBOX}
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ role={decorative ? undefined : "img"}
20
+ aria-hidden={decorative ? true : undefined}
21
+ aria-label={decorative ? undefined : title}
22
+ dangerouslySetInnerHTML={{ __html: (decorative ? "" : `<title>${title}</title>`) + CS_LOGO_MARK_INNER }}
23
+ />
24
+ );
25
+ }
@@ -0,0 +1,10 @@
1
+ **Logo** — the official CyberSkill brand mark (Umber ground, Ochre genie figure), rendered from the exact master artwork. Use whenever a product is for or owned by CyberSkill. Keep clear space ≥ 25% of the mark height; never recolour, rotate, stretch, or place on a low-contrast background.
2
+
3
+ ```jsx
4
+ <Logo size={40} title="CyberSkill" />
5
+ <Logo size={24} decorative /> {/* when the name appears next to it in text */}
6
+ ```
7
+
8
+ - For third-party / white-label tenants, use the tenant's own logo — not this mark.
9
+
10
+ - Static/print alternative: `assets/logo-mark.svg` (vector) or `assets/logo-mark.png`.
@@ -0,0 +1,214 @@
1
+ /* Generated from @cyberskill/brand-assets/logo-mark.svg — the official CyberSkill mark.
2
+ * Exact master artwork (1007x1007). Do not hand-edit; replace the source SVG and regenerate. */
3
+ export const CS_LOGO_VIEWBOX = "0 0 1007 1007";
4
+ export const CS_LOGO_MARK_INNER = `<path fill="#45210E" opacity="1.000000" stroke="none"
5
+ d="
6
+ M560.000000,1008.000000
7
+ C373.333344,1008.000000 187.166672,1008.000000 1.000000,1008.000000
8
+ C1.000000,672.333313 1.000000,336.666656 1.000000,1.000000
9
+ C336.666656,1.000000 672.333313,1.000000 1008.000000,1.000000
10
+ C1008.000000,336.666656 1008.000000,672.333313 1008.000000,1008.000000
11
+ C858.833313,1008.000000 709.666687,1008.000000 560.000000,1008.000000
12
+ M440.743774,105.242386
13
+ C438.572540,107.309639 436.344940,109.321198 434.238464,111.452431
14
+ C396.510132,149.623566 372.276398,194.939011 363.356293,247.940109
15
+ C360.996429,261.961884 358.946777,276.673065 360.603027,290.610352
16
+ C365.030243,327.864777 394.910004,357.905762 431.834900,364.830811
17
+ C436.723083,365.747589 441.737213,365.993011 447.763702,366.669525
18
+ C446.254150,363.858124 445.507843,362.409912 444.709564,360.990906
19
+ C439.517578,351.761383 436.885193,341.740936 437.455444,331.277863
20
+ C439.589569,292.120056 458.815063,264.154144 494.094208,247.402267
21
+ C503.544983,242.914673 513.742554,238.863556 524.373901,240.455948
22
+ C548.543213,244.076111 568.703491,255.555466 584.000793,274.713074
23
+ C599.847656,294.559021 607.550598,317.209198 603.764282,342.677429
24
+ C602.575073,350.677063 598.728027,358.281586 595.936157,366.544159
25
+ C600.137085,366.074554 604.740540,365.758667 609.275574,365.021576
26
+ C646.763123,358.928711 678.394348,326.946808 681.791199,289.350922
27
+ C683.086792,275.012085 681.404419,259.972870 678.550415,245.760666
28
+ C660.577881,156.262833 608.759338,93.666801 525.888672,56.228947
29
+ C522.563171,54.726585 519.736023,54.769550 516.419739,56.200459
30
+ C488.640594,68.186523 463.511292,84.231010 440.743774,105.242386
31
+ M286.676636,492.678345
32
+ C287.329773,493.793732 287.835724,495.033447 288.657562,496.006378
33
+ C309.770172,521.000305 334.755707,541.223022 364.045837,555.811401
34
+ C374.407410,560.972046 385.114655,566.593323 396.291962,568.749573
35
+ C432.863312,575.804749 469.791931,575.543579 506.608704,569.950623
36
+ C542.882812,564.440125 577.636902,553.955383 610.255371,536.938660
37
+ C635.979919,523.518494 665.744080,527.108459 687.312561,546.611755
38
+ C690.823608,549.786621 693.878845,553.465637 697.214539,556.985291
39
+ C719.173889,537.685486 738.051208,516.184204 753.920410,491.916840
40
+ C752.879761,490.957520 752.286987,490.387451 751.669678,489.845367
41
+ C716.653381,459.096100 676.901917,436.766174 632.377991,423.023193
42
+ C629.713745,422.200836 626.423889,422.161865 623.725525,422.882690
43
+ C590.944153,431.639587 558.238403,440.679779 525.448730,449.404907
44
+ C522.300964,450.242554 518.534851,450.164001 515.372437,449.321808
45
+ C482.598022,440.593750 449.897797,431.587128 417.141144,422.791412
46
+ C414.867096,422.180786 412.115295,422.006958 409.909119,422.683990
47
+ C363.870605,436.812317 322.877258,459.923096 286.676636,492.678345
48
+ M638.193726,649.759216
49
+ C618.869507,656.015442 599.040955,658.948853 578.743958,658.635498
50
+ C561.320618,658.366577 544.380371,654.932678 527.565796,650.671387
51
+ C525.521851,650.153320 523.254150,649.859985 521.196533,650.169861
52
+ C512.810059,651.432678 504.514069,653.468018 496.093933,654.298462
53
+ C480.882416,655.798584 465.515686,658.255371 450.375763,657.410278
54
+ C421.185272,655.780762 394.125427,646.062805 369.145020,630.771667
55
+ C368.008179,630.075806 366.770874,629.544006 364.879761,628.577820
56
+ C379.822174,677.662048 402.386169,721.588440 433.601837,761.123535
57
+ C468.862305,805.781311 475.313782,854.488708 452.707825,906.779114
58
+ C449.580719,914.012512 445.212494,920.709351 441.423889,927.657288
59
+ C573.221985,890.897766 675.186523,765.328125 681.092896,630.672180
60
+ C667.338623,636.799011 653.131897,643.127319 638.193726,649.759216
61
+ M451.496307,582.220520
62
+ C442.351196,581.799133 433.142700,581.909058 424.076202,580.828186
63
+ C411.400055,579.317017 398.218109,578.681030 386.332123,574.558289
64
+ C354.337128,563.460327 326.346069,545.236816 301.709656,521.949341
65
+ C300.020294,520.352478 298.291534,518.797302 295.873596,516.571472
66
+ C296.025665,518.456909 295.980042,519.134644 296.144836,519.756653
67
+ C304.310333,550.579102 319.447479,577.592346 342.608459,599.413086
68
+ C382.985504,637.453735 430.264038,654.771729 486.434967,647.405457
69
+ C555.692078,638.323059 618.847046,614.520935 675.700134,573.984924
70
+ C680.675537,570.437500 685.476868,566.646118 690.581665,562.800293
71
+ C677.023743,544.661377 659.575134,536.325806 637.562927,537.450195
72
+ C626.043884,538.038574 616.340271,543.514893 606.234131,548.288513
73
+ C557.596436,571.262329 506.255249,582.294250 451.496307,582.220520
74
+ M539.676270,436.107300
75
+ C577.955139,425.690460 616.233948,415.273621 655.757202,404.518158
76
+ C635.089294,395.015900 615.544373,386.029968 595.877441,376.987946
77
+ C594.662292,379.021637 593.749573,380.591156 592.797180,382.136292
78
+ C586.595276,392.197998 578.925293,400.845184 568.666138,406.952454
79
+ C534.791809,427.117798 492.288269,422.383606 462.337891,394.876129
80
+ C456.381653,389.405701 451.112213,383.187500 445.401093,377.182709
81
+ C426.206024,386.105682 406.958923,395.052887 386.824615,404.412476
82
+ C389.268799,405.156464 390.645874,405.614380 392.043884,405.995544
83
+ C429.426819,416.187622 466.920624,425.996552 504.132446,436.778748
84
+ C515.781982,440.154175 526.683472,441.361206 537.944458,436.636871
85
+ C538.251221,436.508148 538.570312,436.408813 539.676270,436.107300
86
+ M636.169495,641.720032
87
+ C693.203857,621.317932 729.752136,581.965942 745.785767,523.547119
88
+ C689.811462,583.441650 622.343140,624.064514 542.504456,645.372620
89
+ C570.121521,652.872437 603.639343,651.544189 636.169495,641.720032
90
+ z"/>
91
+ <path fill="#F4BA17" opacity="1.000000" stroke="none"
92
+ d="
93
+ M441.015747,105.015450
94
+ C463.511292,84.231010 488.640594,68.186523 516.419739,56.200459
95
+ C519.736023,54.769550 522.563171,54.726585 525.888672,56.228947
96
+ C608.759338,93.666801 660.577881,156.262833 678.550415,245.760666
97
+ C681.404419,259.972870 683.086792,275.012085 681.791199,289.350922
98
+ C678.394348,326.946808 646.763123,358.928711 609.275574,365.021576
99
+ C604.740540,365.758667 600.137085,366.074554 595.936157,366.544159
100
+ C598.728027,358.281586 602.575073,350.677063 603.764282,342.677429
101
+ C607.550598,317.209198 599.847656,294.559021 584.000793,274.713074
102
+ C568.703491,255.555466 548.543213,244.076111 524.373901,240.455948
103
+ C513.742554,238.863556 503.544983,242.914673 494.094208,247.402267
104
+ C458.815063,264.154144 439.589569,292.120056 437.455444,331.277863
105
+ C436.885193,341.740936 439.517578,351.761383 444.709564,360.990906
106
+ C445.507843,362.409912 446.254150,363.858124 447.763702,366.669525
107
+ C441.737213,365.993011 436.723083,365.747589 431.834900,364.830811
108
+ C394.910004,357.905762 365.030243,327.864777 360.603027,290.610352
109
+ C358.946777,276.673065 360.996429,261.961884 363.356293,247.940109
110
+ C372.276398,194.939011 396.510132,149.623566 434.238464,111.452431
111
+ C436.344940,109.321198 438.572540,107.309639 441.015747,105.015450
112
+ M523.796143,200.964203
113
+ C522.979370,200.806061 522.153381,200.684708 521.347168,200.484161
114
+ C511.964752,198.150375 505.739960,190.440384 506.015442,181.511810
115
+ C506.292053,172.544968 512.964478,165.113678 522.410034,163.391052
116
+ C528.999146,162.189362 534.425354,164.852509 539.153198,168.766846
117
+ C541.656067,166.404358 544.030029,164.163544 546.391113,161.934906
118
+ C535.207764,149.868927 515.326111,149.927109 503.764648,161.836975
119
+ C492.335419,173.610657 493.100830,193.056198 505.417236,203.820190
120
+ C517.457336,214.342712 537.192993,213.508774 546.093628,202.189407
121
+ C543.863281,199.842941 541.645081,197.509277 539.426880,195.175613
122
+ C539.477722,195.664429 539.528503,196.153259 539.579346,196.642075
123
+ C534.598694,198.089890 529.617981,199.537689 523.796143,200.964203
124
+ z"/>
125
+ <path fill="#F4BA17" opacity="1.000000" stroke="none"
126
+ d="
127
+ M286.857971,492.402985
128
+ C322.877258,459.923096 363.870605,436.812317 409.909119,422.683990
129
+ C412.115295,422.006958 414.867096,422.180786 417.141144,422.791412
130
+ C449.897797,431.587128 482.598022,440.593750 515.372437,449.321808
131
+ C518.534851,450.164001 522.300964,450.242554 525.448730,449.404907
132
+ C558.238403,440.679779 590.944153,431.639587 623.725525,422.882690
133
+ C626.423889,422.161865 629.713745,422.200836 632.377991,423.023193
134
+ C676.901917,436.766174 716.653381,459.096100 751.669678,489.845367
135
+ C752.286987,490.387451 752.879761,490.957520 753.920410,491.916840
136
+ C738.051208,516.184204 719.173889,537.685486 697.214539,556.985291
137
+ C693.878845,553.465637 690.823608,549.786621 687.312561,546.611755
138
+ C665.744080,527.108459 635.979919,523.518494 610.255371,536.938660
139
+ C577.636902,553.955383 542.882812,564.440125 506.608704,569.950623
140
+ C469.791931,575.543579 432.863312,575.804749 396.291962,568.749573
141
+ C385.114655,566.593323 374.407410,560.972046 364.045837,555.811401
142
+ C334.755707,541.223022 309.770172,521.000305 288.657562,496.006378
143
+ C287.835724,495.033447 287.329773,493.793732 286.857971,492.402985
144
+ z"/>
145
+ <path fill="#F4BA17" opacity="1.000000" stroke="none"
146
+ d="
147
+ M638.559448,649.607422
148
+ C653.131897,643.127319 667.338623,636.799011 681.092896,630.672180
149
+ C675.186523,765.328125 573.221985,890.897766 441.421356,927.655945
150
+ C445.212494,920.709351 449.580719,914.012512 452.707825,906.779114
151
+ C475.313782,854.488708 468.862305,805.781311 433.601837,761.123535
152
+ C402.386169,721.588440 379.822174,677.662048 364.879761,628.577820
153
+ C366.770874,629.544006 368.008179,630.075806 369.145020,630.771667
154
+ C394.125427,646.062805 421.185272,655.780762 450.375763,657.410278
155
+ C465.515686,658.255371 480.882416,655.798584 496.093933,654.298462
156
+ C504.514069,653.468018 512.810059,651.432678 521.196533,650.169861
157
+ C523.254150,649.859985 525.521851,650.153320 527.565796,650.671387
158
+ C544.380371,654.932678 561.320618,658.366577 578.743958,658.635498
159
+ C599.040955,658.948853 618.869507,656.015442 638.559448,649.607422
160
+ z"/>
161
+ <path fill="#F3B917" opacity="1.000000" stroke="none"
162
+ d="
163
+ M451.996887,582.225220
164
+ C506.255249,582.294250 557.596436,571.262329 606.234131,548.288513
165
+ C616.340271,543.514893 626.043884,538.038574 637.562927,537.450195
166
+ C659.575134,536.325806 677.023743,544.661377 690.581665,562.800293
167
+ C685.476868,566.646118 680.675537,570.437500 675.700134,573.984924
168
+ C618.847046,614.520935 555.692078,638.323059 486.434967,647.405457
169
+ C430.264038,654.771729 382.985504,637.453735 342.608459,599.413086
170
+ C319.447479,577.592346 304.310333,550.579102 296.144836,519.756653
171
+ C295.980042,519.134644 296.025665,518.456909 295.873596,516.571472
172
+ C298.291534,518.797302 300.020294,520.352478 301.709656,521.949341
173
+ C326.346069,545.236816 354.337128,563.460327 386.332123,574.558289
174
+ C398.218109,578.681030 411.400055,579.317017 424.076202,580.828186
175
+ C433.142700,581.909058 442.351196,581.799133 451.996887,582.225220
176
+ z"/>
177
+ <path fill="#F2B817" opacity="1.000000" stroke="none"
178
+ d="
179
+ M539.279968,436.201538
180
+ C538.570312,436.408813 538.251221,436.508148 537.944458,436.636871
181
+ C526.683472,441.361206 515.781982,440.154175 504.132446,436.778748
182
+ C466.920624,425.996552 429.426819,416.187622 392.043884,405.995544
183
+ C390.645874,405.614380 389.268799,405.156464 386.824615,404.412476
184
+ C406.958923,395.052887 426.206024,386.105682 445.401093,377.182709
185
+ C451.112213,383.187500 456.381653,389.405701 462.337891,394.876129
186
+ C492.288269,422.383606 534.791809,427.117798 568.666138,406.952454
187
+ C578.925293,400.845184 586.595276,392.197998 592.797180,382.136292
188
+ C593.749573,380.591156 594.662292,379.021637 595.877441,376.987946
189
+ C615.544373,386.029968 635.089294,395.015900 655.757202,404.518158
190
+ C616.233948,415.273621 577.955139,425.690460 539.279968,436.201538
191
+ z"/>
192
+ <path fill="#F2B817" opacity="1.000000" stroke="none"
193
+ d="
194
+ M635.789856,641.836487
195
+ C603.639343,651.544189 570.121521,652.872437 542.504456,645.372620
196
+ C622.343140,624.064514 689.811462,583.441650 745.785767,523.547119
197
+ C729.752136,581.965942 693.203857,621.317932 635.789856,641.836487
198
+ z"/>
199
+ <path fill="#48240F" opacity="1.000000" stroke="none"
200
+ d="
201
+ M524.216736,200.974854
202
+ C529.617981,199.537689 534.598694,198.089890 539.579346,196.642075
203
+ C539.528503,196.153259 539.477722,195.664429 539.426880,195.175613
204
+ C541.645081,197.509277 543.863281,199.842941 546.093628,202.189407
205
+ C537.192993,213.508774 517.457336,214.342712 505.417236,203.820190
206
+ C493.100830,193.056198 492.335419,173.610657 503.764648,161.836975
207
+ C515.326111,149.927109 535.207764,149.868927 546.391113,161.934906
208
+ C544.030029,164.163544 541.656067,166.404358 539.153198,168.766846
209
+ C534.425354,164.852509 528.999146,162.189362 522.410034,163.391052
210
+ C512.964478,165.113678 506.292053,172.544968 506.015442,181.511810
211
+ C505.739960,190.440384 511.964752,198.150375 521.347168,200.484161
212
+ C522.153381,200.684708 522.979370,200.806061 524.216736,200.974854
213
+ z"/>`;
214
+ export default CS_LOGO_MARK_INNER;
@@ -0,0 +1,44 @@
1
+ <!-- @dsCard group="Components" viewport="700x220" name="Logo" subtitle="Official mark — Umber ground, Ochre genie. Never recolour." -->
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
+ <link rel="stylesheet" href="../../styles.css" />
8
+ <style>
9
+ body { margin: 0; background: var(--cs-color-surface-page); padding: 22px 24px; }
10
+ .row { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
11
+ .swatch { display: grid; place-items: center; width: 96px; height: 96px; border-radius: var(--cs-radius-lg); }
12
+ .on-umber { background: var(--cs-color-brand-umber); }
13
+ .on-page { background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); }
14
+ .lockup { display: flex; align-items: center; gap: 12px; }
15
+ .lockup b { font: 800 22px/1 var(--cs-font-family-ui); color: var(--cs-color-brand-umber); letter-spacing: -.01em; }
16
+ .cap { font: 500 12px/1.4 var(--cs-font-family-ui); color: var(--cs-color-text-muted); }
17
+ </style>
18
+ <script src="https://unpkg.com/react@18.3.1/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
19
+ <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
20
+ <script src="https://unpkg.com/@babel/standalone@7.29.0/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
21
+ <script src="../../_ds_bundle.js"></script>
22
+ </head>
23
+ <body>
24
+ <div id="root"></div>
25
+ <script type="text/babel">
26
+ const { Logo } = (window[Object.keys(window).find(k=>/^CyberSkillDesignSystem_[0-9a-f]{6}$/.test(k))]||{});
27
+ function Demo() {
28
+ return (
29
+ <div className="row">
30
+ <div className="swatch on-page"><Logo size={64} /></div>
31
+ <div className="lockup"><Logo size={44} /><b>CyberSkill</b></div>
32
+ <div>
33
+ <div className="lockup" style={{gap:16}}>
34
+ <Logo size={40} /><Logo size={28} /><Logo size={20} />
35
+ </div>
36
+ <p className="cap" style={{marginTop:10}}>Clear space ≥ 25% of mark height. Do not recolour, rotate, or stretch.</p>
37
+ </div>
38
+ </div>
39
+ );
40
+ }
41
+ ReactDOM.createRoot(document.getElementById("root")).render(<Demo />);
42
+ </script>
43
+ </body>
44
+ </html>
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ /** In-page table of contents with scrollspy: highlights the section currently in
4
+ * view (IntersectionObserver; ochre rail marker). */
5
+ export interface AnchorItem { id: string; label: ReactNode; }
6
+ export interface AnchorProps {
7
+ items: AnchorItem[];
8
+ title?: ReactNode;
9
+ className?: string;
10
+ }
11
+ export function Anchor(props: AnchorProps): React.ReactElement;
@@ -0,0 +1,12 @@
1
+ import figma from '@figma/code-connect'
2
+ import { Anchor } from './Anchor.jsx'
3
+
4
+ /**
5
+ * Code Connect stub — Anchor
6
+ * Prop maps stay minimal until the matching Figma library component is published;
7
+ * then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
8
+ */
9
+ figma.connect(Anchor, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-4', {
10
+ example: () => <Anchor />,
11
+ imports: ["import { Anchor } from '@cyberskill/design'"],
12
+ })
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ import { cx } from "../_utils/cx.js";
3
+
4
+ /** CyberSkill Anchor — in-page table of contents with scrollspy (IntersectionObserver). items: {id,label}. */
5
+ export function Anchor({ items = [], title, className }) {
6
+ const [act, setAct] = React.useState(items.length ? items[0].id : null);
7
+ React.useEffect(() => {
8
+ const els = items.map((it) => document.getElementById(it.id)).filter(Boolean);
9
+ if (!els.length) return;
10
+ const io = new IntersectionObserver((es) => {
11
+ const vis = es.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
12
+ if (vis[0]) setAct(vis[0].target.id);
13
+ }, { rootMargin: "-20% 0px -70% 0px" });
14
+ els.forEach((el) => io.observe(el));
15
+ return () => io.disconnect();
16
+ }, [items]);
17
+ return (
18
+ <nav className={cx("cs-anchor", className)} aria-label={typeof title === "string" ? title : undefined}>
19
+ {title ? <div className="cs-anchor__title">{title}</div> : null}
20
+ {items.map((it) => (
21
+ <a key={it.id} href={"#" + it.id} className={cx("cs-anchor__item", act === it.id && "is-active")} aria-current={act === it.id ? "location" : undefined}>{it.label}</a>
22
+ ))}
23
+ </nav>
24
+ );
25
+ }
@@ -0,0 +1,5 @@
1
+ **Anchor** — in-page TOC with scrollspy (ochre rail marks the active section).
2
+
3
+ ```jsx
4
+ <Anchor title="On this page" items={[{id:"intro",label:"Intro"},{id:"pricing",label:"Pricing"}]}/>
5
+ ```
@@ -0,0 +1,9 @@
1
+ /** Scroll-to-top button; renders after `threshold` px of scroll. Bilingual aria. */
2
+ export interface BackTopProps {
3
+ /** Show after this many px. Default 320. */
4
+ threshold?: number;
5
+ label?: string;
6
+ lang?: string;
7
+ className?: string;
8
+ }
9
+ export function BackTop(props: BackTopProps): React.ReactElement;
@@ -0,0 +1,12 @@
1
+ import figma from '@figma/code-connect'
2
+ import { BackTop } from './BackTop.jsx'
3
+
4
+ /**
5
+ * Code Connect stub — BackTop
6
+ * Prop maps stay minimal until the matching Figma library component is published;
7
+ * then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
8
+ */
9
+ figma.connect(BackTop, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-6', {
10
+ example: () => <BackTop />,
11
+ imports: ["import { BackTop } from '@cyberskill/design'"],
12
+ })
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { makeT, useLang } from "../_i18n/i18n.js";
3
+ import { cx } from "../_utils/cx.js";
4
+
5
+ /** CyberSkill BackTop — scroll-to-top button; appears after a scroll threshold. */
6
+ export function BackTop({ threshold = 320, label, lang, className }) {
7
+ const [show, setShow] = React.useState(false);
8
+ const [ref, L] = useLang(lang);
9
+ const lbl = label != null ? label : makeT("BackTop", L)("label");
10
+ React.useEffect(() => {
11
+ const on = () => setShow(window.scrollY > threshold);
12
+ on();
13
+ window.addEventListener("scroll", on, { passive: true });
14
+ return () => window.removeEventListener("scroll", on);
15
+ }, [threshold]);
16
+ if (!show) return <span ref={ref} style={{ display: "none" }} />;
17
+ return (
18
+ <button ref={ref} type="button" className={cx("cs-backtop", className)} aria-label={lbl}
19
+ onClick={() => window.scrollTo({ top: 0, behavior: "smooth" })}>
20
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7" /></svg>
21
+ </button>
22
+ );
23
+ }
@@ -0,0 +1,5 @@
1
+ **BackTop** — scroll-to-top button after a threshold (bilingual aria).
2
+
3
+ ```jsx
4
+ <BackTop threshold={400}/>
5
+ ```
@@ -0,0 +1,14 @@
1
+ import type * as React from "react";
2
+ import type { ReactNode } from "react";
3
+
4
+ export interface BreadcrumbItem { label: ReactNode; href?: string; }
5
+
6
+ /**
7
+ * Hierarchical navigation trail. The last item renders as the current page
8
+ * (aria-current), the rest as links.
9
+ */
10
+ export interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
11
+ items: BreadcrumbItem[];
12
+ }
13
+
14
+ export function Breadcrumb(props: BreadcrumbProps): React.ReactElement;
@@ -0,0 +1,12 @@
1
+ import figma from '@figma/code-connect'
2
+ import { Breadcrumb } from './Breadcrumb.jsx'
3
+
4
+ /**
5
+ * Code Connect stub — Breadcrumb
6
+ * Prop maps stay minimal until the matching Figma library component is published;
7
+ * then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
8
+ */
9
+ figma.connect(Breadcrumb, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-8', {
10
+ example: () => <Breadcrumb />,
11
+ imports: ["import { Breadcrumb } from '@cyberskill/design'"],
12
+ })
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import { makeT, useLang } from "../_i18n/i18n.js";
3
+ import { cx } from "../_utils/cx.js";
4
+
5
+ /** CyberSkill Breadcrumb — hierarchical trail; last item is current. */
6
+ export function Breadcrumb({ items = [], lang, className, ...props }) {
7
+ const [ref, L] = useLang(lang);
8
+ return (
9
+ <nav ref={ref} aria-label={makeT("Breadcrumb", L)("label")} {...props}>
10
+ <ol className={cx("cs-breadcrumb", className)}>
11
+ {items.map((it, i) => {
12
+ const last = i === items.length - 1;
13
+ return (
14
+ <li key={i}>
15
+ {last
16
+ ? <span className="cs-breadcrumb__current" aria-current="page">{it.label}</span>
17
+ : <><a href={it.href || "#"}>{it.label}</a><span className="cs-breadcrumb__sep" aria-hidden="true">/</span></>}
18
+ </li>
19
+ );
20
+ })}
21
+ </ol>
22
+ </nav>
23
+ );
24
+ }
@@ -0,0 +1,5 @@
1
+ **Breadcrumb** — hierarchical trail; last item is the current page.
2
+
3
+ ```jsx
4
+ <Breadcrumb items={[{label:"Status Hub",href:"/"},{label:"Platform"},{label:"Design System v1.6"}]} />
5
+ ```
@@ -0,0 +1,19 @@
1
+ import type * as React from "react";
2
+ import type { ReactNode } from "react";
3
+
4
+ export interface CommandItem { label: string; icon?: ReactNode; shortcut?: ReactNode; onSelect?: () => void; }
5
+ export interface CommandGroup { label?: ReactNode; items: CommandItem[]; }
6
+
7
+ /**
8
+ * ⌘K command palette: scrim + search box + grouped, filterable actions. The
9
+ * brand's "command palette (Heavy Glass)" surface. Controlled via open/onClose;
10
+ * Escape and scrim-click close it.
11
+ */
12
+ export interface CommandPaletteProps {
13
+ open: boolean;
14
+ onClose?: () => void;
15
+ placeholder?: string;
16
+ groups: CommandGroup[];
17
+ className?: string;
18
+ }
19
+ export function CommandPalette(props: CommandPaletteProps): React.ReactElement | null;
@@ -0,0 +1,12 @@
1
+ import figma from '@figma/code-connect'
2
+ import { CommandPalette } from './CommandPalette.jsx'
3
+
4
+ /**
5
+ * Code Connect stub — CommandPalette
6
+ * Prop maps stay minimal until the matching Figma library component is published;
7
+ * then set nodeId in code-connect/node-map.json and re-run generate-code-connect.
8
+ */
9
+ figma.connect(CommandPalette, 'https://www.figma.com/design/CS_FIGMA_FILE_KEY/CyberSkill?node-id=9999-22', {
10
+ example: () => <CommandPalette />,
11
+ imports: ["import { CommandPalette } from '@cyberskill/design'"],
12
+ })
@@ -0,0 +1,48 @@
1
+ import React from "react";
2
+ import { makeT, useLang } from "../_i18n/i18n.js";
3
+ import { cx } from "../_utils/cx.js";
4
+
5
+ /** CyberSkill CommandPalette — ⌘K overlay with search + grouped actions. Controlled via open/onClose. */
6
+ export function CommandPalette({ open, onClose, placeholder, groups = [], lang, className }) {
7
+ const [q, setQ] = React.useState("");
8
+ React.useEffect(() => {
9
+ if (!open) return;
10
+ const onKey = (e) => { if (e.key === "Escape") onClose && onClose(); };
11
+ document.addEventListener("keydown", onKey);
12
+ return () => document.removeEventListener("keydown", onKey);
13
+ }, [open]);
14
+ const [ref, L] = useLang(lang);
15
+ const t = makeT("CommandPalette", L);
16
+ const ph = placeholder != null ? placeholder : t("placeholder");
17
+ if (!open) return null;
18
+ const needle = q.trim().toLowerCase();
19
+ return (
20
+ <div ref={ref} className="cs-cmdk-scrim" onClick={onClose}>
21
+ <div className={cx("cs-cmdk", className)} role="dialog" aria-modal="true" aria-label={t("aria")} onClick={(e) => e.stopPropagation()}>
22
+ <div className="cs-cmdk__search">
23
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7" /><path d="M21 21l-4.3-4.3" /></svg>
24
+ <input autoFocus value={q} onChange={(e) => setQ(e.target.value)} placeholder={ph} />
25
+ <span className="cs-kbd">{t("esc")}</span>
26
+ </div>
27
+ <div className="cs-cmdk__list">
28
+ {groups.map((g, gi) => {
29
+ const items = (g.items || []).filter((it) => !needle || String(it.label).toLowerCase().includes(needle));
30
+ if (!items.length) return null;
31
+ return (
32
+ <React.Fragment key={gi}>
33
+ {g.label ? <div className="cs-cmdk__label">{g.label}</div> : null}
34
+ {items.map((it, ii) => (
35
+ <button key={ii} type="button" className="cs-cmdk__item" onClick={() => { it.onSelect && it.onSelect(); onClose && onClose(); }}>
36
+ {it.icon ? <span aria-hidden="true">{it.icon}</span> : null}
37
+ <span>{it.label}</span>
38
+ {it.shortcut ? <span className="cs-kbd">{it.shortcut}</span> : null}
39
+ </button>
40
+ ))}
41
+ </React.Fragment>
42
+ );
43
+ })}
44
+ </div>
45
+ </div>
46
+ </div>
47
+ );
48
+ }
@@ -0,0 +1,7 @@
1
+ **CommandPalette** — ⌘K overlay with search + grouped, filterable actions (Escape / scrim-click close). Controlled via `open`/`onClose`.
2
+
3
+ ```jsx
4
+ <CommandPalette open={open} onClose={() => setOpen(false)} groups={[
5
+ { label: "Go to", items: [{ label: "Dashboard", shortcut: "G D", onSelect: goDash }] },
6
+ ]} />
7
+ ```