@cyberskill/design 1.0.0 → 1.1.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 (264) hide show
  1. package/DESIGN.md +10 -9
  2. package/README.md +31 -28
  3. package/SKILL.md +13 -9
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +660 -202
  6. package/_ds_manifest.json +1 -1
  7. package/_esm/cs.mjs +14 -8
  8. package/_esm/react.d.ts +216 -0
  9. package/_esm/react.mjs +114 -0
  10. package/base/collections.css +31 -0
  11. package/base/components.css +3 -0
  12. package/base/data.css +33 -0
  13. package/base/forms.css +8 -0
  14. package/base/interaction.css +1 -0
  15. package/base/typography.css +6 -0
  16. package/components/_i18n/strings.js +8 -4
  17. package/components/ai/ai-conversation.card.html +2 -2
  18. package/components/ai/ai-lumi.card.html +2 -2
  19. package/components/ai/ai.card.html +2 -2
  20. package/components/brand/brand.card.html +2 -2
  21. package/components/button/buttons.card.html +2 -2
  22. package/components/data/AspectRatio.d.ts +16 -0
  23. package/components/data/AspectRatio.figma.tsx +12 -0
  24. package/components/data/AspectRatio.jsx +16 -0
  25. package/components/data/AspectRatio.prompt.md +7 -0
  26. package/components/data/Collapsible.d.ts +21 -0
  27. package/components/data/Collapsible.figma.tsx +12 -0
  28. package/components/data/Collapsible.jsx +49 -0
  29. package/components/data/Collapsible.prompt.md +7 -0
  30. package/components/data/Image.d.ts +4 -0
  31. package/components/data/Image.prompt.md +2 -2
  32. package/components/data/Item.d.ts +26 -0
  33. package/components/data/Item.figma.tsx +12 -0
  34. package/components/data/Item.jsx +63 -0
  35. package/components/data/Item.prompt.md +10 -0
  36. package/components/data/ScrollArea.d.ts +16 -0
  37. package/components/data/ScrollArea.figma.tsx +12 -0
  38. package/components/data/ScrollArea.jsx +25 -0
  39. package/components/data/ScrollArea.prompt.md +7 -0
  40. package/components/data/collections.card.html +15 -4
  41. package/components/data/data.card.html +15 -4
  42. package/components/datatable/datatable.card.html +2 -2
  43. package/components/dialog/dialog.card.html +2 -2
  44. package/components/feedback/feedback-2.card.html +2 -2
  45. package/components/feedback/feedback.card.html +2 -2
  46. package/components/forms/Cascader.jsx +5 -3
  47. package/components/forms/Editor.prompt.md +1 -1
  48. package/components/forms/InputGroup.d.ts +4 -0
  49. package/components/forms/InputGroup.jsx +38 -8
  50. package/components/forms/InputGroup.prompt.md +3 -3
  51. package/components/forms/NativeSelect.d.ts +22 -0
  52. package/components/forms/NativeSelect.figma.tsx +12 -0
  53. package/components/forms/NativeSelect.jsx +56 -0
  54. package/components/forms/NativeSelect.prompt.md +10 -0
  55. package/components/forms/NumberField.d.ts +5 -0
  56. package/components/forms/NumberField.jsx +51 -7
  57. package/components/forms/NumberField.prompt.md +2 -2
  58. package/components/forms/SegmentedControl.jsx +1 -1
  59. package/components/forms/TagInput.d.ts +3 -0
  60. package/components/forms/TagInput.jsx +62 -20
  61. package/components/forms/TagInput.prompt.md +2 -2
  62. package/components/forms/forms-2.card.html +2 -2
  63. package/components/forms/forms.card.html +5 -4
  64. package/components/icon/Icon.prompt.md +1 -1
  65. package/components/icon/icon.card.html +2 -2
  66. package/components/logo/Logo.jsx +2 -1
  67. package/components/logo/logo.card.html +2 -2
  68. package/components/navigation/Menu.jsx +14 -1
  69. package/components/navigation/navigation.card.html +2 -2
  70. package/components/navigation/shell.card.html +2 -2
  71. package/components/overlays/AlertDialog.d.ts +29 -0
  72. package/components/overlays/AlertDialog.figma.tsx +12 -0
  73. package/components/overlays/AlertDialog.jsx +142 -0
  74. package/components/overlays/AlertDialog.prompt.md +12 -0
  75. package/components/overlays/Drawer.jsx +1 -1
  76. package/components/overlays/Popconfirm.jsx +14 -1
  77. package/components/overlays/Popover.jsx +14 -1
  78. package/components/overlays/alertdialog.card.html +42 -0
  79. package/components/overlays/overlays.card.html +2 -2
  80. package/components/textfield/textfield.card.html +2 -2
  81. package/docs/benchmark-rubric.md +46 -0
  82. package/docs/ci-cd.md +17 -11
  83. package/docs/consumer-grant.md +37 -0
  84. package/docs/consuming.md +45 -16
  85. package/docs/contrast-report.md +91 -103
  86. package/docs/conventions.md +12 -9
  87. package/docs/decisions.md +33 -10
  88. package/docs/deploy.md +1 -1
  89. package/docs/design-styles.md +26 -8
  90. package/docs/figma.md +3 -3
  91. package/docs/live-hub.md +5 -3
  92. package/docs/products.md +13 -11
  93. package/docs/quality-gates.md +35 -21
  94. package/docs/release-notes.md +13 -3
  95. package/docs/status/assets/favicon.svg +5 -0
  96. package/docs/status/assets/status-legacy.css +399 -0
  97. package/docs/status/assets/status-legacy.js +505 -0
  98. package/docs/status/assets/status.css +644 -0
  99. package/docs/status/assets/status.js +1308 -0
  100. package/docs/status/data/status-feed.json +1 -0
  101. package/docs/status/data/task/TASK-REL-001.js +1 -0
  102. package/docs/status/index.html +45 -0
  103. package/docs/status/roadmap.html +4 -0
  104. package/docs/status/status-legacy.html +121 -0
  105. package/docs/storybook.md +5 -4
  106. package/docs/sync.md +3 -2
  107. package/docs/tasks/BACKLOG.md +25 -0
  108. package/docs/tasks/release/TASK-REL-001-launch-1-1-0/spec.md +55 -0
  109. package/docs/template-schema-v2.md +15 -3
  110. package/docs/vi/benchmark-rubric.md +46 -0
  111. package/docs/vi/ci-cd.md +17 -11
  112. package/docs/vi/consumer-grant.md +37 -0
  113. package/docs/vi/consuming.md +45 -16
  114. package/docs/vi/contrast-report.md +94 -106
  115. package/docs/vi/conventions.md +12 -9
  116. package/docs/vi/decisions.md +33 -10
  117. package/docs/vi/deploy.md +1 -1
  118. package/docs/vi/design-styles.md +26 -8
  119. package/docs/vi/figma.md +3 -3
  120. package/docs/vi/live-hub.md +5 -3
  121. package/docs/vi/products.md +13 -11
  122. package/docs/vi/quality-gates.md +35 -21
  123. package/docs/vi/release-notes.md +18 -8
  124. package/docs/vi/storybook.md +5 -4
  125. package/docs/vi/sync.md +3 -2
  126. package/docs/vi/template-schema-v2.md +15 -3
  127. package/docs/viewer.html +2 -2
  128. package/fonts/spacegrotesk-var-latin-ext.woff2 +0 -0
  129. package/fonts/spacegrotesk-var-latin.woff2 +0 -0
  130. package/fonts/spacegrotesk-var-vietnamese.woff2 +0 -0
  131. package/guidelines/atomic-view.html +40 -27
  132. package/guidelines/elements-geometry.html +69 -0
  133. package/guidelines/elements-variants.html +17 -17
  134. package/guidelines/type-families.html +16 -10
  135. package/llms.txt +17 -11
  136. package/package.json +38 -16
  137. package/styles.css +1 -0
  138. package/templates/ai-cluster-demo.html +29 -14
  139. package/templates/app-shell/support.js +4 -4
  140. package/templates/article/content-schema.json +6 -0
  141. package/templates/article/support.js +4 -4
  142. package/templates/auth/support.js +4 -4
  143. package/templates/bod-deck/support.js +4 -4
  144. package/templates/bod-investor-update/support.js +4 -4
  145. package/templates/bod-memo/support.js +4 -4
  146. package/templates/bod-minutes/content-schema.json +12 -0
  147. package/templates/bod-minutes/support.js +4 -4
  148. package/templates/bod-report/support.js +4 -4
  149. package/templates/bod-resolution/support.js +4 -4
  150. package/templates/culture-event-invite/support.js +4 -4
  151. package/templates/dashboard/support.js +4 -4
  152. package/templates/delivery-change-note/support.js +4 -4
  153. package/templates/delivery-kickoff/support.js +4 -4
  154. package/templates/delivery-qbr-deck/support.js +4 -4
  155. package/templates/delivery-runbook/content-schema.json +6 -0
  156. package/templates/delivery-runbook/support.js +4 -4
  157. package/templates/delivery-status-email/support.js +4 -4
  158. package/templates/doc-style-guide/DocStyleGuide.dc.html +2 -2
  159. package/templates/doc-style-guide/support.js +4 -4
  160. package/templates/doc-suite-index/support.js +4 -4
  161. package/templates/doc-templates/DocTemplates.dc.html +1 -1
  162. package/templates/doc-templates/support.js +4 -4
  163. package/templates/email/support.js +4 -4
  164. package/templates/email-safe/README.md +17 -4
  165. package/templates/email-safe/email-launch.html +3 -3
  166. package/templates/email-safe/email-newsletter.html +1 -1
  167. package/templates/finance-dunning-email/support.js +4 -4
  168. package/templates/finance-expense-report/support.js +4 -4
  169. package/templates/finance-invoice/support.js +4 -4
  170. package/templates/finance-quote/support.js +4 -4
  171. package/templates/hr-announcement/support.js +4 -4
  172. package/templates/hr-interview-kit/content-schema.json +12 -0
  173. package/templates/hr-interview-kit/support.js +4 -4
  174. package/templates/hr-offboarding/content-schema.json +12 -0
  175. package/templates/hr-offboarding/support.js +4 -4
  176. package/templates/hr-performance-review/content-schema.json +12 -0
  177. package/templates/hr-performance-review/support.js +4 -4
  178. package/templates/hr-pip/content-schema.json +12 -0
  179. package/templates/hr-pip/support.js +4 -4
  180. package/templates/legal-msa/content-schema.json +16 -0
  181. package/templates/legal-msa/support.js +4 -4
  182. package/templates/legal-sow/support.js +4 -4
  183. package/templates/marketing-campaign-brief/support.js +4 -4
  184. package/templates/marketing-case-study/support.js +4 -4
  185. package/templates/marketing-launch/support.js +4 -4
  186. package/templates/marketing-newsletter/support.js +4 -4
  187. package/templates/marketing-page/content-schema.json +0 -1
  188. package/templates/marketing-page/support.js +4 -4
  189. package/templates/marketing-press-release/support.js +4 -4
  190. package/templates/marketing-social-kit/support.js +4 -4
  191. package/templates/playground.html +8 -4
  192. package/templates/sales-one-pager/support.js +4 -4
  193. package/templates/sales-proposal-deck/support.js +4 -4
  194. package/templates/settings/Settings.dc.html +26 -14
  195. package/templates/settings/content-schema.json +36 -0
  196. package/templates/settings/support.js +4 -4
  197. package/templates/slide-deck/support.js +4 -4
  198. package/templates/team-meeting-agenda/content-schema.json +16 -0
  199. package/templates/team-meeting-agenda/support.js +4 -4
  200. package/templates/tech-incident-report/support.js +4 -4
  201. package/templates/tech-release-notes/support.js +4 -4
  202. package/templates/tech-retro/content-schema.json +12 -0
  203. package/templates/tech-retro/support.js +4 -4
  204. package/templates/tech-rfc/content-schema.json +6 -0
  205. package/templates/tech-rfc/support.js +4 -4
  206. package/templates/vn-appointment-transfer/support.js +4 -4
  207. package/templates/vn-certificate-of-employment/support.js +4 -4
  208. package/templates/vn-code-of-conduct/support.js +4 -4
  209. package/templates/vn-compensation-regulation/support.js +4 -4
  210. package/templates/vn-contract-amendment/support.js +4 -4
  211. package/templates/vn-contractor-agreement/support.js +4 -4
  212. package/templates/vn-data-protection-policy/support.js +4 -4
  213. package/templates/vn-disciplinary-case-file/support.js +4 -4
  214. package/templates/vn-disciplinary-schedule/content-schema.json +15 -0
  215. package/templates/vn-disciplinary-schedule/support.js +4 -4
  216. package/templates/vn-employee-request/support.js +4 -4
  217. package/templates/vn-exit-handover/support.js +4 -4
  218. package/templates/vn-foreign-employee-pack/support.js +4 -4
  219. package/templates/vn-grassroots-democracy/support.js +4 -4
  220. package/templates/vn-infosec-policy/support.js +4 -4
  221. package/templates/vn-internal-labor-regulations/support.js +4 -4
  222. package/templates/vn-internship-agreement/support.js +4 -4
  223. package/templates/vn-job-description/support.js +4 -4
  224. package/templates/vn-labor-contract/support.js +4 -4
  225. package/templates/vn-labour-management-book/content-schema.json +15 -0
  226. package/templates/vn-labour-management-book/support.js +4 -4
  227. package/templates/vn-mutual-nda/support.js +4 -4
  228. package/templates/vn-ndnca-ip/support.js +4 -4
  229. package/templates/vn-offer-letter/support.js +4 -4
  230. package/templates/vn-onboarding-checklist/support.js +4 -4
  231. package/templates/vn-pdpl-consent/support.js +4 -4
  232. package/templates/vn-performance-evaluation-regulation/support.js +4 -4
  233. package/templates/vn-performance-review-form/support.js +4 -4
  234. package/templates/vn-phantom-stock/support.js +4 -4
  235. package/templates/vn-probation-contract/support.js +4 -4
  236. package/templates/vn-receipt-acknowledgement/content-schema.json +15 -0
  237. package/templates/vn-receipt-acknowledgement/support.js +4 -4
  238. package/templates/vn-remote-work-policy/support.js +4 -4
  239. package/templates/vn-resignation-letter/support.js +4 -4
  240. package/templates/vn-salary-scale/content-schema.json +15 -0
  241. package/templates/vn-salary-scale/support.js +4 -4
  242. package/templates/vn-sow-appendix/support.js +4 -4
  243. package/templates/vn-termination-decision/support.js +4 -4
  244. package/templates/vn-total-rewards-appendix/support.js +4 -4
  245. package/templates/vn-training-commitment/support.js +4 -4
  246. package/templates/vn-travel-expense-policy/support.js +4 -4
  247. package/tokens/element-seeds.json +112 -0
  248. package/tokens/elements.css +274 -187
  249. package/tokens/fonts.css +12 -3
  250. package/tokens/native/CSTokens.kt +84 -68
  251. package/tokens/native/CSTokens.swift +84 -68
  252. package/tokens/native/cs_tokens.dart +84 -68
  253. package/tokens/provenance.json +9 -9
  254. package/tokens/styles.css +15 -0
  255. package/tokens/tokens.dtcg.json +258 -233
  256. package/tokens/tokens.js +168 -167
  257. package/tokens/tokens.json +167 -166
  258. package/tokens/typography.css +9 -1
  259. package/ui_kits/status-hub/README.md +1 -2
  260. package/ui_kits/status-hub/index.html +2 -2
  261. package/ui_kits/status-hub/settings.html +6 -3
  262. package/ui_kits/website/chat.html +2 -2
  263. package/ui_kits/website/index.html +2 -2
  264. package/ui_kits/status-hub/identity-lab.html +0 -134
package/_ds_bundle.js CHANGED
@@ -1,4 +1,4 @@
1
- /* @ds-bundle: {"format":4,"namespace":"CyberSkillDesignSystem_847b3c","components":[{"name":"AIDisclosureBadge","sourcePath":"components/ai/AIDisclosureBadge.jsx"},{"name":"ChatMessage","sourcePath":"components/ai/ChatMessage.jsx"},{"name":"CitationList","sourcePath":"components/ai/CitationList.jsx"},{"name":"ConfidenceMeter","sourcePath":"components/ai/ConfidenceMeter.jsx"},{"name":"HumanReviewGate","sourcePath":"components/ai/HumanReviewGate.jsx"},{"name":"PromptInput","sourcePath":"components/ai/PromptInput.jsx"},{"name":"PromptSuggestions","sourcePath":"components/ai/PromptSuggestions.jsx"},{"name":"TypingIndicator","sourcePath":"components/ai/TypingIndicator.jsx"},{"name":"LumiAvatar","sourcePath":"components/brand/LumiAvatar.jsx"},{"name":"Button","sourcePath":"components/button/Button.jsx"},{"name":"ButtonGroup","sourcePath":"components/button/ButtonGroup.jsx"},{"name":"FloatingActionButton","sourcePath":"components/button/FloatingActionButton.jsx"},{"name":"Accordion","sourcePath":"components/data/Accordion.jsx"},{"name":"Avatar","sourcePath":"components/data/Avatar.jsx"},{"name":"AvatarGroup","sourcePath":"components/data/Avatar.jsx"},{"name":"Card","sourcePath":"components/data/Card.jsx"},{"name":"CardHeader","sourcePath":"components/data/Card.jsx"},{"name":"CardBody","sourcePath":"components/data/Card.jsx"},{"name":"CardFooter","sourcePath":"components/data/Card.jsx"},{"name":"Carousel","sourcePath":"components/data/Carousel.jsx"},{"name":"Chart","sourcePath":"components/data/Chart.jsx"},{"name":"CodeBlock","sourcePath":"components/data/CodeBlock.jsx"},{"name":"Comment","sourcePath":"components/data/Comment.jsx"},{"name":"DescriptionList","sourcePath":"components/data/DescriptionList.jsx"},{"name":"Divider","sourcePath":"components/data/Divider.jsx"},{"name":"Image","sourcePath":"components/data/Image.jsx"},{"name":"Kbd","sourcePath":"components/data/Kbd.jsx"},{"name":"List","sourcePath":"components/data/List.jsx"},{"name":"ListItem","sourcePath":"components/data/List.jsx"},{"name":"Masonry","sourcePath":"components/data/Masonry.jsx"},{"name":"QRCode","sourcePath":"components/data/QRCode.jsx"},{"name":"Sortable","sourcePath":"components/data/Sortable.jsx"},{"name":"Splitter","sourcePath":"components/data/Splitter.jsx"},{"name":"Stat","sourcePath":"components/data/Stat.jsx"},{"name":"Terminal","sourcePath":"components/data/Terminal.jsx"},{"name":"Timeline","sourcePath":"components/data/Timeline.jsx"},{"name":"Tooltip","sourcePath":"components/data/Tooltip.jsx"},{"name":"Tree","sourcePath":"components/data/Tree.jsx"},{"name":"Watermark","sourcePath":"components/data/Watermark.jsx"},{"name":"DataGrid","sourcePath":"components/datatable/DataGrid.jsx"},{"name":"DataTable","sourcePath":"components/datatable/DataTable.jsx"},{"name":"TreeTable","sourcePath":"components/datatable/TreeTable.jsx"},{"name":"Dialog","sourcePath":"components/dialog/Dialog.jsx"},{"name":"Alert","sourcePath":"components/feedback/Alert.jsx"},{"name":"Badge","sourcePath":"components/feedback/Badge.jsx"},{"name":"EmptyState","sourcePath":"components/feedback/EmptyState.jsx"},{"name":"ProgressBar","sourcePath":"components/feedback/ProgressBar.jsx"},{"name":"Result","sourcePath":"components/feedback/Result.jsx"},{"name":"Skeleton","sourcePath":"components/feedback/Skeleton.jsx"},{"name":"Spinner","sourcePath":"components/feedback/Spinner.jsx"},{"name":"StatusIndicator","sourcePath":"components/feedback/StatusIndicator.jsx"},{"name":"Tag","sourcePath":"components/feedback/Tag.jsx"},{"name":"ToastStack","sourcePath":"components/feedback/Toast.jsx"},{"name":"Toast","sourcePath":"components/feedback/Toast.jsx"},{"name":"Calendar","sourcePath":"components/forms/Calendar.jsx"},{"name":"Cascader","sourcePath":"components/forms/Cascader.jsx"},{"name":"Checkbox","sourcePath":"components/forms/Checkbox.jsx"},{"name":"ColorPicker","sourcePath":"components/forms/ColorPicker.jsx"},{"name":"Combobox","sourcePath":"components/forms/Combobox.jsx"},{"name":"DatePicker","sourcePath":"components/forms/DatePicker.jsx"},{"name":"Editor","sourcePath":"components/forms/Editor.jsx"},{"name":"FileUpload","sourcePath":"components/forms/FileUpload.jsx"},{"name":"Form","sourcePath":"components/forms/Form.jsx"},{"name":"FormField","sourcePath":"components/forms/Form.jsx"},{"name":"FormFieldArray","sourcePath":"components/forms/Form.jsx"},{"name":"FormWizard","sourcePath":"components/forms/Form.jsx"},{"name":"InlineEdit","sourcePath":"components/forms/InlineEdit.jsx"},{"name":"InputGroup","sourcePath":"components/forms/InputGroup.jsx"},{"name":"InputOTP","sourcePath":"components/forms/InputOTP.jsx"},{"name":"Mentions","sourcePath":"components/forms/Mentions.jsx"},{"name":"NumberField","sourcePath":"components/forms/NumberField.jsx"},{"name":"Radio","sourcePath":"components/forms/RadioGroup.jsx"},{"name":"RadioGroup","sourcePath":"components/forms/RadioGroup.jsx"},{"name":"Rating","sourcePath":"components/forms/Rating.jsx"},{"name":"SearchField","sourcePath":"components/forms/SearchField.jsx"},{"name":"SegmentedControl","sourcePath":"components/forms/SegmentedControl.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Slider","sourcePath":"components/forms/Slider.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"TagInput","sourcePath":"components/forms/TagInput.jsx"},{"name":"Textarea","sourcePath":"components/forms/Textarea.jsx"},{"name":"TimePicker","sourcePath":"components/forms/TimePicker.jsx"},{"name":"Toggle","sourcePath":"components/forms/Toggle.jsx"},{"name":"Transfer","sourcePath":"components/forms/Transfer.jsx"},{"name":"TreeSelect","sourcePath":"components/forms/TreeSelect.jsx"},{"name":"CS_ICONS","sourcePath":"components/icon/Icon.jsx"},{"name":"Icon","sourcePath":"components/icon/Icon.jsx"},{"name":"Logo","sourcePath":"components/logo/Logo.jsx"},{"name":"CS_LOGO_VIEWBOX","sourcePath":"components/logo/logo-data.js"},{"name":"CS_LOGO_MARK_INNER","sourcePath":"components/logo/logo-data.js"},{"name":"Anchor","sourcePath":"components/navigation/Anchor.jsx"},{"name":"BackTop","sourcePath":"components/navigation/BackTop.jsx"},{"name":"Breadcrumb","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"CommandPalette","sourcePath":"components/navigation/CommandPalette.jsx"},{"name":"Dock","sourcePath":"components/navigation/Dock.jsx"},{"name":"HotKeys","sourcePath":"components/navigation/HotKeys.jsx"},{"name":"Link","sourcePath":"components/navigation/Link.jsx"},{"name":"Menu","sourcePath":"components/navigation/Menu.jsx"},{"name":"MenuItem","sourcePath":"components/navigation/Menu.jsx"},{"name":"Menubar","sourcePath":"components/navigation/Menubar.jsx"},{"name":"NavigationMenu","sourcePath":"components/navigation/NavigationMenu.jsx"},{"name":"Pagination","sourcePath":"components/navigation/Pagination.jsx"},{"name":"Sidebar","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"NavItem","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"Steps","sourcePath":"components/navigation/Steps.jsx"},{"name":"Tabs","sourcePath":"components/navigation/Tabs.jsx"},{"name":"Tab","sourcePath":"components/navigation/Tabs.jsx"},{"name":"Toolbar","sourcePath":"components/navigation/Toolbar.jsx"},{"name":"ContextMenu","sourcePath":"components/overlays/ContextMenu.jsx"},{"name":"Drawer","sourcePath":"components/overlays/Drawer.jsx"},{"name":"HoverCard","sourcePath":"components/overlays/HoverCard.jsx"},{"name":"Popconfirm","sourcePath":"components/overlays/Popconfirm.jsx"},{"name":"Popover","sourcePath":"components/overlays/Popover.jsx"},{"name":"Tour","sourcePath":"components/overlays/Tour.jsx"},{"name":"TextField","sourcePath":"components/textfield/TextField.jsx"}],"sourceHashes":{"components/_i18n/i18n.js":"c6c51a65bd79","components/_i18n/strings.js":"e1eb94933e11","components/_utils/cx.js":"ad6a747ea116","components/ai/AIDisclosureBadge.jsx":"4c8954aa2d79","components/ai/ChatMessage.jsx":"84076f3488f2","components/ai/CitationList.jsx":"4d12ef868ff3","components/ai/ConfidenceMeter.jsx":"24e43b7f7a47","components/ai/HumanReviewGate.jsx":"922b278dca5c","components/ai/PromptInput.jsx":"7634643dafa5","components/ai/PromptSuggestions.jsx":"02d64117ecfa","components/ai/TypingIndicator.jsx":"149e3a0c7ef8","components/brand/LumiAvatar.jsx":"b6444360cf80","components/button/Button.jsx":"6d902a925eed","components/button/ButtonGroup.jsx":"1a1481f6fb93","components/button/FloatingActionButton.jsx":"ce49fe4129a3","components/data/Accordion.jsx":"fed81278cefd","components/data/Avatar.jsx":"88c8f59334e6","components/data/Card.jsx":"96e1f9ef44a9","components/data/Carousel.jsx":"caf09a766c42","components/data/Chart.jsx":"1953e9fef120","components/data/CodeBlock.jsx":"04e0bd2507e2","components/data/Comment.jsx":"81469a910d80","components/data/DescriptionList.jsx":"ce50d72546bb","components/data/Divider.jsx":"2d08b4a7b18e","components/data/Image.jsx":"da5c7d4c69af","components/data/Kbd.jsx":"3b3d867cbdd8","components/data/List.jsx":"5c221b19efe0","components/data/Masonry.jsx":"a65508731d79","components/data/QRCode.jsx":"6acaf577a7fc","components/data/Sortable.jsx":"315b50256128","components/data/Splitter.jsx":"d231064601e9","components/data/Stat.jsx":"35734a801a71","components/data/Terminal.jsx":"3a3cd4477814","components/data/Timeline.jsx":"22058a781a98","components/data/Tooltip.jsx":"4d027aff5559","components/data/Tree.jsx":"9097456de50f","components/data/Watermark.jsx":"4be0b6230d47","components/data/qr-encode.js":"14e8de77df5f","components/datatable/DataGrid.jsx":"e4aa4a47d05e","components/datatable/DataTable.jsx":"fbfad5570592","components/datatable/TreeTable.jsx":"597c35135ebb","components/dialog/Dialog.jsx":"7af51ee28ab6","components/feedback/Alert.jsx":"0bbe4e5f467a","components/feedback/Badge.jsx":"e691ae1634f8","components/feedback/EmptyState.jsx":"9a9c00523cec","components/feedback/ProgressBar.jsx":"1a66335d5d9e","components/feedback/Result.jsx":"c168f8dcb009","components/feedback/Skeleton.jsx":"86ee345cb412","components/feedback/Spinner.jsx":"cad2ed4008a6","components/feedback/StatusIndicator.jsx":"d27a5fc3db2a","components/feedback/Tag.jsx":"13d288da9f38","components/feedback/Toast.jsx":"38cc9a82ede9","components/forms/Calendar.jsx":"8a66cbe766af","components/forms/Cascader.jsx":"a7c9c504db28","components/forms/Checkbox.jsx":"2badb7b3b72b","components/forms/ColorPicker.jsx":"d04db0ee7678","components/forms/Combobox.jsx":"3f2fb4d28922","components/forms/DatePicker.jsx":"7a6c18e1e635","components/forms/Editor.jsx":"d7bed6e52cff","components/forms/FileUpload.jsx":"e8031a109093","components/forms/Form.jsx":"f7952da4b73a","components/forms/InlineEdit.jsx":"5ffb40598769","components/forms/InputGroup.jsx":"43809b604420","components/forms/InputOTP.jsx":"c3a5d02ffebc","components/forms/Mentions.jsx":"04bc4b5a4ace","components/forms/NumberField.jsx":"2233bd2b0f7c","components/forms/RadioGroup.jsx":"1a64f7600e01","components/forms/Rating.jsx":"06d345ecc5f4","components/forms/SearchField.jsx":"2a12c65900ec","components/forms/SegmentedControl.jsx":"13ebcf11f539","components/forms/Select.jsx":"1b5ba905b339","components/forms/Slider.jsx":"69aa1a5f1af8","components/forms/Switch.jsx":"0b37cfa41979","components/forms/TagInput.jsx":"2cfd1922e3e7","components/forms/Textarea.jsx":"cf244fee0e37","components/forms/TimePicker.jsx":"165192c8760c","components/forms/Toggle.jsx":"338453a34669","components/forms/Transfer.jsx":"dd0c02d1014e","components/forms/TreeSelect.jsx":"a5b1b91d1d6a","components/icon/Icon.jsx":"379dc6de903e","components/logo/Logo.jsx":"9be5058d4e86","components/logo/logo-data.js":"f1a251a50c8f","components/navigation/Anchor.jsx":"491fb330e718","components/navigation/BackTop.jsx":"5cac0081fc20","components/navigation/Breadcrumb.jsx":"45636f3b0a51","components/navigation/CommandPalette.jsx":"2b5b30906b8b","components/navigation/Dock.jsx":"3073e2870c65","components/navigation/HotKeys.jsx":"f0f707a3335d","components/navigation/Link.jsx":"d4fe3fcffd2c","components/navigation/Menu.jsx":"7f317d1f0617","components/navigation/Menubar.jsx":"1aa64f59891e","components/navigation/NavigationMenu.jsx":"020279fd7f79","components/navigation/Pagination.jsx":"a1fc19bfd104","components/navigation/Sidebar.jsx":"d578b013ad33","components/navigation/Steps.jsx":"85cb20bd45da","components/navigation/Tabs.jsx":"5d5921da1644","components/navigation/Toolbar.jsx":"9727d7bdbc5f","components/overlays/ContextMenu.jsx":"e7e3386d89ac","components/overlays/Drawer.jsx":"dc309f725369","components/overlays/HoverCard.jsx":"5cfabde80960","components/overlays/Popconfirm.jsx":"029ff3a9f510","components/overlays/Popover.jsx":"44afe3e63862","components/overlays/Tour.jsx":"9901ee649da0","components/textfield/TextField.jsx":"c06bd9729f20","image-slot.js":"0394ad34f685","tokens/tokens.js":"589bd27e752d","ui_kits/status-hub/StatusHub.jsx":"88dfd93e1664","ui_kits/status-hub/data.js":"664bbbb30cb3","ui_kits/website/Website.jsx":"c3a0938d9279","ui_kits/website/copy.js":"9d42c52c17cb"},"inlinedExternals":[],"unexposedExports":[{"name":"cx","sourcePath":"components/_utils/cx.js"},{"name":"formatCurrency","sourcePath":"components/_i18n/i18n.js"},{"name":"formatDate","sourcePath":"components/_i18n/i18n.js"},{"name":"formatNumber","sourcePath":"components/_i18n/i18n.js"},{"name":"getPath","sourcePath":"components/forms/Form.jsx"},{"name":"makeT","sourcePath":"components/_i18n/i18n.js"},{"name":"monthName","sourcePath":"components/_i18n/i18n.js"},{"name":"qrMatrix","sourcePath":"components/data/qr-encode.js"},{"name":"resolveLang","sourcePath":"components/_i18n/i18n.js"},{"name":"setPath","sourcePath":"components/forms/Form.jsx"},{"name":"strings","sourcePath":"components/_i18n/strings.js"},{"name":"tokens","sourcePath":"tokens/tokens.js"},{"name":"tr","sourcePath":"components/_i18n/i18n.js"},{"name":"useLang","sourcePath":"components/_i18n/i18n.js"}]} */
1
+ /* @ds-bundle: {"format":4,"namespace":"CyberSkillDesignSystem_847b3c","components":[{"name":"AIDisclosureBadge","sourcePath":"components/ai/AIDisclosureBadge.jsx"},{"name":"ChatMessage","sourcePath":"components/ai/ChatMessage.jsx"},{"name":"CitationList","sourcePath":"components/ai/CitationList.jsx"},{"name":"ConfidenceMeter","sourcePath":"components/ai/ConfidenceMeter.jsx"},{"name":"HumanReviewGate","sourcePath":"components/ai/HumanReviewGate.jsx"},{"name":"PromptInput","sourcePath":"components/ai/PromptInput.jsx"},{"name":"PromptSuggestions","sourcePath":"components/ai/PromptSuggestions.jsx"},{"name":"TypingIndicator","sourcePath":"components/ai/TypingIndicator.jsx"},{"name":"LumiAvatar","sourcePath":"components/brand/LumiAvatar.jsx"},{"name":"Button","sourcePath":"components/button/Button.jsx"},{"name":"ButtonGroup","sourcePath":"components/button/ButtonGroup.jsx"},{"name":"FloatingActionButton","sourcePath":"components/button/FloatingActionButton.jsx"},{"name":"Accordion","sourcePath":"components/data/Accordion.jsx"},{"name":"AspectRatio","sourcePath":"components/data/AspectRatio.jsx"},{"name":"Avatar","sourcePath":"components/data/Avatar.jsx"},{"name":"AvatarGroup","sourcePath":"components/data/Avatar.jsx"},{"name":"Card","sourcePath":"components/data/Card.jsx"},{"name":"CardHeader","sourcePath":"components/data/Card.jsx"},{"name":"CardBody","sourcePath":"components/data/Card.jsx"},{"name":"CardFooter","sourcePath":"components/data/Card.jsx"},{"name":"Carousel","sourcePath":"components/data/Carousel.jsx"},{"name":"Chart","sourcePath":"components/data/Chart.jsx"},{"name":"CodeBlock","sourcePath":"components/data/CodeBlock.jsx"},{"name":"Collapsible","sourcePath":"components/data/Collapsible.jsx"},{"name":"Comment","sourcePath":"components/data/Comment.jsx"},{"name":"DescriptionList","sourcePath":"components/data/DescriptionList.jsx"},{"name":"Divider","sourcePath":"components/data/Divider.jsx"},{"name":"Image","sourcePath":"components/data/Image.jsx"},{"name":"Item","sourcePath":"components/data/Item.jsx"},{"name":"Kbd","sourcePath":"components/data/Kbd.jsx"},{"name":"List","sourcePath":"components/data/List.jsx"},{"name":"ListItem","sourcePath":"components/data/List.jsx"},{"name":"Masonry","sourcePath":"components/data/Masonry.jsx"},{"name":"QRCode","sourcePath":"components/data/QRCode.jsx"},{"name":"ScrollArea","sourcePath":"components/data/ScrollArea.jsx"},{"name":"Sortable","sourcePath":"components/data/Sortable.jsx"},{"name":"Splitter","sourcePath":"components/data/Splitter.jsx"},{"name":"Stat","sourcePath":"components/data/Stat.jsx"},{"name":"Terminal","sourcePath":"components/data/Terminal.jsx"},{"name":"Timeline","sourcePath":"components/data/Timeline.jsx"},{"name":"Tooltip","sourcePath":"components/data/Tooltip.jsx"},{"name":"Tree","sourcePath":"components/data/Tree.jsx"},{"name":"Watermark","sourcePath":"components/data/Watermark.jsx"},{"name":"DataGrid","sourcePath":"components/datatable/DataGrid.jsx"},{"name":"DataTable","sourcePath":"components/datatable/DataTable.jsx"},{"name":"TreeTable","sourcePath":"components/datatable/TreeTable.jsx"},{"name":"Dialog","sourcePath":"components/dialog/Dialog.jsx"},{"name":"Alert","sourcePath":"components/feedback/Alert.jsx"},{"name":"Badge","sourcePath":"components/feedback/Badge.jsx"},{"name":"EmptyState","sourcePath":"components/feedback/EmptyState.jsx"},{"name":"ProgressBar","sourcePath":"components/feedback/ProgressBar.jsx"},{"name":"Result","sourcePath":"components/feedback/Result.jsx"},{"name":"Skeleton","sourcePath":"components/feedback/Skeleton.jsx"},{"name":"Spinner","sourcePath":"components/feedback/Spinner.jsx"},{"name":"StatusIndicator","sourcePath":"components/feedback/StatusIndicator.jsx"},{"name":"Tag","sourcePath":"components/feedback/Tag.jsx"},{"name":"ToastStack","sourcePath":"components/feedback/Toast.jsx"},{"name":"Toast","sourcePath":"components/feedback/Toast.jsx"},{"name":"Calendar","sourcePath":"components/forms/Calendar.jsx"},{"name":"Cascader","sourcePath":"components/forms/Cascader.jsx"},{"name":"Checkbox","sourcePath":"components/forms/Checkbox.jsx"},{"name":"ColorPicker","sourcePath":"components/forms/ColorPicker.jsx"},{"name":"Combobox","sourcePath":"components/forms/Combobox.jsx"},{"name":"DatePicker","sourcePath":"components/forms/DatePicker.jsx"},{"name":"Editor","sourcePath":"components/forms/Editor.jsx"},{"name":"FileUpload","sourcePath":"components/forms/FileUpload.jsx"},{"name":"Form","sourcePath":"components/forms/Form.jsx"},{"name":"FormField","sourcePath":"components/forms/Form.jsx"},{"name":"FormFieldArray","sourcePath":"components/forms/Form.jsx"},{"name":"FormWizard","sourcePath":"components/forms/Form.jsx"},{"name":"InlineEdit","sourcePath":"components/forms/InlineEdit.jsx"},{"name":"InputGroup","sourcePath":"components/forms/InputGroup.jsx"},{"name":"InputOTP","sourcePath":"components/forms/InputOTP.jsx"},{"name":"Mentions","sourcePath":"components/forms/Mentions.jsx"},{"name":"NativeSelect","sourcePath":"components/forms/NativeSelect.jsx"},{"name":"NumberField","sourcePath":"components/forms/NumberField.jsx"},{"name":"Radio","sourcePath":"components/forms/RadioGroup.jsx"},{"name":"RadioGroup","sourcePath":"components/forms/RadioGroup.jsx"},{"name":"Rating","sourcePath":"components/forms/Rating.jsx"},{"name":"SearchField","sourcePath":"components/forms/SearchField.jsx"},{"name":"SegmentedControl","sourcePath":"components/forms/SegmentedControl.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Slider","sourcePath":"components/forms/Slider.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"TagInput","sourcePath":"components/forms/TagInput.jsx"},{"name":"Textarea","sourcePath":"components/forms/Textarea.jsx"},{"name":"TimePicker","sourcePath":"components/forms/TimePicker.jsx"},{"name":"Toggle","sourcePath":"components/forms/Toggle.jsx"},{"name":"Transfer","sourcePath":"components/forms/Transfer.jsx"},{"name":"TreeSelect","sourcePath":"components/forms/TreeSelect.jsx"},{"name":"CS_ICONS","sourcePath":"components/icon/Icon.jsx"},{"name":"Icon","sourcePath":"components/icon/Icon.jsx"},{"name":"Logo","sourcePath":"components/logo/Logo.jsx"},{"name":"CS_LOGO_VIEWBOX","sourcePath":"components/logo/logo-data.js"},{"name":"CS_LOGO_MARK_INNER","sourcePath":"components/logo/logo-data.js"},{"name":"Anchor","sourcePath":"components/navigation/Anchor.jsx"},{"name":"BackTop","sourcePath":"components/navigation/BackTop.jsx"},{"name":"Breadcrumb","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"CommandPalette","sourcePath":"components/navigation/CommandPalette.jsx"},{"name":"Dock","sourcePath":"components/navigation/Dock.jsx"},{"name":"HotKeys","sourcePath":"components/navigation/HotKeys.jsx"},{"name":"Link","sourcePath":"components/navigation/Link.jsx"},{"name":"Menu","sourcePath":"components/navigation/Menu.jsx"},{"name":"MenuItem","sourcePath":"components/navigation/Menu.jsx"},{"name":"Menubar","sourcePath":"components/navigation/Menubar.jsx"},{"name":"NavigationMenu","sourcePath":"components/navigation/NavigationMenu.jsx"},{"name":"Pagination","sourcePath":"components/navigation/Pagination.jsx"},{"name":"Sidebar","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"NavItem","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"Steps","sourcePath":"components/navigation/Steps.jsx"},{"name":"Tabs","sourcePath":"components/navigation/Tabs.jsx"},{"name":"Tab","sourcePath":"components/navigation/Tabs.jsx"},{"name":"Toolbar","sourcePath":"components/navigation/Toolbar.jsx"},{"name":"AlertDialog","sourcePath":"components/overlays/AlertDialog.jsx"},{"name":"ContextMenu","sourcePath":"components/overlays/ContextMenu.jsx"},{"name":"Drawer","sourcePath":"components/overlays/Drawer.jsx"},{"name":"HoverCard","sourcePath":"components/overlays/HoverCard.jsx"},{"name":"Popconfirm","sourcePath":"components/overlays/Popconfirm.jsx"},{"name":"Popover","sourcePath":"components/overlays/Popover.jsx"},{"name":"Tour","sourcePath":"components/overlays/Tour.jsx"},{"name":"TextField","sourcePath":"components/textfield/TextField.jsx"}],"sourceHashes":{"components/_i18n/i18n.js":"c6c51a65bd79","components/_i18n/strings.js":"73bc5837fc8e","components/_utils/cx.js":"ad6a747ea116","components/ai/AIDisclosureBadge.jsx":"4c8954aa2d79","components/ai/ChatMessage.jsx":"84076f3488f2","components/ai/CitationList.jsx":"4d12ef868ff3","components/ai/ConfidenceMeter.jsx":"24e43b7f7a47","components/ai/HumanReviewGate.jsx":"922b278dca5c","components/ai/PromptInput.jsx":"7634643dafa5","components/ai/PromptSuggestions.jsx":"02d64117ecfa","components/ai/TypingIndicator.jsx":"149e3a0c7ef8","components/brand/LumiAvatar.jsx":"b6444360cf80","components/button/Button.jsx":"6d902a925eed","components/button/ButtonGroup.jsx":"1a1481f6fb93","components/button/FloatingActionButton.jsx":"ce49fe4129a3","components/data/Accordion.jsx":"fed81278cefd","components/data/AspectRatio.jsx":"6c1e8703891e","components/data/Avatar.jsx":"88c8f59334e6","components/data/Card.jsx":"96e1f9ef44a9","components/data/Carousel.jsx":"caf09a766c42","components/data/Chart.jsx":"1953e9fef120","components/data/CodeBlock.jsx":"04e0bd2507e2","components/data/Collapsible.jsx":"3d961fef83f8","components/data/Comment.jsx":"81469a910d80","components/data/DescriptionList.jsx":"ce50d72546bb","components/data/Divider.jsx":"2d08b4a7b18e","components/data/Image.jsx":"da5c7d4c69af","components/data/Item.jsx":"7e1ac68c4e96","components/data/Kbd.jsx":"3b3d867cbdd8","components/data/List.jsx":"5c221b19efe0","components/data/Masonry.jsx":"a65508731d79","components/data/QRCode.jsx":"6acaf577a7fc","components/data/ScrollArea.jsx":"c2e2ec304b1e","components/data/Sortable.jsx":"315b50256128","components/data/Splitter.jsx":"d231064601e9","components/data/Stat.jsx":"35734a801a71","components/data/Terminal.jsx":"3a3cd4477814","components/data/Timeline.jsx":"22058a781a98","components/data/Tooltip.jsx":"4d027aff5559","components/data/Tree.jsx":"9097456de50f","components/data/Watermark.jsx":"4be0b6230d47","components/data/qr-encode.js":"14e8de77df5f","components/datatable/DataGrid.jsx":"e4aa4a47d05e","components/datatable/DataTable.jsx":"fbfad5570592","components/datatable/TreeTable.jsx":"597c35135ebb","components/dialog/Dialog.jsx":"7af51ee28ab6","components/feedback/Alert.jsx":"0bbe4e5f467a","components/feedback/Badge.jsx":"e691ae1634f8","components/feedback/EmptyState.jsx":"9a9c00523cec","components/feedback/ProgressBar.jsx":"1a66335d5d9e","components/feedback/Result.jsx":"c168f8dcb009","components/feedback/Skeleton.jsx":"86ee345cb412","components/feedback/Spinner.jsx":"cad2ed4008a6","components/feedback/StatusIndicator.jsx":"d27a5fc3db2a","components/feedback/Tag.jsx":"13d288da9f38","components/feedback/Toast.jsx":"38cc9a82ede9","components/forms/Calendar.jsx":"8a66cbe766af","components/forms/Cascader.jsx":"ada31ccaf716","components/forms/Checkbox.jsx":"2badb7b3b72b","components/forms/ColorPicker.jsx":"d04db0ee7678","components/forms/Combobox.jsx":"3f2fb4d28922","components/forms/DatePicker.jsx":"7a6c18e1e635","components/forms/Editor.jsx":"d7bed6e52cff","components/forms/FileUpload.jsx":"e8031a109093","components/forms/Form.jsx":"f7952da4b73a","components/forms/InlineEdit.jsx":"5ffb40598769","components/forms/InputGroup.jsx":"06d6c22420d0","components/forms/InputOTP.jsx":"c3a5d02ffebc","components/forms/Mentions.jsx":"04bc4b5a4ace","components/forms/NativeSelect.jsx":"d6f6d300f75d","components/forms/NumberField.jsx":"44975fd25721","components/forms/RadioGroup.jsx":"1a64f7600e01","components/forms/Rating.jsx":"06d345ecc5f4","components/forms/SearchField.jsx":"2a12c65900ec","components/forms/SegmentedControl.jsx":"1f143c62fb56","components/forms/Select.jsx":"1b5ba905b339","components/forms/Slider.jsx":"69aa1a5f1af8","components/forms/Switch.jsx":"0b37cfa41979","components/forms/TagInput.jsx":"2d1554422097","components/forms/Textarea.jsx":"cf244fee0e37","components/forms/TimePicker.jsx":"165192c8760c","components/forms/Toggle.jsx":"338453a34669","components/forms/Transfer.jsx":"dd0c02d1014e","components/forms/TreeSelect.jsx":"a5b1b91d1d6a","components/icon/Icon.jsx":"379dc6de903e","components/logo/Logo.jsx":"445c5f5fbd40","components/logo/logo-data.js":"f1a251a50c8f","components/navigation/Anchor.jsx":"491fb330e718","components/navigation/BackTop.jsx":"5cac0081fc20","components/navigation/Breadcrumb.jsx":"45636f3b0a51","components/navigation/CommandPalette.jsx":"2b5b30906b8b","components/navigation/Dock.jsx":"3073e2870c65","components/navigation/HotKeys.jsx":"f0f707a3335d","components/navigation/Link.jsx":"d4fe3fcffd2c","components/navigation/Menu.jsx":"6786788f13f8","components/navigation/Menubar.jsx":"1aa64f59891e","components/navigation/NavigationMenu.jsx":"020279fd7f79","components/navigation/Pagination.jsx":"a1fc19bfd104","components/navigation/Sidebar.jsx":"d578b013ad33","components/navigation/Steps.jsx":"85cb20bd45da","components/navigation/Tabs.jsx":"5d5921da1644","components/navigation/Toolbar.jsx":"9727d7bdbc5f","components/overlays/AlertDialog.jsx":"2ed7fbde4a5a","components/overlays/ContextMenu.jsx":"e7e3386d89ac","components/overlays/Drawer.jsx":"8227143abbfa","components/overlays/HoverCard.jsx":"5cfabde80960","components/overlays/Popconfirm.jsx":"55f08dba5f38","components/overlays/Popover.jsx":"1582f7fa5533","components/overlays/Tour.jsx":"9901ee649da0","components/textfield/TextField.jsx":"c06bd9729f20","image-slot.js":"0394ad34f685","tokens/tokens.js":"abd3dd3a5aaf","ui_kits/status-hub/StatusHub.jsx":"88dfd93e1664","ui_kits/status-hub/data.js":"664bbbb30cb3","ui_kits/website/Website.jsx":"c3a0938d9279","ui_kits/website/copy.js":"9d42c52c17cb"},"inlinedExternals":[],"unexposedExports":[{"name":"cx","sourcePath":"components/_utils/cx.js"},{"name":"formatCurrency","sourcePath":"components/_i18n/i18n.js"},{"name":"formatDate","sourcePath":"components/_i18n/i18n.js"},{"name":"formatNumber","sourcePath":"components/_i18n/i18n.js"},{"name":"getPath","sourcePath":"components/forms/Form.jsx"},{"name":"makeT","sourcePath":"components/_i18n/i18n.js"},{"name":"monthName","sourcePath":"components/_i18n/i18n.js"},{"name":"qrMatrix","sourcePath":"components/data/qr-encode.js"},{"name":"resolveLang","sourcePath":"components/_i18n/i18n.js"},{"name":"setPath","sourcePath":"components/forms/Form.jsx"},{"name":"strings","sourcePath":"components/_i18n/strings.js"},{"name":"tokens","sourcePath":"tokens/tokens.js"},{"name":"tr","sourcePath":"components/_i18n/i18n.js"},{"name":"useLang","sourcePath":"components/_i18n/i18n.js"}]} */
2
2
 
3
3
  (() => {
4
4
 
@@ -28,8 +28,8 @@ const strings = {
28
28
  vi: { placeholder: "Tìm kiếm…", clear: "Xóa tìm kiếm" }
29
29
  },
30
30
  NumberField: {
31
- en: { decrease: "Decrease", increase: "Increase" },
32
- vi: { decrease: "Giảm", increase: "Tăng" }
31
+ en: { decrease: "Decrease", increase: "Increase", value: "Value" },
32
+ vi: { decrease: "Giảm", increase: "Tăng", value: "Giá trị" }
33
33
  },
34
34
  FileUpload: {
35
35
  en: { title: "Drop files here or browse", hint: "PNG, JPG, or PDF up to 10MB" },
@@ -39,6 +39,10 @@ const strings = {
39
39
  en: { close: "Close", confirm: "Confirm", cancel: "Cancel" },
40
40
  vi: { close: "Đóng", confirm: "Xác nhận", cancel: "Hủy" }
41
41
  },
42
+ AlertDialog: {
43
+ en: { confirm: "Confirm", cancel: "Cancel" },
44
+ vi: { confirm: "Xác nhận", cancel: "Hủy" }
45
+ },
42
46
  Drawer: {
43
47
  en: { close: "Close", panel: "Panel" },
44
48
  vi: { close: "Đóng", panel: "Bảng" }
@@ -164,8 +168,8 @@ const strings = {
164
168
  vi: { placeholder: "Chọn hoặc nhập…", empty: "Không có kết quả phù hợp" }
165
169
  },
166
170
  InputGroup: {
167
- en: { clear: "Clear", show: "Show password", hide: "Hide password" },
168
- vi: { clear: "Xóa", show: "Hiện mật khẩu", hide: "Ẩn mật khẩu" }
171
+ en: { clear: "Clear", show: "Show password", hide: "Hide password", input: "Input" },
172
+ vi: { clear: "Xóa", show: "Hiện mật khẩu", hide: "Ẩn mật khẩu", input: "Ô nhập" }
169
173
  },
170
174
  TagInput: {
171
175
  en: { placeholder: "Add a tag…", remove: "Remove" },
@@ -521,6 +525,24 @@ function Accordion({ items = [], defaultOpen = 0, allowMultiple = false, classNa
521
525
  Object.assign(__ds_scope, { Accordion });
522
526
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/Accordion.jsx", error: String((e && e.message) || e) }); }
523
527
 
528
+ // components/data/AspectRatio.jsx
529
+ try { (() => {
530
+ const { cx } = __ds_scope;
531
+ function AspectRatio({ ratio = "16 / 9", children, className, style, ...props }) {
532
+ const ar = typeof ratio === "number" ? String(ratio) : ratio;
533
+ return /* @__PURE__ */ React.createElement(
534
+ "div",
535
+ {
536
+ className: cx("cs-aspect-ratio", className),
537
+ style: { ...style || {}, aspectRatio: ar },
538
+ ...props
539
+ },
540
+ children
541
+ );
542
+ }
543
+ Object.assign(__ds_scope, { AspectRatio });
544
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/AspectRatio.jsx", error: String((e && e.message) || e) }); }
545
+
524
546
  // components/data/Avatar.jsx
525
547
  try { (() => {
526
548
  const { cx } = __ds_scope;
@@ -618,6 +640,46 @@ function CodeBlock({ code = "", filename, language = "code", showBar = true, cla
618
640
  Object.assign(__ds_scope, { CodeBlock });
619
641
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/CodeBlock.jsx", error: String((e && e.message) || e) }); }
620
642
 
643
+ // components/data/Collapsible.jsx
644
+ try { (() => {
645
+ const { cx } = __ds_scope;
646
+ function Collapsible({
647
+ open,
648
+ defaultOpen = false,
649
+ onOpenChange,
650
+ title,
651
+ trigger,
652
+ children,
653
+ className,
654
+ ...props
655
+ }) {
656
+ const uncontrolled = open === void 0;
657
+ const [internal, setInternal] = React.useState(!!defaultOpen);
658
+ const isOpen = uncontrolled ? internal : !!open;
659
+ const setOpen = (next) => {
660
+ if (uncontrolled) setInternal(next);
661
+ onOpenChange?.(next);
662
+ };
663
+ const label = title ?? trigger;
664
+ const panelId = React.useId();
665
+ const triggerId = React.useId();
666
+ return /* @__PURE__ */ React.createElement("div", { className: cx("cs-collapsible", className), ...props }, /* @__PURE__ */ React.createElement(
667
+ "button",
668
+ {
669
+ type: "button",
670
+ id: triggerId,
671
+ className: "cs-collapsible__trigger",
672
+ "aria-expanded": isOpen,
673
+ "aria-controls": panelId,
674
+ onClick: () => setOpen(!isOpen)
675
+ },
676
+ /* @__PURE__ */ React.createElement("span", { className: "cs-collapsible__label" }, label),
677
+ /* @__PURE__ */ React.createElement("span", { className: "cs-collapsible__chevron", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React.createElement("path", { d: "M6 9l6 6 6-6" })))
678
+ ), isOpen ? /* @__PURE__ */ React.createElement("div", { id: panelId, role: "region", "aria-labelledby": triggerId, className: "cs-collapsible__panel" }, children) : null);
679
+ }
680
+ Object.assign(__ds_scope, { Collapsible });
681
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/Collapsible.jsx", error: String((e && e.message) || e) }); }
682
+
621
683
  // components/data/Comment.jsx
622
684
  try { (() => {
623
685
  const { makeT, useLang } = __ds_scope;
@@ -651,6 +713,59 @@ function Divider({ vertical = false, label, className, children, ...props }) {
651
713
  Object.assign(__ds_scope, { Divider });
652
714
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/Divider.jsx", error: String((e && e.message) || e) }); }
653
715
 
716
+ // components/data/Item.jsx
717
+ try { (() => {
718
+ const { cx } = __ds_scope;
719
+ function Item({
720
+ leading,
721
+ trailing,
722
+ title,
723
+ description,
724
+ selected = false,
725
+ disabled = false,
726
+ href,
727
+ onClick,
728
+ children,
729
+ className,
730
+ ...props
731
+ }) {
732
+ const interactive = !disabled && (href != null || typeof onClick === "function");
733
+ const Tag = href != null && !disabled ? "a" : interactive ? "button" : "div";
734
+ const rowProps = { ...props };
735
+ if (Tag === "a") {
736
+ rowProps.href = href;
737
+ if (disabled) rowProps["aria-disabled"] = true;
738
+ } else if (Tag === "button") {
739
+ rowProps.type = "button";
740
+ rowProps.disabled = disabled || void 0;
741
+ rowProps.onClick = onClick;
742
+ } else if (disabled) {
743
+ rowProps["aria-disabled"] = true;
744
+ }
745
+ if (selected) rowProps["aria-current"] = rowProps["aria-current"] ?? "true";
746
+ const trailExplicit = trailing !== void 0;
747
+ const trailNode = trailExplicit ? trailing : title != null ? children : null;
748
+ const mainExtra = trailExplicit ? children : title == null ? children : null;
749
+ return /* @__PURE__ */ React.createElement(
750
+ Tag,
751
+ {
752
+ className: cx(
753
+ "cs-item",
754
+ interactive && "cs-item--interactive",
755
+ selected && "is-selected",
756
+ disabled && "is-disabled",
757
+ className
758
+ ),
759
+ ...rowProps
760
+ },
761
+ leading != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-item__leading" }, leading) : null,
762
+ /* @__PURE__ */ React.createElement("span", { className: "cs-item__main" }, title != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-item__title" }, title) : null, description != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-item__description" }, description) : null, mainExtra),
763
+ trailNode != null && trailNode !== false ? /* @__PURE__ */ React.createElement("span", { className: "cs-item__trailing" }, trailNode) : null
764
+ );
765
+ }
766
+ Object.assign(__ds_scope, { Item });
767
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/Item.jsx", error: String((e && e.message) || e) }); }
768
+
654
769
  // components/data/Kbd.jsx
655
770
  try { (() => {
656
771
  const { cx } = __ds_scope;
@@ -683,6 +798,28 @@ function Masonry({ columns = 3, gap = 16, children, className, style }) {
683
798
  Object.assign(__ds_scope, { Masonry });
684
799
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/Masonry.jsx", error: String((e && e.message) || e) }); }
685
800
 
801
+ // components/data/ScrollArea.jsx
802
+ try { (() => {
803
+ const { cx } = __ds_scope;
804
+ function ScrollArea({ children, maxHeight, className, style, ...props }) {
805
+ const max = maxHeight == null ? void 0 : typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight;
806
+ return /* @__PURE__ */ React.createElement(
807
+ "div",
808
+ {
809
+ className: cx("cs-scroll-area", className),
810
+ tabIndex: 0,
811
+ style: {
812
+ ...style || {},
813
+ ...max != null ? { maxBlockSize: max } : {}
814
+ },
815
+ ...props
816
+ },
817
+ children
818
+ );
819
+ }
820
+ Object.assign(__ds_scope, { ScrollArea });
821
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/ScrollArea.jsx", error: String((e && e.message) || e) }); }
822
+
686
823
  // components/data/Sortable.jsx
687
824
  try { (() => {
688
825
  const { cx } = __ds_scope;
@@ -1342,6 +1479,7 @@ function Cascader({ nodes = [], value = [], onChange, placeholder, label, disabl
1342
1479
  const [open, setOpen] = React.useState(false);
1343
1480
  const [path, setPath] = React.useState(value);
1344
1481
  const wrap = React.useRef(null);
1482
+ const fieldId = React.useId();
1345
1483
  const [ref, L] = useLang(lang);
1346
1484
  const t = makeT("Cascader", L);
1347
1485
  const ph = placeholder != null ? placeholder : t("placeholder");
@@ -1383,25 +1521,28 @@ function Cascader({ nodes = [], value = [], onChange, placeholder, label, disabl
1383
1521
  return /* @__PURE__ */ React.createElement("div", { ref: (el) => {
1384
1522
  wrap.current = el;
1385
1523
  ref.current = el;
1386
- }, className: cx("cs-cascader", className) }, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": label, onClick: () => setOpen((o) => !o) }, /* @__PURE__ */ React.createElement("span", { className: labels.length ? void 0 : "ph" }, labels.length ? labels.join(" / ") : ph), /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, "▾")), open ? /* @__PURE__ */ React.createElement("div", { className: "cs-cascader__pop" }, cols.map((col, i) => /* @__PURE__ */ React.createElement("ul", { key: i, role: "listbox", className: "cs-cascader__col" }, col.map((n) => /* @__PURE__ */ React.createElement("li", { key: n.key }, /* @__PURE__ */ React.createElement(
1387
- "button",
1388
- {
1389
- type: "button",
1390
- role: "option",
1391
- "aria-selected": path[i] === n.key,
1392
- className: cx("cs-cascader__opt", path[i] === n.key && "on"),
1393
- onClick: () => {
1394
- const next = [...path.slice(0, i), n.key];
1395
- setPath(next);
1396
- if (!(n.children && n.children.length)) {
1397
- onChange && onChange(next);
1398
- setOpen(false);
1524
+ }, className: cx("cs-cascader", className) }, /* @__PURE__ */ React.createElement("button", { type: "button", id: fieldId, className: "cs-treeselect__field", disabled, "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": label, onClick: () => setOpen((o) => !o) }, /* @__PURE__ */ React.createElement("span", { className: labels.length ? void 0 : "ph" }, labels.length ? labels.join(" / ") : ph), /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, "▾")), open ? /* @__PURE__ */ React.createElement("div", { className: "cs-cascader__pop" }, cols.map((col, i) => /* @__PURE__ */ React.createElement("ul", { key: i, role: "listbox", "aria-labelledby": fieldId, className: "cs-cascader__col" }, col.map((n) => (
1525
+ // role="none" — the <li> wrapper must not sit between listbox and option.
1526
+ /* @__PURE__ */ React.createElement("li", { key: n.key, role: "none" }, /* @__PURE__ */ React.createElement(
1527
+ "button",
1528
+ {
1529
+ type: "button",
1530
+ role: "option",
1531
+ "aria-selected": path[i] === n.key,
1532
+ className: cx("cs-cascader__opt", path[i] === n.key && "on"),
1533
+ onClick: () => {
1534
+ const next = [...path.slice(0, i), n.key];
1535
+ setPath(next);
1536
+ if (!(n.children && n.children.length)) {
1537
+ onChange && onChange(next);
1538
+ setOpen(false);
1539
+ }
1399
1540
  }
1400
- }
1401
- },
1402
- n.label,
1403
- n.children && n.children.length ? /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, " ›") : null
1404
- )))))) : null);
1541
+ },
1542
+ n.label,
1543
+ n.children && n.children.length ? /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, " ›") : null
1544
+ ))
1545
+ ))))) : null);
1405
1546
  }
1406
1547
  Object.assign(__ds_scope, { Cascader });
1407
1548
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Cascader.jsx", error: String((e && e.message) || e) }); }
@@ -1992,7 +2133,23 @@ const { cx } = __ds_scope;
1992
2133
  const EYE = /* @__PURE__ */ React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("path", { d: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z" }), /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "3" }));
1993
2134
  const EYE_OFF = /* @__PURE__ */ React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("path", { d: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z" }), /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "3" }), /* @__PURE__ */ React.createElement("path", { d: "M4 4l16 16" }));
1994
2135
  const X = /* @__PURE__ */ React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("path", { d: "M6 6l12 12M18 6L6 18" }));
1995
- function InputGroup({ prefix, suffix, clearable = false, password = false, value, onChange, defaultValue = "", placeholder, disabled = false, lang, className, ...props }) {
2136
+ function InputGroup({
2137
+ id,
2138
+ label,
2139
+ prefix,
2140
+ suffix,
2141
+ clearable = false,
2142
+ password = false,
2143
+ value,
2144
+ onChange,
2145
+ defaultValue = "",
2146
+ placeholder,
2147
+ disabled = false,
2148
+ lang,
2149
+ className,
2150
+ "aria-label": ariaLabel,
2151
+ ...props
2152
+ }) {
1996
2153
  const [inner, setInner] = React.useState(defaultValue);
1997
2154
  const val = value != null ? value : inner;
1998
2155
  const set = (v) => {
@@ -2002,7 +2159,21 @@ function InputGroup({ prefix, suffix, clearable = false, password = false, value
2002
2159
  const [show, setShow] = React.useState(false);
2003
2160
  const [ref, L] = useLang(lang);
2004
2161
  const t = makeT("InputGroup", L);
2005
- return /* @__PURE__ */ React.createElement("span", { ref, className: cx("cs-igroup", className) }, prefix != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-igroup__fix" }, prefix) : null, /* @__PURE__ */ React.createElement("input", { ...props, type: password && !show ? "password" : "text", value: val, placeholder, disabled, onChange: (e) => set(e.target.value) }), clearable && String(val).length ? /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-igroup__btn", "aria-label": t("clear"), onClick: () => set("") }, X) : null, password ? /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-igroup__btn", "aria-label": show ? t("hide") : t("show"), "aria-pressed": show, onClick: () => setShow((s) => !s) }, show ? EYE_OFF : EYE) : null, suffix != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-igroup__fix cs-igroup__fix--suffix" }, suffix) : null);
2162
+ const gid = React.useId();
2163
+ const sid = id ?? gid;
2164
+ return /* @__PURE__ */ React.createElement("label", { ref, className: cx("cs-field", disabled && "is-disabled", className), htmlFor: sid }, label ? /* @__PURE__ */ React.createElement("span", { className: "cs-field__label" }, label) : null, /* @__PURE__ */ React.createElement("span", { className: "cs-igroup" }, prefix != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-igroup__fix" }, prefix) : null, /* @__PURE__ */ React.createElement(
2165
+ "input",
2166
+ {
2167
+ ...props,
2168
+ id: sid,
2169
+ type: password && !show ? "password" : "text",
2170
+ value: val,
2171
+ placeholder,
2172
+ disabled,
2173
+ "aria-label": label ? void 0 : ariaLabel || placeholder || t("input"),
2174
+ onChange: (e) => set(e.target.value)
2175
+ }
2176
+ ), clearable && String(val).length ? /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-igroup__btn", "aria-label": t("clear"), onClick: () => set("") }, X) : null, password ? /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-igroup__btn", "aria-label": show ? t("hide") : t("show"), "aria-pressed": show, onClick: () => setShow((s) => !s) }, show ? EYE_OFF : EYE) : null, suffix != null ? /* @__PURE__ */ React.createElement("span", { className: "cs-igroup__fix cs-igroup__fix--suffix" }, suffix) : null));
2006
2177
  }
2007
2178
  Object.assign(__ds_scope, { InputGroup });
2008
2179
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/InputGroup.jsx", error: String((e && e.message) || e) }); }
@@ -2097,11 +2268,63 @@ function Mentions({ value, defaultValue = "", onChange, users = [], placeholder,
2097
2268
  Object.assign(__ds_scope, { Mentions });
2098
2269
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Mentions.jsx", error: String((e && e.message) || e) }); }
2099
2270
 
2271
+ // components/forms/NativeSelect.jsx
2272
+ try { (() => {
2273
+ const { cx } = __ds_scope;
2274
+ function NativeSelect({
2275
+ id,
2276
+ label,
2277
+ error,
2278
+ options,
2279
+ children,
2280
+ disabled = false,
2281
+ size = "md",
2282
+ className,
2283
+ value,
2284
+ defaultValue,
2285
+ onChange,
2286
+ ...props
2287
+ }) {
2288
+ const gid = React.useId();
2289
+ const sid = id ?? gid;
2290
+ const errId = error ? sid + "-err" : void 0;
2291
+ return /* @__PURE__ */ React.createElement("label", { className: cx("cs-field", "cs-native-select-field", disabled && "is-disabled", error && "is-invalid", className), htmlFor: sid }, label ? /* @__PURE__ */ React.createElement("span", { className: "cs-field__label" }, label) : null, /* @__PURE__ */ React.createElement("span", { className: cx("cs-native-select", `cs-native-select--${size}`) }, /* @__PURE__ */ React.createElement(
2292
+ "select",
2293
+ {
2294
+ ...props,
2295
+ id: sid,
2296
+ disabled,
2297
+ value,
2298
+ defaultValue,
2299
+ onChange,
2300
+ "aria-invalid": error ? true : void 0,
2301
+ "aria-describedby": errId,
2302
+ className: "cs-field__control"
2303
+ },
2304
+ options ? options.map((o) => /* @__PURE__ */ React.createElement("option", { key: o.value, value: o.value, disabled: o.disabled }, o.label)) : children
2305
+ ), /* @__PURE__ */ React.createElement("span", { className: "cs-native-select__chevron", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React.createElement("path", { d: "M6 9l6 6 6-6" })))), error ? /* @__PURE__ */ React.createElement("span", { id: errId, className: "cs-field__error", role: "alert" }, error) : null);
2306
+ }
2307
+ Object.assign(__ds_scope, { NativeSelect });
2308
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/NativeSelect.jsx", error: String((e && e.message) || e) }); }
2309
+
2100
2310
  // components/forms/NumberField.jsx
2101
2311
  try { (() => {
2102
2312
  const { makeT, useLang } = __ds_scope;
2103
2313
  const { cx } = __ds_scope;
2104
- function NumberField({ value, onChange, min, max, step = 1, disabled = false, lang, className, children, ...props }) {
2314
+ function NumberField({
2315
+ id,
2316
+ label,
2317
+ value,
2318
+ onChange,
2319
+ min,
2320
+ max,
2321
+ step = 1,
2322
+ disabled = false,
2323
+ lang,
2324
+ className,
2325
+ children,
2326
+ ...props
2327
+ }) {
2105
2328
  const [inner, setInner] = React.useState(0);
2106
2329
  const val = value != null ? value : inner;
2107
2330
  const clamp = (n) => {
@@ -2115,7 +2338,23 @@ function NumberField({ value, onChange, min, max, step = 1, disabled = false, la
2115
2338
  };
2116
2339
  const [ref, L] = useLang(lang);
2117
2340
  const t = makeT("NumberField", L);
2118
- return /* @__PURE__ */ React.createElement("div", { ref, className: cx("cs-stepper", className) }, /* @__PURE__ */ React.createElement("button", { type: "button", "aria-label": t("decrease"), disabled: disabled || min != null && val <= min, onClick: () => set(val - step) }, "−"), /* @__PURE__ */ React.createElement("input", { type: "number", value: val, min, max, step, disabled, onChange: (e) => set(Number(e.target.value)), ...props }), /* @__PURE__ */ React.createElement("button", { type: "button", "aria-label": t("increase"), disabled: disabled || max != null && val >= max, onClick: () => set(val + step) }, "+"));
2341
+ const gid = React.useId();
2342
+ const sid = id ?? gid;
2343
+ return /* @__PURE__ */ React.createElement("div", { ref, className: cx("cs-field", disabled && "is-disabled", className) }, label ? /* @__PURE__ */ React.createElement("label", { className: "cs-field__label", htmlFor: sid }, label) : null, /* @__PURE__ */ React.createElement("div", { className: "cs-stepper" }, /* @__PURE__ */ React.createElement("button", { type: "button", "aria-label": t("decrease"), disabled: disabled || min != null && val <= min, onClick: () => set(val - step) }, "−"), /* @__PURE__ */ React.createElement(
2344
+ "input",
2345
+ {
2346
+ ...props,
2347
+ id: sid,
2348
+ type: "number",
2349
+ value: val,
2350
+ min,
2351
+ max,
2352
+ step,
2353
+ disabled,
2354
+ "aria-label": label ? void 0 : t("value"),
2355
+ onChange: (e) => set(Number(e.target.value))
2356
+ }
2357
+ ), /* @__PURE__ */ React.createElement("button", { type: "button", "aria-label": t("increase"), disabled: disabled || max != null && val >= max, onClick: () => set(val + step) }, "+")));
2119
2358
  }
2120
2359
  Object.assign(__ds_scope, { NumberField });
2121
2360
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/NumberField.jsx", error: String((e && e.message) || e) }); }
@@ -2211,7 +2450,6 @@ function SegmentedControl({ options = [], value, onChange, className, ...props }
2211
2450
  type: "button",
2212
2451
  role: "tab",
2213
2452
  "aria-selected": value === o.value,
2214
- "aria-pressed": value === o.value,
2215
2453
  tabIndex: i === idx ? 0 : -1,
2216
2454
  ref: (el) => refs.current[i] = el,
2217
2455
  onKeyDown: (e) => key(e, i),
@@ -2260,7 +2498,18 @@ Object.assign(__ds_scope, { Switch });
2260
2498
  try { (() => {
2261
2499
  const { makeT, useLang } = __ds_scope;
2262
2500
  const { cx } = __ds_scope;
2263
- function TagInput({ value, defaultValue = [], onChange, placeholder, max, disabled = false, lang, className }) {
2501
+ function TagInput({
2502
+ id,
2503
+ label,
2504
+ value,
2505
+ defaultValue = [],
2506
+ onChange,
2507
+ placeholder,
2508
+ max,
2509
+ disabled = false,
2510
+ lang,
2511
+ className
2512
+ }) {
2264
2513
  const [inner, setInner] = React.useState(defaultValue);
2265
2514
  const tags = value != null ? value : inner;
2266
2515
  const [q, setQ] = React.useState("");
@@ -2282,12 +2531,26 @@ function TagInput({ value, defaultValue = [], onChange, placeholder, max, disabl
2282
2531
  const [ref, L] = useLang(lang);
2283
2532
  const t = makeT("TagInput", L);
2284
2533
  const ph = placeholder != null ? placeholder : t("placeholder");
2285
- return /* @__PURE__ */ React.createElement("div", { ref, className: cx("cs-taginput", className) }, tags.map((tag) => /* @__PURE__ */ React.createElement("span", { key: tag, className: "cs-tag" }, tag, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-tag__close", "aria-label": t("remove") + " " + tag, onClick: () => set(tags.filter((x) => x !== tag)), disabled }, /* @__PURE__ */ React.createElement("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("path", { d: "M6 6l12 12M18 6L6 18" }))))), /* @__PURE__ */ React.createElement(
2534
+ const gid = React.useId();
2535
+ const sid = id ?? gid;
2536
+ return /* @__PURE__ */ React.createElement("label", { ref, className: cx("cs-field", disabled && "is-disabled", className), htmlFor: sid }, label ? /* @__PURE__ */ React.createElement("span", { className: "cs-field__label" }, label) : null, /* @__PURE__ */ React.createElement("div", { className: "cs-taginput" }, tags.map((tag) => /* @__PURE__ */ React.createElement("span", { key: tag, className: "cs-tag" }, tag, /* @__PURE__ */ React.createElement(
2537
+ "button",
2538
+ {
2539
+ type: "button",
2540
+ className: "cs-tag__close",
2541
+ "aria-label": t("remove") + " " + tag,
2542
+ onClick: () => set(tags.filter((x) => x !== tag)),
2543
+ disabled
2544
+ },
2545
+ /* @__PURE__ */ React.createElement("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.4", strokeLinecap: "round", "aria-hidden": "true" }, /* @__PURE__ */ React.createElement("path", { d: "M6 6l12 12M18 6L6 18" }))
2546
+ ))), /* @__PURE__ */ React.createElement(
2286
2547
  "input",
2287
2548
  {
2549
+ id: sid,
2288
2550
  value: q,
2289
2551
  placeholder: tags.length ? "" : ph,
2290
2552
  disabled,
2553
+ "aria-label": label ? void 0 : ph,
2291
2554
  onChange: (e) => setQ(e.target.value),
2292
2555
  onKeyDown: (e) => {
2293
2556
  if (e.key === "Enter" || e.key === ",") {
@@ -2299,7 +2562,7 @@ function TagInput({ value, defaultValue = [], onChange, placeholder, max, disabl
2299
2562
  },
2300
2563
  onBlur: () => add(q)
2301
2564
  }
2302
- ));
2565
+ )));
2303
2566
  }
2304
2567
  Object.assign(__ds_scope, { TagInput });
2305
2568
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/TagInput.jsx", error: String((e && e.message) || e) }); }
@@ -2846,6 +3109,7 @@ try { (() => {
2846
3109
  const { CS_LOGO_VIEWBOX, CS_LOGO_MARK_INNER } = __ds_scope;
2847
3110
  const { cx } = __ds_scope;
2848
3111
  function Logo({ size = 32, title = "CyberSkill", decorative = false, className, ...props }) {
3112
+ const safeTitle = String(title).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
2849
3113
  return /* @__PURE__ */ React.createElement(
2850
3114
  "svg",
2851
3115
  {
@@ -2858,7 +3122,7 @@ function Logo({ size = 32, title = "CyberSkill", decorative = false, className,
2858
3122
  role: decorative ? void 0 : "img",
2859
3123
  "aria-hidden": decorative ? true : void 0,
2860
3124
  "aria-label": decorative ? void 0 : title,
2861
- dangerouslySetInnerHTML: { __html: (decorative ? "" : `<title>${title}</title>`) + CS_LOGO_MARK_INNER }
3125
+ dangerouslySetInnerHTML: { __html: (decorative ? "" : `<title>${safeTitle}</title>`) + CS_LOGO_MARK_INNER }
2862
3126
  }
2863
3127
  );
2864
3128
  }
@@ -3072,7 +3336,16 @@ function Menu({ trigger, children, align = "start", open: controlledOpen, onOpen
3072
3336
  document.removeEventListener("keydown", onKey);
3073
3337
  };
3074
3338
  }, [open]);
3075
- return /* @__PURE__ */ React.createElement("div", { className: cx("cs-menu", className), ref }, /* @__PURE__ */ React.createElement("span", { onClick: () => set(!open), "aria-haspopup": "menu", "aria-expanded": open }, trigger), open ? /* @__PURE__ */ React.createElement("div", { className: cx("cs-menu__list", align === "end" && "cs-menu__list--end"), role: "menu" }, children) : null);
3339
+ const toggle = () => set(!open);
3340
+ const triggerNode = React.isValidElement(trigger) ? React.cloneElement(trigger, {
3341
+ "aria-haspopup": "menu",
3342
+ "aria-expanded": open,
3343
+ onClick: (e) => {
3344
+ if (typeof trigger.props.onClick === "function") trigger.props.onClick(e);
3345
+ if (!e.defaultPrevented) toggle();
3346
+ }
3347
+ }) : /* @__PURE__ */ React.createElement("button", { type: "button", "aria-haspopup": "menu", "aria-expanded": open, onClick: toggle }, trigger);
3348
+ return /* @__PURE__ */ React.createElement("div", { className: cx("cs-menu", className), ref }, triggerNode, open ? /* @__PURE__ */ React.createElement("div", { className: cx("cs-menu__list", align === "end" && "cs-menu__list--end"), role: "menu" }, children) : null);
3076
3349
  }
3077
3350
  function MenuItem({ danger = false, icon, children, className, ...props }) {
3078
3351
  return /* @__PURE__ */ React.createElement("button", { type: "button", role: "menuitem", className: cx("cs-menu__item", danger && "cs-menu__item--danger", className), ...props }, icon ? /* @__PURE__ */ React.createElement("span", { "aria-hidden": "true" }, icon) : null, children);
@@ -3314,6 +3587,160 @@ function Toolbar({ items = [], overflowAfter, label, lang, className }) {
3314
3587
  Object.assign(__ds_scope, { Toolbar });
3315
3588
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/navigation/Toolbar.jsx", error: String((e && e.message) || e) }); }
3316
3589
 
3590
+ // components/overlays/AlertDialog.jsx
3591
+ try { (() => {
3592
+ const { makeT, useLang } = __ds_scope;
3593
+ const { cx } = __ds_scope;
3594
+ const FOCUSABLE = [
3595
+ "a[href]",
3596
+ "area[href]",
3597
+ "button:not([disabled])",
3598
+ 'input:not([disabled]):not([type="hidden"])',
3599
+ "select:not([disabled])",
3600
+ "textarea:not([disabled])",
3601
+ "audio[controls]",
3602
+ "video[controls]",
3603
+ "summary",
3604
+ "iframe",
3605
+ '[contenteditable]:not([contenteditable="false"])',
3606
+ '[tabindex]:not([tabindex="-1"])'
3607
+ ].join(",");
3608
+ function AlertDialog({
3609
+ open,
3610
+ defaultOpen = false,
3611
+ onOpenChange,
3612
+ title,
3613
+ description,
3614
+ children,
3615
+ confirmLabel,
3616
+ cancelLabel,
3617
+ tone,
3618
+ variant,
3619
+ onConfirm,
3620
+ onCancel,
3621
+ lang,
3622
+ className,
3623
+ ...props
3624
+ }) {
3625
+ const baseId = React.useId();
3626
+ const titleId = baseId + "-title";
3627
+ const descId = baseId + "-desc";
3628
+ const [ref, L] = useLang(lang);
3629
+ const t = makeT("AlertDialog", L);
3630
+ const panel = React.useRef(null);
3631
+ const uncontrolled = open === void 0;
3632
+ const [internal, setInternal] = React.useState(!!defaultOpen);
3633
+ const isOpen = uncontrolled ? internal : !!open;
3634
+ const setOpen = (next) => {
3635
+ if (uncontrolled) setInternal(next);
3636
+ onOpenChange?.(next);
3637
+ };
3638
+ const destructive = (tone ?? variant) === "destructive";
3639
+ const confirmRef = React.useRef(onConfirm);
3640
+ confirmRef.current = onConfirm;
3641
+ const cancelRef = React.useRef(onCancel);
3642
+ cancelRef.current = onCancel;
3643
+ React.useEffect(() => {
3644
+ if (!isOpen) return;
3645
+ const prev = document.activeElement;
3646
+ const prevOverflow = document.body.style.overflow;
3647
+ document.body.style.overflow = "hidden";
3648
+ const focusables = () => panel.current ? [...panel.current.querySelectorAll(FOCUSABLE)] : [];
3649
+ const preferred = panel.current?.querySelector(".cs-alert-dialog__confirm") || focusables()[0];
3650
+ (preferred || panel.current)?.focus?.();
3651
+ const k = (e) => {
3652
+ if (e.key === "Escape") {
3653
+ setOpen(false);
3654
+ cancelRef.current?.();
3655
+ return;
3656
+ }
3657
+ if (e.key !== "Tab" || !panel.current) return;
3658
+ const f = focusables();
3659
+ if (!f.length) {
3660
+ e.preventDefault();
3661
+ panel.current.focus();
3662
+ return;
3663
+ }
3664
+ const a = f[0], z = f[f.length - 1];
3665
+ const active = document.activeElement;
3666
+ const inside = panel.current.contains(active);
3667
+ if (e.shiftKey && (!inside || active === a)) {
3668
+ e.preventDefault();
3669
+ z.focus();
3670
+ } else if (!e.shiftKey && (!inside || active === z)) {
3671
+ e.preventDefault();
3672
+ a.focus();
3673
+ }
3674
+ };
3675
+ document.addEventListener("keydown", k);
3676
+ return () => {
3677
+ document.removeEventListener("keydown", k);
3678
+ document.body.style.overflow = prevOverflow;
3679
+ if (prev && prev.focus) prev.focus();
3680
+ };
3681
+ }, [isOpen]);
3682
+ const cl = cancelLabel != null ? cancelLabel : t("cancel");
3683
+ const cf = confirmLabel != null ? confirmLabel : t("confirm");
3684
+ const body = description ?? children;
3685
+ const hasDesc = body != null && body !== false && body !== "";
3686
+ if (!isOpen) return null;
3687
+ return /* @__PURE__ */ React.createElement("div", { ref, className: "cs-dialog-layer cs-alert-dialog-layer" }, /* @__PURE__ */ React.createElement(
3688
+ "div",
3689
+ {
3690
+ className: "cs-dialog__overlay",
3691
+ onClick: () => {
3692
+ setOpen(false);
3693
+ cancelRef.current?.();
3694
+ },
3695
+ "aria-hidden": "true"
3696
+ }
3697
+ ), /* @__PURE__ */ React.createElement(
3698
+ "section",
3699
+ {
3700
+ ...props,
3701
+ ref: panel,
3702
+ tabIndex: -1,
3703
+ role: "alertdialog",
3704
+ "aria-modal": "true",
3705
+ "aria-labelledby": titleId,
3706
+ "aria-describedby": hasDesc ? descId : void 0,
3707
+ className: cx("cs-dialog", "cs-alert-dialog", destructive && "cs-alert-dialog--destructive", className)
3708
+ },
3709
+ /* @__PURE__ */ React.createElement("header", { className: "cs-dialog__header" }, /* @__PURE__ */ React.createElement("h2", { id: titleId, className: "cs-dialog__title" }, title)),
3710
+ hasDesc ? /* @__PURE__ */ React.createElement("div", { id: descId, className: "cs-dialog__body" }, body) : null,
3711
+ /* @__PURE__ */ React.createElement("footer", { className: "cs-dialog__actions" }, /* @__PURE__ */ React.createElement(
3712
+ "button",
3713
+ {
3714
+ type: "button",
3715
+ className: "cs-button cs-button--ghost cs-button--md",
3716
+ onClick: () => {
3717
+ setOpen(false);
3718
+ cancelRef.current?.();
3719
+ }
3720
+ },
3721
+ cl
3722
+ ), /* @__PURE__ */ React.createElement(
3723
+ "button",
3724
+ {
3725
+ type: "button",
3726
+ className: cx(
3727
+ "cs-button",
3728
+ "cs-button--md",
3729
+ "cs-alert-dialog__confirm",
3730
+ destructive ? "cs-button--danger" : "cs-button--primary"
3731
+ ),
3732
+ onClick: () => {
3733
+ setOpen(false);
3734
+ confirmRef.current?.();
3735
+ }
3736
+ },
3737
+ cf
3738
+ ))
3739
+ ));
3740
+ }
3741
+ Object.assign(__ds_scope, { AlertDialog });
3742
+ })(); } catch (e) { __ds_ns.__errors.push({ path: "components/overlays/AlertDialog.jsx", error: String((e && e.message) || e) }); }
3743
+
3317
3744
  // components/overlays/ContextMenu.jsx
3318
3745
  try { (() => {
3319
3746
  const { cx } = __ds_scope;
@@ -3390,7 +3817,7 @@ function Drawer({ open, onClose, title, side = "right", children, actions, lang,
3390
3817
  }, [open]);
3391
3818
  const t = makeT("Drawer", L);
3392
3819
  if (!open) return null;
3393
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "cs-drawer-scrim", onClick: onClose, "aria-hidden": "true" }), /* @__PURE__ */ React.createElement("aside", { ref, tabIndex: -1, className: cx("cs-drawer", side === "left" && "cs-drawer--left", className), role: "dialog", "aria-modal": "true", "aria-label": typeof title === "string" ? title : t("panel") }, /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__header" }, title ? /* @__PURE__ */ React.createElement("h2", { className: "cs-drawer__title" }, title) : null, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-drawer__close", "aria-label": t("close"), onClick: onClose }, /* @__PURE__ */ React.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }, /* @__PURE__ */ React.createElement("path", { d: "M6 6l12 12M18 6L6 18" })))), /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__body" }, children), actions ? /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__footer" }, actions) : null));
3820
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "cs-drawer-scrim", onClick: onClose, "aria-hidden": "true" }), /* @__PURE__ */ React.createElement("aside", { ref, tabIndex: -1, className: cx("cs-drawer", side === "left" && "cs-drawer--left", className), role: "dialog", "aria-modal": "true", "aria-label": typeof title === "string" ? title : t("panel") }, /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__header" }, title ? /* @__PURE__ */ React.createElement("h2", { className: "cs-drawer__title" }, title) : null, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-drawer__close", "aria-label": t("close"), onClick: onClose }, /* @__PURE__ */ React.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }, /* @__PURE__ */ React.createElement("path", { d: "M6 6l12 12M18 6L6 18" })))), /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__body", tabIndex: 0 }, children), actions ? /* @__PURE__ */ React.createElement("div", { className: "cs-drawer__footer" }, actions) : null));
3394
3821
  }
3395
3822
  Object.assign(__ds_scope, { Drawer });
3396
3823
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/overlays/Drawer.jsx", error: String((e && e.message) || e) }); }
@@ -3443,10 +3870,19 @@ function Popconfirm({ trigger, title, onConfirm, onCancel, okLabel, cancelLabel,
3443
3870
  document.removeEventListener("keydown", k);
3444
3871
  };
3445
3872
  }, [open]);
3873
+ const toggle = () => setOpen((o) => !o);
3874
+ const triggerNode = React.isValidElement(trigger) ? React.cloneElement(trigger, {
3875
+ "aria-haspopup": "dialog",
3876
+ "aria-expanded": open,
3877
+ onClick: (e) => {
3878
+ if (typeof trigger.props.onClick === "function") trigger.props.onClick(e);
3879
+ if (!e.defaultPrevented) toggle();
3880
+ }
3881
+ }) : /* @__PURE__ */ React.createElement("button", { type: "button", "aria-haspopup": "dialog", "aria-expanded": open, onClick: toggle }, trigger);
3446
3882
  return /* @__PURE__ */ React.createElement("span", { ref: (el) => {
3447
3883
  wrap.current = el;
3448
3884
  ref.current = el;
3449
- }, className: cx("cs-popconfirm", className) }, /* @__PURE__ */ React.createElement("span", { onClick: () => setOpen((o) => !o), "aria-haspopup": "dialog", "aria-expanded": open }, trigger), open ? /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__panel", role: "alertdialog", "aria-label": typeof title === "string" ? title : void 0 }, /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__title" }, title), /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__actions" }, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-button cs-button--ghost cs-button--xs", onClick: () => {
3885
+ }, className: cx("cs-popconfirm", className) }, triggerNode, open ? /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__panel", role: "alertdialog", "aria-label": typeof title === "string" ? title : void 0 }, /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__title" }, title), /* @__PURE__ */ React.createElement("span", { className: "cs-popconfirm__actions" }, /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-button cs-button--ghost cs-button--xs", onClick: () => {
3450
3886
  setOpen(false);
3451
3887
  onCancel && onCancel();
3452
3888
  } }, cancelLabel != null ? cancelLabel : t("cancel")), /* @__PURE__ */ React.createElement("button", { type: "button", className: "cs-button cs-button--primary cs-button--xs", onClick: () => {
@@ -3480,7 +3916,16 @@ function Popover({ trigger, children, align = "start", open: controlled, onOpenC
3480
3916
  document.removeEventListener("keydown", k);
3481
3917
  };
3482
3918
  }, [open]);
3483
- return /* @__PURE__ */ React.createElement("span", { className: cx("cs-popover", className), ref }, /* @__PURE__ */ React.createElement("span", { onClick: () => set(!open), "aria-haspopup": "dialog", "aria-expanded": open }, trigger), open ? /* @__PURE__ */ React.createElement("div", { className: cx("cs-popover__panel", align === "end" && "cs-popover__panel--end"), role: "dialog" }, children) : null);
3919
+ const toggle = () => set(!open);
3920
+ const triggerNode = React.isValidElement(trigger) ? React.cloneElement(trigger, {
3921
+ "aria-haspopup": "dialog",
3922
+ "aria-expanded": open,
3923
+ onClick: (e) => {
3924
+ if (typeof trigger.props.onClick === "function") trigger.props.onClick(e);
3925
+ if (!e.defaultPrevented) toggle();
3926
+ }
3927
+ }) : /* @__PURE__ */ React.createElement("button", { type: "button", "aria-haspopup": "dialog", "aria-expanded": open, onClick: toggle }, trigger);
3928
+ return /* @__PURE__ */ React.createElement("span", { className: cx("cs-popover", className), ref }, triggerNode, open ? /* @__PURE__ */ React.createElement("div", { className: cx("cs-popover__panel", align === "end" && "cs-popover__panel--end"), role: "dialog" }, children) : null);
3484
3929
  }
3485
3930
  Object.assign(__ds_scope, { Popover });
3486
3931
  })(); } catch (e) { __ds_ns.__errors.push({ path: "components/overlays/Popover.jsx", error: String((e && e.message) || e) }); }
@@ -4292,7 +4737,7 @@ try { (() => {
4292
4737
  const tokens = {
4293
4738
  "$meta": {
4294
4739
  "system": "CyberSkill Design System",
4295
- "version": "1.0.0",
4740
+ "version": "1.1.0",
4296
4741
  "generated": "2026-07-23",
4297
4742
  "note": "Generated from tokens/*.css. Root grouped by category; theme/element scopes carry overrides only. Regenerate after any token change (see docs/conventions.md)."
4298
4743
  },
@@ -4344,14 +4789,14 @@ const tokens = {
4344
4789
  },
4345
4790
  "accent": {
4346
4791
  "--cs-accent": "#F4BA17",
4347
- "--cs-accent-strong": "#B98200",
4792
+ "--cs-accent-strong": "#A47D17",
4348
4793
  "--cs-accent-bright": "#F4BA17",
4349
4794
  "--cs-accent-on": "#45210E",
4350
4795
  "--cs-accent-tint": "#FBF4E9",
4351
4796
  "--cs-accent-ink": "#45210E",
4352
- "--cs-accent-glow": "rgba(244, 186, 23, 0.5)",
4797
+ "--cs-accent-glow": "rgba(244, 186, 23, 0.48)",
4353
4798
  "--cs-accent-grad-a": "#F4BA17",
4354
- "--cs-accent-grad-b": "#C77B4A"
4799
+ "--cs-accent-grad-b": "#FCAF91"
4355
4800
  },
4356
4801
  "depth": {
4357
4802
  "--cs-depth-bg": "0",
@@ -4428,6 +4873,7 @@ const tokens = {
4428
4873
  },
4429
4874
  "font": {
4430
4875
  "--cs-font-family-ui": "'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif",
4876
+ "--cs-font-family-display": "'Space Grotesk', 'Be Vietnam Pro', ui-sans-serif, system-ui, sans-serif",
4431
4877
  "--cs-font-family-mono": "'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
4432
4878
  "--cs-font-weight-regular": "400",
4433
4879
  "--cs-font-weight-medium": "500",
@@ -4528,198 +4974,198 @@ const tokens = {
4528
4974
  }
4529
4975
  },
4530
4976
  "elements": {
4977
+ "tho.sand": {
4978
+ "--cs-accent": "#F8E9C0",
4979
+ "--cs-accent-strong": "#90825E",
4980
+ "--cs-accent-bright": "#F6EBCC",
4981
+ "--cs-accent-on": "#292414",
4982
+ "--cs-accent-tint": "#FBF7EA",
4983
+ "--cs-accent-ink": "#292414",
4984
+ "--cs-accent-glow": "rgba(248, 233, 192, 0.48)",
4985
+ "--cs-accent-grad-a": "#F8E9C0",
4986
+ "--cs-accent-grad-b": "#FCAF91",
4987
+ "--cs-color-text-accent": "#90825E",
4988
+ "--cs-color-link": "#90825E"
4989
+ },
4531
4990
  "tho": {
4532
4991
  "--cs-accent": "#F4BA17",
4533
- "--cs-accent-strong": "#B98200",
4992
+ "--cs-accent-strong": "#A47D17",
4534
4993
  "--cs-accent-bright": "#F4BA17",
4535
4994
  "--cs-accent-on": "#45210E",
4536
4995
  "--cs-accent-tint": "#FBF4E9",
4537
4996
  "--cs-accent-ink": "#45210E",
4538
- "--cs-accent-glow": "rgba(244, 186, 23, 0.5)",
4997
+ "--cs-accent-glow": "rgba(244, 186, 23, 0.48)",
4539
4998
  "--cs-accent-grad-a": "#F4BA17",
4540
- "--cs-accent-grad-b": "#C77B4A"
4999
+ "--cs-accent-grad-b": "#FCAF91"
4541
5000
  },
4542
5001
  "tho.clay": {
4543
- "--cs-accent": "#C77B4A",
4544
- "--cs-accent-strong": "#8F5230",
4545
- "--cs-accent-bright": "#EDBF9D",
4546
- "--cs-accent-on": "#2E1607",
4547
- "--cs-accent-tint": "#F8EDE4",
4548
- "--cs-accent-ink": "#2E1607",
4549
- "--cs-accent-glow": "rgba(199, 123, 74, 0.5)",
4550
- "--cs-accent-grad-a": "#C77B4A",
4551
- "--cs-accent-grad-b": "#F4BA17",
4552
- "--cs-color-text-accent": "#8F5230",
4553
- "--cs-color-link": "#8F5230"
5002
+ "--cs-accent": "#513801",
5003
+ "--cs-accent-strong": "#201300",
5004
+ "--cs-accent-bright": "#DEC7A2",
5005
+ "--cs-accent-on": "#2D220E",
5006
+ "--cs-accent-tint": "#FFF6E7",
5007
+ "--cs-accent-ink": "#2D220E",
5008
+ "--cs-accent-glow": "rgba(81, 56, 1, 0.48)",
5009
+ "--cs-accent-grad-a": "#513801",
5010
+ "--cs-accent-grad-b": "#FCAF91",
5011
+ "--cs-color-text-accent": "#201300",
5012
+ "--cs-color-link": "#201300"
4554
5013
  },
4555
- "tho.sand": {
4556
- "--cs-accent": "#E4C98F",
4557
- "--cs-accent-strong": "#A98B4E",
4558
- "--cs-accent-bright": "#EFDCB2",
4559
- "--cs-accent-on": "#3A2A10",
4560
- "--cs-accent-tint": "#FAF3E3",
4561
- "--cs-accent-ink": "#3A2A10",
4562
- "--cs-accent-glow": "rgba(228, 201, 143, 0.55)",
4563
- "--cs-accent-grad-a": "#E4C98F",
5014
+ "hoa.plasma": {
5015
+ "--cs-accent": "#FFE1D8",
5016
+ "--cs-accent-strong": "#967C75",
5017
+ "--cs-accent-bright": "#FCE6DF",
5018
+ "--cs-accent-on": "#2C211E",
5019
+ "--cs-accent-tint": "#FEF4F2",
5020
+ "--cs-accent-ink": "#2C211E",
5021
+ "--cs-accent-glow": "rgba(255, 225, 216, 0.48)",
5022
+ "--cs-accent-grad-a": "#FFE1D8",
4564
5023
  "--cs-accent-grad-b": "#F4BA17",
4565
- "--cs-color-text-accent": "#8A6F3C",
4566
- "--cs-color-link": "#8A6F3C"
5024
+ "--cs-color-text-accent": "#967C75",
5025
+ "--cs-color-link": "#967C75"
4567
5026
  },
4568
5027
  "hoa": {
4569
- "--cs-accent": "#E0632B",
4570
- "--cs-accent-strong": "#A93E14",
4571
- "--cs-accent-bright": "#F6A26B",
4572
- "--cs-accent-on": "#231007",
4573
- "--cs-accent-tint": "#FBEADF",
4574
- "--cs-accent-ink": "#231007",
4575
- "--cs-accent-glow": "rgba(224, 99, 43, 0.5)",
4576
- "--cs-accent-grad-a": "#E0632B",
5028
+ "--cs-accent": "#FCAF91",
5029
+ "--cs-accent-strong": "#B47054",
5030
+ "--cs-accent-bright": "#FED3C3",
5031
+ "--cs-accent-on": "#381B10",
5032
+ "--cs-accent-tint": "#FFF4F0",
5033
+ "--cs-accent-ink": "#381B10",
5034
+ "--cs-accent-glow": "rgba(252, 175, 145, 0.48)",
5035
+ "--cs-accent-grad-a": "#FCAF91",
4577
5036
  "--cs-accent-grad-b": "#F4BA17",
4578
- "--cs-color-text-accent": "#A93E14",
4579
- "--cs-color-link": "#A93E14"
5037
+ "--cs-color-text-accent": "#B47054",
5038
+ "--cs-color-link": "#B47054"
4580
5039
  },
4581
5040
  "hoa.lava": {
4582
- "--cs-accent": "#C43D1F",
4583
- "--cs-accent-strong": "#7E1F0E",
4584
- "--cs-accent-bright": "#F6AC85",
4585
- "--cs-accent-on": "#1D0B05",
4586
- "--cs-accent-tint": "#FAE5DC",
4587
- "--cs-accent-ink": "#1D0B05",
4588
- "--cs-accent-glow": "rgba(196, 61, 31, 0.55)",
4589
- "--cs-accent-grad-a": "#C43D1F",
4590
- "--cs-accent-grad-b": "#E0632B",
4591
- "--cs-color-text-accent": "#9B2D14",
4592
- "--cs-color-link": "#9B2D14"
5041
+ "--cs-accent": "#622B06",
5042
+ "--cs-accent-strong": "#280D00",
5043
+ "--cs-accent-bright": "#F1BEA4",
5044
+ "--cs-accent-on": "#361D0F",
5045
+ "--cs-accent-tint": "#FFF4EF",
5046
+ "--cs-accent-ink": "#361D0F",
5047
+ "--cs-accent-glow": "rgba(98, 43, 6, 0.48)",
5048
+ "--cs-accent-grad-a": "#622B06",
5049
+ "--cs-accent-grad-b": "#F4BA17",
5050
+ "--cs-color-text-accent": "#280D00",
5051
+ "--cs-color-link": "#280D00"
4593
5052
  },
4594
- "hoa.plasma": {
4595
- "--cs-accent": "#E8506E",
4596
- "--cs-accent-strong": "#B02348",
4597
- "--cs-accent-bright": "#F7A8B8",
4598
- "--cs-accent-on": "#200812",
4599
- "--cs-accent-tint": "#FBE6EB",
4600
- "--cs-accent-ink": "#200812",
4601
- "--cs-accent-glow": "rgba(232, 80, 110, 0.5)",
4602
- "--cs-accent-grad-a": "#E8506E",
4603
- "--cs-accent-grad-b": "#F08A52",
4604
- "--cs-color-text-accent": "#B02348",
4605
- "--cs-color-link": "#B02348"
5053
+ "thuy.mist": {
5054
+ "--cs-accent": "#C0F5FC",
5055
+ "--cs-accent-strong": "#5A8A90",
5056
+ "--cs-accent-bright": "#CDF4F9",
5057
+ "--cs-accent-on": "#13282B",
5058
+ "--cs-accent-tint": "#EBFAFC",
5059
+ "--cs-accent-ink": "#13282B",
5060
+ "--cs-accent-glow": "rgba(192, 245, 252, 0.48)",
5061
+ "--cs-accent-grad-a": "#C0F5FC",
5062
+ "--cs-accent-grad-b": "#A3D768",
5063
+ "--cs-color-text-accent": "#5A8A90",
5064
+ "--cs-color-link": "#5A8A90"
4606
5065
  },
4607
5066
  "thuy": {
4608
- "--cs-accent": "#4E8E9B",
4609
- "--cs-accent-strong": "#2F5E6B",
4610
- "--cs-accent-bright": "#A6D0DA",
4611
- "--cs-accent-on": "#0E1D20",
4612
- "--cs-accent-tint": "#E6F1F2",
4613
- "--cs-accent-ink": "#0E1D20",
4614
- "--cs-accent-glow": "rgba(78, 142, 155, 0.5)",
4615
- "--cs-accent-grad-a": "#4E8E9B",
4616
- "--cs-accent-grad-b": "#7A9B57",
4617
- "--cs-color-text-accent": "#2F5E6B",
4618
- "--cs-color-link": "#2F5E6B"
5067
+ "--cs-accent": "#2EDBF7",
5068
+ "--cs-accent-strong": "#108EA0",
5069
+ "--cs-accent-bright": "#99EEFF",
5070
+ "--cs-accent-on": "#012A30",
5071
+ "--cs-accent-tint": "#E7FBFF",
5072
+ "--cs-accent-ink": "#012A30",
5073
+ "--cs-accent-glow": "rgba(46, 219, 247, 0.48)",
5074
+ "--cs-accent-grad-a": "#2EDBF7",
5075
+ "--cs-accent-grad-b": "#A3D768",
5076
+ "--cs-color-text-accent": "#108EA0",
5077
+ "--cs-color-link": "#108EA0"
4619
5078
  },
4620
5079
  "thuy.ocean": {
4621
- "--cs-accent": "#2E5E7E",
4622
- "--cs-accent-strong": "#1C3E56",
4623
- "--cs-accent-bright": "#A9CCE0",
4624
- "--cs-accent-on": "#0B161E",
4625
- "--cs-accent-tint": "#E4EEF4",
4626
- "--cs-accent-ink": "#0B161E",
4627
- "--cs-accent-glow": "rgba(46, 94, 126, 0.55)",
4628
- "--cs-accent-grad-a": "#2E5E7E",
4629
- "--cs-accent-grad-b": "#4E8E9B",
4630
- "--cs-color-text-accent": "#1C3E56",
4631
- "--cs-color-link": "#1C3E56"
5080
+ "--cs-accent": "#004554",
5081
+ "--cs-accent-strong": "#011A21",
5082
+ "--cs-accent-bright": "#A8D3E0",
5083
+ "--cs-accent-on": "#10282F",
5084
+ "--cs-accent-tint": "#EAFAFF",
5085
+ "--cs-accent-ink": "#10282F",
5086
+ "--cs-accent-glow": "rgba(0, 69, 84, 0.48)",
5087
+ "--cs-accent-grad-a": "#004554",
5088
+ "--cs-accent-grad-b": "#A3D768",
5089
+ "--cs-color-text-accent": "#011A21",
5090
+ "--cs-color-link": "#011A21"
4632
5091
  },
4633
- "thuy.mist": {
4634
- "--cs-accent": "#A7C4C9",
4635
- "--cs-accent-strong": "#5E7F85",
4636
- "--cs-accent-bright": "#C4DADD",
4637
- "--cs-accent-on": "#16262A",
4638
- "--cs-accent-tint": "#F0F6F7",
4639
- "--cs-accent-ink": "#16262A",
4640
- "--cs-accent-glow": "rgba(167, 196, 201, 0.55)",
4641
- "--cs-accent-grad-a": "#A7C4C9",
4642
- "--cs-accent-grad-b": "#4E8E9B",
4643
- "--cs-color-text-accent": "#4A686E",
4644
- "--cs-color-link": "#4A686E"
5092
+ "moc.bamboo": {
5093
+ "--cs-accent": "#E1F1C8",
5094
+ "--cs-accent-strong": "#7C8965",
5095
+ "--cs-accent-bright": "#E5F1D2",
5096
+ "--cs-accent-on": "#212617",
5097
+ "--cs-accent-tint": "#F4F9ED",
5098
+ "--cs-accent-ink": "#212617",
5099
+ "--cs-accent-glow": "rgba(225, 241, 200, 0.48)",
5100
+ "--cs-accent-grad-a": "#E1F1C8",
5101
+ "--cs-accent-grad-b": "#FCAF91",
5102
+ "--cs-color-text-accent": "#7C8965",
5103
+ "--cs-color-link": "#7C8965"
4645
5104
  },
4646
5105
  "moc": {
4647
- "--cs-accent": "#7A9B57",
4648
- "--cs-accent-strong": "#4C6B35",
4649
- "--cs-accent-bright": "#A9C177",
4650
- "--cs-accent-on": "#18200F",
4651
- "--cs-accent-tint": "#EEF3E2",
4652
- "--cs-accent-ink": "#18200F",
4653
- "--cs-accent-glow": "rgba(122, 155, 87, 0.5)",
4654
- "--cs-accent-grad-a": "#7A9B57",
4655
- "--cs-accent-grad-b": "#E0632B",
4656
- "--cs-color-text-accent": "#4C6B35",
4657
- "--cs-color-link": "#4C6B35"
4658
- },
4659
- "moc.bamboo": {
4660
- "--cs-accent": "#A9C177",
4661
- "--cs-accent-strong": "#6B8442",
4662
- "--cs-accent-bright": "#C4D69B",
4663
- "--cs-accent-on": "#1C240F",
4664
- "--cs-accent-tint": "#F3F7E8",
4665
- "--cs-accent-ink": "#1C240F",
4666
- "--cs-accent-glow": "rgba(169, 193, 119, 0.55)",
4667
- "--cs-accent-grad-a": "#A9C177",
4668
- "--cs-accent-grad-b": "#7A9B57",
4669
- "--cs-color-text-accent": "#5B7237",
4670
- "--cs-color-link": "#5B7237"
5106
+ "--cs-accent": "#A3D768",
5107
+ "--cs-accent-strong": "#629122",
5108
+ "--cs-accent-bright": "#C5ED9C",
5109
+ "--cs-accent-on": "#182A00",
5110
+ "--cs-accent-tint": "#EFFCE3",
5111
+ "--cs-accent-ink": "#182A00",
5112
+ "--cs-accent-glow": "rgba(163, 215, 104, 0.48)",
5113
+ "--cs-accent-grad-a": "#A3D768",
5114
+ "--cs-accent-grad-b": "#FCAF91",
5115
+ "--cs-color-text-accent": "#629122",
5116
+ "--cs-color-link": "#629122"
4671
5117
  },
4672
5118
  "moc.forest": {
4673
- "--cs-accent": "#3E5A2E",
4674
- "--cs-accent-strong": "#263A1B",
4675
- "--cs-accent-bright": "#B3CE9B",
4676
- "--cs-accent-on": "#101708",
4677
- "--cs-accent-tint": "#E9EFE1",
4678
- "--cs-accent-ink": "#101708",
4679
- "--cs-accent-glow": "rgba(62, 90, 46, 0.55)",
4680
- "--cs-accent-grad-a": "#3E5A2E",
4681
- "--cs-accent-grad-b": "#7A9B57",
4682
- "--cs-color-text-accent": "#31481F",
4683
- "--cs-color-link": "#31481F"
5119
+ "--cs-accent": "#1A4A01",
5120
+ "--cs-accent-strong": "#051D00",
5121
+ "--cs-accent-bright": "#B0D8A3",
5122
+ "--cs-accent-on": "#162A0E",
5123
+ "--cs-accent-tint": "#ECFDE7",
5124
+ "--cs-accent-ink": "#162A0E",
5125
+ "--cs-accent-glow": "rgba(26, 74, 1, 0.48)",
5126
+ "--cs-accent-grad-a": "#1A4A01",
5127
+ "--cs-accent-grad-b": "#FCAF91",
5128
+ "--cs-color-text-accent": "#051D00",
5129
+ "--cs-color-link": "#051D00"
5130
+ },
5131
+ "kim.titanium": {
5132
+ "--cs-accent": "#FEE5C7",
5133
+ "--cs-accent-strong": "#947F65",
5134
+ "--cs-accent-bright": "#FBE8D2",
5135
+ "--cs-accent-on": "#2B2217",
5136
+ "--cs-accent-tint": "#FDF5ED",
5137
+ "--cs-accent-ink": "#2B2217",
5138
+ "--cs-accent-glow": "rgba(254, 229, 199, 0.48)",
5139
+ "--cs-accent-grad-a": "#FEE5C7",
5140
+ "--cs-accent-grad-b": "#2EDBF7",
5141
+ "--cs-color-text-accent": "#947F65",
5142
+ "--cs-color-link": "#947F65"
4684
5143
  },
4685
5144
  "kim": {
4686
- "--cs-accent": "#BFB29B",
4687
- "--cs-accent-strong": "#7E7160",
4688
- "--cs-accent-bright": "#D8CCB6",
4689
- "--cs-accent-on": "#221C12",
4690
- "--cs-accent-tint": "#F3EFE6",
4691
- "--cs-accent-ink": "#221C12",
4692
- "--cs-accent-glow": "rgba(191, 178, 155, 0.5)",
4693
- "--cs-accent-grad-a": "#BFB29B",
4694
- "--cs-accent-grad-b": "#4E8E9B",
4695
- "--cs-color-text-accent": "#6E6151",
4696
- "--cs-color-link": "#6E6151"
5145
+ "--cs-accent": "#F3B958",
5146
+ "--cs-accent-strong": "#AC780B",
5147
+ "--cs-accent-bright": "#FDD89F",
5148
+ "--cs-accent-on": "#312002",
5149
+ "--cs-accent-tint": "#FFF5E7",
5150
+ "--cs-accent-ink": "#312002",
5151
+ "--cs-accent-glow": "rgba(243, 185, 88, 0.48)",
5152
+ "--cs-accent-grad-a": "#F3B958",
5153
+ "--cs-accent-grad-b": "#2EDBF7",
5154
+ "--cs-color-text-accent": "#AC780B",
5155
+ "--cs-color-link": "#AC780B"
4697
5156
  },
4698
5157
  "kim.steel": {
4699
- "--cs-accent": "#9FA3A3",
4700
- "--cs-accent-strong": "#63696B",
4701
- "--cs-accent-bright": "#C2C6C6",
4702
- "--cs-accent-on": "#191D1E",
4703
- "--cs-accent-tint": "#EFF1F1",
4704
- "--cs-accent-ink": "#191D1E",
4705
- "--cs-accent-glow": "rgba(159, 163, 163, 0.5)",
4706
- "--cs-accent-grad-a": "#9FA3A3",
4707
- "--cs-accent-grad-b": "#BFB29B",
4708
- "--cs-color-text-accent": "#565C5E",
4709
- "--cs-color-link": "#565C5E"
4710
- },
4711
- "kim.titanium": {
4712
- "--cs-accent": "#8A7F72",
4713
- "--cs-accent-strong": "#56504A",
4714
- "--cs-accent-bright": "#D9CFC0",
4715
- "--cs-accent-on": "#171310",
4716
- "--cs-accent-tint": "#EFEBE5",
4717
- "--cs-accent-ink": "#171310",
4718
- "--cs-accent-glow": "rgba(138, 127, 114, 0.5)",
4719
- "--cs-accent-grad-a": "#8A7F72",
4720
- "--cs-accent-grad-b": "#BFB29B",
4721
- "--cs-color-text-accent": "#56504A",
4722
- "--cs-color-link": "#56504A"
5158
+ "--cs-accent": "#503901",
5159
+ "--cs-accent-strong": "#1F1400",
5160
+ "--cs-accent-bright": "#DCC8A2",
5161
+ "--cs-accent-on": "#2D220E",
5162
+ "--cs-accent-tint": "#FEF6E7",
5163
+ "--cs-accent-ink": "#2D220E",
5164
+ "--cs-accent-glow": "rgba(80, 57, 1, 0.48)",
5165
+ "--cs-accent-grad-a": "#503901",
5166
+ "--cs-accent-grad-b": "#2EDBF7",
5167
+ "--cs-color-text-accent": "#1F1400",
5168
+ "--cs-color-link": "#1F1400"
4723
5169
  }
4724
5170
  }
4725
5171
  };
@@ -5170,6 +5616,8 @@ __ds_ns.FloatingActionButton = __ds_scope.FloatingActionButton;
5170
5616
 
5171
5617
  __ds_ns.Accordion = __ds_scope.Accordion;
5172
5618
 
5619
+ __ds_ns.AspectRatio = __ds_scope.AspectRatio;
5620
+
5173
5621
  __ds_ns.Avatar = __ds_scope.Avatar;
5174
5622
 
5175
5623
  __ds_ns.AvatarGroup = __ds_scope.AvatarGroup;
@@ -5188,6 +5636,8 @@ __ds_ns.Chart = __ds_scope.Chart;
5188
5636
 
5189
5637
  __ds_ns.CodeBlock = __ds_scope.CodeBlock;
5190
5638
 
5639
+ __ds_ns.Collapsible = __ds_scope.Collapsible;
5640
+
5191
5641
  __ds_ns.Comment = __ds_scope.Comment;
5192
5642
 
5193
5643
  __ds_ns.DescriptionList = __ds_scope.DescriptionList;
@@ -5196,6 +5646,8 @@ __ds_ns.Divider = __ds_scope.Divider;
5196
5646
 
5197
5647
  __ds_ns.Image = __ds_scope.Image;
5198
5648
 
5649
+ __ds_ns.Item = __ds_scope.Item;
5650
+
5199
5651
  __ds_ns.Kbd = __ds_scope.Kbd;
5200
5652
 
5201
5653
  __ds_ns.List = __ds_scope.List;
@@ -5206,6 +5658,8 @@ __ds_ns.Masonry = __ds_scope.Masonry;
5206
5658
 
5207
5659
  __ds_ns.QRCode = __ds_scope.QRCode;
5208
5660
 
5661
+ __ds_ns.ScrollArea = __ds_scope.ScrollArea;
5662
+
5209
5663
  __ds_ns.Sortable = __ds_scope.Sortable;
5210
5664
 
5211
5665
  __ds_ns.Splitter = __ds_scope.Splitter;
@@ -5284,6 +5738,8 @@ __ds_ns.InputOTP = __ds_scope.InputOTP;
5284
5738
 
5285
5739
  __ds_ns.Mentions = __ds_scope.Mentions;
5286
5740
 
5741
+ __ds_ns.NativeSelect = __ds_scope.NativeSelect;
5742
+
5287
5743
  __ds_ns.NumberField = __ds_scope.NumberField;
5288
5744
 
5289
5745
  __ds_ns.Radio = __ds_scope.Radio;
@@ -5360,6 +5816,8 @@ __ds_ns.Tab = __ds_scope.Tab;
5360
5816
 
5361
5817
  __ds_ns.Toolbar = __ds_scope.Toolbar;
5362
5818
 
5819
+ __ds_ns.AlertDialog = __ds_scope.AlertDialog;
5820
+
5363
5821
  __ds_ns.ContextMenu = __ds_scope.ContextMenu;
5364
5822
 
5365
5823
  __ds_ns.Drawer = __ds_scope.Drawer;