@womp/kookie-ui 0.17.0 → 0.18.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 (569) hide show
  1. package/components.css +1397 -2626
  2. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/base-button.js +1 -1
  4. package/dist/cjs/components/_internal/base-button.js.map +4 -4
  5. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +1 -1
  6. package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
  7. package/dist/cjs/components/_internal/base-checkbox.props.js.map +2 -2
  8. package/dist/cjs/components/_internal/base-radio.props.d.ts +1 -1
  9. package/dist/cjs/components/_internal/base-radio.props.js +1 -1
  10. package/dist/cjs/components/_internal/base-radio.props.js.map +2 -2
  11. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  12. package/dist/cjs/components/_internal/pane-chrome.js.map +3 -3
  13. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  14. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  15. package/dist/cjs/components/accordion.d.ts.map +1 -1
  16. package/dist/cjs/components/accordion.js +1 -1
  17. package/dist/cjs/components/accordion.js.map +4 -4
  18. package/dist/cjs/components/alert-dialog.js +1 -1
  19. package/dist/cjs/components/alert-dialog.js.map +4 -4
  20. package/dist/cjs/components/badge.js +1 -1
  21. package/dist/cjs/components/badge.js.map +4 -4
  22. package/dist/cjs/components/badge.props.d.ts +1 -1
  23. package/dist/cjs/components/badge.props.js +1 -1
  24. package/dist/cjs/components/badge.props.js.map +1 -1
  25. package/dist/cjs/components/button.js +2 -2
  26. package/dist/cjs/components/button.js.map +4 -4
  27. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  28. package/dist/cjs/components/chatbar.js +2 -2
  29. package/dist/cjs/components/chatbar.js.map +4 -4
  30. package/dist/cjs/components/checkbox-cards.js +1 -1
  31. package/dist/cjs/components/checkbox-cards.js.map +2 -2
  32. package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
  33. package/dist/cjs/components/checkbox-group.js +1 -1
  34. package/dist/cjs/components/checkbox-group.js.map +4 -4
  35. package/dist/cjs/components/checkbox-group.props.d.ts +1 -1
  36. package/dist/cjs/components/checkbox-group.props.js +1 -1
  37. package/dist/cjs/components/checkbox-group.props.js.map +2 -2
  38. package/dist/cjs/components/checkbox.d.ts.map +1 -1
  39. package/dist/cjs/components/checkbox.js +1 -1
  40. package/dist/cjs/components/checkbox.js.map +4 -4
  41. package/dist/cjs/components/checkbox.props.js +1 -1
  42. package/dist/cjs/components/checkbox.props.js.map +2 -2
  43. package/dist/cjs/components/combobox.d.ts.map +1 -1
  44. package/dist/cjs/components/combobox.js +1 -1
  45. package/dist/cjs/components/combobox.js.map +4 -4
  46. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  47. package/dist/cjs/components/context-menu.js +1 -1
  48. package/dist/cjs/components/context-menu.js.map +4 -4
  49. package/dist/cjs/components/data-list.d.ts.map +1 -1
  50. package/dist/cjs/components/data-list.js +1 -1
  51. package/dist/cjs/components/data-list.js.map +4 -4
  52. package/dist/cjs/components/dialog.js +1 -1
  53. package/dist/cjs/components/dialog.js.map +4 -4
  54. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  55. package/dist/cjs/components/dropdown-menu.js +1 -1
  56. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  57. package/dist/cjs/components/hover-card.d.ts.map +1 -1
  58. package/dist/cjs/components/hover-card.js +1 -1
  59. package/dist/cjs/components/hover-card.js.map +4 -4
  60. package/dist/cjs/components/icon-button.js +2 -2
  61. package/dist/cjs/components/icon-button.js.map +4 -4
  62. package/dist/cjs/components/index.js +5 -5
  63. package/dist/cjs/components/index.js.map +4 -4
  64. package/dist/cjs/components/message-scroller.js +2 -2
  65. package/dist/cjs/components/message-scroller.js.map +4 -4
  66. package/dist/cjs/components/navbar.d.ts.map +1 -1
  67. package/dist/cjs/components/navbar.js +1 -1
  68. package/dist/cjs/components/navbar.js.map +4 -4
  69. package/dist/cjs/components/notice.d.ts +1 -1
  70. package/dist/cjs/components/notice.d.ts.map +1 -1
  71. package/dist/cjs/components/notice.js +2 -2
  72. package/dist/cjs/components/notice.js.map +4 -4
  73. package/dist/cjs/components/popover.d.ts.map +1 -1
  74. package/dist/cjs/components/popover.js +1 -1
  75. package/dist/cjs/components/popover.js.map +4 -4
  76. package/dist/cjs/components/progress.js +1 -1
  77. package/dist/cjs/components/progress.js.map +3 -3
  78. package/dist/cjs/components/progress.props.d.ts +0 -7
  79. package/dist/cjs/components/progress.props.d.ts.map +1 -1
  80. package/dist/cjs/components/progress.props.js +1 -1
  81. package/dist/cjs/components/progress.props.js.map +3 -3
  82. package/dist/cjs/components/radio-group.d.ts.map +1 -1
  83. package/dist/cjs/components/radio-group.js +1 -1
  84. package/dist/cjs/components/radio-group.js.map +4 -4
  85. package/dist/cjs/components/radio-group.props.d.ts +1 -1
  86. package/dist/cjs/components/radio-group.props.js +1 -1
  87. package/dist/cjs/components/radio-group.props.js.map +2 -2
  88. package/dist/cjs/components/radio.d.ts.map +1 -1
  89. package/dist/cjs/components/radio.js +1 -1
  90. package/dist/cjs/components/radio.js.map +4 -4
  91. package/dist/cjs/components/radio.props.js +1 -1
  92. package/dist/cjs/components/radio.props.js.map +2 -2
  93. package/dist/cjs/components/scroll-area.d.ts.map +1 -1
  94. package/dist/cjs/components/scroll-area.js +1 -1
  95. package/dist/cjs/components/scroll-area.js.map +3 -3
  96. package/dist/cjs/components/scroll-area.props.d.ts +0 -7
  97. package/dist/cjs/components/scroll-area.props.d.ts.map +1 -1
  98. package/dist/cjs/components/scroll-area.props.js +1 -1
  99. package/dist/cjs/components/scroll-area.props.js.map +3 -3
  100. package/dist/cjs/components/segmented-control.d.ts.map +1 -1
  101. package/dist/cjs/components/segmented-control.js +1 -1
  102. package/dist/cjs/components/segmented-control.js.map +4 -4
  103. package/dist/cjs/components/select.d.ts.map +1 -1
  104. package/dist/cjs/components/select.js +1 -1
  105. package/dist/cjs/components/select.js.map +4 -4
  106. package/dist/cjs/components/separator.js +1 -1
  107. package/dist/cjs/components/separator.js.map +3 -3
  108. package/dist/cjs/components/separator.props.d.ts +0 -7
  109. package/dist/cjs/components/separator.props.d.ts.map +1 -1
  110. package/dist/cjs/components/separator.props.js +1 -1
  111. package/dist/cjs/components/separator.props.js.map +3 -3
  112. package/dist/cjs/components/sheet.js +1 -1
  113. package/dist/cjs/components/sheet.js.map +4 -4
  114. package/dist/cjs/components/shell.d.ts +1 -1
  115. package/dist/cjs/components/shell.d.ts.map +1 -1
  116. package/dist/cjs/components/shell.js +1 -1
  117. package/dist/cjs/components/shell.js.map +4 -4
  118. package/dist/cjs/components/sidebar.js +1 -1
  119. package/dist/cjs/components/sidebar.js.map +4 -4
  120. package/dist/cjs/components/slider.d.ts.map +1 -1
  121. package/dist/cjs/components/slider.js +1 -1
  122. package/dist/cjs/components/slider.js.map +4 -4
  123. package/dist/cjs/components/spinner.js +1 -1
  124. package/dist/cjs/components/spinner.js.map +3 -3
  125. package/dist/cjs/components/spinner.props.d.ts +0 -7
  126. package/dist/cjs/components/spinner.props.d.ts.map +1 -1
  127. package/dist/cjs/components/spinner.props.js +1 -1
  128. package/dist/cjs/components/spinner.props.js.map +3 -3
  129. package/dist/cjs/components/switch.d.ts.map +1 -1
  130. package/dist/cjs/components/switch.js +1 -1
  131. package/dist/cjs/components/switch.js.map +4 -4
  132. package/dist/cjs/components/tab-nav.d.ts.map +1 -1
  133. package/dist/cjs/components/tab-nav.js +1 -1
  134. package/dist/cjs/components/tab-nav.js.map +4 -4
  135. package/dist/cjs/components/table.d.ts.map +1 -1
  136. package/dist/cjs/components/table.js +1 -1
  137. package/dist/cjs/components/table.js.map +4 -4
  138. package/dist/cjs/components/table.props.d.ts +1 -1
  139. package/dist/cjs/components/table.props.js +1 -1
  140. package/dist/cjs/components/table.props.js.map +2 -2
  141. package/dist/cjs/components/tabs.d.ts.map +1 -1
  142. package/dist/cjs/components/tabs.js +1 -1
  143. package/dist/cjs/components/tabs.js.map +4 -4
  144. package/dist/cjs/components/text-area.d.ts.map +1 -1
  145. package/dist/cjs/components/text-area.js +1 -1
  146. package/dist/cjs/components/text-area.js.map +4 -4
  147. package/dist/cjs/components/text-field.d.ts.map +1 -1
  148. package/dist/cjs/components/text-field.js +2 -2
  149. package/dist/cjs/components/text-field.js.map +4 -4
  150. package/dist/cjs/components/theme-panel.js +3 -3
  151. package/dist/cjs/components/theme-panel.js.map +4 -4
  152. package/dist/cjs/components/theme.d.ts +3 -0
  153. package/dist/cjs/components/theme.d.ts.map +1 -1
  154. package/dist/cjs/components/theme.js +1 -1
  155. package/dist/cjs/components/theme.js.map +4 -4
  156. package/dist/cjs/components/theme.props.d.ts +12 -0
  157. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  158. package/dist/cjs/components/theme.props.js +1 -1
  159. package/dist/cjs/components/theme.props.js.map +3 -3
  160. package/dist/cjs/components/toggle-button.js +3 -3
  161. package/dist/cjs/components/toggle-button.js.map +4 -4
  162. package/dist/cjs/components/toggle-icon-button.js +3 -3
  163. package/dist/cjs/components/toggle-icon-button.js.map +4 -4
  164. package/dist/cjs/components/toolbar.d.ts.map +1 -1
  165. package/dist/cjs/components/toolbar.js +2 -2
  166. package/dist/cjs/components/toolbar.js.map +4 -4
  167. package/dist/cjs/components/tooltip.js +1 -1
  168. package/dist/cjs/components/tooltip.js.map +4 -4
  169. package/dist/cjs/helpers/index.d.ts +1 -0
  170. package/dist/cjs/helpers/index.d.ts.map +1 -1
  171. package/dist/cjs/helpers/index.js +3 -3
  172. package/dist/cjs/helpers/index.js.map +4 -4
  173. package/dist/cjs/helpers/map-prop-values.d.ts +1 -4
  174. package/dist/cjs/helpers/map-prop-values.d.ts.map +1 -1
  175. package/dist/cjs/helpers/map-prop-values.js +1 -1
  176. package/dist/cjs/helpers/map-prop-values.js.map +3 -3
  177. package/dist/cjs/helpers/theme-size.d.ts +41 -0
  178. package/dist/cjs/helpers/theme-size.d.ts.map +1 -0
  179. package/dist/cjs/helpers/theme-size.js +2 -0
  180. package/dist/cjs/helpers/theme-size.js.map +7 -0
  181. package/dist/cjs/index.js +7 -7
  182. package/dist/cjs/index.js.map +4 -4
  183. package/dist/cjs/props/index.js +1 -1
  184. package/dist/cjs/props/index.js.map +3 -3
  185. package/dist/esm/{chunk-XZ5XZS5O.js → chunk-35HNDWWM.js} +2 -2
  186. package/dist/esm/chunk-3YLYGKFB.js +2 -0
  187. package/dist/esm/chunk-3YLYGKFB.js.map +7 -0
  188. package/dist/esm/chunk-4DE3ONED.js +2 -0
  189. package/dist/esm/chunk-4DE3ONED.js.map +7 -0
  190. package/dist/esm/chunk-4M55YJMR.js +2 -0
  191. package/dist/esm/chunk-4M55YJMR.js.map +7 -0
  192. package/dist/esm/chunk-4YQXYWDQ.js +2 -0
  193. package/dist/esm/chunk-4YQXYWDQ.js.map +7 -0
  194. package/dist/esm/chunk-54KMG7NX.js +2 -0
  195. package/dist/esm/chunk-54KMG7NX.js.map +7 -0
  196. package/dist/esm/chunk-5R2WX2FU.js +2 -0
  197. package/dist/esm/chunk-5R2WX2FU.js.map +7 -0
  198. package/dist/esm/chunk-5VBJT2VY.js +2 -0
  199. package/dist/esm/chunk-5VBJT2VY.js.map +7 -0
  200. package/dist/esm/chunk-6AZV4VFW.js +2 -0
  201. package/dist/esm/chunk-6AZV4VFW.js.map +7 -0
  202. package/dist/esm/{chunk-YDRFILTX.js → chunk-6YWDEANN.js} +2 -2
  203. package/dist/esm/{chunk-MZQDDG5K.js → chunk-7FZPCM7W.js} +2 -2
  204. package/dist/esm/chunk-7J2QS2UT.js +5 -0
  205. package/dist/esm/chunk-7J2QS2UT.js.map +7 -0
  206. package/dist/esm/chunk-ABS275QZ.js +2 -0
  207. package/dist/esm/chunk-AKPAHQYE.js +2 -0
  208. package/dist/esm/chunk-AKPAHQYE.js.map +7 -0
  209. package/dist/esm/chunk-BN24ZBO7.js +2 -0
  210. package/dist/esm/chunk-BN24ZBO7.js.map +7 -0
  211. package/dist/esm/chunk-BZ6YBP2S.js +2 -0
  212. package/dist/esm/chunk-BZ6YBP2S.js.map +7 -0
  213. package/dist/esm/chunk-CHPZ3LNC.js +2 -0
  214. package/dist/esm/chunk-CHPZ3LNC.js.map +7 -0
  215. package/dist/esm/chunk-CRK34MWY.js +2 -0
  216. package/dist/esm/chunk-CRK34MWY.js.map +7 -0
  217. package/dist/esm/{chunk-YZABQ4LS.js → chunk-DFSW4QR4.js} +2 -2
  218. package/dist/esm/{chunk-SM27AC7E.js → chunk-DJFTDR6Y.js} +2 -2
  219. package/dist/esm/chunk-EA2XSEFH.js +2 -0
  220. package/dist/esm/chunk-EA2XSEFH.js.map +7 -0
  221. package/dist/esm/{chunk-CRYT55SY.js → chunk-EHUSLPWN.js} +2 -2
  222. package/dist/esm/chunk-ENSDQ3XQ.js +2 -0
  223. package/dist/esm/chunk-ENSDQ3XQ.js.map +7 -0
  224. package/dist/esm/chunk-F3XBIUXB.js +2 -0
  225. package/dist/esm/chunk-F3XBIUXB.js.map +7 -0
  226. package/dist/esm/chunk-GHD3TKCA.js +2 -0
  227. package/dist/esm/chunk-GHD3TKCA.js.map +7 -0
  228. package/dist/esm/chunk-GQBQHGEF.js +2 -0
  229. package/dist/esm/chunk-GQBQHGEF.js.map +7 -0
  230. package/dist/esm/{chunk-6XHM724Y.js → chunk-GTVFQXLJ.js} +2 -2
  231. package/dist/esm/chunk-HIEGLLY7.js +2 -0
  232. package/dist/esm/chunk-HIEGLLY7.js.map +7 -0
  233. package/dist/esm/chunk-HZYE46V2.js +2 -0
  234. package/dist/esm/chunk-HZYE46V2.js.map +7 -0
  235. package/dist/esm/chunk-IWT3Q2PD.js +2 -0
  236. package/dist/esm/chunk-IWT3Q2PD.js.map +7 -0
  237. package/dist/esm/chunk-JCRBBT4X.js +2 -0
  238. package/dist/esm/chunk-JCRBBT4X.js.map +7 -0
  239. package/dist/esm/chunk-KFQ4B5YC.js +2 -0
  240. package/dist/esm/chunk-KFQ4B5YC.js.map +7 -0
  241. package/dist/esm/{chunk-6HRBG5H2.js → chunk-KPPIW4OJ.js} +2 -2
  242. package/dist/esm/{chunk-6WFEMPCF.js → chunk-KRXCFIRK.js} +2 -2
  243. package/dist/esm/{chunk-5SQL4ZRC.js → chunk-KSZOVI57.js} +2 -2
  244. package/dist/esm/{chunk-5SQL4ZRC.js.map → chunk-KSZOVI57.js.map} +1 -1
  245. package/dist/esm/{chunk-COSHAOEK.js → chunk-MJEYJI5G.js} +2 -2
  246. package/dist/esm/chunk-MLXHD7YF.js +2 -0
  247. package/dist/esm/chunk-MLXHD7YF.js.map +7 -0
  248. package/dist/esm/{chunk-CG54MBMW.js → chunk-MPN33CKR.js} +2 -2
  249. package/dist/esm/chunk-MQDZBF4J.js +2 -0
  250. package/dist/esm/chunk-MQDZBF4J.js.map +7 -0
  251. package/dist/esm/{chunk-IGBEDJBC.js → chunk-NFVOEHZS.js} +2 -2
  252. package/dist/esm/{chunk-ORMCQAPS.js → chunk-PAQS6C2A.js} +2 -2
  253. package/dist/esm/chunk-PUVZFRTQ.js +2 -0
  254. package/dist/esm/chunk-PUVZFRTQ.js.map +7 -0
  255. package/dist/esm/chunk-QAUYOVVL.js +2 -0
  256. package/dist/esm/chunk-QAUYOVVL.js.map +7 -0
  257. package/dist/esm/chunk-RC7TBVLO.js +2 -0
  258. package/dist/esm/chunk-RC7TBVLO.js.map +7 -0
  259. package/dist/esm/chunk-STMTXK7U.js +2 -0
  260. package/dist/esm/chunk-STMTXK7U.js.map +7 -0
  261. package/dist/esm/chunk-U7PDXTRX.js +2 -0
  262. package/dist/esm/chunk-U7PDXTRX.js.map +7 -0
  263. package/dist/esm/chunk-UNRG6Z5I.js +2 -0
  264. package/dist/esm/chunk-UNRG6Z5I.js.map +7 -0
  265. package/dist/esm/chunk-UONSKZQT.js +2 -0
  266. package/dist/esm/chunk-UONSKZQT.js.map +7 -0
  267. package/dist/esm/{chunk-2IPVLV6B.js → chunk-UQZHW3EJ.js} +2 -2
  268. package/dist/esm/chunk-VIDXAECE.js +2 -0
  269. package/dist/esm/chunk-VIDXAECE.js.map +7 -0
  270. package/dist/esm/chunk-VLLJ7A6P.js +2 -0
  271. package/dist/esm/chunk-VLLJ7A6P.js.map +7 -0
  272. package/dist/esm/{chunk-DP3OWU5T.js → chunk-VT4AAF7Q.js} +2 -2
  273. package/dist/esm/chunk-XVKFQSLI.js +2 -0
  274. package/dist/esm/chunk-XVKFQSLI.js.map +7 -0
  275. package/dist/esm/{chunk-RFURPE7W.js → chunk-YF3MFME4.js} +2 -2
  276. package/dist/esm/{chunk-4STOJSJZ.js → chunk-YVMQWSHA.js} +2 -2
  277. package/dist/esm/{chunk-4STOJSJZ.js.map → chunk-YVMQWSHA.js.map} +2 -2
  278. package/dist/esm/chunk-ZCAI2PRH.js +2 -0
  279. package/dist/esm/chunk-ZCAI2PRH.js.map +7 -0
  280. package/dist/esm/{chunk-S53ZQNHK.js → chunk-ZFBLPW3X.js} +2 -2
  281. package/dist/esm/chunk-ZH2B7WEH.js +2 -0
  282. package/dist/esm/chunk-ZH2B7WEH.js.map +7 -0
  283. package/dist/esm/chunk-ZJZIV2JH.js +2 -0
  284. package/dist/esm/chunk-ZJZIV2JH.js.map +7 -0
  285. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  286. package/dist/esm/components/_internal/base-button.js +1 -1
  287. package/dist/esm/components/_internal/base-checkbox.props.d.ts +1 -1
  288. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  289. package/dist/esm/components/_internal/base-radio.props.d.ts +1 -1
  290. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  291. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  292. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  293. package/dist/esm/components/accordion.d.ts.map +1 -1
  294. package/dist/esm/components/accordion.js +1 -1
  295. package/dist/esm/components/alert-dialog.js +1 -1
  296. package/dist/esm/components/badge.js +1 -1
  297. package/dist/esm/components/badge.props.d.ts +1 -1
  298. package/dist/esm/components/badge.props.js +1 -1
  299. package/dist/esm/components/button.js +1 -1
  300. package/dist/esm/components/chatbar.d.ts.map +1 -1
  301. package/dist/esm/components/chatbar.js +1 -1
  302. package/dist/esm/components/checkbox-cards.js +1 -1
  303. package/dist/esm/components/checkbox-group.d.ts.map +1 -1
  304. package/dist/esm/components/checkbox-group.js +1 -1
  305. package/dist/esm/components/checkbox-group.props.d.ts +1 -1
  306. package/dist/esm/components/checkbox-group.props.js +1 -1
  307. package/dist/esm/components/checkbox.d.ts.map +1 -1
  308. package/dist/esm/components/checkbox.js +1 -1
  309. package/dist/esm/components/checkbox.props.js +1 -1
  310. package/dist/esm/components/combobox.d.ts.map +1 -1
  311. package/dist/esm/components/combobox.js +1 -1
  312. package/dist/esm/components/context-menu.d.ts.map +1 -1
  313. package/dist/esm/components/context-menu.js +1 -1
  314. package/dist/esm/components/data-list.d.ts.map +1 -1
  315. package/dist/esm/components/data-list.js +1 -1
  316. package/dist/esm/components/dialog.js +1 -1
  317. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  318. package/dist/esm/components/dropdown-menu.js +1 -1
  319. package/dist/esm/components/hover-card.d.ts.map +1 -1
  320. package/dist/esm/components/hover-card.js +1 -1
  321. package/dist/esm/components/icon-button.js +1 -1
  322. package/dist/esm/components/index.js +1 -1
  323. package/dist/esm/components/message-scroller.js +1 -1
  324. package/dist/esm/components/navbar.d.ts.map +1 -1
  325. package/dist/esm/components/navbar.js +1 -1
  326. package/dist/esm/components/notice.d.ts +1 -1
  327. package/dist/esm/components/notice.d.ts.map +1 -1
  328. package/dist/esm/components/notice.js +1 -1
  329. package/dist/esm/components/popover.d.ts.map +1 -1
  330. package/dist/esm/components/popover.js +1 -1
  331. package/dist/esm/components/progress.js +1 -1
  332. package/dist/esm/components/progress.props.d.ts +0 -7
  333. package/dist/esm/components/progress.props.d.ts.map +1 -1
  334. package/dist/esm/components/progress.props.js +1 -1
  335. package/dist/esm/components/radio-group.d.ts.map +1 -1
  336. package/dist/esm/components/radio-group.js +1 -1
  337. package/dist/esm/components/radio-group.props.d.ts +1 -1
  338. package/dist/esm/components/radio-group.props.js +1 -1
  339. package/dist/esm/components/radio.d.ts.map +1 -1
  340. package/dist/esm/components/radio.js +1 -1
  341. package/dist/esm/components/radio.props.js +1 -1
  342. package/dist/esm/components/scroll-area.d.ts.map +1 -1
  343. package/dist/esm/components/scroll-area.js +1 -1
  344. package/dist/esm/components/scroll-area.props.d.ts +0 -7
  345. package/dist/esm/components/scroll-area.props.d.ts.map +1 -1
  346. package/dist/esm/components/scroll-area.props.js +1 -1
  347. package/dist/esm/components/segmented-control.d.ts.map +1 -1
  348. package/dist/esm/components/segmented-control.js +1 -1
  349. package/dist/esm/components/select.d.ts.map +1 -1
  350. package/dist/esm/components/select.js +1 -1
  351. package/dist/esm/components/separator.js +1 -1
  352. package/dist/esm/components/separator.props.d.ts +0 -7
  353. package/dist/esm/components/separator.props.d.ts.map +1 -1
  354. package/dist/esm/components/separator.props.js +1 -1
  355. package/dist/esm/components/sheet.js +1 -1
  356. package/dist/esm/components/shell.d.ts +1 -1
  357. package/dist/esm/components/shell.d.ts.map +1 -1
  358. package/dist/esm/components/shell.js +1 -1
  359. package/dist/esm/components/sidebar.js +1 -1
  360. package/dist/esm/components/slider.d.ts.map +1 -1
  361. package/dist/esm/components/slider.js +1 -1
  362. package/dist/esm/components/spinner.js +1 -1
  363. package/dist/esm/components/spinner.props.d.ts +0 -7
  364. package/dist/esm/components/spinner.props.d.ts.map +1 -1
  365. package/dist/esm/components/spinner.props.js +1 -1
  366. package/dist/esm/components/switch.d.ts.map +1 -1
  367. package/dist/esm/components/switch.js +1 -1
  368. package/dist/esm/components/tab-nav.d.ts.map +1 -1
  369. package/dist/esm/components/tab-nav.js +1 -1
  370. package/dist/esm/components/table.d.ts.map +1 -1
  371. package/dist/esm/components/table.js +1 -1
  372. package/dist/esm/components/table.props.d.ts +1 -1
  373. package/dist/esm/components/table.props.js +1 -1
  374. package/dist/esm/components/tabs.d.ts.map +1 -1
  375. package/dist/esm/components/tabs.js +1 -1
  376. package/dist/esm/components/text-area.d.ts.map +1 -1
  377. package/dist/esm/components/text-area.js +1 -1
  378. package/dist/esm/components/text-field.d.ts.map +1 -1
  379. package/dist/esm/components/text-field.js +1 -1
  380. package/dist/esm/components/theme-panel.js +1 -1
  381. package/dist/esm/components/theme.d.ts +3 -0
  382. package/dist/esm/components/theme.d.ts.map +1 -1
  383. package/dist/esm/components/theme.js +1 -1
  384. package/dist/esm/components/theme.props.d.ts +12 -0
  385. package/dist/esm/components/theme.props.d.ts.map +1 -1
  386. package/dist/esm/components/theme.props.js +1 -1
  387. package/dist/esm/components/toggle-button.js +1 -1
  388. package/dist/esm/components/toggle-icon-button.js +1 -1
  389. package/dist/esm/components/toolbar.d.ts.map +1 -1
  390. package/dist/esm/components/toolbar.js +1 -1
  391. package/dist/esm/components/tooltip.js +1 -1
  392. package/dist/esm/helpers/index.d.ts +1 -0
  393. package/dist/esm/helpers/index.d.ts.map +1 -1
  394. package/dist/esm/helpers/index.js +1 -1
  395. package/dist/esm/helpers/map-prop-values.d.ts +1 -4
  396. package/dist/esm/helpers/map-prop-values.d.ts.map +1 -1
  397. package/dist/esm/helpers/map-prop-values.js +1 -1
  398. package/dist/esm/helpers/theme-size.d.ts +41 -0
  399. package/dist/esm/helpers/theme-size.d.ts.map +1 -0
  400. package/dist/esm/helpers/theme-size.js +2 -0
  401. package/dist/esm/helpers/theme-size.js.map +7 -0
  402. package/dist/esm/index.js +1 -1
  403. package/dist/esm/props/index.js +1 -1
  404. package/layout/tokens.css +14 -0
  405. package/layout.css +14 -0
  406. package/package.json +1 -1
  407. package/src/components/_internal/base-button.css +114 -78
  408. package/src/components/_internal/base-button.tsx +48 -9
  409. package/src/components/_internal/base-checkbox.css +91 -8
  410. package/src/components/_internal/base-checkbox.props.ts +1 -1
  411. package/src/components/_internal/base-radio.css +68 -6
  412. package/src/components/_internal/base-radio.props.ts +1 -1
  413. package/src/components/_internal/base-tab-list.css +33 -25
  414. package/src/components/accordion.tsx +3 -1
  415. package/src/components/avatar.css +21 -15
  416. package/src/components/badge.css +14 -23
  417. package/src/components/badge.props.tsx +1 -1
  418. package/src/components/button.css +5 -175
  419. package/src/components/chatbar.tsx +9 -4
  420. package/src/components/checkbox-group.css +6 -11
  421. package/src/components/checkbox-group.tsx +3 -1
  422. package/src/components/checkbox.css +6 -11
  423. package/src/components/checkbox.tsx +3 -1
  424. package/src/components/combobox.tsx +3 -1
  425. package/src/components/context-menu.tsx +3 -1
  426. package/src/components/data-list.tsx +3 -1
  427. package/src/components/dropdown-menu.tsx +3 -1
  428. package/src/components/hover-card.tsx +3 -1
  429. package/src/components/icon-button.css +4 -152
  430. package/src/components/message-scroller.tsx +1 -1
  431. package/src/components/navbar.tsx +3 -1
  432. package/src/components/notice.tsx +7 -3
  433. package/src/components/popover.tsx +3 -1
  434. package/src/components/progress.css +4 -37
  435. package/src/components/progress.props.tsx +0 -3
  436. package/src/components/radio-group.props.tsx +1 -1
  437. package/src/components/radio-group.tsx +3 -1
  438. package/src/components/radio.tsx +3 -1
  439. package/src/components/scroll-area.css +2 -23
  440. package/src/components/scroll-area.props.tsx +0 -3
  441. package/src/components/scroll-area.tsx +2 -18
  442. package/src/components/segmented-control.css +34 -27
  443. package/src/components/segmented-control.tsx +3 -1
  444. package/src/components/select.css +76 -74
  445. package/src/components/select.tsx +4 -2
  446. package/src/components/separator.css +2 -23
  447. package/src/components/separator.props.tsx +0 -3
  448. package/src/components/shell.tsx +8 -2
  449. package/src/components/slider.css +19 -11
  450. package/src/components/slider.tsx +3 -1
  451. package/src/components/spinner.css +2 -23
  452. package/src/components/spinner.props.tsx +0 -4
  453. package/src/components/switch.css +51 -17
  454. package/src/components/switch.tsx +3 -1
  455. package/src/components/tab-nav.tsx +3 -1
  456. package/src/components/table.props.tsx +1 -1
  457. package/src/components/table.tsx +3 -1
  458. package/src/components/tabs.css +2 -1
  459. package/src/components/tabs.tsx +3 -1
  460. package/src/components/text-area.css +55 -107
  461. package/src/components/text-area.tsx +8 -6
  462. package/src/components/text-field.css +129 -127
  463. package/src/components/text-field.tsx +8 -6
  464. package/src/components/theme.props.tsx +10 -0
  465. package/src/components/theme.tsx +86 -71
  466. package/src/components/toolbar.tsx +3 -1
  467. package/src/helpers/index.ts +1 -0
  468. package/src/helpers/map-prop-values.ts +1 -18
  469. package/src/helpers/theme-size.ts +73 -0
  470. package/src/styles/tokens/constants.css +4 -0
  471. package/src/styles/tokens/space.css +16 -0
  472. package/styles.css +1428 -2641
  473. package/tokens/base.css +14 -0
  474. package/tokens.css +16 -0
  475. package/dist/esm/chunk-2HUAVZZL.js +0 -2
  476. package/dist/esm/chunk-2HUAVZZL.js.map +0 -7
  477. package/dist/esm/chunk-2XSRO44Q.js +0 -2
  478. package/dist/esm/chunk-2XSRO44Q.js.map +0 -7
  479. package/dist/esm/chunk-3KB2XWBE.js +0 -2
  480. package/dist/esm/chunk-3KB2XWBE.js.map +0 -7
  481. package/dist/esm/chunk-4D7OU2UA.js +0 -2
  482. package/dist/esm/chunk-4D7OU2UA.js.map +0 -7
  483. package/dist/esm/chunk-5GYIQIPW.js +0 -2
  484. package/dist/esm/chunk-5GYIQIPW.js.map +0 -7
  485. package/dist/esm/chunk-655TAWHX.js +0 -2
  486. package/dist/esm/chunk-655TAWHX.js.map +0 -7
  487. package/dist/esm/chunk-6VPYP3VN.js +0 -2
  488. package/dist/esm/chunk-6VPYP3VN.js.map +0 -7
  489. package/dist/esm/chunk-7BE6N3KY.js +0 -2
  490. package/dist/esm/chunk-7BE6N3KY.js.map +0 -7
  491. package/dist/esm/chunk-AHOUZS3V.js +0 -2
  492. package/dist/esm/chunk-AHOUZS3V.js.map +0 -7
  493. package/dist/esm/chunk-BALS3AVM.js +0 -2
  494. package/dist/esm/chunk-BALS3AVM.js.map +0 -7
  495. package/dist/esm/chunk-BOLRYGFQ.js +0 -2
  496. package/dist/esm/chunk-BOLRYGFQ.js.map +0 -7
  497. package/dist/esm/chunk-BUEYZEAY.js +0 -2
  498. package/dist/esm/chunk-BUEYZEAY.js.map +0 -7
  499. package/dist/esm/chunk-DKALDTCN.js +0 -2
  500. package/dist/esm/chunk-DKALDTCN.js.map +0 -7
  501. package/dist/esm/chunk-EJOVE3JH.js +0 -2
  502. package/dist/esm/chunk-EJOVE3JH.js.map +0 -7
  503. package/dist/esm/chunk-FPDLBLO3.js +0 -2
  504. package/dist/esm/chunk-FPDLBLO3.js.map +0 -7
  505. package/dist/esm/chunk-GOYI2U6F.js +0 -2
  506. package/dist/esm/chunk-GOYI2U6F.js.map +0 -7
  507. package/dist/esm/chunk-HKRQ3E3I.js +0 -2
  508. package/dist/esm/chunk-HKRQ3E3I.js.map +0 -7
  509. package/dist/esm/chunk-HSFQO4QM.js +0 -2
  510. package/dist/esm/chunk-HSFQO4QM.js.map +0 -7
  511. package/dist/esm/chunk-HVQ3SLQC.js +0 -2
  512. package/dist/esm/chunk-HVQ3SLQC.js.map +0 -7
  513. package/dist/esm/chunk-JCOALADA.js +0 -5
  514. package/dist/esm/chunk-JCOALADA.js.map +0 -7
  515. package/dist/esm/chunk-K7J23OPW.js +0 -2
  516. package/dist/esm/chunk-K7J23OPW.js.map +0 -7
  517. package/dist/esm/chunk-M55KFXYV.js +0 -2
  518. package/dist/esm/chunk-M55KFXYV.js.map +0 -7
  519. package/dist/esm/chunk-MGSHX5N5.js +0 -2
  520. package/dist/esm/chunk-MGSHX5N5.js.map +0 -7
  521. package/dist/esm/chunk-MJC4NKYG.js +0 -2
  522. package/dist/esm/chunk-MJC4NKYG.js.map +0 -7
  523. package/dist/esm/chunk-MOYLXCMW.js +0 -2
  524. package/dist/esm/chunk-MOYLXCMW.js.map +0 -7
  525. package/dist/esm/chunk-MVW2SY4F.js +0 -2
  526. package/dist/esm/chunk-MVW2SY4F.js.map +0 -7
  527. package/dist/esm/chunk-NOSR2XWD.js +0 -2
  528. package/dist/esm/chunk-NOSR2XWD.js.map +0 -7
  529. package/dist/esm/chunk-OMUUPPJO.js +0 -2
  530. package/dist/esm/chunk-OMUUPPJO.js.map +0 -7
  531. package/dist/esm/chunk-PNIVUG5D.js +0 -2
  532. package/dist/esm/chunk-PNIVUG5D.js.map +0 -7
  533. package/dist/esm/chunk-PSS45RHX.js +0 -2
  534. package/dist/esm/chunk-PSS45RHX.js.map +0 -7
  535. package/dist/esm/chunk-PYYI64XK.js +0 -2
  536. package/dist/esm/chunk-PYYI64XK.js.map +0 -7
  537. package/dist/esm/chunk-QJFAGWBO.js +0 -2
  538. package/dist/esm/chunk-QJFAGWBO.js.map +0 -7
  539. package/dist/esm/chunk-QWFFYUFH.js +0 -2
  540. package/dist/esm/chunk-QWFFYUFH.js.map +0 -7
  541. package/dist/esm/chunk-RVHKSNMJ.js +0 -2
  542. package/dist/esm/chunk-RVHKSNMJ.js.map +0 -7
  543. package/dist/esm/chunk-RYURXQLJ.js +0 -2
  544. package/dist/esm/chunk-RYURXQLJ.js.map +0 -7
  545. package/dist/esm/chunk-UA6FP7HS.js +0 -2
  546. package/dist/esm/chunk-V7UP4SLZ.js +0 -2
  547. package/dist/esm/chunk-V7UP4SLZ.js.map +0 -7
  548. package/dist/esm/chunk-X5KCVLKG.js +0 -2
  549. package/dist/esm/chunk-X5KCVLKG.js.map +0 -7
  550. package/dist/esm/chunk-XPRPYCII.js +0 -2
  551. package/dist/esm/chunk-XPRPYCII.js.map +0 -7
  552. /package/dist/esm/{chunk-XZ5XZS5O.js.map → chunk-35HNDWWM.js.map} +0 -0
  553. /package/dist/esm/{chunk-YDRFILTX.js.map → chunk-6YWDEANN.js.map} +0 -0
  554. /package/dist/esm/{chunk-MZQDDG5K.js.map → chunk-7FZPCM7W.js.map} +0 -0
  555. /package/dist/esm/{chunk-UA6FP7HS.js.map → chunk-ABS275QZ.js.map} +0 -0
  556. /package/dist/esm/{chunk-YZABQ4LS.js.map → chunk-DFSW4QR4.js.map} +0 -0
  557. /package/dist/esm/{chunk-SM27AC7E.js.map → chunk-DJFTDR6Y.js.map} +0 -0
  558. /package/dist/esm/{chunk-CRYT55SY.js.map → chunk-EHUSLPWN.js.map} +0 -0
  559. /package/dist/esm/{chunk-6XHM724Y.js.map → chunk-GTVFQXLJ.js.map} +0 -0
  560. /package/dist/esm/{chunk-6HRBG5H2.js.map → chunk-KPPIW4OJ.js.map} +0 -0
  561. /package/dist/esm/{chunk-6WFEMPCF.js.map → chunk-KRXCFIRK.js.map} +0 -0
  562. /package/dist/esm/{chunk-COSHAOEK.js.map → chunk-MJEYJI5G.js.map} +0 -0
  563. /package/dist/esm/{chunk-CG54MBMW.js.map → chunk-MPN33CKR.js.map} +0 -0
  564. /package/dist/esm/{chunk-IGBEDJBC.js.map → chunk-NFVOEHZS.js.map} +0 -0
  565. /package/dist/esm/{chunk-ORMCQAPS.js.map → chunk-PAQS6C2A.js.map} +0 -0
  566. /package/dist/esm/{chunk-2IPVLV6B.js.map → chunk-UQZHW3EJ.js.map} +0 -0
  567. /package/dist/esm/{chunk-DP3OWU5T.js.map → chunk-VT4AAF7Q.js.map} +0 -0
  568. /package/dist/esm/{chunk-RFURPE7W.js.map → chunk-YF3MFME4.js.map} +0 -0
  569. /package/dist/esm/{chunk-S53ZQNHK.js.map → chunk-ZFBLPW3X.js.map} +0 -0
@@ -36,8 +36,27 @@
36
36
  position: relative;
37
37
  cursor: pointer;
38
38
  contain: paint;
39
+ touch-action: manipulation;
40
+ -webkit-tap-highlight-color: transparent;
41
+
42
+ /* The control ladder. min-height, not height: a hard height clips a resized or wrapped label. */
43
+ min-height: var(--base-button-height);
39
44
  gap: var(--base-button-gap);
40
- height: var(--base-button-height);
45
+
46
+ /* Side padding is per side. Under a full radius a bare side pads wider (the corner curve swings
47
+ in at the text); a side that starts or ends with an icon keeps the plain padding. Outside the
48
+ full radius --radius-full is 0px, so the bare padding IS the plain padding. */
49
+ --base-button-px-bare: calc(
50
+ var(--base-button-px) + min(var(--radius-full), var(--base-button-px-pill) - var(--base-button-px))
51
+ );
52
+ padding-inline-start: var(--base-button-px-bare);
53
+ padding-inline-end: var(--base-button-px-bare);
54
+
55
+ /* Each level keeps v1's roundness; a full radius is half the control's height. */
56
+ border-radius: max(
57
+ var(--base-button-radius),
58
+ min(var(--radius-full), calc(var(--base-button-height) / 2))
59
+ );
41
60
 
42
61
  /* Typography */
43
62
  font-family: var(--default-font-family);
@@ -59,11 +78,16 @@
59
78
  background-color: Canvas;
60
79
  }
61
80
 
62
- /* Disabled state styling */
63
- &:where([data-disabled]) {
81
+ /* One focus ring for every variant */
82
+ &:where(:focus-visible) {
83
+ outline: var(--focus-ring-width) solid var(--focus-8);
84
+ outline-offset: var(--focus-ring-offset);
85
+ }
86
+
87
+ /* Disabled is a colour remap (per variant, below). It still hit-tests and keeps the arrow. */
88
+ &:where([data-disabled], [aria-disabled='true']) {
64
89
  --spinner-opacity: 1;
65
- cursor: not-allowed;
66
- pointer-events: none;
90
+ cursor: default;
67
91
  @media (forced-colors: active) {
68
92
  border-color: GrayText;
69
93
  color: GrayText;
@@ -71,10 +95,18 @@
71
95
  }
72
96
  }
73
97
 
74
- /* Loading state styling */
98
+ /* Loading: busy, not frozen */
75
99
  &:where(.rt-loading) {
76
100
  position: relative;
77
- cursor: wait;
101
+ cursor: progress;
102
+ }
103
+
104
+ /* Icons ride the icon ladder */
105
+ /* stylelint-disable-next-line selector-max-type */
106
+ & :where(svg) {
107
+ width: var(--base-button-icon-size);
108
+ height: var(--base-button-icon-size);
109
+ flex: none;
78
110
  }
79
111
 
80
112
  /* Stabilize SVGs during scale transforms (prevent wobble, especially Firefox) */
@@ -87,6 +119,22 @@
87
119
  }
88
120
  }
89
121
 
122
+ /* An edge holding an icon keeps the plain padding under a pill */
123
+ .rt-BaseButton:where([data-icon-start]) {
124
+ padding-inline-start: var(--base-button-px);
125
+ }
126
+
127
+ .rt-BaseButton:where([data-icon-end]) {
128
+ padding-inline-end: var(--base-button-px);
129
+ }
130
+
131
+ /* An icon-only button is square: no inline padding, and aspect-ratio rather than a width ladder,
132
+ so a hosted icon button whose height comes from its container (Toolbar, Chatbar) stays square. */
133
+ .rt-BaseButton:where(.rt-IconButton) {
134
+ padding-inline: 0;
135
+ aspect-ratio: 1;
136
+ }
137
+
90
138
  /* Full width mode */
91
139
  .rt-BaseButton:where(.rt-full-width) {
92
140
  display: flex;
@@ -97,28 +145,47 @@
97
145
  * *
98
146
  * SIZES *
99
147
  * *
148
+ * The control ladder: height 28/32/40/48, side padding, pill padding, gap and icon size all come *
149
+ * from the role tokens. Only the corner keeps v1's own level. *
150
+ * *
100
151
  ***************************************************************************************************/
101
152
 
102
153
  @breakpoints {
103
154
  .rt-BaseButton {
104
155
  &:where(.rt-r-size-1) {
105
156
  --base-button-height: var(--control-height-1);
106
- border-radius: var(--radius-pill-1);
157
+ --base-button-px: var(--control-px-1);
158
+ --base-button-px-pill: var(--control-px-pill-1);
159
+ --base-button-gap: var(--control-gap-1);
160
+ --base-button-icon-size: var(--icon-size-1);
161
+ --base-button-radius: var(--radius-1);
107
162
  }
108
163
 
109
164
  &:where(.rt-r-size-2) {
110
165
  --base-button-height: var(--control-height-2);
111
- border-radius: var(--radius-pill-2);
166
+ --base-button-px: var(--control-px-2);
167
+ --base-button-px-pill: var(--control-px-pill-2);
168
+ --base-button-gap: var(--control-gap-2);
169
+ --base-button-icon-size: var(--icon-size-2);
170
+ --base-button-radius: var(--radius-2);
112
171
  }
113
172
 
114
173
  &:where(.rt-r-size-3) {
115
174
  --base-button-height: var(--control-height-3);
116
- border-radius: var(--radius-pill-3);
175
+ --base-button-px: var(--control-px-3);
176
+ --base-button-px-pill: var(--control-px-pill-3);
177
+ --base-button-gap: var(--control-gap-3);
178
+ --base-button-icon-size: var(--icon-size-3);
179
+ --base-button-radius: var(--radius-3);
117
180
  }
118
181
 
119
182
  &:where(.rt-r-size-4) {
120
183
  --base-button-height: var(--control-height-4);
121
- border-radius: var(--radius-pill-4);
184
+ --base-button-px: var(--control-px-4);
185
+ --base-button-px-pill: var(--control-px-pill-4);
186
+ --base-button-gap: var(--control-gap-4);
187
+ --base-button-icon-size: var(--icon-size-4);
188
+ --base-button-radius: var(--radius-4);
122
189
  }
123
190
  }
124
191
  }
@@ -128,7 +195,7 @@
128
195
  * VARIANT PALETTES *
129
196
  * *
130
197
  * Each variant defines its color scale. Shared state logic uses these variables. *
131
- * Variables: --v-color, --v-bg-*, --v-border-*, --v-shadow-*, --v-focus-* *
198
+ * Variables: --v-color, --v-bg-*, --v-border-*, --v-shadow-* *
132
199
  * *
133
200
  ***************************************************************************************************/
134
201
 
@@ -144,8 +211,6 @@
144
211
  --v-bg-pressed: var(--accent-5);
145
212
  --v-bg-pressed-a: var(--accent-a5);
146
213
  --v-shadow-hover: var(--shadow-2);
147
- --v-focus-color: var(--accent-8);
148
- --v-focus-offset: -1px;
149
214
  }
150
215
 
151
216
  /* Ghost variant palette */
@@ -160,8 +225,6 @@
160
225
  --v-bg-pressed: var(--accent-4);
161
226
  --v-bg-pressed-a: var(--accent-a4);
162
227
  --v-bg-disabled: transparent;
163
- --v-focus-color: var(--focus-8);
164
- --v-focus-offset: -1px;
165
228
  }
166
229
 
167
230
  /* Outline variant palette */
@@ -185,8 +248,6 @@
185
248
  --v-border-active: var(--accent-8);
186
249
  --v-border-active-a: var(--accent-a8);
187
250
  --v-border-disabled: var(--gray-a7);
188
- --v-focus-color: var(--focus-8);
189
- --v-focus-offset: -1px;
190
251
  }
191
252
 
192
253
  /* Surface variant palette */
@@ -210,15 +271,14 @@
210
271
  --v-border-active: var(--accent-8);
211
272
  --v-border-active-a: var(--accent-a8);
212
273
  --v-border-disabled: var(--gray-a6);
213
- --v-focus-color: var(--focus-8);
214
- --v-focus-offset: -1px;
215
274
  }
216
275
 
217
276
  /***************************************************************************************************
218
277
  * *
219
278
  * SHARED STATE LOGIC *
220
279
  * *
221
- * Single set of state selectors that use variant palette variables. *
280
+ * One rule for every variant: hover = +1 step and press = +2 steps on the variant's own ramp. *
281
+ * Hover only where hovering exists. Disabled is a colour remap: no opacity, no pointer-events. *
222
282
  * Applies to: soft, ghost, outline, surface *
223
283
  * *
224
284
  ***************************************************************************************************/
@@ -228,15 +288,9 @@
228
288
  color: var(--v-color);
229
289
  background-color: var(--v-bg);
230
290
 
231
- /* Focus visible */
232
- &:where(:focus-visible) {
233
- outline: 2px solid var(--v-focus-color);
234
- outline-offset: var(--v-focus-offset);
235
- }
236
-
237
291
  /* Hover state */
238
292
  @media (hover: hover) {
239
- &:where(:hover:not([data-disabled])) {
293
+ &:where(:hover:not([data-disabled], [aria-disabled='true'])) {
240
294
  background-color: var(--v-bg-hover);
241
295
  box-shadow: var(--v-shadow-hover, none);
242
296
  }
@@ -248,7 +302,7 @@
248
302
  }
249
303
 
250
304
  /* Active state */
251
- &:where(:active:not([data-state='open'], [data-disabled])) {
305
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])) {
252
306
  background-color: var(--v-bg-active);
253
307
  box-shadow: var(--shadow-1);
254
308
  }
@@ -259,11 +313,10 @@
259
313
  }
260
314
 
261
315
  /* Disabled state */
262
- &:where([data-disabled]) {
316
+ &:where([data-disabled], [aria-disabled='true']) {
263
317
  color: var(--gray-a8);
264
318
  background-color: var(--v-bg-disabled, var(--gray-a3));
265
- cursor: not-allowed;
266
- pointer-events: none;
319
+ box-shadow: none;
267
320
  }
268
321
  }
269
322
 
@@ -274,7 +327,7 @@
274
327
 
275
328
  /* Hover state border */
276
329
  @media (hover: hover) {
277
- &:where(:hover:not([data-disabled])) {
330
+ &:where(:hover:not([data-disabled], [aria-disabled='true'])) {
278
331
  box-shadow: inset 0 0 0 1px var(--v-border-hover);
279
332
  }
280
333
  }
@@ -285,26 +338,26 @@
285
338
  }
286
339
 
287
340
  /* Active and pressed state border */
288
- &:where(:active:not([data-state='open'], [data-disabled])),
341
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])),
289
342
  &:where([data-state='on']) {
290
343
  box-shadow: inset 0 0 0 1px var(--v-border-active);
291
344
  }
292
345
 
293
346
  /* Disabled state border */
294
- &:where([data-disabled]) {
347
+ &:where([data-disabled], [aria-disabled='true']) {
295
348
  box-shadow: inset 0 0 0 1px var(--v-border-disabled);
296
349
  }
297
350
  }
298
351
 
299
- /* Ghost flush mode */
352
+ /* Ghost flush mode: pull the button out by its own padding so its content sits on the text line */
300
353
  .rt-BaseButton:where(.rt-variant-ghost[data-flush='true']) {
301
354
  --margin-top: 0px;
302
355
  --margin-right: 0px;
303
356
  --margin-bottom: 0px;
304
357
  --margin-left: 0px;
305
358
 
306
- --button-padding-x: calc(var(--base-button-height) * var(--padding-ratio-horizontal) / 4);
307
- --button-padding-y: calc(var(--base-button-height) / 8);
359
+ --button-padding-x: var(--base-button-px);
360
+ --button-padding-y: calc((var(--base-button-height) - 1lh) / 2);
308
361
 
309
362
  --margin-top-override: calc(var(--margin-top) - var(--button-padding-y));
310
363
  --margin-right-override: calc(var(--margin-right) - var(--button-padding-x));
@@ -324,6 +377,12 @@
324
377
  }
325
378
  }
326
379
 
380
+ /* A flush ghost icon button pulls out by the space around its glyph */
381
+ .rt-BaseButton:where(.rt-IconButton.rt-variant-ghost[data-flush='true']) {
382
+ --button-padding-x: calc((var(--base-button-height) - var(--base-button-icon-size)) / 2);
383
+ --button-padding-y: var(--button-padding-x);
384
+ }
385
+
327
386
  /***************************************************************************************************
328
387
  * *
329
388
  * SPECIAL VARIANTS *
@@ -332,62 +391,50 @@
332
391
  * *
333
392
  ***************************************************************************************************/
334
393
 
335
- /* Raised variant - uses --color-surface and gray interactive states */
394
+ /* Raised variant - surface at rest, then gray 2 on hover and gray 3 on press */
336
395
  .rt-BaseButton:where(.rt-variant-raised) {
337
396
  position: relative;
338
397
  color: var(--accent-ink);
339
398
  background-color: var(--color-surface-solid);
340
399
  box-shadow: var(--shadow-2);
341
400
 
342
- &:where(:focus-visible) {
343
- outline: 2px solid var(--focus-8);
344
- outline-offset: 2px;
345
- }
346
-
347
401
  @media (hover: hover) {
348
- &:where(:hover) {
402
+ &:where(:hover:not([data-disabled], [aria-disabled='true'])) {
349
403
  background-color: var(--gray-2);
350
404
  box-shadow: var(--shadow-2);
351
405
  }
352
406
  }
353
407
 
354
408
  &:where([data-state='open']),
355
- &:where(:active:not([data-state='open'], [data-disabled])),
356
- &:where([data-state='on']:not([data-disabled])) {
409
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])),
410
+ &:where([data-state='on']:not([data-disabled], [aria-disabled='true'])) {
357
411
  background-color: var(--gray-3);
358
412
  box-shadow: var(--shadow-1);
359
413
  }
360
414
 
361
415
  @media (pointer: coarse) {
362
- &:where(:active:not([data-state='open'])) {
416
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])) {
363
417
  outline: var(--raised-shadow-blur-large) solid var(--gray-a4);
364
418
  outline-offset: 0;
365
419
  }
366
420
  }
367
421
 
368
- &:where([data-disabled]) {
422
+ &:where([data-disabled], [aria-disabled='true']) {
369
423
  color: var(--gray-a8);
370
424
  background-color: var(--gray-a3);
371
425
  box-shadow: none;
372
- outline: none;
373
- cursor: not-allowed;
374
- pointer-events: none;
375
426
  top: 0;
376
427
  }
377
428
  }
378
429
 
379
- /* Solid variant - fills with the accent solid tokens (gray resolves to step 12 automatically) */
430
+ /* Solid variant - accent solid at rest, solid-hover on hover, solid-active on press
431
+ (gray resolves the three to step 12 and the filters carry the change) */
380
432
  .rt-BaseButton:where(.rt-variant-solid) {
381
433
  background-color: var(--accent-solid);
382
434
  color: var(--accent-solid-contrast);
383
435
 
384
- &:where(:focus-visible) {
385
- outline: 2px solid var(--focus-8);
386
- outline-offset: 2px;
387
- }
388
-
389
436
  @media (hover: hover) {
390
- &:where(:hover) {
437
+ &:where(:hover:not([data-disabled], [aria-disabled='true'])) {
391
438
  background-color: var(--accent-solid-hover);
392
439
  filter: var(--accent-solid-hover-filter);
393
440
  box-shadow: var(--shadow-2);
@@ -399,7 +446,8 @@
399
446
  filter: var(--accent-solid-open-filter);
400
447
  }
401
448
 
402
- &:where(:active:not([data-state='open'])) {
449
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])) {
450
+ background-color: var(--accent-solid-active);
403
451
  filter: var(--accent-solid-active-filter);
404
452
  }
405
453
 
@@ -409,19 +457,18 @@
409
457
  }
410
458
 
411
459
  @media (pointer: coarse) {
412
- &:where(:active:not([data-state='open'])) {
460
+ &:where(:active:not([data-state='open'], [data-disabled], [aria-disabled='true'])) {
413
461
  outline: var(--raised-shadow-blur-large) solid var(--accent-a4);
414
462
  outline-offset: 0;
415
463
  }
416
464
  }
417
465
 
418
- &:where([data-disabled]) {
466
+ &:where([data-disabled], [aria-disabled='true']) {
419
467
  color: var(--gray-a8);
420
468
  background-color: var(--gray-a3);
421
- outline: none;
469
+ box-shadow: none;
422
470
  filter: none;
423
- cursor: not-allowed;
424
- pointer-events: none;
471
+ opacity: 1;
425
472
  }
426
473
  }
427
474
 
@@ -431,24 +478,13 @@
431
478
  * *
432
479
  ***************************************************************************************************/
433
480
 
434
- .rt-BaseButton:where([disabled][aria-pressed]) {
481
+ .rt-BaseButton:where([data-disabled][aria-pressed], [aria-disabled='true'][aria-pressed]) {
435
482
  transform: none;
436
483
  color: var(--gray-a8);
437
484
  background-color: var(--gray-a3);
438
- background: var(--gray-a3);
439
485
  box-shadow: none;
440
486
  filter: none;
441
- opacity: 0.6;
442
- cursor: not-allowed;
443
- pointer-events: none;
444
-
445
- &:where([data-state='on']) {
446
- transform: none;
447
- background: var(--gray-a3);
448
- background-color: var(--gray-a3);
449
- box-shadow: none;
450
- filter: none;
451
- }
487
+ opacity: 1;
452
488
 
453
489
  /* Raised needs special handling for top position */
454
490
  &:where(.rt-variant-raised) {
@@ -7,7 +7,7 @@ import { Flex } from '../flex.js';
7
7
  import { Spinner } from '../spinner.js';
8
8
  import { VisuallyHidden } from '../visually-hidden.js';
9
9
  import { extractProps } from '../../helpers/extract-props.js';
10
- import { mapResponsiveProp, mapButtonSizeToSpinnerSize } from '../../helpers/map-prop-values.js';
10
+ import { useThemeSizeProps } from '../../helpers/theme-size.js';
11
11
  import { marginPropDefs } from '../../props/margin.props.js';
12
12
 
13
13
  import type { MarginProps } from '../../props/margin.props.js';
@@ -59,8 +59,8 @@ interface BaseButtonProps extends PolymorphicBaseButtonProps {}
59
59
  * <BaseButton as="a" href="/link">Link Button</BaseButton>
60
60
  * ```
61
61
  */
62
- const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props, forwardedRef) => {
63
- const { size = baseButtonPropDefs.size.default } = props;
62
+ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProps, forwardedRef) => {
63
+ const props = useThemeSizeProps(ownProps, baseButtonPropDefs.size);
64
64
 
65
65
  // Extract button-specific props from the combined props object
66
66
  const {
@@ -71,10 +71,45 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props,
71
71
  color,
72
72
  radius,
73
73
  flush,
74
- disabled = props.loading, // Loading state automatically disables the button
74
+ disabled: nativeDisabled,
75
75
  ...baseButtonProps
76
76
  } = extractProps(props, baseButtonPropDefs, marginPropDefs);
77
77
 
78
+ // Loading blocks activation but keeps the native `disabled` off, so the button keeps focus
79
+ // and its place in the tab order (aria-disabled carries the state). An explicit `disabled`
80
+ // stays native.
81
+ const loading = Boolean(props.loading);
82
+ const disabled = Boolean(nativeDisabled) || loading;
83
+ const { onClick } = baseButtonProps as { onClick?: React.MouseEventHandler<HTMLElement> };
84
+ const handleClick = React.useCallback(
85
+ (event: React.MouseEvent<HTMLElement>) => {
86
+ if (loading) {
87
+ event.preventDefault();
88
+ return;
89
+ }
90
+ onClick?.(event);
91
+ },
92
+ [loading, onClick],
93
+ );
94
+
95
+ // Which edges start or end with an icon. A bare edge pads wider under a full radius; an edge
96
+ // holding an icon keeps the plain padding (the icon already stands between text and curve).
97
+ const { iconStart, iconEnd } = React.useMemo(() => {
98
+ const content =
99
+ asChild && React.isValidElement(children) ? (children.props as { children?: React.ReactNode }).children : children;
100
+ // Fragments are see-through: their own first and last children are the edges.
101
+ const flatten = (nodes: React.ReactNode): React.ReactNode[] =>
102
+ React.Children.toArray(nodes).flatMap((node) =>
103
+ React.isValidElement(node) && node.type === React.Fragment
104
+ ? flatten((node.props as { children?: React.ReactNode }).children)
105
+ : [node],
106
+ );
107
+ const items = flatten(content);
108
+ const isIcon = (node: React.ReactNode) =>
109
+ React.isValidElement(node) && (node.type === 'svg' || typeof node.type !== 'string');
110
+ return { iconStart: isIcon(items[0]), iconEnd: isIcon(items[items.length - 1]) };
111
+ }, [asChild, children]);
112
+
78
113
 
79
114
  // asChild takes precedence over as prop for Radix Slot integration
80
115
  // When asChild is true, we use Slot.Root to merge props onto the child element
@@ -94,7 +129,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props,
94
129
 
95
130
  // Generate unique ID for loading announcements
96
131
  const loadingId = React.useId();
97
- const describedById = props.loading ? `${loadingId}-loading` : undefined;
132
+ const describedById = loading ? `${loadingId}-loading` : undefined;
98
133
 
99
134
  // Extract button text for accessibility announcements
100
135
  const buttonText = React.useMemo(() => {
@@ -121,16 +156,20 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props,
121
156
 
122
157
  return (
123
158
  <Comp
124
- // The `data-disabled` attribute enables correct styles when doing `<Button asChild disabled>`
125
- data-disabled={disabled || undefined}
126
159
  data-accent-color={color}
127
160
  data-radius={radius}
128
161
  data-flush={flush ? 'true' : undefined}
162
+ data-icon-start={iconStart || undefined}
163
+ data-icon-end={iconEnd || undefined}
129
164
  {...baseButtonProps}
130
165
  {...accessibilityProps}
166
+ // After the spread: `data-disabled` styles `<Button asChild disabled>`, and a wrapping
167
+ // Radix Toggle (asChild) passes `data-disabled={undefined}` that must not erase it.
168
+ data-disabled={disabled || undefined}
169
+ onClick={handleClick}
131
170
  ref={forwardedRef}
132
171
  className={classNames('rt-reset', 'rt-BaseButton', className)}
133
- {...(shouldPassDisabled && { disabled })}
172
+ {...(shouldPassDisabled && { disabled: nativeDisabled })}
134
173
  {...(isNativeButtonElement && !hasExplicitTypeAttribute ? { type: 'button' } : {})}
135
174
  >
136
175
  {props.loading ? (
@@ -155,7 +194,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props,
155
194
  {/* Centered spinner overlay during loading state */}
156
195
  <Flex asChild align="center" justify="center" position="absolute" inset="0">
157
196
  <span>
158
- <Spinner size={mapResponsiveProp(size, mapButtonSizeToSpinnerSize)} aria-hidden="true" />
197
+ <Spinner aria-hidden="true" />
159
198
  </span>
160
199
  </Flex>
161
200
  </>
@@ -61,22 +61,32 @@
61
61
  * *
62
62
  ***************************************************************************************************/
63
63
 
64
+ /*
65
+ * The box is v2's mark ladder (16/20/24/26): a mark occupies one line of the label beside it.
66
+ * The glyph keeps v1's proportion of the box. The corner keeps v1's ramp off --radius-1,
67
+ * clamped below a circle.
68
+ */
64
69
  @breakpoints {
65
70
  .rt-BaseCheckboxRoot {
66
71
  &:where(.rt-r-size-1) {
67
- --checkbox-size: calc(var(--space-5) * var(--spacing-multiplier-medium));
68
- --checkbox-indicator-size: var(--indicator-icon-size-1);
69
- --checkbox-border-radius: min(calc(var(--radius-1) * var(--spacing-multiplier-small)), var(--checkbox-radius-max));
72
+ --checkbox-size: var(--mark-1, calc(16px * var(--scale)));
73
+ --checkbox-indicator-size: calc(10px * var(--scale));
74
+ --checkbox-border-radius: min(calc(var(--radius-1) * var(--spacing-multiplier-medium)), var(--checkbox-radius-max));
70
75
  }
71
76
  &:where(.rt-r-size-2) {
72
- --checkbox-size: var(--space-5);
73
- --checkbox-indicator-size: var(--indicator-icon-size-2);
77
+ --checkbox-size: var(--mark-2, calc(20px * var(--scale)));
78
+ --checkbox-indicator-size: calc(12px * var(--scale));
74
79
  --checkbox-border-radius: min(calc(var(--radius-1) * var(--spacing-multiplier-medium)), var(--checkbox-radius-max));
75
80
  }
76
81
  &:where(.rt-r-size-3) {
77
- --checkbox-size: calc(var(--space-5) * var(--spacing-multiplier-large));
78
- --checkbox-indicator-size: var(--indicator-icon-size-3);
79
- --checkbox-border-radius: min(calc(var(--radius-1) * var(--spacing-multiplier-medium)), var(--checkbox-radius-max));
82
+ --checkbox-size: var(--mark-3, calc(24px * var(--scale)));
83
+ --checkbox-indicator-size: calc(14px * var(--scale));
84
+ --checkbox-border-radius: min(var(--radius-1), var(--checkbox-radius-max));
85
+ }
86
+ &:where(.rt-r-size-4) {
87
+ --checkbox-size: var(--mark-4, calc(26px * var(--scale)));
88
+ --checkbox-indicator-size: calc(16px * var(--scale));
89
+ --checkbox-border-radius: min(var(--radius-1), var(--checkbox-radius-max));
80
90
  }
81
91
  }
82
92
  }
@@ -246,3 +256,76 @@
246
256
  }
247
257
  }
248
258
  }
259
+
260
+ /***************************************************************************************************
261
+ * *
262
+ * INTERACTION *
263
+ * *
264
+ * Hover is one step up the variant's own ramp, press two. Disabled marks take neither. *
265
+ * *
266
+ ***************************************************************************************************/
267
+
268
+ .rt-BaseCheckboxRoot {
269
+ --checkbox-unchecked-hover: var(--accent-a2);
270
+ --checkbox-unchecked-active: var(--accent-a3);
271
+ --checkbox-checked-hover: var(--accent-4);
272
+ --checkbox-checked-active: var(--accent-5);
273
+
274
+ &:where(.rt-variant-solid) {
275
+ --checkbox-checked-hover: var(--accent-solid-hover);
276
+ --checkbox-checked-active: var(--accent-solid-active);
277
+ }
278
+ &:where(.rt-variant-raised) {
279
+ --checkbox-unchecked-hover: var(--color-surface-solid);
280
+ --checkbox-unchecked-active: var(--accent-3);
281
+ }
282
+ &:where(.rt-variant-soft) {
283
+ --checkbox-unchecked-hover: var(--accent-4);
284
+ --checkbox-unchecked-active: var(--accent-5);
285
+ }
286
+ &:where(.rt-variant-outline) {
287
+ --checkbox-checked-hover: var(--accent-3);
288
+ --checkbox-checked-active: var(--accent-4);
289
+ }
290
+ &:where(.rt-variant-surface) {
291
+ --checkbox-unchecked-hover: var(--accent-3);
292
+ --checkbox-unchecked-active: var(--accent-4);
293
+ }
294
+
295
+ @media (hover: hover) {
296
+ &:where(:hover:not(:disabled, [data-disabled]))::before {
297
+ background-color: var(--checkbox-unchecked-hover);
298
+ }
299
+ &:where(:hover:not(:disabled, [data-disabled])):where([data-state='checked'], [data-state='indeterminate'])::before {
300
+ background-color: var(--checkbox-checked-hover);
301
+ }
302
+ }
303
+ &:where(:active:not(:disabled, [data-disabled]))::before {
304
+ background-color: var(--checkbox-unchecked-active);
305
+ }
306
+ &:where(:active:not(:disabled, [data-disabled])):where([data-state='checked'], [data-state='indeterminate'])::before {
307
+ background-color: var(--checkbox-checked-active);
308
+ }
309
+ &:where(.rt-variant-solid:active:not(:disabled, [data-disabled])):where([data-state='checked'], [data-state='indeterminate'])::before {
310
+ box-shadow: inset 0 0 0 1px var(--checkbox-checked-active);
311
+ }
312
+ @media (hover: hover) {
313
+ &:where(.rt-variant-solid:hover:not(:disabled, [data-disabled])):where([data-state='checked'], [data-state='indeterminate'])::before {
314
+ box-shadow: inset 0 0 0 1px var(--checkbox-checked-hover);
315
+ }
316
+ }
317
+ }
318
+
319
+ /***************************************************************************************************
320
+ * *
321
+ * FOCUS AND DISABLED *
322
+ * *
323
+ ***************************************************************************************************/
324
+
325
+ /* The focus ring lives on Checkbox and CheckboxGroup: CheckboxCards rings its card instead. */
326
+ .rt-BaseCheckboxRoot {
327
+ /* Disabled is a colour remap (per variant above), never opacity; the cursor stays default. */
328
+ &:where(:disabled, [data-disabled]) {
329
+ cursor: default;
330
+ }
331
+ }
@@ -2,7 +2,7 @@ import { colorPropDef } from '../../props/color.prop.js';
2
2
 
3
3
  import type { PropDef } from '../../props/prop-def.js';
4
4
 
5
- const sizes = ['1', '2', '3'] as const;
5
+ const sizes = ['1', '2', '3', '4'] as const;
6
6
  const variants = ['raised', 'solid', 'soft', 'outline', 'surface'] as const;
7
7
 
8
8
  const baseCheckboxPropDefs = {