@kismet-ux/constellation 1.8.0 → 1.11.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 (414) hide show
  1. package/README.md +36 -0
  2. package/dist/brand/Logo/logo.css +4 -1
  3. package/dist/form/Checkbox/checkbox.css +48 -34
  4. package/dist/form/Checkbox/checkbox.d.ts +5 -0
  5. package/dist/form/Checkbox/checkbox.d.ts.map +1 -1
  6. package/dist/form/Checkbox/checkbox.js +6 -55
  7. package/dist/form/Checkbox/checkbox.js.map +1 -1
  8. package/dist/form/Checkbox/checkbox.module.scss.js +1 -1
  9. package/dist/form/Combobox/combobox.css +35 -0
  10. package/dist/form/Combobox/combobox.d.ts +41 -0
  11. package/dist/form/Combobox/combobox.d.ts.map +1 -0
  12. package/dist/form/Combobox/combobox.js +152 -0
  13. package/dist/form/Combobox/combobox.js.map +1 -0
  14. package/dist/form/Combobox/combobox.module.scss.js +6 -0
  15. package/dist/form/Combobox/combobox.module.scss.js.map +1 -0
  16. package/dist/form/Combobox/index.d.ts +2 -0
  17. package/dist/form/Combobox/index.d.ts.map +1 -0
  18. package/dist/form/DatePicker/date-picker.d.ts.map +1 -1
  19. package/dist/form/DatePicker/date-picker.js +5 -53
  20. package/dist/form/DatePicker/date-picker.js.map +1 -1
  21. package/dist/form/Input/input.css +12 -0
  22. package/dist/form/Input/input.d.ts.map +1 -1
  23. package/dist/form/Input/input.js +23 -3
  24. package/dist/form/Input/input.js.map +1 -1
  25. package/dist/form/Select/select.css +54 -1
  26. package/dist/form/Select/select.d.ts +41 -3
  27. package/dist/form/Select/select.d.ts.map +1 -1
  28. package/dist/form/Select/select.js +43 -21
  29. package/dist/form/Select/select.js.map +1 -1
  30. package/dist/form/Select/select.module.scss.js +2 -2
  31. package/dist/form/index.d.ts +1 -0
  32. package/dist/form/index.d.ts.map +1 -1
  33. package/dist/form.d.ts +1 -1
  34. package/dist/form.js +2 -1
  35. package/dist/form.js.map +1 -1
  36. package/dist/hooks/index.d.ts +1 -0
  37. package/dist/hooks/index.d.ts.map +1 -1
  38. package/dist/hooks/layout/index.d.ts +1 -0
  39. package/dist/hooks/layout/index.d.ts.map +1 -1
  40. package/dist/hooks/layout/use-flip.d.ts +37 -0
  41. package/dist/hooks/layout/use-flip.d.ts.map +1 -0
  42. package/dist/hooks/layout/use-flip.js +128 -0
  43. package/dist/hooks/layout/use-flip.js.map +1 -0
  44. package/dist/hooks/use-motion.d.ts +30 -0
  45. package/dist/hooks/use-motion.d.ts.map +1 -0
  46. package/dist/hooks/use-motion.js +93 -0
  47. package/dist/hooks/use-motion.js.map +1 -0
  48. package/dist/index-2nHZOukj.d.ts +200 -0
  49. package/dist/index-3Ui8TAHy.d.ts +200 -0
  50. package/dist/index-59JuNTZm.d.ts +537 -0
  51. package/dist/index-5QXWn0de.d.ts +200 -0
  52. package/dist/index-98ozinMf.d.ts +498 -0
  53. package/dist/index-Ah3YQTri.d.ts +566 -0
  54. package/dist/index-As2iBOIu.d.ts +527 -0
  55. package/dist/index-B1Vw0zoR.d.ts +566 -0
  56. package/dist/index-B25sLBMr.d.ts +498 -0
  57. package/dist/index-B4B8aA9X.d.ts +272 -0
  58. package/dist/index-B97hn7Xp.d.ts +514 -0
  59. package/dist/{index-BSSQnlm_.d.ts → index-B9B7JjTb.d.ts} +3 -1
  60. package/dist/index-BFWt_pYt.d.ts +566 -0
  61. package/dist/index-BFZp_Pu6.d.ts +566 -0
  62. package/dist/index-BGL4DvKQ.d.ts +293 -0
  63. package/dist/index-BGP_J4I2.d.ts +498 -0
  64. package/dist/index-BHhoIUD_.d.ts +354 -0
  65. package/dist/index-BI0iaWmp.d.ts +222 -0
  66. package/dist/index-BMSRpHb6.d.ts +273 -0
  67. package/dist/index-BRQWKmfq.d.ts +566 -0
  68. package/dist/index-BTARYt96.d.ts +537 -0
  69. package/dist/index-BTrpuZdU.d.ts +566 -0
  70. package/dist/index-BWTwKQsp.d.ts +354 -0
  71. package/dist/index-B_05Skyi.d.ts +566 -0
  72. package/dist/index-BcQqBGNu.d.ts +200 -0
  73. package/dist/index-Be23E9xD.d.ts +298 -0
  74. package/dist/index-Bf44Z8ak.d.ts +514 -0
  75. package/dist/index-Bg42sKjg.d.ts +498 -0
  76. package/dist/index-Bg_0OPMx.d.ts +566 -0
  77. package/dist/index-BgjRk9l7.d.ts +537 -0
  78. package/dist/index-BhLEMn3N.d.ts +537 -0
  79. package/dist/index-BiqECuUj.d.ts +204 -0
  80. package/dist/index-BjUQiAs1.d.ts +130 -0
  81. package/dist/index-BlKqvax0.d.ts +204 -0
  82. package/dist/index-Bnb0JFqx.d.ts +514 -0
  83. package/dist/index-BpSD6t7A.d.ts +566 -0
  84. package/dist/index-BpxKwrv_.d.ts +537 -0
  85. package/dist/index-Brh7JZAQ.d.ts +514 -0
  86. package/dist/index-C-n7hM4G.d.ts +354 -0
  87. package/dist/index-C0wKb28S.d.ts +514 -0
  88. package/dist/index-C129uthr.d.ts +566 -0
  89. package/dist/index-C1ef0QtQ.d.ts +204 -0
  90. package/dist/index-C4BACHGE.d.ts +272 -0
  91. package/dist/index-C5JU8WTE.d.ts +514 -0
  92. package/dist/index-C63UYi-T.d.ts +195 -0
  93. package/dist/index-C8LoYkC7.d.ts +250 -0
  94. package/dist/index-C9-ECLyr.d.ts +566 -0
  95. package/dist/index-C9B1F-mr.d.ts +293 -0
  96. package/dist/index-CAVmbwa8.d.ts +514 -0
  97. package/dist/index-CBz-v5eM.d.ts +184 -0
  98. package/dist/index-CCpdo0n4.d.ts +130 -0
  99. package/dist/index-CDC_ZncW.d.ts +566 -0
  100. package/dist/index-CFQj-KtR.d.ts +184 -0
  101. package/dist/index-CFaxW5hv.d.ts +184 -0
  102. package/dist/index-CG9DKbG9.d.ts +498 -0
  103. package/dist/index-CGhG7YeI.d.ts +354 -0
  104. package/dist/index-CHC6kRbR.d.ts +537 -0
  105. package/dist/index-CH_q-5fk.d.ts +537 -0
  106. package/dist/index-CIK_SmBm.d.ts +200 -0
  107. package/dist/index-CJ1KPFOf.d.ts +537 -0
  108. package/dist/index-CJ5FEGRG.d.ts +537 -0
  109. package/dist/index-CKX2VNKk.d.ts +240 -0
  110. package/dist/index-CL7kYZ90.d.ts +231 -0
  111. package/dist/index-CNl03fCW.d.ts +498 -0
  112. package/dist/index-CO8Jq0pz.d.ts +298 -0
  113. package/dist/index-CQ-aS-rp.d.ts +566 -0
  114. package/dist/index-CQjzBv4q.d.ts +537 -0
  115. package/dist/index-CRVO4SlF.d.ts +537 -0
  116. package/dist/{index-ibcvWtdH.d.ts → index-CRrCqjAW.d.ts} +11 -1
  117. package/dist/index-CSQFy2xe.d.ts +195 -0
  118. package/dist/index-CWM2ewRz.d.ts +566 -0
  119. package/dist/index-CY6Xq36O.d.ts +204 -0
  120. package/dist/index-CYGOs6JT.d.ts +273 -0
  121. package/dist/index-CYPFkjfk.d.ts +204 -0
  122. package/dist/index-C_hJJ1fH.d.ts +527 -0
  123. package/dist/index-CcM-XHTL.d.ts +273 -0
  124. package/dist/index-CdGF_eEO.d.ts +514 -0
  125. package/dist/index-CdJTE9Lh.d.ts +566 -0
  126. package/dist/index-CdOt-pqR.d.ts +537 -0
  127. package/dist/index-CgeR_2Gi.d.ts +220 -0
  128. package/dist/index-CjUoZbDi.d.ts +354 -0
  129. package/dist/index-CjV6KsFc.d.ts +263 -0
  130. package/dist/index-Ck8LtgBW.d.ts +557 -0
  131. package/dist/index-Cknm9FUU.d.ts +299 -0
  132. package/dist/index-Clv3CnXv.d.ts +184 -0
  133. package/dist/index-Cm4wnJ29.d.ts +514 -0
  134. package/dist/index-Cmz3q-CI.d.ts +273 -0
  135. package/dist/index-CnMBzCft.d.ts +514 -0
  136. package/dist/index-CnVW0FnZ.d.ts +272 -0
  137. package/dist/index-CpIHT-uo.d.ts +231 -0
  138. package/dist/index-CtBEDM0b.d.ts +514 -0
  139. package/dist/index-CtVSiQeY.d.ts +130 -0
  140. package/dist/index-Cu107rOs.d.ts +293 -0
  141. package/dist/index-CxyTd3Ag.d.ts +354 -0
  142. package/dist/index-CywSNvOU.d.ts +200 -0
  143. package/dist/index-CzJL7Lro.d.ts +566 -0
  144. package/dist/index-CzJnKY3r.d.ts +272 -0
  145. package/dist/index-D-R9eOxe.d.ts +354 -0
  146. package/dist/index-D-hdgIbs.d.ts +273 -0
  147. package/dist/index-D-slQ9w4.d.ts +537 -0
  148. package/dist/index-D0jdNDaH.d.ts +204 -0
  149. package/dist/index-D1ir--Li.d.ts +566 -0
  150. package/dist/index-D29_-MCZ.d.ts +354 -0
  151. package/dist/index-D2glATpo.d.ts +273 -0
  152. package/dist/index-D6ATtbor.d.ts +298 -0
  153. package/dist/index-D6HktSlo.d.ts +514 -0
  154. package/dist/index-DB4UBCvy.d.ts +537 -0
  155. package/dist/index-DBd0PU9y.d.ts +222 -0
  156. package/dist/index-DE2Nm-iT.d.ts +354 -0
  157. package/dist/index-DEeJuuvm.d.ts +231 -0
  158. package/dist/index-DHhzBSfL.d.ts +498 -0
  159. package/dist/index-DKpWNCb6.d.ts +204 -0
  160. package/dist/index-DMewi97i.d.ts +566 -0
  161. package/dist/index-DN0gtpck.d.ts +354 -0
  162. package/dist/index-DO23vZ-R.d.ts +514 -0
  163. package/dist/index-DTb2-z6E.d.ts +130 -0
  164. package/dist/index-DV-CN7c0.d.ts +231 -0
  165. package/dist/index-DWgCs62z.d.ts +566 -0
  166. package/dist/index-D_6Qu6ia.d.ts +200 -0
  167. package/dist/index-D_vn8O-I.d.ts +293 -0
  168. package/dist/index-Daq4m4Rf.d.ts +514 -0
  169. package/dist/index-Db6cXpr6.d.ts +537 -0
  170. package/dist/index-DbZ1s2E-.d.ts +514 -0
  171. package/dist/index-DbevJPuY.d.ts +354 -0
  172. package/dist/index-DepmPwP7.d.ts +537 -0
  173. package/dist/index-DfnTWQCz.d.ts +514 -0
  174. package/dist/index-Dfu8WhiS.d.ts +273 -0
  175. package/dist/index-DggMYd7c.d.ts +298 -0
  176. package/dist/index-DhS2nQjt.d.ts +200 -0
  177. package/dist/index-Dn3bC8Ki.d.ts +222 -0
  178. package/dist/index-Dn9bGZvU.d.ts +195 -0
  179. package/dist/index-DnDt7A4Y.d.ts +354 -0
  180. package/dist/index-DpdYKBP2.d.ts +498 -0
  181. package/dist/index-DunP9qIK.d.ts +537 -0
  182. package/dist/index-DxO6-qt5.d.ts +498 -0
  183. package/dist/index-ESQ8WM_8.d.ts +130 -0
  184. package/dist/index-GVz409cm.d.ts +222 -0
  185. package/dist/index-HAx-aLZ0.d.ts +273 -0
  186. package/dist/{index-CkQ6wNCc.d.ts → index-Iuzs6nt9.d.ts} +3 -3
  187. package/dist/index-LnEpnlTq.d.ts +566 -0
  188. package/dist/index-Mihuyg_o.d.ts +204 -0
  189. package/dist/index-Mm1i2OdU.d.ts +537 -0
  190. package/dist/index-P0oxVi77.d.ts +537 -0
  191. package/dist/index-Q5JuPFoN.d.ts +293 -0
  192. package/dist/index-RJviLtvo.d.ts +566 -0
  193. package/dist/index-SnQCbfte.d.ts +498 -0
  194. package/dist/index-Th9It0ZT.d.ts +354 -0
  195. package/dist/index-UHHmyQM5.d.ts +272 -0
  196. package/dist/index-VyGmJYQZ.d.ts +537 -0
  197. package/dist/index-WYH70le_.d.ts +195 -0
  198. package/dist/index-Wj9RYtTX.d.ts +273 -0
  199. package/dist/index-Y-wMZeUG.d.ts +298 -0
  200. package/dist/index-ZgohDspB.d.ts +498 -0
  201. package/dist/index-Zo2rSdXz.d.ts +273 -0
  202. package/dist/index-ZwpWgV4n.d.ts +272 -0
  203. package/dist/index-_oZ4knIl.d.ts +272 -0
  204. package/dist/index-an222nAK.d.ts +354 -0
  205. package/dist/index-daV0QTe0.d.ts +537 -0
  206. package/dist/index-eGZu2HLC.d.ts +231 -0
  207. package/dist/index-eswPA0Un.d.ts +204 -0
  208. package/dist/index-gf6-wf_1.d.ts +566 -0
  209. package/dist/index-hdVr9Wrv.d.ts +566 -0
  210. package/dist/index-iygiXYw2.d.ts +537 -0
  211. package/dist/index-jR29ZGLD.d.ts +514 -0
  212. package/dist/index-kHgI28TP.d.ts +272 -0
  213. package/dist/index-lY4_UCOs.d.ts +566 -0
  214. package/dist/index-miXK87yJ.d.ts +231 -0
  215. package/dist/index-mwbGtZkk.d.ts +273 -0
  216. package/dist/index-ru2DFXcm.d.ts +195 -0
  217. package/dist/index-uj1ll_u-.d.ts +204 -0
  218. package/dist/index-vfq-aH7U.d.ts +537 -0
  219. package/dist/index-xqUz9XjP.d.ts +537 -0
  220. package/dist/index.css +74 -18
  221. package/dist/index.d.ts +78 -12
  222. package/dist/index.js +34 -28
  223. package/dist/index.js.map +1 -1
  224. package/dist/internal/use-scroll-lock.d.ts +15 -0
  225. package/dist/internal/use-scroll-lock.d.ts.map +1 -1
  226. package/dist/internal/use-scroll-lock.js +26 -8
  227. package/dist/internal/use-scroll-lock.js.map +1 -1
  228. package/dist/layout/AppContent/app-content.css +1 -1
  229. package/dist/layout/AppContentBands/app-content-bands.css +21 -0
  230. package/dist/layout/AppContentBands/app-content-bands.d.ts +26 -0
  231. package/dist/layout/AppContentBands/app-content-bands.d.ts.map +1 -0
  232. package/dist/layout/AppContentBands/app-content-bands.js +65 -0
  233. package/dist/layout/AppContentBands/app-content-bands.js.map +1 -0
  234. package/dist/layout/AppContentBands/app-content-bands.module.scss.js +6 -0
  235. package/dist/layout/AppContentBands/app-content-bands.module.scss.js.map +1 -0
  236. package/dist/layout/AppContentBands/index.d.ts +2 -0
  237. package/dist/layout/AppContentBands/index.d.ts.map +1 -0
  238. package/dist/layout/AppContentFooter/app-content-footer.css +9 -0
  239. package/dist/layout/AppContentFooter/app-content-footer.d.ts +38 -0
  240. package/dist/layout/AppContentFooter/app-content-footer.d.ts.map +1 -0
  241. package/dist/layout/AppContentFooter/app-content-footer.js +42 -0
  242. package/dist/layout/AppContentFooter/app-content-footer.js.map +1 -0
  243. package/dist/layout/AppContentFooter/app-content-footer.module.scss.js +6 -0
  244. package/dist/layout/AppContentFooter/app-content-footer.module.scss.js.map +1 -0
  245. package/dist/layout/AppContentFooter/index.d.ts +2 -0
  246. package/dist/layout/AppContentFooter/index.d.ts.map +1 -0
  247. package/dist/layout/AppContentMain/app-content-main.css +6 -0
  248. package/dist/layout/AppContentMain/app-content-main.d.ts +37 -0
  249. package/dist/layout/AppContentMain/app-content-main.d.ts.map +1 -0
  250. package/dist/layout/AppContentMain/app-content-main.js +41 -0
  251. package/dist/layout/AppContentMain/app-content-main.js.map +1 -0
  252. package/dist/layout/AppContentMain/app-content-main.module.scss.js +6 -0
  253. package/dist/layout/AppContentMain/app-content-main.module.scss.js.map +1 -0
  254. package/dist/layout/AppContentMain/index.d.ts +2 -0
  255. package/dist/layout/AppContentMain/index.d.ts.map +1 -0
  256. package/dist/layout/AppFooter/app-footer.js +1 -1
  257. package/dist/layout/AppSidebar/app-sidebar.js +1 -1
  258. package/dist/layout/AppSidebarHeader/app-sidebar-header.css +2 -3
  259. package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts +10 -2
  260. package/dist/layout/AppSidebarHeader/app-sidebar-header.d.ts.map +1 -1
  261. package/dist/layout/AppSidebarHeader/app-sidebar-header.js +12 -32
  262. package/dist/layout/AppSidebarHeader/app-sidebar-header.js.map +1 -1
  263. package/dist/layout/Collapse/collapse.css +4 -1
  264. package/dist/layout/Column/column.css +6 -0
  265. package/dist/layout/Column/column.d.ts.map +1 -1
  266. package/dist/layout/Column/column.js +3 -1
  267. package/dist/layout/Column/column.js.map +1 -1
  268. package/dist/layout/Column/column.module.scss.js +1 -1
  269. package/dist/layout/Container/container.css +43 -1
  270. package/dist/layout/Container/container.d.ts.map +1 -1
  271. package/dist/layout/Container/container.js +38 -7
  272. package/dist/layout/Container/container.js.map +1 -1
  273. package/dist/layout/Container/container.module.scss.js +1 -1
  274. package/dist/layout/Grid/grid.css +28 -0
  275. package/dist/layout/Grid/grid.d.ts.map +1 -1
  276. package/dist/layout/Grid/grid.js +40 -4
  277. package/dist/layout/Grid/grid.js.map +1 -1
  278. package/dist/layout/Grid/grid.module.scss.js +1 -1
  279. package/dist/layout/Row/row.css +42 -0
  280. package/dist/layout/Row/row.d.ts.map +1 -1
  281. package/dist/layout/Row/row.js +5 -3
  282. package/dist/layout/Row/row.js.map +1 -1
  283. package/dist/layout/Row/row.module.scss.js +1 -1
  284. package/dist/layout/Sidebar/sidebar.css +4 -2
  285. package/dist/layout/Sidebar/sidebar.d.ts.map +1 -1
  286. package/dist/layout/Sidebar/sidebar.js +1 -1
  287. package/dist/layout/Sidebar/sidebar.js.map +1 -1
  288. package/dist/layout/index.d.ts +2 -0
  289. package/dist/layout/index.d.ts.map +1 -1
  290. package/dist/layout.d.ts +3 -3
  291. package/dist/layout.js +2 -0
  292. package/dist/layout.js.map +1 -1
  293. package/dist/navigation/DropdownMenu/dropdown-menu.d.ts.map +1 -1
  294. package/dist/navigation/DropdownMenu/dropdown-menu.js +1 -1
  295. package/dist/navigation/DropdownMenu/dropdown-menu.js.map +1 -1
  296. package/dist/navigation/NavUser/nav-user.js +2 -2
  297. package/dist/navigation/Sheet/sheet.css +40 -6
  298. package/dist/navigation/Sheet/sheet.d.ts +22 -0
  299. package/dist/navigation/Sheet/sheet.d.ts.map +1 -1
  300. package/dist/navigation/Sheet/sheet.js +5 -30
  301. package/dist/navigation/Sheet/sheet.js.map +1 -1
  302. package/dist/navigation/Sheet/sheet.module.scss.js +1 -1
  303. package/dist/navigation.d.ts +22 -0
  304. package/dist/row-CuhTBQhK.d.ts +21 -0
  305. package/dist/settings/AppearanceDropdown/appearance-dropdown.js +1 -1
  306. package/dist/settings/AppearanceTabs/appearance-tabs.js +2 -27
  307. package/dist/settings/AppearanceTabs/appearance-tabs.js.map +1 -1
  308. package/dist/tokens.css +59 -17
  309. package/dist/tooltip-1qYeAGE9.d.ts +45 -0
  310. package/dist/tooltip-3IOkYFQ-.d.ts +45 -0
  311. package/dist/tooltip-540OmbEG.d.ts +46 -0
  312. package/dist/tooltip-91Nq_Hl8.d.ts +46 -0
  313. package/dist/tooltip-B56sWYK0.d.ts +46 -0
  314. package/dist/tooltip-BIrIF-4z.d.ts +45 -0
  315. package/dist/tooltip-BOipKW5l.d.ts +46 -0
  316. package/dist/tooltip-BPC0RH8i.d.ts +46 -0
  317. package/dist/tooltip-BST1BOCn.d.ts +45 -0
  318. package/dist/tooltip-BhuxNQwX.d.ts +45 -0
  319. package/dist/tooltip-BpAJwi3K.d.ts +46 -0
  320. package/dist/tooltip-C0LBu2Iu.d.ts +45 -0
  321. package/dist/tooltip-C1ZwALiG.d.ts +45 -0
  322. package/dist/tooltip-C55-HA0w.d.ts +45 -0
  323. package/dist/tooltip-CHn6WuDv.d.ts +46 -0
  324. package/dist/tooltip-CNjH7zKO.d.ts +45 -0
  325. package/dist/tooltip-CSBby1OT.d.ts +45 -0
  326. package/dist/tooltip-CXFRzR0L.d.ts +45 -0
  327. package/dist/tooltip-ChpsbkOU.d.ts +46 -0
  328. package/dist/tooltip-CspTy2ZW.d.ts +46 -0
  329. package/dist/tooltip-CvComAZD.d.ts +46 -0
  330. package/dist/tooltip-D19vhhRn.d.ts +45 -0
  331. package/dist/tooltip-D32S1g-7.d.ts +46 -0
  332. package/dist/tooltip-DAvBN683.d.ts +45 -0
  333. package/dist/tooltip-DQz4_i4m.d.ts +45 -0
  334. package/dist/tooltip-DVYPUAb1.d.ts +46 -0
  335. package/dist/tooltip-DXoSckt9.d.ts +46 -0
  336. package/dist/tooltip-Dtoq3bn_.d.ts +46 -0
  337. package/dist/tooltip-DxO_DWMO.d.ts +46 -0
  338. package/dist/tooltip-DxdGb3dX.d.ts +45 -0
  339. package/dist/tooltip-DzAzC0d7.d.ts +45 -0
  340. package/dist/tooltip-Lk4RpuSh.d.ts +45 -0
  341. package/dist/tooltip-ReFyHDhU.d.ts +45 -0
  342. package/dist/tooltip-_wdlSYAb.d.ts +46 -0
  343. package/dist/{tooltip-XagXjWLB.d.ts → tooltip-cjwkBINy.d.ts} +4 -0
  344. package/dist/tooltip-nKcM19C9.d.ts +45 -0
  345. package/dist/types/layout/container.d.ts +30 -1
  346. package/dist/types/layout/container.d.ts.map +1 -1
  347. package/dist/types/layout/grid.d.ts +42 -0
  348. package/dist/types/layout/grid.d.ts.map +1 -1
  349. package/dist/types/layout/row.d.ts +7 -0
  350. package/dist/types/layout/row.d.ts.map +1 -1
  351. package/dist/typography/Typography/typography-variants.d.ts +3 -0
  352. package/dist/typography/Typography/typography-variants.d.ts.map +1 -1
  353. package/dist/typography/Typography/typography-variants.js +25 -0
  354. package/dist/typography/Typography/typography-variants.js.map +1 -1
  355. package/dist/typography/Typography/typography.css +105 -41
  356. package/dist/typography/Typography/typography.d.ts +20 -0
  357. package/dist/typography/Typography/typography.d.ts.map +1 -1
  358. package/dist/typography/Typography/typography.js +11 -2
  359. package/dist/typography/Typography/typography.js.map +1 -1
  360. package/dist/typography/Typography/typography.module.scss.js +1 -1
  361. package/dist/typography-CTGVc_Gg.d.ts +41 -0
  362. package/dist/typography.d.ts +2 -2
  363. package/dist/ui/Alert/alert-provider.d.ts.map +1 -1
  364. package/dist/ui/Alert/alert-provider.js +1 -1
  365. package/dist/ui/Alert/alert-provider.js.map +1 -1
  366. package/dist/ui/Button/button-variants.d.ts +1 -0
  367. package/dist/ui/Button/button-variants.d.ts.map +1 -1
  368. package/dist/ui/Button/button-variants.js +3 -0
  369. package/dist/ui/Button/button-variants.js.map +1 -1
  370. package/dist/ui/Button/button.css +146 -77
  371. package/dist/ui/Button/button.d.ts +4 -0
  372. package/dist/ui/Button/button.d.ts.map +1 -1
  373. package/dist/ui/Button/button.js +8 -2
  374. package/dist/ui/Button/button.js.map +1 -1
  375. package/dist/ui/Button/button.module.scss.js +1 -1
  376. package/dist/ui/Chip/chip.css +32 -11
  377. package/dist/ui/Chip/chip.d.ts +16 -0
  378. package/dist/ui/Chip/chip.d.ts.map +1 -1
  379. package/dist/ui/Chip/chip.js +4 -2
  380. package/dist/ui/Chip/chip.js.map +1 -1
  381. package/dist/ui/CodeBlock/code-block.css +8 -3
  382. package/dist/ui/Dialog/dialog.css +70 -0
  383. package/dist/ui/Dialog/dialog.d.ts +45 -2
  384. package/dist/ui/Dialog/dialog.d.ts.map +1 -1
  385. package/dist/ui/Dialog/dialog.js +256 -7
  386. package/dist/ui/Dialog/dialog.js.map +1 -1
  387. package/dist/ui/Dialog/dialog.module.scss.js +1 -1
  388. package/dist/ui/Icon/icon.css +14 -7
  389. package/dist/ui/ProgressBar/progress-bar.css +10 -3
  390. package/dist/ui/StatCard/stat-card.css +13 -0
  391. package/dist/ui/StatCard/stat-card.d.ts +9 -0
  392. package/dist/ui/StatCard/stat-card.d.ts.map +1 -1
  393. package/dist/ui/StatCard/stat-card.js +2 -2
  394. package/dist/ui/StatCard/stat-card.js.map +1 -1
  395. package/dist/ui/StatusDot/status-dot.css +4 -1
  396. package/dist/ui/StepProgress/step-progress.css +12 -4
  397. package/dist/ui/Switch/switch.css +6 -2
  398. package/dist/ui/Tooltip/tooltip.d.ts.map +1 -1
  399. package/dist/ui/Tooltip/tooltip.js +1 -1
  400. package/dist/ui/Tooltip/tooltip.js.map +1 -1
  401. package/dist/ui.d.ts +3 -3
  402. package/dist/user/UserInfo/user-info.js +1 -1
  403. package/dist/utils/index.d.ts +1 -0
  404. package/dist/utils/index.d.ts.map +1 -1
  405. package/dist/utils/portal.d.ts +34 -0
  406. package/dist/utils/portal.d.ts.map +1 -0
  407. package/dist/utils/portal.js +40 -0
  408. package/dist/utils/portal.js.map +1 -0
  409. package/dist/utils.d.ts +35 -1
  410. package/dist/utils.js +1 -0
  411. package/dist/utils.js.map +1 -1
  412. package/package.json +3 -2
  413. package/src/styles/_mixins.scss +30 -0
  414. package/vite-plugin.mjs +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"button-variants.js","sources":["../../../src/ui/Button/button-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport s from './button.module.scss';\n\nexport const buttonVariants = cva(s.button, {\n variants: {\n variant: {\n contained: s['button--contained'],\n outlined: s['button--outlined'],\n ghost: s['button--ghost'],\n },\n theme: {\n primary: s['button--primary'],\n secondary: s['button--secondary'],\n destructive: s['button--destructive'],\n warning: s['button--warning'],\n success: s['button--success'],\n info: s['button--info'],\n slate: s['button--slate'],\n inherit: s['button--inherit'],\n },\n size: {\n xs: s['button--xs'],\n sm: s['button--sm'],\n md: s['button--md'],\n lg: s['button--lg'],\n },\n iconOnly: {\n true: s['button--icon-only'],\n },\n rounded: {\n true: s['button--rounded'],\n false: undefined,\n extra: s['button--extra-rounded'],\n },\n },\n defaultVariants: {\n variant: 'contained',\n theme: 'primary',\n size: 'md',\n rounded: 'extra',\n },\n});\n"],"names":[],"mappings":";;;MAGa,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;AAC1C,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACjC,YAAA,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC;AAC1B,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACjC,YAAA,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC;AACrC,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC;AACvB,YAAA,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC;AACzB,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACpB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC;AAC7B,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC1B,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,OAAO;AACjB,KAAA;AACF,CAAA;;"}
1
+ {"version":3,"file":"button-variants.js","sources":["../../../src/ui/Button/button-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport s from './button.module.scss';\n\nexport const buttonVariants = cva(s.button, {\n variants: {\n variant: {\n contained: s['button--contained'],\n outlined: s['button--outlined'],\n ghost: s['button--ghost'],\n },\n theme: {\n primary: s['button--primary'],\n secondary: s['button--secondary'],\n destructive: s['button--destructive'],\n warning: s['button--warning'],\n success: s['button--success'],\n info: s['button--info'],\n slate: s['button--slate'],\n inherit: s['button--inherit'],\n },\n size: {\n xs: s['button--xs'],\n sm: s['button--sm'],\n md: s['button--md'],\n lg: s['button--lg'],\n },\n iconOnly: {\n true: s['button--icon-only'],\n },\n fullWidth: {\n true: s['button--full-width'],\n },\n rounded: {\n true: s['button--rounded'],\n false: undefined,\n extra: s['button--extra-rounded'],\n },\n },\n defaultVariants: {\n variant: 'contained',\n theme: 'primary',\n size: 'md',\n rounded: 'extra',\n },\n});\n"],"names":[],"mappings":";;;MAGa,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;AAC1C,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACjC,YAAA,QAAQ,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAC/B,YAAA,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC;AAC1B,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC;AACjC,YAAA,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC;AACrC,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC7B,YAAA,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC;AACvB,YAAA,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC;AACzB,YAAA,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACnB,YAAA,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC;AACpB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC;AAC7B,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAC1B,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,OAAO;AACjB,KAAA;AACF,CAAA;;"}
@@ -1,3 +1,30 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * A contained button fills with the `-dark` shade, in BOTH modes, and always
4
+ * takes white ink.
5
+ *
6
+ * The vivid `-main` shades are too light to carry text: measured against white
7
+ * they land at 2.8–4.2:1 for four of the seven themes, under the 4.5 a button
8
+ * label needs. Using near-black ink instead does clear it, but then a row of
9
+ * filled buttons reads inverted against everything around it. The deeper shade
10
+ * settles both — 5:1 to 17:1 across every theme, with the ink consistent.
11
+ *
12
+ * `--button-color`, when the caller sets it, stands in for the theme — for an
13
+ * app whose palette encodes meaning (which aisle a thing lands on), that is the
14
+ * difference between using the library and forking it.
15
+ */
16
+ /*
17
+ * Fills its container and centres its label.
18
+ *
19
+ * A block button — the one that commits a form, or the one at the foot of a
20
+ * card — is otherwise the caller writing `width: 100%` over the top, which is
21
+ * a rule per app for a shape the library already knows how to draw.
22
+ */
23
+ .button-module_button--full-width__f1jWC {
24
+ display: flex;
25
+ width: 100%;
26
+ }
27
+
1
28
  .button-module_button__ATpxB {
2
29
  align-items: center;
3
30
  border: none;
@@ -52,12 +79,12 @@
52
79
  border-radius: var(--size-5);
53
80
  }
54
81
  .button-module_button--contained__YQQ33.button-module_button--primary__BO20b {
55
- --button-ripple-color: var(--primary-light);
56
- background-color: var(--primary-main);
57
- color: var(--primary-contrast);
82
+ --button-ripple-color: var(--button-color, var(--primary-light));
83
+ background-color: var(--button-color, var(--primary-dark));
84
+ color: var(--button-on-color, #fff);
58
85
  }
59
86
  .button-module_button--contained__YQQ33.button-module_button--primary__BO20b:hover:not(:disabled) {
60
- background-color: var(--primary-dark);
87
+ background-color: color-mix(in srgb, var(--button-color, var(--primary-dark)) 86%, #fff);
61
88
  }
62
89
  .button-module_button--contained__YQQ33.button-module_button--primary__BO20b:focus-visible {
63
90
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--primary-focus-visible);
@@ -66,12 +93,12 @@
66
93
  background-color: var(--primary-selected);
67
94
  }
68
95
  .button-module_button--contained__YQQ33.button-module_button--secondary__EgwQf {
69
- --button-ripple-color: var(--secondary-light);
70
- background-color: var(--secondary-main);
71
- color: var(--secondary-contrast);
96
+ --button-ripple-color: var(--button-color, var(--secondary-light));
97
+ background-color: var(--button-color, var(--secondary-dark));
98
+ color: var(--button-on-color, #fff);
72
99
  }
73
100
  .button-module_button--contained__YQQ33.button-module_button--secondary__EgwQf:hover:not(:disabled) {
74
- background-color: var(--secondary-dark);
101
+ background-color: color-mix(in srgb, var(--button-color, var(--secondary-dark)) 86%, #fff);
75
102
  }
76
103
  .button-module_button--contained__YQQ33.button-module_button--secondary__EgwQf:focus-visible {
77
104
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--secondary-focus-visible);
@@ -80,12 +107,12 @@
80
107
  background-color: var(--secondary-selected);
81
108
  }
82
109
  .button-module_button--contained__YQQ33.button-module_button--destructive__PPikG {
83
- --button-ripple-color: var(--destructive-light);
84
- background-color: var(--destructive-main);
85
- color: var(--destructive-contrast);
110
+ --button-ripple-color: var(--button-color, var(--destructive-light));
111
+ background-color: var(--button-color, var(--destructive-dark));
112
+ color: var(--button-on-color, #fff);
86
113
  }
87
114
  .button-module_button--contained__YQQ33.button-module_button--destructive__PPikG:hover:not(:disabled) {
88
- background-color: var(--destructive-dark);
115
+ background-color: color-mix(in srgb, var(--button-color, var(--destructive-dark)) 86%, #fff);
89
116
  }
90
117
  .button-module_button--contained__YQQ33.button-module_button--destructive__PPikG:focus-visible {
91
118
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--destructive-focus-visible);
@@ -94,12 +121,12 @@
94
121
  background-color: var(--destructive-selected);
95
122
  }
96
123
  .button-module_button--contained__YQQ33.button-module_button--warning__8wotP {
97
- --button-ripple-color: var(--warning-light);
98
- background-color: var(--warning-main);
99
- color: var(--warning-contrast);
124
+ --button-ripple-color: var(--button-color, var(--warning-light));
125
+ background-color: var(--button-color, var(--warning-dark));
126
+ color: var(--button-on-color, #fff);
100
127
  }
101
128
  .button-module_button--contained__YQQ33.button-module_button--warning__8wotP:hover:not(:disabled) {
102
- background-color: var(--warning-dark);
129
+ background-color: color-mix(in srgb, var(--button-color, var(--warning-dark)) 86%, #fff);
103
130
  }
104
131
  .button-module_button--contained__YQQ33.button-module_button--warning__8wotP:focus-visible {
105
132
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--warning-focus-visible);
@@ -108,12 +135,12 @@
108
135
  background-color: var(--warning-selected);
109
136
  }
110
137
  .button-module_button--contained__YQQ33.button-module_button--success__iPEgl {
111
- --button-ripple-color: var(--success-light);
112
- background-color: var(--success-main);
113
- color: var(--success-contrast);
138
+ --button-ripple-color: var(--button-color, var(--success-light));
139
+ background-color: var(--button-color, var(--success-dark));
140
+ color: var(--button-on-color, #fff);
114
141
  }
115
142
  .button-module_button--contained__YQQ33.button-module_button--success__iPEgl:hover:not(:disabled) {
116
- background-color: var(--success-dark);
143
+ background-color: color-mix(in srgb, var(--button-color, var(--success-dark)) 86%, #fff);
117
144
  }
118
145
  .button-module_button--contained__YQQ33.button-module_button--success__iPEgl:focus-visible {
119
146
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--success-focus-visible);
@@ -122,12 +149,12 @@
122
149
  background-color: var(--success-selected);
123
150
  }
124
151
  .button-module_button--contained__YQQ33.button-module_button--info__WaPKN {
125
- --button-ripple-color: var(--info-light);
126
- background-color: var(--info-main);
127
- color: var(--info-contrast);
152
+ --button-ripple-color: var(--button-color, var(--info-light));
153
+ background-color: var(--button-color, var(--info-dark));
154
+ color: var(--button-on-color, #fff);
128
155
  }
129
156
  .button-module_button--contained__YQQ33.button-module_button--info__WaPKN:hover:not(:disabled) {
130
- background-color: var(--info-dark);
157
+ background-color: color-mix(in srgb, var(--button-color, var(--info-dark)) 86%, #fff);
131
158
  }
132
159
  .button-module_button--contained__YQQ33.button-module_button--info__WaPKN:focus-visible {
133
160
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--info-focus-visible);
@@ -136,12 +163,12 @@
136
163
  background-color: var(--info-selected);
137
164
  }
138
165
  .button-module_button--contained__YQQ33.button-module_button--slate__DRwTq {
139
- --button-ripple-color: var(--slate-light);
140
- background-color: var(--slate-main);
141
- color: var(--slate-contrast);
166
+ --button-ripple-color: var(--button-color, var(--slate-light));
167
+ background-color: var(--button-color, var(--slate-dark));
168
+ color: var(--button-on-color, #fff);
142
169
  }
143
170
  .button-module_button--contained__YQQ33.button-module_button--slate__DRwTq:hover:not(:disabled) {
144
- background-color: var(--slate-dark);
171
+ background-color: color-mix(in srgb, var(--button-color, var(--slate-dark)) 86%, #fff);
145
172
  }
146
173
  .button-module_button--contained__YQQ33.button-module_button--slate__DRwTq:focus-visible {
147
174
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--slate-focus-visible);
@@ -161,12 +188,15 @@
161
188
  border: 1px solid;
162
189
  }
163
190
  .button-module_button--outlined__AxHna.button-module_button--primary__BO20b {
164
- --button-ripple-color: var(--primary-main);
165
- border-color: var(--primary-outlined-border);
166
- color: var(--primary-outlined-border);
191
+ --button-ripple-color: var(--button-color, var(--primary-main));
192
+ border-color: var(--button-color, var(--primary-outlined-border));
193
+ color: var(--button-color, var(--primary-outlined-border));
167
194
  }
168
195
  .button-module_button--outlined__AxHna.button-module_button--primary__BO20b:hover:not(:disabled) {
169
- background-color: var(--primary-hover);
196
+ /* Mixed on the SOLID, not on `--primary-hover`. That token is itself an
197
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
198
+ landed at ~1.6% — a hover nobody could see. */
199
+ background-color: color-mix(in srgb, var(--button-color, var(--primary-main)) 14%, transparent);
170
200
  }
171
201
  .button-module_button--outlined__AxHna.button-module_button--primary__BO20b:focus-visible {
172
202
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--primary-focus-visible);
@@ -175,12 +205,15 @@
175
205
  background-color: var(--primary-selected);
176
206
  }
177
207
  .button-module_button--outlined__AxHna.button-module_button--secondary__EgwQf {
178
- --button-ripple-color: var(--secondary-main);
179
- border-color: var(--secondary-outlined-border);
180
- color: var(--secondary-outlined-border);
208
+ --button-ripple-color: var(--button-color, var(--secondary-main));
209
+ border-color: var(--button-color, var(--secondary-outlined-border));
210
+ color: var(--button-color, var(--secondary-outlined-border));
181
211
  }
182
212
  .button-module_button--outlined__AxHna.button-module_button--secondary__EgwQf:hover:not(:disabled) {
183
- background-color: var(--secondary-hover);
213
+ /* Mixed on the SOLID, not on `--secondary-hover`. That token is itself an
214
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
215
+ landed at ~1.6% — a hover nobody could see. */
216
+ background-color: color-mix(in srgb, var(--button-color, var(--secondary-main)) 14%, transparent);
184
217
  }
185
218
  .button-module_button--outlined__AxHna.button-module_button--secondary__EgwQf:focus-visible {
186
219
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--secondary-focus-visible);
@@ -189,12 +222,15 @@
189
222
  background-color: var(--secondary-selected);
190
223
  }
191
224
  .button-module_button--outlined__AxHna.button-module_button--destructive__PPikG {
192
- --button-ripple-color: var(--destructive-main);
193
- border-color: var(--destructive-outlined-border);
194
- color: var(--destructive-outlined-border);
225
+ --button-ripple-color: var(--button-color, var(--destructive-main));
226
+ border-color: var(--button-color, var(--destructive-outlined-border));
227
+ color: var(--button-color, var(--destructive-outlined-border));
195
228
  }
196
229
  .button-module_button--outlined__AxHna.button-module_button--destructive__PPikG:hover:not(:disabled) {
197
- background-color: var(--destructive-hover);
230
+ /* Mixed on the SOLID, not on `--destructive-hover`. That token is itself an
231
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
232
+ landed at ~1.6% — a hover nobody could see. */
233
+ background-color: color-mix(in srgb, var(--button-color, var(--destructive-main)) 14%, transparent);
198
234
  }
199
235
  .button-module_button--outlined__AxHna.button-module_button--destructive__PPikG:focus-visible {
200
236
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--destructive-focus-visible);
@@ -203,12 +239,15 @@
203
239
  background-color: var(--destructive-selected);
204
240
  }
205
241
  .button-module_button--outlined__AxHna.button-module_button--warning__8wotP {
206
- --button-ripple-color: var(--warning-main);
207
- border-color: var(--warning-outlined-border);
208
- color: var(--warning-outlined-border);
242
+ --button-ripple-color: var(--button-color, var(--warning-main));
243
+ border-color: var(--button-color, var(--warning-outlined-border));
244
+ color: var(--button-color, var(--warning-outlined-border));
209
245
  }
210
246
  .button-module_button--outlined__AxHna.button-module_button--warning__8wotP:hover:not(:disabled) {
211
- background-color: var(--warning-hover);
247
+ /* Mixed on the SOLID, not on `--warning-hover`. That token is itself an
248
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
249
+ landed at ~1.6% — a hover nobody could see. */
250
+ background-color: color-mix(in srgb, var(--button-color, var(--warning-main)) 14%, transparent);
212
251
  }
213
252
  .button-module_button--outlined__AxHna.button-module_button--warning__8wotP:focus-visible {
214
253
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--warning-focus-visible);
@@ -217,12 +256,15 @@
217
256
  background-color: var(--warning-selected);
218
257
  }
219
258
  .button-module_button--outlined__AxHna.button-module_button--success__iPEgl {
220
- --button-ripple-color: var(--success-main);
221
- border-color: var(--success-outlined-border);
222
- color: var(--success-outlined-border);
259
+ --button-ripple-color: var(--button-color, var(--success-main));
260
+ border-color: var(--button-color, var(--success-outlined-border));
261
+ color: var(--button-color, var(--success-outlined-border));
223
262
  }
224
263
  .button-module_button--outlined__AxHna.button-module_button--success__iPEgl:hover:not(:disabled) {
225
- background-color: var(--success-hover);
264
+ /* Mixed on the SOLID, not on `--success-hover`. That token is itself an
265
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
266
+ landed at ~1.6% — a hover nobody could see. */
267
+ background-color: color-mix(in srgb, var(--button-color, var(--success-main)) 14%, transparent);
226
268
  }
227
269
  .button-module_button--outlined__AxHna.button-module_button--success__iPEgl:focus-visible {
228
270
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--success-focus-visible);
@@ -231,12 +273,15 @@
231
273
  background-color: var(--success-selected);
232
274
  }
233
275
  .button-module_button--outlined__AxHna.button-module_button--info__WaPKN {
234
- --button-ripple-color: var(--info-main);
235
- border-color: var(--info-outlined-border);
236
- color: var(--info-outlined-border);
276
+ --button-ripple-color: var(--button-color, var(--info-main));
277
+ border-color: var(--button-color, var(--info-outlined-border));
278
+ color: var(--button-color, var(--info-outlined-border));
237
279
  }
238
280
  .button-module_button--outlined__AxHna.button-module_button--info__WaPKN:hover:not(:disabled) {
239
- background-color: var(--info-hover);
281
+ /* Mixed on the SOLID, not on `--info-hover`. That token is itself an
282
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
283
+ landed at ~1.6% — a hover nobody could see. */
284
+ background-color: color-mix(in srgb, var(--button-color, var(--info-main)) 14%, transparent);
240
285
  }
241
286
  .button-module_button--outlined__AxHna.button-module_button--info__WaPKN:focus-visible {
242
287
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--info-focus-visible);
@@ -245,12 +290,15 @@
245
290
  background-color: var(--info-selected);
246
291
  }
247
292
  .button-module_button--outlined__AxHna.button-module_button--slate__DRwTq {
248
- --button-ripple-color: var(--slate-main);
249
- border-color: var(--slate-outlined-border);
250
- color: var(--slate-outlined-border);
293
+ --button-ripple-color: var(--button-color, var(--slate-main));
294
+ border-color: var(--button-color, var(--slate-outlined-border));
295
+ color: var(--button-color, var(--slate-outlined-border));
251
296
  }
252
297
  .button-module_button--outlined__AxHna.button-module_button--slate__DRwTq:hover:not(:disabled) {
253
- background-color: var(--slate-hover);
298
+ /* Mixed on the SOLID, not on `--slate-hover`. That token is itself an
299
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
300
+ landed at ~1.6% — a hover nobody could see. */
301
+ background-color: color-mix(in srgb, var(--button-color, var(--slate-main)) 14%, transparent);
254
302
  }
255
303
  .button-module_button--outlined__AxHna.button-module_button--slate__DRwTq:focus-visible {
256
304
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--slate-focus-visible);
@@ -273,11 +321,14 @@
273
321
  background-color: transparent;
274
322
  }
275
323
  .button-module_button--ghost__m7RzP.button-module_button--primary__BO20b {
276
- --button-ripple-color: var(--primary-main);
277
- color: var(--primary-outlined-border);
324
+ --button-ripple-color: var(--button-color, var(--primary-main));
325
+ color: var(--button-color, var(--primary-outlined-border));
278
326
  }
279
327
  .button-module_button--ghost__m7RzP.button-module_button--primary__BO20b:hover:not(:disabled) {
280
- background-color: var(--primary-hover);
328
+ /* Mixed on the SOLID, not on `--primary-hover`. That token is itself an
329
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
330
+ landed at ~1.6% — a hover nobody could see. */
331
+ background-color: color-mix(in srgb, var(--button-color, var(--primary-main)) 14%, transparent);
281
332
  }
282
333
  .button-module_button--ghost__m7RzP.button-module_button--primary__BO20b:focus-visible {
283
334
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--primary-focus-visible);
@@ -286,11 +337,14 @@
286
337
  background-color: var(--primary-selected);
287
338
  }
288
339
  .button-module_button--ghost__m7RzP.button-module_button--secondary__EgwQf {
289
- --button-ripple-color: var(--secondary-main);
290
- color: var(--secondary-outlined-border);
340
+ --button-ripple-color: var(--button-color, var(--secondary-main));
341
+ color: var(--button-color, var(--secondary-outlined-border));
291
342
  }
292
343
  .button-module_button--ghost__m7RzP.button-module_button--secondary__EgwQf:hover:not(:disabled) {
293
- background-color: var(--secondary-hover);
344
+ /* Mixed on the SOLID, not on `--secondary-hover`. That token is itself an
345
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
346
+ landed at ~1.6% — a hover nobody could see. */
347
+ background-color: color-mix(in srgb, var(--button-color, var(--secondary-main)) 14%, transparent);
294
348
  }
295
349
  .button-module_button--ghost__m7RzP.button-module_button--secondary__EgwQf:focus-visible {
296
350
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--secondary-focus-visible);
@@ -299,11 +353,14 @@
299
353
  background-color: var(--secondary-selected);
300
354
  }
301
355
  .button-module_button--ghost__m7RzP.button-module_button--destructive__PPikG {
302
- --button-ripple-color: var(--destructive-main);
303
- color: var(--destructive-outlined-border);
356
+ --button-ripple-color: var(--button-color, var(--destructive-main));
357
+ color: var(--button-color, var(--destructive-outlined-border));
304
358
  }
305
359
  .button-module_button--ghost__m7RzP.button-module_button--destructive__PPikG:hover:not(:disabled) {
306
- background-color: var(--destructive-hover);
360
+ /* Mixed on the SOLID, not on `--destructive-hover`. That token is itself an
361
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
362
+ landed at ~1.6% — a hover nobody could see. */
363
+ background-color: color-mix(in srgb, var(--button-color, var(--destructive-main)) 14%, transparent);
307
364
  }
308
365
  .button-module_button--ghost__m7RzP.button-module_button--destructive__PPikG:focus-visible {
309
366
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--destructive-focus-visible);
@@ -312,11 +369,14 @@
312
369
  background-color: var(--destructive-selected);
313
370
  }
314
371
  .button-module_button--ghost__m7RzP.button-module_button--warning__8wotP {
315
- --button-ripple-color: var(--warning-main);
316
- color: var(--warning-outlined-border);
372
+ --button-ripple-color: var(--button-color, var(--warning-main));
373
+ color: var(--button-color, var(--warning-outlined-border));
317
374
  }
318
375
  .button-module_button--ghost__m7RzP.button-module_button--warning__8wotP:hover:not(:disabled) {
319
- background-color: var(--warning-hover);
376
+ /* Mixed on the SOLID, not on `--warning-hover`. That token is itself an
377
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
378
+ landed at ~1.6% — a hover nobody could see. */
379
+ background-color: color-mix(in srgb, var(--button-color, var(--warning-main)) 14%, transparent);
320
380
  }
321
381
  .button-module_button--ghost__m7RzP.button-module_button--warning__8wotP:focus-visible {
322
382
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--warning-focus-visible);
@@ -325,11 +385,14 @@
325
385
  background-color: var(--warning-selected);
326
386
  }
327
387
  .button-module_button--ghost__m7RzP.button-module_button--success__iPEgl {
328
- --button-ripple-color: var(--success-main);
329
- color: var(--success-outlined-border);
388
+ --button-ripple-color: var(--button-color, var(--success-main));
389
+ color: var(--button-color, var(--success-outlined-border));
330
390
  }
331
391
  .button-module_button--ghost__m7RzP.button-module_button--success__iPEgl:hover:not(:disabled) {
332
- background-color: var(--success-hover);
392
+ /* Mixed on the SOLID, not on `--success-hover`. That token is itself an
393
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
394
+ landed at ~1.6% — a hover nobody could see. */
395
+ background-color: color-mix(in srgb, var(--button-color, var(--success-main)) 14%, transparent);
333
396
  }
334
397
  .button-module_button--ghost__m7RzP.button-module_button--success__iPEgl:focus-visible {
335
398
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--success-focus-visible);
@@ -338,11 +401,14 @@
338
401
  background-color: var(--success-selected);
339
402
  }
340
403
  .button-module_button--ghost__m7RzP.button-module_button--info__WaPKN {
341
- --button-ripple-color: var(--info-main);
342
- color: var(--info-outlined-border);
404
+ --button-ripple-color: var(--button-color, var(--info-main));
405
+ color: var(--button-color, var(--info-outlined-border));
343
406
  }
344
407
  .button-module_button--ghost__m7RzP.button-module_button--info__WaPKN:hover:not(:disabled) {
345
- background-color: var(--info-hover);
408
+ /* Mixed on the SOLID, not on `--info-hover`. That token is itself an
409
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
410
+ landed at ~1.6% — a hover nobody could see. */
411
+ background-color: color-mix(in srgb, var(--button-color, var(--info-main)) 14%, transparent);
346
412
  }
347
413
  .button-module_button--ghost__m7RzP.button-module_button--info__WaPKN:focus-visible {
348
414
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--info-focus-visible);
@@ -351,11 +417,14 @@
351
417
  background-color: var(--info-selected);
352
418
  }
353
419
  .button-module_button--ghost__m7RzP.button-module_button--slate__DRwTq {
354
- --button-ripple-color: var(--slate-main);
355
- color: var(--slate-outlined-border);
420
+ --button-ripple-color: var(--button-color, var(--slate-main));
421
+ color: var(--button-color, var(--slate-outlined-border));
356
422
  }
357
423
  .button-module_button--ghost__m7RzP.button-module_button--slate__DRwTq:hover:not(:disabled) {
358
- background-color: var(--slate-hover);
424
+ /* Mixed on the SOLID, not on `--slate-hover`. That token is itself an
425
+ alpha tint (8–16%), so mixing it again compounded two transparencies and
426
+ landed at ~1.6% — a hover nobody could see. */
427
+ background-color: color-mix(in srgb, var(--button-color, var(--slate-main)) 14%, transparent);
359
428
  }
360
429
  .button-module_button--ghost__m7RzP.button-module_button--slate__DRwTq:focus-visible {
361
430
  box-shadow: 0 0 0 2px var(--background-default), 0 0 0 4px var(--slate-focus-visible);
@@ -2,6 +2,10 @@ import { type VariantProps } from 'class-variance-authority';
2
2
  import * as React from 'react';
3
3
  import { buttonVariants } from './button-variants';
4
4
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
5
+ /** A colour outside the theme scale; overrides the theme's colour roles. */
6
+ color?: string;
7
+ /** Ink for `contained` when `color` is set and the default contrast is wrong. */
8
+ onColor?: string;
5
9
  asChild?: boolean;
6
10
  }
7
11
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAmCnD,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFA4DX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/ui/Button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAmCnD,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IAC1F,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFA4EX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -34,7 +34,7 @@ const normalizePathname = (href, origin) => {
34
34
  return null;
35
35
  }
36
36
  };
37
- const Button = React.forwardRef(({ variant = 'contained', theme = 'primary', size = 'md', rounded = 'extra', iconOnly, className, asChild = false, onClick, ...props }, ref) => {
37
+ const Button = React.forwardRef(({ variant = 'contained', theme = 'primary', size = 'md', rounded = 'extra', iconOnly, fullWidth, className, asChild = false, onClick, color, onColor, style, ...props }, ref) => {
38
38
  const Comp = asChild ? Slot : 'button';
39
39
  const childHref = asChild ? getChildHref(props.children) : null;
40
40
  const isBrowser = typeof window !== 'undefined';
@@ -57,7 +57,13 @@ const Button = React.forwardRef(({ variant = 'contained', theme = 'primary', siz
57
57
  // a wrapper element whose own content needs its own a11y decisions.
58
58
  const { children: rawChildren, ...restProps } = props;
59
59
  const children = asChild ? rawChildren : withAriaHiddenChildren(rawChildren);
60
- return (jsx(Comp, { "data-slot": 'button', "data-active-link": isActiveLink ? 'true' : undefined, "aria-current": isActiveLink && asChild ? 'page' : undefined, className: cn(buttonVariants({ variant, theme, iconOnly, size, rounded }), className), ref: ref, onClick: handleClick, ...restProps, children: children }));
60
+ return (jsx(Comp, { "data-slot": 'button', "data-active-link": isActiveLink ? 'true' : undefined, "aria-current": isActiveLink && asChild ? 'page' : undefined, className: cn(buttonVariants({ variant, theme, iconOnly, fullWidth, size, rounded }), className), style: color || onColor
61
+ ? {
62
+ ...style,
63
+ ...(color ? { '--button-color': color } : null),
64
+ ...(onColor ? { '--button-on-color': onColor } : null),
65
+ }
66
+ : style, ref: ref, onClick: handleClick, ...restProps, children: children }));
61
67
  });
62
68
  Button.displayName = 'Button';
63
69
 
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../src/ui/Button/button.tsx"],"sourcesContent":["import { type VariantProps } from 'class-variance-authority';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport { createRipple } from '../../internal/create-ripple';\nimport { Slot } from '../../internal/slot';\nimport { withAriaHiddenChildren } from '../../internal/with-aria-hidden-children';\nimport { buttonVariants } from './button-variants';\nimport s from './button.module.scss';\n\nconst getChildHref = (children: React.ReactNode): string | null => {\n const childArray = React.Children.toArray(children ?? []);\n if (childArray.length !== 1) {\n return null;\n }\n\n const child = childArray[0];\n if (!React.isValidElement<{ href?: string; to?: string }>(child)) {\n return null;\n }\n\n if (typeof child.props?.href === 'string') {\n return child.props.href;\n }\n\n if (typeof child.props?.to === 'string') {\n return child.props.to;\n }\n\n return null;\n};\n\nconst normalizePathname = (href: string, origin: string): string | null => {\n try {\n const url = new URL(href, origin);\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n return normalizedPath || '/';\n } catch {\n return null;\n }\n};\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'contained',\n theme = 'primary',\n size = 'md',\n rounded = 'extra',\n iconOnly,\n className,\n asChild = false,\n onClick,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n const childHref = asChild ? getChildHref(props.children) : null;\n const isBrowser = typeof window !== 'undefined';\n\n let currentPath: string | null = null;\n let targetPath: string | null = null;\n\n if (isBrowser) {\n const { pathname, origin } = window.location;\n currentPath = normalizePathname(pathname, origin);\n\n if (childHref) {\n targetPath = normalizePathname(childHref, origin);\n }\n }\n\n const isActiveLink = Boolean(\n asChild && currentPath && targetPath && currentPath === targetPath,\n );\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n createRipple(event, s['ripple']);\n onClick?.(event as React.MouseEvent<HTMLButtonElement>);\n };\n\n // Treat element children as decorative by default (icons get\n // aria-hidden automatically). Skip for `asChild` because Slot's child is\n // a wrapper element whose own content needs its own a11y decisions.\n const { children: rawChildren, ...restProps } = props;\n const children = asChild ? rawChildren : withAriaHiddenChildren(rawChildren);\n\n return (\n <Comp\n data-slot={'button'}\n data-active-link={isActiveLink ? 'true' : undefined}\n aria-current={isActiveLink && asChild ? 'page' : undefined}\n className={cn(buttonVariants({ variant, theme, iconOnly, size, rounded }), className)}\n ref={ref}\n onClick={handleClick}\n {...restProps}\n >\n {children}\n </Comp>\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button };\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"button.js","sources":["../../../src/ui/Button/button.tsx"],"sourcesContent":["import { type VariantProps } from 'class-variance-authority';\nimport cn from 'clsx';\nimport * as React from 'react';\nimport { createRipple } from '../../internal/create-ripple';\nimport { Slot } from '../../internal/slot';\nimport { withAriaHiddenChildren } from '../../internal/with-aria-hidden-children';\nimport { buttonVariants } from './button-variants';\nimport s from './button.module.scss';\n\nconst getChildHref = (children: React.ReactNode): string | null => {\n const childArray = React.Children.toArray(children ?? []);\n if (childArray.length !== 1) {\n return null;\n }\n\n const child = childArray[0];\n if (!React.isValidElement<{ href?: string; to?: string }>(child)) {\n return null;\n }\n\n if (typeof child.props?.href === 'string') {\n return child.props.href;\n }\n\n if (typeof child.props?.to === 'string') {\n return child.props.to;\n }\n\n return null;\n};\n\nconst normalizePathname = (href: string, origin: string): string | null => {\n try {\n const url = new URL(href, origin);\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n return normalizedPath || '/';\n } catch {\n return null;\n }\n};\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n /** A colour outside the theme scale; overrides the theme's colour roles. */\n color?: string;\n /** Ink for `contained` when `color` is set and the default contrast is wrong. */\n onColor?: string;\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'contained',\n theme = 'primary',\n size = 'md',\n rounded = 'extra',\n iconOnly,\n fullWidth,\n className,\n asChild = false,\n onClick,\n color,\n onColor,\n style,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n const childHref = asChild ? getChildHref(props.children) : null;\n const isBrowser = typeof window !== 'undefined';\n\n let currentPath: string | null = null;\n let targetPath: string | null = null;\n\n if (isBrowser) {\n const { pathname, origin } = window.location;\n currentPath = normalizePathname(pathname, origin);\n\n if (childHref) {\n targetPath = normalizePathname(childHref, origin);\n }\n }\n\n const isActiveLink = Boolean(\n asChild && currentPath && targetPath && currentPath === targetPath,\n );\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n createRipple(event, s['ripple']);\n onClick?.(event as React.MouseEvent<HTMLButtonElement>);\n };\n\n // Treat element children as decorative by default (icons get\n // aria-hidden automatically). Skip for `asChild` because Slot's child is\n // a wrapper element whose own content needs its own a11y decisions.\n const { children: rawChildren, ...restProps } = props;\n const children = asChild ? rawChildren : withAriaHiddenChildren(rawChildren);\n\n return (\n <Comp\n data-slot={'button'}\n data-active-link={isActiveLink ? 'true' : undefined}\n aria-current={isActiveLink && asChild ? 'page' : undefined}\n className={cn(\n buttonVariants({ variant, theme, iconOnly, fullWidth, size, rounded }),\n className,\n )}\n style={\n color || onColor\n ? ({\n ...style,\n ...(color ? { '--button-color': color } : null),\n ...(onColor ? { '--button-on-color': onColor } : null),\n } as React.CSSProperties)\n : style\n }\n ref={ref}\n onClick={handleClick}\n {...restProps}\n >\n {children}\n </Comp>\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button };\n"],"names":["_jsx"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import './button.css';
2
2
 
3
- var s = {"button":"button-module_button__ATpxB","ripple":"button-module_ripple__Ny6oE","button--rounded":"button-module_button--rounded__ah_Ei","button--extra-rounded":"button-module_button--extra-rounded__B9xBI","button--contained":"button-module_button--contained__YQQ33","button--primary":"button-module_button--primary__BO20b","button--secondary":"button-module_button--secondary__EgwQf","button--destructive":"button-module_button--destructive__PPikG","button--warning":"button-module_button--warning__8wotP","button--success":"button-module_button--success__iPEgl","button--info":"button-module_button--info__WaPKN","button--slate":"button-module_button--slate__DRwTq","button--inherit":"button-module_button--inherit__KgtNC","button--outlined":"button-module_button--outlined__AxHna","button--ghost":"button-module_button--ghost__m7RzP","button--xs":"button-module_button--xs__eWH8k","button--icon-only":"button-module_button--icon-only__U2BKr","button--sm":"button-module_button--sm__4yeUt","button--md":"button-module_button--md__HpLm1","button--lg":"button-module_button--lg__67gAK"};
3
+ var s = {"button--full-width":"button-module_button--full-width__f1jWC","button":"button-module_button__ATpxB","ripple":"button-module_ripple__Ny6oE","button--rounded":"button-module_button--rounded__ah_Ei","button--extra-rounded":"button-module_button--extra-rounded__B9xBI","button--contained":"button-module_button--contained__YQQ33","button--primary":"button-module_button--primary__BO20b","button--secondary":"button-module_button--secondary__EgwQf","button--destructive":"button-module_button--destructive__PPikG","button--warning":"button-module_button--warning__8wotP","button--success":"button-module_button--success__iPEgl","button--info":"button-module_button--info__WaPKN","button--slate":"button-module_button--slate__DRwTq","button--inherit":"button-module_button--inherit__KgtNC","button--outlined":"button-module_button--outlined__AxHna","button--ghost":"button-module_button--ghost__m7RzP","button--xs":"button-module_button--xs__eWH8k","button--icon-only":"button-module_button--icon-only__U2BKr","button--sm":"button-module_button--sm__4yeUt","button--md":"button-module_button--md__HpLm1","button--lg":"button-module_button--lg__67gAK"};
4
4
 
5
5
  export { s as default };
6
6
  //# sourceMappingURL=button.module.scss.js.map
@@ -39,8 +39,8 @@
39
39
  border-style: dashed;
40
40
  }
41
41
  .chip-module_chip--2xs__GJtZF {
42
- font-size: 0.56rem;
43
- padding: 0 0.25rem;
42
+ font-size: 0.6rem;
43
+ padding: 0.05rem 0.25rem;
44
44
  }
45
45
  .chip-module_chip--2xs__GJtZF > svg {
46
46
  height: 0.6rem;
@@ -104,7 +104,7 @@
104
104
  --themed-selected: var(--primary-selected);
105
105
  --chip-ink: var(--chip-color, var(--primary-outlined-border));
106
106
  --chip-fill: var(--chip-color, var(--primary-main));
107
- --chip-wash: var(--chip-color, var(--primary-hover));
107
+ --chip-wash: var(--chip-color, var(--primary-main));
108
108
  --chip-on-fill: var(--primary-contrast);
109
109
  }
110
110
  .chip-module_chip__u4PJ9.chip-module_chip--secondary__eyfdz {
@@ -120,7 +120,7 @@
120
120
  --themed-selected: var(--secondary-selected);
121
121
  --chip-ink: var(--chip-color, var(--secondary-outlined-border));
122
122
  --chip-fill: var(--chip-color, var(--secondary-main));
123
- --chip-wash: var(--chip-color, var(--secondary-hover));
123
+ --chip-wash: var(--chip-color, var(--secondary-main));
124
124
  --chip-on-fill: var(--secondary-contrast);
125
125
  }
126
126
  .chip-module_chip__u4PJ9.chip-module_chip--destructive__80JrW {
@@ -136,7 +136,7 @@
136
136
  --themed-selected: var(--destructive-selected);
137
137
  --chip-ink: var(--chip-color, var(--destructive-outlined-border));
138
138
  --chip-fill: var(--chip-color, var(--destructive-main));
139
- --chip-wash: var(--chip-color, var(--destructive-hover));
139
+ --chip-wash: var(--chip-color, var(--destructive-main));
140
140
  --chip-on-fill: var(--destructive-contrast);
141
141
  }
142
142
  .chip-module_chip__u4PJ9.chip-module_chip--warning__3oxvl {
@@ -152,7 +152,7 @@
152
152
  --themed-selected: var(--warning-selected);
153
153
  --chip-ink: var(--chip-color, var(--warning-outlined-border));
154
154
  --chip-fill: var(--chip-color, var(--warning-main));
155
- --chip-wash: var(--chip-color, var(--warning-hover));
155
+ --chip-wash: var(--chip-color, var(--warning-main));
156
156
  --chip-on-fill: var(--warning-contrast);
157
157
  }
158
158
  .chip-module_chip__u4PJ9.chip-module_chip--success__VF1tZ {
@@ -168,7 +168,7 @@
168
168
  --themed-selected: var(--success-selected);
169
169
  --chip-ink: var(--chip-color, var(--success-outlined-border));
170
170
  --chip-fill: var(--chip-color, var(--success-main));
171
- --chip-wash: var(--chip-color, var(--success-hover));
171
+ --chip-wash: var(--chip-color, var(--success-main));
172
172
  --chip-on-fill: var(--success-contrast);
173
173
  }
174
174
  .chip-module_chip__u4PJ9.chip-module_chip--info__Jgnsc {
@@ -184,7 +184,7 @@
184
184
  --themed-selected: var(--info-selected);
185
185
  --chip-ink: var(--chip-color, var(--info-outlined-border));
186
186
  --chip-fill: var(--chip-color, var(--info-main));
187
- --chip-wash: var(--chip-color, var(--info-hover));
187
+ --chip-wash: var(--chip-color, var(--info-main));
188
188
  --chip-on-fill: var(--info-contrast);
189
189
  }
190
190
  .chip-module_chip__u4PJ9.chip-module_chip--slate__vmQ7R {
@@ -200,7 +200,7 @@
200
200
  --themed-selected: var(--slate-selected);
201
201
  --chip-ink: var(--chip-color, var(--slate-outlined-border));
202
202
  --chip-fill: var(--chip-color, var(--slate-main));
203
- --chip-wash: var(--chip-color, var(--slate-hover));
203
+ --chip-wash: var(--chip-color, var(--slate-main));
204
204
  --chip-on-fill: var(--slate-contrast);
205
205
  }
206
206
  .chip-module_chip__u4PJ9.chip-module_chip--inherit__HjU_P {
@@ -209,21 +209,42 @@
209
209
  --chip-wash: var(--chip-color, var(--themed-hover, var(--action-hover)));
210
210
  --chip-on-fill: var(--themed-contrast, var(--background-default));
211
211
  }
212
+ .chip-module_chip__u4PJ9 {
213
+ /*
214
+ * Every fill answers a hover.
215
+ *
216
+ * `outline` and `solid` had none at all, which is most visible where a chip
217
+ * IS the control — a filter pill, a size to pick — and the only feedback was
218
+ * the cursor. `soft` had one, but on a `--chip-wash` that fell back to an
219
+ * already-alpha `-hover` token, so 20% of 10% was 2% and the hover moved it
220
+ * to 4%. The wash is a solid now and the percentages mean what they say.
221
+ */
222
+ }
212
223
  .chip-module_chip--soft__zYBtU {
213
- background-color: color-mix(in srgb, var(--chip-wash) 20%, transparent);
224
+ background-color: color-mix(in srgb, var(--chip-wash) 18%, transparent);
214
225
  border-color: var(--chip-ink);
215
226
  color: var(--chip-ink);
216
227
  }
217
228
  .chip-module_chip--soft__zYBtU:hover {
218
- background-color: color-mix(in srgb, var(--chip-wash) 40%, transparent);
229
+ background-color: color-mix(in srgb, var(--chip-wash) 34%, transparent);
219
230
  }
220
231
  .chip-module_chip--outline__TO-HF {
221
232
  background-color: transparent;
222
233
  border-color: color-mix(in srgb, var(--chip-ink) 55%, transparent);
223
234
  color: var(--chip-ink);
224
235
  }
236
+ .chip-module_chip--outline__TO-HF:hover {
237
+ background-color: color-mix(in srgb, var(--chip-wash) 16%, transparent);
238
+ border-color: var(--chip-ink);
239
+ }
225
240
  .chip-module_chip--solid__F89cD {
226
241
  background-color: var(--chip-fill);
227
242
  border-color: var(--chip-fill);
228
243
  color: var(--chip-on-fill);
244
+ /* Lightened toward the page's own ink-on-accent, the way a contained
245
+ Button lightens its fill — a solid cannot take a tint on top. */
246
+ }
247
+ .chip-module_chip--solid__F89cD:hover {
248
+ background-color: color-mix(in srgb, var(--chip-fill) 86%, var(--chip-on-fill));
249
+ border-color: color-mix(in srgb, var(--chip-fill) 86%, var(--chip-on-fill));
229
250
  }