@womp/kookie-ui 0.23.0 → 0.24.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 (463) hide show
  1. package/components.css +190 -185
  2. package/dist/cjs/components/_internal/base-button.d.ts +11 -1
  3. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/base-button.js +1 -1
  5. package/dist/cjs/components/_internal/base-button.js.map +4 -4
  6. package/dist/cjs/components/_internal/menu-context.d.ts +2 -0
  7. package/dist/cjs/components/_internal/menu-context.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/menu-context.js +1 -1
  9. package/dist/cjs/components/_internal/menu-context.js.map +3 -3
  10. package/dist/cjs/components/_internal/pane-chrome.d.ts +17 -2
  11. package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  13. package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
  14. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  15. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  16. package/dist/cjs/components/accordion.d.ts +2 -2
  17. package/dist/cjs/components/accordion.d.ts.map +1 -1
  18. package/dist/cjs/components/accordion.js +1 -1
  19. package/dist/cjs/components/accordion.js.map +4 -4
  20. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  21. package/dist/cjs/components/alert-dialog.js +1 -1
  22. package/dist/cjs/components/alert-dialog.js.map +3 -3
  23. package/dist/cjs/components/avatar.d.ts +1 -1
  24. package/dist/cjs/components/avatar.d.ts.map +1 -1
  25. package/dist/cjs/components/avatar.js +1 -1
  26. package/dist/cjs/components/avatar.js.map +3 -3
  27. package/dist/cjs/components/avatar.props.d.ts +8 -0
  28. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  29. package/dist/cjs/components/avatar.props.js +1 -1
  30. package/dist/cjs/components/avatar.props.js.map +2 -2
  31. package/dist/cjs/components/blockquote.d.ts +1 -1
  32. package/dist/cjs/components/blockquote.d.ts.map +1 -1
  33. package/dist/cjs/components/blockquote.js +1 -1
  34. package/dist/cjs/components/blockquote.js.map +4 -4
  35. package/dist/cjs/components/button.js +1 -1
  36. package/dist/cjs/components/button.js.map +4 -4
  37. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  38. package/dist/cjs/components/chatbar.js +1 -1
  39. package/dist/cjs/components/chatbar.js.map +4 -4
  40. package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
  41. package/dist/cjs/components/checkbox-group.js +1 -1
  42. package/dist/cjs/components/checkbox-group.js.map +3 -3
  43. package/dist/cjs/components/checkbox-group.primitive.d.ts +12 -5
  44. package/dist/cjs/components/checkbox-group.primitive.d.ts.map +1 -1
  45. package/dist/cjs/components/checkbox-group.primitive.js +1 -1
  46. package/dist/cjs/components/checkbox-group.primitive.js.map +3 -3
  47. package/dist/cjs/components/checkbox.js +1 -1
  48. package/dist/cjs/components/checkbox.js.map +3 -3
  49. package/dist/cjs/components/chip.d.ts.map +1 -1
  50. package/dist/cjs/components/chip.js +1 -1
  51. package/dist/cjs/components/chip.js.map +3 -3
  52. package/dist/cjs/components/code.d.ts.map +1 -1
  53. package/dist/cjs/components/code.js +1 -1
  54. package/dist/cjs/components/code.js.map +2 -2
  55. package/dist/cjs/components/combobox.js +1 -1
  56. package/dist/cjs/components/combobox.js.map +3 -3
  57. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  58. package/dist/cjs/components/context-menu.js +1 -1
  59. package/dist/cjs/components/context-menu.js.map +4 -4
  60. package/dist/cjs/components/dialog.d.ts +1 -1
  61. package/dist/cjs/components/dialog.d.ts.map +1 -1
  62. package/dist/cjs/components/dialog.js +1 -1
  63. package/dist/cjs/components/dialog.js.map +3 -3
  64. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  65. package/dist/cjs/components/dropdown-menu.js +1 -1
  66. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  67. package/dist/cjs/components/icons.d.ts +3 -1
  68. package/dist/cjs/components/icons.d.ts.map +1 -1
  69. package/dist/cjs/components/icons.js +1 -1
  70. package/dist/cjs/components/icons.js.map +3 -3
  71. package/dist/cjs/components/index.d.ts +1 -1
  72. package/dist/cjs/components/index.d.ts.map +1 -1
  73. package/dist/cjs/components/index.js +2 -10
  74. package/dist/cjs/components/index.js.map +4 -4
  75. package/dist/cjs/components/message-scroller.d.ts.map +1 -1
  76. package/dist/cjs/components/message-scroller.js +1 -1
  77. package/dist/cjs/components/message-scroller.js.map +4 -4
  78. package/dist/cjs/components/navbar.d.ts.map +1 -1
  79. package/dist/cjs/components/navbar.js +1 -1
  80. package/dist/cjs/components/navbar.js.map +3 -3
  81. package/dist/cjs/components/notice.d.ts +4 -1
  82. package/dist/cjs/components/notice.d.ts.map +1 -1
  83. package/dist/cjs/components/notice.js +1 -1
  84. package/dist/cjs/components/notice.js.map +4 -4
  85. package/dist/cjs/components/progress.d.ts.map +1 -1
  86. package/dist/cjs/components/progress.js +1 -1
  87. package/dist/cjs/components/progress.js.map +3 -3
  88. package/dist/cjs/components/schemas/button.schema.d.ts +2 -2
  89. package/dist/cjs/components/schemas/toggle.schema.d.ts +1 -1
  90. package/dist/cjs/components/scroll-area.d.ts +3 -1
  91. package/dist/cjs/components/scroll-area.d.ts.map +1 -1
  92. package/dist/cjs/components/scroll-area.js +1 -1
  93. package/dist/cjs/components/scroll-area.js.map +4 -4
  94. package/dist/cjs/components/segmented-control.d.ts +3 -1
  95. package/dist/cjs/components/segmented-control.d.ts.map +1 -1
  96. package/dist/cjs/components/segmented-control.js +1 -1
  97. package/dist/cjs/components/segmented-control.js.map +3 -3
  98. package/dist/cjs/components/select.d.ts.map +1 -1
  99. package/dist/cjs/components/select.js +1 -1
  100. package/dist/cjs/components/select.js.map +3 -3
  101. package/dist/cjs/components/separator.d.ts.map +1 -1
  102. package/dist/cjs/components/separator.js +1 -1
  103. package/dist/cjs/components/separator.js.map +3 -3
  104. package/dist/cjs/components/sheet.d.ts +1 -0
  105. package/dist/cjs/components/sheet.d.ts.map +1 -1
  106. package/dist/cjs/components/sheet.js +1 -1
  107. package/dist/cjs/components/sheet.js.map +3 -3
  108. package/dist/cjs/components/shell.d.ts +12 -1
  109. package/dist/cjs/components/shell.d.ts.map +1 -1
  110. package/dist/cjs/components/shell.js +1 -1
  111. package/dist/cjs/components/shell.js.map +4 -4
  112. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  113. package/dist/cjs/components/sidebar.js +1 -1
  114. package/dist/cjs/components/sidebar.js.map +4 -4
  115. package/dist/cjs/components/slider.d.ts.map +1 -1
  116. package/dist/cjs/components/slider.js +1 -1
  117. package/dist/cjs/components/slider.js.map +3 -3
  118. package/dist/cjs/components/spinner.d.ts.map +1 -1
  119. package/dist/cjs/components/spinner.js +1 -1
  120. package/dist/cjs/components/spinner.js.map +3 -3
  121. package/dist/cjs/components/table.d.ts.map +1 -1
  122. package/dist/cjs/components/table.js +1 -1
  123. package/dist/cjs/components/table.js.map +4 -4
  124. package/dist/cjs/components/tabs.d.ts.map +1 -1
  125. package/dist/cjs/components/tabs.js +1 -1
  126. package/dist/cjs/components/tabs.js.map +2 -2
  127. package/dist/cjs/components/text-area.js +1 -1
  128. package/dist/cjs/components/text-area.js.map +2 -2
  129. package/dist/cjs/components/text-field.js +2 -2
  130. package/dist/cjs/components/text-field.js.map +2 -2
  131. package/dist/cjs/components/toggle.d.ts +3 -2
  132. package/dist/cjs/components/toggle.d.ts.map +1 -1
  133. package/dist/cjs/components/toggle.js +1 -9
  134. package/dist/cjs/components/toggle.js.map +4 -4
  135. package/dist/cjs/components/toolbar.d.ts +80 -8
  136. package/dist/cjs/components/toolbar.d.ts.map +1 -1
  137. package/dist/cjs/components/toolbar.js +1 -1
  138. package/dist/cjs/components/toolbar.js.map +4 -4
  139. package/dist/cjs/components/virtual-menu.d.ts +3 -5
  140. package/dist/cjs/components/virtual-menu.d.ts.map +1 -1
  141. package/dist/cjs/components/virtual-menu.js +1 -1
  142. package/dist/cjs/components/virtual-menu.js.map +3 -3
  143. package/dist/cjs/helpers/extract-margin-props.d.ts +7 -7
  144. package/dist/cjs/hooks/use-scroll-edges.d.ts +4 -2
  145. package/dist/cjs/hooks/use-scroll-edges.d.ts.map +1 -1
  146. package/dist/cjs/hooks/use-scroll-edges.js +1 -1
  147. package/dist/cjs/hooks/use-scroll-edges.js.map +3 -3
  148. package/dist/cjs/index.js +5 -5
  149. package/dist/cjs/index.js.map +4 -4
  150. package/dist/cjs/props/index.js +1 -1
  151. package/dist/cjs/props/index.js.map +2 -2
  152. package/dist/esm/chunk-3VTS4C63.js +2 -0
  153. package/dist/esm/chunk-3VTS4C63.js.map +7 -0
  154. package/dist/esm/chunk-3WE4E2WQ.js +2 -0
  155. package/dist/esm/chunk-3WE4E2WQ.js.map +7 -0
  156. package/dist/esm/chunk-3XUY5WFA.js +2 -0
  157. package/dist/esm/chunk-3XUY5WFA.js.map +7 -0
  158. package/dist/esm/chunk-3XZOE2IQ.js +2 -0
  159. package/dist/esm/chunk-3XZOE2IQ.js.map +7 -0
  160. package/dist/esm/chunk-432YLNB3.js +2 -0
  161. package/dist/esm/chunk-432YLNB3.js.map +7 -0
  162. package/dist/esm/chunk-4QKZYCCH.js +2 -0
  163. package/dist/esm/chunk-4QKZYCCH.js.map +7 -0
  164. package/dist/esm/chunk-4R5EMVB3.js +2 -0
  165. package/dist/esm/chunk-4R5EMVB3.js.map +7 -0
  166. package/dist/esm/chunk-4ZOVV3TY.js +2 -0
  167. package/dist/esm/chunk-4ZOVV3TY.js.map +7 -0
  168. package/dist/esm/{chunk-IX5HIHVI.js → chunk-62ZGP4ET.js} +2 -2
  169. package/dist/esm/{chunk-IX5HIHVI.js.map → chunk-62ZGP4ET.js.map} +3 -3
  170. package/dist/esm/chunk-BGAJ2MDF.js +2 -0
  171. package/dist/esm/chunk-BGAJ2MDF.js.map +7 -0
  172. package/dist/esm/chunk-CHPT42BY.js +2 -0
  173. package/dist/esm/{chunk-Y3JYEEFB.js.map → chunk-CHPT42BY.js.map} +2 -2
  174. package/dist/esm/{chunk-KS4U4VPH.js → chunk-CMHUK7OG.js} +2 -2
  175. package/dist/esm/{chunk-KS4U4VPH.js.map → chunk-CMHUK7OG.js.map} +2 -2
  176. package/dist/esm/chunk-CN6F4REJ.js +2 -0
  177. package/dist/esm/chunk-CN6F4REJ.js.map +7 -0
  178. package/dist/esm/chunk-DUTZUWZP.js +2 -0
  179. package/dist/esm/chunk-DUTZUWZP.js.map +7 -0
  180. package/dist/esm/chunk-FDJV5RXX.js +2 -0
  181. package/dist/esm/chunk-FDJV5RXX.js.map +7 -0
  182. package/dist/esm/chunk-G2JD52O5.js +2 -0
  183. package/dist/esm/{chunk-23KT3D2Z.js.map → chunk-G2JD52O5.js.map} +3 -3
  184. package/dist/esm/{chunk-6DDOR73D.js → chunk-G4ETY2NP.js} +2 -2
  185. package/dist/esm/chunk-GPOCLDBR.js +2 -0
  186. package/dist/esm/chunk-GPOCLDBR.js.map +7 -0
  187. package/dist/esm/chunk-GYP66ZK2.js +2 -0
  188. package/dist/esm/chunk-GYP66ZK2.js.map +7 -0
  189. package/dist/esm/chunk-H5BYPX6V.js +2 -0
  190. package/dist/esm/chunk-H5BYPX6V.js.map +7 -0
  191. package/dist/esm/chunk-H5G7UECV.js +2 -0
  192. package/dist/esm/chunk-H5G7UECV.js.map +7 -0
  193. package/dist/esm/chunk-I4FLQELQ.js +2 -0
  194. package/dist/esm/chunk-I4FLQELQ.js.map +7 -0
  195. package/dist/esm/chunk-JYQGCXXI.js +2 -0
  196. package/dist/esm/chunk-JYQGCXXI.js.map +7 -0
  197. package/dist/esm/chunk-KA5UE2VN.js +2 -0
  198. package/dist/esm/chunk-KA5UE2VN.js.map +7 -0
  199. package/dist/esm/{chunk-QGCXTULQ.js → chunk-KEGCX5VM.js} +2 -2
  200. package/dist/esm/chunk-KVHKPUZ2.js +2 -0
  201. package/dist/esm/chunk-KVHKPUZ2.js.map +7 -0
  202. package/dist/esm/{chunk-FFG32ERA.js → chunk-N3WBEQWL.js} +3 -3
  203. package/dist/esm/chunk-N3WBEQWL.js.map +7 -0
  204. package/dist/esm/{chunk-HKPXDQ2B.js → chunk-NC3CJUE3.js} +2 -2
  205. package/dist/esm/chunk-P2MV6HLA.js +2 -0
  206. package/dist/esm/{chunk-7SS4UUJH.js.map → chunk-P2MV6HLA.js.map} +3 -3
  207. package/dist/esm/chunk-PALE5UWK.js +2 -0
  208. package/dist/esm/{chunk-DSPYHO3L.js.map → chunk-PALE5UWK.js.map} +2 -2
  209. package/dist/esm/chunk-PDMCLVYT.js +2 -0
  210. package/dist/esm/chunk-PDMCLVYT.js.map +7 -0
  211. package/dist/esm/chunk-PM6QY3JO.js +2 -0
  212. package/dist/esm/{chunk-ZEX2DECM.js.map → chunk-PM6QY3JO.js.map} +3 -3
  213. package/dist/esm/chunk-RKZVXVBN.js +2 -0
  214. package/dist/esm/chunk-RKZVXVBN.js.map +7 -0
  215. package/dist/esm/chunk-TXQZ5HLV.js +2 -0
  216. package/dist/esm/chunk-TXQZ5HLV.js.map +7 -0
  217. package/dist/esm/chunk-UKASIY6M.js +2 -0
  218. package/dist/esm/chunk-UKASIY6M.js.map +7 -0
  219. package/dist/esm/{chunk-OJQNLROL.js → chunk-UY6WJUNA.js} +2 -2
  220. package/dist/esm/chunk-V5O3TF57.js +2 -0
  221. package/dist/esm/{chunk-3KQE2PSJ.js.map → chunk-V5O3TF57.js.map} +3 -3
  222. package/dist/esm/chunk-VUNCI6A6.js +2 -0
  223. package/dist/esm/chunk-VUNCI6A6.js.map +7 -0
  224. package/dist/esm/{chunk-JBHRV364.js → chunk-VUPIJNG2.js} +2 -2
  225. package/dist/esm/chunk-W6BN5QLH.js +2 -0
  226. package/dist/esm/{chunk-ZNDCZM5A.js.map → chunk-W6BN5QLH.js.map} +2 -2
  227. package/dist/esm/chunk-WG5ORTIW.js +2 -0
  228. package/dist/esm/chunk-WG5ORTIW.js.map +7 -0
  229. package/dist/esm/chunk-WMVR2XBR.js +2 -0
  230. package/dist/esm/{chunk-XKSU3NLG.js.map → chunk-WMVR2XBR.js.map} +2 -2
  231. package/dist/esm/{chunk-NNZTSXKH.js → chunk-WX7SX5BN.js} +2 -2
  232. package/dist/esm/chunk-XOACTIBL.js +2 -0
  233. package/dist/esm/chunk-XOACTIBL.js.map +7 -0
  234. package/dist/esm/components/_internal/base-button.d.ts +11 -1
  235. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  236. package/dist/esm/components/_internal/base-button.js +1 -1
  237. package/dist/esm/components/_internal/menu-context.d.ts +2 -0
  238. package/dist/esm/components/_internal/menu-context.d.ts.map +1 -1
  239. package/dist/esm/components/_internal/menu-context.js +1 -1
  240. package/dist/esm/components/_internal/pane-chrome.d.ts +17 -2
  241. package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
  242. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  243. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  244. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  245. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  246. package/dist/esm/components/accordion.d.ts +2 -2
  247. package/dist/esm/components/accordion.d.ts.map +1 -1
  248. package/dist/esm/components/accordion.js +1 -1
  249. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  250. package/dist/esm/components/alert-dialog.js +1 -1
  251. package/dist/esm/components/avatar.d.ts +1 -1
  252. package/dist/esm/components/avatar.d.ts.map +1 -1
  253. package/dist/esm/components/avatar.js +1 -1
  254. package/dist/esm/components/avatar.props.d.ts +8 -0
  255. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  256. package/dist/esm/components/avatar.props.js +1 -1
  257. package/dist/esm/components/blockquote.d.ts +1 -1
  258. package/dist/esm/components/blockquote.d.ts.map +1 -1
  259. package/dist/esm/components/blockquote.js +1 -1
  260. package/dist/esm/components/button.js +1 -1
  261. package/dist/esm/components/chatbar.d.ts.map +1 -1
  262. package/dist/esm/components/chatbar.js +1 -1
  263. package/dist/esm/components/checkbox-group.d.ts.map +1 -1
  264. package/dist/esm/components/checkbox-group.js +1 -1
  265. package/dist/esm/components/checkbox-group.primitive.d.ts +12 -5
  266. package/dist/esm/components/checkbox-group.primitive.d.ts.map +1 -1
  267. package/dist/esm/components/checkbox-group.primitive.js +1 -1
  268. package/dist/esm/components/checkbox.js +1 -1
  269. package/dist/esm/components/chip.d.ts.map +1 -1
  270. package/dist/esm/components/chip.js +1 -1
  271. package/dist/esm/components/code.d.ts.map +1 -1
  272. package/dist/esm/components/code.js +1 -1
  273. package/dist/esm/components/combobox.js +1 -1
  274. package/dist/esm/components/context-menu.d.ts.map +1 -1
  275. package/dist/esm/components/context-menu.js +1 -1
  276. package/dist/esm/components/dialog.d.ts +1 -1
  277. package/dist/esm/components/dialog.d.ts.map +1 -1
  278. package/dist/esm/components/dialog.js +1 -1
  279. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  280. package/dist/esm/components/dropdown-menu.js +1 -1
  281. package/dist/esm/components/icons.d.ts +3 -1
  282. package/dist/esm/components/icons.d.ts.map +1 -1
  283. package/dist/esm/components/icons.js +1 -1
  284. package/dist/esm/components/index.d.ts +1 -1
  285. package/dist/esm/components/index.d.ts.map +1 -1
  286. package/dist/esm/components/index.js +1 -1
  287. package/dist/esm/components/message-scroller.d.ts.map +1 -1
  288. package/dist/esm/components/message-scroller.js +1 -1
  289. package/dist/esm/components/navbar.d.ts.map +1 -1
  290. package/dist/esm/components/navbar.js +1 -1
  291. package/dist/esm/components/notice.d.ts +4 -1
  292. package/dist/esm/components/notice.d.ts.map +1 -1
  293. package/dist/esm/components/notice.js +1 -1
  294. package/dist/esm/components/progress.d.ts.map +1 -1
  295. package/dist/esm/components/progress.js +1 -1
  296. package/dist/esm/components/schemas/button.schema.d.ts +2 -2
  297. package/dist/esm/components/schemas/toggle.schema.d.ts +1 -1
  298. package/dist/esm/components/scroll-area.d.ts +3 -1
  299. package/dist/esm/components/scroll-area.d.ts.map +1 -1
  300. package/dist/esm/components/scroll-area.js +1 -1
  301. package/dist/esm/components/segmented-control.d.ts +3 -1
  302. package/dist/esm/components/segmented-control.d.ts.map +1 -1
  303. package/dist/esm/components/segmented-control.js +1 -1
  304. package/dist/esm/components/select.d.ts.map +1 -1
  305. package/dist/esm/components/select.js +1 -1
  306. package/dist/esm/components/separator.d.ts.map +1 -1
  307. package/dist/esm/components/separator.js +1 -1
  308. package/dist/esm/components/sheet.d.ts +1 -0
  309. package/dist/esm/components/sheet.d.ts.map +1 -1
  310. package/dist/esm/components/sheet.js +1 -1
  311. package/dist/esm/components/shell.d.ts +12 -1
  312. package/dist/esm/components/shell.d.ts.map +1 -1
  313. package/dist/esm/components/shell.js +1 -1
  314. package/dist/esm/components/sidebar.d.ts.map +1 -1
  315. package/dist/esm/components/sidebar.js +1 -1
  316. package/dist/esm/components/slider.d.ts.map +1 -1
  317. package/dist/esm/components/slider.js +1 -1
  318. package/dist/esm/components/spinner.d.ts.map +1 -1
  319. package/dist/esm/components/spinner.js +1 -1
  320. package/dist/esm/components/table.d.ts.map +1 -1
  321. package/dist/esm/components/table.js +1 -1
  322. package/dist/esm/components/tabs.d.ts.map +1 -1
  323. package/dist/esm/components/tabs.js +1 -1
  324. package/dist/esm/components/text-area.js +1 -1
  325. package/dist/esm/components/text-field.js +1 -1
  326. package/dist/esm/components/toggle.d.ts +3 -2
  327. package/dist/esm/components/toggle.d.ts.map +1 -1
  328. package/dist/esm/components/toggle.js +1 -1
  329. package/dist/esm/components/toolbar.d.ts +80 -8
  330. package/dist/esm/components/toolbar.d.ts.map +1 -1
  331. package/dist/esm/components/toolbar.js +1 -1
  332. package/dist/esm/components/virtual-menu.d.ts +3 -5
  333. package/dist/esm/components/virtual-menu.d.ts.map +1 -1
  334. package/dist/esm/components/virtual-menu.js +1 -1
  335. package/dist/esm/helpers/extract-margin-props.d.ts +7 -7
  336. package/dist/esm/hooks/index.js +1 -1
  337. package/dist/esm/hooks/use-scroll-edges.d.ts +4 -2
  338. package/dist/esm/hooks/use-scroll-edges.d.ts.map +1 -1
  339. package/dist/esm/hooks/use-scroll-edges.js +1 -1
  340. package/dist/esm/index.js +1 -1
  341. package/dist/esm/props/index.js +1 -1
  342. package/package.json +1 -1
  343. package/src/components/_internal/base-button.tsx +51 -12
  344. package/src/components/_internal/base-sidebar-menu.css +8 -0
  345. package/src/components/_internal/menu-context.tsx +11 -0
  346. package/src/components/_internal/pane-chrome.tsx +45 -8
  347. package/src/components/accordion.css +35 -3
  348. package/src/components/accordion.tsx +12 -16
  349. package/src/components/alert-dialog.tsx +59 -161
  350. package/src/components/avatar.props.tsx +6 -0
  351. package/src/components/avatar.tsx +57 -71
  352. package/src/components/blockquote.tsx +8 -9
  353. package/src/components/chatbar.tsx +27 -20
  354. package/src/components/checkbox-group.primitive.tsx +40 -51
  355. package/src/components/checkbox-group.tsx +1 -9
  356. package/src/components/chip.css +18 -20
  357. package/src/components/chip.tsx +3 -4
  358. package/src/components/code.tsx +3 -2
  359. package/src/components/context-menu.tsx +23 -5
  360. package/src/components/dialog.tsx +59 -160
  361. package/src/components/dropdown-menu.tsx +8 -5
  362. package/src/components/icons.tsx +11 -1
  363. package/src/components/index.tsx +7 -0
  364. package/src/components/message-scroller.tsx +48 -26
  365. package/src/components/navbar.tsx +34 -69
  366. package/src/components/notice.tsx +6 -3
  367. package/src/components/progress.tsx +6 -3
  368. package/src/components/scroll-area.css +28 -2
  369. package/src/components/scroll-area.tsx +49 -3
  370. package/src/components/segmented-control.css +8 -130
  371. package/src/components/segmented-control.tsx +36 -5
  372. package/src/components/select.tsx +23 -3
  373. package/src/components/separator.tsx +13 -1
  374. package/src/components/sheet.css +7 -6
  375. package/src/components/sheet.tsx +76 -143
  376. package/src/components/shell.css +14 -0
  377. package/src/components/shell.tsx +29 -8
  378. package/src/components/sidebar.tsx +27 -16
  379. package/src/components/slider.tsx +51 -32
  380. package/src/components/spinner.tsx +10 -2
  381. package/src/components/table.tsx +18 -5
  382. package/src/components/tabs.css +34 -0
  383. package/src/components/tabs.tsx +0 -2
  384. package/src/components/text-area.css +2 -1
  385. package/src/components/text-area.tsx +1 -1
  386. package/src/components/text-field.tsx +1 -1
  387. package/src/components/toggle.tsx +21 -39
  388. package/src/components/toolbar.css +34 -0
  389. package/src/components/toolbar.tsx +432 -23
  390. package/src/components/virtual-menu.tsx +110 -37
  391. package/src/hooks/use-scroll-edges.ts +11 -2
  392. package/src/styles/utilities/truncate.css +10 -0
  393. package/styles.css +195 -185
  394. package/utilities.css +5 -0
  395. package/dist/esm/chunk-23KT3D2Z.js +0 -2
  396. package/dist/esm/chunk-3JA7SJDT.js +0 -2
  397. package/dist/esm/chunk-3JA7SJDT.js.map +0 -7
  398. package/dist/esm/chunk-3KQE2PSJ.js +0 -2
  399. package/dist/esm/chunk-5BWLY27A.js +0 -2
  400. package/dist/esm/chunk-5BWLY27A.js.map +0 -7
  401. package/dist/esm/chunk-6CK7UTNH.js +0 -2
  402. package/dist/esm/chunk-6CK7UTNH.js.map +0 -7
  403. package/dist/esm/chunk-6RK26HIY.js +0 -2
  404. package/dist/esm/chunk-6RK26HIY.js.map +0 -7
  405. package/dist/esm/chunk-7ESWH773.js +0 -2
  406. package/dist/esm/chunk-7ESWH773.js.map +0 -7
  407. package/dist/esm/chunk-7SS4UUJH.js +0 -2
  408. package/dist/esm/chunk-AB3QCCUM.js +0 -2
  409. package/dist/esm/chunk-AB3QCCUM.js.map +0 -7
  410. package/dist/esm/chunk-BEP4AH5V.js +0 -2
  411. package/dist/esm/chunk-BEP4AH5V.js.map +0 -7
  412. package/dist/esm/chunk-BOL3VVSN.js +0 -2
  413. package/dist/esm/chunk-BOL3VVSN.js.map +0 -7
  414. package/dist/esm/chunk-DBROSD2J.js +0 -2
  415. package/dist/esm/chunk-DBROSD2J.js.map +0 -7
  416. package/dist/esm/chunk-DSPYHO3L.js +0 -2
  417. package/dist/esm/chunk-E2D2VWUI.js +0 -2
  418. package/dist/esm/chunk-E2D2VWUI.js.map +0 -7
  419. package/dist/esm/chunk-EMNSA65L.js +0 -2
  420. package/dist/esm/chunk-EMNSA65L.js.map +0 -7
  421. package/dist/esm/chunk-FFG32ERA.js.map +0 -7
  422. package/dist/esm/chunk-FHPHEIYJ.js +0 -2
  423. package/dist/esm/chunk-FHPHEIYJ.js.map +0 -7
  424. package/dist/esm/chunk-FJFBM7HW.js +0 -2
  425. package/dist/esm/chunk-FJFBM7HW.js.map +0 -7
  426. package/dist/esm/chunk-FYT7TYGS.js +0 -2
  427. package/dist/esm/chunk-FYT7TYGS.js.map +0 -7
  428. package/dist/esm/chunk-GLV7VGBH.js +0 -2
  429. package/dist/esm/chunk-GLV7VGBH.js.map +0 -7
  430. package/dist/esm/chunk-HIKMKGPT.js +0 -2
  431. package/dist/esm/chunk-HIKMKGPT.js.map +0 -7
  432. package/dist/esm/chunk-L2R62BOB.js +0 -2
  433. package/dist/esm/chunk-L2R62BOB.js.map +0 -7
  434. package/dist/esm/chunk-LHIS3UKQ.js +0 -2
  435. package/dist/esm/chunk-LHIS3UKQ.js.map +0 -7
  436. package/dist/esm/chunk-NQDMTOGB.js +0 -2
  437. package/dist/esm/chunk-NQDMTOGB.js.map +0 -7
  438. package/dist/esm/chunk-Q6MFPATL.js +0 -2
  439. package/dist/esm/chunk-Q6MFPATL.js.map +0 -7
  440. package/dist/esm/chunk-QOHJIF25.js +0 -2
  441. package/dist/esm/chunk-QOHJIF25.js.map +0 -7
  442. package/dist/esm/chunk-R4XJNQX5.js +0 -2
  443. package/dist/esm/chunk-R4XJNQX5.js.map +0 -7
  444. package/dist/esm/chunk-UE3HATOA.js +0 -2
  445. package/dist/esm/chunk-UE3HATOA.js.map +0 -7
  446. package/dist/esm/chunk-V32EP3S7.js +0 -2
  447. package/dist/esm/chunk-V32EP3S7.js.map +0 -7
  448. package/dist/esm/chunk-XKSU3NLG.js +0 -2
  449. package/dist/esm/chunk-XRCMPBAY.js +0 -2
  450. package/dist/esm/chunk-XRCMPBAY.js.map +0 -7
  451. package/dist/esm/chunk-Y3JYEEFB.js +0 -2
  452. package/dist/esm/chunk-YZM54IJE.js +0 -2
  453. package/dist/esm/chunk-YZM54IJE.js.map +0 -7
  454. package/dist/esm/chunk-ZEX2DECM.js +0 -2
  455. package/dist/esm/chunk-ZJI2IK7C.js +0 -2
  456. package/dist/esm/chunk-ZJI2IK7C.js.map +0 -7
  457. package/dist/esm/chunk-ZNDCZM5A.js +0 -2
  458. /package/dist/esm/{chunk-6DDOR73D.js.map → chunk-G4ETY2NP.js.map} +0 -0
  459. /package/dist/esm/{chunk-QGCXTULQ.js.map → chunk-KEGCX5VM.js.map} +0 -0
  460. /package/dist/esm/{chunk-HKPXDQ2B.js.map → chunk-NC3CJUE3.js.map} +0 -0
  461. /package/dist/esm/{chunk-OJQNLROL.js.map → chunk-UY6WJUNA.js.map} +0 -0
  462. /package/dist/esm/{chunk-JBHRV364.js.map → chunk-VUPIJNG2.js.map} +0 -0
  463. /package/dist/esm/{chunk-NNZTSXKH.js.map → chunk-WX7SX5BN.js.map} +0 -0
@@ -1,7 +1,9 @@
1
1
  import * as React from 'react';
2
2
  /**
3
- * Publishes how much content is hidden past each block edge of a scroller, as
4
- * `--scroll-overflow-start` and `--scroll-overflow-end` (px) on the element.
3
+ * Publishes how much content is hidden past each edge of a scroller, as
4
+ * `--scroll-overflow-start` and `--scroll-overflow-end` (block axis) and
5
+ * `--scroll-overflow-x-start` and `--scroll-overflow-x-end` (inline axis, from
6
+ * the inline start, so right-to-left reads the same) in px on the element.
5
7
  * The scroll fade reads them, so an edge fades only while content is hidden
6
8
  * there, and the fade ramps in over the first pixels of scrolling.
7
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll-edges.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-scroll-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,OAAO,kDAkCrE"}
1
+ {"version":3,"file":"use-scroll-edges.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-scroll-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,OAAO,kDAyCrE"}
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-5BWLY27A.js";import"../chunk-OS3FCYZY.js";export{a as useScrollEdges};
1
+ import{a}from"../chunk-CN6F4REJ.js";import"../chunk-OS3FCYZY.js";export{a as useScrollEdges};
2
2
  //# sourceMappingURL=use-scroll-edges.js.map
package/dist/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-2KZ4NI3X.js";import{a as qo,b as so}from"./chunk-HT7RFHLW.js";import{a as lo,b as no}from"./chunk-IUER6BNH.js";import"./chunk-MYYXOFU5.js";import{b as xo,c as ao,d as bo,e as co,f as go}from"./chunk-Q6MFPATL.js";import{c as fo}from"./chunk-FFG32ERA.js";import"./chunk-LXTGEI62.js";import{a as to}from"./chunk-BOL3VVSN.js";import{a as po}from"./chunk-BE7LMBBC.js";import{a as mo}from"./chunk-SUPFDIJL.js";import"./chunk-KL73COYX.js";import{a as $}from"./chunk-YEHM3FZN.js";import"./chunk-YHYPIJCR.js";import{h as oo}from"./chunk-DBROSD2J.js";import"./chunk-YXLDRDHW.js";import{e as ro}from"./chunk-KS4U4VPH.js";import"./chunk-TZTUPQYK.js";import{a as eo}from"./chunk-XKSU3NLG.js";import"./chunk-LUNWI377.js";import{h as io}from"./chunk-FHPHEIYJ.js";import{l as ho}from"./chunk-6RK26HIY.js";import{a as _}from"./chunk-GLV7VGBH.js";import"./chunk-PJR6GRZC.js";import{c as X}from"./chunk-6CK7UTNH.js";import{h as Y}from"./chunk-NQDMTOGB.js";import"./chunk-HCBR74BW.js";import{a as Z}from"./chunk-LHIS3UKQ.js";import"./chunk-3QZBWH2A.js";import{g as jo}from"./chunk-YZM54IJE.js";import"./chunk-I53SGTKV.js";import"./chunk-MGQ4A2FI.js";import"./chunk-CLZW2IDD.js";import{a as S}from"./chunk-XEZXKPLE.js";import{a as T}from"./chunk-7SS4UUJH.js";import"./chunk-SKOYHBIE.js";import{c as U}from"./chunk-VVWYAVHM.js";import"./chunk-FVY44PTM.js";import{a as V}from"./chunk-THUBY6L2.js";import"./chunk-STPMPY3X.js";import{a as W}from"./chunk-XTDXXQTB.js";import{a as Q}from"./chunk-PSPENFPH.js";import"./chunk-3BUQ7ADW.js";import{i as ko}from"./chunk-ZEX2DECM.js";import{e as R}from"./chunk-EMNSA65L.js";import"./chunk-7ZOGH5NT.js";import{a as P}from"./chunk-M7I6ISPL.js";import"./chunk-EZYXYLR2.js";import{g as M}from"./chunk-QOHJIF25.js";import{a as L}from"./chunk-MHANZINI.js";import{o as N}from"./chunk-3JA7SJDT.js";import"./chunk-WOR3JCLX.js";import{a as O}from"./chunk-63PQNLFJ.js";import"./chunk-IAEAXIBI.js";import{a as F}from"./chunk-DSPYHO3L.js";import"./chunk-IDOZJVO6.js";import{a as G}from"./chunk-ZNDCZM5A.js";import"./chunk-X4A3XRBY.js";import{l as I}from"./chunk-6DDOR73D.js";import{g as H}from"./chunk-FDHWAC6W.js";import"./chunk-VW46DG7H.js";import"./chunk-25FNCKUM.js";import{n as K}from"./chunk-E2D2VWUI.js";import{a as J}from"./chunk-BEP4AH5V.js";import"./chunk-YIK4ACXS.js";import"./chunk-OA7C34MJ.js";import{a as s}from"./chunk-4BU4R7UM.js";import"./chunk-OSSNMF5U.js";import{m as C}from"./chunk-FYT7TYGS.js";import{b as z,c as A}from"./chunk-L2R62BOB.js";import{a as B}from"./chunk-AGAQC4HH.js";import{c as D}from"./chunk-23KT3D2Z.js";import"./chunk-V32EP3S7.js";import"./chunk-VPSMETY2.js";import{a as E}from"./chunk-HKPXDQ2B.js";import{a as u,b as v,c as w,d as y}from"./chunk-IX5HIHVI.js";import"./chunk-UICSVJ3B.js";import{a as i}from"./chunk-ZJI2IK7C.js";import"./chunk-Y3JYEEFB.js";import{a as j}from"./chunk-FJFBM7HW.js";import{a as k}from"./chunk-Q4IA622Q.js";import"./chunk-BIITGC3Z.js";import{a as q}from"./chunk-QGCXTULQ.js";import{a as n}from"./chunk-2N2AQNJH.js";import{a as l}from"./chunk-KT2CMUS5.js";import"./chunk-H3IAGAEL.js";import"./chunk-NNZTSXKH.js";import{a as t}from"./chunk-ERNM3KVF.js";import{f as x}from"./chunk-HIKMKGPT.js";import"./chunk-OY5NT7VT.js";import{h}from"./chunk-7ESWH773.js";import{a}from"./chunk-MPTTUBFU.js";import"./chunk-LVCUY2OS.js";import"./chunk-MJJ7XDIP.js";import{a as c,b as d,c as g}from"./chunk-PPZY7PJA.js";import"./chunk-PN3RQFSU.js";import"./chunk-F22ZRNWL.js";import"./chunk-DCNHG6VN.js";import{a as b}from"./chunk-4P6TKZCA.js";import"./chunk-XZQSSRTG.js";import"./chunk-WTCZAUFY.js";import"./chunk-VCV7RACK.js";import"./chunk-KEWNXANF.js";import"./chunk-VS2ZWRGO.js";import"./chunk-SBRPXQWH.js";import"./chunk-SJXV4BWZ.js";import"./chunk-N6KH2EOU.js";import"./chunk-DFGY2NZB.js";import"./chunk-FNAE6HUI.js";import"./chunk-3KQE2PSJ.js";import"./chunk-AB3QCCUM.js";import{a as p}from"./chunk-R4XJNQX5.js";import"./chunk-IWCFJJBI.js";import"./chunk-UONSKZQT.js";import"./chunk-5BWLY27A.js";import"./chunk-PS6NEG5A.js";import"./chunk-OJQNLROL.js";import"./chunk-JBHRV364.js";import"./chunk-3J6AUDID.js";import"./chunk-7CUQMU3T.js";import"./chunk-5ROQAZ7J.js";import"./chunk-3PTKPDSA.js";import"./chunk-VXQQ6KXI.js";import"./chunk-2LYX5S7H.js";import"./chunk-HWQ3NTJP.js";import"./chunk-XRCMPBAY.js";import{a as f}from"./chunk-UE3HATOA.js";import"./chunk-HIEGLLY7.js";import{a as e}from"./chunk-BJUCBOGU.js";import"./chunk-KKMOGHIY.js";import"./chunk-NA237RHQ.js";import"./chunk-7FTUTUMD.js";import"./chunk-YLDV2HKZ.js";import"./chunk-P7VSZYG3.js";import{b as o,c as r}from"./chunk-FWB47YCH.js";import"./chunk-3YLYGKFB.js";import"./chunk-NUVUXNHF.js";import"./chunk-EKTVL6SS.js";import"./chunk-BWLCTTTN.js";import"./chunk-KRJTW535.js";import"./chunk-DNOQ6E3W.js";import"./chunk-3XHTJZNP.js";import"./chunk-KZEZDBE7.js";import{a as m}from"./chunk-RWTSGUVJ.js";import"./chunk-RAVZ7F5L.js";import"./chunk-TBZO22XK.js";import"./chunk-5YLKKQFK.js";import"./chunk-ELAW7ZUG.js";import"./chunk-E23RKOQJ.js";import"./chunk-PBFSBHBS.js";import"./chunk-WRWNN2NW.js";import"./chunk-RZCX6IBE.js";import"./chunk-QM3RCK5P.js";import"./chunk-AX5S56DS.js";import"./chunk-NZJGC6ZW.js";import"./chunk-GNTNGLYR.js";import"./chunk-ETQNRMHU.js";import"./chunk-CUNKWFKA.js";import"./chunk-2E4P5XQL.js";import"./chunk-OS3FCYZY.js";export{lo as APPEARANCE_STORAGE_KEY,t as AccessibleIcon,x as Accordion,h as AlertDialog,i as Avatar,j as Blockquote,k as Box,q as Button,s as Card,C as Chatbar,E as Checkbox,D as CheckboxGroup,w as ChevronDownIcon,F as Chip,G as Code,I as Combobox,A as Confirmation,K as ContextMenu,M as Dialog,N as DropdownMenu,e as Flex,O as Grid,a as Heading,P as Image,m as Kbd,Q as Link,ko as MessageScroller,R as Navbar,z as Notice,H as Popover,S as Portal,T as Progress,V as Radio,U as RadioGroup,W as Reset,p as ScrollArea,X as SegmentedControl,Y as Select,Z as Separator,jo as Sheet,io as Shell,ho as Sidebar,_ as Slider,o as Slot,r as Slottable,f as Spinner,$ as Switch,oo as Table,ro as Tabs,b as Text,eo as TextArea,fo as TextField,g as Theme,c as ThemeContext,v as ThickCheckIcon,y as ThickChevronRightIcon,u as ThickDividerHorizontalIcon,to as Toggle,go as Toolbar,ao as ToolbarButton,xo as ToolbarGroup,bo as ToolbarSeparator,co as ToolbarTitle,l as Tooltip,J as VirtualMenu,B as VisuallyHidden,no as appearanceScript,qo as setAppearance,so as useAppearance,L as useBodyPointerEventsCleanup,mo as useLiveAnnouncer,d as useThemeContext,po as useToggleState,n as useTooltipWrapper};
1
+ import"./chunk-2KZ4NI3X.js";import{a as vo}from"./chunk-BE7LMBBC.js";import{a as wo,b as yo}from"./chunk-HT7RFHLW.js";import{a as qo,b as so}from"./chunk-IUER6BNH.js";import{a as uo}from"./chunk-SUPFDIJL.js";import"./chunk-MYYXOFU5.js";import{a as po,c as to,d as xo,e as ao,f as bo,g as co,h as go,i as ho,j as io}from"./chunk-KA5UE2VN.js";import{c as fo}from"./chunk-N3WBEQWL.js";import"./chunk-LXTGEI62.js";import{a as mo}from"./chunk-4QKZYCCH.js";import"./chunk-KL73COYX.js";import{a as $}from"./chunk-YEHM3FZN.js";import"./chunk-YHYPIJCR.js";import{h as oo}from"./chunk-TXQZ5HLV.js";import"./chunk-YXLDRDHW.js";import{e as ro}from"./chunk-CMHUK7OG.js";import"./chunk-TZTUPQYK.js";import{a as eo}from"./chunk-WMVR2XBR.js";import"./chunk-LUNWI377.js";import{h as ko}from"./chunk-VUNCI6A6.js";import{l as jo}from"./chunk-3WE4E2WQ.js";import{a as _}from"./chunk-KVHKPUZ2.js";import"./chunk-PJR6GRZC.js";import{c as X}from"./chunk-PDMCLVYT.js";import{h as Y}from"./chunk-GPOCLDBR.js";import"./chunk-HCBR74BW.js";import{a as Z}from"./chunk-DUTZUWZP.js";import"./chunk-3QZBWH2A.js";import{g as lo}from"./chunk-RKZVXVBN.js";import"./chunk-I53SGTKV.js";import"./chunk-MGQ4A2FI.js";import"./chunk-CLZW2IDD.js";import{a as S}from"./chunk-XEZXKPLE.js";import{a as T}from"./chunk-P2MV6HLA.js";import"./chunk-SKOYHBIE.js";import{c as U}from"./chunk-VVWYAVHM.js";import"./chunk-FVY44PTM.js";import{a as V}from"./chunk-THUBY6L2.js";import"./chunk-STPMPY3X.js";import{a as W}from"./chunk-XTDXXQTB.js";import{a as Q}from"./chunk-PSPENFPH.js";import"./chunk-3BUQ7ADW.js";import{i as no}from"./chunk-PM6QY3JO.js";import{e as R}from"./chunk-H5BYPX6V.js";import"./chunk-7ZOGH5NT.js";import{a as P}from"./chunk-M7I6ISPL.js";import"./chunk-EZYXYLR2.js";import{g as M}from"./chunk-FDJV5RXX.js";import{a as L}from"./chunk-MHANZINI.js";import{o as N}from"./chunk-432YLNB3.js";import"./chunk-WOR3JCLX.js";import{a as O}from"./chunk-63PQNLFJ.js";import"./chunk-IAEAXIBI.js";import{a as F}from"./chunk-PALE5UWK.js";import"./chunk-IDOZJVO6.js";import{a as G}from"./chunk-W6BN5QLH.js";import"./chunk-X4A3XRBY.js";import{l as I}from"./chunk-G4ETY2NP.js";import"./chunk-YIK4ACXS.js";import{g as H}from"./chunk-FDHWAC6W.js";import"./chunk-VW46DG7H.js";import"./chunk-25FNCKUM.js";import{n as K}from"./chunk-3VTS4C63.js";import{a as J}from"./chunk-3XUY5WFA.js";import"./chunk-OA7C34MJ.js";import{a as y}from"./chunk-4BU4R7UM.js";import"./chunk-OSSNMF5U.js";import{m as C}from"./chunk-WG5ORTIW.js";import{b as z,c as A}from"./chunk-I4FLQELQ.js";import{a as B}from"./chunk-AGAQC4HH.js";import{c as D}from"./chunk-G2JD52O5.js";import"./chunk-JYQGCXXI.js";import"./chunk-VPSMETY2.js";import{a as E}from"./chunk-NC3CJUE3.js";import"./chunk-UICSVJ3B.js";import{a as n}from"./chunk-BGAJ2MDF.js";import"./chunk-CHPT42BY.js";import{a as q}from"./chunk-GYP66ZK2.js";import"./chunk-S6GWR6EZ.js";import{a as s}from"./chunk-Q4IA622Q.js";import"./chunk-BIITGC3Z.js";import{a as w}from"./chunk-KEGCX5VM.js";import{a as v}from"./chunk-2N2AQNJH.js";import{a as u}from"./chunk-KT2CMUS5.js";import"./chunk-H3IAGAEL.js";import"./chunk-WX7SX5BN.js";import{a as c}from"./chunk-ERNM3KVF.js";import{f as d}from"./chunk-UKASIY6M.js";import"./chunk-OY5NT7VT.js";import{h as l}from"./chunk-XOACTIBL.js";import{a as g}from"./chunk-MPTTUBFU.js";import"./chunk-LVCUY2OS.js";import"./chunk-MJJ7XDIP.js";import{a as i,b as j,c as k}from"./chunk-PPZY7PJA.js";import"./chunk-PN3RQFSU.js";import"./chunk-F22ZRNWL.js";import"./chunk-DCNHG6VN.js";import{a as h}from"./chunk-4P6TKZCA.js";import"./chunk-XZQSSRTG.js";import"./chunk-WTCZAUFY.js";import"./chunk-VCV7RACK.js";import"./chunk-KEWNXANF.js";import"./chunk-VS2ZWRGO.js";import"./chunk-SBRPXQWH.js";import"./chunk-SJXV4BWZ.js";import"./chunk-N6KH2EOU.js";import"./chunk-DFGY2NZB.js";import"./chunk-FNAE6HUI.js";import"./chunk-V5O3TF57.js";import"./chunk-4ZOVV3TY.js";import{a as b}from"./chunk-3XZOE2IQ.js";import"./chunk-IWCFJJBI.js";import"./chunk-UONSKZQT.js";import"./chunk-CN6F4REJ.js";import"./chunk-PS6NEG5A.js";import"./chunk-UY6WJUNA.js";import"./chunk-VUPIJNG2.js";import"./chunk-3J6AUDID.js";import"./chunk-7CUQMU3T.js";import"./chunk-5ROQAZ7J.js";import"./chunk-3PTKPDSA.js";import"./chunk-VXQQ6KXI.js";import"./chunk-2LYX5S7H.js";import"./chunk-HWQ3NTJP.js";import"./chunk-4R5EMVB3.js";import{a as f}from"./chunk-H5G7UECV.js";import"./chunk-HIEGLLY7.js";import{a as e}from"./chunk-BJUCBOGU.js";import"./chunk-KKMOGHIY.js";import"./chunk-NA237RHQ.js";import"./chunk-7FTUTUMD.js";import"./chunk-YLDV2HKZ.js";import"./chunk-P7VSZYG3.js";import{a as m,b as p,c as t,d as x}from"./chunk-62ZGP4ET.js";import{b as o,c as r}from"./chunk-FWB47YCH.js";import"./chunk-3YLYGKFB.js";import"./chunk-NUVUXNHF.js";import"./chunk-EKTVL6SS.js";import"./chunk-BWLCTTTN.js";import"./chunk-KRJTW535.js";import"./chunk-DNOQ6E3W.js";import"./chunk-3XHTJZNP.js";import"./chunk-KZEZDBE7.js";import{a}from"./chunk-RWTSGUVJ.js";import"./chunk-RAVZ7F5L.js";import"./chunk-TBZO22XK.js";import"./chunk-5YLKKQFK.js";import"./chunk-ELAW7ZUG.js";import"./chunk-E23RKOQJ.js";import"./chunk-PBFSBHBS.js";import"./chunk-WRWNN2NW.js";import"./chunk-RZCX6IBE.js";import"./chunk-QM3RCK5P.js";import"./chunk-AX5S56DS.js";import"./chunk-NZJGC6ZW.js";import"./chunk-GNTNGLYR.js";import"./chunk-ETQNRMHU.js";import"./chunk-CUNKWFKA.js";import"./chunk-2E4P5XQL.js";import"./chunk-OS3FCYZY.js";export{qo as APPEARANCE_STORAGE_KEY,c as AccessibleIcon,d as Accordion,l as AlertDialog,n as Avatar,q as Blockquote,s as Box,w as Button,y as Card,C as Chatbar,E as Checkbox,D as CheckboxGroup,t as ChevronDownIcon,F as Chip,G as Code,I as Combobox,A as Confirmation,K as ContextMenu,M as Dialog,N as DropdownMenu,e as Flex,O as Grid,g as Heading,P as Image,a as Kbd,Q as Link,no as MessageScroller,R as Navbar,z as Notice,H as Popover,S as Portal,T as Progress,V as Radio,U as RadioGroup,W as Reset,b as ScrollArea,X as SegmentedControl,Y as Select,Z as Separator,lo as Sheet,ko as Shell,jo as Sidebar,_ as Slider,o as Slot,r as Slottable,f as Spinner,$ as Switch,oo as Table,ro as Tabs,h as Text,eo as TextArea,fo as TextField,k as Theme,i as ThemeContext,p as ThickCheckIcon,x as ThickChevronRightIcon,m as ThickDividerHorizontalIcon,mo as Toggle,io as Toolbar,xo as ToolbarButton,co as ToolbarFill,to as ToolbarGroup,ao as ToolbarOverflow,go as ToolbarSeparator,bo as ToolbarSlot,ho as ToolbarTitle,u as Tooltip,J as VirtualMenu,B as VisuallyHidden,so as appearanceScript,wo as setAppearance,yo as useAppearance,L as useBodyPointerEventsCleanup,uo as useLiveAnnouncer,j as useThemeContext,vo as useToggleState,po as useToolbarOverflow,v as useTooltipWrapper};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{a as lo}from"../chunk-677CX2QF.js";import{a as jo,b as ko}from"../chunk-LXTGEI62.js";import{a as xo}from"../chunk-YHYPIJCR.js";import{a as ao,b as bo,c as co}from"../chunk-YXLDRDHW.js";import{a as go,b as ho}from"../chunk-TZTUPQYK.js";import{a as io}from"../chunk-LUNWI377.js";import{a as to}from"../chunk-PJR6GRZC.js";import{a as eo,b as fo,c as mo}from"../chunk-HCBR74BW.js";import{a as po}from"../chunk-3QZBWH2A.js";import{a as ro}from"../chunk-CLZW2IDD.js";import{a as $}from"../chunk-SKOYHBIE.js";import{a as oo}from"../chunk-FVY44PTM.js";import"../chunk-STPMPY3X.js";import{a as _}from"../chunk-3BUQ7ADW.js";import"../chunk-WOR3JCLX.js";import{a as Z}from"../chunk-IAEAXIBI.js";import{a as W}from"../chunk-IDOZJVO6.js";import{a as X}from"../chunk-X4A3XRBY.js";import{a as Y}from"../chunk-VW46DG7H.js";import"../chunk-OA7C34MJ.js";import{a as U}from"../chunk-OSSNMF5U.js";import{a as V}from"../chunk-VPSMETY2.js";import"../chunk-UICSVJ3B.js";import{a as Q}from"../chunk-Y3JYEEFB.js";import{a as R}from"../chunk-S6GWR6EZ.js";import{a as S}from"../chunk-BIITGC3Z.js";import"../chunk-6DWDNKLS.js";import{a as T}from"../chunk-H3IAGAEL.js";import{a as N}from"../chunk-LVCUY2OS.js";import{a as P}from"../chunk-DCNHG6VN.js";import{a as O}from"../chunk-XZQSSRTG.js";import{a as J}from"../chunk-WTCZAUFY.js";import"../chunk-VCV7RACK.js";import{a as I}from"../chunk-KEWNXANF.js";import{a as G,b as H}from"../chunk-VS2ZWRGO.js";import{a as K}from"../chunk-SBRPXQWH.js";import{a as L}from"../chunk-SJXV4BWZ.js";import{a as M}from"../chunk-N6KH2EOU.js";import{a as F}from"../chunk-DFGY2NZB.js";import{a as E}from"../chunk-FNAE6HUI.js";import{a as D}from"../chunk-UONSKZQT.js";import{a as n}from"../chunk-HIEGLLY7.js";import{a as l}from"../chunk-KKMOGHIY.js";import{a as k}from"../chunk-NA237RHQ.js";import{a as i}from"../chunk-7FTUTUMD.js";import{a as j}from"../chunk-YLDV2HKZ.js";import{a as d}from"../chunk-P7VSZYG3.js";import{a as g}from"../chunk-NUVUXNHF.js";import{a as h}from"../chunk-EKTVL6SS.js";import{a}from"../chunk-BWLCTTTN.js";import{a as t,b as x}from"../chunk-KRJTW535.js";import{a as q}from"../chunk-DNOQ6E3W.js";import{a as s,b as u,c as v,d as w,e as y,f as z}from"../chunk-3XHTJZNP.js";import{a as A}from"../chunk-RAVZ7F5L.js";import{a as b,b as c}from"../chunk-WRWNN2NW.js";import{a as o}from"../chunk-NZJGC6ZW.js";import{a as B}from"../chunk-GNTNGLYR.js";import{a as C}from"../chunk-ETQNRMHU.js";import{a as r,b as e,c as f,d as m,e as p}from"../chunk-CUNKWFKA.js";import"../chunk-OS3FCYZY.js";export{m as accentColorPropDef,r as accentColors,F as alertDialogContentPropDefs,o as asChildPropDef,Q as avatarPropDefs,R as blockquotePropDefs,S as boxPropDefs,c as breakpointSet,b as breakpoints,a as buttonPropDefs,U as cardPropDefs,V as checkboxGroupRootPropDefs,q as checkboxPropDefs,W as chipPropDefs,X as codePropDefs,f as colorPropDef,y as contextMenuCheckboxItemPropDefs,v as contextMenuContentPropDefs,w as contextMenuItemPropDefs,z as contextMenuRadioItemPropDefs,v as contextMenuSubContentPropDefs,E as dialogContentPropDefs,y as dropdownMenuCheckboxItemPropDefs,u as dropdownMenuContentPropDefs,w as dropdownMenuItemPropDefs,z as dropdownMenuRadioItemPropDefs,v as dropdownMenuSubContentPropDefs,G as emphases,H as emphasisPropDef,l as flexPropDefs,k as gapPropDefs,p as grayAccentColorPropDef,e as grayColors,Z as gridPropDefs,N as headingPropDefs,g as heightPropDefs,A as kbdPropDefs,i as layoutPropDefs,I as leadingTrimPropDef,_ as linkPropDefs,j as marginPropDefs,d as paddingPropDefs,Y as popoverContentPropDefs,$ as progressPropDefs,t as radii,oo as radioGroupRootPropDefs,B as radioPropDefs,x as radiusPropDef,D as scrollAreaPropDefs,ro as segmentedControlRootPropDefs,mo as selectContentPropDefs,eo as selectRootPropDefs,fo as selectTriggerPropDefs,po as separatorPropDefs,lo as shadowPropDefs,to as sliderPropDefs,n as spinnerPropDefs,s as submenuBehaviors,xo as switchPropDefs,co as tableCellPropDefs,ao as tableRootPropDefs,bo as tableRowPropDefs,ho as tabsContentPropDefs,C as tabsListPropDefs,go as tabsRootPropDefs,J as textAlignPropDef,io as textAreaPropDefs,jo as textFieldRootPropDefs,ko as textFieldSlotPropDefs,O as textPropDefs,K as textWrapPropDef,P as themePropDefs,T as tooltipPropDefs,L as truncatePropDef,M as weightPropDef,h as widthPropDefs};
1
+ import{a as lo}from"../chunk-677CX2QF.js";import{a as jo,b as ko}from"../chunk-LXTGEI62.js";import{a as xo}from"../chunk-YHYPIJCR.js";import{a as ao,b as bo,c as co}from"../chunk-YXLDRDHW.js";import{a as go,b as ho}from"../chunk-TZTUPQYK.js";import{a as io}from"../chunk-LUNWI377.js";import{a as to}from"../chunk-PJR6GRZC.js";import{a as eo,b as fo,c as mo}from"../chunk-HCBR74BW.js";import{a as po}from"../chunk-3QZBWH2A.js";import{a as ro}from"../chunk-CLZW2IDD.js";import{a as $}from"../chunk-SKOYHBIE.js";import{a as oo}from"../chunk-FVY44PTM.js";import"../chunk-STPMPY3X.js";import{a as _}from"../chunk-3BUQ7ADW.js";import"../chunk-WOR3JCLX.js";import{a as Z}from"../chunk-IAEAXIBI.js";import{a as W}from"../chunk-IDOZJVO6.js";import{a as X}from"../chunk-X4A3XRBY.js";import{a as Y}from"../chunk-VW46DG7H.js";import"../chunk-OA7C34MJ.js";import{a as U}from"../chunk-OSSNMF5U.js";import{a as V}from"../chunk-VPSMETY2.js";import"../chunk-UICSVJ3B.js";import{a as Q}from"../chunk-CHPT42BY.js";import{a as R}from"../chunk-S6GWR6EZ.js";import{a as S}from"../chunk-BIITGC3Z.js";import"../chunk-6DWDNKLS.js";import{a as T}from"../chunk-H3IAGAEL.js";import{a as N}from"../chunk-LVCUY2OS.js";import{a as P}from"../chunk-DCNHG6VN.js";import{a as O}from"../chunk-XZQSSRTG.js";import{a as J}from"../chunk-WTCZAUFY.js";import"../chunk-VCV7RACK.js";import{a as I}from"../chunk-KEWNXANF.js";import{a as G,b as H}from"../chunk-VS2ZWRGO.js";import{a as K}from"../chunk-SBRPXQWH.js";import{a as L}from"../chunk-SJXV4BWZ.js";import{a as M}from"../chunk-N6KH2EOU.js";import{a as F}from"../chunk-DFGY2NZB.js";import{a as E}from"../chunk-FNAE6HUI.js";import{a as D}from"../chunk-UONSKZQT.js";import{a as n}from"../chunk-HIEGLLY7.js";import{a as l}from"../chunk-KKMOGHIY.js";import{a as k}from"../chunk-NA237RHQ.js";import{a as i}from"../chunk-7FTUTUMD.js";import{a as j}from"../chunk-YLDV2HKZ.js";import{a as d}from"../chunk-P7VSZYG3.js";import{a as g}from"../chunk-NUVUXNHF.js";import{a as h}from"../chunk-EKTVL6SS.js";import{a}from"../chunk-BWLCTTTN.js";import{a as t,b as x}from"../chunk-KRJTW535.js";import{a as q}from"../chunk-DNOQ6E3W.js";import{a as s,b as u,c as v,d as w,e as y,f as z}from"../chunk-3XHTJZNP.js";import{a as A}from"../chunk-RAVZ7F5L.js";import{a as b,b as c}from"../chunk-WRWNN2NW.js";import{a as o}from"../chunk-NZJGC6ZW.js";import{a as B}from"../chunk-GNTNGLYR.js";import{a as C}from"../chunk-ETQNRMHU.js";import{a as r,b as e,c as f,d as m,e as p}from"../chunk-CUNKWFKA.js";import"../chunk-OS3FCYZY.js";export{m as accentColorPropDef,r as accentColors,F as alertDialogContentPropDefs,o as asChildPropDef,Q as avatarPropDefs,R as blockquotePropDefs,S as boxPropDefs,c as breakpointSet,b as breakpoints,a as buttonPropDefs,U as cardPropDefs,V as checkboxGroupRootPropDefs,q as checkboxPropDefs,W as chipPropDefs,X as codePropDefs,f as colorPropDef,y as contextMenuCheckboxItemPropDefs,v as contextMenuContentPropDefs,w as contextMenuItemPropDefs,z as contextMenuRadioItemPropDefs,v as contextMenuSubContentPropDefs,E as dialogContentPropDefs,y as dropdownMenuCheckboxItemPropDefs,u as dropdownMenuContentPropDefs,w as dropdownMenuItemPropDefs,z as dropdownMenuRadioItemPropDefs,v as dropdownMenuSubContentPropDefs,G as emphases,H as emphasisPropDef,l as flexPropDefs,k as gapPropDefs,p as grayAccentColorPropDef,e as grayColors,Z as gridPropDefs,N as headingPropDefs,g as heightPropDefs,A as kbdPropDefs,i as layoutPropDefs,I as leadingTrimPropDef,_ as linkPropDefs,j as marginPropDefs,d as paddingPropDefs,Y as popoverContentPropDefs,$ as progressPropDefs,t as radii,oo as radioGroupRootPropDefs,B as radioPropDefs,x as radiusPropDef,D as scrollAreaPropDefs,ro as segmentedControlRootPropDefs,mo as selectContentPropDefs,eo as selectRootPropDefs,fo as selectTriggerPropDefs,po as separatorPropDefs,lo as shadowPropDefs,to as sliderPropDefs,n as spinnerPropDefs,s as submenuBehaviors,xo as switchPropDefs,co as tableCellPropDefs,ao as tableRootPropDefs,bo as tableRowPropDefs,ho as tabsContentPropDefs,C as tabsListPropDefs,go as tabsRootPropDefs,J as textAlignPropDef,io as textAreaPropDefs,jo as textFieldRootPropDefs,ko as textFieldSlotPropDefs,O as textPropDefs,K as textWrapPropDef,P as themePropDefs,T as tooltipPropDefs,L as truncatePropDef,M as weightPropDef,h as widthPropDefs};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@womp/kookie-ui",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "Kookie UI v1: a React component library with design tokens, flexible theming, a full layout shell, and comprehensive documentation.",
5
5
  "keywords": [
6
6
  "react",
@@ -6,6 +6,7 @@ import { useComposedRefs, useLayoutEffect } from 'radix-ui/internal';
6
6
  import { baseButtonPropDefs } from './base-button.props.js';
7
7
  import { Flex } from '../flex.js';
8
8
  import { Spinner } from '../spinner.js';
9
+ import { TickIcon } from '../icons.js';
9
10
  import { extractProps } from '../../helpers/extract-props.js';
10
11
  import { useThemeSizeProps } from '../../helpers/theme-size.js';
11
12
 
@@ -24,7 +25,19 @@ type PolymorphicBaseButtonProps<C extends React.ElementType = 'button'> = {
24
25
  /** Element type to render as (e.g., 'a', 'span', etc.) */
25
26
  as?: C;
26
27
  } & BaseButtonOwnProps &
27
- ComponentPropsWithout<C, RemovedProps | keyof BaseButtonOwnProps | 'as'>;
28
+ BaseButtonDoneProps &
29
+ ComponentPropsWithout<C, RemovedProps | keyof BaseButtonOwnProps | 'as' | 'done'>;
30
+
31
+ interface BaseButtonDoneProps {
32
+ /**
33
+ * Shows a tick in place of the icon to say that the action finished. The tick takes the
34
+ * icon's box, so nothing moves, and the icon comes back as soon as `done` is false again. On
35
+ * an `iconOnly` button the tick replaces the content. It doesn't block the press. Screen
36
+ * readers don't announce the tick, so also change the label or `aria-label` (for example,
37
+ * `Copy` to `Copied`).
38
+ */
39
+ done?: boolean;
40
+ }
28
41
 
29
42
  /**
30
43
  * BaseButton props interface that combines all available props
@@ -67,6 +80,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
67
80
  color,
68
81
  radius,
69
82
  disabled: nativeDisabled,
83
+ done = false,
70
84
  ...baseButtonProps
71
85
  } = extractProps(props, baseButtonPropDefs);
72
86
 
@@ -101,13 +115,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
101
115
  const content =
102
116
  asChild && React.isValidElement(children) ? (children.props as { children?: React.ReactNode }).children : children;
103
117
  // Fragments are see-through: their own first and last children are the edges.
104
- const flatten = (nodes: React.ReactNode): React.ReactNode[] =>
105
- React.Children.toArray(nodes).flatMap((node) =>
106
- React.isValidElement(node) && node.type === React.Fragment
107
- ? flatten((node.props as { children?: React.ReactNode }).children)
108
- : [node],
109
- );
110
- const items = flatten(content);
118
+ const items = flattenFragments(content);
111
119
  const isIcon = (node: React.ReactNode) => React.isValidElement(node) && node.type === 'svg';
112
120
  return { iconStart: isIcon(items[0]), iconEnd: isIcon(items[items.length - 1]) };
113
121
  }, [asChild, children]);
@@ -116,14 +124,35 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
116
124
  const composedRef = useComposedRefs(forwardedRef, elementRef as React.Ref<BaseButtonElement>);
117
125
  useLayoutEffect(() => {
118
126
  const element = elementRef.current;
119
- // While loading the label sits in a wrapper; keep the edges read before it.
120
- if (!element || loading) return;
127
+ // While loading the label sits in a wrapper, and while done the tick stands at the start;
128
+ // keep the edges read before either.
129
+ if (!element || loading || done) return;
121
130
  const iconStart = edgeIsSvg(element, 'start');
122
131
  const iconEnd = edgeIsSvg(element, 'end');
123
132
  setDomEdges((prev) => (prev && prev.iconStart === iconStart && prev.iconEnd === iconEnd ? prev : { iconStart, iconEnd }));
124
133
  });
125
134
  const { iconStart, iconEnd } = domEdges ?? childEdges;
126
135
 
136
+ // Done swaps the icon for a tick in the same place: the leading icon when there is one, the
137
+ // whole content on an icon-only button. Without a leading icon the tick goes before the label.
138
+ const iconOnly = Boolean((baseButtonProps as Record<string, unknown>)['data-icon-only']);
139
+ const content = React.useMemo(() => {
140
+ if (!done) return children;
141
+ const tick = <TickIcon key="kui-done-tick" className="kui-BaseButtonTick" aria-hidden />;
142
+ const swap = (nodes: React.ReactNode): React.ReactNode => {
143
+ if (iconOnly) return tick;
144
+ const items = flattenFragments(nodes);
145
+ const first = items.findIndex((node) => !(typeof node === 'string' && !node.trim()));
146
+ if (iconStart && first !== -1) return items.map((node, index) => (index === first ? tick : node));
147
+ return [tick, ...items];
148
+ };
149
+ if (asChild && React.isValidElement(children)) {
150
+ const element = children as React.ReactElement<{ children?: React.ReactNode }>;
151
+ return React.cloneElement(element, undefined, swap(element.props.children));
152
+ }
153
+ return swap(children);
154
+ }, [done, children, iconOnly, iconStart, asChild]);
155
+
127
156
  // asChild takes precedence over as prop for Radix Slot integration
128
157
  // When asChild is true, we use Slot.Root to merge props onto the child element
129
158
  // When asChild is false, we render as the specified element (or button by default)
@@ -167,6 +196,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
167
196
  data-radius={radius}
168
197
  data-icon-start={iconStart || undefined}
169
198
  data-icon-end={iconEnd || undefined}
199
+ data-done={done || undefined}
170
200
  {...baseButtonProps}
171
201
  {...accessibilityProps}
172
202
  // After the spread: `data-disabled` styles `<Button asChild disabled>`, and a wrapping
@@ -189,7 +219,7 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
189
219
  * Both are classes, not style attributes, so a loading button carries no inline style.
190
220
  */}
191
221
  <span className="kui-BaseButtonContent" aria-hidden>
192
- {children}
222
+ {content}
193
223
  </span>
194
224
 
195
225
  {/* The label stays the name; the hidden "Loading" only describes (aria-describedby reads hidden text). */}
@@ -208,13 +238,22 @@ const BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((ownProp
208
238
  </Flex>
209
239
  </>
210
240
  ) : (
211
- children
241
+ content
212
242
  )}
213
243
  </Comp>
214
244
  );
215
245
  });
216
246
  BaseButton.displayName = 'BaseButton';
217
247
 
248
+ /** The child list with fragments opened up: a fragment's own children are the edges. */
249
+ function flattenFragments(nodes: React.ReactNode): React.ReactNode[] {
250
+ return React.Children.toArray(nodes).flatMap((node) =>
251
+ React.isValidElement(node) && node.type === React.Fragment
252
+ ? flattenFragments((node.props as { children?: React.ReactNode }).children)
253
+ : [node],
254
+ );
255
+ }
256
+
218
257
  /** Whether the first or last rendered node of `element` (blank text and comments skipped) is an svg. */
219
258
  function edgeIsSvg(element: Element, edge: 'start' | 'end'): boolean {
220
259
  let node = edge === 'start' ? element.firstChild : element.lastChild;
@@ -185,3 +185,11 @@
185
185
  margin-top: 1px;
186
186
  margin-bottom: 1px;
187
187
  }
188
+
189
+ /* A sub-menu's rows are list items, so their list is a list. Zero specificity: only the UA's
190
+ list indent is removed. */
191
+ :where(.kui-SidebarMenuSubList) {
192
+ list-style: none;
193
+ margin-block: 0;
194
+ padding: 0;
195
+ }
@@ -61,3 +61,14 @@ export function MenuProvider({ children, size }: MenuProviderProps) {
61
61
  export function useMenuContext() {
62
62
  return React.useContext(MenuContext);
63
63
  }
64
+
65
+ /**
66
+ * Closes the whole menu from inside it. DropdownMenu.Root and ContextMenu.Root provide it,
67
+ * so a VirtualMenu row can close the menu on select the way a menu item does.
68
+ */
69
+ const MenuCloseContext = React.createContext<(() => void) | undefined>(undefined);
70
+ export const MenuCloseProvider = MenuCloseContext.Provider;
71
+
72
+ export function useMenuClose() {
73
+ return React.useContext(MenuCloseContext);
74
+ }
@@ -13,6 +13,7 @@ import * as React from 'react';
13
13
  import classNames from 'classnames';
14
14
 
15
15
  import { ScrollArea } from '../scroll-area.js';
16
+ import { ShellStoreContext } from './shell-store.js';
16
17
 
17
18
  type PaneSize = '1' | '2' | '3';
18
19
 
@@ -33,6 +34,13 @@ function useSidebarVisual() {
33
34
  /** The Shell's index. `Shell.Root size` sets it; panes hand it to their chrome. */
34
35
  const ShellSizeContext = React.createContext<PaneSize>('2');
35
36
 
37
+ /**
38
+ * True inside `Shell.Content`. `Shell.Root` sets it back to false, so a Shell nested in the
39
+ * content gets pane chrome in its own panes. Read by `Shell.Scroll`: in the content it holds a
40
+ * page, not a menu, so it takes none of the menu's padding, gap or layering.
41
+ */
42
+ const ShellContentContext = React.createContext(false);
43
+
36
44
  /**
37
45
  * Gives a Shell pane's children the Shell's index, so Sidebar parts size themselves. In a Rail
38
46
  * the rows are `thin`: icon tiles with a small label, sub-menus as dropdowns.
@@ -60,12 +68,11 @@ type BandSize = '1' | '2' | '3' | '4';
60
68
  */
61
69
  const BAND_STEP = { '1': '2', '2': '3', '3': '4', '4': '4' } as const satisfies Record<BandSize, BandSize>;
62
70
 
63
- /** Set by `Shell.PaneHeader` and `Shell.PaneFooter`; read by Toolbar as its fallback size. Null elsewhere. */
64
- const PaneBandSizeContext = React.createContext<BandSize | null>(null);
65
-
66
- function usePaneBandSize() {
67
- return React.useContext(PaneBandSizeContext);
68
- }
71
+ /**
72
+ * Set by `Shell.PaneHeader` and `Shell.PaneFooter` to their band size, and by `Shell.Scroll` to
73
+ * null (a scrolling list has no band). Unset (`undefined`) everywhere else.
74
+ */
75
+ const PaneBandSizeContext = React.createContext<BandSize | null | undefined>(undefined);
69
76
 
70
77
  function useBandSize(): BandSize {
71
78
  const visual = useSidebarVisual();
@@ -73,6 +80,22 @@ function useBandSize(): BandSize {
73
80
  return BAND_STEP[visual?.size ?? shellSize];
74
81
  }
75
82
 
83
+ /**
84
+ * The size a Toolbar with no `size` of its own rests at, or null for none.
85
+ *
86
+ * In a pane's header or footer it is that band's size. Anywhere else inside a Shell, such as
87
+ * `Shell.Content` or a pane's body, it is the same step: one above the Shell's index, so a
88
+ * toolbar in the content area matches the ones in the pane headers beside it (v2 sizes every
89
+ * toolbar this way). A pane's scrolling list, and anything outside a Shell, has none.
90
+ */
91
+ function usePaneBandSize(): BandSize | null {
92
+ const band = React.useContext(PaneBandSizeContext);
93
+ const inShell = React.useContext(ShellStoreContext) !== null;
94
+ const step = useBandSize();
95
+ if (band !== undefined) return band;
96
+ return inShell ? step : null;
97
+ }
98
+
76
99
  interface PaneHeaderProps extends React.ComponentPropsWithoutRef<'div'> {
77
100
  /**
78
101
  * Floats the row over the top of `Shell.Scroll`, so the list scrolls behind it. The list
@@ -129,10 +152,24 @@ interface ScrollProps extends React.ComponentPropsWithoutRef<'div'> {
129
152
 
130
153
  /**
131
154
  * The one region of a pane that scrolls; it takes the room the header and footer leave.
132
- * It is not a landmark: for navigation, pass `role="navigation"` and an `aria-label`.
155
+ * In `Shell.Content` it is the page's scroller, and a `Shell.PaneHeader float` beside it pins
156
+ * the page's toolbar over it. It is not a landmark: for navigation, pass `role="navigation"` and an `aria-label`.
133
157
  */
134
158
  const Scroll = React.forwardRef<HTMLDivElement, ScrollProps>(({ className, children, fade = false, ...props }, forwardedRef) => {
135
159
  const chrome = useChromeClasses();
160
+ // A Sidebar.Root inside the content still gets a menu.
161
+ const contentPane = React.useContext(ShellContentContext);
162
+ const visual = useSidebarVisual();
163
+ const inContent = contentPane && visual === null;
164
+ if (inContent) {
165
+ return (
166
+ <ScrollArea type="hover" fade={fade} className="kui-ShellScroll">
167
+ <div {...props} ref={forwardedRef} className={classNames('kui-ShellScrollContent', className)}>
168
+ {children}
169
+ </div>
170
+ </ScrollArea>
171
+ );
172
+ }
136
173
  return (
137
174
  <ScrollArea type="hover" fade={fade} className="kui-ShellScroll">
138
175
  <div {...props} ref={forwardedRef} className={classNames('kui-BaseMenuContent', 'kui-SidebarContent', ...chrome, className)}>
@@ -146,5 +183,5 @@ const Scroll = React.forwardRef<HTMLDivElement, ScrollProps>(({ className, child
146
183
  });
147
184
  Scroll.displayName = 'Shell.Scroll';
148
185
 
149
- export { SidebarVisualContext, useSidebarVisual, ShellSizeContext, PaneChromeScope, PaneHeader, PaneFooter, Scroll, BAND_STEP, usePaneBandSize };
186
+ export { SidebarVisualContext, useSidebarVisual, ShellSizeContext, ShellContentContext, PaneChromeScope, PaneHeader, PaneFooter, Scroll, BAND_STEP, usePaneBandSize };
150
187
  export type { SidebarVisualContextValue, PaneSize, BandSize, PaneHeaderProps, PaneFooterProps, ScrollProps };
@@ -12,13 +12,13 @@
12
12
  border-radius: var(--radius-surface-1);
13
13
  }
14
14
  &:where(.kui-r-size-2) {
15
- border-radius: var(--radius-surface-1);
15
+ border-radius: var(--radius-surface-2);
16
16
  }
17
17
  &:where(.kui-r-size-3) {
18
- border-radius: var(--radius-surface-1);
18
+ border-radius: var(--radius-surface-3);
19
19
  }
20
20
  &:where(.kui-r-size-4) {
21
- border-radius: var(--radius-surface-1);
21
+ border-radius: var(--radius-surface-4);
22
22
  }
23
23
  }
24
24
  }
@@ -100,6 +100,38 @@
100
100
  font-size: var(--font-size-4);
101
101
  }
102
102
 
103
+ /* Disclosure chevron: at the far end of the trigger, turned up while the section is open */
104
+ .kui-AccordionChevron {
105
+ flex-shrink: 0;
106
+ width: var(--icon-size-2);
107
+ height: var(--icon-size-2);
108
+ margin-inline-start: var(--space-3);
109
+ color: var(--neutral-a11);
110
+ }
111
+
112
+ :where(.kui-AccordionTrigger[data-state='open']) .kui-AccordionChevron {
113
+ rotate: 180deg;
114
+ }
115
+
116
+ :where(.kui-AccordionRoot:where(.kui-r-size-1)) .kui-AccordionChevron {
117
+ width: var(--icon-size-1);
118
+ height: var(--icon-size-1);
119
+ }
120
+
121
+ :where(.kui-AccordionRoot:where(.kui-r-size-3)) .kui-AccordionChevron {
122
+ width: var(--icon-size-3);
123
+ height: var(--icon-size-3);
124
+ }
125
+
126
+ :where(.kui-AccordionRoot:where(.kui-r-size-4)) .kui-AccordionChevron {
127
+ width: var(--icon-size-4);
128
+ height: var(--icon-size-4);
129
+ }
130
+
131
+ :where(.kui-AccordionTrigger[data-disabled]) .kui-AccordionChevron {
132
+ color: inherit;
133
+ }
134
+
103
135
  /* Trigger hover states */
104
136
  @media (hover: hover) {
105
137
  :where(.kui-AccordionTrigger:hover) {
@@ -9,6 +9,8 @@ import {
9
9
  accordionTriggerPropDefs,
10
10
  accordionContentPropDefs,
11
11
  } from './accordion.props.js';
12
+ import { ChevronDownIcon } from './icons.js';
13
+ import { Slottable } from './slot.js';
12
14
  import { extractProps } from '../helpers/extract-props.js';
13
15
  import { useThemeSizeProps } from '../helpers/theme-size.js';
14
16
 
@@ -23,9 +25,13 @@ import type { ComponentPropsWithout, RemovedProps } from '../helpers/component-p
23
25
 
24
26
  // Root component
25
27
  type AccordionRootElement = React.ElementRef<typeof AccordionPrimitive.Root>;
26
- interface AccordionRootProps
27
- extends ComponentPropsWithout<typeof AccordionPrimitive.Root, RemovedProps>,
28
- AccordionRootOwnProps {}
28
+ // Radix's Root props are a union of single and multiple. Omit each member on its own, so
29
+ // `defaultValue`, `value` and `collapsible` survive with the right type for each `type`.
30
+ type AccordionRootRadixProps =
31
+ | Omit<AccordionPrimitive.AccordionSingleProps, 'asChild' | 'color'>
32
+ | Omit<AccordionPrimitive.AccordionMultipleProps, 'asChild' | 'color'>;
33
+
34
+ type AccordionRootProps = AccordionRootRadixProps & AccordionRootOwnProps;
29
35
 
30
36
  const AccordionRoot = React.forwardRef<AccordionRootElement, AccordionRootProps>(
31
37
  (ownProps, forwardedRef) => {
@@ -133,23 +139,14 @@ const AccordionTrigger = React.forwardRef<AccordionTriggerElement, AccordionTrig
133
139
  ({ children, ...props }, forwardedRef) => {
134
140
  const { className, ...triggerProps } = extractProps(props, accordionTriggerPropDefs);
135
141
 
136
- // Radix UI handles focus management automatically
137
- const triggerRef = React.useRef<HTMLButtonElement>(null);
138
-
139
142
  return (
140
143
  <AccordionPrimitive.Trigger
141
144
  {...triggerProps}
142
- ref={(node) => {
143
- triggerRef.current = node;
144
- if (typeof forwardedRef === 'function') {
145
- forwardedRef(node);
146
- } else if (forwardedRef) {
147
- forwardedRef.current = node;
148
- }
149
- }}
145
+ ref={forwardedRef}
150
146
  className={classNames('kui-AccordionTrigger', className)}
151
147
  >
152
- {children}
148
+ <Slottable>{children}</Slottable>
149
+ <ChevronDownIcon className="kui-AccordionChevron" aria-hidden />
153
150
  </AccordionPrimitive.Trigger>
154
151
  );
155
152
  },
@@ -171,7 +168,6 @@ const AccordionContent = React.forwardRef<AccordionContentElement, AccordionCont
171
168
  {...contentProps}
172
169
  ref={forwardedRef}
173
170
  className={classNames('kui-AccordionContent', className)}
174
- aria-live="polite"
175
171
  >
176
172
  <div className="kui-AccordionContentInner">{children}</div>
177
173
  </AccordionPrimitive.Content>