@ds-mo/ui 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/dist/components/ds-accordion.d.ts +11 -0
  2. package/dist/components/ds-accordion.js +2 -0
  3. package/dist/components/ds-accordion.js.map +1 -0
  4. package/dist/components/ds-badge.d.ts +11 -0
  5. package/dist/components/ds-badge.js +2 -0
  6. package/dist/components/ds-badge.js.map +1 -0
  7. package/dist/components/ds-banner.d.ts +11 -0
  8. package/dist/components/ds-banner.js +2 -0
  9. package/dist/components/ds-banner.js.map +1 -0
  10. package/dist/components/ds-breadcrumb.d.ts +11 -0
  11. package/dist/components/ds-breadcrumb.js +2 -0
  12. package/dist/components/ds-breadcrumb.js.map +1 -0
  13. package/dist/components/ds-button.d.ts +11 -0
  14. package/dist/components/ds-button.js +2 -0
  15. package/dist/components/ds-button.js.map +1 -0
  16. package/dist/components/ds-card.d.ts +11 -0
  17. package/dist/components/ds-card.js +2 -0
  18. package/dist/components/ds-card.js.map +1 -0
  19. package/dist/components/ds-checkbox.d.ts +11 -0
  20. package/dist/components/ds-checkbox.js +2 -0
  21. package/dist/components/ds-checkbox.js.map +1 -0
  22. package/dist/components/ds-divider.d.ts +11 -0
  23. package/dist/components/ds-divider.js +2 -0
  24. package/dist/components/ds-divider.js.map +1 -0
  25. package/dist/components/ds-empty-state.d.ts +11 -0
  26. package/dist/components/ds-empty-state.js +2 -0
  27. package/dist/components/ds-empty-state.js.map +1 -0
  28. package/dist/components/ds-fade.d.ts +11 -0
  29. package/dist/components/ds-fade.js +2 -0
  30. package/dist/components/ds-fade.js.map +1 -0
  31. package/dist/components/ds-field.d.ts +11 -0
  32. package/dist/components/ds-field.js +2 -0
  33. package/dist/components/ds-field.js.map +1 -0
  34. package/dist/components/ds-header.d.ts +11 -0
  35. package/dist/components/ds-header.js +2 -0
  36. package/dist/components/ds-header.js.map +1 -0
  37. package/dist/components/ds-input.d.ts +11 -0
  38. package/dist/components/ds-input.js +2 -0
  39. package/dist/components/ds-input.js.map +1 -0
  40. package/dist/components/ds-loader.d.ts +11 -0
  41. package/dist/components/ds-loader.js +2 -0
  42. package/dist/components/ds-loader.js.map +1 -0
  43. package/dist/components/ds-menu.d.ts +11 -0
  44. package/dist/components/ds-menu.js +2 -0
  45. package/dist/components/ds-menu.js.map +1 -0
  46. package/dist/components/ds-modal.d.ts +11 -0
  47. package/dist/components/ds-modal.js +2 -0
  48. package/dist/components/ds-modal.js.map +1 -0
  49. package/dist/components/ds-pagination.d.ts +11 -0
  50. package/dist/components/ds-pagination.js +2 -0
  51. package/dist/components/ds-pagination.js.map +1 -0
  52. package/dist/components/ds-radio-group.d.ts +11 -0
  53. package/dist/components/ds-radio-group.js +2 -0
  54. package/dist/components/ds-radio-group.js.map +1 -0
  55. package/dist/components/ds-scrollbar.d.ts +11 -0
  56. package/dist/components/ds-scrollbar.js +2 -0
  57. package/dist/components/ds-scrollbar.js.map +1 -0
  58. package/dist/components/ds-sidebar.d.ts +11 -0
  59. package/dist/components/ds-sidebar.js +2 -0
  60. package/dist/components/ds-sidebar.js.map +1 -0
  61. package/dist/components/ds-skeleton.d.ts +11 -0
  62. package/dist/components/ds-skeleton.js +2 -0
  63. package/dist/components/ds-skeleton.js.map +1 -0
  64. package/dist/components/ds-slider.d.ts +11 -0
  65. package/dist/components/ds-slider.js +2 -0
  66. package/dist/components/ds-slider.js.map +1 -0
  67. package/dist/components/ds-surface.d.ts +11 -0
  68. package/dist/components/ds-surface.js +2 -0
  69. package/dist/components/ds-surface.js.map +1 -0
  70. package/dist/components/ds-tab-group.d.ts +11 -0
  71. package/dist/components/ds-tab-group.js +2 -0
  72. package/dist/components/ds-tab-group.js.map +1 -0
  73. package/dist/components/ds-table.d.ts +11 -0
  74. package/dist/components/ds-table.js +2 -0
  75. package/dist/components/ds-table.js.map +1 -0
  76. package/dist/components/ds-tag.d.ts +11 -0
  77. package/dist/components/ds-tag.js +2 -0
  78. package/dist/components/ds-tag.js.map +1 -0
  79. package/dist/components/ds-text.d.ts +11 -0
  80. package/dist/components/ds-text.js +2 -0
  81. package/dist/components/ds-text.js.map +1 -0
  82. package/dist/components/ds-toast-provider.d.ts +11 -0
  83. package/dist/components/ds-toast-provider.js +2 -0
  84. package/dist/components/ds-toast-provider.js.map +1 -0
  85. package/dist/components/ds-toggle.d.ts +11 -0
  86. package/dist/components/ds-toggle.js +2 -0
  87. package/dist/components/ds-toggle.js.map +1 -0
  88. package/dist/components/ds-tooltip.d.ts +11 -0
  89. package/dist/components/ds-tooltip.js +2 -0
  90. package/dist/components/ds-tooltip.js.map +1 -0
  91. package/dist/components/index.d.ts +33 -0
  92. package/dist/components/index.js +2 -0
  93. package/dist/components/index.js.map +1 -0
  94. package/dist/components/p-BcuUR5Ao.js +2 -0
  95. package/dist/components/p-BcuUR5Ao.js.map +1 -0
  96. package/dist/types/.stencil/Accordion/Accordion.d.ts +28 -0
  97. package/dist/types/.stencil/Badge/Badge.d.ts +8 -0
  98. package/dist/types/.stencil/Badge/index.d.ts +2 -0
  99. package/dist/types/.stencil/Banner/Banner.d.ts +29 -0
  100. package/dist/types/.stencil/Breadcrumb/Breadcrumb.d.ts +16 -0
  101. package/dist/types/.stencil/Button/Button.d.ts +38 -0
  102. package/dist/types/.stencil/Button/index.d.ts +2 -0
  103. package/dist/types/.stencil/Card/Card.d.ts +8 -0
  104. package/dist/types/.stencil/Checkbox/Checkbox.d.ts +13 -0
  105. package/dist/types/.stencil/Checkbox/index.d.ts +2 -0
  106. package/dist/types/.stencil/Divider/Divider.d.ts +7 -0
  107. package/dist/types/.stencil/Divider/index.d.ts +2 -0
  108. package/dist/types/.stencil/EmptyState/EmptyState.d.ts +7 -0
  109. package/dist/types/.stencil/Fade/Fade.d.ts +10 -0
  110. package/dist/types/.stencil/Fade/index.d.ts +2 -0
  111. package/dist/types/.stencil/Field/Field.d.ts +8 -0
  112. package/dist/types/.stencil/Header/Header.d.ts +7 -0
  113. package/dist/types/.stencil/Input/Input.d.ts +26 -0
  114. package/dist/types/.stencil/Input/index.d.ts +2 -0
  115. package/dist/types/.stencil/Loader/Loader.d.ts +12 -0
  116. package/dist/types/.stencil/Loader/index.d.ts +2 -0
  117. package/dist/types/.stencil/Menu/Menu.d.ts +60 -0
  118. package/dist/types/.stencil/Modal/Modal.d.ts +31 -0
  119. package/dist/types/.stencil/Pagination/Pagination.d.ts +11 -0
  120. package/dist/types/.stencil/RadioGroup/RadioGroup.d.ts +21 -0
  121. package/dist/types/.stencil/RadioGroup/index.d.ts +2 -0
  122. package/dist/types/.stencil/Scrollbar/Scrollbar.d.ts +27 -0
  123. package/dist/types/.stencil/Sidebar/Sidebar.d.ts +29 -0
  124. package/dist/types/.stencil/Skeleton/Skeleton.d.ts +16 -0
  125. package/dist/types/.stencil/Skeleton/index.d.ts +2 -0
  126. package/dist/types/.stencil/Slider/Slider.d.ts +18 -0
  127. package/dist/types/.stencil/Slider/index.d.ts +2 -0
  128. package/dist/types/.stencil/Surface/Surface.d.ts +22 -0
  129. package/dist/types/.stencil/TabGroup/TabGroup.d.ts +29 -0
  130. package/dist/types/.stencil/Table/Table.d.ts +50 -0
  131. package/dist/types/.stencil/Tag/Tag.d.ts +32 -0
  132. package/dist/types/.stencil/Tag/index.d.ts +2 -0
  133. package/dist/types/.stencil/Text/Text.d.ts +22 -0
  134. package/dist/types/.stencil/Text/index.d.ts +2 -0
  135. package/dist/types/.stencil/Toast/Toast.d.ts +15 -0
  136. package/dist/types/.stencil/Toast/toast-service.d.ts +24 -0
  137. package/dist/types/.stencil/Toggle/Toggle.d.ts +10 -0
  138. package/dist/types/.stencil/Toggle/index.d.ts +2 -0
  139. package/dist/types/.stencil/Tooltip/Tooltip.d.ts +36 -0
  140. package/dist/types/components.d.ts +2024 -0
  141. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  142. package/package.json +31 -31
  143. package/src/angular/angular-component-lib/utils.ts +65 -0
  144. package/src/angular/index.ts +35 -0
  145. package/src/angular/proxies.ts +819 -0
  146. package/dist/components/Accordion/Accordion.d.ts +0 -29
  147. package/dist/components/Accordion/Accordion.d.ts.map +0 -1
  148. package/dist/components/Accordion/index.d.ts +0 -3
  149. package/dist/components/Accordion/index.d.ts.map +0 -1
  150. package/dist/components/Badge/Badge.d.ts +0 -18
  151. package/dist/components/Badge/Badge.d.ts.map +0 -1
  152. package/dist/components/Badge/index.d.ts +0 -3
  153. package/dist/components/Badge/index.d.ts.map +0 -1
  154. package/dist/components/Banner/Banner.d.ts +0 -16
  155. package/dist/components/Banner/Banner.d.ts.map +0 -1
  156. package/dist/components/Banner/index.d.ts +0 -3
  157. package/dist/components/Banner/index.d.ts.map +0 -1
  158. package/dist/components/Breadcrumb/Breadcrumb.d.ts +0 -15
  159. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +0 -1
  160. package/dist/components/Breadcrumb/index.d.ts +0 -3
  161. package/dist/components/Breadcrumb/index.d.ts.map +0 -1
  162. package/dist/components/Button/Button.d.ts +0 -85
  163. package/dist/components/Button/Button.d.ts.map +0 -1
  164. package/dist/components/Button/index.d.ts +0 -3
  165. package/dist/components/Button/index.d.ts.map +0 -1
  166. package/dist/components/ButtonGroup/ButtonGroup.d.ts +0 -26
  167. package/dist/components/ButtonGroup/ButtonGroup.d.ts.map +0 -1
  168. package/dist/components/ButtonGroup/index.d.ts +0 -3
  169. package/dist/components/ButtonGroup/index.d.ts.map +0 -1
  170. package/dist/components/Card/Card.d.ts +0 -20
  171. package/dist/components/Card/Card.d.ts.map +0 -1
  172. package/dist/components/Card/index.d.ts +0 -3
  173. package/dist/components/Card/index.d.ts.map +0 -1
  174. package/dist/components/Checkbox/Checkbox.d.ts +0 -18
  175. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  176. package/dist/components/Checkbox/index.d.ts +0 -3
  177. package/dist/components/Checkbox/index.d.ts.map +0 -1
  178. package/dist/components/Divider/Divider.d.ts +0 -9
  179. package/dist/components/Divider/Divider.d.ts.map +0 -1
  180. package/dist/components/Divider/index.d.ts +0 -3
  181. package/dist/components/Divider/index.d.ts.map +0 -1
  182. package/dist/components/EmptyState/EmptyState.d.ts +0 -9
  183. package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
  184. package/dist/components/EmptyState/index.d.ts +0 -3
  185. package/dist/components/EmptyState/index.d.ts.map +0 -1
  186. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +0 -18
  187. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts.map +0 -1
  188. package/dist/components/ErrorBoundary/index.d.ts +0 -3
  189. package/dist/components/ErrorBoundary/index.d.ts.map +0 -1
  190. package/dist/components/Fade/Fade.d.ts +0 -11
  191. package/dist/components/Fade/Fade.d.ts.map +0 -1
  192. package/dist/components/Fade/index.d.ts +0 -3
  193. package/dist/components/Fade/index.d.ts.map +0 -1
  194. package/dist/components/Field/Field.d.ts +0 -9
  195. package/dist/components/Field/Field.d.ts.map +0 -1
  196. package/dist/components/Field/index.d.ts +0 -3
  197. package/dist/components/Field/index.d.ts.map +0 -1
  198. package/dist/components/Header/Header.d.ts +0 -12
  199. package/dist/components/Header/Header.d.ts.map +0 -1
  200. package/dist/components/Header/index.d.ts +0 -3
  201. package/dist/components/Header/index.d.ts.map +0 -1
  202. package/dist/components/Input/Input.d.ts +0 -27
  203. package/dist/components/Input/Input.d.ts.map +0 -1
  204. package/dist/components/Input/index.d.ts +0 -3
  205. package/dist/components/Input/index.d.ts.map +0 -1
  206. package/dist/components/LabelWrap/LabelWrap.d.ts +0 -27
  207. package/dist/components/LabelWrap/LabelWrap.d.ts.map +0 -1
  208. package/dist/components/LabelWrap/index.d.ts +0 -2
  209. package/dist/components/LabelWrap/index.d.ts.map +0 -1
  210. package/dist/components/Loader/Loader.d.ts +0 -33
  211. package/dist/components/Loader/Loader.d.ts.map +0 -1
  212. package/dist/components/Loader/index.d.ts +0 -3
  213. package/dist/components/Loader/index.d.ts.map +0 -1
  214. package/dist/components/Menu/DestructiveMenuItem.d.ts +0 -12
  215. package/dist/components/Menu/DestructiveMenuItem.d.ts.map +0 -1
  216. package/dist/components/Menu/Menu.d.ts +0 -55
  217. package/dist/components/Menu/Menu.d.ts.map +0 -1
  218. package/dist/components/Menu/MenuItem.d.ts +0 -33
  219. package/dist/components/Menu/MenuItem.d.ts.map +0 -1
  220. package/dist/components/Menu/index.d.ts +0 -7
  221. package/dist/components/Menu/index.d.ts.map +0 -1
  222. package/dist/components/Modal/Modal.d.ts +0 -15
  223. package/dist/components/Modal/Modal.d.ts.map +0 -1
  224. package/dist/components/Modal/index.d.ts +0 -3
  225. package/dist/components/Modal/index.d.ts.map +0 -1
  226. package/dist/components/Pagination/Pagination.d.ts +0 -16
  227. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  228. package/dist/components/Pagination/index.d.ts +0 -3
  229. package/dist/components/Pagination/index.d.ts.map +0 -1
  230. package/dist/components/Radio/Radio.d.ts +0 -35
  231. package/dist/components/Radio/Radio.d.ts.map +0 -1
  232. package/dist/components/Radio/index.d.ts +0 -3
  233. package/dist/components/Radio/index.d.ts.map +0 -1
  234. package/dist/components/Scrollbar/Scrollbar.d.ts +0 -13
  235. package/dist/components/Scrollbar/Scrollbar.d.ts.map +0 -1
  236. package/dist/components/Scrollbar/index.d.ts +0 -3
  237. package/dist/components/Scrollbar/index.d.ts.map +0 -1
  238. package/dist/components/Select/Select.d.ts +0 -22
  239. package/dist/components/Select/Select.d.ts.map +0 -1
  240. package/dist/components/Select/index.d.ts +0 -3
  241. package/dist/components/Select/index.d.ts.map +0 -1
  242. package/dist/components/Sidebar/Sidebar.d.ts +0 -15
  243. package/dist/components/Sidebar/Sidebar.d.ts.map +0 -1
  244. package/dist/components/Sidebar/SidebarItem.d.ts +0 -14
  245. package/dist/components/Sidebar/SidebarItem.d.ts.map +0 -1
  246. package/dist/components/Sidebar/SidebarSection.d.ts +0 -10
  247. package/dist/components/Sidebar/SidebarSection.d.ts.map +0 -1
  248. package/dist/components/Sidebar/index.d.ts +0 -7
  249. package/dist/components/Sidebar/index.d.ts.map +0 -1
  250. package/dist/components/Skeleton/Skeleton.d.ts +0 -17
  251. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  252. package/dist/components/Skeleton/index.d.ts +0 -3
  253. package/dist/components/Skeleton/index.d.ts.map +0 -1
  254. package/dist/components/Slider/Slider.d.ts +0 -16
  255. package/dist/components/Slider/Slider.d.ts.map +0 -1
  256. package/dist/components/Slider/index.d.ts +0 -3
  257. package/dist/components/Slider/index.d.ts.map +0 -1
  258. package/dist/components/Surface/Surface.d.ts +0 -59
  259. package/dist/components/Surface/Surface.d.ts.map +0 -1
  260. package/dist/components/Surface/index.d.ts +0 -3
  261. package/dist/components/Surface/index.d.ts.map +0 -1
  262. package/dist/components/Tab/Tab.d.ts +0 -21
  263. package/dist/components/Tab/Tab.d.ts.map +0 -1
  264. package/dist/components/Tab/index.d.ts +0 -3
  265. package/dist/components/Tab/index.d.ts.map +0 -1
  266. package/dist/components/TabGroup/TabGroup.d.ts +0 -26
  267. package/dist/components/TabGroup/TabGroup.d.ts.map +0 -1
  268. package/dist/components/TabGroup/index.d.ts +0 -3
  269. package/dist/components/TabGroup/index.d.ts.map +0 -1
  270. package/dist/components/Table/Table.d.ts +0 -46
  271. package/dist/components/Table/Table.d.ts.map +0 -1
  272. package/dist/components/Table/index.d.ts +0 -3
  273. package/dist/components/Table/index.d.ts.map +0 -1
  274. package/dist/components/Tag/Tag.d.ts +0 -38
  275. package/dist/components/Tag/Tag.d.ts.map +0 -1
  276. package/dist/components/Tag/index.d.ts +0 -3
  277. package/dist/components/Tag/index.d.ts.map +0 -1
  278. package/dist/components/Text/Text.d.ts +0 -41
  279. package/dist/components/Text/Text.d.ts.map +0 -1
  280. package/dist/components/Text/index.d.ts +0 -3
  281. package/dist/components/Text/index.d.ts.map +0 -1
  282. package/dist/components/Toast/Toast.d.ts +0 -33
  283. package/dist/components/Toast/Toast.d.ts.map +0 -1
  284. package/dist/components/Toast/index.d.ts +0 -3
  285. package/dist/components/Toast/index.d.ts.map +0 -1
  286. package/dist/components/Toggle/Toggle.d.ts +0 -17
  287. package/dist/components/Toggle/Toggle.d.ts.map +0 -1
  288. package/dist/components/Toggle/index.d.ts +0 -3
  289. package/dist/components/Toggle/index.d.ts.map +0 -1
  290. package/dist/components/ToggleButton/ToggleButton.d.ts +0 -35
  291. package/dist/components/ToggleButton/ToggleButton.d.ts.map +0 -1
  292. package/dist/components/ToggleButton/index.d.ts +0 -3
  293. package/dist/components/ToggleButton/index.d.ts.map +0 -1
  294. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.d.ts +0 -24
  295. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.d.ts.map +0 -1
  296. package/dist/components/ToggleButtonGroup/index.d.ts +0 -3
  297. package/dist/components/ToggleButtonGroup/index.d.ts.map +0 -1
  298. package/dist/components/Tooltip/Tooltip.d.ts +0 -17
  299. package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
  300. package/dist/components/Tooltip/index.d.ts +0 -3
  301. package/dist/components/Tooltip/index.d.ts.map +0 -1
  302. package/dist/index.css +0 -2
  303. package/dist/index.d.ts +0 -82
  304. package/dist/index.d.ts.map +0 -1
  305. package/dist/index.js +0 -2968
  306. package/dist/index.js.map +0 -1
  307. package/dist/r/accordion.json +0 -79
  308. package/dist/r/badge.json +0 -69
  309. package/dist/r/banner.json +0 -90
  310. package/dist/r/breadcrumb.json +0 -70
  311. package/dist/r/button-group.json +0 -65
  312. package/dist/r/button.json +0 -137
  313. package/dist/r/card.json +0 -82
  314. package/dist/r/checkbox.json +0 -91
  315. package/dist/r/divider.json +0 -57
  316. package/dist/r/empty-state.json +0 -69
  317. package/dist/r/error-boundary.json +0 -66
  318. package/dist/r/fade.json +0 -65
  319. package/dist/r/field.json +0 -71
  320. package/dist/r/header.json +0 -67
  321. package/dist/r/input.json +0 -77
  322. package/dist/r/loader.json +0 -54
  323. package/dist/r/menu.json +0 -130
  324. package/dist/r/modal.json +0 -93
  325. package/dist/r/pagination.json +0 -80
  326. package/dist/r/radio.json +0 -85
  327. package/dist/r/registry.json +0 -1600
  328. package/dist/r/scrollbar.json +0 -68
  329. package/dist/r/select.json +0 -93
  330. package/dist/r/sidebar.json +0 -105
  331. package/dist/r/skeleton.json +0 -72
  332. package/dist/r/slider.json +0 -87
  333. package/dist/r/surface.json +0 -97
  334. package/dist/r/tab-group.json +0 -72
  335. package/dist/r/tab.json +0 -71
  336. package/dist/r/table.json +0 -110
  337. package/dist/r/tag.json +0 -110
  338. package/dist/r/text.json +0 -94
  339. package/dist/r/toast.json +0 -77
  340. package/dist/r/toggle-button-group.json +0 -65
  341. package/dist/r/toggle-button.json +0 -94
  342. package/dist/r/toggle.json +0 -65
  343. package/dist/r/tooltip.json +0 -86
  344. package/dist/types/icons.d.ts +0 -14
  345. package/dist/types/icons.d.ts.map +0 -1
  346. package/dist/types/index.d.ts +0 -2
  347. package/dist/types/index.d.ts.map +0 -1
  348. package/dist/utils/cn.d.ts +0 -5
  349. package/dist/utils/cn.d.ts.map +0 -1
  350. package/dist/utils/css-tokens.d.ts +0 -11
  351. package/dist/utils/css-tokens.d.ts.map +0 -1
  352. package/src/components/Accordion/Accordion.module.css +0 -66
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -95
  354. package/src/components/Accordion/Accordion.tsx +0 -131
  355. package/src/components/Accordion/index.ts +0 -2
  356. package/src/components/Badge/Badge.module.css +0 -6
  357. package/src/components/Badge/Badge.stories.tsx +0 -131
  358. package/src/components/Badge/Badge.tsx +0 -40
  359. package/src/components/Badge/index.ts +0 -2
  360. package/src/components/Banner/Banner.module.css +0 -105
  361. package/src/components/Banner/Banner.stories.tsx +0 -81
  362. package/src/components/Banner/Banner.tsx +0 -139
  363. package/src/components/Banner/index.ts +0 -2
  364. package/src/components/Breadcrumb/Breadcrumb.module.css +0 -46
  365. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -72
  366. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -68
  367. package/src/components/Breadcrumb/index.ts +0 -2
  368. package/src/components/Button/Button.mdx +0 -143
  369. package/src/components/Button/Button.module.css +0 -343
  370. package/src/components/Button/Button.stories.tsx +0 -575
  371. package/src/components/Button/Button.tsx +0 -232
  372. package/src/components/Button/index.ts +0 -10
  373. package/src/components/ButtonGroup/ButtonGroup.module.css +0 -157
  374. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -384
  375. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -122
  376. package/src/components/ButtonGroup/index.ts +0 -2
  377. package/src/components/Card/Card.module.css +0 -36
  378. package/src/components/Card/Card.stories.tsx +0 -78
  379. package/src/components/Card/Card.tsx +0 -53
  380. package/src/components/Card/index.ts +0 -2
  381. package/src/components/Checkbox/Checkbox.module.css +0 -47
  382. package/src/components/Checkbox/Checkbox.stories.tsx +0 -129
  383. package/src/components/Checkbox/Checkbox.tsx +0 -71
  384. package/src/components/Checkbox/index.ts +0 -2
  385. package/src/components/Divider/Divider.module.css +0 -19
  386. package/src/components/Divider/Divider.stories.tsx +0 -55
  387. package/src/components/Divider/Divider.tsx +0 -28
  388. package/src/components/Divider/index.ts +0 -2
  389. package/src/components/EmptyState/EmptyState.module.css +0 -8
  390. package/src/components/EmptyState/EmptyState.stories.tsx +0 -53
  391. package/src/components/EmptyState/EmptyState.tsx +0 -31
  392. package/src/components/EmptyState/index.ts +0 -2
  393. package/src/components/ErrorBoundary/ErrorBoundary.module.css +0 -18
  394. package/src/components/ErrorBoundary/ErrorBoundary.stories.tsx +0 -38
  395. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -50
  396. package/src/components/ErrorBoundary/index.ts +0 -2
  397. package/src/components/Fade/Fade.module.css +0 -31
  398. package/src/components/Fade/Fade.stories.tsx +0 -35
  399. package/src/components/Fade/Fade.tsx +0 -33
  400. package/src/components/Fade/index.ts +0 -2
  401. package/src/components/Field/Field.module.css +0 -5
  402. package/src/components/Field/Field.stories.tsx +0 -111
  403. package/src/components/Field/Field.tsx +0 -35
  404. package/src/components/Field/index.ts +0 -2
  405. package/src/components/Header/Header.module.css +0 -33
  406. package/src/components/Header/Header.stories.tsx +0 -52
  407. package/src/components/Header/Header.tsx +0 -42
  408. package/src/components/Header/index.ts +0 -2
  409. package/src/components/Input/Input.module.css +0 -92
  410. package/src/components/Input/Input.stories.tsx +0 -135
  411. package/src/components/Input/Input.tsx +0 -117
  412. package/src/components/Input/index.ts +0 -2
  413. package/src/components/LabelWrap/LabelWrap.module.css +0 -34
  414. package/src/components/LabelWrap/LabelWrap.tsx +0 -32
  415. package/src/components/LabelWrap/index.ts +0 -1
  416. package/src/components/Loader/Loader.module.css +0 -26
  417. package/src/components/Loader/Loader.stories.tsx +0 -53
  418. package/src/components/Loader/Loader.tsx +0 -65
  419. package/src/components/Loader/index.ts +0 -2
  420. package/src/components/Menu/DestructiveMenuItem.module.css +0 -57
  421. package/src/components/Menu/DestructiveMenuItem.tsx +0 -117
  422. package/src/components/Menu/Menu.module.css +0 -49
  423. package/src/components/Menu/Menu.stories.tsx +0 -129
  424. package/src/components/Menu/Menu.tsx +0 -418
  425. package/src/components/Menu/MenuItem.module.css +0 -86
  426. package/src/components/Menu/MenuItem.tsx +0 -144
  427. package/src/components/Menu/index.ts +0 -6
  428. package/src/components/Modal/Modal.module.css +0 -67
  429. package/src/components/Modal/Modal.stories.tsx +0 -71
  430. package/src/components/Modal/Modal.tsx +0 -199
  431. package/src/components/Modal/index.ts +0 -2
  432. package/src/components/Pagination/Pagination.module.css +0 -64
  433. package/src/components/Pagination/Pagination.stories.tsx +0 -51
  434. package/src/components/Pagination/Pagination.tsx +0 -103
  435. package/src/components/Pagination/index.ts +0 -2
  436. package/src/components/Radio/Radio.module.css +0 -61
  437. package/src/components/Radio/Radio.stories.tsx +0 -101
  438. package/src/components/Radio/Radio.tsx +0 -196
  439. package/src/components/Radio/index.ts +0 -2
  440. package/src/components/Scrollbar/Scrollbar.module.css +0 -86
  441. package/src/components/Scrollbar/Scrollbar.stories.tsx +0 -46
  442. package/src/components/Scrollbar/Scrollbar.tsx +0 -201
  443. package/src/components/Scrollbar/index.ts +0 -2
  444. package/src/components/Select/Select.module.css +0 -31
  445. package/src/components/Select/Select.stories.tsx +0 -59
  446. package/src/components/Select/Select.tsx +0 -222
  447. package/src/components/Select/index.ts +0 -2
  448. package/src/components/Sidebar/Sidebar.module.css +0 -168
  449. package/src/components/Sidebar/Sidebar.stories.tsx +0 -125
  450. package/src/components/Sidebar/Sidebar.tsx +0 -227
  451. package/src/components/Sidebar/SidebarItem.tsx +0 -57
  452. package/src/components/Sidebar/SidebarSection.tsx +0 -42
  453. package/src/components/Sidebar/index.ts +0 -6
  454. package/src/components/Skeleton/Skeleton.module.css +0 -53
  455. package/src/components/Skeleton/Skeleton.stories.tsx +0 -89
  456. package/src/components/Skeleton/Skeleton.tsx +0 -66
  457. package/src/components/Skeleton/index.ts +0 -2
  458. package/src/components/Slider/Slider.module.css +0 -66
  459. package/src/components/Slider/Slider.stories.tsx +0 -145
  460. package/src/components/Slider/Slider.tsx +0 -74
  461. package/src/components/Slider/index.ts +0 -2
  462. package/src/components/Surface/Surface.module.css +0 -222
  463. package/src/components/Surface/Surface.stories.tsx +0 -213
  464. package/src/components/Surface/Surface.tsx +0 -219
  465. package/src/components/Surface/index.ts +0 -12
  466. package/src/components/Tab/Tab.module.css +0 -66
  467. package/src/components/Tab/Tab.stories.tsx +0 -103
  468. package/src/components/Tab/Tab.tsx +0 -71
  469. package/src/components/Tab/index.ts +0 -2
  470. package/src/components/TabGroup/TabGroup.module.css +0 -26
  471. package/src/components/TabGroup/TabGroup.stories.tsx +0 -91
  472. package/src/components/TabGroup/TabGroup.tsx +0 -150
  473. package/src/components/TabGroup/index.ts +0 -2
  474. package/src/components/Table/Table.module.css +0 -140
  475. package/src/components/Table/Table.stories.tsx +0 -111
  476. package/src/components/Table/Table.tsx +0 -255
  477. package/src/components/Table/index.ts +0 -11
  478. package/src/components/Tag/Tag.module.css +0 -270
  479. package/src/components/Tag/Tag.stories.tsx +0 -399
  480. package/src/components/Tag/Tag.tsx +0 -165
  481. package/src/components/Tag/index.ts +0 -2
  482. package/src/components/Text/Text.module.css +0 -166
  483. package/src/components/Text/Text.stories.tsx +0 -212
  484. package/src/components/Text/Text.tsx +0 -181
  485. package/src/components/Text/index.ts +0 -13
  486. package/src/components/Toast/Toast.module.css +0 -91
  487. package/src/components/Toast/Toast.stories.tsx +0 -66
  488. package/src/components/Toast/Toast.tsx +0 -218
  489. package/src/components/Toast/index.ts +0 -8
  490. package/src/components/Toggle/Toggle.module.css +0 -87
  491. package/src/components/Toggle/Toggle.stories.tsx +0 -85
  492. package/src/components/Toggle/Toggle.tsx +0 -53
  493. package/src/components/Toggle/index.ts +0 -2
  494. package/src/components/ToggleButton/ToggleButton.module.css +0 -172
  495. package/src/components/ToggleButton/ToggleButton.stories.tsx +0 -299
  496. package/src/components/ToggleButton/ToggleButton.tsx +0 -118
  497. package/src/components/ToggleButton/index.ts +0 -2
  498. package/src/components/ToggleButtonGroup/ToggleButtonGroup.module.css +0 -163
  499. package/src/components/ToggleButtonGroup/ToggleButtonGroup.stories.tsx +0 -341
  500. package/src/components/ToggleButtonGroup/ToggleButtonGroup.tsx +0 -111
  501. package/src/components/ToggleButtonGroup/index.ts +0 -2
  502. package/src/components/Tooltip/Tooltip.module.css +0 -45
  503. package/src/components/Tooltip/Tooltip.stories.tsx +0 -46
  504. package/src/components/Tooltip/Tooltip.tsx +0 -260
  505. package/src/components/Tooltip/index.ts +0 -2
  506. package/src/css-modules.d.ts +0 -4
  507. package/src/docs/ColorUsage.mdx +0 -195
  508. package/src/docs/ElevationUsage.mdx +0 -95
  509. package/src/docs/Introduction.mdx +0 -97
  510. package/src/docs/OpticalSizing.mdx +0 -178
  511. package/src/docs/TypographyUsage.mdx +0 -121
  512. package/src/index.ts +0 -154
  513. package/src/stories/Colors.stories.tsx +0 -528
  514. package/src/stories/Dimensions.stories.tsx +0 -200
  515. package/src/stories/Effects.stories.tsx +0 -231
  516. package/src/stories/Icons.stories.tsx +0 -159
  517. package/src/stories/Typography.stories.tsx +0 -157
  518. package/src/types/icons.ts +0 -15
  519. package/src/types/index.ts +0 -1
  520. package/src/utils/cn.ts +0 -6
  521. package/src/utils/css-tokens.ts +0 -22
@@ -1,139 +0,0 @@
1
- import React, { useState, useEffect, useCallback, useRef } from 'react';
2
- import { createPortal } from 'react-dom';
3
- import { Cross } from '@ds-mo/icons';
4
- import { Surface } from '@/components/Surface';
5
- import { Text } from '@/components/Text';
6
- import { getCssTimeMs } from '@/utils/css-tokens';
7
- import styles from './Banner.module.css';
8
-
9
- const TOAST_DURATION_FALLBACK_MS = 4000;
10
- const FADE_OUT_DURATION_MS = 200;
11
-
12
- export type BannerIntent =
13
- | 'brand' | 'positive' | 'negative' | 'warning' | 'caution'
14
- | 'ai' | 'neutral' | 'walkthrough' | 'guide';
15
-
16
- export type BannerContrast = 'faint' | 'medium' | 'bold' | 'strong';
17
-
18
- export interface BannerProps {
19
- intent: BannerIntent;
20
- contrast: BannerContrast;
21
- message: string;
22
- header?: boolean;
23
- className?: string;
24
- floating?: boolean;
25
- onDismiss?: () => void;
26
- /** Accessible label for the dismiss button. Defaults to "Dismiss". */
27
- dismissLabel?: string;
28
- }
29
-
30
- const getContentColorVar = (intent: BannerIntent, contrast: BannerContrast): string => {
31
- if (contrast === 'bold') return 'var(--color-foreground-on-bold-background-primary)';
32
- const contentContrast = contrast === 'faint' ? 'bold' : contrast === 'medium' ? 'strong' : 'medium';
33
- return `var(--color-foreground-${contentContrast}-${intent})`;
34
- };
35
-
36
- export const Banner: React.FC<BannerProps> = ({
37
- intent,
38
- contrast,
39
- message,
40
- header = false,
41
- className = '',
42
- floating = false,
43
- onDismiss,
44
- dismissLabel = 'Dismiss',
45
- }) => {
46
- const toastDurationMs = getCssTimeMs('--effect-animation-delay-long-2', TOAST_DURATION_FALLBACK_MS);
47
- const messageColor = getContentColorVar(intent, contrast);
48
- const [isClosing, setIsClosing] = useState(false);
49
- const dismissTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
50
- const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
51
-
52
- const beginClose = useCallback(() => {
53
- if (dismissTimerRef.current) clearTimeout(dismissTimerRef.current);
54
- if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
55
- dismissTimerRef.current = null;
56
- if (floating) {
57
- setIsClosing(true);
58
- closeTimerRef.current = setTimeout(() => {
59
- closeTimerRef.current = null;
60
- onDismiss?.();
61
- }, FADE_OUT_DURATION_MS);
62
- } else {
63
- onDismiss?.();
64
- }
65
- }, [floating, onDismiss]);
66
-
67
- const scheduleDismiss = useCallback(() => {
68
- if (dismissTimerRef.current) clearTimeout(dismissTimerRef.current);
69
- dismissTimerRef.current = setTimeout(() => {
70
- dismissTimerRef.current = null;
71
- beginClose();
72
- }, toastDurationMs);
73
- }, [beginClose, toastDurationMs]);
74
-
75
- useEffect(() => {
76
- if (floating && message) scheduleDismiss();
77
- return () => {
78
- if (dismissTimerRef.current) clearTimeout(dismissTimerRef.current);
79
- if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
80
- };
81
- }, [floating, message, scheduleDismiss]);
82
-
83
- const isAssertive = intent === 'negative';
84
- const role = isAssertive ? 'alert' : 'status';
85
- const ariaLive = isAssertive ? undefined : 'polite';
86
-
87
- const content = (
88
- <div
89
- className={`${styles.bannerWrapper} ${className}`.trim()}
90
- style={{ '--banner-content': messageColor } as React.CSSProperties}
91
- role={role}
92
- aria-live={ariaLive}
93
- >
94
- <Surface
95
- elevation={floating ? 'floating' : 'elevated'}
96
- intent={intent}
97
- contrast={contrast}
98
- radius="sm"
99
- className={styles.banner}
100
- >
101
- {header && (
102
- <div className={styles.bannerHeaderSurface}>
103
- <div className={styles.bannerHeader} aria-hidden />
104
- </div>
105
- )}
106
- <div className={styles.bannerBody}>
107
- <Text variant="text-body-medium" as="span" className={styles.message}>
108
- {message}
109
- </Text>
110
- {onDismiss && (
111
- <button
112
- type="button"
113
- className={styles.dismiss}
114
- onClick={beginClose}
115
- aria-label={dismissLabel}
116
- >
117
- <Cross size={16} />
118
- </button>
119
- )}
120
- </div>
121
- </Surface>
122
- </div>
123
- );
124
-
125
- if (floating) {
126
- return createPortal(
127
- <div className={styles.floatingPosition} style={{ zIndex: 9998 }}>
128
- <div className={`${styles.floatingToast} ${isClosing ? styles.closing : ''}`}>
129
- {content}
130
- </div>
131
- </div>,
132
- document.body
133
- );
134
- }
135
-
136
- return content;
137
- };
138
-
139
- Banner.displayName = 'Banner';
@@ -1,2 +0,0 @@
1
- export { Banner } from './Banner';
2
- export type { BannerProps, BannerIntent, BannerContrast } from './Banner';
@@ -1,46 +0,0 @@
1
- .breadcrumb {
2
- display: flex;
3
- align-items: center;
4
- }
5
-
6
- .list {
7
- display: flex;
8
- align-items: center;
9
- list-style: none;
10
- margin: 0;
11
- padding: 0;
12
- gap: var(--dimension-space-050);
13
- }
14
-
15
- .item {
16
- display: flex;
17
- align-items: center;
18
- gap: var(--dimension-space-050);
19
- }
20
-
21
- .link {
22
- color: var(--color-foreground-secondary);
23
- text-decoration: none;
24
- background: none;
25
- border: none;
26
- padding: var(--dimension-space-025) var(--dimension-space-050);
27
- border-radius: var(--dimension-radius-050);
28
- cursor: pointer;
29
- transition: background-color var(--effect-motion-short-2), color var(--effect-motion-short-2);
30
- }
31
-
32
- .link:hover {
33
- background-color: var(--color-interaction-hover);
34
- color: var(--color-foreground-primary);
35
- }
36
-
37
- .link:active {
38
- background-color: var(--color-interaction-pressed);
39
- }
40
-
41
- .separator {
42
- color: var(--color-foreground-tertiary);
43
- font-size: 12px;
44
- -webkit-user-select: none;
45
- user-select: none;
46
- }
@@ -1,72 +0,0 @@
1
- import React from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react-vite';
3
- import { Breadcrumb } from './Breadcrumb';
4
-
5
- const meta: Meta<typeof Breadcrumb> = {
6
- title: 'Classic/Breadcrumb',
7
- component: Breadcrumb,
8
- };
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof Breadcrumb>;
12
-
13
- export const Playground: Story = {
14
- args: {
15
- items: [
16
- { label: 'Home', onClick: () => {} },
17
- { label: 'Products', onClick: () => {} },
18
- { label: 'Widget Pro' },
19
- ],
20
- },
21
- };
22
-
23
- export const Default: Story = {
24
- render: () => (
25
- <Breadcrumb
26
- items={[
27
- { label: 'Home', onClick: () => {} },
28
- { label: 'Settings', onClick: () => {} },
29
- { label: 'General' },
30
- ]}
31
- />
32
- ),
33
- };
34
-
35
- export const Deep: Story = {
36
- render: () => (
37
- <Breadcrumb
38
- items={[
39
- { label: 'Home', onClick: () => {} },
40
- { label: 'Products', onClick: () => {} },
41
- { label: 'Inventory', onClick: () => {} },
42
- { label: 'Item #482', onClick: () => {} },
43
- { label: 'Maintenance' },
44
- ]}
45
- />
46
- ),
47
- };
48
-
49
- export const WithLinks: Story = {
50
- render: () => (
51
- <Breadcrumb
52
- items={[
53
- { label: 'Home', href: '#' },
54
- { label: 'Products', href: '#' },
55
- { label: 'Widget Pro' },
56
- ]}
57
- />
58
- ),
59
- };
60
-
61
- export const CustomSeparator: Story = {
62
- render: () => (
63
- <Breadcrumb
64
- separator=">"
65
- items={[
66
- { label: 'Dashboard', onClick: () => {} },
67
- { label: 'Reports', onClick: () => {} },
68
- { label: 'Q4 Summary' },
69
- ]}
70
- />
71
- ),
72
- };
@@ -1,68 +0,0 @@
1
- import React, { forwardRef } from 'react';
2
- import { cn } from '@/utils/cn';
3
- import { Text } from '@/components/Text';
4
- import styles from './Breadcrumb.module.css';
5
-
6
- export interface BreadcrumbItem {
7
- label: string;
8
- href?: string;
9
- onClick?: () => void;
10
- }
11
-
12
- export interface BreadcrumbProps {
13
- /** Ordered list of breadcrumb items. Last item is treated as current page. */
14
- items: BreadcrumbItem[];
15
- /** Custom separator. Defaults to '/'. */
16
- separator?: React.ReactNode;
17
- className?: string;
18
- }
19
-
20
- export const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(
21
- ({ items, separator = '/', className }, ref) => (
22
- <nav ref={ref} aria-label="Breadcrumb" className={cn(styles.breadcrumb, className)}>
23
- <ol className={styles.list}>
24
- {items.map((item, i) => {
25
- const isLast = i === items.length - 1;
26
- return (
27
- <li key={i} className={styles.item}>
28
- {isLast ? (
29
- <Text variant="text-body-medium-emphasis" as="span" color="primary" aria-current="page">
30
- {item.label}
31
- </Text>
32
- ) : (
33
- <>
34
- {item.href ? (
35
- <a
36
- href={item.href}
37
- className={styles.link}
38
- onClick={e => { if (item.onClick) { e.preventDefault(); item.onClick(); } }}
39
- >
40
- <Text variant="text-body-medium" as="span" color="inherit">
41
- {item.label}
42
- </Text>
43
- </a>
44
- ) : (
45
- <button
46
- type="button"
47
- className={styles.link}
48
- onClick={item.onClick}
49
- >
50
- <Text variant="text-body-medium" as="span" color="inherit">
51
- {item.label}
52
- </Text>
53
- </button>
54
- )}
55
- <span className={styles.separator} aria-hidden="true">
56
- {separator}
57
- </span>
58
- </>
59
- )}
60
- </li>
61
- );
62
- })}
63
- </ol>
64
- </nav>
65
- )
66
- );
67
-
68
- Breadcrumb.displayName = 'Breadcrumb';
@@ -1,2 +0,0 @@
1
- export { Breadcrumb } from './Breadcrumb';
2
- export type { BreadcrumbProps, BreadcrumbItem } from './Breadcrumb';
@@ -1,143 +0,0 @@
1
- import { Meta, Title, Subtitle, Canvas, Controls, Primary } from '@storybook/addon-docs/blocks';
2
- import * as ButtonStories from './Button.stories';
3
-
4
- <Meta of={ButtonStories} />
5
-
6
- <Title />
7
-
8
- <Subtitle>
9
- Buttons trigger actions. They are the primary way users commit to a decision —
10
- saving a record, opening a dialog, navigating somewhere meaningful.
11
- </Subtitle>
12
-
13
- A button should make its purpose obvious from its label, its visual weight, and
14
- its position on the page. The right button in the right place is invisible — it
15
- just feels like the next step. The wrong button competes for attention and slows
16
- the user down.
17
-
18
- ## Playground
19
-
20
- Use the controls below to explore every prop the component accepts. This is the
21
- fastest way to understand how `variant`, `intent`, `contrast`, and `elevation`
22
- combine.
23
-
24
- <Primary />
25
-
26
- <Controls />
27
-
28
- ## When to use
29
-
30
- Reach for a button when the user needs to perform an **action** — submit a form,
31
- delete a record, open a panel, run a process. If the user is navigating between
32
- pages or sections, prefer a link instead. Buttons are for verbs; links are for
33
- nouns.
34
-
35
- A page should have **one** clearly dominant button. If two actions look equally
36
- important, the user has to stop and read both before deciding — which is exactly
37
- the moment of friction good hierarchy avoids.
38
-
39
- ## Variants
40
-
41
- `primary` is filled and carries the strongest visual weight. Use it for the one
42
- action you most want the user to take on a given screen.
43
-
44
- `secondary` is a softer treatment for actions that matter but should not compete
45
- with the primary action. Use `elevation="none"` to get the ghost treatment for
46
- tertiary actions like cancel, dismiss, or inline controls.
47
-
48
- <Canvas of={ButtonStories.Variants} />
49
-
50
- > **Do** pair one `primary` with one or more `secondary` buttons in a form footer.
51
- >
52
- > **Don't** stack two `primary` buttons next to each other — only one action can
53
- > be the primary one.
54
-
55
- ## Intent
56
-
57
- Intent communicates the **meaning** of the action through color. Most buttons
58
- should use `brand` (the default) or `neutral`. Reserve semantic intents for
59
- moments when the meaning genuinely matches.
60
-
61
- <Canvas of={ButtonStories.Intents} />
62
-
63
- - `brand` — the default for primary calls-to-action
64
- - `neutral` — for actions that should not draw color, like filters or toolbar controls
65
- - `negative` — for destructive actions (delete, remove, discard)
66
- - `positive` — for confirmations of a successful state, used sparingly
67
- - `warning` / `caution` — for actions that need a moment of pause
68
- - `ai` — reserved for AI-generated or AI-triggering actions
69
- - `none` — inverted styling for use on colored or dark surfaces
70
-
71
- > **Don't** use `negative` intent for a cancel button. Cancel is not destructive;
72
- > it is the absence of an action. Use `secondary` with no intent.
73
-
74
- ## Sizes
75
-
76
- Pick a size from the surrounding density, not the importance of the action.
77
- Forms and dialogs use `md`. Compact toolbars and table rows use `sm` or `xs`.
78
- Hero sections and marketing surfaces can use `lg`.
79
-
80
- <Canvas of={ButtonStories.Sizes} />
81
-
82
- ## Icons
83
-
84
- A leading icon can clarify a button's purpose at a glance — but only when the
85
- icon's meaning is unambiguous. If you have to think about which icon to pick,
86
- the label alone is doing a better job.
87
-
88
- <Canvas of={ButtonStories.IconAndLabel} />
89
-
90
- Icon-only buttons must always have an `aria-label`. Without it, screen readers
91
- announce nothing meaningful, and keyboard users lose all context.
92
-
93
- <Canvas of={ButtonStories.IconOnly} />
94
-
95
- ## States
96
-
97
- Buttons have several states that communicate progress or availability:
98
-
99
- - `inactive` — the action is not currently available, but may become available
100
- - `loading` — the action is in flight; prevents double-submission
101
- - `rounded` — pill-shaped variant for filter chips and compact actions
102
-
103
- <Canvas of={ButtonStories.Loading} />
104
-
105
- <Canvas of={ButtonStories.Inactive} />
106
-
107
- > **Do** use `loading` for any async action that takes longer than ~200ms.
108
- > Without it, users will click again, often submitting twice.
109
-
110
- ## Full width
111
-
112
- Use `fullWidth` inside narrow containers like mobile sheets, side panels, or
113
- form footers where the button should fill the available width. Avoid full-width
114
- buttons on wide desktop layouts — they read as banner CTAs and feel heavy.
115
-
116
- <Canvas of={ButtonStories.FullWidth} />
117
-
118
- ## On colored surfaces
119
-
120
- When a button sits on a colored or dark surface, set the `background` prop so
121
- the button can adapt its contrast to remain legible. The `BackgroundContext`
122
- story below demonstrates every variant against every supported surface.
123
-
124
- <Canvas of={ButtonStories.BackgroundContext} />
125
-
126
- ## Accessibility
127
-
128
- - Every button must have a discernible name — either visible text in `label` or
129
- an `aria-label` for icon-only buttons.
130
- - The `inactive` state is **not** the same as the HTML `disabled` attribute.
131
- `inactive` keeps the button focusable and announceable; truly disabled buttons
132
- vanish from the tab order and frustrate users who can't tell why an action
133
- isn't working.
134
- - Touch targets meet the 24×24 CSS pixel minimum at all sizes; `xs` is intended
135
- for dense desktop UIs and should not be used on mobile.
136
-
137
- ## Full reference matrix
138
-
139
- The matrix below renders every meaningful combination of `variant`, `intent`,
140
- `contrast`, `elevation`, `size`, and state on a single canvas. Use it as a
141
- visual regression reference when changing tokens or styles.
142
-
143
- <Canvas of={ButtonStories.Matrix} />