@womp/kookie-ui 0.26.1 → 0.26.2

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 (670) hide show
  1. package/components.css +26 -1
  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 +3 -3
  5. package/dist/cjs/components/_internal/base-button.props.js +0 -1
  6. package/dist/cjs/components/_internal/base-button.props.js.map +1 -1
  7. package/dist/cjs/components/_internal/base-checkbox.props.js +0 -1
  8. package/dist/cjs/components/_internal/base-checkbox.props.js.map +1 -1
  9. package/dist/cjs/components/_internal/base-menu.props.js +0 -1
  10. package/dist/cjs/components/_internal/base-menu.props.js.map +1 -1
  11. package/dist/cjs/components/_internal/base-radio.props.js +0 -1
  12. package/dist/cjs/components/_internal/base-radio.props.js.map +1 -1
  13. package/dist/cjs/components/_internal/base-tab-list.props.js +0 -1
  14. package/dist/cjs/components/_internal/base-tab-list.props.js.map +1 -1
  15. package/dist/cjs/components/_internal/pane-band-context.d.ts +14 -0
  16. package/dist/cjs/components/_internal/pane-band-context.d.ts.map +1 -0
  17. package/dist/cjs/components/_internal/pane-band-context.js +3 -0
  18. package/dist/cjs/components/_internal/pane-band-context.js.map +7 -0
  19. package/dist/cjs/components/_internal/pane-chrome.d.ts +1 -1
  20. package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
  21. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  22. package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
  23. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  24. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  25. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  26. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  27. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  28. package/dist/cjs/components/accordion.props.js +0 -1
  29. package/dist/cjs/components/accordion.props.js.map +1 -1
  30. package/dist/cjs/components/alert-dialog.js +1 -1
  31. package/dist/cjs/components/alert-dialog.js.map +4 -4
  32. package/dist/cjs/components/alert-dialog.props.js +0 -1
  33. package/dist/cjs/components/alert-dialog.props.js.map +1 -1
  34. package/dist/cjs/components/avatar.props.js +0 -1
  35. package/dist/cjs/components/avatar.props.js.map +1 -1
  36. package/dist/cjs/components/blockquote.props.js +0 -1
  37. package/dist/cjs/components/blockquote.props.js.map +1 -1
  38. package/dist/cjs/components/box.props.js +0 -1
  39. package/dist/cjs/components/box.props.js.map +1 -1
  40. package/dist/cjs/components/button.js +1 -1
  41. package/dist/cjs/components/button.js.map +4 -4
  42. package/dist/cjs/components/button.props.js +0 -1
  43. package/dist/cjs/components/button.props.js.map +1 -1
  44. package/dist/cjs/components/card.props.js +0 -1
  45. package/dist/cjs/components/card.props.js.map +1 -1
  46. package/dist/cjs/components/chatbar.js +1 -1
  47. package/dist/cjs/components/chatbar.js.map +4 -4
  48. package/dist/cjs/components/checkbox-group.props.js +0 -1
  49. package/dist/cjs/components/checkbox-group.props.js.map +1 -1
  50. package/dist/cjs/components/checkbox.props.js +0 -1
  51. package/dist/cjs/components/checkbox.props.js.map +1 -1
  52. package/dist/cjs/components/chip.js +1 -1
  53. package/dist/cjs/components/chip.js.map +4 -4
  54. package/dist/cjs/components/chip.props.js +0 -1
  55. package/dist/cjs/components/chip.props.js.map +1 -1
  56. package/dist/cjs/components/code.props.js +0 -1
  57. package/dist/cjs/components/code.props.js.map +1 -1
  58. package/dist/cjs/components/combobox.js +1 -1
  59. package/dist/cjs/components/combobox.js.map +4 -4
  60. package/dist/cjs/components/combobox.props.js +0 -1
  61. package/dist/cjs/components/combobox.props.js.map +1 -1
  62. package/dist/cjs/components/context-menu.js +1 -1
  63. package/dist/cjs/components/context-menu.js.map +4 -4
  64. package/dist/cjs/components/context-menu.props.js +0 -1
  65. package/dist/cjs/components/context-menu.props.js.map +1 -1
  66. package/dist/cjs/components/dialog.js +1 -1
  67. package/dist/cjs/components/dialog.js.map +4 -4
  68. package/dist/cjs/components/dialog.props.js +0 -1
  69. package/dist/cjs/components/dialog.props.js.map +1 -1
  70. package/dist/cjs/components/dropdown-menu.js +1 -1
  71. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  72. package/dist/cjs/components/dropdown-menu.props.js +0 -1
  73. package/dist/cjs/components/dropdown-menu.props.js.map +1 -1
  74. package/dist/cjs/components/flex.props.js +0 -1
  75. package/dist/cjs/components/flex.props.js.map +1 -1
  76. package/dist/cjs/components/grid.props.js +0 -1
  77. package/dist/cjs/components/grid.props.js.map +1 -1
  78. package/dist/cjs/components/heading.props.js +0 -1
  79. package/dist/cjs/components/heading.props.js.map +1 -1
  80. package/dist/cjs/components/image.props.js +0 -1
  81. package/dist/cjs/components/image.props.js.map +1 -1
  82. package/dist/cjs/components/index.js +2 -2
  83. package/dist/cjs/components/index.js.map +4 -4
  84. package/dist/cjs/components/kbd.props.js +0 -1
  85. package/dist/cjs/components/kbd.props.js.map +1 -1
  86. package/dist/cjs/components/link.props.js +0 -1
  87. package/dist/cjs/components/link.props.js.map +1 -1
  88. package/dist/cjs/components/message-scroller.js +1 -1
  89. package/dist/cjs/components/message-scroller.js.map +4 -4
  90. package/dist/cjs/components/navbar.props.js +0 -1
  91. package/dist/cjs/components/navbar.props.js.map +1 -1
  92. package/dist/cjs/components/notice.js +1 -1
  93. package/dist/cjs/components/notice.js.map +4 -4
  94. package/dist/cjs/components/popover.d.ts.map +1 -1
  95. package/dist/cjs/components/popover.js +1 -1
  96. package/dist/cjs/components/popover.js.map +4 -4
  97. package/dist/cjs/components/popover.props.js +0 -1
  98. package/dist/cjs/components/popover.props.js.map +1 -1
  99. package/dist/cjs/components/progress.props.js +0 -1
  100. package/dist/cjs/components/progress.props.js.map +1 -1
  101. package/dist/cjs/components/radio-group.props.js +0 -1
  102. package/dist/cjs/components/radio-group.props.js.map +1 -1
  103. package/dist/cjs/components/radio.props.js +0 -1
  104. package/dist/cjs/components/radio.props.js.map +1 -1
  105. package/dist/cjs/components/scroll-area.d.ts.map +1 -1
  106. package/dist/cjs/components/scroll-area.js +1 -1
  107. package/dist/cjs/components/scroll-area.js.map +3 -3
  108. package/dist/cjs/components/scroll-area.props.js +0 -1
  109. package/dist/cjs/components/scroll-area.props.js.map +1 -1
  110. package/dist/cjs/components/segmented-control.props.js +0 -1
  111. package/dist/cjs/components/segmented-control.props.js.map +1 -1
  112. package/dist/cjs/components/select.js +1 -1
  113. package/dist/cjs/components/select.js.map +4 -4
  114. package/dist/cjs/components/select.props.js +0 -1
  115. package/dist/cjs/components/select.props.js.map +1 -1
  116. package/dist/cjs/components/separator.props.js +0 -1
  117. package/dist/cjs/components/separator.props.js.map +1 -1
  118. package/dist/cjs/components/sheet.js +1 -1
  119. package/dist/cjs/components/sheet.js.map +4 -4
  120. package/dist/cjs/components/shell.d.ts.map +1 -1
  121. package/dist/cjs/components/shell.js +1 -1
  122. package/dist/cjs/components/shell.js.map +4 -4
  123. package/dist/cjs/components/sidebar.js +1 -1
  124. package/dist/cjs/components/sidebar.js.map +4 -4
  125. package/dist/cjs/components/slider.d.ts.map +1 -1
  126. package/dist/cjs/components/slider.js +1 -1
  127. package/dist/cjs/components/slider.js.map +3 -3
  128. package/dist/cjs/components/slider.props.js +0 -1
  129. package/dist/cjs/components/slider.props.js.map +1 -1
  130. package/dist/cjs/components/spinner.props.js +0 -1
  131. package/dist/cjs/components/spinner.props.js.map +1 -1
  132. package/dist/cjs/components/switch.props.js +0 -1
  133. package/dist/cjs/components/switch.props.js.map +1 -1
  134. package/dist/cjs/components/table.js +1 -1
  135. package/dist/cjs/components/table.js.map +3 -3
  136. package/dist/cjs/components/table.props.js +0 -1
  137. package/dist/cjs/components/table.props.js.map +1 -1
  138. package/dist/cjs/components/tabs.props.js +0 -1
  139. package/dist/cjs/components/tabs.props.js.map +1 -1
  140. package/dist/cjs/components/text-area.d.ts.map +1 -1
  141. package/dist/cjs/components/text-area.js +1 -1
  142. package/dist/cjs/components/text-area.js.map +3 -3
  143. package/dist/cjs/components/text-area.props.js +0 -1
  144. package/dist/cjs/components/text-area.props.js.map +1 -1
  145. package/dist/cjs/components/text-field.d.ts.map +1 -1
  146. package/dist/cjs/components/text-field.js +2 -2
  147. package/dist/cjs/components/text-field.js.map +3 -3
  148. package/dist/cjs/components/text-field.props.js +0 -1
  149. package/dist/cjs/components/text-field.props.js.map +1 -1
  150. package/dist/cjs/components/text.props.js +0 -1
  151. package/dist/cjs/components/text.props.js.map +1 -1
  152. package/dist/cjs/components/theme.d.ts.map +1 -1
  153. package/dist/cjs/components/theme.js +1 -1
  154. package/dist/cjs/components/theme.js.map +4 -4
  155. package/dist/cjs/components/theme.props.js +0 -1
  156. package/dist/cjs/components/theme.props.js.map +1 -1
  157. package/dist/cjs/components/toggle.js +1 -1
  158. package/dist/cjs/components/toggle.js.map +4 -4
  159. package/dist/cjs/components/toolbar.js +1 -1
  160. package/dist/cjs/components/toolbar.js.map +4 -4
  161. package/dist/cjs/components/toolbar.props.d.ts +3 -2
  162. package/dist/cjs/components/toolbar.props.d.ts.map +1 -1
  163. package/dist/cjs/components/toolbar.props.js +0 -1
  164. package/dist/cjs/components/toolbar.props.js.map +2 -2
  165. package/dist/cjs/components/tooltip.js +1 -1
  166. package/dist/cjs/components/tooltip.js.map +4 -4
  167. package/dist/cjs/components/tooltip.props.js +0 -1
  168. package/dist/cjs/components/tooltip.props.js.map +1 -1
  169. package/dist/cjs/hooks/use-scroll-edges.d.ts +9 -0
  170. package/dist/cjs/hooks/use-scroll-edges.d.ts.map +1 -1
  171. package/dist/cjs/hooks/use-scroll-edges.js +1 -1
  172. package/dist/cjs/hooks/use-scroll-edges.js.map +3 -3
  173. package/dist/cjs/index.js +5 -5
  174. package/dist/cjs/index.js.map +4 -4
  175. package/dist/cjs/props/index.js +1 -1
  176. package/dist/cjs/props/index.js.map +4 -4
  177. package/dist/esm/chunk-2ACVWLFA.js +3 -0
  178. package/dist/esm/{chunk-6RJQ5LLP.js → chunk-2TWPPDII.js} +2 -2
  179. package/dist/esm/{chunk-I3SRUPUP.js → chunk-2ZLMWYJ6.js} +2 -3
  180. package/dist/esm/{chunk-I3SRUPUP.js.map → chunk-2ZLMWYJ6.js.map} +1 -1
  181. package/dist/esm/chunk-3C4Q6PMS.js +3 -0
  182. package/dist/esm/{chunk-5XR5PTDR.js.map → chunk-3C4Q6PMS.js.map} +1 -1
  183. package/dist/esm/chunk-3QN4C5LW.js +3 -0
  184. package/dist/esm/{chunk-5EBJOOXE.js.map → chunk-3QN4C5LW.js.map} +4 -4
  185. package/dist/esm/chunk-3W34KH33.js +2 -0
  186. package/dist/esm/{chunk-4S5L25RO.js.map → chunk-3W34KH33.js.map} +1 -1
  187. package/dist/esm/chunk-3ZWHKNHI.js +3 -0
  188. package/dist/esm/chunk-3ZWHKNHI.js.map +7 -0
  189. package/dist/esm/chunk-457Z4R5W.js +3 -0
  190. package/dist/esm/{chunk-5L4DZ2D3.js.map → chunk-457Z4R5W.js.map} +1 -1
  191. package/dist/esm/chunk-4E5XBM5Q.js +2 -0
  192. package/dist/esm/{chunk-IE5ACUZS.js.map → chunk-4E5XBM5Q.js.map} +1 -1
  193. package/dist/esm/{chunk-QH64BDXO.js → chunk-4G3FJUER.js} +2 -2
  194. package/dist/esm/{chunk-R7THBMND.js → chunk-4KIZRO52.js} +1 -1
  195. package/dist/esm/{chunk-W4MQ6TEK.js → chunk-5FWEGTP6.js} +2 -2
  196. package/dist/esm/chunk-5KJIPH2N.js +3 -0
  197. package/dist/esm/chunk-5KJIPH2N.js.map +7 -0
  198. package/dist/esm/chunk-5MEWNLNH.js +3 -0
  199. package/dist/esm/{chunk-3L2MDOYC.js.map → chunk-5MEWNLNH.js.map} +4 -4
  200. package/dist/esm/chunk-5PQCTVZB.js +3 -0
  201. package/dist/esm/{chunk-YD2D73LF.js.map → chunk-5PQCTVZB.js.map} +4 -4
  202. package/dist/esm/chunk-5XA2N2WR.js +2 -0
  203. package/dist/esm/{chunk-R7THBMND.js.map → chunk-5XA2N2WR.js.map} +1 -1
  204. package/dist/esm/chunk-6DWDNKLS.js +1 -0
  205. package/dist/esm/chunk-6M6HGIGN.js +3 -0
  206. package/dist/esm/{chunk-PCLO3ZZY.js.map → chunk-6M6HGIGN.js.map} +4 -4
  207. package/dist/esm/chunk-7QP6JFPO.js +3 -0
  208. package/dist/esm/chunk-7QP6JFPO.js.map +7 -0
  209. package/dist/esm/chunk-ADL3LEOQ.js +3 -0
  210. package/dist/esm/chunk-ADL3LEOQ.js.map +7 -0
  211. package/dist/esm/chunk-AJANJ22M.js +3 -0
  212. package/dist/esm/{chunk-CBWERXF4.js.map → chunk-AJANJ22M.js.map} +4 -4
  213. package/dist/esm/{chunk-I6SMGWS5.js → chunk-AJWCSQIE.js} +2 -3
  214. package/dist/esm/chunk-AJWCSQIE.js.map +7 -0
  215. package/dist/esm/chunk-AKXBXLCP.js +2 -0
  216. package/dist/esm/chunk-AKXBXLCP.js.map +7 -0
  217. package/dist/esm/chunk-BEHAT3GI.js +3 -0
  218. package/dist/esm/{chunk-5CFSNNYS.js.map → chunk-BEHAT3GI.js.map} +4 -4
  219. package/dist/esm/chunk-BF4WRYUX.js +2 -0
  220. package/dist/esm/{chunk-M3NI3D6R.js.map → chunk-BF4WRYUX.js.map} +1 -1
  221. package/dist/esm/{chunk-5WTSKXAE.js → chunk-BIITGC3Z.js} +2 -3
  222. package/dist/esm/{chunk-5WTSKXAE.js.map → chunk-BIITGC3Z.js.map} +1 -1
  223. package/dist/esm/{chunk-NBVCQQSY.js → chunk-BP64M73W.js} +2 -3
  224. package/dist/esm/{chunk-NBVCQQSY.js.map → chunk-BP64M73W.js.map} +1 -1
  225. package/dist/esm/chunk-BQC2P3SN.js +3 -0
  226. package/dist/esm/chunk-BQC2P3SN.js.map +7 -0
  227. package/dist/esm/{chunk-XL5OHW6Z.js → chunk-BVQDDN5Q.js} +2 -2
  228. package/dist/esm/{chunk-YOSCUA6Z.js → chunk-C2WKAIZM.js} +2 -2
  229. package/dist/esm/chunk-CT543Q2V.js +2 -0
  230. package/dist/esm/{chunk-YZZMQ457.js.map → chunk-CT543Q2V.js.map} +1 -1
  231. package/dist/esm/chunk-DFGY2NZB.js +2 -0
  232. package/dist/esm/{chunk-SGJKXIWG.js.map → chunk-DFGY2NZB.js.map} +1 -1
  233. package/dist/esm/{chunk-4J7QDLKI.js → chunk-DFLWZOQO.js} +2 -3
  234. package/dist/esm/{chunk-4J7QDLKI.js.map → chunk-DFLWZOQO.js.map} +1 -1
  235. package/dist/esm/chunk-DG2KIH54.js +6 -0
  236. package/dist/esm/chunk-DG2KIH54.js.map +7 -0
  237. package/dist/esm/chunk-DIY2XQKR.js +3 -0
  238. package/dist/esm/{chunk-OQWD63AI.js.map → chunk-DIY2XQKR.js.map} +4 -4
  239. package/dist/esm/chunk-DQCE7DHY.js +3 -0
  240. package/dist/esm/{chunk-ILWS2JUE.js.map → chunk-DQCE7DHY.js.map} +4 -4
  241. package/dist/esm/{chunk-7B3XDZXZ.js → chunk-E6BDD3PN.js} +2 -2
  242. package/dist/esm/chunk-EERKYRYI.js +3 -0
  243. package/dist/esm/{chunk-BXZSJKWA.js.map → chunk-EERKYRYI.js.map} +4 -4
  244. package/dist/esm/chunk-EFXHBH3A.js +2 -0
  245. package/dist/esm/{chunk-XMHNOIPB.js.map → chunk-EFXHBH3A.js.map} +1 -1
  246. package/dist/esm/{chunk-6FLLFCBU.js → chunk-ELAW7ZUG.js} +2 -2
  247. package/dist/esm/{chunk-WT2SYGTU.js → chunk-ETQNRMHU.js} +2 -3
  248. package/dist/esm/{chunk-WT2SYGTU.js.map → chunk-ETQNRMHU.js.map} +1 -1
  249. package/dist/esm/chunk-F2722F7B.js +3 -0
  250. package/dist/esm/{chunk-VPRAXHLL.js.map → chunk-F2722F7B.js.map} +4 -4
  251. package/dist/esm/chunk-F364PDDM.js +3 -0
  252. package/dist/esm/chunk-F364PDDM.js.map +7 -0
  253. package/dist/esm/{chunk-PT45Q47V.js → chunk-FATCGZZE.js} +1 -1
  254. package/dist/esm/{chunk-IZIDRDQW.js → chunk-FH6RT6XH.js} +2 -3
  255. package/dist/esm/{chunk-IZIDRDQW.js.map → chunk-FH6RT6XH.js.map} +1 -1
  256. package/dist/esm/chunk-FNAE6HUI.js +2 -0
  257. package/dist/esm/chunk-FNAE6HUI.js.map +7 -0
  258. package/dist/esm/chunk-GE7FRBZ4.js +3 -0
  259. package/dist/esm/chunk-GE7FRBZ4.js.map +7 -0
  260. package/dist/esm/chunk-GOXGRJO6.js +3 -0
  261. package/dist/esm/chunk-GOXGRJO6.js.map +7 -0
  262. package/dist/esm/chunk-H2TSRYQ5.js +3 -0
  263. package/dist/esm/chunk-H2TSRYQ5.js.map +7 -0
  264. package/dist/esm/chunk-H33NTGVF.js +3 -0
  265. package/dist/esm/chunk-H33NTGVF.js.map +7 -0
  266. package/dist/esm/chunk-H3IAGAEL.js +2 -0
  267. package/dist/esm/{chunk-WCGQ4IDE.js.map → chunk-H3IAGAEL.js.map} +1 -1
  268. package/dist/esm/{chunk-PT4KBXXP.js → chunk-HCBR74BW.js} +2 -3
  269. package/dist/esm/{chunk-PT4KBXXP.js.map → chunk-HCBR74BW.js.map} +1 -1
  270. package/dist/esm/{chunk-TGUWRU7N.js → chunk-HIEGLLY7.js} +1 -2
  271. package/dist/esm/{chunk-TGUWRU7N.js.map → chunk-HIEGLLY7.js.map} +1 -1
  272. package/dist/esm/chunk-HSWMHW37.js +2 -0
  273. package/dist/esm/{chunk-SV3CYQY5.js.map → chunk-HSWMHW37.js.map} +1 -1
  274. package/dist/esm/{chunk-NZCAGHCL.js → chunk-HVMRB3AH.js} +2 -2
  275. package/dist/esm/{chunk-IZXML75Y.js → chunk-JQVW4WNN.js} +2 -2
  276. package/dist/esm/chunk-K55IQP5H.js +3 -0
  277. package/dist/esm/{chunk-Y2BTPKK6.js.map → chunk-K55IQP5H.js.map} +4 -4
  278. package/dist/esm/chunk-KQIZMPSW.js +3 -0
  279. package/dist/esm/chunk-KQIZMPSW.js.map +7 -0
  280. package/dist/esm/chunk-KVOWI6SN.js +2 -0
  281. package/dist/esm/{chunk-HV7USGHD.js.map → chunk-KVOWI6SN.js.map} +1 -1
  282. package/dist/esm/{chunk-WZKSLTBH.js → chunk-KVVRFWGQ.js} +2 -2
  283. package/dist/esm/chunk-LFAUMDU5.js +3 -0
  284. package/dist/esm/{chunk-ZPWKWESI.js.map → chunk-LFAUMDU5.js.map} +4 -4
  285. package/dist/esm/chunk-LGZCNQBS.js +3 -0
  286. package/dist/esm/chunk-LGZCNQBS.js.map +7 -0
  287. package/dist/esm/{chunk-VVBSYWUA.js → chunk-LTUW36HM.js} +2 -2
  288. package/dist/esm/{chunk-QQY4WFJL.js → chunk-LUNWI377.js} +2 -3
  289. package/dist/esm/{chunk-QQY4WFJL.js.map → chunk-LUNWI377.js.map} +1 -1
  290. package/dist/esm/chunk-M7IQIKB4.js +3 -0
  291. package/dist/esm/chunk-M7IQIKB4.js.map +7 -0
  292. package/dist/esm/chunk-MS2ONKJJ.js +3 -0
  293. package/dist/esm/{chunk-FCKJD2PW.js.map → chunk-MS2ONKJJ.js.map} +4 -4
  294. package/dist/esm/{chunk-Z563IAE3.js → chunk-N3B6EGXL.js} +2 -2
  295. package/dist/esm/{chunk-PZ6Z7WTR.js → chunk-NNE3KNH4.js} +2 -3
  296. package/dist/esm/{chunk-PZ6Z7WTR.js.map → chunk-NNE3KNH4.js.map} +1 -1
  297. package/dist/esm/{chunk-CKJXTEVO.js → chunk-NR5FQCMU.js} +2 -3
  298. package/dist/esm/{chunk-CKJXTEVO.js.map → chunk-NR5FQCMU.js.map} +1 -1
  299. package/dist/esm/chunk-NS573D6O.js +3 -0
  300. package/dist/esm/chunk-NS573D6O.js.map +7 -0
  301. package/dist/esm/{chunk-CYTPMHSJ.js → chunk-NYBE3U3V.js} +2 -2
  302. package/dist/esm/chunk-OA7C34MJ.js +1 -0
  303. package/dist/esm/{chunk-65KD6WS6.js → chunk-OEPVYHSS.js} +2 -3
  304. package/dist/esm/{chunk-65KD6WS6.js.map → chunk-OEPVYHSS.js.map} +1 -1
  305. package/dist/esm/chunk-ONJYRJ66.js +3 -0
  306. package/dist/esm/chunk-ONJYRJ66.js.map +7 -0
  307. package/dist/esm/{chunk-647DRBXQ.js → chunk-OSSNMF5U.js} +2 -3
  308. package/dist/esm/{chunk-647DRBXQ.js.map → chunk-OSSNMF5U.js.map} +1 -1
  309. package/dist/esm/chunk-OTCVSJT7.js +3 -0
  310. package/dist/esm/chunk-OTCVSJT7.js.map +7 -0
  311. package/dist/esm/{chunk-TDT2CNES.js → chunk-P6UX6FFY.js} +2 -2
  312. package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
  313. package/dist/esm/chunk-PEMFIU3B.js +2 -0
  314. package/dist/esm/{chunk-BOLSK63X.js.map → chunk-PEMFIU3B.js.map} +1 -1
  315. package/dist/esm/chunk-POP5NB33.js +3 -0
  316. package/dist/esm/chunk-POP5NB33.js.map +7 -0
  317. package/dist/esm/{chunk-EY6TCYGG.js → chunk-RAVZ7F5L.js} +2 -3
  318. package/dist/esm/{chunk-EY6TCYGG.js.map → chunk-RAVZ7F5L.js.map} +1 -1
  319. package/dist/esm/chunk-RD4T2MCC.js +3 -0
  320. package/dist/esm/chunk-RD4T2MCC.js.map +7 -0
  321. package/dist/esm/chunk-SKOYHBIE.js +2 -0
  322. package/dist/esm/{chunk-5RFDCAKC.js.map → chunk-SKOYHBIE.js.map} +1 -1
  323. package/dist/esm/chunk-STPMPY3X.js +1 -0
  324. package/dist/esm/chunk-TF6WAIUQ.js +3 -0
  325. package/dist/esm/{chunk-MQEWEAH5.js.map → chunk-TF6WAIUQ.js.map} +4 -4
  326. package/dist/esm/chunk-TFFMELAL.js +3 -0
  327. package/dist/esm/{chunk-37GC4A2O.js.map → chunk-TFFMELAL.js.map} +4 -4
  328. package/dist/esm/{chunk-HHSFAOIO.js → chunk-TFFU435D.js} +2 -2
  329. package/dist/esm/chunk-TFGUTYZK.js +3 -0
  330. package/dist/esm/chunk-TFGUTYZK.js.map +7 -0
  331. package/dist/esm/chunk-TTW3EAQT.js +3 -0
  332. package/dist/esm/chunk-TTW3EAQT.js.map +7 -0
  333. package/dist/esm/{chunk-R4PGFURL.js → chunk-TXVZOS3E.js} +2 -2
  334. package/dist/esm/chunk-TZTUPQYK.js +2 -0
  335. package/dist/esm/{chunk-XVDT6DQZ.js.map → chunk-TZTUPQYK.js.map} +1 -1
  336. package/dist/esm/chunk-UBUGG2OB.js +3 -0
  337. package/dist/esm/{chunk-BVFHJP5E.js.map → chunk-UBUGG2OB.js.map} +4 -4
  338. package/dist/esm/chunk-UG73IGRF.js +3 -0
  339. package/dist/esm/chunk-UG73IGRF.js.map +7 -0
  340. package/dist/esm/chunk-UICSVJ3B.js +1 -0
  341. package/dist/esm/chunk-UJ7JERJ5.js +3 -0
  342. package/dist/esm/chunk-UJ7JERJ5.js.map +7 -0
  343. package/dist/esm/{chunk-5TJH35TF.js → chunk-ULCHGKI3.js} +2 -2
  344. package/dist/esm/chunk-UMYPLUG3.js +2 -0
  345. package/dist/esm/chunk-UMYPLUG3.js.map +7 -0
  346. package/dist/esm/chunk-UONSKZQT.js +2 -0
  347. package/dist/esm/{chunk-M37GE2TE.js.map → chunk-UONSKZQT.js.map} +1 -1
  348. package/dist/esm/{chunk-3B25RLWX.js → chunk-UR5BUNNT.js} +2 -2
  349. package/dist/esm/{chunk-CAAEEHGQ.js → chunk-UUXZ4W6H.js} +2 -3
  350. package/dist/esm/{chunk-CAAEEHGQ.js.map → chunk-UUXZ4W6H.js.map} +1 -1
  351. package/dist/esm/chunk-VCV7RACK.js +2 -0
  352. package/dist/esm/chunk-VCV7RACK.js.map +7 -0
  353. package/dist/esm/chunk-VCZ2GYOF.js +3 -0
  354. package/dist/esm/chunk-VCZ2GYOF.js.map +7 -0
  355. package/dist/esm/chunk-VIVM525H.js +3 -0
  356. package/dist/esm/chunk-VIVM525H.js.map +7 -0
  357. package/dist/esm/{chunk-AQ7VUGQQ.js → chunk-VPUFKJQA.js} +2 -2
  358. package/dist/esm/chunk-VVLUY4WR.js +3 -0
  359. package/dist/esm/chunk-VVLUY4WR.js.map +7 -0
  360. package/dist/esm/{chunk-L4NF3Q2T.js → chunk-VW46DG7H.js} +2 -3
  361. package/dist/esm/{chunk-L4NF3Q2T.js.map → chunk-VW46DG7H.js.map} +1 -1
  362. package/dist/esm/chunk-W4CPV4PO.js +3 -0
  363. package/dist/esm/{chunk-JS23YQ4M.js.map → chunk-W4CPV4PO.js.map} +4 -4
  364. package/dist/esm/chunk-WOR3JCLX.js +1 -0
  365. package/dist/esm/chunk-WOR3JCLX.js.map +7 -0
  366. package/dist/esm/{chunk-FI32HA4X.js → chunk-XDVTHL3S.js} +2 -3
  367. package/dist/esm/{chunk-FI32HA4X.js.map → chunk-XDVTHL3S.js.map} +1 -1
  368. package/dist/esm/{chunk-64EFWPHI.js → chunk-YCLPURTD.js} +1 -1
  369. package/dist/esm/chunk-YHQTFDGN.js +2 -0
  370. package/dist/esm/{chunk-PHWT772P.js.map → chunk-YHQTFDGN.js.map} +1 -1
  371. package/dist/esm/chunk-ZG2XQUOH.js +3 -0
  372. package/dist/esm/{chunk-CV7QQTI3.js → chunk-ZKQCSGL3.js} +2 -2
  373. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  374. package/dist/esm/components/_internal/base-button.js +1 -1
  375. package/dist/esm/components/_internal/base-button.props.js +1 -2
  376. package/dist/esm/components/_internal/base-checkbox.props.js +1 -2
  377. package/dist/esm/components/_internal/base-menu.props.js +1 -2
  378. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  379. package/dist/esm/components/_internal/base-radio.props.js +1 -2
  380. package/dist/esm/components/_internal/base-tab-list.props.js +1 -2
  381. package/dist/esm/components/_internal/menu-context.js +1 -1
  382. package/dist/esm/components/_internal/pane-band-context.d.ts +14 -0
  383. package/dist/esm/components/_internal/pane-band-context.d.ts.map +1 -0
  384. package/dist/esm/components/_internal/pane-band-context.js +3 -0
  385. package/dist/esm/components/_internal/pane-band-context.js.map +7 -0
  386. package/dist/esm/components/_internal/pane-chrome.d.ts +1 -1
  387. package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
  388. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  389. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  390. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  391. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  392. package/dist/esm/components/_internal/shell-pane.js +1 -1
  393. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  394. package/dist/esm/components/accordion.js +1 -1
  395. package/dist/esm/components/accordion.props.js +1 -2
  396. package/dist/esm/components/accordion.props.js.map +4 -4
  397. package/dist/esm/components/alert-dialog.js +1 -1
  398. package/dist/esm/components/alert-dialog.props.js +1 -2
  399. package/dist/esm/components/avatar.js +1 -1
  400. package/dist/esm/components/avatar.props.js +1 -2
  401. package/dist/esm/components/blockquote.js +1 -1
  402. package/dist/esm/components/blockquote.props.js +1 -2
  403. package/dist/esm/components/box.js +1 -1
  404. package/dist/esm/components/box.props.js +1 -2
  405. package/dist/esm/components/button.js +1 -1
  406. package/dist/esm/components/button.props.js +1 -2
  407. package/dist/esm/components/card.js +1 -1
  408. package/dist/esm/components/card.props.js +1 -2
  409. package/dist/esm/components/chatbar.js +1 -1
  410. package/dist/esm/components/checkbox-group.js +1 -1
  411. package/dist/esm/components/checkbox-group.props.js +1 -2
  412. package/dist/esm/components/checkbox.js +1 -1
  413. package/dist/esm/components/checkbox.props.js +1 -2
  414. package/dist/esm/components/chip.js +1 -1
  415. package/dist/esm/components/chip.props.js +1 -2
  416. package/dist/esm/components/code.js +1 -1
  417. package/dist/esm/components/code.props.js +1 -2
  418. package/dist/esm/components/combobox.js +1 -1
  419. package/dist/esm/components/combobox.props.js +1 -2
  420. package/dist/esm/components/combobox.props.js.map +4 -4
  421. package/dist/esm/components/context-menu.js +1 -1
  422. package/dist/esm/components/context-menu.props.js +1 -2
  423. package/dist/esm/components/dialog.js +1 -1
  424. package/dist/esm/components/dialog.props.js +1 -2
  425. package/dist/esm/components/dropdown-menu.js +1 -1
  426. package/dist/esm/components/dropdown-menu.props.js +1 -2
  427. package/dist/esm/components/flex.js +1 -1
  428. package/dist/esm/components/flex.props.js +1 -2
  429. package/dist/esm/components/grid.js +1 -1
  430. package/dist/esm/components/grid.props.js +1 -2
  431. package/dist/esm/components/heading.js +1 -1
  432. package/dist/esm/components/heading.props.js +1 -2
  433. package/dist/esm/components/image.js +1 -1
  434. package/dist/esm/components/image.props.js +1 -2
  435. package/dist/esm/components/image.props.js.map +4 -4
  436. package/dist/esm/components/index.js +1 -1
  437. package/dist/esm/components/kbd.js +1 -1
  438. package/dist/esm/components/kbd.props.js +1 -2
  439. package/dist/esm/components/link.js +1 -1
  440. package/dist/esm/components/link.props.js +1 -2
  441. package/dist/esm/components/message-scroller.js +1 -1
  442. package/dist/esm/components/navbar.js +1 -1
  443. package/dist/esm/components/navbar.props.js +1 -2
  444. package/dist/esm/components/navbar.props.js.map +4 -4
  445. package/dist/esm/components/notice.js +1 -1
  446. package/dist/esm/components/popover.d.ts.map +1 -1
  447. package/dist/esm/components/popover.js +1 -1
  448. package/dist/esm/components/popover.props.js +1 -2
  449. package/dist/esm/components/progress.js +1 -1
  450. package/dist/esm/components/progress.props.js +1 -2
  451. package/dist/esm/components/radio-group.js +1 -1
  452. package/dist/esm/components/radio-group.props.js +1 -2
  453. package/dist/esm/components/radio.js +1 -1
  454. package/dist/esm/components/radio.props.js +1 -2
  455. package/dist/esm/components/scroll-area.d.ts.map +1 -1
  456. package/dist/esm/components/scroll-area.js +1 -1
  457. package/dist/esm/components/scroll-area.props.js +1 -2
  458. package/dist/esm/components/segmented-control.js +1 -1
  459. package/dist/esm/components/segmented-control.props.js +1 -2
  460. package/dist/esm/components/select.js +1 -1
  461. package/dist/esm/components/select.props.js +1 -2
  462. package/dist/esm/components/separator.js +1 -1
  463. package/dist/esm/components/separator.props.js +1 -2
  464. package/dist/esm/components/sheet.js +1 -1
  465. package/dist/esm/components/shell.context.js +1 -1
  466. package/dist/esm/components/shell.d.ts.map +1 -1
  467. package/dist/esm/components/shell.hooks.js +1 -1
  468. package/dist/esm/components/shell.js +1 -1
  469. package/dist/esm/components/sidebar.js +1 -1
  470. package/dist/esm/components/slider.d.ts.map +1 -1
  471. package/dist/esm/components/slider.js +1 -1
  472. package/dist/esm/components/slider.props.js +1 -2
  473. package/dist/esm/components/spinner.js +1 -1
  474. package/dist/esm/components/spinner.props.js +1 -2
  475. package/dist/esm/components/switch.js +1 -1
  476. package/dist/esm/components/switch.props.js +1 -2
  477. package/dist/esm/components/table.js +1 -1
  478. package/dist/esm/components/table.props.js +1 -2
  479. package/dist/esm/components/tabs.js +1 -1
  480. package/dist/esm/components/tabs.props.js +1 -2
  481. package/dist/esm/components/text-area.d.ts.map +1 -1
  482. package/dist/esm/components/text-area.js +1 -1
  483. package/dist/esm/components/text-area.props.js +1 -2
  484. package/dist/esm/components/text-field.d.ts.map +1 -1
  485. package/dist/esm/components/text-field.js +1 -1
  486. package/dist/esm/components/text-field.props.js +1 -2
  487. package/dist/esm/components/text.js +1 -1
  488. package/dist/esm/components/text.props.js +1 -2
  489. package/dist/esm/components/theme.d.ts.map +1 -1
  490. package/dist/esm/components/theme.js +1 -1
  491. package/dist/esm/components/theme.props.js +1 -2
  492. package/dist/esm/components/toggle.js +1 -1
  493. package/dist/esm/components/toolbar.js +1 -1
  494. package/dist/esm/components/toolbar.props.d.ts +3 -2
  495. package/dist/esm/components/toolbar.props.d.ts.map +1 -1
  496. package/dist/esm/components/toolbar.props.js +1 -2
  497. package/dist/esm/components/toolbar.props.js.map +4 -4
  498. package/dist/esm/components/tooltip.js +1 -1
  499. package/dist/esm/components/tooltip.props.js +1 -2
  500. package/dist/esm/components/virtual-menu.js +1 -1
  501. package/dist/esm/helpers/extract-props.js +1 -1
  502. package/dist/esm/helpers/get-margin-styles.js +1 -1
  503. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  504. package/dist/esm/helpers/index.js +1 -1
  505. package/dist/esm/hooks/index.js +1 -1
  506. package/dist/esm/hooks/use-scroll-edges.d.ts +9 -0
  507. package/dist/esm/hooks/use-scroll-edges.d.ts.map +1 -1
  508. package/dist/esm/hooks/use-scroll-edges.js +1 -1
  509. package/dist/esm/index.js +1 -1
  510. package/dist/esm/props/font-family.prop.js +1 -1
  511. package/dist/esm/props/font-family.prop.js.map +4 -4
  512. package/dist/esm/props/index.js +1 -1
  513. package/dist/esm/props/index.js.map +3 -3
  514. package/dist/esm/props/layout.props.js +1 -1
  515. package/package.json +1 -1
  516. package/src/components/_internal/base-button.tsx +8 -2
  517. package/src/components/_internal/pane-band-context.ts +16 -0
  518. package/src/components/_internal/pane-chrome.tsx +1 -8
  519. package/src/components/_internal/shell-bottom.tsx +4 -1
  520. package/src/components/popover.tsx +7 -61
  521. package/src/components/scroll-area.tsx +3 -2
  522. package/src/components/select.css +1 -1
  523. package/src/components/shell.css +11 -3
  524. package/src/components/shell.tsx +8 -1
  525. package/src/components/slider.tsx +19 -1
  526. package/src/components/text-area.css +14 -2
  527. package/src/components/text-area.tsx +34 -26
  528. package/src/components/text-field.css +9 -2
  529. package/src/components/text-field.tsx +44 -28
  530. package/src/components/theme.tsx +30 -24
  531. package/src/components/toolbar.props.tsx +3 -2
  532. package/src/hooks/use-scroll-edges.ts +16 -2
  533. package/src/styles/tokens/color.css +6 -5
  534. package/src/styles/tokens/shadow.css +2 -2
  535. package/styles.css +27 -3
  536. package/tokens/base.css +1 -2
  537. package/tokens.css +1 -2
  538. package/dist/esm/chunk-2IU5XPR2.js +0 -3
  539. package/dist/esm/chunk-2IU5XPR2.js.map +0 -7
  540. package/dist/esm/chunk-37GC4A2O.js +0 -3
  541. package/dist/esm/chunk-3H23GRNQ.js +0 -3
  542. package/dist/esm/chunk-3H23GRNQ.js.map +0 -7
  543. package/dist/esm/chunk-3L2MDOYC.js +0 -3
  544. package/dist/esm/chunk-4S5L25RO.js +0 -3
  545. package/dist/esm/chunk-5CFSNNYS.js +0 -3
  546. package/dist/esm/chunk-5EBJOOXE.js +0 -3
  547. package/dist/esm/chunk-5EP3UTM7.js +0 -3
  548. package/dist/esm/chunk-5EP3UTM7.js.map +0 -7
  549. package/dist/esm/chunk-5L4DZ2D3.js +0 -3
  550. package/dist/esm/chunk-5RFDCAKC.js +0 -3
  551. package/dist/esm/chunk-5XR5PTDR.js +0 -3
  552. package/dist/esm/chunk-63MUJFVF.js +0 -3
  553. package/dist/esm/chunk-63MUJFVF.js.map +0 -7
  554. package/dist/esm/chunk-6AMWYEM7.js +0 -3
  555. package/dist/esm/chunk-6AMWYEM7.js.map +0 -7
  556. package/dist/esm/chunk-6BB2A6VU.js +0 -3
  557. package/dist/esm/chunk-6UZT3ZLO.js +0 -3
  558. package/dist/esm/chunk-6UZT3ZLO.js.map +0 -7
  559. package/dist/esm/chunk-7ROKZHH2.js +0 -3
  560. package/dist/esm/chunk-7ROKZHH2.js.map +0 -7
  561. package/dist/esm/chunk-7X7VWR3F.js +0 -3
  562. package/dist/esm/chunk-7X7VWR3F.js.map +0 -7
  563. package/dist/esm/chunk-7XHE6TOA.js +0 -6
  564. package/dist/esm/chunk-7XHE6TOA.js.map +0 -7
  565. package/dist/esm/chunk-A2OMWZI7.js +0 -2
  566. package/dist/esm/chunk-BOLSK63X.js +0 -3
  567. package/dist/esm/chunk-BVFHJP5E.js +0 -3
  568. package/dist/esm/chunk-BXZSJKWA.js +0 -3
  569. package/dist/esm/chunk-CBWERXF4.js +0 -3
  570. package/dist/esm/chunk-CQG4U5BR.js +0 -3
  571. package/dist/esm/chunk-CQG4U5BR.js.map +0 -7
  572. package/dist/esm/chunk-D4P7332M.js +0 -3
  573. package/dist/esm/chunk-D4P7332M.js.map +0 -7
  574. package/dist/esm/chunk-DVXDFCCV.js +0 -3
  575. package/dist/esm/chunk-DVXDFCCV.js.map +0 -7
  576. package/dist/esm/chunk-EAIQIW23.js +0 -3
  577. package/dist/esm/chunk-EAIQIW23.js.map +0 -7
  578. package/dist/esm/chunk-FCKJD2PW.js +0 -3
  579. package/dist/esm/chunk-FPGBCCML.js +0 -3
  580. package/dist/esm/chunk-FPGBCCML.js.map +0 -7
  581. package/dist/esm/chunk-GNPTPIL7.js +0 -3
  582. package/dist/esm/chunk-GNPTPIL7.js.map +0 -7
  583. package/dist/esm/chunk-HV7USGHD.js +0 -3
  584. package/dist/esm/chunk-IE5ACUZS.js +0 -3
  585. package/dist/esm/chunk-ILWS2JUE.js +0 -3
  586. package/dist/esm/chunk-IO43RGNR.js +0 -3
  587. package/dist/esm/chunk-IO43RGNR.js.map +0 -7
  588. package/dist/esm/chunk-J3QIUJ6F.js +0 -2
  589. package/dist/esm/chunk-JS23YQ4M.js +0 -3
  590. package/dist/esm/chunk-JZ5Z53MN.js +0 -2
  591. package/dist/esm/chunk-KRFXTPEW.js +0 -3
  592. package/dist/esm/chunk-KRFXTPEW.js.map +0 -7
  593. package/dist/esm/chunk-KSYHZCLD.js +0 -3
  594. package/dist/esm/chunk-KSYHZCLD.js.map +0 -7
  595. package/dist/esm/chunk-M37GE2TE.js +0 -3
  596. package/dist/esm/chunk-M3NI3D6R.js +0 -3
  597. package/dist/esm/chunk-MQEWEAH5.js +0 -3
  598. package/dist/esm/chunk-MXIVYALY.js +0 -3
  599. package/dist/esm/chunk-MXIVYALY.js.map +0 -7
  600. package/dist/esm/chunk-N3QLHFHB.js +0 -3
  601. package/dist/esm/chunk-N3QLHFHB.js.map +0 -7
  602. package/dist/esm/chunk-OQWD63AI.js +0 -3
  603. package/dist/esm/chunk-PCLO3ZZY.js +0 -3
  604. package/dist/esm/chunk-PHWT772P.js +0 -3
  605. package/dist/esm/chunk-PZCQDZVJ.js +0 -3
  606. package/dist/esm/chunk-PZCQDZVJ.js.map +0 -7
  607. package/dist/esm/chunk-RVPLXLRA.js +0 -3
  608. package/dist/esm/chunk-RVPLXLRA.js.map +0 -7
  609. package/dist/esm/chunk-SGJKXIWG.js +0 -3
  610. package/dist/esm/chunk-SHLERRO3.js +0 -3
  611. package/dist/esm/chunk-SHLERRO3.js.map +0 -7
  612. package/dist/esm/chunk-SV3CYQY5.js +0 -3
  613. package/dist/esm/chunk-U5GQ3IFS.js +0 -3
  614. package/dist/esm/chunk-U5GQ3IFS.js.map +0 -7
  615. package/dist/esm/chunk-VPRAXHLL.js +0 -3
  616. package/dist/esm/chunk-VRQEWMC6.js +0 -3
  617. package/dist/esm/chunk-VRQEWMC6.js.map +0 -7
  618. package/dist/esm/chunk-WCGQ4IDE.js +0 -3
  619. package/dist/esm/chunk-WH7PQSSG.js +0 -2
  620. package/dist/esm/chunk-WJ4H2O2G.js +0 -3
  621. package/dist/esm/chunk-WJ4H2O2G.js.map +0 -7
  622. package/dist/esm/chunk-WMODMXEU.js +0 -3
  623. package/dist/esm/chunk-WMODMXEU.js.map +0 -7
  624. package/dist/esm/chunk-WMZLMZHB.js +0 -3
  625. package/dist/esm/chunk-WMZLMZHB.js.map +0 -7
  626. package/dist/esm/chunk-XH2CRCXR.js +0 -3
  627. package/dist/esm/chunk-XH2CRCXR.js.map +0 -7
  628. package/dist/esm/chunk-XMHNOIPB.js +0 -3
  629. package/dist/esm/chunk-XVDT6DQZ.js +0 -3
  630. package/dist/esm/chunk-Y2BTPKK6.js +0 -3
  631. package/dist/esm/chunk-YD2D73LF.js +0 -3
  632. package/dist/esm/chunk-YDBFIJHB.js +0 -3
  633. package/dist/esm/chunk-YDBFIJHB.js.map +0 -7
  634. package/dist/esm/chunk-YWG476GC.js +0 -3
  635. package/dist/esm/chunk-YZZMQ457.js +0 -3
  636. package/dist/esm/chunk-Z27REN6T.js +0 -3
  637. package/dist/esm/chunk-Z27REN6T.js.map +0 -7
  638. package/dist/esm/chunk-ZPWKWESI.js +0 -3
  639. package/dist/esm/chunk-ZYKJTNAT.js +0 -3
  640. package/dist/esm/chunk-ZYKJTNAT.js.map +0 -7
  641. /package/dist/esm/{chunk-I6SMGWS5.js.map → chunk-2ACVWLFA.js.map} +0 -0
  642. /package/dist/esm/{chunk-6RJQ5LLP.js.map → chunk-2TWPPDII.js.map} +0 -0
  643. /package/dist/esm/{chunk-QH64BDXO.js.map → chunk-4G3FJUER.js.map} +0 -0
  644. /package/dist/esm/{chunk-6BB2A6VU.js.map → chunk-4KIZRO52.js.map} +0 -0
  645. /package/dist/esm/{chunk-W4MQ6TEK.js.map → chunk-5FWEGTP6.js.map} +0 -0
  646. /package/dist/esm/{chunk-A2OMWZI7.js.map → chunk-6DWDNKLS.js.map} +0 -0
  647. /package/dist/esm/{chunk-XL5OHW6Z.js.map → chunk-BVQDDN5Q.js.map} +0 -0
  648. /package/dist/esm/{chunk-YOSCUA6Z.js.map → chunk-C2WKAIZM.js.map} +0 -0
  649. /package/dist/esm/{chunk-7B3XDZXZ.js.map → chunk-E6BDD3PN.js.map} +0 -0
  650. /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-ELAW7ZUG.js.map} +0 -0
  651. /package/dist/esm/{chunk-PT45Q47V.js.map → chunk-FATCGZZE.js.map} +0 -0
  652. /package/dist/esm/{chunk-NZCAGHCL.js.map → chunk-HVMRB3AH.js.map} +0 -0
  653. /package/dist/esm/{chunk-IZXML75Y.js.map → chunk-JQVW4WNN.js.map} +0 -0
  654. /package/dist/esm/{chunk-WZKSLTBH.js.map → chunk-KVVRFWGQ.js.map} +0 -0
  655. /package/dist/esm/{chunk-VVBSYWUA.js.map → chunk-LTUW36HM.js.map} +0 -0
  656. /package/dist/esm/{chunk-Z563IAE3.js.map → chunk-N3B6EGXL.js.map} +0 -0
  657. /package/dist/esm/{chunk-CYTPMHSJ.js.map → chunk-NYBE3U3V.js.map} +0 -0
  658. /package/dist/esm/{chunk-J3QIUJ6F.js.map → chunk-OA7C34MJ.js.map} +0 -0
  659. /package/dist/esm/{chunk-TDT2CNES.js.map → chunk-P6UX6FFY.js.map} +0 -0
  660. /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
  661. /package/dist/esm/{chunk-JZ5Z53MN.js.map → chunk-STPMPY3X.js.map} +0 -0
  662. /package/dist/esm/{chunk-HHSFAOIO.js.map → chunk-TFFU435D.js.map} +0 -0
  663. /package/dist/esm/{chunk-R4PGFURL.js.map → chunk-TXVZOS3E.js.map} +0 -0
  664. /package/dist/esm/{chunk-WH7PQSSG.js.map → chunk-UICSVJ3B.js.map} +0 -0
  665. /package/dist/esm/{chunk-5TJH35TF.js.map → chunk-ULCHGKI3.js.map} +0 -0
  666. /package/dist/esm/{chunk-3B25RLWX.js.map → chunk-UR5BUNNT.js.map} +0 -0
  667. /package/dist/esm/{chunk-AQ7VUGQQ.js.map → chunk-VPUFKJQA.js.map} +0 -0
  668. /package/dist/esm/{chunk-64EFWPHI.js.map → chunk-YCLPURTD.js.map} +0 -0
  669. /package/dist/esm/{chunk-YWG476GC.js.map → chunk-ZG2XQUOH.js.map} +0 -0
  670. /package/dist/esm/{chunk-CV7QQTI3.js.map → chunk-ZKQCSGL3.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/select.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Select as SelectPrimitive, ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport { Spinner } from './spinner.js';\nimport {\n selectRootPropDefs,\n selectTriggerPropDefs,\n selectContentPropDefs,\n} from './select.props.js';\nimport { useThemeContext, Theme } from './theme.js';\nimport { useThumbSync } from '../hooks/use-thumb-sync.js';\n\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SelectRootOwnProps = GetPropDefTypes<typeof selectRootPropDefs>;\n\n// Trigger and Content pass the size prop def as its own record. It is hoisted because\n// extractProps caches its compiled prop defs on the identity of each record it is given:\n// a literal written at the call site would be a new object, and a recompile, every render.\nconst selectSizePropDefs = { size: selectRootPropDefs.size };\n\n// Keys that open the list from the trigger, as in Radix.\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\n\ninterface SelectContextValue extends SelectRootOwnProps {\n /** Whether the list is open. Undefined when Content is rendered outside a Kookie Select.Root. */\n open?: boolean;\n}\nconst SelectContext = React.createContext<SelectContextValue>({});\n\ninterface SelectRootProps extends SelectPrimitive.SelectProps, SelectRootOwnProps {}\nconst SelectRoot: React.FC<SelectRootProps> = (props) => {\n const {\n children,\n size: sizeProp,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...rootProps\n } = props;\n const size = useThemeSize(sizeProp, selectRootPropDefs.size);\n\n // Root owns the open state and hands Radix a controlled `open`, so Content learns of a\n // change in the same render Radix does. Radix's uncontrolled state reports changes from an\n // effect, a render late, which would mount the open list once without its wrappers.\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const open = openProp ?? uncontrolledOpen;\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [onOpenChange],\n );\n\n return (\n <SelectPrimitive.Root {...rootProps} open={open} onOpenChange={handleOpenChange}>\n <SelectContext.Provider value={React.useMemo(() => ({ size, open }), [size, open])}>\n {children}\n </SelectContext.Provider>\n </SelectPrimitive.Root>\n );\n};\nSelectRoot.displayName = 'Select.Root';\n\ntype SelectTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;\ntype SelectTriggerOwnProps = GetPropDefTypes<typeof selectTriggerPropDefs>;\ninterface SelectTriggerProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Trigger, RemovedProps>,\n SelectTriggerOwnProps {}\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const {\n children,\n className,\n color,\n radius,\n placeholder,\n error,\n loading,\n disabled,\n readOnly,\n ...triggerProps\n } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectTriggerPropDefs,\n );\n\n // The props win when set; otherwise a caller's own aria-* (a form library's aria-invalid)\n // stays, so both paths reach the accessibility tree and the CSS, as on TextField.\n const {\n 'aria-invalid': ariaInvalid,\n 'aria-busy': ariaBusy,\n 'aria-disabled': ariaDisabled,\n 'aria-readonly': ariaReadOnly,\n } = triggerProps;\n const isInvalid = Boolean(error) || ariaInvalid === true || ariaInvalid === 'true';\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': isInvalid ? true : ariaInvalid,\n 'aria-busy': loading || ariaBusy,\n 'aria-disabled': disabled || ariaDisabled,\n 'aria-readonly': readOnly || ariaReadOnly,\n }),\n [isInvalid, ariaInvalid, loading, ariaBusy, disabled, ariaDisabled, readOnly, ariaReadOnly],\n );\n\n // Read-only and loading triggers stay focusable but do not open or take typeahead,\n // as on Combobox. Radix skips its own handler when the event is default-prevented.\n const isBlocked = Boolean(readOnly || loading);\n const blockedHandlers = isBlocked\n ? {\n onPointerDown: (event: React.PointerEvent<HTMLButtonElement>) => event.preventDefault(),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.currentTarget.focus();\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (OPEN_KEYS.includes(event.key) || (!isModifierKey && event.key.length === 1)) {\n event.preventDefault();\n }\n },\n }\n : undefined;\n\n return (\n // `disabled` goes to Radix, which merges it with Root's and sets the native attribute.\n <SelectPrimitive.Trigger asChild disabled={disabled} {...blockedHandlers}>\n <button\n data-accent-color={color}\n data-radius={radius}\n data-error={error}\n data-loading={loading}\n {...triggerProps}\n {...ariaProps}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-SelectTrigger', className)}\n >\n <span className=\"kui-SelectTriggerInner\">\n <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>\n </span>\n <SelectPrimitive.Icon asChild>\n {loading ? (\n <span className=\"kui-SelectIcon kui-SelectLoadingIcon\" aria-hidden=\"true\">\n <Spinner />\n </span>\n ) : (\n <ChevronDownIcon className=\"kui-SelectIcon\" />\n )}\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'Select.Trigger';\n\ntype SelectContentElement = React.ElementRef<typeof SelectPrimitive.Content>;\ntype SelectContentOwnProps = GetPropDefTypes<typeof selectContentPropDefs>;\ninterface SelectContentProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Content, RemovedProps>,\n SelectContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Portal>['container'];\n}\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const { className, children, color, container, ...contentProps } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectContentPropDefs,\n );\n const themeContext = useThemeContext();\n\n // While closed, Radix still renders Content's children, into a detached fragment: the\n // items must exist for the trigger's value label, typeahead and the native form select.\n // Nothing in that fragment is ever shown, so the theme wrapper and the scroll area, with\n // its two resize observers, are left out until the list opens.\n if (context.open === false && !contentProps.forceMount) {\n return (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content {...contentProps} asChild={false} ref={forwardedRef}>\n {children}\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n }\n\n const resolvedColor = color || themeContext.accentColor;\n return (\n <SelectPrimitive.Portal container={container}>\n <Theme asChild>\n <SelectPrimitive.Content\n data-accent-color={resolvedColor}\n sideOffset={4}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-PopperContent',\n 'kui-BaseMenuContent',\n 'kui-variant-soft',\n 'kui-SelectContent',\n className,\n )}\n >\n <SelectScrollArea>{children}</SelectScrollArea>\n </SelectPrimitive.Content>\n </Theme>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'Select.Content';\n\n/** The open list's scroll area. Its own component so the thumb sync hook runs only while open. */\nfunction SelectScrollArea({ children }: { children: React.ReactNode }) {\n const setThumbViewport = useThumbSync<HTMLDivElement>();\n return (\n <ScrollAreaPrimitive.Root type=\"auto\" className=\"kui-ScrollAreaRoot\">\n <SelectPrimitive.Viewport\n asChild\n className={classNames('kui-BaseMenuViewport', 'kui-SelectViewport')}\n >\n <ScrollAreaPrimitive.Viewport\n ref={setThumbViewport}\n className=\"kui-ScrollAreaViewport\"\n style={{ overflowY: undefined }}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n </SelectPrimitive.Viewport>\n <ScrollAreaPrimitive.Scrollbar className=\"kui-ScrollAreaScrollbar\" orientation=\"vertical\">\n <ScrollAreaPrimitive.Thumb className=\"kui-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n </ScrollAreaPrimitive.Root>\n );\n}\n\ntype SelectItemElement = React.ElementRef<typeof SelectPrimitive.Item>;\ninterface SelectItemProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Item, RemovedProps> {}\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>((props, forwardedRef) => {\n const { className, children, ...itemProps } = props;\n\n // Detect if this is rich content (not just a string)\n const isRichContent = typeof children !== 'string';\n\n return (\n <SelectPrimitive.Item\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-reset',\n 'kui-BaseMenuItem',\n 'kui-SelectItem',\n { 'kui-SelectItemRich': isRichContent },\n className,\n )}\n >\n <SelectPrimitive.ItemIndicator className=\"kui-SelectItemIndicator\">\n <ThickCheckIcon className=\"kui-SelectItemIndicatorIcon\" />\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = 'Select.Item';\n\ntype SelectGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;\ninterface SelectGroupProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Group, RemovedProps> {}\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-SelectGroup', className)}\n />\n ),\n);\nSelectGroup.displayName = 'Select.Group';\n\ntype SelectLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;\ninterface SelectLabelProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Label, RemovedProps> {}\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuLabel', 'kui-SelectLabel', className)}\n />\n ),\n);\nSelectLabel.displayName = 'Select.Label';\n\ntype SelectSeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;\ninterface SelectSeparatorProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Separator, RemovedProps> {}\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuSeparator', 'kui-SelectSeparator', className)}\n />\n ),\n);\nSelectSeparator.displayName = 'Select.Separator';\n\nexport {\n SelectRoot as Root,\n SelectTrigger as Trigger,\n SelectContent as Content,\n SelectItem as Item,\n SelectGroup as Group,\n SelectLabel as Label,\n SelectSeparator as Separator,\n};\n\nexport type {\n SelectRootProps as RootProps,\n SelectTriggerProps as TriggerProps,\n SelectContentProps as ContentProps,\n SelectItemProps as ItemProps,\n SelectGroupProps as GroupProps,\n SelectLabelProps as LabelProps,\n SelectSeparatorProps as SeparatorProps,\n};\n"],
5
- "mappings": "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",
6
- "names": ["select_exports", "__export", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectRoot", "SelectSeparator", "SelectTrigger", "React", "classNames", "SelectPrimitive", "ScrollAreaPrimitive", "selectSizePropDefs", "selectRootPropDefs", "OPEN_KEYS", "SelectContext", "SelectRoot", "props", "children", "sizeProp", "openProp", "defaultOpen", "onOpenChange", "rootProps", "size", "useThemeSize", "uncontrolledOpen", "setUncontrolledOpen", "open", "handleOpenChange", "next", "SelectPrimitive", "SelectTrigger", "forwardedRef", "context", "className", "color", "radius", "placeholder", "error", "loading", "disabled", "readOnly", "triggerProps", "extractProps", "selectTriggerPropDefs", "ariaInvalid", "ariaBusy", "ariaDisabled", "ariaReadOnly", "isInvalid", "ariaProps", "blockedHandlers", "event", "isModifierKey", "classNames", "Spinner", "ChevronDownIcon", "SelectContent", "container", "contentProps", "selectContentPropDefs", "themeContext", "useThemeContext", "resolvedColor", "Theme", "SelectScrollArea", "setThumbViewport", "useThumbSync", "ScrollAreaPrimitive", "SelectItem", "itemProps", "isRichContent", "ThickCheckIcon", "SelectGroup", "SelectLabel", "SelectSeparator"]
3
+ "sources": ["../../src/components/select.tsx", "../../src/components/select.props.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Select as SelectPrimitive, ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport { Spinner } from './spinner.js';\nimport {\n selectRootPropDefs,\n selectTriggerPropDefs,\n selectContentPropDefs,\n} from './select.props.js';\nimport { useThemeContext, Theme } from './theme.js';\nimport { useThumbSync } from '../hooks/use-thumb-sync.js';\n\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SelectRootOwnProps = GetPropDefTypes<typeof selectRootPropDefs>;\n\n// Trigger and Content pass the size prop def as its own record. It is hoisted because\n// extractProps caches its compiled prop defs on the identity of each record it is given:\n// a literal written at the call site would be a new object, and a recompile, every render.\nconst selectSizePropDefs = { size: selectRootPropDefs.size };\n\n// Keys that open the list from the trigger, as in Radix.\nconst OPEN_KEYS = [' ', 'Enter', 'ArrowUp', 'ArrowDown'];\n\ninterface SelectContextValue extends SelectRootOwnProps {\n /** Whether the list is open. Undefined when Content is rendered outside a Kookie Select.Root. */\n open?: boolean;\n}\nconst SelectContext = React.createContext<SelectContextValue>({});\n\ninterface SelectRootProps extends SelectPrimitive.SelectProps, SelectRootOwnProps {}\nconst SelectRoot: React.FC<SelectRootProps> = (props) => {\n const {\n children,\n size: sizeProp,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...rootProps\n } = props;\n const size = useThemeSize(sizeProp, selectRootPropDefs.size);\n\n // Root owns the open state and hands Radix a controlled `open`, so Content learns of a\n // change in the same render Radix does. Radix's uncontrolled state reports changes from an\n // effect, a render late, which would mount the open list once without its wrappers.\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const open = openProp ?? uncontrolledOpen;\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [onOpenChange],\n );\n\n return (\n <SelectPrimitive.Root {...rootProps} open={open} onOpenChange={handleOpenChange}>\n <SelectContext.Provider value={React.useMemo(() => ({ size, open }), [size, open])}>\n {children}\n </SelectContext.Provider>\n </SelectPrimitive.Root>\n );\n};\nSelectRoot.displayName = 'Select.Root';\n\ntype SelectTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;\ntype SelectTriggerOwnProps = GetPropDefTypes<typeof selectTriggerPropDefs>;\ninterface SelectTriggerProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Trigger, RemovedProps>,\n SelectTriggerOwnProps {}\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const {\n children,\n className,\n color,\n radius,\n placeholder,\n error,\n loading,\n disabled,\n readOnly,\n ...triggerProps\n } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectTriggerPropDefs,\n );\n\n // The props win when set; otherwise a caller's own aria-* (a form library's aria-invalid)\n // stays, so both paths reach the accessibility tree and the CSS, as on TextField.\n const {\n 'aria-invalid': ariaInvalid,\n 'aria-busy': ariaBusy,\n 'aria-disabled': ariaDisabled,\n 'aria-readonly': ariaReadOnly,\n } = triggerProps;\n const isInvalid = Boolean(error) || ariaInvalid === true || ariaInvalid === 'true';\n const ariaProps = React.useMemo(\n () => ({\n 'aria-invalid': isInvalid ? true : ariaInvalid,\n 'aria-busy': loading || ariaBusy,\n 'aria-disabled': disabled || ariaDisabled,\n 'aria-readonly': readOnly || ariaReadOnly,\n }),\n [isInvalid, ariaInvalid, loading, ariaBusy, disabled, ariaDisabled, readOnly, ariaReadOnly],\n );\n\n // Read-only and loading triggers stay focusable but do not open or take typeahead,\n // as on Combobox. Radix skips its own handler when the event is default-prevented.\n const isBlocked = Boolean(readOnly || loading);\n const blockedHandlers = isBlocked\n ? {\n onPointerDown: (event: React.PointerEvent<HTMLButtonElement>) => event.preventDefault(),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.currentTarget.focus();\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (OPEN_KEYS.includes(event.key) || (!isModifierKey && event.key.length === 1)) {\n event.preventDefault();\n }\n },\n }\n : undefined;\n\n return (\n // `disabled` goes to Radix, which merges it with Root's and sets the native attribute.\n <SelectPrimitive.Trigger asChild disabled={disabled} {...blockedHandlers}>\n <button\n data-accent-color={color}\n data-radius={radius}\n data-error={error}\n data-loading={loading}\n {...triggerProps}\n {...ariaProps}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-SelectTrigger', className)}\n >\n <span className=\"kui-SelectTriggerInner\">\n <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>\n </span>\n <SelectPrimitive.Icon asChild>\n {loading ? (\n <span className=\"kui-SelectIcon kui-SelectLoadingIcon\" aria-hidden=\"true\">\n <Spinner />\n </span>\n ) : (\n <ChevronDownIcon className=\"kui-SelectIcon\" />\n )}\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'Select.Trigger';\n\ntype SelectContentElement = React.ElementRef<typeof SelectPrimitive.Content>;\ntype SelectContentOwnProps = GetPropDefTypes<typeof selectContentPropDefs>;\ninterface SelectContentProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Content, RemovedProps>,\n SelectContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Portal>['container'];\n}\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n (props, forwardedRef) => {\n const context = React.useContext(SelectContext);\n const { className, children, color, container, ...contentProps } = extractProps(\n // Pass size value from the context to generate styles\n { size: context?.size, ...props },\n // Pass size prop def to allow it to be extracted\n selectSizePropDefs,\n selectContentPropDefs,\n );\n const themeContext = useThemeContext();\n\n // While closed, Radix still renders Content's children, into a detached fragment: the\n // items must exist for the trigger's value label, typeahead and the native form select.\n // Nothing in that fragment is ever shown, so the theme wrapper and the scroll area, with\n // its two resize observers, are left out until the list opens.\n if (context.open === false && !contentProps.forceMount) {\n return (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content {...contentProps} asChild={false} ref={forwardedRef}>\n {children}\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n }\n\n const resolvedColor = color || themeContext.accentColor;\n return (\n <SelectPrimitive.Portal container={container}>\n <Theme asChild>\n <SelectPrimitive.Content\n data-accent-color={resolvedColor}\n sideOffset={4}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-PopperContent',\n 'kui-BaseMenuContent',\n 'kui-variant-soft',\n 'kui-SelectContent',\n className,\n )}\n >\n <SelectScrollArea>{children}</SelectScrollArea>\n </SelectPrimitive.Content>\n </Theme>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'Select.Content';\n\n/** The open list's scroll area. Its own component so the thumb sync hook runs only while open. */\nfunction SelectScrollArea({ children }: { children: React.ReactNode }) {\n const setThumbViewport = useThumbSync<HTMLDivElement>();\n return (\n <ScrollAreaPrimitive.Root type=\"auto\" className=\"kui-ScrollAreaRoot\">\n <SelectPrimitive.Viewport\n asChild\n className={classNames('kui-BaseMenuViewport', 'kui-SelectViewport')}\n >\n <ScrollAreaPrimitive.Viewport\n ref={setThumbViewport}\n className=\"kui-ScrollAreaViewport\"\n style={{ overflowY: undefined }}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n </SelectPrimitive.Viewport>\n <ScrollAreaPrimitive.Scrollbar className=\"kui-ScrollAreaScrollbar\" orientation=\"vertical\">\n <ScrollAreaPrimitive.Thumb className=\"kui-ScrollAreaThumb\" />\n </ScrollAreaPrimitive.Scrollbar>\n </ScrollAreaPrimitive.Root>\n );\n}\n\ntype SelectItemElement = React.ElementRef<typeof SelectPrimitive.Item>;\ninterface SelectItemProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Item, RemovedProps> {}\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>((props, forwardedRef) => {\n const { className, children, ...itemProps } = props;\n\n // Detect if this is rich content (not just a string)\n const isRichContent = typeof children !== 'string';\n\n return (\n <SelectPrimitive.Item\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'kui-reset',\n 'kui-BaseMenuItem',\n 'kui-SelectItem',\n { 'kui-SelectItemRich': isRichContent },\n className,\n )}\n >\n <SelectPrimitive.ItemIndicator className=\"kui-SelectItemIndicator\">\n <ThickCheckIcon className=\"kui-SelectItemIndicatorIcon\" />\n </SelectPrimitive.ItemIndicator>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = 'Select.Item';\n\ntype SelectGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;\ninterface SelectGroupProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Group, RemovedProps> {}\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-SelectGroup', className)}\n />\n ),\n);\nSelectGroup.displayName = 'Select.Group';\n\ntype SelectLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;\ninterface SelectLabelProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Label, RemovedProps> {}\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuLabel', 'kui-SelectLabel', className)}\n />\n ),\n);\nSelectLabel.displayName = 'Select.Label';\n\ntype SelectSeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;\ninterface SelectSeparatorProps\n extends ComponentPropsWithout<typeof SelectPrimitive.Separator, RemovedProps> {}\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n ({ className, ...props }, forwardedRef) => (\n <SelectPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-BaseMenuSeparator', 'kui-SelectSeparator', className)}\n />\n ),\n);\nSelectSeparator.displayName = 'Select.Separator';\n\nexport {\n SelectRoot as Root,\n SelectTrigger as Trigger,\n SelectContent as Content,\n SelectItem as Item,\n SelectGroup as Group,\n SelectLabel as Label,\n SelectSeparator as Separator,\n};\n\nexport type {\n SelectRootProps as RootProps,\n SelectTriggerProps as TriggerProps,\n SelectContentProps as ContentProps,\n SelectItemProps as ItemProps,\n SelectGroupProps as GroupProps,\n SelectLabelProps as LabelProps,\n SelectSeparatorProps as SeparatorProps,\n};\n", "import type React from 'react';\n\nimport { colorPropDef } from '../props/color.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst selectRootPropDefs = {\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2', responsive: true },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n};\n\nconst triggerVariants = ['raised', 'surface', 'soft', 'outline', 'ghost'] as const;\n\nconst selectTriggerPropDefs = {\n variant: { type: 'enum', className: 'kui-variant', values: triggerVariants, default: 'raised' },\n error: { type: 'boolean' },\n loading: { type: 'boolean' },\n disabled: { type: 'boolean' },\n readOnly: { type: 'boolean' },\n ...colorPropDef,\n ...radiusPropDef,\n placeholder: { type: 'ReactNode' },\n} satisfies {\n variant: PropDef<(typeof triggerVariants)[number]>;\n error: PropDef<boolean>;\n loading: PropDef<boolean>;\n disabled: PropDef<boolean>;\n readOnly: PropDef<boolean>;\n placeholder: PropDef<React.ReactNode>;\n};\n\n\nconst selectContentPropDefs = {\n ...colorPropDef,\n} satisfies {\n};\n\nexport { selectRootPropDefs, selectTriggerPropDefs, selectContentPropDefs };\n"],
5
+ "mappings": "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",
6
+ "names": ["select_exports", "__export", "SelectContent", "SelectGroup", "SelectItem", "SelectLabel", "SelectRoot", "SelectSeparator", "SelectTrigger", "React", "classNames", "SelectPrimitive", "ScrollAreaPrimitive", "sizes", "selectRootPropDefs", "triggerVariants", "selectTriggerPropDefs", "colorPropDef", "radiusPropDef", "selectContentPropDefs", "selectSizePropDefs", "selectRootPropDefs", "OPEN_KEYS", "SelectContext", "SelectRoot", "props", "children", "sizeProp", "openProp", "defaultOpen", "onOpenChange", "rootProps", "size", "useThemeSize", "uncontrolledOpen", "setUncontrolledOpen", "open", "handleOpenChange", "next", "SelectPrimitive", "SelectTrigger", "forwardedRef", "context", "className", "color", "radius", "placeholder", "error", "loading", "disabled", "readOnly", "triggerProps", "extractProps", "selectTriggerPropDefs", "ariaInvalid", "ariaBusy", "ariaDisabled", "ariaReadOnly", "isInvalid", "ariaProps", "blockedHandlers", "event", "isModifierKey", "classNames", "Spinner", "ChevronDownIcon", "SelectContent", "container", "contentProps", "selectContentPropDefs", "themeContext", "useThemeContext", "resolvedColor", "Theme", "SelectScrollArea", "setThumbViewport", "useThumbSync", "ScrollAreaPrimitive", "SelectItem", "itemProps", "isRichContent", "ThickCheckIcon", "SelectGroup", "SelectLabel", "SelectSeparator"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{b as a}from"./chunk-XU74PNM2.js";import{a as n}from"./chunk-LPLW7OWA.js";import{a as d}from"./chunk-L54FWKJE.js";import{c as m}from"./chunk-OKQAVYW4.js";import*as e from"react";import v from"classnames";import{useComposedRefs as x,useLayoutEffect as N}from"radix-ui/internal";var W=["cover","contain","fill","scale-down","none"],f={...a,fit:{type:"enum",className:"kui-r-fit",values:W,default:"cover"}};var H=e.forwardRef((p,g)=>{let{width:o,height:r,...h}=p,u=typeof o=="number"?o:void 0,c=typeof r=="number"?r:void 0,{className:l,alt:P,radius:y,loading:w="lazy",decoding:I="async",onLoad:R,onError:b,...D}=m({...h,width:typeof o=="number"?void 0:o,height:typeof r=="number"?void 0:r},f,d,n),[j,s]=e.useState("loading"),i=e.useRef(null);N(()=>{let t=i.current;t?.complete?s(t.naturalWidth>0?"loaded":"error"):s("loading")},[p.src]);let E=x(i,g);return e.createElement("img",{...D,width:u,height:c,ref:E,alt:P,loading:w,decoding:I,"data-radius":y,"data-status":j,className:v("kui-Image",l),onLoad:t=>{s("loaded"),R?.(t)},onError:t=>{s("error"),b?.(t)}})});H.displayName="Image";export{H as a};
3
+ //# sourceMappingURL=chunk-5PQCTVZB.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/image.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs, useLayoutEffect } from 'radix-ui/internal';\n\nimport { imagePropDefs } from './image.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { widthPropDefs } from '../props/width.props.js';\nimport { heightPropDefs } from '../props/height.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { WidthProps } from '../props/width.props.js';\nimport type { HeightProps } from '../props/height.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ImageElement = React.ElementRef<'img'>;\ntype ImageOwnProps = GetPropDefTypes<typeof imagePropDefs>;\ntype ImageStatus = 'loading' | 'loaded' | 'error';\n\ninterface ImageProps\n extends ComponentPropsWithout<'img', RemovedProps | 'width' | 'height' | 'src' | 'alt'>,\n Omit<WidthProps, 'width'>,\n Omit<HeightProps, 'height'>,\n ImageOwnProps {\n src: string;\n /** Required. Pass `\"\"` for a decorative picture. */\n alt: string;\n /**\n * A number is the picture's intrinsic width in pixels, written as the `width` attribute, so the\n * browser reserves its box before it loads. A string or responsive object sets the CSS width.\n */\n width?: WidthProps['width'] | number;\n /** A number is the intrinsic height attribute; a string or responsive object sets the CSS height. */\n height?: HeightProps['height'] | number;\n}\n\n/**\n * A plain `<img>` that loads lazily, fills its box by `fit` and takes the theme's corner.\n * One element and no wrapper: `width`, `height`, `className` and `style` all land on the\n * `<img>` itself. Numeric `width` and `height` are the native attributes, which reserve the box.\n *\n * Until it loads it rests on a quiet neutral fill, which is also what stays if it fails.\n */\nconst Image = React.forwardRef<ImageElement, ImageProps>((props, forwardedRef) => {\n // Numbers are the native attributes, which give the browser an aspect ratio before load.\n const { width, height, ...layoutProps } = props;\n const widthAttribute = typeof width === 'number' ? width : undefined;\n const heightAttribute = typeof height === 'number' ? height : undefined;\n const { className, alt, radius, loading = 'lazy', decoding = 'async', onLoad, onError, ...imageProps } = extractProps(\n {\n ...layoutProps,\n width: typeof width === 'number' ? undefined : width,\n height: typeof height === 'number' ? undefined : height,\n },\n imagePropDefs,\n widthPropDefs,\n heightPropDefs,\n );\n\n const [status, setStatus] = React.useState<ImageStatus>('loading');\n const ref = React.useRef<HTMLImageElement>(null);\n\n // A cached image, or one that finished before hydration, never fires onLoad for us.\n useLayoutEffect(() => {\n const img = ref.current;\n if (img?.complete) setStatus(img.naturalWidth > 0 ? 'loaded' : 'error');\n else setStatus('loading');\n }, [props.src]);\n\n const setRefs = useComposedRefs(ref, forwardedRef);\n\n return (\n <img\n {...imageProps}\n width={widthAttribute}\n height={heightAttribute}\n ref={setRefs}\n alt={alt}\n loading={loading}\n decoding={decoding}\n data-radius={radius}\n data-status={status}\n className={classNames('kui-Image', className)}\n onLoad={(event) => {\n setStatus('loaded');\n onLoad?.(event);\n }}\n onError={(event) => {\n setStatus('error');\n onError?.(event);\n }}\n />\n );\n});\nImage.displayName = 'Image';\n\nexport { Image };\nexport type { ImageProps };\n"],
5
- "mappings": ";gKAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,mBAAAC,EAAiB,mBAAAC,MAAuB,oBAwCjD,IAAMC,EAAc,aAAqC,CAACC,EAAOC,IAAiB,CAEhF,GAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,GAAGC,CAAY,EAAIJ,EACpCK,EAAiB,OAAOH,GAAU,SAAWA,EAAQ,OACrDI,EAAkB,OAAOH,GAAW,SAAWA,EAAS,OACxD,CAAE,UAAAI,EAAW,IAAAC,EAAK,OAAAC,EAAQ,QAAAC,EAAU,OAAQ,SAAAC,EAAW,QAAS,OAAAC,EAAQ,QAAAC,EAAS,GAAGC,CAAW,EAAIC,EACvG,CACE,GAAGX,EACH,MAAO,OAAOF,GAAU,SAAW,OAAYA,EAC/C,OAAQ,OAAOC,GAAW,SAAW,OAAYA,CACnD,EACAa,EACAC,EACAC,CACF,EAEM,CAACC,EAAQC,CAAS,EAAU,WAAsB,SAAS,EAC3DC,EAAY,SAAyB,IAAI,EAG/CC,EAAgB,IAAM,CACpB,IAAMC,EAAMF,EAAI,QACZE,GAAK,SAAUH,EAAUG,EAAI,aAAe,EAAI,SAAW,OAAO,EACjEH,EAAU,SAAS,CAC1B,EAAG,CAACpB,EAAM,GAAG,CAAC,EAEd,IAAMwB,EAAUC,EAAgBJ,EAAKpB,CAAY,EAEjD,OACE,gBAAC,OACE,GAAGa,EACJ,MAAOT,EACP,OAAQC,EACR,IAAKkB,EACL,IAAKhB,EACL,QAASE,EACT,SAAUC,EACV,cAAaF,EACb,cAAaU,EACb,UAAWO,EAAW,YAAanB,CAAS,EAC5C,OAASoB,GAAU,CACjBP,EAAU,QAAQ,EAClBR,IAASe,CAAK,CAChB,EACA,QAAUA,GAAU,CAClBP,EAAU,OAAO,EACjBP,IAAUc,CAAK,CACjB,EACF,CAEJ,CAAC,EACD5B,EAAM,YAAc",
6
- "names": ["React", "classNames", "useComposedRefs", "useLayoutEffect", "Image", "props", "forwardedRef", "width", "height", "layoutProps", "widthAttribute", "heightAttribute", "className", "alt", "radius", "loading", "decoding", "onLoad", "onError", "imageProps", "extractProps", "imagePropDefs", "widthPropDefs", "heightPropDefs", "status", "setStatus", "ref", "useLayoutEffect", "img", "setRefs", "useComposedRefs", "classNames", "event"]
3
+ "sources": ["../../src/components/image.tsx", "../../src/components/image.props.ts"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs, useLayoutEffect } from 'radix-ui/internal';\n\nimport { imagePropDefs } from './image.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { widthPropDefs } from '../props/width.props.js';\nimport { heightPropDefs } from '../props/height.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { WidthProps } from '../props/width.props.js';\nimport type { HeightProps } from '../props/height.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ImageElement = React.ElementRef<'img'>;\ntype ImageOwnProps = GetPropDefTypes<typeof imagePropDefs>;\ntype ImageStatus = 'loading' | 'loaded' | 'error';\n\ninterface ImageProps\n extends ComponentPropsWithout<'img', RemovedProps | 'width' | 'height' | 'src' | 'alt'>,\n Omit<WidthProps, 'width'>,\n Omit<HeightProps, 'height'>,\n ImageOwnProps {\n src: string;\n /** Required. Pass `\"\"` for a decorative picture. */\n alt: string;\n /**\n * A number is the picture's intrinsic width in pixels, written as the `width` attribute, so the\n * browser reserves its box before it loads. A string or responsive object sets the CSS width.\n */\n width?: WidthProps['width'] | number;\n /** A number is the intrinsic height attribute; a string or responsive object sets the CSS height. */\n height?: HeightProps['height'] | number;\n}\n\n/**\n * A plain `<img>` that loads lazily, fills its box by `fit` and takes the theme's corner.\n * One element and no wrapper: `width`, `height`, `className` and `style` all land on the\n * `<img>` itself. Numeric `width` and `height` are the native attributes, which reserve the box.\n *\n * Until it loads it rests on a quiet neutral fill, which is also what stays if it fails.\n */\nconst Image = React.forwardRef<ImageElement, ImageProps>((props, forwardedRef) => {\n // Numbers are the native attributes, which give the browser an aspect ratio before load.\n const { width, height, ...layoutProps } = props;\n const widthAttribute = typeof width === 'number' ? width : undefined;\n const heightAttribute = typeof height === 'number' ? height : undefined;\n const { className, alt, radius, loading = 'lazy', decoding = 'async', onLoad, onError, ...imageProps } = extractProps(\n {\n ...layoutProps,\n width: typeof width === 'number' ? undefined : width,\n height: typeof height === 'number' ? undefined : height,\n },\n imagePropDefs,\n widthPropDefs,\n heightPropDefs,\n );\n\n const [status, setStatus] = React.useState<ImageStatus>('loading');\n const ref = React.useRef<HTMLImageElement>(null);\n\n // A cached image, or one that finished before hydration, never fires onLoad for us.\n useLayoutEffect(() => {\n const img = ref.current;\n if (img?.complete) setStatus(img.naturalWidth > 0 ? 'loaded' : 'error');\n else setStatus('loading');\n }, [props.src]);\n\n const setRefs = useComposedRefs(ref, forwardedRef);\n\n return (\n <img\n {...imageProps}\n width={widthAttribute}\n height={heightAttribute}\n ref={setRefs}\n alt={alt}\n loading={loading}\n decoding={decoding}\n data-radius={radius}\n data-status={status}\n className={classNames('kui-Image', className)}\n onLoad={(event) => {\n setStatus('loaded');\n onLoad?.(event);\n }}\n onError={(event) => {\n setStatus('error');\n onError?.(event);\n }}\n />\n );\n});\nImage.displayName = 'Image';\n\nexport { Image };\nexport type { ImageProps };\n", "import { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst objectFitValues = ['cover', 'contain', 'fill', 'scale-down', 'none'] as const;\n\nconst imagePropDefs = {\n ...radiusPropDef,\n /**\n * How the picture fills its box, as CSS `object-fit`.\n * @link https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit\n */\n fit: { type: 'enum', className: 'kui-r-fit', values: objectFitValues, default: 'cover' },\n} satisfies {\n fit: PropDef<(typeof objectFitValues)[number]>;\n};\n\nexport { imagePropDefs };\n"],
5
+ "mappings": ";gKAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,mBAAAC,EAAiB,mBAAAC,MAAuB,oBCEjD,IAAMC,EAAkB,CAAC,QAAS,UAAW,OAAQ,aAAc,MAAM,EAEnEC,EAAgB,CACpB,GAAGC,EAKH,IAAK,CAAE,KAAM,OAAQ,UAAW,YAAa,OAAQF,EAAiB,QAAS,OAAQ,CACzF,ED6BA,IAAMG,EAAc,aAAqC,CAACC,EAAOC,IAAiB,CAEhF,GAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,GAAGC,CAAY,EAAIJ,EACpCK,EAAiB,OAAOH,GAAU,SAAWA,EAAQ,OACrDI,EAAkB,OAAOH,GAAW,SAAWA,EAAS,OACxD,CAAE,UAAAI,EAAW,IAAAC,EAAK,OAAAC,EAAQ,QAAAC,EAAU,OAAQ,SAAAC,EAAW,QAAS,OAAAC,EAAQ,QAAAC,EAAS,GAAGC,CAAW,EAAIC,EACvG,CACE,GAAGX,EACH,MAAO,OAAOF,GAAU,SAAW,OAAYA,EAC/C,OAAQ,OAAOC,GAAW,SAAW,OAAYA,CACnD,EACAa,EACAC,EACAC,CACF,EAEM,CAACC,EAAQC,CAAS,EAAU,WAAsB,SAAS,EAC3DC,EAAY,SAAyB,IAAI,EAG/CC,EAAgB,IAAM,CACpB,IAAMC,EAAMF,EAAI,QACZE,GAAK,SAAUH,EAAUG,EAAI,aAAe,EAAI,SAAW,OAAO,EACjEH,EAAU,SAAS,CAC1B,EAAG,CAACpB,EAAM,GAAG,CAAC,EAEd,IAAMwB,EAAUC,EAAgBJ,EAAKpB,CAAY,EAEjD,OACE,gBAAC,OACE,GAAGa,EACJ,MAAOT,EACP,OAAQC,EACR,IAAKkB,EACL,IAAKhB,EACL,QAASE,EACT,SAAUC,EACV,cAAaF,EACb,cAAaU,EACb,UAAWO,EAAW,YAAanB,CAAS,EAC5C,OAASoB,GAAU,CACjBP,EAAU,QAAQ,EAClBR,IAASe,CAAK,CAChB,EACA,QAAUA,GAAU,CAClBP,EAAU,OAAO,EACjBP,IAAUc,CAAK,CACjB,EACF,CAEJ,CAAC,EACD5B,EAAM,YAAc",
6
+ "names": ["React", "classNames", "useComposedRefs", "useLayoutEffect", "objectFitValues", "imagePropDefs", "radiusPropDef", "Image", "props", "forwardedRef", "width", "height", "layoutProps", "widthAttribute", "heightAttribute", "className", "alt", "radius", "loading", "decoding", "onLoad", "onError", "imageProps", "extractProps", "imagePropDefs", "widthPropDefs", "heightPropDefs", "status", "setStatus", "ref", "useLayoutEffect", "img", "setRefs", "useComposedRefs", "classNames", "event"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{c as e}from"./chunk-CUNKWFKA.js";var s=["1","2","3","4"],r={size:{type:"enum",className:"kui-r-size",values:s,default:"2",responsive:!0},...e};export{r as a};
2
+ //# sourceMappingURL=chunk-5XA2N2WR.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/switch.props.tsx"],
4
4
  "sourcesContent": ["import { colorPropDef } from '../props/color.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst switchPropDefs = {\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2', responsive: true },\n ...colorPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { switchPropDefs };\n"],
5
- "mappings": ";wCAIA,IAAMA,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAE3BC,EAAiB,CACrB,KAAM,CAAE,KAAM,OAAQ,UAAW,aAAc,OAAQD,EAAO,QAAS,IAAK,WAAY,EAAK,EAC7F,GAAGE,CACL",
5
+ "mappings": "wCAIA,IAAMA,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAE3BC,EAAiB,CACrB,KAAM,CAAE,KAAM,OAAQ,UAAW,aAAc,OAAQD,EAAO,QAAS,IAAK,WAAY,EAAK,EAC7F,GAAGE,CACL",
6
6
  "names": ["sizes", "switchPropDefs", "colorPropDef"]
7
7
  }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-6DWDNKLS.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{a as X,b as oo,c as eo,e as W,f as to,i as ro,l as no}from"./chunk-457Z4R5W.js";import{a as B}from"./chunk-ULCHGKI3.js";import{a as Q}from"./chunk-OTCVSJT7.js";import{a as q}from"./chunk-7N2Q5WOM.js";import{b as L}from"./chunk-5ON3XLRD.js";import{g as J}from"./chunk-3ZWHKNHI.js";import{c as U}from"./chunk-OKQAVYW4.js";import*as o from"react";import{useLayoutEffect as D}from"radix-ui/internal";import x from"classnames";import{Toolbar as N}from"radix-ui";var bo=["1","2","3","4"],To=["horizontal","vertical"],g={size:{type:"enum",className:"kui-r-size",values:bo,default:"2"},orientation:{type:"enum",values:To,default:"horizontal"}};var E=o.createContext(null),F=o.createContext(null),M=o.createContext(!1);function Io(){return o.useContext(M)}var H=o.forwardRef((e,t)=>{let r=J(),a=L(e.size??r??void 0,g.size),s=e.orientation??g.orientation.default,{className:i,orientation:n,backdrop:l=!1,children:u,...d}=U({...e,size:a},g,q),p=o.useMemo(()=>({size:a,orientation:s,backdrop:l}),[a,s,l]);return o.createElement(N.Root,{...d,ref:t,orientation:s,"data-backdrop":l||void 0,className:x("kui-Toolbar",i)},o.createElement(E.Provider,{value:p},u))});H.displayName="Toolbar";var so=o.forwardRef(({className:e,disabled:t=!1,children:r,...a},s)=>{let i=o.useContext(E),n=o.useContext(M),l=o.useMemo(()=>({disabled:t}),[t]);return n?o.createElement(to,{...a,ref:s,className:e},o.createElement(F.Provider,{value:l},r)):o.createElement("div",{role:"group","data-orientation":i?.orientation??"horizontal","data-disabled":t||void 0,...a,ref:s,className:x("kui-ToolbarGroup",e)},o.createElement(F.Provider,{value:l},r))});so.displayName="Toolbar.Group";var mo=new Set(["id","className","style","title"]);function ao(e){return e===!0||e==="true"}function Po(e){return o.isValidElement(e)&&e.type==="button"}var A=o.forwardRef((e,t)=>{let r=o.useContext(E),a=o.useContext(F),s=o.useContext(M),{iconOnly:i,size:n,variant:l,emphasis:u,color:d,disabled:p,asChild:v,onKeyDown:y,...w}=e,h=p||a?.disabled||void 0;if(s){let T={};for(let m of Object.keys(w))(/^on[A-Z]/.test(m)||m.startsWith("aria-")||m.startsWith("data-")||mo.has(m))&&(T[m]=w[m]);return y&&(T.onKeyDown=y),o.createElement(io,{...T,ref:t,asChild:v,iconOnly:i,disabled:h,color:d,pressed:e["aria-pressed"]===void 0?void 0:ao(e["aria-pressed"])},w.children)}let O=r?.orientation==="vertical"&&y?T=>{T.key==="ArrowDown"||T.key==="ArrowUp"||y(T)}:y,I=ao(e["aria-pressed"]),c="data-state"in e||e["aria-pressed"]===void 0?{}:{"data-state":I?"on":"off"},f={size:n??r?.size,...u!==void 0?{emphasis:u}:{variant:l??(a?"ghost":r?.backdrop?"raised":"soft")},color:d??(l||u?void 0:"gray"),...c},b={...w,...i?{iconOnly:!0}:{},...v?{asChild:!0}:{},...O?{onKeyDown:O}:{},...f};return r?v&&!Po(w.children)?o.createElement(N.Link,{asChild:!0,ref:t},o.createElement(B,{...b,disabled:h})):o.createElement(N.Button,{asChild:!0,ref:t,disabled:h},o.createElement(B,{...b})):o.createElement(B,{...b,ref:t,disabled:h})});A.displayName="Toolbar.Button";var io=o.forwardRef(({asChild:e,iconOnly:t,disabled:r,color:a,pressed:s,children:i,"aria-label":n,...l},u)=>{let d=t?n:void 0,p={...l,...t?{}:n?{"aria-label":n}:{},disabled:r,...a?{color:a}:{}};if(e&&o.isValidElement(i)){let v=d?o.cloneElement(i,void 0,i.props.children,o.createElement("span",null,d)):i;return o.createElement(W,{...p,ref:u,asChild:!0},v)}return s!==void 0?o.createElement(ro,{...p,ref:u,checked:s},i,d):o.createElement(W,{...p,ref:u},i,d)});io.displayName="Toolbar.OverflowItem";function Ro(){return o.createElement("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentcolor","aria-hidden":!0,xmlns:"http://www.w3.org/2000/svg"},o.createElement("circle",{cx:"3.25",cy:"8",r:"1.25"}),o.createElement("circle",{cx:"8",cy:"8",r:"1.25"}),o.createElement("circle",{cx:"12.75",cy:"8",r:"1.25"}))}var lo=o.forwardRef(({label:e="More",className:t,children:r,...a},s)=>{let i=o.Children.toArray(r),n=i.length,l=o.useRef(null),u=o.useRef([]),d=o.useRef(0),[p,v]=o.useState(n),[y,w]=o.useState(0),[h,O]=o.useState(n);h!==n&&(O(n),v(n)),D(()=>{u.current=[]},[n]),D(()=>{let c=l.current;if(!c)return;let f=Array.from(c.children),b=Math.min(p,n);for(let P=0;P<b;P++){let R=f[P];R&&(u.current[P]=R.offsetWidth)}let T=f[b];T&&(d.current=T.offsetWidth);let m=Number.parseFloat(getComputedStyle(c).columnGap)||0,K=c.clientWidth,V=0,_=0;for(let P=0;P<n;P++){let R=u.current[P];if(R===void 0)return;R!==0&&(V+=R+(_>0?m:0),_+=1)}let k=n;if(V>K){let P=K-(d.current||c.clientHeight)-m,R=0,Y=0;k=0;for(let G=0;G<n;G++){let Z=u.current[G];if(Z>0){let $=Z+(Y>0?m:0);if(R+$>P)break;R+=$,Y+=1}k+=1}}k!==p&&v(k)},[p,n,y]),o.useEffect(()=>{let c=l.current;if(!c||typeof ResizeObserver>"u")return;let f=new ResizeObserver(()=>w(b=>b+1));f.observe(c);for(let b of Array.from(c.children))f.observe(b);return()=>f.disconnect()},[p,n]);let I=o.useCallback(c=>{l.current=c,typeof s=="function"?s(c):s&&(s.current=c)},[s]);return o.createElement("div",{...a,ref:I,className:x("kui-ToolbarOverflow",t)},i.slice(0,p).map((c,f)=>o.createElement("div",{key:f,className:"kui-ToolbarOverflowSeat"},c)),p<n?o.createElement(X,null,o.createElement(oo,null,o.createElement(A,{iconOnly:!0,"aria-label":e},o.createElement(Ro,null))),o.createElement(eo,{align:"end"},o.createElement(M.Provider,{value:!0},i.slice(p)))):null)});lo.displayName="Toolbar.Overflow";var j=[],S=new Map,z=new Set,C=new Map;function vo(e){return z.add(e),()=>{z.delete(e)}}function yo(e,t,r){let a=S.get(e)??j,i=a.findIndex(n=>n.id===t)===-1?[...a,{id:t,node:r}]:a.map(n=>n.id===t?{id:t,node:r}:n);S.set(e,i),z.forEach(n=>n())}function wo(e,t){let r=S.get(e);if(!r)return;let a=r.filter(s=>s.id!==t);a.length===0?S.delete(e):S.set(e,a),z.forEach(s=>s())}function co({name:e="default"}){D(()=>{let r=(C.get(e)??0)+1;return C.set(e,r),r>1,()=>{let a=(C.get(e)??1)-1;a>0?C.set(e,a):C.delete(e)}},[e]);let t=o.useSyncExternalStore(vo,()=>S.get(e)??j,()=>j);return o.createElement(o.Fragment,null,t.map(r=>o.createElement(o.Fragment,{key:r.id},r.node)))}co.displayName="Toolbar.Slot";function po({name:e="default",children:t}){let r=o.useId();return D(()=>{yo(e,r,t)},[e,r,t]),D(()=>()=>wo(e,r),[e,r]),null}po.displayName="Toolbar.Fill";var uo=o.forwardRef(({className:e,...t},r)=>{let a=o.useContext(E);return o.useContext(M)?o.createElement(no,{...t,ref:r,className:e}):a?o.createElement(N.Separator,{...t,ref:r,className:x("kui-ToolbarSeparator",e)}):o.createElement("div",{role:"separator","aria-orientation":"vertical","data-orientation":"vertical",...t,ref:r,className:x("kui-ToolbarSeparator",e)})});uo.displayName="Toolbar.Separator";var ho={1:"2",2:"3",3:"4",4:"5"},fo=o.forwardRef(({className:e,children:t,style:r,id:a},s)=>{let i=o.useContext(E),n=L(void 0,g.size),l=i?.size??n;return t==null||t===!1?null:o.createElement(Q,{ref:s,as:"span",size:ho[l],weight:"medium",truncate:!0,id:a,style:r,className:x("kui-ToolbarTitle",e)},t)});fo.displayName="Toolbar.Title";var Go=Object.assign(H,{Root:H,Group:so,Button:A,Separator:uo,Title:fo,Overflow:lo,Slot:co,Fill:po});export{Io as a,H as b,so as c,A as d,lo as e,co as f,po as g,uo as h,fo as i,Go as j};
3
+ //# sourceMappingURL=chunk-6M6HGIGN.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/toolbar.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { useLayoutEffect } from 'radix-ui/internal';\nimport classNames from 'classnames';\nimport { Toolbar as ToolbarPrimitive } from 'radix-ui';\n\nimport { toolbarRootPropDefs } from './toolbar.props.js';\nimport { Button } from './button.js';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { usePaneBandSize } from './_internal/pane-chrome.js';\n\nimport type { ButtonProps } from './button.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { TextProps } from './text.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ButtonRankProps } from './button.js';\n\n/*\n * Toolbar takes Kookie UI v2's contract (v2: components/toolbar), built on Radix instead of\n * Base UI. A toolbar is a row of controls with ONE tab stop: `role=\"toolbar\"`, and the arrow\n * keys move focus between its controls. That keyboard is the reason it is a component.\n *\n * Its `size` reaches every control inside it that does not state its own. The row itself paints\n * nothing; a `ToolbarGroup` draws a quiet well around controls that belong together, and a\n * `ToolbarSeparator` draws a gray hairline between clusters. Use a `Flex` to cluster controls\n * without a well: the row spaces the clusters with `space-between`.\n */\n\ntype ToolbarSize = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['size']>;\ntype ToolbarOrientation = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['orientation']>;\n\ninterface ToolbarContextValue {\n size: ToolbarSize;\n orientation: ToolbarOrientation;\n backdrop: boolean;\n}\n\nconst ToolbarContext = React.createContext<ToolbarContextValue | null>(null);\n\n/** Set by a `ToolbarGroup`: its children rest quiet, and `disabled` turns them all off. */\nconst ToolbarGroupContext = React.createContext<{ disabled: boolean } | null>(null);\n\n/**\n * True while a subtree is drawn into a `ToolbarOverflow`'s menu instead of into the row (v2\n * `InOverflow`). The parts answer it themselves: a `ToolbarButton` renders a menu item, a\n * `ToolbarGroup` a menu group, a `ToolbarSeparator` a menu separator.\n */\nconst InOverflowContext = React.createContext(false);\n\n/**\n * True while this subtree is drawn into a `ToolbarOverflow`'s \"More\" menu instead of the row.\n *\n * The toolbar's own parts handle this already. Use it in your own component inside a\n * `ToolbarOverflow` to render a different form in the menu.\n */\nfunction useToolbarOverflow(): boolean {\n return React.useContext(InOverflowContext);\n}\n\n// ============================================================================\n// Toolbar (root)\n// ============================================================================\n\ntype ToolbarOwnProps = GetPropDefTypes<typeof toolbarRootPropDefs>;\n\ninterface ToolbarProps\n extends ComponentPropsWithout<typeof ToolbarPrimitive.Root, RemovedProps | 'orientation'>,\n ToolbarOwnProps,\n LayoutProps {\n /**\n * Gives every control a surface of its own, for a row that content passes behind, such as\n * `Shell.PaneHeader float`. Buttons rest `raised` instead of `soft`, and a group's well is\n * solid and raised.\n */\n backdrop?: boolean;\n}\n\n/**\n * A row of controls with one keyboard tab stop. The arrow keys move focus between the controls.\n *\n * Give it an `aria-label` (or `aria-labelledby`) that says what the controls act on.\n *\n * @example\n * ```tsx\n * <Toolbar aria-label=\"Formatting\">\n * <ToolbarGroup>\n * <ToolbarButton iconOnly aria-label=\"Bold\" aria-pressed={bold} onClick={toggleBold}>\n * <HugeiconsIcon icon={TextBoldIcon} strokeWidth={1.75} />\n * </ToolbarButton>\n * </ToolbarGroup>\n * <ToolbarSeparator />\n * <ToolbarButton>Share</ToolbarButton>\n * </Toolbar>\n * ```\n */\nconst ToolbarRoot = React.forwardRef<HTMLDivElement, ToolbarProps>((props, forwardedRef) => {\n // Inside a Shell (a pane's header or footer, or the content area), a toolbar with no size\n // rests one step above the Shell's. A pane's scrolling list has no band.\n const band = usePaneBandSize();\n // Elsewhere it takes the nearest Theme's size.\n const size: ToolbarSize = useThemeSize(props.size ?? band ?? undefined, toolbarRootPropDefs.size);\n const orientation: ToolbarOrientation = props.orientation ?? toolbarRootPropDefs.orientation.default;\n const { className, orientation: _orientation, backdrop = false, children, ...rootProps } = extractProps(\n { ...props, size },\n toolbarRootPropDefs,\n layoutPropDefs,\n );\n\n const context = React.useMemo(() => ({ size, orientation, backdrop }), [size, orientation, backdrop]);\n\n return (\n <ToolbarPrimitive.Root\n {...rootProps}\n ref={forwardedRef}\n orientation={orientation}\n data-backdrop={backdrop || undefined}\n className={classNames('kui-Toolbar', className)}\n >\n <ToolbarContext.Provider value={context}>{children}</ToolbarContext.Provider>\n </ToolbarPrimitive.Root>\n );\n});\nToolbarRoot.displayName = 'Toolbar';\n\n// ============================================================================\n// ToolbarGroup\n// ============================================================================\n\ninterface ToolbarGroupProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** Turns every control in the group off at once. */\n disabled?: boolean;\n}\n\n/**\n * Controls that belong together, drawn as one quiet well that stands level with a button\n * beside it. Buttons inside it rest as `ghost` unless they state a `variant`.\n * To cluster controls without a well, use a `Flex`.\n *\n * In a `ToolbarOverflow`'s menu it is a menu group. Outside a `Toolbar` (rendered through a\n * portal, for example) it still draws its well, as a horizontal group.\n */\nconst ToolbarGroup = React.forwardRef<HTMLDivElement, ToolbarGroupProps>(\n ({ className, disabled = false, children, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n const group = React.useMemo(() => ({ disabled }), [disabled]);\n\n if (overflow) {\n return (\n <DropdownMenu.Group {...props} ref={forwardedRef} className={className}>\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </DropdownMenu.Group>\n );\n }\n\n return (\n <div\n role=\"group\"\n data-orientation={toolbar?.orientation ?? 'horizontal'}\n data-disabled={disabled || undefined}\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarGroup', className)}\n >\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </div>\n );\n },\n);\nToolbarGroup.displayName = 'Toolbar.Group';\n\n// ============================================================================\n// ToolbarButton\n// ============================================================================\n\ntype ToolbarButtonBaseProps = Omit<ButtonProps, 'as' | 'variant' | 'emphasis'>;\n\n/** A labelled button: takes every `Button` prop. */\ntype ToolbarTextButtonProps = ToolbarButtonBaseProps &\n ButtonRankProps & {\n iconOnly?: false;\n};\n\n/** An icon-only button: renders `Button iconOnly`, and the type requires an `aria-label`. */\ntype ToolbarIconButtonProps = Omit<ToolbarButtonBaseProps, 'aria-label' | 'aria-labelledby' | 'fullWidth'> &\n ButtonRankProps & {\n iconOnly: true;\n /** The control's accessible name. An icon has no words of its own, so this is required. */\n 'aria-label': string;\n};\n\ntype ToolbarButtonProps = ToolbarTextButtonProps | ToolbarIconButtonProps;\n\n/** The plain DOM props, besides handlers, ARIA and data attributes, a menu row takes from a ToolbarButton. */\nconst OVERFLOW_ITEM_KEYS = new Set(['id', 'className', 'style', 'title']);\n\nfunction isPressed(value: React.AriaAttributes['aria-pressed']) {\n return value === true || value === 'true';\n}\n\n/** Does an `asChild` child render a native `<button>`? Only then is it a Radix Toolbar.Button. */\nfunction isButtonElement(children: React.ReactNode) {\n return React.isValidElement(children) && children.type === 'button';\n}\n\n/**\n * A `Button` that joins the toolbar's keyboard navigation, so a row of them is one tab stop.\n *\n * Set `iconOnly` (with an `aria-label`) for a symbol-only control. Set `aria-pressed` for a\n * control that toggles; a pressed button wears Button's pressed look. Set `asChild` to render\n * your own element, such as a link: `<ToolbarButton asChild><a href=\"/docs\">Docs</a></ToolbarButton>`.\n * A link stays in the arrow-key row and gets no `type` attribute.\n *\n * It takes the toolbar's `size`, and rests as a gray `soft` button (`raised` in a toolbar with\n * `backdrop`, gray `ghost` inside a `ToolbarGroup`). A stated `size`, `variant` or `color` wins; a\n * stated `variant` without a `color` takes Button's own default colour.\n *\n * In a `ToolbarOverflow`'s menu it renders a menu item; an icon-only button uses its\n * `aria-label` as the item's text. Outside a `Toolbar` (rendered through a React portal, for\n * example) it renders a plain Button with the same rest look, as its own tab stop. Use\n * `ToolbarSlot` and `ToolbarFill` for a control that should join the row's arrow keys.\n */\nconst ToolbarButton = React.forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const group = React.useContext(ToolbarGroupContext);\n const overflow = React.useContext(InOverflowContext);\n const { iconOnly, size, variant, emphasis, color, disabled, asChild, onKeyDown, ...rest } = props;\n const off = disabled || group?.disabled || undefined;\n\n if (overflow) {\n // Only what a menu row means comes across: handlers, ARIA, data attributes, id, class and\n // style. Button's box props (size, loading, tooltip, fullWidth and the rest) would land on the\n // DOM as unknown attributes. A wrapping menu trigger hands its open handlers (onPointerDown,\n // onKeyDown), aria-expanded/haspopup/controls and data-state in through these, so it still\n // opens from the row.\n const passed: Record<string, unknown> = {};\n for (const key of Object.keys(rest)) {\n if (/^on[A-Z]/.test(key) || key.startsWith('aria-') || key.startsWith('data-') || OVERFLOW_ITEM_KEYS.has(key)) {\n passed[key] = (rest as Record<string, unknown>)[key];\n }\n }\n if (onKeyDown) passed.onKeyDown = onKeyDown;\n return (\n <ToolbarOverflowItem\n {...(passed as React.ComponentPropsWithoutRef<'div'>)}\n ref={forwardedRef as unknown as React.Ref<HTMLDivElement>}\n asChild={asChild}\n iconOnly={iconOnly}\n disabled={off}\n color={color}\n pressed={props['aria-pressed'] === undefined ? undefined : isPressed(props['aria-pressed'])}\n >\n {rest.children}\n </ToolbarOverflowItem>\n );\n }\n\n // In a vertical toolbar, Up and Down belong to the toolbar. A menu trigger rendering this\n // hands its open-on-arrow handler in through `onKeyDown`; those two keys skip it (v2).\n const handleKeyDown =\n toolbar?.orientation === 'vertical' && onKeyDown\n ? (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') return;\n onKeyDown(event);\n }\n : onKeyDown;\n\n const pressed = isPressed(props['aria-pressed']);\n const stateProps =\n 'data-state' in props || props['aria-pressed'] === undefined ? {} : { 'data-state': pressed ? 'on' : 'off' };\n\n const shared = {\n size: size ?? toolbar?.size,\n // A caller states the look by `variant` or the rank by `emphasis`, never both.\n ...(emphasis !== undefined\n ? { emphasis }\n : { variant: variant ?? (group ? 'ghost' : toolbar?.backdrop ? 'raised' : 'soft') }),\n // The gray rest is a pair with the default variant: a caller who states a variant or an\n // emphasis gets Button's own colour for it unless they state a colour too.\n color: color ?? (variant || emphasis ? undefined : 'gray'),\n ...stateProps,\n } as const;\n\n // The text and icon-only branches share every prop but the name; one Button renders both.\n const buttonProps = {\n ...rest,\n ...(iconOnly ? { iconOnly: true } : {}),\n ...(asChild ? { asChild: true } : {}),\n ...(handleKeyDown ? { onKeyDown: handleKeyDown } : {}),\n ...shared,\n } as ButtonProps;\n\n // Outside a toolbar there is no row to join: a plain Button, not a throw.\n if (!toolbar) {\n return <Button {...buttonProps} ref={forwardedRef} disabled={off} />;\n }\n\n // A link (or any non-button child) joins the row as a Radix Toolbar.Link, which sets no\n // `type`. Toolbar.Button would stamp `type=\"button\"` on it.\n if (asChild && !isButtonElement(rest.children)) {\n return (\n <ToolbarPrimitive.Link asChild ref={forwardedRef as unknown as React.Ref<HTMLAnchorElement>}>\n <Button {...buttonProps} disabled={off} />\n </ToolbarPrimitive.Link>\n );\n }\n\n return (\n <ToolbarPrimitive.Button asChild ref={forwardedRef} disabled={off}>\n <Button {...buttonProps} />\n </ToolbarPrimitive.Button>\n );\n});\nToolbarButton.displayName = 'Toolbar.Button';\n\ninterface ToolbarOverflowItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect' | 'color'> {\n asChild?: boolean;\n iconOnly?: boolean;\n disabled?: boolean;\n color?: ButtonProps['color'];\n /** A toggle's pressed state. A toggle becomes a checkbox item, so the menu still says whether it is on. */\n pressed?: boolean;\n}\n\n/**\n * A ToolbarButton drawn into the overflow menu: the same element, as a menu item. An icon-only\n * button's `aria-label` becomes the item's text beside its icon, since a menu row has room for\n * words. What prices a box (size, variant, emphasis, iconOnly) does not come across.\n */\nconst ToolbarOverflowItem = React.forwardRef<HTMLDivElement, ToolbarOverflowItemProps>(\n ({ asChild, iconOnly, disabled, color, pressed, children, 'aria-label': label, ...props }, forwardedRef) => {\n const words = iconOnly ? label : undefined;\n const itemProps = {\n ...props,\n ...(iconOnly ? {} : label ? { 'aria-label': label } : {}),\n disabled,\n ...(color ? { color: color as DropdownMenu.ItemProps['color'] } : {}),\n };\n if (asChild && React.isValidElement<{ children?: React.ReactNode }>(children)) {\n const child = words\n ? React.cloneElement(children, undefined, children.props.children, <span>{words}</span>)\n : children;\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef} asChild>\n {child}\n </DropdownMenu.Item>\n );\n }\n if (pressed !== undefined) {\n return (\n <DropdownMenu.CheckboxItem {...itemProps} ref={forwardedRef} checked={pressed}>\n {children}\n {words}\n </DropdownMenu.CheckboxItem>\n );\n }\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef}>\n {children}\n {words}\n </DropdownMenu.Item>\n );\n },\n);\nToolbarOverflowItem.displayName = 'Toolbar.OverflowItem';\n\n// ============================================================================\n// ToolbarOverflow\n// ============================================================================\n\ninterface ToolbarOverflowProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** The accessible name of the \"More\" button. Defaults to `More`. */\n label?: string;\n /** The controls in the cluster, in order. The ones that don't fit move into the \"More\" menu. */\n children?: React.ReactNode;\n}\n\n/** Three filled dots for the \"More\" button. Internal, so the library carries no icon set. */\nfunction MoreIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentcolor\" aria-hidden xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3.25\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"12.75\" cy=\"8\" r=\"1.25\" />\n </svg>\n );\n}\n\n/**\n * A cluster of controls that collapses into a \"More\" menu when the row runs out of room.\n *\n * It takes the room the row leaves, and when its controls don't fit, they move into the menu\n * from the end of the cluster. A `ToolbarButton` shows as a menu item there, and a\n * `ToolbarGroup` as a menu group. Use `useToolbarOverflow()` in your own components to render a\n * different form in the menu.\n *\n * It measures on mount and on resize (v2 ToolbarOverflow): each control's width is cached while\n * it is in the row, since a hidden control has no width to measure.\n */\nconst ToolbarOverflow = React.forwardRef<HTMLDivElement, ToolbarOverflowProps>(\n ({ label = 'More', className, children, ...props }, forwardedRef) => {\n const items = React.Children.toArray(children);\n const count = items.length;\n\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const widths = React.useRef<number[]>([]);\n const triggerWidth = React.useRef(0);\n const [shown, setShown] = React.useState(count);\n const [tick, setTick] = React.useState(0);\n\n // A different set of children is a different set of widths: show them all and measure again.\n const [measuredCount, setMeasuredCount] = React.useState(count);\n if (measuredCount !== count) {\n setMeasuredCount(count);\n setShown(count);\n }\n useLayoutEffect(() => {\n widths.current = [];\n }, [count]);\n\n useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n // The root's children are one seat per visible child, then the trigger.\n const kids = Array.from(root.children) as HTMLElement[];\n const visible = Math.min(shown, count);\n for (let i = 0; i < visible; i++) {\n const el = kids[i];\n if (el) widths.current[i] = el.offsetWidth;\n }\n const trigger = kids[visible];\n if (trigger) triggerWidth.current = trigger.offsetWidth;\n\n const gap = Number.parseFloat(getComputedStyle(root).columnGap) || 0;\n const available = root.clientWidth;\n\n let total = 0;\n let counted = 0;\n for (let i = 0; i < count; i++) {\n const width = widths.current[i];\n // Never seen in the row, so there is nothing to decide with yet.\n if (width === undefined) return;\n // An empty seat leaves the layout, so it spends no gap.\n if (width === 0) continue;\n total += width + (counted > 0 ? gap : 0);\n counted += 1;\n }\n\n let next = count;\n if (total > available) {\n // Before the trigger exists, the row's height stands in for its width: an icon-only\n // button is square. The next pass, before paint, corrects it.\n const budget = available - (triggerWidth.current || root.clientHeight) - gap;\n let used = 0;\n let drawn = 0;\n next = 0;\n for (let i = 0; i < count; i++) {\n const own = widths.current[i]!;\n if (own > 0) {\n const width = own + (drawn > 0 ? gap : 0);\n if (used + width > budget) break;\n used += width;\n drawn += 1;\n }\n next += 1;\n }\n }\n if (next !== shown) setShown(next);\n }, [shown, count, tick]);\n\n // Watch the row and every seat in it: a control whose content changes (a page's actions\n // arriving after navigation) changes its width without the row's width changing.\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(() => setTick((n) => n + 1));\n observer.observe(root);\n for (const seat of Array.from(root.children)) observer.observe(seat);\n return () => observer.disconnect();\n }, [shown, count]);\n\n const attach = React.useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n return (\n <div {...props} ref={attach} className={classNames('kui-ToolbarOverflow', className)}>\n {items.slice(0, shown).map((item, i) => (\n // The seat is a position in the row, so its key is the index.\n <div key={i} className=\"kui-ToolbarOverflowSeat\">\n {item}\n </div>\n ))}\n {shown < count ? (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <ToolbarButton iconOnly aria-label={label}>\n <MoreIcon />\n </ToolbarButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <InOverflowContext.Provider value>{items.slice(shown)}</InOverflowContext.Provider>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n ) : null}\n </div>\n );\n },\n);\nToolbarOverflow.displayName = 'Toolbar.Overflow';\n\n// ============================================================================\n// ToolbarSlot and ToolbarFill\n// ============================================================================\n\ntype SlotEntry = { id: string; node: React.ReactNode };\n\nconst EMPTY_ENTRIES: readonly SlotEntry[] = [];\nconst slotEntries = new Map<string, readonly SlotEntry[]>();\nconst slotListeners = new Set<() => void>();\n/** How many ToolbarSlots of each name are mounted, to warn when one Fill would render twice. */\nconst mountedSlots = new Map<string, number>();\n\nfunction subscribeSlots(listener: () => void) {\n slotListeners.add(listener);\n return () => {\n slotListeners.delete(listener);\n };\n}\n\nfunction setSlotEntry(name: string, id: string, node: React.ReactNode) {\n const list = slotEntries.get(name) ?? EMPTY_ENTRIES;\n const index = list.findIndex((entry) => entry.id === id);\n const next = index === -1 ? [...list, { id, node }] : list.map((entry) => (entry.id === id ? { id, node } : entry));\n slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\nfunction removeSlotEntry(name: string, id: string) {\n const list = slotEntries.get(name);\n if (!list) return;\n const next = list.filter((entry) => entry.id !== id);\n if (next.length === 0) slotEntries.delete(name);\n else slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\ninterface ToolbarSlotProps {\n /**\n * Which `ToolbarFill` renders here. Defaults to `default`. Names are global to the page: mount one\n * slot per name, or the fill renders in each of them (development builds warn).\n */\n name?: string;\n}\n\n/**\n * A place in a toolbar that content elsewhere in the app fills, such as a page adding its own\n * actions to a header toolbar the layout owns.\n *\n * It renders whatever the `ToolbarFill` with the same `name` holds, as if it were written here:\n * the controls take the toolbar's size and join its arrow-key row. It adds no element.\n */\nfunction ToolbarSlot({ name = 'default' }: ToolbarSlotProps) {\n useLayoutEffect(() => {\n const count = (mountedSlots.get(name) ?? 0) + 1;\n mountedSlots.set(name, count);\n if (count > 1 && process.env.NODE_ENV !== 'production') {\n console.warn(`[kookie-ui] ToolbarSlot: ${count} slots named \"${name}\" are mounted. Each renders the ToolbarFill's controls, so they appear more than once. Give each slot its own name.`);\n }\n return () => {\n const left = (mountedSlots.get(name) ?? 1) - 1;\n if (left > 0) mountedSlots.set(name, left);\n else mountedSlots.delete(name);\n };\n }, [name]);\n const entries = React.useSyncExternalStore(\n subscribeSlots,\n () => slotEntries.get(name) ?? EMPTY_ENTRIES,\n () => EMPTY_ENTRIES,\n );\n return (\n <>\n {entries.map((entry) => (\n <React.Fragment key={entry.id}>{entry.node}</React.Fragment>\n ))}\n </>\n );\n}\nToolbarSlot.displayName = 'Toolbar.Slot';\n\ninterface ToolbarFillProps {\n /** The `ToolbarSlot` to render into. Defaults to `default`. */\n name?: string;\n /** The controls to show in the slot, such as `ToolbarButton`s. */\n children?: React.ReactNode;\n}\n\n/**\n * Sends its children to the `ToolbarSlot` with the same `name`, and renders nothing where it\n * is written. Use it instead of a React portal: a portal keeps the page's React tree, so a\n * ToolbarButton in it can't join the toolbar's arrow keys.\n *\n * The children render inside the toolbar, so they read the toolbar's context, not the page's.\n * They appear after the page mounts on the client, not in server-rendered HTML.\n */\nfunction ToolbarFill({ name = 'default', children }: ToolbarFillProps) {\n const id = React.useId();\n useLayoutEffect(() => {\n setSlotEntry(name, id, children);\n }, [name, id, children]);\n useLayoutEffect(() => () => removeSlotEntry(name, id), [name, id]);\n return null;\n}\nToolbarFill.displayName = 'Toolbar.Fill';\n\n// ============================================================================\n// ToolbarSeparator\n// ============================================================================\n\ntype ToolbarSeparatorProps = ComponentPropsWithout<typeof ToolbarPrimitive.Separator, RemovedProps | 'orientation'>;\n\n/**\n * A gray hairline between two clusters, announced as a separator. Its direction is always\n * opposite to the toolbar's. In a `ToolbarOverflow`'s menu it is a menu separator.\n */\nconst ToolbarSeparator = React.forwardRef<HTMLDivElement, ToolbarSeparatorProps>(\n ({ className, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n if (overflow) return <DropdownMenu.Separator {...props} ref={forwardedRef} className={className} />;\n if (!toolbar) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n data-orientation=\"vertical\"\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n }\n return (\n <ToolbarPrimitive.Separator\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n },\n);\nToolbarSeparator.displayName = 'Toolbar.Separator';\n\n// ============================================================================\n// ToolbarTitle\n// ============================================================================\n\n/** The title's text step: one step above the label of a button at the same size. */\nconst TITLE_SIZE = { '1': '2', '2': '3', '3': '4', '4': '5' } as const satisfies Record<ToolbarSize, TextProps['size']>;\n\ninterface ToolbarTitleProps {\n /** The title text. With none, the title renders nothing. */\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n /** The id of the title, so that the toolbar's `aria-labelledby` can point at it. */\n id?: string;\n}\n\n/**\n * What the row is about, at its leading edge. One line: it truncates rather than wrapping.\n * Its text step follows the toolbar's `size`, and it takes more air from the controls beside it\n * than they take from each other.\n */\nconst ToolbarTitle = React.forwardRef<HTMLSpanElement, ToolbarTitleProps>(\n ({ className, children, style, id }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const themeSize = useThemeSize<ToolbarSize>(undefined, toolbarRootPropDefs.size);\n const size = toolbar?.size ?? themeSize;\n if (children === undefined || children === null || children === false) return null;\n return (\n <Text\n ref={forwardedRef}\n as=\"span\"\n size={TITLE_SIZE[size]}\n weight=\"medium\"\n truncate\n id={id}\n style={style}\n className={classNames('kui-ToolbarTitle', className)}\n >\n {children}\n </Text>\n );\n },\n);\nToolbarTitle.displayName = 'Toolbar.Title';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nconst Toolbar = Object.assign(ToolbarRoot, {\n Root: ToolbarRoot,\n Group: ToolbarGroup,\n Button: ToolbarButton,\n Separator: ToolbarSeparator,\n Title: ToolbarTitle,\n Overflow: ToolbarOverflow,\n Slot: ToolbarSlot,\n Fill: ToolbarFill,\n});\n\nexport {\n Toolbar,\n ToolbarGroup,\n ToolbarButton,\n ToolbarSeparator,\n ToolbarTitle,\n ToolbarOverflow,\n ToolbarSlot,\n ToolbarFill,\n useToolbarOverflow,\n ToolbarRoot as Root,\n ToolbarGroup as Group,\n ToolbarButton as Button,\n ToolbarSeparator as Separator,\n ToolbarTitle as Title,\n ToolbarOverflow as Overflow,\n ToolbarSlot as Slot,\n ToolbarFill as Fill,\n};\nexport type {\n ToolbarProps,\n ToolbarGroupProps,\n ToolbarButtonProps,\n ToolbarSeparatorProps,\n ToolbarTitleProps,\n ToolbarOverflowProps,\n ToolbarSlotProps,\n ToolbarFillProps,\n ToolbarProps as RootProps,\n ToolbarGroupProps as GroupProps,\n ToolbarButtonProps as ButtonProps,\n ToolbarSeparatorProps as SeparatorProps,\n ToolbarTitleProps as TitleProps,\n ToolbarOverflowProps as OverflowProps,\n ToolbarSlotProps as SlotProps,\n ToolbarFillProps as FillProps,\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useLayoutEffect", "classNames", "ToolbarPrimitive", "ToolbarContext", "ToolbarGroupContext", "InOverflowContext", "useToolbarOverflow", "ToolbarRoot", "props", "forwardedRef", "band", "usePaneBandSize", "size", "useThemeSize", "toolbarRootPropDefs", "orientation", "className", "_orientation", "backdrop", "children", "rootProps", "extractProps", "layoutPropDefs", "context", "ToolbarPrimitive", "classNames", "ToolbarGroup", "disabled", "toolbar", "overflow", "group", "DropdownMenuGroup", "OVERFLOW_ITEM_KEYS", "isPressed", "value", "isButtonElement", "ToolbarButton", "iconOnly", "variant", "emphasis", "color", "asChild", "onKeyDown", "rest", "off", "passed", "key", "ToolbarOverflowItem", "handleKeyDown", "event", "pressed", "stateProps", "shared", "buttonProps", "Button", "label", "words", "itemProps", "child", "DropdownMenuItem", "DropdownMenuCheckboxItem", "MoreIcon", "ToolbarOverflow", "items", "count", "rootRef", "widths", "triggerWidth", "shown", "setShown", "tick", "setTick", "measuredCount", "setMeasuredCount", "useLayoutEffect", "root", "kids", "visible", "i", "el", "trigger", "gap", "available", "total", "counted", "width", "next", "budget", "used", "drawn", "own", "observer", "n", "seat", "attach", "node", "item", "DropdownMenuRoot", "DropdownMenuTrigger", "DropdownMenuContent", "EMPTY_ENTRIES", "slotEntries", "slotListeners", "mountedSlots", "subscribeSlots", "listener", "setSlotEntry", "name", "id", "list", "entry", "removeSlotEntry", "ToolbarSlot", "left", "entries", "ToolbarFill", "ToolbarSeparator", "DropdownMenuSeparator", "TITLE_SIZE", "ToolbarTitle", "style", "themeSize", "Text", "Toolbar"]
3
+ "sources": ["../../src/components/toolbar.tsx", "../../src/components/toolbar.props.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { useLayoutEffect } from 'radix-ui/internal';\nimport classNames from 'classnames';\nimport { Toolbar as ToolbarPrimitive } from 'radix-ui';\n\nimport { toolbarRootPropDefs } from './toolbar.props.js';\nimport { Button } from './button.js';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { usePaneBandSize } from './_internal/pane-chrome.js';\n\nimport type { ButtonProps } from './button.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { TextProps } from './text.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ButtonRankProps } from './button.js';\n\n/*\n * Toolbar takes Kookie UI v2's contract (v2: components/toolbar), built on Radix instead of\n * Base UI. A toolbar is a row of controls with ONE tab stop: `role=\"toolbar\"`, and the arrow\n * keys move focus between its controls. That keyboard is the reason it is a component.\n *\n * Its `size` reaches every control inside it that does not state its own. The row itself paints\n * nothing; a `ToolbarGroup` draws a quiet well around controls that belong together, and a\n * `ToolbarSeparator` draws a gray hairline between clusters. Use a `Flex` to cluster controls\n * without a well: the row spaces the clusters with `space-between`.\n */\n\ntype ToolbarSize = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['size']>;\ntype ToolbarOrientation = NonNullable<GetPropDefTypes<typeof toolbarRootPropDefs>['orientation']>;\n\ninterface ToolbarContextValue {\n size: ToolbarSize;\n orientation: ToolbarOrientation;\n backdrop: boolean;\n}\n\nconst ToolbarContext = React.createContext<ToolbarContextValue | null>(null);\n\n/** Set by a `ToolbarGroup`: its children rest quiet, and `disabled` turns them all off. */\nconst ToolbarGroupContext = React.createContext<{ disabled: boolean } | null>(null);\n\n/**\n * True while a subtree is drawn into a `ToolbarOverflow`'s menu instead of into the row (v2\n * `InOverflow`). The parts answer it themselves: a `ToolbarButton` renders a menu item, a\n * `ToolbarGroup` a menu group, a `ToolbarSeparator` a menu separator.\n */\nconst InOverflowContext = React.createContext(false);\n\n/**\n * True while this subtree is drawn into a `ToolbarOverflow`'s \"More\" menu instead of the row.\n *\n * The toolbar's own parts handle this already. Use it in your own component inside a\n * `ToolbarOverflow` to render a different form in the menu.\n */\nfunction useToolbarOverflow(): boolean {\n return React.useContext(InOverflowContext);\n}\n\n// ============================================================================\n// Toolbar (root)\n// ============================================================================\n\ntype ToolbarOwnProps = GetPropDefTypes<typeof toolbarRootPropDefs>;\n\ninterface ToolbarProps\n extends ComponentPropsWithout<typeof ToolbarPrimitive.Root, RemovedProps | 'orientation'>,\n ToolbarOwnProps,\n LayoutProps {\n /**\n * Gives every control a surface of its own, for a row that content passes behind, such as\n * `Shell.PaneHeader float`. Buttons rest `raised` instead of `soft`, and a group's well is\n * solid and raised.\n */\n backdrop?: boolean;\n}\n\n/**\n * A row of controls with one keyboard tab stop. The arrow keys move focus between the controls.\n *\n * Give it an `aria-label` (or `aria-labelledby`) that says what the controls act on.\n *\n * @example\n * ```tsx\n * <Toolbar aria-label=\"Formatting\">\n * <ToolbarGroup>\n * <ToolbarButton iconOnly aria-label=\"Bold\" aria-pressed={bold} onClick={toggleBold}>\n * <HugeiconsIcon icon={TextBoldIcon} strokeWidth={1.75} />\n * </ToolbarButton>\n * </ToolbarGroup>\n * <ToolbarSeparator />\n * <ToolbarButton>Share</ToolbarButton>\n * </Toolbar>\n * ```\n */\nconst ToolbarRoot = React.forwardRef<HTMLDivElement, ToolbarProps>((props, forwardedRef) => {\n // Inside a Shell (a pane's header or footer, or the content area), a toolbar with no size\n // rests one step above the Shell's. A pane's scrolling list has no band.\n const band = usePaneBandSize();\n // Elsewhere it takes the nearest Theme's size.\n const size: ToolbarSize = useThemeSize(props.size ?? band ?? undefined, toolbarRootPropDefs.size);\n const orientation: ToolbarOrientation = props.orientation ?? toolbarRootPropDefs.orientation.default;\n const { className, orientation: _orientation, backdrop = false, children, ...rootProps } = extractProps(\n { ...props, size },\n toolbarRootPropDefs,\n layoutPropDefs,\n );\n\n const context = React.useMemo(() => ({ size, orientation, backdrop }), [size, orientation, backdrop]);\n\n return (\n <ToolbarPrimitive.Root\n {...rootProps}\n ref={forwardedRef}\n orientation={orientation}\n data-backdrop={backdrop || undefined}\n className={classNames('kui-Toolbar', className)}\n >\n <ToolbarContext.Provider value={context}>{children}</ToolbarContext.Provider>\n </ToolbarPrimitive.Root>\n );\n});\nToolbarRoot.displayName = 'Toolbar';\n\n// ============================================================================\n// ToolbarGroup\n// ============================================================================\n\ninterface ToolbarGroupProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** Turns every control in the group off at once. */\n disabled?: boolean;\n}\n\n/**\n * Controls that belong together, drawn as one quiet well that stands level with a button\n * beside it. Buttons inside it rest as `ghost` unless they state a `variant`.\n * To cluster controls without a well, use a `Flex`.\n *\n * In a `ToolbarOverflow`'s menu it is a menu group. Outside a `Toolbar` (rendered through a\n * portal, for example) it still draws its well, as a horizontal group.\n */\nconst ToolbarGroup = React.forwardRef<HTMLDivElement, ToolbarGroupProps>(\n ({ className, disabled = false, children, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n const group = React.useMemo(() => ({ disabled }), [disabled]);\n\n if (overflow) {\n return (\n <DropdownMenu.Group {...props} ref={forwardedRef} className={className}>\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </DropdownMenu.Group>\n );\n }\n\n return (\n <div\n role=\"group\"\n data-orientation={toolbar?.orientation ?? 'horizontal'}\n data-disabled={disabled || undefined}\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarGroup', className)}\n >\n <ToolbarGroupContext.Provider value={group}>{children}</ToolbarGroupContext.Provider>\n </div>\n );\n },\n);\nToolbarGroup.displayName = 'Toolbar.Group';\n\n// ============================================================================\n// ToolbarButton\n// ============================================================================\n\ntype ToolbarButtonBaseProps = Omit<ButtonProps, 'as' | 'variant' | 'emphasis'>;\n\n/** A labelled button: takes every `Button` prop. */\ntype ToolbarTextButtonProps = ToolbarButtonBaseProps &\n ButtonRankProps & {\n iconOnly?: false;\n};\n\n/** An icon-only button: renders `Button iconOnly`, and the type requires an `aria-label`. */\ntype ToolbarIconButtonProps = Omit<ToolbarButtonBaseProps, 'aria-label' | 'aria-labelledby' | 'fullWidth'> &\n ButtonRankProps & {\n iconOnly: true;\n /** The control's accessible name. An icon has no words of its own, so this is required. */\n 'aria-label': string;\n};\n\ntype ToolbarButtonProps = ToolbarTextButtonProps | ToolbarIconButtonProps;\n\n/** The plain DOM props, besides handlers, ARIA and data attributes, a menu row takes from a ToolbarButton. */\nconst OVERFLOW_ITEM_KEYS = new Set(['id', 'className', 'style', 'title']);\n\nfunction isPressed(value: React.AriaAttributes['aria-pressed']) {\n return value === true || value === 'true';\n}\n\n/** Does an `asChild` child render a native `<button>`? Only then is it a Radix Toolbar.Button. */\nfunction isButtonElement(children: React.ReactNode) {\n return React.isValidElement(children) && children.type === 'button';\n}\n\n/**\n * A `Button` that joins the toolbar's keyboard navigation, so a row of them is one tab stop.\n *\n * Set `iconOnly` (with an `aria-label`) for a symbol-only control. Set `aria-pressed` for a\n * control that toggles; a pressed button wears Button's pressed look. Set `asChild` to render\n * your own element, such as a link: `<ToolbarButton asChild><a href=\"/docs\">Docs</a></ToolbarButton>`.\n * A link stays in the arrow-key row and gets no `type` attribute.\n *\n * It takes the toolbar's `size`, and rests as a gray `soft` button (`raised` in a toolbar with\n * `backdrop`, gray `ghost` inside a `ToolbarGroup`). A stated `size`, `variant` or `color` wins; a\n * stated `variant` without a `color` takes Button's own default colour.\n *\n * In a `ToolbarOverflow`'s menu it renders a menu item; an icon-only button uses its\n * `aria-label` as the item's text. Outside a `Toolbar` (rendered through a React portal, for\n * example) it renders a plain Button with the same rest look, as its own tab stop. Use\n * `ToolbarSlot` and `ToolbarFill` for a control that should join the row's arrow keys.\n */\nconst ToolbarButton = React.forwardRef<HTMLButtonElement, ToolbarButtonProps>((props, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const group = React.useContext(ToolbarGroupContext);\n const overflow = React.useContext(InOverflowContext);\n const { iconOnly, size, variant, emphasis, color, disabled, asChild, onKeyDown, ...rest } = props;\n const off = disabled || group?.disabled || undefined;\n\n if (overflow) {\n // Only what a menu row means comes across: handlers, ARIA, data attributes, id, class and\n // style. Button's box props (size, loading, tooltip, fullWidth and the rest) would land on the\n // DOM as unknown attributes. A wrapping menu trigger hands its open handlers (onPointerDown,\n // onKeyDown), aria-expanded/haspopup/controls and data-state in through these, so it still\n // opens from the row.\n const passed: Record<string, unknown> = {};\n for (const key of Object.keys(rest)) {\n if (/^on[A-Z]/.test(key) || key.startsWith('aria-') || key.startsWith('data-') || OVERFLOW_ITEM_KEYS.has(key)) {\n passed[key] = (rest as Record<string, unknown>)[key];\n }\n }\n if (onKeyDown) passed.onKeyDown = onKeyDown;\n return (\n <ToolbarOverflowItem\n {...(passed as React.ComponentPropsWithoutRef<'div'>)}\n ref={forwardedRef as unknown as React.Ref<HTMLDivElement>}\n asChild={asChild}\n iconOnly={iconOnly}\n disabled={off}\n color={color}\n pressed={props['aria-pressed'] === undefined ? undefined : isPressed(props['aria-pressed'])}\n >\n {rest.children}\n </ToolbarOverflowItem>\n );\n }\n\n // In a vertical toolbar, Up and Down belong to the toolbar. A menu trigger rendering this\n // hands its open-on-arrow handler in through `onKeyDown`; those two keys skip it (v2).\n const handleKeyDown =\n toolbar?.orientation === 'vertical' && onKeyDown\n ? (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') return;\n onKeyDown(event);\n }\n : onKeyDown;\n\n const pressed = isPressed(props['aria-pressed']);\n const stateProps =\n 'data-state' in props || props['aria-pressed'] === undefined ? {} : { 'data-state': pressed ? 'on' : 'off' };\n\n const shared = {\n size: size ?? toolbar?.size,\n // A caller states the look by `variant` or the rank by `emphasis`, never both.\n ...(emphasis !== undefined\n ? { emphasis }\n : { variant: variant ?? (group ? 'ghost' : toolbar?.backdrop ? 'raised' : 'soft') }),\n // The gray rest is a pair with the default variant: a caller who states a variant or an\n // emphasis gets Button's own colour for it unless they state a colour too.\n color: color ?? (variant || emphasis ? undefined : 'gray'),\n ...stateProps,\n } as const;\n\n // The text and icon-only branches share every prop but the name; one Button renders both.\n const buttonProps = {\n ...rest,\n ...(iconOnly ? { iconOnly: true } : {}),\n ...(asChild ? { asChild: true } : {}),\n ...(handleKeyDown ? { onKeyDown: handleKeyDown } : {}),\n ...shared,\n } as ButtonProps;\n\n // Outside a toolbar there is no row to join: a plain Button, not a throw.\n if (!toolbar) {\n return <Button {...buttonProps} ref={forwardedRef} disabled={off} />;\n }\n\n // A link (or any non-button child) joins the row as a Radix Toolbar.Link, which sets no\n // `type`. Toolbar.Button would stamp `type=\"button\"` on it.\n if (asChild && !isButtonElement(rest.children)) {\n return (\n <ToolbarPrimitive.Link asChild ref={forwardedRef as unknown as React.Ref<HTMLAnchorElement>}>\n <Button {...buttonProps} disabled={off} />\n </ToolbarPrimitive.Link>\n );\n }\n\n return (\n <ToolbarPrimitive.Button asChild ref={forwardedRef} disabled={off}>\n <Button {...buttonProps} />\n </ToolbarPrimitive.Button>\n );\n});\nToolbarButton.displayName = 'Toolbar.Button';\n\ninterface ToolbarOverflowItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect' | 'color'> {\n asChild?: boolean;\n iconOnly?: boolean;\n disabled?: boolean;\n color?: ButtonProps['color'];\n /** A toggle's pressed state. A toggle becomes a checkbox item, so the menu still says whether it is on. */\n pressed?: boolean;\n}\n\n/**\n * A ToolbarButton drawn into the overflow menu: the same element, as a menu item. An icon-only\n * button's `aria-label` becomes the item's text beside its icon, since a menu row has room for\n * words. What prices a box (size, variant, emphasis, iconOnly) does not come across.\n */\nconst ToolbarOverflowItem = React.forwardRef<HTMLDivElement, ToolbarOverflowItemProps>(\n ({ asChild, iconOnly, disabled, color, pressed, children, 'aria-label': label, ...props }, forwardedRef) => {\n const words = iconOnly ? label : undefined;\n const itemProps = {\n ...props,\n ...(iconOnly ? {} : label ? { 'aria-label': label } : {}),\n disabled,\n ...(color ? { color: color as DropdownMenu.ItemProps['color'] } : {}),\n };\n if (asChild && React.isValidElement<{ children?: React.ReactNode }>(children)) {\n const child = words\n ? React.cloneElement(children, undefined, children.props.children, <span>{words}</span>)\n : children;\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef} asChild>\n {child}\n </DropdownMenu.Item>\n );\n }\n if (pressed !== undefined) {\n return (\n <DropdownMenu.CheckboxItem {...itemProps} ref={forwardedRef} checked={pressed}>\n {children}\n {words}\n </DropdownMenu.CheckboxItem>\n );\n }\n return (\n <DropdownMenu.Item {...itemProps} ref={forwardedRef}>\n {children}\n {words}\n </DropdownMenu.Item>\n );\n },\n);\nToolbarOverflowItem.displayName = 'Toolbar.OverflowItem';\n\n// ============================================================================\n// ToolbarOverflow\n// ============================================================================\n\ninterface ToolbarOverflowProps extends ComponentPropsWithout<'div', RemovedProps> {\n /** The accessible name of the \"More\" button. Defaults to `More`. */\n label?: string;\n /** The controls in the cluster, in order. The ones that don't fit move into the \"More\" menu. */\n children?: React.ReactNode;\n}\n\n/** Three filled dots for the \"More\" button. Internal, so the library carries no icon set. */\nfunction MoreIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentcolor\" aria-hidden xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"3.25\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" />\n <circle cx=\"12.75\" cy=\"8\" r=\"1.25\" />\n </svg>\n );\n}\n\n/**\n * A cluster of controls that collapses into a \"More\" menu when the row runs out of room.\n *\n * It takes the room the row leaves, and when its controls don't fit, they move into the menu\n * from the end of the cluster. A `ToolbarButton` shows as a menu item there, and a\n * `ToolbarGroup` as a menu group. Use `useToolbarOverflow()` in your own components to render a\n * different form in the menu.\n *\n * It measures on mount and on resize (v2 ToolbarOverflow): each control's width is cached while\n * it is in the row, since a hidden control has no width to measure.\n */\nconst ToolbarOverflow = React.forwardRef<HTMLDivElement, ToolbarOverflowProps>(\n ({ label = 'More', className, children, ...props }, forwardedRef) => {\n const items = React.Children.toArray(children);\n const count = items.length;\n\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const widths = React.useRef<number[]>([]);\n const triggerWidth = React.useRef(0);\n const [shown, setShown] = React.useState(count);\n const [tick, setTick] = React.useState(0);\n\n // A different set of children is a different set of widths: show them all and measure again.\n const [measuredCount, setMeasuredCount] = React.useState(count);\n if (measuredCount !== count) {\n setMeasuredCount(count);\n setShown(count);\n }\n useLayoutEffect(() => {\n widths.current = [];\n }, [count]);\n\n useLayoutEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n\n // The root's children are one seat per visible child, then the trigger.\n const kids = Array.from(root.children) as HTMLElement[];\n const visible = Math.min(shown, count);\n for (let i = 0; i < visible; i++) {\n const el = kids[i];\n if (el) widths.current[i] = el.offsetWidth;\n }\n const trigger = kids[visible];\n if (trigger) triggerWidth.current = trigger.offsetWidth;\n\n const gap = Number.parseFloat(getComputedStyle(root).columnGap) || 0;\n const available = root.clientWidth;\n\n let total = 0;\n let counted = 0;\n for (let i = 0; i < count; i++) {\n const width = widths.current[i];\n // Never seen in the row, so there is nothing to decide with yet.\n if (width === undefined) return;\n // An empty seat leaves the layout, so it spends no gap.\n if (width === 0) continue;\n total += width + (counted > 0 ? gap : 0);\n counted += 1;\n }\n\n let next = count;\n if (total > available) {\n // Before the trigger exists, the row's height stands in for its width: an icon-only\n // button is square. The next pass, before paint, corrects it.\n const budget = available - (triggerWidth.current || root.clientHeight) - gap;\n let used = 0;\n let drawn = 0;\n next = 0;\n for (let i = 0; i < count; i++) {\n const own = widths.current[i]!;\n if (own > 0) {\n const width = own + (drawn > 0 ? gap : 0);\n if (used + width > budget) break;\n used += width;\n drawn += 1;\n }\n next += 1;\n }\n }\n if (next !== shown) setShown(next);\n }, [shown, count, tick]);\n\n // Watch the row and every seat in it: a control whose content changes (a page's actions\n // arriving after navigation) changes its width without the row's width changing.\n React.useEffect(() => {\n const root = rootRef.current;\n if (!root || typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(() => setTick((n) => n + 1));\n observer.observe(root);\n for (const seat of Array.from(root.children)) observer.observe(seat);\n return () => observer.disconnect();\n }, [shown, count]);\n\n const attach = React.useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n return (\n <div {...props} ref={attach} className={classNames('kui-ToolbarOverflow', className)}>\n {items.slice(0, shown).map((item, i) => (\n // The seat is a position in the row, so its key is the index.\n <div key={i} className=\"kui-ToolbarOverflowSeat\">\n {item}\n </div>\n ))}\n {shown < count ? (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <ToolbarButton iconOnly aria-label={label}>\n <MoreIcon />\n </ToolbarButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <InOverflowContext.Provider value>{items.slice(shown)}</InOverflowContext.Provider>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n ) : null}\n </div>\n );\n },\n);\nToolbarOverflow.displayName = 'Toolbar.Overflow';\n\n// ============================================================================\n// ToolbarSlot and ToolbarFill\n// ============================================================================\n\ntype SlotEntry = { id: string; node: React.ReactNode };\n\nconst EMPTY_ENTRIES: readonly SlotEntry[] = [];\nconst slotEntries = new Map<string, readonly SlotEntry[]>();\nconst slotListeners = new Set<() => void>();\n/** How many ToolbarSlots of each name are mounted, to warn when one Fill would render twice. */\nconst mountedSlots = new Map<string, number>();\n\nfunction subscribeSlots(listener: () => void) {\n slotListeners.add(listener);\n return () => {\n slotListeners.delete(listener);\n };\n}\n\nfunction setSlotEntry(name: string, id: string, node: React.ReactNode) {\n const list = slotEntries.get(name) ?? EMPTY_ENTRIES;\n const index = list.findIndex((entry) => entry.id === id);\n const next = index === -1 ? [...list, { id, node }] : list.map((entry) => (entry.id === id ? { id, node } : entry));\n slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\nfunction removeSlotEntry(name: string, id: string) {\n const list = slotEntries.get(name);\n if (!list) return;\n const next = list.filter((entry) => entry.id !== id);\n if (next.length === 0) slotEntries.delete(name);\n else slotEntries.set(name, next);\n slotListeners.forEach((listener) => listener());\n}\n\ninterface ToolbarSlotProps {\n /**\n * Which `ToolbarFill` renders here. Defaults to `default`. Names are global to the page: mount one\n * slot per name, or the fill renders in each of them (development builds warn).\n */\n name?: string;\n}\n\n/**\n * A place in a toolbar that content elsewhere in the app fills, such as a page adding its own\n * actions to a header toolbar the layout owns.\n *\n * It renders whatever the `ToolbarFill` with the same `name` holds, as if it were written here:\n * the controls take the toolbar's size and join its arrow-key row. It adds no element.\n */\nfunction ToolbarSlot({ name = 'default' }: ToolbarSlotProps) {\n useLayoutEffect(() => {\n const count = (mountedSlots.get(name) ?? 0) + 1;\n mountedSlots.set(name, count);\n if (count > 1 && process.env.NODE_ENV !== 'production') {\n console.warn(`[kookie-ui] ToolbarSlot: ${count} slots named \"${name}\" are mounted. Each renders the ToolbarFill's controls, so they appear more than once. Give each slot its own name.`);\n }\n return () => {\n const left = (mountedSlots.get(name) ?? 1) - 1;\n if (left > 0) mountedSlots.set(name, left);\n else mountedSlots.delete(name);\n };\n }, [name]);\n const entries = React.useSyncExternalStore(\n subscribeSlots,\n () => slotEntries.get(name) ?? EMPTY_ENTRIES,\n () => EMPTY_ENTRIES,\n );\n return (\n <>\n {entries.map((entry) => (\n <React.Fragment key={entry.id}>{entry.node}</React.Fragment>\n ))}\n </>\n );\n}\nToolbarSlot.displayName = 'Toolbar.Slot';\n\ninterface ToolbarFillProps {\n /** The `ToolbarSlot` to render into. Defaults to `default`. */\n name?: string;\n /** The controls to show in the slot, such as `ToolbarButton`s. */\n children?: React.ReactNode;\n}\n\n/**\n * Sends its children to the `ToolbarSlot` with the same `name`, and renders nothing where it\n * is written. Use it instead of a React portal: a portal keeps the page's React tree, so a\n * ToolbarButton in it can't join the toolbar's arrow keys.\n *\n * The children render inside the toolbar, so they read the toolbar's context, not the page's.\n * They appear after the page mounts on the client, not in server-rendered HTML.\n */\nfunction ToolbarFill({ name = 'default', children }: ToolbarFillProps) {\n const id = React.useId();\n useLayoutEffect(() => {\n setSlotEntry(name, id, children);\n }, [name, id, children]);\n useLayoutEffect(() => () => removeSlotEntry(name, id), [name, id]);\n return null;\n}\nToolbarFill.displayName = 'Toolbar.Fill';\n\n// ============================================================================\n// ToolbarSeparator\n// ============================================================================\n\ntype ToolbarSeparatorProps = ComponentPropsWithout<typeof ToolbarPrimitive.Separator, RemovedProps | 'orientation'>;\n\n/**\n * A gray hairline between two clusters, announced as a separator. Its direction is always\n * opposite to the toolbar's. In a `ToolbarOverflow`'s menu it is a menu separator.\n */\nconst ToolbarSeparator = React.forwardRef<HTMLDivElement, ToolbarSeparatorProps>(\n ({ className, ...props }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const overflow = React.useContext(InOverflowContext);\n if (overflow) return <DropdownMenu.Separator {...props} ref={forwardedRef} className={className} />;\n if (!toolbar) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n data-orientation=\"vertical\"\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n }\n return (\n <ToolbarPrimitive.Separator\n {...props}\n ref={forwardedRef}\n className={classNames('kui-ToolbarSeparator', className)}\n />\n );\n },\n);\nToolbarSeparator.displayName = 'Toolbar.Separator';\n\n// ============================================================================\n// ToolbarTitle\n// ============================================================================\n\n/** The title's text step: one step above the label of a button at the same size. */\nconst TITLE_SIZE = { '1': '2', '2': '3', '3': '4', '4': '5' } as const satisfies Record<ToolbarSize, TextProps['size']>;\n\ninterface ToolbarTitleProps {\n /** The title text. With none, the title renders nothing. */\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n /** The id of the title, so that the toolbar's `aria-labelledby` can point at it. */\n id?: string;\n}\n\n/**\n * What the row is about, at its leading edge. One line: it truncates rather than wrapping.\n * Its text step follows the toolbar's `size`, and it takes more air from the controls beside it\n * than they take from each other.\n */\nconst ToolbarTitle = React.forwardRef<HTMLSpanElement, ToolbarTitleProps>(\n ({ className, children, style, id }, forwardedRef) => {\n const toolbar = React.useContext(ToolbarContext);\n const themeSize = useThemeSize<ToolbarSize>(undefined, toolbarRootPropDefs.size);\n const size = toolbar?.size ?? themeSize;\n if (children === undefined || children === null || children === false) return null;\n return (\n <Text\n ref={forwardedRef}\n as=\"span\"\n size={TITLE_SIZE[size]}\n weight=\"medium\"\n truncate\n id={id}\n style={style}\n className={classNames('kui-ToolbarTitle', className)}\n >\n {children}\n </Text>\n );\n },\n);\nToolbarTitle.displayName = 'Toolbar.Title';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nconst Toolbar = Object.assign(ToolbarRoot, {\n Root: ToolbarRoot,\n Group: ToolbarGroup,\n Button: ToolbarButton,\n Separator: ToolbarSeparator,\n Title: ToolbarTitle,\n Overflow: ToolbarOverflow,\n Slot: ToolbarSlot,\n Fill: ToolbarFill,\n});\n\nexport {\n Toolbar,\n ToolbarGroup,\n ToolbarButton,\n ToolbarSeparator,\n ToolbarTitle,\n ToolbarOverflow,\n ToolbarSlot,\n ToolbarFill,\n useToolbarOverflow,\n ToolbarRoot as Root,\n ToolbarGroup as Group,\n ToolbarButton as Button,\n ToolbarSeparator as Separator,\n ToolbarTitle as Title,\n ToolbarOverflow as Overflow,\n ToolbarSlot as Slot,\n ToolbarFill as Fill,\n};\nexport type {\n ToolbarProps,\n ToolbarGroupProps,\n ToolbarButtonProps,\n ToolbarSeparatorProps,\n ToolbarTitleProps,\n ToolbarOverflowProps,\n ToolbarSlotProps,\n ToolbarFillProps,\n ToolbarProps as RootProps,\n ToolbarGroupProps as GroupProps,\n ToolbarButtonProps as ButtonProps,\n ToolbarSeparatorProps as SeparatorProps,\n ToolbarTitleProps as TitleProps,\n ToolbarOverflowProps as OverflowProps,\n ToolbarSlotProps as SlotProps,\n ToolbarFillProps as FillProps,\n};\n", "import type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst orientations = ['horizontal', 'vertical'] as const;\n\n/**\n * Toolbar prop definitions.\n *\n * `size` is one value for the whole row (not responsive): the row hands it to every control\n * inside it that does not state its own, through context, so it has to be a single index.\n */\nconst toolbarRootPropDefs = {\n /**\n * Size step of the row and of every control in it that doesn't set its own `size`.\n * Matches Button's sizes: 1 (28px) to 4 (48px). Unset inside a Shell, it rests one step above\n * the Shell's `size`, except in a pane's `Shell.Scroll` list and in a Popover, Dialog, Sheet or\n * menu. Elsewhere it takes Theme size, else 2.\n */\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2' },\n /**\n * Direction of the row and of the arrow keys. Use `vertical` for a strip of tools along an edge.\n */\n orientation: { type: 'enum', values: orientations, default: 'horizontal' },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n orientation: PropDef<(typeof orientations)[number]>;\n};\n\nexport { toolbarRootPropDefs };\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useLayoutEffect", "classNames", "ToolbarPrimitive", "sizes", "orientations", "toolbarRootPropDefs", "ToolbarContext", "ToolbarGroupContext", "InOverflowContext", "useToolbarOverflow", "ToolbarRoot", "props", "forwardedRef", "band", "usePaneBandSize", "size", "useThemeSize", "toolbarRootPropDefs", "orientation", "className", "_orientation", "backdrop", "children", "rootProps", "extractProps", "layoutPropDefs", "context", "ToolbarPrimitive", "classNames", "ToolbarGroup", "disabled", "toolbar", "overflow", "group", "DropdownMenuGroup", "OVERFLOW_ITEM_KEYS", "isPressed", "value", "isButtonElement", "ToolbarButton", "iconOnly", "variant", "emphasis", "color", "asChild", "onKeyDown", "rest", "off", "passed", "key", "ToolbarOverflowItem", "handleKeyDown", "event", "pressed", "stateProps", "shared", "buttonProps", "Button", "label", "words", "itemProps", "child", "DropdownMenuItem", "DropdownMenuCheckboxItem", "MoreIcon", "ToolbarOverflow", "items", "count", "rootRef", "widths", "triggerWidth", "shown", "setShown", "tick", "setTick", "measuredCount", "setMeasuredCount", "useLayoutEffect", "root", "kids", "visible", "i", "el", "trigger", "gap", "available", "total", "counted", "width", "next", "budget", "used", "drawn", "own", "observer", "n", "seat", "attach", "node", "item", "DropdownMenuRoot", "DropdownMenuTrigger", "DropdownMenuContent", "EMPTY_ENTRIES", "slotEntries", "slotListeners", "mountedSlots", "subscribeSlots", "listener", "setSlotEntry", "name", "id", "list", "entry", "removeSlotEntry", "ToolbarSlot", "left", "entries", "ToolbarFill", "ToolbarSeparator", "DropdownMenuSeparator", "TITLE_SIZE", "ToolbarTitle", "style", "themeSize", "Text", "Toolbar"]
7
7
  }
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{a}from"./chunk-OTCVSJT7.js";import{a as s}from"./chunk-BQC2P3SN.js";import{b as n,c as i,d as m}from"./chunk-UJ7JERJ5.js";import{d as p}from"./chunk-HBWBPBSA.js";import{a as r}from"./chunk-CLJ6SEGP.js";import{c as t}from"./chunk-OKQAVYW4.js";import*as e from"react";import L from"classnames";var y=["1","2","3","4","5","6","7","8","9"],D=["auto","always","hover","none"],f={...r,size:{type:"enum",className:"kui-r-size",values:y,responsive:!0},...m,...s,...i,...n,underline:{type:"enum",className:"kui-underline",values:D,default:"auto"},...p};var h=e.forwardRef((l,c)=>{let{children:o,className:P,color:u,asChild:d,...k}=t(l,f);return e.createElement(a,{...k,"data-accent-color":u,ref:c,asChild:!0,className:L("kui-reset","kui-Link",P)},d?o:e.createElement("a",null,o))});h.displayName="Link";export{h as a};
3
+ //# sourceMappingURL=chunk-7QP6JFPO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/link.tsx", "../../src/components/link.props.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { linkPropDefs } from './link.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype LinkElement = React.ElementRef<'a'>;\ntype LinkOwnProps = GetPropDefTypes<typeof linkPropDefs>;\ninterface LinkProps extends ComponentPropsWithout<'a', RemovedProps>, LinkOwnProps {}\nconst Link = React.forwardRef<LinkElement, LinkProps>((props, forwardedRef) => {\n const { children, className, color, asChild, ...linkProps } = extractProps(props, linkPropDefs);\n return (\n <Text\n {...linkProps}\n data-accent-color={color}\n ref={forwardedRef}\n asChild\n className={classNames('kui-reset', 'kui-Link', className)}\n >\n {asChild ? (\n children\n ) : (\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\n <a>{children}</a>\n )}\n </Text>\n );\n});\nLink.displayName = 'Link';\n\nexport { Link };\nexport type { LinkProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst underline = ['auto', 'always', 'hover', 'none'] as const;\n\nconst linkPropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'kui-r-size',\n values: sizes,\n responsive: true,\n },\n ...weightPropDef,\n ...leadingTrimPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n underline: { type: 'enum', className: 'kui-underline', values: underline, default: 'auto' },\n ...accentColorPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n underline: PropDef<(typeof underline)[number]>;\n};\n\nexport { linkPropDefs };\n"],
5
+ "mappings": ";yPAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aCQvB,IAAMC,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACpDC,EAAY,CAAC,OAAQ,SAAU,QAAS,MAAM,EAE9CC,EAAe,CACnB,GAAGC,EACH,KAAM,CACJ,KAAM,OACN,UAAW,aACX,OAAQH,EACR,WAAY,EACd,EACA,GAAGI,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,UAAW,CAAE,KAAM,OAAQ,UAAW,gBAAiB,OAAQN,EAAW,QAAS,MAAO,EAC1F,GAAGO,CACL,EDbA,IAAMC,EAAa,aAAmC,CAACC,EAAOC,IAAiB,CAC7E,GAAM,CAAE,SAAAC,EAAU,UAAAC,EAAW,MAAAC,EAAO,QAAAC,EAAS,GAAGC,CAAU,EAAIC,EAAaP,EAAOQ,CAAY,EAC9F,OACE,gBAACC,EAAA,CACE,GAAGH,EACJ,oBAAmBF,EACnB,IAAKH,EACL,QAAO,GACP,UAAWS,EAAW,YAAa,WAAYP,CAAS,GAEvDE,EACCH,EAGA,gBAAC,SAAGA,CAAS,CAEjB,CAEJ,CAAC,EACDH,EAAK,YAAc",
6
+ "names": ["React", "classNames", "sizes", "underline", "linkPropDefs", "asChildPropDef", "weightPropDef", "leadingTrimPropDef", "truncatePropDef", "textWrapPropDef", "accentColorPropDef", "Link", "props", "forwardedRef", "children", "className", "color", "asChild", "linkProps", "extractProps", "linkPropDefs", "Text", "classNames"]
7
+ }
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{a as p,b as m,c as a,d as f}from"./chunk-UJ7JERJ5.js";import{e as t}from"./chunk-HBWBPBSA.js";import{a as r}from"./chunk-CLJ6SEGP.js";import{c as s}from"./chunk-OKQAVYW4.js";import*as o from"react";import v from"classnames";import{Slot as h}from"radix-ui";var y=["1","2","3","4","5","6","7","8","9"],D=["solid","soft","outline","ghost"],i={...r,size:{type:"enum",className:"kui-r-size",values:y,responsive:!0},variant:{type:"enum",className:"kui-variant",values:D,default:"soft"},...f,...t,...p,...a,...m};var R=o.forwardRef((e,n)=>{let{asChild:c,className:d,color:P,...l}=s(e,i),u=e.variant==="ghost"&&!e.color?void 0:P,C=c?h.Root:"code";return o.createElement(C,{"data-accent-color":u,...l,ref:n,className:v("kui-reset","kui-Code",d)})});R.displayName="Code";export{R as a};
3
+ //# sourceMappingURL=chunk-ADL3LEOQ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/code.tsx", "../../src/components/code.props.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { codePropDefs } from './code.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CodeElement = React.ElementRef<'code'>;\ntype CodeOwnProps = GetPropDefTypes<typeof codePropDefs>;\ninterface CodeProps\n extends ComponentPropsWithout<'code', RemovedProps>,\n CodeOwnProps {}\nconst Code = React.forwardRef<CodeElement, CodeProps>((props, forwardedRef) => {\n const { asChild, className, color, ...codeProps } = extractProps(\n props,\n codePropDefs,\n );\n // A ghost Code has no fill, so it rests on the surrounding text colour: only a colour the caller\n // set reaches it, never the gray default.\n const resolvedColor = props.variant === 'ghost' && !props.color ? undefined : color;\n const Comp = asChild ? Slot.Root : 'code';\n return (\n <Comp\n data-accent-color={resolvedColor}\n {...codeProps}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-Code', className)}\n />\n );\n});\nCode.displayName = 'Code';\n\nexport { Code };\nexport type { CodeProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { grayAccentColorPropDef } from '../props/color.prop.js';\nimport { emphasisPropDef } from '../props/emphasis.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['solid', 'soft', 'outline', 'ghost'] as const;\n\nconst codePropDefs = {\n ...asChildPropDef,\n size: {\n type: 'enum',\n className: 'kui-r-size',\n values: sizes,\n responsive: true,\n },\n variant: { type: 'enum', className: 'kui-variant', values: variants, default: 'soft' },\n ...weightPropDef,\n ...grayAccentColorPropDef,\n ...emphasisPropDef,\n ...truncatePropDef,\n ...textWrapPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { codePropDefs };\n"],
5
+ "mappings": ";qLAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,QAAAC,MAAY,WCOrB,IAAMC,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACpDC,EAAW,CAAC,QAAS,OAAQ,UAAW,OAAO,EAE/CC,EAAe,CACnB,GAAGC,EACH,KAAM,CACJ,KAAM,OACN,UAAW,aACX,OAAQH,EACR,WAAY,EACd,EACA,QAAS,CAAE,KAAM,OAAQ,UAAW,cAAe,OAAQC,EAAU,QAAS,MAAO,EACrF,GAAGG,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,EACH,GAAGC,CACL,EDXA,IAAMC,EAAa,aAAmC,CAACC,EAAOC,IAAiB,CAC7E,GAAM,CAAE,QAAAC,EAAS,UAAAC,EAAW,MAAAC,EAAO,GAAGC,CAAU,EAAIC,EAClDN,EACAO,CACF,EAGMC,EAAgBR,EAAM,UAAY,SAAW,CAACA,EAAM,MAAQ,OAAYI,EACxEK,EAAOP,EAAUQ,EAAK,KAAO,OACnC,OACE,gBAACD,EAAA,CACC,oBAAmBD,EAClB,GAAGH,EACJ,IAAKJ,EACL,UAAWU,EAAW,YAAa,WAAYR,CAAS,EAC1D,CAEJ,CAAC,EACDJ,EAAK,YAAc",
6
+ "names": ["React", "classNames", "Slot", "sizes", "variants", "codePropDefs", "asChildPropDef", "weightPropDef", "grayAccentColorPropDef", "emphasisPropDef", "truncatePropDef", "textWrapPropDef", "Code", "props", "forwardedRef", "asChild", "className", "color", "codeProps", "extractProps", "codePropDefs", "resolvedColor", "Comp", "Slot", "classNames"]
7
+ }
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{a as P}from"./chunk-OTCVSJT7.js";import{c as G}from"./chunk-HBWBPBSA.js";import{b as l}from"./chunk-5ON3XLRD.js";import{a as n}from"./chunk-CLJ6SEGP.js";import{c as f}from"./chunk-OKQAVYW4.js";import{a as S}from"./chunk-VQPANPMI.js";var _={};S(_,{Item:()=>N,Root:()=>C});import*as o from"react";import c from"classnames";import{Context as v}from"radix-ui/internal";import{RadioGroup as d}from"radix-ui";var h=["1","2","3","4"],R={...n,size:{type:"enum",className:"kui-r-size",values:h,default:"2",responsive:!0},...G};var y="RadioGroup",[D]=v.createContextScope(y,[d.createRadioGroupScope]),I=d.createRadioGroupScope(),[E,x]=D(y),C=o.forwardRef(({color:a=R.color.default,size:e,...t},r)=>{let i=l(e,R.size),{__scopeRadioGroup:p,className:s,...m}=t,z=I(p);return o.createElement(E,{scope:p,color:a,size:i},o.createElement(d.Root,{...z,...m,ref:r,className:c("kui-RadioGroupRoot",s)}))});C.displayName="RadioGroup.Root";var N=o.forwardRef((a,e)=>{let{__scopeRadioGroup:t,children:r,className:i,style:p,...s}=a,{size:m}=x("RadioGroupItem",t);return r?o.createElement(P,{as:"label",size:m,className:c("kui-RadioGroupItem",i),style:p},o.createElement(u,{__scopeRadioGroup:t,...s,ref:e}),r&&o.createElement("span",{className:"kui-RadioGroupItemInner"},r)):o.createElement(u,{__scopeRadioGroup:t,...s,ref:e,className:i,style:p})});N.displayName="RadioGroup.Item";var u=o.forwardRef(({__scopeRadioGroup:a,...e},t)=>{let r=x("RadioGroupItemRadio",a),i=I(a),{color:p,className:s}=f({...e,...r},R);return o.createElement(d.Item,{...i,"data-accent-color":p,...e,asChild:!1,ref:t,className:c("kui-reset","kui-BaseRadioRoot",s)})});u.displayName="RadioGroup.ItemRadio";export{C as a,N as b,_ as c};
3
+ //# sourceMappingURL=chunk-AJANJ22M.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/radio-group.tsx"],
4
- "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioGroupRootPropDefs } from './radio-group.props.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Context.Scope };\nconst [createRadioGroupContext] = Context.createContextScope(RADIO_GROUP_NAME, [\n RadioGroupPrimitive.createRadioGroupScope,\n]);\nconst useRadioGroupScope = RadioGroupPrimitive.createRadioGroupScope();\n\ntype RadioGroupRootOwnProps = GetPropDefTypes<typeof radioGroupRootPropDefs>;\ntype RadioGroupContextValue = RadioGroupRootOwnProps;\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ninterface RadioGroupRootProps\n extends ComponentPropsWithout<\n typeof RadioGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n RadioGroupRootOwnProps {}\nconst RadioGroupRoot = React.forwardRef<RadioGroupRootElement, RadioGroupRootProps>(\n (\n {\n color = radioGroupRootPropDefs.color.default,\n size: sizeProp,\n ...props\n }: ScopedProps<RadioGroupRootProps>,\n forwardedRef\n ) => {\n const size = useThemeSize(sizeProp, radioGroupRootPropDefs.size);\n const { __scopeRadioGroup, className, ...rootProps } = props;\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n color={color}\n size={size}\n >\n <RadioGroupPrimitive.Root\n {...radioGroupScope}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('kui-RadioGroupRoot', className)}\n />\n </RadioGroupProvider>\n );\n }\n);\nRadioGroupRoot.displayName = 'RadioGroup.Root';\n\ntype RadioGroupItemElement = React.ElementRef<typeof RadioGroupItemRadio>;\ninterface RadioGroupItemProps\n extends ComponentPropsWithout<typeof RadioGroupItemRadio, RemovedProps> {}\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (_props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, children, className, style, ...props } = _props;\n const { size } = useRadioGroupContext('RadioGroupItem', __scopeRadioGroup);\n\n // Render `<Text as=\"label\">` if children\u00A0are provided, otherwise render\n // the solo radio button to allow building out your custom layouts with it.\n if (children) {\n return (\n <Text\n as=\"label\"\n size={size}\n className={classNames('kui-RadioGroupItem', className)}\n style={style}\n >\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n />\n {children && <span className=\"kui-RadioGroupItemInner\">{children}</span>}\n </Text>\n );\n }\n\n return (\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n className={className}\n style={style}\n />\n );\n }\n);\nRadioGroupItem.displayName = 'RadioGroup.Item';\n\ntype RadioGroupItemRadioElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioGroupItemRadioProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {}\nconst RadioGroupItemRadio = React.forwardRef<\n RadioGroupItemRadioElement,\n ScopedProps<RadioGroupItemRadioProps>\n>(({ __scopeRadioGroup, ...props }, forwardedRef) => {\n const context = useRadioGroupContext('RadioGroupItemRadio', __scopeRadioGroup);\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n const { color, className } = extractProps(\n { ...props, ...context },\n radioGroupRootPropDefs\n );\n return (\n <RadioGroupPrimitive.Item\n {...radioGroupScope}\n data-accent-color={color}\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-BaseRadioRoot', className)}\n />\n );\n});\nRadioGroupItemRadio.displayName = 'RadioGroup.ItemRadio';\n\nexport { RadioGroupRoot as Root, RadioGroupItem as Item };\nexport type { RadioGroupRootProps as RootProps, RadioGroupItemProps as ItemProps };\n"],
5
- "mappings": ";wMAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,SAAAC,IAEA,UAAYC,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,WAAAC,MAAe,oBACxB,OAAS,cAAcC,MAA2B,WAUlD,IAAMC,EAAmB,aAGnB,CAACC,CAAuB,EAAIC,EAAQ,mBAAmBF,EAAkB,CAC7EG,EAAoB,qBACtB,CAAC,EACKC,EAAqBD,EAAoB,sBAAsB,EAK/D,CAACE,EAAoBC,CAAoB,EAC7CL,EAAgDD,CAAgB,EAS5DO,EAAuB,aAC3B,CACE,CACE,MAAAC,EAAQC,EAAuB,MAAM,QACrC,KAAMC,EACN,GAAGC,CACL,EACAC,IACG,CACH,IAAMC,EAAOC,EAAaJ,EAAUD,EAAuB,IAAI,EACzD,CAAE,kBAAAM,EAAmB,UAAAC,EAAW,GAAGC,CAAU,EAAIN,EACjDO,EAAkBd,EAAmBW,CAAiB,EAC5D,OACE,gBAACV,EAAA,CACC,MAAOU,EACP,MAAOP,EACP,KAAMK,GAEN,gBAACV,EAAoB,KAApB,CACE,GAAGe,EACH,GAAGD,EACJ,IAAKL,EACL,UAAWO,EAAW,qBAAsBH,CAAS,EACvD,CACF,CAEJ,CACF,EACAT,EAAe,YAAc,kBAK7B,IAAMa,EAAuB,aAC3B,CAACC,EAA0CT,IAAiB,CAC1D,GAAM,CAAE,kBAAAG,EAAmB,SAAAO,EAAU,UAAAN,EAAW,MAAAO,EAAO,GAAGZ,CAAM,EAAIU,EAC9D,CAAE,KAAAR,CAAK,EAAIP,EAAqB,iBAAkBS,CAAiB,EAIzE,OAAIO,EAEA,gBAACE,EAAA,CACC,GAAG,QACH,KAAMX,EACN,UAAWM,EAAW,qBAAsBH,CAAS,EACrD,MAAOO,GAEP,gBAACE,EAAA,CACC,kBAAmBV,EAClB,GAAGJ,EACJ,IAAKC,EACP,EACCU,GAAY,gBAAC,QAAK,UAAU,2BAA2BA,CAAS,CACnE,EAKF,gBAACG,EAAA,CACC,kBAAmBV,EAClB,GAAGJ,EACJ,IAAKC,EACL,UAAWI,EACX,MAAOO,EACT,CAEJ,CACF,EACAH,EAAe,YAAc,kBAK7B,IAAMK,EAA4B,aAGhC,CAAC,CAAE,kBAAAV,EAAmB,GAAGJ,CAAM,EAAGC,IAAiB,CACnD,IAAMc,EAAUpB,EAAqB,sBAAuBS,CAAiB,EACvEG,EAAkBd,EAAmBW,CAAiB,EACtD,CAAE,MAAAP,EAAO,UAAAQ,CAAU,EAAIW,EAC3B,CAAE,GAAGhB,EAAO,GAAGe,CAAQ,EACvBjB,CACF,EACA,OACE,gBAACN,EAAoB,KAApB,CACE,GAAGe,EACJ,oBAAmBV,EAClB,GAAGG,EACJ,QAAS,GACT,IAAKC,EACL,UAAWO,EAAW,YAAa,oBAAqBH,CAAS,EACnE,CAEJ,CAAC,EACDS,EAAoB,YAAc",
6
- "names": ["radio_group_exports", "__export", "RadioGroupItem", "RadioGroupRoot", "React", "classNames", "Context", "RadioGroupPrimitive", "RADIO_GROUP_NAME", "createRadioGroupContext", "Context", "RadioGroupPrimitive", "useRadioGroupScope", "RadioGroupProvider", "useRadioGroupContext", "RadioGroupRoot", "color", "radioGroupRootPropDefs", "sizeProp", "props", "forwardedRef", "size", "useThemeSize", "__scopeRadioGroup", "className", "rootProps", "radioGroupScope", "classNames", "RadioGroupItem", "_props", "children", "style", "Text", "RadioGroupItemRadio", "context", "extractProps"]
3
+ "sources": ["../../src/components/radio-group.tsx", "../../src/components/radio-group.props.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioGroupRootPropDefs } from './radio-group.props.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { useThemeSize } from '../hooks/theme-size.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Context.Scope };\nconst [createRadioGroupContext] = Context.createContextScope(RADIO_GROUP_NAME, [\n RadioGroupPrimitive.createRadioGroupScope,\n]);\nconst useRadioGroupScope = RadioGroupPrimitive.createRadioGroupScope();\n\ntype RadioGroupRootOwnProps = GetPropDefTypes<typeof radioGroupRootPropDefs>;\ntype RadioGroupContextValue = RadioGroupRootOwnProps;\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ninterface RadioGroupRootProps\n extends ComponentPropsWithout<\n typeof RadioGroupPrimitive.Root,\n 'asChild' | 'color' | 'defaultChecked'\n >,\n RadioGroupRootOwnProps {}\nconst RadioGroupRoot = React.forwardRef<RadioGroupRootElement, RadioGroupRootProps>(\n (\n {\n color = radioGroupRootPropDefs.color.default,\n size: sizeProp,\n ...props\n }: ScopedProps<RadioGroupRootProps>,\n forwardedRef\n ) => {\n const size = useThemeSize(sizeProp, radioGroupRootPropDefs.size);\n const { __scopeRadioGroup, className, ...rootProps } = props;\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n color={color}\n size={size}\n >\n <RadioGroupPrimitive.Root\n {...radioGroupScope}\n {...rootProps}\n ref={forwardedRef}\n className={classNames('kui-RadioGroupRoot', className)}\n />\n </RadioGroupProvider>\n );\n }\n);\nRadioGroupRoot.displayName = 'RadioGroup.Root';\n\ntype RadioGroupItemElement = React.ElementRef<typeof RadioGroupItemRadio>;\ninterface RadioGroupItemProps\n extends ComponentPropsWithout<typeof RadioGroupItemRadio, RemovedProps> {}\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (_props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, children, className, style, ...props } = _props;\n const { size } = useRadioGroupContext('RadioGroupItem', __scopeRadioGroup);\n\n // Render `<Text as=\"label\">` if children\u00A0are provided, otherwise render\n // the solo radio button to allow building out your custom layouts with it.\n if (children) {\n return (\n <Text\n as=\"label\"\n size={size}\n className={classNames('kui-RadioGroupItem', className)}\n style={style}\n >\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n />\n {children && <span className=\"kui-RadioGroupItemInner\">{children}</span>}\n </Text>\n );\n }\n\n return (\n <RadioGroupItemRadio\n __scopeRadioGroup={__scopeRadioGroup}\n {...props}\n ref={forwardedRef}\n className={className}\n style={style}\n />\n );\n }\n);\nRadioGroupItem.displayName = 'RadioGroup.Item';\n\ntype RadioGroupItemRadioElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioGroupItemRadioProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> {}\nconst RadioGroupItemRadio = React.forwardRef<\n RadioGroupItemRadioElement,\n ScopedProps<RadioGroupItemRadioProps>\n>(({ __scopeRadioGroup, ...props }, forwardedRef) => {\n const context = useRadioGroupContext('RadioGroupItemRadio', __scopeRadioGroup);\n const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n const { color, className } = extractProps(\n { ...props, ...context },\n radioGroupRootPropDefs\n );\n return (\n <RadioGroupPrimitive.Item\n {...radioGroupScope}\n data-accent-color={color}\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('kui-reset', 'kui-BaseRadioRoot', className)}\n />\n );\n});\nRadioGroupItemRadio.displayName = 'RadioGroup.ItemRadio';\n\nexport { RadioGroupRoot as Root, RadioGroupItem as Item };\nexport type { RadioGroupRootProps as RootProps, RadioGroupItemProps as ItemProps };\n", "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst radioGroupRootPropDefs = {\n ...asChildPropDef,\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2', responsive: true },\n ...colorPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { radioGroupRootPropDefs };\n"],
5
+ "mappings": ";gPAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,SAAAC,IAEA,UAAYC,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,WAAAC,MAAe,oBACxB,OAAS,cAAcC,MAA2B,WCAlD,IAAMC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAE3BC,EAAyB,CAC7B,GAAGC,EACH,KAAM,CAAE,KAAM,OAAQ,UAAW,aAAc,OAAQF,EAAO,QAAS,IAAK,WAAY,EAAK,EAC7F,GAAGG,CACL,EDIA,IAAMC,EAAmB,aAGnB,CAACC,CAAuB,EAAIC,EAAQ,mBAAmBF,EAAkB,CAC7EG,EAAoB,qBACtB,CAAC,EACKC,EAAqBD,EAAoB,sBAAsB,EAK/D,CAACE,EAAoBC,CAAoB,EAC7CL,EAAgDD,CAAgB,EAS5DO,EAAuB,aAC3B,CACE,CACE,MAAAC,EAAQC,EAAuB,MAAM,QACrC,KAAMC,EACN,GAAGC,CACL,EACAC,IACG,CACH,IAAMC,EAAOC,EAAaJ,EAAUD,EAAuB,IAAI,EACzD,CAAE,kBAAAM,EAAmB,UAAAC,EAAW,GAAGC,CAAU,EAAIN,EACjDO,EAAkBd,EAAmBW,CAAiB,EAC5D,OACE,gBAACV,EAAA,CACC,MAAOU,EACP,MAAOP,EACP,KAAMK,GAEN,gBAACV,EAAoB,KAApB,CACE,GAAGe,EACH,GAAGD,EACJ,IAAKL,EACL,UAAWO,EAAW,qBAAsBH,CAAS,EACvD,CACF,CAEJ,CACF,EACAT,EAAe,YAAc,kBAK7B,IAAMa,EAAuB,aAC3B,CAACC,EAA0CT,IAAiB,CAC1D,GAAM,CAAE,kBAAAG,EAAmB,SAAAO,EAAU,UAAAN,EAAW,MAAAO,EAAO,GAAGZ,CAAM,EAAIU,EAC9D,CAAE,KAAAR,CAAK,EAAIP,EAAqB,iBAAkBS,CAAiB,EAIzE,OAAIO,EAEA,gBAACE,EAAA,CACC,GAAG,QACH,KAAMX,EACN,UAAWM,EAAW,qBAAsBH,CAAS,EACrD,MAAOO,GAEP,gBAACE,EAAA,CACC,kBAAmBV,EAClB,GAAGJ,EACJ,IAAKC,EACP,EACCU,GAAY,gBAAC,QAAK,UAAU,2BAA2BA,CAAS,CACnE,EAKF,gBAACG,EAAA,CACC,kBAAmBV,EAClB,GAAGJ,EACJ,IAAKC,EACL,UAAWI,EACX,MAAOO,EACT,CAEJ,CACF,EACAH,EAAe,YAAc,kBAK7B,IAAMK,EAA4B,aAGhC,CAAC,CAAE,kBAAAV,EAAmB,GAAGJ,CAAM,EAAGC,IAAiB,CACnD,IAAMc,EAAUpB,EAAqB,sBAAuBS,CAAiB,EACvEG,EAAkBd,EAAmBW,CAAiB,EACtD,CAAE,MAAAP,EAAO,UAAAQ,CAAU,EAAIW,EAC3B,CAAE,GAAGhB,EAAO,GAAGe,CAAQ,EACvBjB,CACF,EACA,OACE,gBAACN,EAAoB,KAApB,CACE,GAAGe,EACJ,oBAAmBV,EAClB,GAAGG,EACJ,QAAS,GACT,IAAKC,EACL,UAAWO,EAAW,YAAa,oBAAqBH,CAAS,EACnE,CAEJ,CAAC,EACDS,EAAoB,YAAc",
6
+ "names": ["radio_group_exports", "__export", "RadioGroupItem", "RadioGroupRoot", "React", "classNames", "Context", "RadioGroupPrimitive", "sizes", "radioGroupRootPropDefs", "asChildPropDef", "colorPropDef", "RADIO_GROUP_NAME", "createRadioGroupContext", "Context", "RadioGroupPrimitive", "useRadioGroupScope", "RadioGroupProvider", "useRadioGroupContext", "RadioGroupRoot", "color", "radioGroupRootPropDefs", "sizeProp", "props", "forwardedRef", "size", "useThemeSize", "__scopeRadioGroup", "className", "rootProps", "radioGroupScope", "classNames", "RadioGroupItem", "_props", "children", "style", "Text", "RadioGroupItemRadio", "context", "extractProps"]
7
7
  }
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{a as s}from"./chunk-CLJ6SEGP.js";import{c as e}from"./chunk-HBWBPBSA.js";var t=["1","2","3","4"],r=["cascade","drill-down"],o={size:{type:"enum",className:"kui-r-size",values:t,default:"2",responsive:!0},...e},p={...o,submenuBehavior:{type:"enum",values:r,default:"cascade",responsive:!0}},u=o,a={...s,...e,shortcut:{type:"string"}},f={...e,shortcut:{type:"string"}},c={...e};export{r as a,p as b,u as c,a as d,f as e,c as f};
3
- //# sourceMappingURL=chunk-I6SMGWS5.js.map
1
+ import{c as e}from"./chunk-CUNKWFKA.js";import{a as s}from"./chunk-NZJGC6ZW.js";var t=["1","2","3","4"],r=["cascade","drill-down"],o={size:{type:"enum",className:"kui-r-size",values:t,default:"2",responsive:!0},...e},p={...o,submenuBehavior:{type:"enum",values:r,default:"cascade",responsive:!0}},u=o,a={...s,...e,shortcut:{type:"string"}},f={...e,shortcut:{type:"string"}},c={...e};export{r as a,p as b,u as c,a as d,f as e,c as f};
2
+ //# sourceMappingURL=chunk-AJWCSQIE.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/_internal/base-menu.props.ts"],
4
+ "sourcesContent": ["import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { colorPropDef } from '../../props/color.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst contentSizes = ['1', '2', '3', '4'] as const;\nconst submenuBehaviors = ['cascade', 'drill-down'] as const;\n\n// Base props shared between Content and SubContent\nconst baseMenuSharedPropDefs = {\n size: {\n type: 'enum',\n className: 'kui-r-size',\n values: contentSizes,\n default: '2',\n responsive: true,\n },\n ...colorPropDef,\n} satisfies {\n size: PropDef<(typeof contentSizes)[number]>;\n};\n\n// Content-specific props (includes submenuBehavior)\nconst baseMenuContentPropDefs = {\n ...baseMenuSharedPropDefs,\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior: {\n type: 'enum',\n values: submenuBehaviors,\n default: 'cascade',\n responsive: true,\n },\n} satisfies {\n size: PropDef<(typeof contentSizes)[number]>;\n submenuBehavior: PropDef<(typeof submenuBehaviors)[number]>;\n};\n\n// SubContent props (no submenuBehavior)\nconst baseMenuSubContentPropDefs = baseMenuSharedPropDefs;\n\nconst baseMenuItemPropDefs = {\n ...asChildPropDef,\n ...colorPropDef,\n shortcut: { type: 'string' },\n} satisfies {\n shortcut: PropDef<string>;\n};\n\nconst baseMenuCheckboxItemPropDefs = {\n ...colorPropDef,\n shortcut: { type: 'string' },\n} satisfies {\n shortcut: PropDef<string>;\n};\n\nconst baseMenuRadioItemPropDefs = {\n ...colorPropDef,\n};\n\nexport {\n baseMenuContentPropDefs,\n baseMenuSubContentPropDefs,\n baseMenuItemPropDefs,\n baseMenuCheckboxItemPropDefs,\n baseMenuRadioItemPropDefs,\n submenuBehaviors,\n};\n"],
5
+ "mappings": "gFAKA,IAAMA,EAAe,CAAC,IAAK,IAAK,IAAK,GAAG,EAClCC,EAAmB,CAAC,UAAW,YAAY,EAG3CC,EAAyB,CAC7B,KAAM,CACJ,KAAM,OACN,UAAW,aACX,OAAQF,EACR,QAAS,IACT,WAAY,EACd,EACA,GAAGG,CACL,EAKMC,EAA0B,CAC9B,GAAGF,EAOH,gBAAiB,CACf,KAAM,OACN,OAAQD,EACR,QAAS,UACT,WAAY,EACd,CACF,EAMMI,EAA6BH,EAE7BI,EAAuB,CAC3B,GAAGC,EACH,GAAGJ,EACH,SAAU,CAAE,KAAM,QAAS,CAC7B,EAIMK,EAA+B,CACnC,GAAGL,EACH,SAAU,CAAE,KAAM,QAAS,CAC7B,EAIMM,EAA4B,CAChC,GAAGN,CACL",
6
+ "names": ["contentSizes", "submenuBehaviors", "baseMenuSharedPropDefs", "colorPropDef", "baseMenuContentPropDefs", "baseMenuSubContentPropDefs", "baseMenuItemPropDefs", "asChildPropDef", "baseMenuCheckboxItemPropDefs", "baseMenuRadioItemPropDefs"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{c as e}from"./chunk-CUNKWFKA.js";var s=["1","2","3","4"],r={size:{type:"enum",className:"kui-r-size",values:s,default:"2",responsive:!0},...e};export{r as a};
2
+ //# sourceMappingURL=chunk-AKXBXLCP.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/_internal/base-checkbox.props.ts"],
4
+ "sourcesContent": ["import { colorPropDef } from '../../props/color.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst baseCheckboxPropDefs = {\n size: { type: 'enum', className: 'kui-r-size', values: sizes, default: '2', responsive: true },\n ...colorPropDef,\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { baseCheckboxPropDefs };\n"],
5
+ "mappings": "wCAIA,IAAMA,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAE3BC,EAAuB,CAC3B,KAAM,CAAE,KAAM,OAAQ,UAAW,aAAc,OAAQD,EAAO,QAAS,IAAK,WAAY,EAAK,EAC7F,GAAGE,CACL",
6
+ "names": ["sizes", "baseCheckboxPropDefs", "colorPropDef"]
7
+ }