@womp/kookie-ui 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1171) hide show
  1. package/README.md +2 -18
  2. package/codemods/components-0.21.py +123 -0
  3. package/components.css +950 -2717
  4. package/dist/cjs/components/_internal/base-button.d.ts +2 -4
  5. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  6. package/dist/cjs/components/_internal/base-button.js +1 -1
  7. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  8. package/dist/cjs/components/_internal/base-button.props.d.ts +1 -9
  9. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  10. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  11. package/dist/cjs/components/_internal/base-button.props.js.map +2 -2
  12. package/dist/cjs/components/_internal/base-checkbox.props.js.map +1 -1
  13. package/dist/cjs/components/_internal/base-menu.props.js.map +1 -1
  14. package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
  15. package/dist/cjs/components/_internal/base-menu.utils.js.map +4 -4
  16. package/dist/cjs/components/_internal/base-radio.props.js.map +1 -1
  17. package/dist/cjs/components/_internal/base-tab-list.props.js.map +1 -1
  18. package/dist/cjs/components/_internal/pane-chrome.js +1 -1
  19. package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
  20. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  21. package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
  22. package/dist/cjs/components/accordion.d.ts.map +1 -1
  23. package/dist/cjs/components/accordion.js +1 -1
  24. package/dist/cjs/components/accordion.js.map +3 -3
  25. package/dist/cjs/components/accordion.props.d.ts +0 -5
  26. package/dist/cjs/components/accordion.props.d.ts.map +1 -1
  27. package/dist/cjs/components/accordion.props.js +1 -1
  28. package/dist/cjs/components/accordion.props.js.map +2 -2
  29. package/dist/cjs/components/alert-dialog.js +1 -1
  30. package/dist/cjs/components/alert-dialog.js.map +4 -4
  31. package/dist/cjs/components/avatar.d.ts +1 -2
  32. package/dist/cjs/components/avatar.d.ts.map +1 -1
  33. package/dist/cjs/components/avatar.js +1 -1
  34. package/dist/cjs/components/avatar.js.map +4 -4
  35. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  36. package/dist/cjs/components/avatar.props.js.map +1 -1
  37. package/dist/cjs/components/blockquote.d.ts +1 -2
  38. package/dist/cjs/components/blockquote.d.ts.map +1 -1
  39. package/dist/cjs/components/blockquote.js +1 -1
  40. package/dist/cjs/components/blockquote.js.map +4 -4
  41. package/dist/cjs/components/blockquote.props.js.map +1 -1
  42. package/dist/cjs/components/button.d.ts +23 -7
  43. package/dist/cjs/components/button.d.ts.map +1 -1
  44. package/dist/cjs/components/button.js +1 -4
  45. package/dist/cjs/components/button.js.map +3 -3
  46. package/dist/cjs/components/button.props.js +1 -1
  47. package/dist/cjs/components/button.props.js.map +2 -2
  48. package/dist/cjs/components/card.d.ts +1 -2
  49. package/dist/cjs/components/card.d.ts.map +1 -1
  50. package/dist/cjs/components/card.js +1 -1
  51. package/dist/cjs/components/card.js.map +4 -4
  52. package/dist/cjs/components/chatbar.d.ts +2 -3
  53. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  54. package/dist/cjs/components/chatbar.js +1 -4
  55. package/dist/cjs/components/chatbar.js.map +4 -4
  56. package/dist/cjs/components/checkbox-group.d.ts +2 -3
  57. package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
  58. package/dist/cjs/components/checkbox-group.js +1 -1
  59. package/dist/cjs/components/checkbox-group.js.map +4 -4
  60. package/dist/cjs/components/checkbox-group.props.js.map +1 -1
  61. package/dist/cjs/components/checkbox.d.ts +1 -2
  62. package/dist/cjs/components/checkbox.d.ts.map +1 -1
  63. package/dist/cjs/components/checkbox.js +1 -1
  64. package/dist/cjs/components/checkbox.js.map +4 -4
  65. package/dist/cjs/components/checkbox.props.js.map +1 -1
  66. package/dist/cjs/components/chip.d.ts +18 -0
  67. package/dist/cjs/components/chip.d.ts.map +1 -0
  68. package/dist/cjs/components/chip.js +2 -0
  69. package/dist/cjs/components/chip.js.map +7 -0
  70. package/dist/cjs/components/{badge.props.d.ts → chip.props.d.ts} +3 -3
  71. package/dist/cjs/components/chip.props.d.ts.map +1 -0
  72. package/dist/cjs/components/chip.props.js +2 -0
  73. package/dist/cjs/components/chip.props.js.map +7 -0
  74. package/dist/cjs/components/code.d.ts +1 -2
  75. package/dist/cjs/components/code.d.ts.map +1 -1
  76. package/dist/cjs/components/code.js +1 -1
  77. package/dist/cjs/components/code.js.map +4 -4
  78. package/dist/cjs/components/code.props.js.map +1 -1
  79. package/dist/cjs/components/combobox.d.ts +1 -2
  80. package/dist/cjs/components/combobox.d.ts.map +1 -1
  81. package/dist/cjs/components/combobox.js +1 -1
  82. package/dist/cjs/components/combobox.js.map +4 -4
  83. package/dist/cjs/components/combobox.props.js.map +1 -1
  84. package/dist/cjs/components/context-menu.js +1 -1
  85. package/dist/cjs/components/context-menu.js.map +4 -4
  86. package/dist/cjs/components/context-menu.props.js.map +1 -1
  87. package/dist/cjs/components/dialog.js +1 -1
  88. package/dist/cjs/components/dialog.js.map +4 -4
  89. package/dist/cjs/components/dropdown-menu.js +1 -1
  90. package/dist/cjs/components/dropdown-menu.js.map +4 -4
  91. package/dist/cjs/components/dropdown-menu.props.js.map +1 -1
  92. package/dist/cjs/components/heading.d.ts +1 -2
  93. package/dist/cjs/components/heading.d.ts.map +1 -1
  94. package/dist/cjs/components/heading.js +1 -1
  95. package/dist/cjs/components/heading.js.map +4 -4
  96. package/dist/cjs/components/heading.props.js.map +1 -1
  97. package/dist/cjs/components/index.d.ts +2 -18
  98. package/dist/cjs/components/index.d.ts.map +1 -1
  99. package/dist/cjs/components/index.js +3 -14
  100. package/dist/cjs/components/index.js.map +4 -4
  101. package/dist/cjs/components/kbd.d.ts +1 -2
  102. package/dist/cjs/components/kbd.d.ts.map +1 -1
  103. package/dist/cjs/components/kbd.js +1 -1
  104. package/dist/cjs/components/kbd.js.map +4 -4
  105. package/dist/cjs/components/link.d.ts +1 -2
  106. package/dist/cjs/components/link.d.ts.map +1 -1
  107. package/dist/cjs/components/link.js +1 -1
  108. package/dist/cjs/components/link.js.map +4 -4
  109. package/dist/cjs/components/link.props.js.map +1 -1
  110. package/dist/cjs/components/message-scroller.d.ts +2 -3
  111. package/dist/cjs/components/message-scroller.d.ts.map +1 -1
  112. package/dist/cjs/components/message-scroller.js +1 -4
  113. package/dist/cjs/components/message-scroller.js.map +4 -4
  114. package/dist/cjs/components/navbar.d.ts +14 -6
  115. package/dist/cjs/components/navbar.d.ts.map +1 -1
  116. package/dist/cjs/components/navbar.js +1 -1
  117. package/dist/cjs/components/navbar.js.map +2 -2
  118. package/dist/cjs/components/notice.d.ts.map +1 -1
  119. package/dist/cjs/components/notice.js +1 -4
  120. package/dist/cjs/components/notice.js.map +4 -4
  121. package/dist/cjs/components/popover.js.map +1 -1
  122. package/dist/cjs/components/progress.d.ts +1 -2
  123. package/dist/cjs/components/progress.d.ts.map +1 -1
  124. package/dist/cjs/components/progress.js +1 -1
  125. package/dist/cjs/components/progress.js.map +4 -4
  126. package/dist/cjs/components/progress.props.js.map +1 -1
  127. package/dist/cjs/components/radio-group.d.ts +2 -3
  128. package/dist/cjs/components/radio-group.d.ts.map +1 -1
  129. package/dist/cjs/components/radio-group.js +1 -1
  130. package/dist/cjs/components/radio-group.js.map +4 -4
  131. package/dist/cjs/components/radio-group.props.js.map +1 -1
  132. package/dist/cjs/components/radio.d.ts +1 -2
  133. package/dist/cjs/components/radio.d.ts.map +1 -1
  134. package/dist/cjs/components/radio.js +1 -1
  135. package/dist/cjs/components/radio.js.map +4 -4
  136. package/dist/cjs/components/radio.props.js.map +1 -1
  137. package/dist/cjs/components/schemas/base-button.schema.d.ts +2 -3
  138. package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -1
  139. package/dist/cjs/components/schemas/base-button.schema.js +1 -1
  140. package/dist/cjs/components/schemas/base-button.schema.js.map +2 -2
  141. package/dist/cjs/components/schemas/button.schema.d.ts +0 -1
  142. package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -1
  143. package/dist/cjs/components/schemas/button.schema.js +1 -1
  144. package/dist/cjs/components/schemas/button.schema.js.map +2 -2
  145. package/dist/cjs/components/schemas/index.d.ts +2 -6
  146. package/dist/cjs/components/schemas/index.d.ts.map +1 -1
  147. package/dist/cjs/components/schemas/index.js +1 -1
  148. package/dist/cjs/components/schemas/index.js.map +4 -4
  149. package/dist/cjs/components/schemas/{toggle-button.schema.d.ts → toggle.schema.d.ts} +13 -38
  150. package/dist/cjs/components/schemas/toggle.schema.d.ts.map +1 -0
  151. package/dist/cjs/components/schemas/toggle.schema.js +2 -0
  152. package/dist/cjs/components/schemas/toggle.schema.js.map +7 -0
  153. package/dist/cjs/components/scroll-area.d.ts +1 -2
  154. package/dist/cjs/components/scroll-area.d.ts.map +1 -1
  155. package/dist/cjs/components/scroll-area.js +1 -1
  156. package/dist/cjs/components/scroll-area.js.map +4 -4
  157. package/dist/cjs/components/segmented-control.d.ts +1 -2
  158. package/dist/cjs/components/segmented-control.d.ts.map +1 -1
  159. package/dist/cjs/components/segmented-control.js +1 -1
  160. package/dist/cjs/components/segmented-control.js.map +4 -4
  161. package/dist/cjs/components/select.d.ts +1 -2
  162. package/dist/cjs/components/select.d.ts.map +1 -1
  163. package/dist/cjs/components/select.js +1 -1
  164. package/dist/cjs/components/select.js.map +4 -4
  165. package/dist/cjs/components/select.props.js.map +1 -1
  166. package/dist/cjs/components/separator.d.ts +1 -2
  167. package/dist/cjs/components/separator.d.ts.map +1 -1
  168. package/dist/cjs/components/separator.js +1 -1
  169. package/dist/cjs/components/separator.js.map +4 -4
  170. package/dist/cjs/components/separator.props.js.map +1 -1
  171. package/dist/cjs/components/sheet.js +1 -1
  172. package/dist/cjs/components/sheet.js.map +4 -4
  173. package/dist/cjs/components/shell.js +1 -1
  174. package/dist/cjs/components/shell.js.map +4 -4
  175. package/dist/cjs/components/sidebar.d.ts +5 -5
  176. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  177. package/dist/cjs/components/sidebar.js +1 -1
  178. package/dist/cjs/components/sidebar.js.map +4 -4
  179. package/dist/cjs/components/slider.d.ts +1 -2
  180. package/dist/cjs/components/slider.d.ts.map +1 -1
  181. package/dist/cjs/components/slider.js +1 -1
  182. package/dist/cjs/components/slider.js.map +4 -4
  183. package/dist/cjs/components/slider.props.js.map +1 -1
  184. package/dist/cjs/components/spinner.d.ts +1 -2
  185. package/dist/cjs/components/spinner.d.ts.map +1 -1
  186. package/dist/cjs/components/spinner.js +1 -1
  187. package/dist/cjs/components/spinner.js.map +3 -3
  188. package/dist/cjs/components/switch.d.ts +1 -2
  189. package/dist/cjs/components/switch.d.ts.map +1 -1
  190. package/dist/cjs/components/switch.js +1 -1
  191. package/dist/cjs/components/switch.js.map +4 -4
  192. package/dist/cjs/components/switch.props.js.map +1 -1
  193. package/dist/cjs/components/table.d.ts +1 -2
  194. package/dist/cjs/components/table.d.ts.map +1 -1
  195. package/dist/cjs/components/table.js +1 -1
  196. package/dist/cjs/components/table.js.map +4 -4
  197. package/dist/cjs/components/tabs.d.ts +3 -4
  198. package/dist/cjs/components/tabs.d.ts.map +1 -1
  199. package/dist/cjs/components/tabs.js +1 -1
  200. package/dist/cjs/components/tabs.js.map +4 -4
  201. package/dist/cjs/components/tabs.props.js.map +1 -1
  202. package/dist/cjs/components/text-area.d.ts +1 -2
  203. package/dist/cjs/components/text-area.d.ts.map +1 -1
  204. package/dist/cjs/components/text-area.js +1 -1
  205. package/dist/cjs/components/text-area.js.map +4 -4
  206. package/dist/cjs/components/text-area.props.js.map +1 -1
  207. package/dist/cjs/components/text-field.d.ts +1 -2
  208. package/dist/cjs/components/text-field.d.ts.map +1 -1
  209. package/dist/cjs/components/text-field.js +2 -2
  210. package/dist/cjs/components/text-field.js.map +4 -4
  211. package/dist/cjs/components/text-field.props.js.map +1 -1
  212. package/dist/cjs/components/text.d.ts +1 -2
  213. package/dist/cjs/components/text.d.ts.map +1 -1
  214. package/dist/cjs/components/text.js +1 -1
  215. package/dist/cjs/components/text.js.map +4 -4
  216. package/dist/cjs/components/text.props.js.map +1 -1
  217. package/dist/cjs/components/theme.js.map +1 -1
  218. package/dist/cjs/components/theme.props.js.map +1 -1
  219. package/dist/cjs/components/toggle.d.ts +35 -0
  220. package/dist/cjs/components/toggle.d.ts.map +1 -0
  221. package/dist/cjs/components/toggle.js +10 -0
  222. package/dist/cjs/components/toggle.js.map +7 -0
  223. package/dist/cjs/components/toolbar.d.ts +2 -3
  224. package/dist/cjs/components/toolbar.d.ts.map +1 -1
  225. package/dist/cjs/components/toolbar.js +1 -4
  226. package/dist/cjs/components/toolbar.js.map +4 -4
  227. package/dist/cjs/components/tooltip.js +1 -1
  228. package/dist/cjs/components/tooltip.js.map +4 -4
  229. package/dist/cjs/hooks/index.js.map +1 -1
  230. package/dist/cjs/hooks/use-prop-synced-state.d.ts +1 -1
  231. package/dist/cjs/hooks/use-prop-synced-state.js.map +1 -1
  232. package/dist/cjs/hooks/use-toggle-state.d.ts +1 -1
  233. package/dist/cjs/hooks/use-toggle-state.js.map +1 -1
  234. package/dist/cjs/index.js +5 -16
  235. package/dist/cjs/index.js.map +4 -4
  236. package/dist/cjs/props/color.prop.js.map +1 -1
  237. package/dist/cjs/props/emphasis.prop.js.map +1 -1
  238. package/dist/cjs/props/index.d.ts +1 -14
  239. package/dist/cjs/props/index.d.ts.map +1 -1
  240. package/dist/cjs/props/index.js +1 -1
  241. package/dist/cjs/props/index.js.map +4 -4
  242. package/dist/esm/{chunk-STMTXK7U.js → chunk-24CVW6P7.js} +2 -2
  243. package/dist/esm/{chunk-GTXRD4FZ.js → chunk-2KZ44I6T.js} +2 -2
  244. package/dist/esm/chunk-2KZ44I6T.js.map +7 -0
  245. package/dist/esm/chunk-36GV4H3C.js +2 -0
  246. package/dist/esm/chunk-36GV4H3C.js.map +7 -0
  247. package/dist/esm/chunk-4I4NJNYO.js +2 -0
  248. package/dist/esm/chunk-4I4NJNYO.js.map +7 -0
  249. package/dist/esm/chunk-4VBH3W2S.js +2 -0
  250. package/dist/esm/chunk-4ZAJVYU6.js +2 -0
  251. package/dist/esm/{chunk-QETAAJJV.js → chunk-5B6JDZ3S.js} +2 -2
  252. package/dist/esm/chunk-5B6JDZ3S.js.map +7 -0
  253. package/dist/esm/{chunk-NCDOMH5I.js → chunk-5P4JTWBK.js} +2 -2
  254. package/dist/esm/chunk-5P4JTWBK.js.map +7 -0
  255. package/dist/esm/chunk-5WLSAUNJ.js +2 -0
  256. package/dist/esm/chunk-5WLSAUNJ.js.map +7 -0
  257. package/dist/esm/chunk-6WANXT2G.js +2 -0
  258. package/dist/esm/chunk-6WANXT2G.js.map +7 -0
  259. package/dist/esm/chunk-72FU5FEC.js +2 -0
  260. package/dist/esm/chunk-7AXEPJYF.js +2 -0
  261. package/dist/esm/chunk-7AXEPJYF.js.map +7 -0
  262. package/dist/esm/{chunk-MLXHD7YF.js → chunk-7FPLWHMT.js} +2 -2
  263. package/dist/esm/chunk-7MC7N4BC.js +2 -0
  264. package/dist/esm/chunk-7MC7N4BC.js.map +7 -0
  265. package/dist/esm/chunk-7MPFZIZX.js +2 -0
  266. package/dist/esm/chunk-7MPFZIZX.js.map +7 -0
  267. package/dist/esm/{chunk-YS5BZRRK.js → chunk-7OQXCYCW.js} +2 -2
  268. package/dist/esm/{chunk-TBWKDBUF.js → chunk-7QPXLSVR.js} +2 -2
  269. package/dist/esm/{chunk-TBWKDBUF.js.map → chunk-7QPXLSVR.js.map} +2 -2
  270. package/dist/esm/chunk-7XWAXYZD.js +2 -0
  271. package/dist/esm/chunk-7XWAXYZD.js.map +7 -0
  272. package/dist/esm/chunk-AYZRLA7F.js +2 -0
  273. package/dist/esm/{chunk-6RZVKCNG.js → chunk-BHGES72S.js} +2 -2
  274. package/dist/esm/chunk-BQD7XS4K.js +2 -0
  275. package/dist/esm/chunk-BQD7XS4K.js.map +7 -0
  276. package/dist/esm/{chunk-KU3LLWFU.js → chunk-CTZ467AB.js} +2 -2
  277. package/dist/esm/{chunk-34KVYDF6.js → chunk-CUNKWFKA.js} +1 -1
  278. package/dist/esm/{chunk-34KVYDF6.js.map → chunk-CUNKWFKA.js.map} +1 -1
  279. package/dist/esm/{chunk-Q7S5LQBQ.js → chunk-CYO6CRMQ.js} +2 -2
  280. package/dist/esm/chunk-D3U4MWDZ.js +1 -0
  281. package/dist/esm/{chunk-VLLJ7A6P.js → chunk-DCNHG6VN.js} +2 -2
  282. package/dist/esm/chunk-DL6F2TIU.js +2 -0
  283. package/dist/esm/chunk-DL6F2TIU.js.map +7 -0
  284. package/dist/esm/chunk-DSV3XBHM.js +2 -0
  285. package/dist/esm/chunk-DSV3XBHM.js.map +7 -0
  286. package/dist/esm/{chunk-JDMJC76O.js → chunk-EDEYYJ3Q.js} +2 -2
  287. package/dist/esm/chunk-EDP2TJVB.js +2 -0
  288. package/dist/esm/chunk-EDP2TJVB.js.map +7 -0
  289. package/dist/esm/chunk-EGSMLRSO.js +2 -0
  290. package/dist/esm/chunk-EGSMLRSO.js.map +7 -0
  291. package/dist/esm/{chunk-6FLLFCBU.js → chunk-ELAW7ZUG.js} +2 -2
  292. package/dist/esm/{chunk-HK7RJPQ2.js → chunk-EOWG5SIY.js} +2 -2
  293. package/dist/esm/{chunk-TLZMLJTI.js → chunk-FSMUCDLI.js} +2 -2
  294. package/dist/esm/{chunk-B6RH4CTY.js → chunk-G46OLCM2.js} +2 -2
  295. package/dist/esm/{chunk-VK7RNXUO.js → chunk-GBFGUOFS.js} +1 -1
  296. package/dist/esm/{chunk-VK7RNXUO.js.map → chunk-GBFGUOFS.js.map} +1 -1
  297. package/dist/esm/{chunk-5LGWS5QS.js → chunk-GOV5I7I2.js} +2 -2
  298. package/dist/esm/{chunk-JOB6FH3D.js → chunk-GWGQ73PU.js} +2 -2
  299. package/dist/esm/{chunk-VSSJTPBV.js → chunk-HELY5CSU.js} +2 -2
  300. package/dist/esm/{chunk-UFJJTUOU.js → chunk-HGG3ULNK.js} +2 -2
  301. package/dist/esm/chunk-HZNOHY6O.js +2 -0
  302. package/dist/esm/chunk-IAC5IOPN.js +2 -0
  303. package/dist/esm/chunk-IAC5IOPN.js.map +7 -0
  304. package/dist/esm/chunk-IN6ZEGDK.js +2 -0
  305. package/dist/esm/chunk-IN6ZEGDK.js.map +7 -0
  306. package/dist/esm/chunk-IQBSUN5B.js +2 -0
  307. package/dist/esm/chunk-IQBSUN5B.js.map +7 -0
  308. package/dist/esm/{chunk-PUVZFRTQ.js → chunk-IZPDJN6O.js} +2 -2
  309. package/dist/esm/chunk-JMBCX5XR.js +2 -0
  310. package/dist/esm/chunk-JMBCX5XR.js.map +7 -0
  311. package/dist/esm/{chunk-KPACVWV4.js → chunk-K4BDLRCC.js} +2 -2
  312. package/dist/esm/chunk-K6QKUX3C.js +2 -0
  313. package/dist/esm/{chunk-IND2NZIN.js → chunk-K6WT5ZEA.js} +2 -2
  314. package/dist/esm/{chunk-CLEH57SW.js → chunk-KIYCILXL.js} +2 -2
  315. package/dist/esm/{chunk-ZCAI2PRH.js → chunk-KRDRQU4G.js} +2 -2
  316. package/dist/esm/{chunk-T5DSQKKF.js → chunk-KRZL245C.js} +2 -2
  317. package/dist/esm/chunk-LHYX53XA.js +2 -0
  318. package/dist/esm/chunk-LHYX53XA.js.map +7 -0
  319. package/dist/esm/{chunk-WBGKTN35.js → chunk-LNFN35ZE.js} +2 -2
  320. package/dist/esm/{chunk-JH55M4I2.js → chunk-LPVDR7V3.js} +2 -2
  321. package/dist/esm/chunk-LVCP5WGX.js +2 -0
  322. package/dist/esm/chunk-M4M4OZTS.js +2 -0
  323. package/dist/esm/chunk-MC3GY6ET.js +2 -0
  324. package/dist/esm/chunk-MC3GY6ET.js.map +7 -0
  325. package/dist/esm/chunk-MKY2IRPO.js +2 -0
  326. package/dist/esm/chunk-MKY2IRPO.js.map +7 -0
  327. package/dist/esm/{chunk-UNH3FGU4.js → chunk-MYO2E46Z.js} +2 -2
  328. package/dist/esm/{chunk-UNH3FGU4.js.map → chunk-MYO2E46Z.js.map} +2 -2
  329. package/dist/esm/chunk-OA2BZDKL.js +2 -0
  330. package/dist/esm/chunk-P3WB3K2M.js +2 -0
  331. package/dist/esm/chunk-P3WB3K2M.js.map +7 -0
  332. package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
  333. package/dist/esm/{chunk-CD324U6G.js → chunk-PEP6MQJ2.js} +2 -2
  334. package/dist/esm/{chunk-WAURCNAS.js → chunk-PN3RQFSU.js} +1 -1
  335. package/dist/esm/chunk-PN3RQFSU.js.map +7 -0
  336. package/dist/esm/chunk-QQVA2PJ3.js +2 -0
  337. package/dist/esm/chunk-QQVA2PJ3.js.map +7 -0
  338. package/dist/esm/{chunk-E3754NJZ.js → chunk-QZ6OCMH4.js} +2 -2
  339. package/dist/esm/chunk-RBTTIDON.js +2 -0
  340. package/dist/esm/chunk-RBTTIDON.js.map +7 -0
  341. package/dist/esm/{chunk-6AZV4VFW.js → chunk-RGZKWVJC.js} +2 -2
  342. package/dist/esm/{chunk-6AZV4VFW.js.map → chunk-RGZKWVJC.js.map} +1 -1
  343. package/dist/esm/chunk-T4L4QDBG.js +2 -0
  344. package/dist/esm/chunk-T4L4QDBG.js.map +7 -0
  345. package/dist/esm/chunk-TCSPZ27B.js +2 -0
  346. package/dist/esm/chunk-TCSPZ27B.js.map +7 -0
  347. package/dist/esm/chunk-TDQTMR5T.js +2 -0
  348. package/dist/esm/chunk-TDQTMR5T.js.map +7 -0
  349. package/dist/esm/{chunk-54KMG7NX.js → chunk-TKSG7KBZ.js} +2 -2
  350. package/dist/esm/{chunk-WDDO73O5.js → chunk-UEHCCJYY.js} +2 -2
  351. package/dist/esm/chunk-UMIDPKFZ.js +2 -0
  352. package/dist/esm/chunk-UMIDPKFZ.js.map +7 -0
  353. package/dist/esm/chunk-UW5IJ64A.js +5 -0
  354. package/dist/esm/chunk-UW5IJ64A.js.map +7 -0
  355. package/dist/esm/{chunk-KSZOVI57.js → chunk-VCU6VCPH.js} +2 -2
  356. package/dist/esm/chunk-VCU6VCPH.js.map +7 -0
  357. package/dist/esm/{chunk-R372ULQC.js → chunk-VJOJGAGA.js} +2 -2
  358. package/dist/esm/chunk-VNONKPH7.js +2 -0
  359. package/dist/esm/chunk-VNONKPH7.js.map +7 -0
  360. package/dist/esm/chunk-VOEZ5HJL.js +2 -0
  361. package/dist/esm/chunk-VOEZ5HJL.js.map +7 -0
  362. package/dist/esm/chunk-W7YHNMAO.js +2 -0
  363. package/dist/esm/chunk-W7YHNMAO.js.map +7 -0
  364. package/dist/esm/chunk-WQT6UULR.js +2 -0
  365. package/dist/esm/chunk-WQT6UULR.js.map +7 -0
  366. package/dist/esm/chunk-WW7WTPM6.js +2 -0
  367. package/dist/esm/chunk-WW7WTPM6.js.map +7 -0
  368. package/dist/esm/{chunk-ZWZGUBL4.js → chunk-WWF3IU3P.js} +1 -1
  369. package/dist/esm/chunk-WWF3IU3P.js.map +7 -0
  370. package/dist/esm/chunk-XEW4BRIL.js +2 -0
  371. package/dist/esm/chunk-XEW4BRIL.js.map +7 -0
  372. package/dist/esm/chunk-YB7CENHH.js +2 -0
  373. package/dist/esm/chunk-YB7CENHH.js.map +7 -0
  374. package/dist/esm/chunk-YEIZ43KW.js +2 -0
  375. package/dist/esm/chunk-YEIZ43KW.js.map +7 -0
  376. package/dist/esm/chunk-ZCWDURKJ.js +2 -0
  377. package/dist/esm/chunk-ZCWDURKJ.js.map +7 -0
  378. package/dist/esm/components/_internal/base-button.d.ts +2 -4
  379. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  380. package/dist/esm/components/_internal/base-button.js +1 -1
  381. package/dist/esm/components/_internal/base-button.props.d.ts +1 -9
  382. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  383. package/dist/esm/components/_internal/base-button.props.js +1 -1
  384. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  385. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  386. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  387. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  388. package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
  389. package/dist/esm/components/_internal/menu-context.js +1 -1
  390. package/dist/esm/components/_internal/pane-chrome.js +1 -1
  391. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  392. package/dist/esm/components/accordion.d.ts.map +1 -1
  393. package/dist/esm/components/accordion.js +1 -1
  394. package/dist/esm/components/accordion.props.d.ts +0 -5
  395. package/dist/esm/components/accordion.props.d.ts.map +1 -1
  396. package/dist/esm/components/accordion.props.js +1 -1
  397. package/dist/esm/components/alert-dialog.js +1 -1
  398. package/dist/esm/components/avatar.d.ts +1 -2
  399. package/dist/esm/components/avatar.d.ts.map +1 -1
  400. package/dist/esm/components/avatar.js +1 -1
  401. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  402. package/dist/esm/components/avatar.props.js +1 -1
  403. package/dist/esm/components/blockquote.d.ts +1 -2
  404. package/dist/esm/components/blockquote.d.ts.map +1 -1
  405. package/dist/esm/components/blockquote.js +1 -1
  406. package/dist/esm/components/blockquote.props.js +1 -1
  407. package/dist/esm/components/box.js +1 -1
  408. package/dist/esm/components/button.d.ts +23 -7
  409. package/dist/esm/components/button.d.ts.map +1 -1
  410. package/dist/esm/components/button.js +1 -1
  411. package/dist/esm/components/button.props.js +1 -1
  412. package/dist/esm/components/card.d.ts +1 -2
  413. package/dist/esm/components/card.d.ts.map +1 -1
  414. package/dist/esm/components/card.js +1 -1
  415. package/dist/esm/components/chatbar.d.ts +2 -3
  416. package/dist/esm/components/chatbar.d.ts.map +1 -1
  417. package/dist/esm/components/chatbar.js +1 -1
  418. package/dist/esm/components/checkbox-group.d.ts +2 -3
  419. package/dist/esm/components/checkbox-group.d.ts.map +1 -1
  420. package/dist/esm/components/checkbox-group.js +1 -1
  421. package/dist/esm/components/checkbox-group.props.js +1 -1
  422. package/dist/esm/components/checkbox.d.ts +1 -2
  423. package/dist/esm/components/checkbox.d.ts.map +1 -1
  424. package/dist/esm/components/checkbox.js +1 -1
  425. package/dist/esm/components/checkbox.props.js +1 -1
  426. package/dist/esm/components/chip.d.ts +18 -0
  427. package/dist/esm/components/chip.d.ts.map +1 -0
  428. package/dist/esm/components/chip.js +2 -0
  429. package/dist/esm/components/{badge.props.d.ts → chip.props.d.ts} +3 -3
  430. package/dist/esm/components/chip.props.d.ts.map +1 -0
  431. package/dist/esm/components/chip.props.js +2 -0
  432. package/dist/esm/components/code.d.ts +1 -2
  433. package/dist/esm/components/code.d.ts.map +1 -1
  434. package/dist/esm/components/code.js +1 -1
  435. package/dist/esm/components/code.props.js +1 -1
  436. package/dist/esm/components/combobox.d.ts +1 -2
  437. package/dist/esm/components/combobox.d.ts.map +1 -1
  438. package/dist/esm/components/combobox.js +1 -1
  439. package/dist/esm/components/combobox.props.js +1 -1
  440. package/dist/esm/components/context-menu.js +1 -1
  441. package/dist/esm/components/context-menu.props.js +1 -1
  442. package/dist/esm/components/dialog.js +1 -1
  443. package/dist/esm/components/dropdown-menu.js +1 -1
  444. package/dist/esm/components/dropdown-menu.props.js +1 -1
  445. package/dist/esm/components/flex.js +1 -1
  446. package/dist/esm/components/grid.js +1 -1
  447. package/dist/esm/components/heading.d.ts +1 -2
  448. package/dist/esm/components/heading.d.ts.map +1 -1
  449. package/dist/esm/components/heading.js +1 -1
  450. package/dist/esm/components/heading.props.js +1 -1
  451. package/dist/esm/components/index.d.ts +2 -18
  452. package/dist/esm/components/index.d.ts.map +1 -1
  453. package/dist/esm/components/index.js +1 -1
  454. package/dist/esm/components/kbd.d.ts +1 -2
  455. package/dist/esm/components/kbd.d.ts.map +1 -1
  456. package/dist/esm/components/kbd.js +1 -1
  457. package/dist/esm/components/link.d.ts +1 -2
  458. package/dist/esm/components/link.d.ts.map +1 -1
  459. package/dist/esm/components/link.js +1 -1
  460. package/dist/esm/components/link.props.js +1 -1
  461. package/dist/esm/components/message-scroller.d.ts +2 -3
  462. package/dist/esm/components/message-scroller.d.ts.map +1 -1
  463. package/dist/esm/components/message-scroller.js +1 -1
  464. package/dist/esm/components/navbar.d.ts +14 -6
  465. package/dist/esm/components/navbar.d.ts.map +1 -1
  466. package/dist/esm/components/navbar.js +1 -1
  467. package/dist/esm/components/notice.d.ts.map +1 -1
  468. package/dist/esm/components/notice.js +1 -1
  469. package/dist/esm/components/popover.js +1 -1
  470. package/dist/esm/components/progress.d.ts +1 -2
  471. package/dist/esm/components/progress.d.ts.map +1 -1
  472. package/dist/esm/components/progress.js +1 -1
  473. package/dist/esm/components/progress.props.js +1 -1
  474. package/dist/esm/components/radio-group.d.ts +2 -3
  475. package/dist/esm/components/radio-group.d.ts.map +1 -1
  476. package/dist/esm/components/radio-group.js +1 -1
  477. package/dist/esm/components/radio-group.props.js +1 -1
  478. package/dist/esm/components/radio.d.ts +1 -2
  479. package/dist/esm/components/radio.d.ts.map +1 -1
  480. package/dist/esm/components/radio.js +1 -1
  481. package/dist/esm/components/radio.props.js +1 -1
  482. package/dist/esm/components/schemas/base-button.schema.d.ts +2 -3
  483. package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -1
  484. package/dist/esm/components/schemas/base-button.schema.js +1 -1
  485. package/dist/esm/components/schemas/button.schema.d.ts +0 -1
  486. package/dist/esm/components/schemas/button.schema.d.ts.map +1 -1
  487. package/dist/esm/components/schemas/button.schema.js +1 -1
  488. package/dist/esm/components/schemas/index.d.ts +2 -6
  489. package/dist/esm/components/schemas/index.d.ts.map +1 -1
  490. package/dist/esm/components/schemas/index.js +1 -1
  491. package/dist/esm/components/schemas/index.js.map +2 -2
  492. package/dist/esm/components/schemas/{toggle-button.schema.d.ts → toggle.schema.d.ts} +13 -38
  493. package/dist/esm/components/schemas/toggle.schema.d.ts.map +1 -0
  494. package/dist/esm/components/schemas/toggle.schema.js +2 -0
  495. package/dist/esm/components/scroll-area.d.ts +1 -2
  496. package/dist/esm/components/scroll-area.d.ts.map +1 -1
  497. package/dist/esm/components/scroll-area.js +1 -1
  498. package/dist/esm/components/segmented-control.d.ts +1 -2
  499. package/dist/esm/components/segmented-control.d.ts.map +1 -1
  500. package/dist/esm/components/segmented-control.js +1 -1
  501. package/dist/esm/components/select.d.ts +1 -2
  502. package/dist/esm/components/select.d.ts.map +1 -1
  503. package/dist/esm/components/select.js +1 -1
  504. package/dist/esm/components/select.props.js +1 -1
  505. package/dist/esm/components/separator.d.ts +1 -2
  506. package/dist/esm/components/separator.d.ts.map +1 -1
  507. package/dist/esm/components/separator.js +1 -1
  508. package/dist/esm/components/separator.props.js +1 -1
  509. package/dist/esm/components/sheet.js +1 -1
  510. package/dist/esm/components/shell.js +1 -1
  511. package/dist/esm/components/sidebar.d.ts +5 -5
  512. package/dist/esm/components/sidebar.d.ts.map +1 -1
  513. package/dist/esm/components/sidebar.js +1 -1
  514. package/dist/esm/components/slider.d.ts +1 -2
  515. package/dist/esm/components/slider.d.ts.map +1 -1
  516. package/dist/esm/components/slider.js +1 -1
  517. package/dist/esm/components/slider.props.js +1 -1
  518. package/dist/esm/components/spinner.d.ts +1 -2
  519. package/dist/esm/components/spinner.d.ts.map +1 -1
  520. package/dist/esm/components/spinner.js +1 -1
  521. package/dist/esm/components/switch.d.ts +1 -2
  522. package/dist/esm/components/switch.d.ts.map +1 -1
  523. package/dist/esm/components/switch.js +1 -1
  524. package/dist/esm/components/switch.props.js +1 -1
  525. package/dist/esm/components/table.d.ts +1 -2
  526. package/dist/esm/components/table.d.ts.map +1 -1
  527. package/dist/esm/components/table.js +1 -1
  528. package/dist/esm/components/tabs.d.ts +3 -4
  529. package/dist/esm/components/tabs.d.ts.map +1 -1
  530. package/dist/esm/components/tabs.js +1 -1
  531. package/dist/esm/components/tabs.props.js +1 -1
  532. package/dist/esm/components/text-area.d.ts +1 -2
  533. package/dist/esm/components/text-area.d.ts.map +1 -1
  534. package/dist/esm/components/text-area.js +1 -1
  535. package/dist/esm/components/text-area.props.js +1 -1
  536. package/dist/esm/components/text-field.d.ts +1 -2
  537. package/dist/esm/components/text-field.d.ts.map +1 -1
  538. package/dist/esm/components/text-field.js +1 -1
  539. package/dist/esm/components/text-field.props.js +1 -1
  540. package/dist/esm/components/text.d.ts +1 -2
  541. package/dist/esm/components/text.d.ts.map +1 -1
  542. package/dist/esm/components/text.js +1 -1
  543. package/dist/esm/components/text.props.js +1 -1
  544. package/dist/esm/components/theme.js +1 -1
  545. package/dist/esm/components/theme.props.js +1 -1
  546. package/dist/esm/components/toggle.d.ts +35 -0
  547. package/dist/esm/components/toggle.d.ts.map +1 -0
  548. package/dist/esm/components/toggle.js +2 -0
  549. package/dist/esm/components/toolbar.d.ts +2 -3
  550. package/dist/esm/components/toolbar.d.ts.map +1 -1
  551. package/dist/esm/components/toolbar.js +1 -1
  552. package/dist/esm/components/tooltip.js +1 -1
  553. package/dist/esm/components/virtual-menu.js +1 -1
  554. package/dist/esm/helpers/extract-props.js +1 -1
  555. package/dist/esm/helpers/get-margin-styles.js +1 -1
  556. package/dist/esm/helpers/get-responsive-styles.js +1 -1
  557. package/dist/esm/helpers/index.js +1 -1
  558. package/dist/esm/helpers/inert.js +1 -1
  559. package/dist/esm/helpers/inert.js.map +4 -4
  560. package/dist/esm/hooks/index.js +1 -1
  561. package/dist/esm/hooks/use-prop-synced-state.d.ts +1 -1
  562. package/dist/esm/hooks/use-prop-synced-state.js +1 -1
  563. package/dist/esm/hooks/use-toggle-state.d.ts +1 -1
  564. package/dist/esm/hooks/use-toggle-state.js +1 -1
  565. package/dist/esm/index.js +1 -1
  566. package/dist/esm/props/color.prop.js +1 -1
  567. package/dist/esm/props/emphasis.prop.js +1 -1
  568. package/dist/esm/props/index.d.ts +1 -14
  569. package/dist/esm/props/index.d.ts.map +1 -1
  570. package/dist/esm/props/index.js +1 -1
  571. package/layout/components.css +0 -223
  572. package/layout.css +0 -221
  573. package/package.json +1 -1
  574. package/schemas/base-button.json +0 -5
  575. package/schemas/button.json +0 -5
  576. package/schemas/index.json +14 -629
  577. package/schemas/schemas.d.ts +2 -6
  578. package/schemas/{toggle-button.json → toggle.json} +4 -9
  579. package/src/components/_internal/base-button.css +2 -36
  580. package/src/components/_internal/base-button.props.ts +1 -7
  581. package/src/components/_internal/base-button.tsx +3 -9
  582. package/src/components/_internal/base-checkbox.css +3 -8
  583. package/src/components/_internal/base-menu.css +10 -6
  584. package/src/components/_internal/base-radio.css +2 -7
  585. package/src/components/_internal/base-sidebar-menu.css +3 -2
  586. package/src/components/_internal/base-tab-list.css +3 -4
  587. package/src/components/accordion.css +0 -33
  588. package/src/components/accordion.props.tsx +0 -3
  589. package/src/components/accordion.tsx +1 -2
  590. package/src/components/alert-dialog.tsx +1 -1
  591. package/src/components/avatar.tsx +2 -4
  592. package/src/components/blockquote.tsx +0 -2
  593. package/src/components/button.css +4 -3
  594. package/src/components/button.tsx +34 -19
  595. package/src/components/card.tsx +2 -4
  596. package/src/components/chatbar.css +2 -2
  597. package/src/components/chatbar.tsx +8 -7
  598. package/src/components/checkbox-group.tsx +2 -7
  599. package/src/components/checkbox.tsx +1 -4
  600. package/src/components/{badge.css → chip.css} +9 -9
  601. package/src/components/{badge.props.tsx → chip.props.tsx} +2 -2
  602. package/src/components/{badge.tsx → chip.tsx} +20 -23
  603. package/src/components/code.tsx +0 -4
  604. package/src/components/combobox.css +2 -2
  605. package/src/components/combobox.tsx +2 -4
  606. package/src/components/dialog.tsx +1 -1
  607. package/src/components/dropdown-menu.css +4 -4
  608. package/src/components/heading.tsx +2 -5
  609. package/src/components/index.css +2 -15
  610. package/src/components/index.tsx +2 -23
  611. package/src/components/kbd.tsx +2 -4
  612. package/src/components/layout.css +0 -2
  613. package/src/components/link.tsx +1 -2
  614. package/src/components/message-scroller.tsx +6 -5
  615. package/src/components/navbar.tsx +7 -3
  616. package/src/components/notice.tsx +2 -3
  617. package/src/components/progress.tsx +1 -5
  618. package/src/components/radio-group.tsx +3 -8
  619. package/src/components/radio.tsx +1 -4
  620. package/src/components/schemas/base-button.schema.ts +2 -13
  621. package/src/components/schemas/index.ts +3 -11
  622. package/src/components/schemas/{toggle-button.schema.ts → toggle.schema.ts} +18 -38
  623. package/src/components/scroll-area.tsx +3 -11
  624. package/src/components/segmented-control.css +8 -5
  625. package/src/components/segmented-control.tsx +2 -5
  626. package/src/components/select.tsx +0 -4
  627. package/src/components/separator.tsx +2 -4
  628. package/src/components/sidebar.css +10 -10
  629. package/src/components/sidebar.tsx +15 -15
  630. package/src/components/slider.css +1 -2
  631. package/src/components/slider.tsx +0 -4
  632. package/src/components/spinner.tsx +1 -5
  633. package/src/components/switch.tsx +0 -4
  634. package/src/components/table.tsx +1 -5
  635. package/src/components/tabs.tsx +2 -8
  636. package/src/components/text-area.css +2 -1
  637. package/src/components/text-area.tsx +1 -4
  638. package/src/components/text-field.css +4 -2
  639. package/src/components/text-field.tsx +2 -4
  640. package/src/components/text.tsx +2 -5
  641. package/src/components/theme.tsx +1 -1
  642. package/src/components/toggle.tsx +96 -0
  643. package/src/components/toolbar.tsx +6 -12
  644. package/src/hooks/use-prop-synced-state.ts +1 -1
  645. package/src/hooks/use-toggle-state.ts +1 -1
  646. package/src/props/color.prop.ts +1 -1
  647. package/src/props/emphasis.prop.ts +2 -2
  648. package/src/props/index.ts +1 -14
  649. package/src/styles/tokens/color.css +1 -1
  650. package/styles.css +900 -2667
  651. package/dist/cjs/components/aspect-ratio.d.ts +0 -4
  652. package/dist/cjs/components/aspect-ratio.d.ts.map +0 -1
  653. package/dist/cjs/components/aspect-ratio.js +0 -2
  654. package/dist/cjs/components/aspect-ratio.js.map +0 -7
  655. package/dist/cjs/components/badge.d.ts +0 -19
  656. package/dist/cjs/components/badge.d.ts.map +0 -1
  657. package/dist/cjs/components/badge.js +0 -2
  658. package/dist/cjs/components/badge.js.map +0 -7
  659. package/dist/cjs/components/badge.props.d.ts.map +0 -1
  660. package/dist/cjs/components/badge.props.js +0 -2
  661. package/dist/cjs/components/badge.props.js.map +0 -7
  662. package/dist/cjs/components/checkbox-cards.d.ts +0 -19
  663. package/dist/cjs/components/checkbox-cards.d.ts.map +0 -1
  664. package/dist/cjs/components/checkbox-cards.js +0 -2
  665. package/dist/cjs/components/checkbox-cards.js.map +0 -7
  666. package/dist/cjs/components/checkbox-cards.props.d.ts +0 -43
  667. package/dist/cjs/components/checkbox-cards.props.d.ts.map +0 -1
  668. package/dist/cjs/components/checkbox-cards.props.js +0 -2
  669. package/dist/cjs/components/checkbox-cards.props.js.map +0 -7
  670. package/dist/cjs/components/container.d.ts +0 -11
  671. package/dist/cjs/components/container.d.ts.map +0 -1
  672. package/dist/cjs/components/container.js +0 -2
  673. package/dist/cjs/components/container.js.map +0 -7
  674. package/dist/cjs/components/container.props.d.ts +0 -68
  675. package/dist/cjs/components/container.props.d.ts.map +0 -1
  676. package/dist/cjs/components/container.props.js +0 -2
  677. package/dist/cjs/components/container.props.js.map +0 -7
  678. package/dist/cjs/components/data-list.d.ts +0 -23
  679. package/dist/cjs/components/data-list.d.ts.map +0 -1
  680. package/dist/cjs/components/data-list.js +0 -2
  681. package/dist/cjs/components/data-list.js.map +0 -7
  682. package/dist/cjs/components/data-list.props.d.ts +0 -63
  683. package/dist/cjs/components/data-list.props.d.ts.map +0 -1
  684. package/dist/cjs/components/data-list.props.js +0 -2
  685. package/dist/cjs/components/data-list.props.js.map +0 -7
  686. package/dist/cjs/components/em.d.ts +0 -11
  687. package/dist/cjs/components/em.d.ts.map +0 -1
  688. package/dist/cjs/components/em.js +0 -2
  689. package/dist/cjs/components/em.js.map +0 -7
  690. package/dist/cjs/components/em.props.d.ts +0 -17
  691. package/dist/cjs/components/em.props.d.ts.map +0 -1
  692. package/dist/cjs/components/em.props.js +0 -2
  693. package/dist/cjs/components/em.props.js.map +0 -7
  694. package/dist/cjs/components/hover-card.d.ts +0 -17
  695. package/dist/cjs/components/hover-card.d.ts.map +0 -1
  696. package/dist/cjs/components/hover-card.js +0 -2
  697. package/dist/cjs/components/hover-card.js.map +0 -7
  698. package/dist/cjs/components/hover-card.props.d.ts +0 -57
  699. package/dist/cjs/components/hover-card.props.d.ts.map +0 -1
  700. package/dist/cjs/components/hover-card.props.js +0 -2
  701. package/dist/cjs/components/hover-card.props.js.map +0 -7
  702. package/dist/cjs/components/icon-button.d.ts +0 -108
  703. package/dist/cjs/components/icon-button.d.ts.map +0 -1
  704. package/dist/cjs/components/icon-button.js +0 -5
  705. package/dist/cjs/components/icon-button.js.map +0 -7
  706. package/dist/cjs/components/icon-button.props.d.ts +0 -2
  707. package/dist/cjs/components/icon-button.props.d.ts.map +0 -1
  708. package/dist/cjs/components/icon-button.props.js +0 -2
  709. package/dist/cjs/components/icon-button.props.js.map +0 -7
  710. package/dist/cjs/components/image.d.ts +0 -96
  711. package/dist/cjs/components/image.d.ts.map +0 -1
  712. package/dist/cjs/components/image.js +0 -2
  713. package/dist/cjs/components/image.js.map +0 -7
  714. package/dist/cjs/components/image.props.d.ts +0 -147
  715. package/dist/cjs/components/image.props.d.ts.map +0 -1
  716. package/dist/cjs/components/image.props.js +0 -2
  717. package/dist/cjs/components/image.props.js.map +0 -7
  718. package/dist/cjs/components/quote.d.ts +0 -11
  719. package/dist/cjs/components/quote.d.ts.map +0 -1
  720. package/dist/cjs/components/quote.js +0 -2
  721. package/dist/cjs/components/quote.js.map +0 -7
  722. package/dist/cjs/components/quote.props.d.ts +0 -17
  723. package/dist/cjs/components/quote.props.d.ts.map +0 -1
  724. package/dist/cjs/components/quote.props.js +0 -2
  725. package/dist/cjs/components/quote.props.js.map +0 -7
  726. package/dist/cjs/components/radio-cards.d.ts +0 -16
  727. package/dist/cjs/components/radio-cards.d.ts.map +0 -1
  728. package/dist/cjs/components/radio-cards.js +0 -2
  729. package/dist/cjs/components/radio-cards.js.map +0 -7
  730. package/dist/cjs/components/radio-cards.props.d.ts +0 -43
  731. package/dist/cjs/components/radio-cards.props.d.ts.map +0 -1
  732. package/dist/cjs/components/radio-cards.props.js +0 -2
  733. package/dist/cjs/components/radio-cards.props.js.map +0 -7
  734. package/dist/cjs/components/schemas/icon-button.schema.d.ts +0 -201
  735. package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +0 -1
  736. package/dist/cjs/components/schemas/icon-button.schema.js +0 -2
  737. package/dist/cjs/components/schemas/icon-button.schema.js.map +0 -7
  738. package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +0 -1
  739. package/dist/cjs/components/schemas/toggle-button.schema.js +0 -2
  740. package/dist/cjs/components/schemas/toggle-button.schema.js.map +0 -7
  741. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +0 -211
  742. package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +0 -1
  743. package/dist/cjs/components/schemas/toggle-icon-button.schema.js +0 -2
  744. package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +0 -7
  745. package/dist/cjs/components/section.d.ts +0 -11
  746. package/dist/cjs/components/section.d.ts.map +0 -1
  747. package/dist/cjs/components/section.js +0 -2
  748. package/dist/cjs/components/section.js.map +0 -7
  749. package/dist/cjs/components/section.props.d.ts +0 -52
  750. package/dist/cjs/components/section.props.d.ts.map +0 -1
  751. package/dist/cjs/components/section.props.js +0 -2
  752. package/dist/cjs/components/section.props.js.map +0 -7
  753. package/dist/cjs/components/skeleton.d.ts +0 -12
  754. package/dist/cjs/components/skeleton.d.ts.map +0 -1
  755. package/dist/cjs/components/skeleton.js +0 -2
  756. package/dist/cjs/components/skeleton.js.map +0 -7
  757. package/dist/cjs/components/skeleton.props.d.ts +0 -44
  758. package/dist/cjs/components/skeleton.props.d.ts.map +0 -1
  759. package/dist/cjs/components/skeleton.props.js +0 -2
  760. package/dist/cjs/components/skeleton.props.js.map +0 -7
  761. package/dist/cjs/components/strong.d.ts +0 -11
  762. package/dist/cjs/components/strong.d.ts.map +0 -1
  763. package/dist/cjs/components/strong.js +0 -2
  764. package/dist/cjs/components/strong.js.map +0 -7
  765. package/dist/cjs/components/strong.props.d.ts +0 -17
  766. package/dist/cjs/components/strong.props.d.ts.map +0 -1
  767. package/dist/cjs/components/strong.props.js +0 -2
  768. package/dist/cjs/components/strong.props.js.map +0 -7
  769. package/dist/cjs/components/tab-nav.d.ts +0 -19
  770. package/dist/cjs/components/tab-nav.d.ts.map +0 -1
  771. package/dist/cjs/components/tab-nav.js +0 -2
  772. package/dist/cjs/components/tab-nav.js.map +0 -7
  773. package/dist/cjs/components/tab-nav.props.d.ts +0 -12
  774. package/dist/cjs/components/tab-nav.props.d.ts.map +0 -1
  775. package/dist/cjs/components/tab-nav.props.js +0 -2
  776. package/dist/cjs/components/tab-nav.props.js.map +0 -7
  777. package/dist/cjs/components/theme-panel.d.ts +0 -25
  778. package/dist/cjs/components/theme-panel.d.ts.map +0 -1
  779. package/dist/cjs/components/theme-panel.js +0 -13
  780. package/dist/cjs/components/theme-panel.js.map +0 -7
  781. package/dist/cjs/components/toggle-button.d.ts +0 -63
  782. package/dist/cjs/components/toggle-button.d.ts.map +0 -1
  783. package/dist/cjs/components/toggle-button.js +0 -13
  784. package/dist/cjs/components/toggle-button.js.map +0 -7
  785. package/dist/cjs/components/toggle-icon-button.d.ts +0 -109
  786. package/dist/cjs/components/toggle-icon-button.d.ts.map +0 -1
  787. package/dist/cjs/components/toggle-icon-button.js +0 -13
  788. package/dist/cjs/components/toggle-icon-button.js.map +0 -7
  789. package/dist/esm/chunk-33IRPFDK.js +0 -2
  790. package/dist/esm/chunk-33IRPFDK.js.map +0 -7
  791. package/dist/esm/chunk-3E6ADI2F.js +0 -2
  792. package/dist/esm/chunk-3E6ADI2F.js.map +0 -7
  793. package/dist/esm/chunk-42LDZ7L5.js +0 -2
  794. package/dist/esm/chunk-42LDZ7L5.js.map +0 -7
  795. package/dist/esm/chunk-43A5GUSI.js +0 -2
  796. package/dist/esm/chunk-43A5GUSI.js.map +0 -7
  797. package/dist/esm/chunk-4JQZUQY7.js +0 -2
  798. package/dist/esm/chunk-4JQZUQY7.js.map +0 -7
  799. package/dist/esm/chunk-534LGOWC.js +0 -2
  800. package/dist/esm/chunk-534LGOWC.js.map +0 -7
  801. package/dist/esm/chunk-5UU2IMGX.js +0 -2
  802. package/dist/esm/chunk-5UU2IMGX.js.map +0 -7
  803. package/dist/esm/chunk-74SNS4VY.js +0 -2
  804. package/dist/esm/chunk-74SNS4VY.js.map +0 -7
  805. package/dist/esm/chunk-7FC7HF76.js +0 -2
  806. package/dist/esm/chunk-7FC7HF76.js.map +0 -7
  807. package/dist/esm/chunk-7KIKAEI7.js +0 -2
  808. package/dist/esm/chunk-7KIKAEI7.js.map +0 -7
  809. package/dist/esm/chunk-7SS6EIE5.js +0 -5
  810. package/dist/esm/chunk-7SS6EIE5.js.map +0 -7
  811. package/dist/esm/chunk-7UV4FYYL.js +0 -2
  812. package/dist/esm/chunk-7UV4FYYL.js.map +0 -7
  813. package/dist/esm/chunk-ABS275QZ.js +0 -2
  814. package/dist/esm/chunk-AI6UQ5VD.js +0 -2
  815. package/dist/esm/chunk-AI6UQ5VD.js.map +0 -7
  816. package/dist/esm/chunk-AUV6B4AH.js +0 -2
  817. package/dist/esm/chunk-AUV6B4AH.js.map +0 -7
  818. package/dist/esm/chunk-BQS6XXJR.js +0 -2
  819. package/dist/esm/chunk-BQS6XXJR.js.map +0 -7
  820. package/dist/esm/chunk-CC4GNSKL.js +0 -2
  821. package/dist/esm/chunk-CC4GNSKL.js.map +0 -7
  822. package/dist/esm/chunk-CNMFVJNC.js +0 -2
  823. package/dist/esm/chunk-CNMFVJNC.js.map +0 -7
  824. package/dist/esm/chunk-D2ZHYCTG.js +0 -2
  825. package/dist/esm/chunk-D2ZHYCTG.js.map +0 -7
  826. package/dist/esm/chunk-DMWLY6ZP.js +0 -2
  827. package/dist/esm/chunk-E453PYTG.js +0 -2
  828. package/dist/esm/chunk-E453PYTG.js.map +0 -7
  829. package/dist/esm/chunk-EUHAZKWY.js +0 -2
  830. package/dist/esm/chunk-EUHAZKWY.js.map +0 -7
  831. package/dist/esm/chunk-F2UUKVBM.js +0 -1
  832. package/dist/esm/chunk-F7HK2QLM.js +0 -2
  833. package/dist/esm/chunk-FNRKTMNN.js +0 -2
  834. package/dist/esm/chunk-FNRKTMNN.js.map +0 -7
  835. package/dist/esm/chunk-FSKZAL5H.js +0 -2
  836. package/dist/esm/chunk-FSKZAL5H.js.map +0 -7
  837. package/dist/esm/chunk-GDACOD53.js +0 -2
  838. package/dist/esm/chunk-GDACOD53.js.map +0 -7
  839. package/dist/esm/chunk-GFOSP3PZ.js +0 -2
  840. package/dist/esm/chunk-GFOSP3PZ.js.map +0 -7
  841. package/dist/esm/chunk-GLERJXVS.js +0 -2
  842. package/dist/esm/chunk-GLERJXVS.js.map +0 -7
  843. package/dist/esm/chunk-GPVPXAUC.js +0 -2
  844. package/dist/esm/chunk-GPVPXAUC.js.map +0 -7
  845. package/dist/esm/chunk-GTXRD4FZ.js.map +0 -7
  846. package/dist/esm/chunk-HJ6ACBXW.js +0 -2
  847. package/dist/esm/chunk-HJ6ACBXW.js.map +0 -7
  848. package/dist/esm/chunk-HJZNHNLX.js +0 -2
  849. package/dist/esm/chunk-HJZNHNLX.js.map +0 -7
  850. package/dist/esm/chunk-HT5EFJA3.js +0 -2
  851. package/dist/esm/chunk-HT5EFJA3.js.map +0 -7
  852. package/dist/esm/chunk-HVXXJZC2.js +0 -2
  853. package/dist/esm/chunk-HVXXJZC2.js.map +0 -7
  854. package/dist/esm/chunk-IBF5U4QW.js +0 -2
  855. package/dist/esm/chunk-IBF5U4QW.js.map +0 -7
  856. package/dist/esm/chunk-JQURG6CB.js +0 -2
  857. package/dist/esm/chunk-JQURG6CB.js.map +0 -7
  858. package/dist/esm/chunk-KRPEEM4C.js +0 -2
  859. package/dist/esm/chunk-KRPEEM4C.js.map +0 -7
  860. package/dist/esm/chunk-KSZOVI57.js.map +0 -7
  861. package/dist/esm/chunk-L6UXAITB.js +0 -2
  862. package/dist/esm/chunk-L6UXAITB.js.map +0 -7
  863. package/dist/esm/chunk-LFUPGIPA.js +0 -2
  864. package/dist/esm/chunk-LFUPGIPA.js.map +0 -7
  865. package/dist/esm/chunk-MCQCG6AS.js +0 -2
  866. package/dist/esm/chunk-MCQCG6AS.js.map +0 -7
  867. package/dist/esm/chunk-MLXFZDFU.js +0 -2
  868. package/dist/esm/chunk-MLXFZDFU.js.map +0 -7
  869. package/dist/esm/chunk-N5OSP3PU.js +0 -2
  870. package/dist/esm/chunk-NCDOMH5I.js.map +0 -7
  871. package/dist/esm/chunk-NEK7F746.js +0 -5
  872. package/dist/esm/chunk-NEK7F746.js.map +0 -7
  873. package/dist/esm/chunk-NETIWKIR.js +0 -2
  874. package/dist/esm/chunk-NETIWKIR.js.map +0 -7
  875. package/dist/esm/chunk-NIX6Z3JG.js +0 -2
  876. package/dist/esm/chunk-NIX6Z3JG.js.map +0 -7
  877. package/dist/esm/chunk-NTGRWJEG.js +0 -2
  878. package/dist/esm/chunk-O7IPBLC7.js +0 -2
  879. package/dist/esm/chunk-O7IPBLC7.js.map +0 -7
  880. package/dist/esm/chunk-OLSTITVY.js +0 -2
  881. package/dist/esm/chunk-OLSTITVY.js.map +0 -7
  882. package/dist/esm/chunk-OMYAVTX6.js +0 -2
  883. package/dist/esm/chunk-OMYAVTX6.js.map +0 -7
  884. package/dist/esm/chunk-OXYHRNJA.js +0 -2
  885. package/dist/esm/chunk-PIMNQEDG.js +0 -2
  886. package/dist/esm/chunk-PIMNQEDG.js.map +0 -7
  887. package/dist/esm/chunk-PPNWGWN3.js +0 -2
  888. package/dist/esm/chunk-PPNWGWN3.js.map +0 -7
  889. package/dist/esm/chunk-Q5LPCJXN.js +0 -2
  890. package/dist/esm/chunk-Q5LPCJXN.js.map +0 -7
  891. package/dist/esm/chunk-Q6GUADLO.js +0 -2
  892. package/dist/esm/chunk-Q6GUADLO.js.map +0 -7
  893. package/dist/esm/chunk-QETAAJJV.js.map +0 -7
  894. package/dist/esm/chunk-QEYOXQK5.js +0 -2
  895. package/dist/esm/chunk-QOPRXQGR.js +0 -2
  896. package/dist/esm/chunk-QOPRXQGR.js.map +0 -7
  897. package/dist/esm/chunk-RUWKVDFT.js +0 -2
  898. package/dist/esm/chunk-RUWKVDFT.js.map +0 -7
  899. package/dist/esm/chunk-RVM4LGAU.js +0 -2
  900. package/dist/esm/chunk-RVM4LGAU.js.map +0 -7
  901. package/dist/esm/chunk-SKOF4A27.js +0 -10
  902. package/dist/esm/chunk-SKOF4A27.js.map +0 -7
  903. package/dist/esm/chunk-TLWCU336.js +0 -2
  904. package/dist/esm/chunk-TLWCU336.js.map +0 -7
  905. package/dist/esm/chunk-TQIR5LLY.js +0 -2
  906. package/dist/esm/chunk-TQIR5LLY.js.map +0 -7
  907. package/dist/esm/chunk-UUWGAQDT.js +0 -2
  908. package/dist/esm/chunk-UUWGAQDT.js.map +0 -7
  909. package/dist/esm/chunk-VLQ2LX5M.js +0 -2
  910. package/dist/esm/chunk-VLQ2LX5M.js.map +0 -7
  911. package/dist/esm/chunk-VTTJFBV6.js +0 -2
  912. package/dist/esm/chunk-VTTJFBV6.js.map +0 -7
  913. package/dist/esm/chunk-WAURCNAS.js.map +0 -7
  914. package/dist/esm/chunk-WSKA5MZZ.js +0 -2
  915. package/dist/esm/chunk-X7HFFVFD.js +0 -2
  916. package/dist/esm/chunk-X7HFFVFD.js.map +0 -7
  917. package/dist/esm/chunk-XASK6LMX.js +0 -2
  918. package/dist/esm/chunk-XASK6LMX.js.map +0 -7
  919. package/dist/esm/chunk-XDAQXNBQ.js +0 -2
  920. package/dist/esm/chunk-XDV2SDJ3.js +0 -2
  921. package/dist/esm/chunk-XDV2SDJ3.js.map +0 -7
  922. package/dist/esm/chunk-XI5YXUCK.js +0 -2
  923. package/dist/esm/chunk-XI5YXUCK.js.map +0 -7
  924. package/dist/esm/chunk-XPT5ELKO.js +0 -2
  925. package/dist/esm/chunk-XPT5ELKO.js.map +0 -7
  926. package/dist/esm/chunk-XXHIMGBY.js +0 -2
  927. package/dist/esm/chunk-XXHIMGBY.js.map +0 -7
  928. package/dist/esm/chunk-Y7LT3F6R.js +0 -2
  929. package/dist/esm/chunk-Y7LT3F6R.js.map +0 -7
  930. package/dist/esm/chunk-YKPMLM7M.js +0 -1
  931. package/dist/esm/chunk-YYZBPQQ4.js +0 -2
  932. package/dist/esm/chunk-YYZBPQQ4.js.map +0 -7
  933. package/dist/esm/chunk-Z6NRR7KS.js +0 -2
  934. package/dist/esm/chunk-Z6NRR7KS.js.map +0 -7
  935. package/dist/esm/chunk-ZIKJ2WZN.js +0 -2
  936. package/dist/esm/chunk-ZIKJ2WZN.js.map +0 -7
  937. package/dist/esm/chunk-ZMOBKT4T.js +0 -2
  938. package/dist/esm/chunk-ZMOBKT4T.js.map +0 -7
  939. package/dist/esm/chunk-ZRHXFYAE.js +0 -2
  940. package/dist/esm/chunk-ZRHXFYAE.js.map +0 -7
  941. package/dist/esm/chunk-ZWZGUBL4.js.map +0 -7
  942. package/dist/esm/components/aspect-ratio.d.ts +0 -4
  943. package/dist/esm/components/aspect-ratio.d.ts.map +0 -1
  944. package/dist/esm/components/aspect-ratio.js +0 -2
  945. package/dist/esm/components/badge.d.ts +0 -19
  946. package/dist/esm/components/badge.d.ts.map +0 -1
  947. package/dist/esm/components/badge.js +0 -2
  948. package/dist/esm/components/badge.props.d.ts.map +0 -1
  949. package/dist/esm/components/badge.props.js +0 -2
  950. package/dist/esm/components/checkbox-cards.d.ts +0 -19
  951. package/dist/esm/components/checkbox-cards.d.ts.map +0 -1
  952. package/dist/esm/components/checkbox-cards.js +0 -2
  953. package/dist/esm/components/checkbox-cards.js.map +0 -7
  954. package/dist/esm/components/checkbox-cards.props.d.ts +0 -43
  955. package/dist/esm/components/checkbox-cards.props.d.ts.map +0 -1
  956. package/dist/esm/components/checkbox-cards.props.js +0 -2
  957. package/dist/esm/components/checkbox-cards.props.js.map +0 -7
  958. package/dist/esm/components/container.d.ts +0 -11
  959. package/dist/esm/components/container.d.ts.map +0 -1
  960. package/dist/esm/components/container.js +0 -2
  961. package/dist/esm/components/container.js.map +0 -7
  962. package/dist/esm/components/container.props.d.ts +0 -68
  963. package/dist/esm/components/container.props.d.ts.map +0 -1
  964. package/dist/esm/components/container.props.js +0 -2
  965. package/dist/esm/components/container.props.js.map +0 -7
  966. package/dist/esm/components/data-list.d.ts +0 -23
  967. package/dist/esm/components/data-list.d.ts.map +0 -1
  968. package/dist/esm/components/data-list.js +0 -2
  969. package/dist/esm/components/data-list.js.map +0 -7
  970. package/dist/esm/components/data-list.props.d.ts +0 -63
  971. package/dist/esm/components/data-list.props.d.ts.map +0 -1
  972. package/dist/esm/components/data-list.props.js +0 -2
  973. package/dist/esm/components/data-list.props.js.map +0 -7
  974. package/dist/esm/components/em.d.ts +0 -11
  975. package/dist/esm/components/em.d.ts.map +0 -1
  976. package/dist/esm/components/em.js +0 -2
  977. package/dist/esm/components/em.js.map +0 -7
  978. package/dist/esm/components/em.props.d.ts +0 -17
  979. package/dist/esm/components/em.props.d.ts.map +0 -1
  980. package/dist/esm/components/em.props.js +0 -2
  981. package/dist/esm/components/em.props.js.map +0 -7
  982. package/dist/esm/components/hover-card.d.ts +0 -17
  983. package/dist/esm/components/hover-card.d.ts.map +0 -1
  984. package/dist/esm/components/hover-card.js +0 -2
  985. package/dist/esm/components/hover-card.js.map +0 -7
  986. package/dist/esm/components/hover-card.props.d.ts +0 -57
  987. package/dist/esm/components/hover-card.props.d.ts.map +0 -1
  988. package/dist/esm/components/hover-card.props.js +0 -2
  989. package/dist/esm/components/hover-card.props.js.map +0 -7
  990. package/dist/esm/components/icon-button.d.ts +0 -108
  991. package/dist/esm/components/icon-button.d.ts.map +0 -1
  992. package/dist/esm/components/icon-button.js +0 -2
  993. package/dist/esm/components/icon-button.js.map +0 -7
  994. package/dist/esm/components/icon-button.props.d.ts +0 -2
  995. package/dist/esm/components/icon-button.props.d.ts.map +0 -1
  996. package/dist/esm/components/icon-button.props.js +0 -2
  997. package/dist/esm/components/icon-button.props.js.map +0 -7
  998. package/dist/esm/components/image.d.ts +0 -96
  999. package/dist/esm/components/image.d.ts.map +0 -1
  1000. package/dist/esm/components/image.js +0 -2
  1001. package/dist/esm/components/image.js.map +0 -7
  1002. package/dist/esm/components/image.props.d.ts +0 -147
  1003. package/dist/esm/components/image.props.d.ts.map +0 -1
  1004. package/dist/esm/components/image.props.js +0 -2
  1005. package/dist/esm/components/image.props.js.map +0 -7
  1006. package/dist/esm/components/quote.d.ts +0 -11
  1007. package/dist/esm/components/quote.d.ts.map +0 -1
  1008. package/dist/esm/components/quote.js +0 -2
  1009. package/dist/esm/components/quote.js.map +0 -7
  1010. package/dist/esm/components/quote.props.d.ts +0 -17
  1011. package/dist/esm/components/quote.props.d.ts.map +0 -1
  1012. package/dist/esm/components/quote.props.js +0 -2
  1013. package/dist/esm/components/quote.props.js.map +0 -7
  1014. package/dist/esm/components/radio-cards.d.ts +0 -16
  1015. package/dist/esm/components/radio-cards.d.ts.map +0 -1
  1016. package/dist/esm/components/radio-cards.js +0 -2
  1017. package/dist/esm/components/radio-cards.js.map +0 -7
  1018. package/dist/esm/components/radio-cards.props.d.ts +0 -43
  1019. package/dist/esm/components/radio-cards.props.d.ts.map +0 -1
  1020. package/dist/esm/components/radio-cards.props.js +0 -2
  1021. package/dist/esm/components/radio-cards.props.js.map +0 -7
  1022. package/dist/esm/components/schemas/icon-button.schema.d.ts +0 -201
  1023. package/dist/esm/components/schemas/icon-button.schema.d.ts.map +0 -1
  1024. package/dist/esm/components/schemas/icon-button.schema.js +0 -2
  1025. package/dist/esm/components/schemas/icon-button.schema.js.map +0 -7
  1026. package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +0 -1
  1027. package/dist/esm/components/schemas/toggle-button.schema.js +0 -2
  1028. package/dist/esm/components/schemas/toggle-button.schema.js.map +0 -7
  1029. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +0 -211
  1030. package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +0 -1
  1031. package/dist/esm/components/schemas/toggle-icon-button.schema.js +0 -2
  1032. package/dist/esm/components/schemas/toggle-icon-button.schema.js.map +0 -7
  1033. package/dist/esm/components/section.d.ts +0 -11
  1034. package/dist/esm/components/section.d.ts.map +0 -1
  1035. package/dist/esm/components/section.js +0 -2
  1036. package/dist/esm/components/section.js.map +0 -7
  1037. package/dist/esm/components/section.props.d.ts +0 -52
  1038. package/dist/esm/components/section.props.d.ts.map +0 -1
  1039. package/dist/esm/components/section.props.js +0 -2
  1040. package/dist/esm/components/section.props.js.map +0 -7
  1041. package/dist/esm/components/skeleton.d.ts +0 -12
  1042. package/dist/esm/components/skeleton.d.ts.map +0 -1
  1043. package/dist/esm/components/skeleton.js +0 -2
  1044. package/dist/esm/components/skeleton.js.map +0 -7
  1045. package/dist/esm/components/skeleton.props.d.ts +0 -44
  1046. package/dist/esm/components/skeleton.props.d.ts.map +0 -1
  1047. package/dist/esm/components/skeleton.props.js +0 -2
  1048. package/dist/esm/components/skeleton.props.js.map +0 -7
  1049. package/dist/esm/components/strong.d.ts +0 -11
  1050. package/dist/esm/components/strong.d.ts.map +0 -1
  1051. package/dist/esm/components/strong.js +0 -2
  1052. package/dist/esm/components/strong.js.map +0 -7
  1053. package/dist/esm/components/strong.props.d.ts +0 -17
  1054. package/dist/esm/components/strong.props.d.ts.map +0 -1
  1055. package/dist/esm/components/strong.props.js +0 -2
  1056. package/dist/esm/components/strong.props.js.map +0 -7
  1057. package/dist/esm/components/tab-nav.d.ts +0 -19
  1058. package/dist/esm/components/tab-nav.d.ts.map +0 -1
  1059. package/dist/esm/components/tab-nav.js +0 -2
  1060. package/dist/esm/components/tab-nav.js.map +0 -7
  1061. package/dist/esm/components/tab-nav.props.d.ts +0 -12
  1062. package/dist/esm/components/tab-nav.props.d.ts.map +0 -1
  1063. package/dist/esm/components/tab-nav.props.js +0 -2
  1064. package/dist/esm/components/tab-nav.props.js.map +0 -7
  1065. package/dist/esm/components/theme-panel.d.ts +0 -25
  1066. package/dist/esm/components/theme-panel.d.ts.map +0 -1
  1067. package/dist/esm/components/theme-panel.js +0 -2
  1068. package/dist/esm/components/theme-panel.js.map +0 -7
  1069. package/dist/esm/components/toggle-button.d.ts +0 -63
  1070. package/dist/esm/components/toggle-button.d.ts.map +0 -1
  1071. package/dist/esm/components/toggle-button.js +0 -2
  1072. package/dist/esm/components/toggle-button.js.map +0 -7
  1073. package/dist/esm/components/toggle-icon-button.d.ts +0 -109
  1074. package/dist/esm/components/toggle-icon-button.d.ts.map +0 -1
  1075. package/dist/esm/components/toggle-icon-button.js +0 -2
  1076. package/dist/esm/components/toggle-icon-button.js.map +0 -7
  1077. package/schemas/icon-button.json +0 -296
  1078. package/schemas/toggle-button.d.ts +0 -2
  1079. package/schemas/toggle-icon-button.d.ts +0 -2
  1080. package/schemas/toggle-icon-button.json +0 -304
  1081. package/src/components/aspect-ratio.tsx +0 -3
  1082. package/src/components/checkbox-cards.css +0 -124
  1083. package/src/components/checkbox-cards.props.tsx +0 -27
  1084. package/src/components/checkbox-cards.tsx +0 -141
  1085. package/src/components/container.css +0 -43
  1086. package/src/components/container.props.tsx +0 -84
  1087. package/src/components/container.tsx +0 -59
  1088. package/src/components/data-list.css +0 -254
  1089. package/src/components/data-list.props.tsx +0 -57
  1090. package/src/components/data-list.tsx +0 -102
  1091. package/src/components/em.css +0 -16
  1092. package/src/components/em.props.tsx +0 -11
  1093. package/src/components/em.tsx +0 -22
  1094. package/src/components/hover-card.css +0 -39
  1095. package/src/components/hover-card.props.tsx +0 -37
  1096. package/src/components/hover-card.tsx +0 -74
  1097. package/src/components/icon-button.css +0 -9
  1098. package/src/components/icon-button.props.tsx +0 -1
  1099. package/src/components/icon-button.tsx +0 -110
  1100. package/src/components/image.css +0 -221
  1101. package/src/components/image.props.ts +0 -163
  1102. package/src/components/image.tsx +0 -308
  1103. package/src/components/quote.css +0 -16
  1104. package/src/components/quote.props.tsx +0 -11
  1105. package/src/components/quote.tsx +0 -22
  1106. package/src/components/radio-cards.css +0 -110
  1107. package/src/components/radio-cards.props.tsx +0 -27
  1108. package/src/components/radio-cards.tsx +0 -98
  1109. package/src/components/schemas/icon-button.schema.ts +0 -142
  1110. package/src/components/schemas/toggle-icon-button.schema.ts +0 -195
  1111. package/src/components/section.css +0 -25
  1112. package/src/components/section.props.tsx +0 -63
  1113. package/src/components/section.tsx +0 -36
  1114. package/src/components/skeleton.css +0 -55
  1115. package/src/components/skeleton.props.tsx +0 -14
  1116. package/src/components/skeleton.tsx +0 -48
  1117. package/src/components/strong.css +0 -13
  1118. package/src/components/strong.props.tsx +0 -11
  1119. package/src/components/strong.tsx +0 -24
  1120. package/src/components/tab-nav.css +0 -5
  1121. package/src/components/tab-nav.props.tsx +0 -13
  1122. package/src/components/tab-nav.tsx +0 -82
  1123. package/src/components/theme-panel.css +0 -67
  1124. package/src/components/theme-panel.tsx +0 -549
  1125. package/src/components/toggle-button.tsx +0 -117
  1126. package/src/components/toggle-icon-button.tsx +0 -115
  1127. /package/dist/esm/{chunk-STMTXK7U.js.map → chunk-24CVW6P7.js.map} +0 -0
  1128. /package/dist/esm/{chunk-OXYHRNJA.js.map → chunk-4VBH3W2S.js.map} +0 -0
  1129. /package/dist/esm/{chunk-F7HK2QLM.js.map → chunk-4ZAJVYU6.js.map} +0 -0
  1130. /package/dist/esm/{chunk-ABS275QZ.js.map → chunk-72FU5FEC.js.map} +0 -0
  1131. /package/dist/esm/{chunk-MLXHD7YF.js.map → chunk-7FPLWHMT.js.map} +0 -0
  1132. /package/dist/esm/{chunk-YS5BZRRK.js.map → chunk-7OQXCYCW.js.map} +0 -0
  1133. /package/dist/esm/{chunk-N5OSP3PU.js.map → chunk-AYZRLA7F.js.map} +0 -0
  1134. /package/dist/esm/{chunk-6RZVKCNG.js.map → chunk-BHGES72S.js.map} +0 -0
  1135. /package/dist/esm/{chunk-KU3LLWFU.js.map → chunk-CTZ467AB.js.map} +0 -0
  1136. /package/dist/esm/{chunk-Q7S5LQBQ.js.map → chunk-CYO6CRMQ.js.map} +0 -0
  1137. /package/dist/esm/{chunk-F2UUKVBM.js.map → chunk-D3U4MWDZ.js.map} +0 -0
  1138. /package/dist/esm/{chunk-VLLJ7A6P.js.map → chunk-DCNHG6VN.js.map} +0 -0
  1139. /package/dist/esm/{chunk-JDMJC76O.js.map → chunk-EDEYYJ3Q.js.map} +0 -0
  1140. /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-ELAW7ZUG.js.map} +0 -0
  1141. /package/dist/esm/{chunk-HK7RJPQ2.js.map → chunk-EOWG5SIY.js.map} +0 -0
  1142. /package/dist/esm/{chunk-TLZMLJTI.js.map → chunk-FSMUCDLI.js.map} +0 -0
  1143. /package/dist/esm/{chunk-B6RH4CTY.js.map → chunk-G46OLCM2.js.map} +0 -0
  1144. /package/dist/esm/{chunk-5LGWS5QS.js.map → chunk-GOV5I7I2.js.map} +0 -0
  1145. /package/dist/esm/{chunk-JOB6FH3D.js.map → chunk-GWGQ73PU.js.map} +0 -0
  1146. /package/dist/esm/{chunk-VSSJTPBV.js.map → chunk-HELY5CSU.js.map} +0 -0
  1147. /package/dist/esm/{chunk-UFJJTUOU.js.map → chunk-HGG3ULNK.js.map} +0 -0
  1148. /package/dist/esm/{chunk-DMWLY6ZP.js.map → chunk-HZNOHY6O.js.map} +0 -0
  1149. /package/dist/esm/{chunk-PUVZFRTQ.js.map → chunk-IZPDJN6O.js.map} +0 -0
  1150. /package/dist/esm/{chunk-KPACVWV4.js.map → chunk-K4BDLRCC.js.map} +0 -0
  1151. /package/dist/esm/{chunk-XDAQXNBQ.js.map → chunk-K6QKUX3C.js.map} +0 -0
  1152. /package/dist/esm/{chunk-IND2NZIN.js.map → chunk-K6WT5ZEA.js.map} +0 -0
  1153. /package/dist/esm/{chunk-CLEH57SW.js.map → chunk-KIYCILXL.js.map} +0 -0
  1154. /package/dist/esm/{chunk-ZCAI2PRH.js.map → chunk-KRDRQU4G.js.map} +0 -0
  1155. /package/dist/esm/{chunk-T5DSQKKF.js.map → chunk-KRZL245C.js.map} +0 -0
  1156. /package/dist/esm/{chunk-WBGKTN35.js.map → chunk-LNFN35ZE.js.map} +0 -0
  1157. /package/dist/esm/{chunk-JH55M4I2.js.map → chunk-LPVDR7V3.js.map} +0 -0
  1158. /package/dist/esm/{chunk-NTGRWJEG.js.map → chunk-LVCP5WGX.js.map} +0 -0
  1159. /package/dist/esm/{chunk-QEYOXQK5.js.map → chunk-M4M4OZTS.js.map} +0 -0
  1160. /package/dist/esm/{chunk-WSKA5MZZ.js.map → chunk-OA2BZDKL.js.map} +0 -0
  1161. /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
  1162. /package/dist/esm/{chunk-CD324U6G.js.map → chunk-PEP6MQJ2.js.map} +0 -0
  1163. /package/dist/esm/{chunk-E3754NJZ.js.map → chunk-QZ6OCMH4.js.map} +0 -0
  1164. /package/dist/esm/{chunk-54KMG7NX.js.map → chunk-TKSG7KBZ.js.map} +0 -0
  1165. /package/dist/esm/{chunk-WDDO73O5.js.map → chunk-UEHCCJYY.js.map} +0 -0
  1166. /package/dist/esm/{chunk-R372ULQC.js.map → chunk-VJOJGAGA.js.map} +0 -0
  1167. /package/dist/esm/{chunk-YKPMLM7M.js.map → components/chip.js.map} +0 -0
  1168. /package/dist/esm/components/{aspect-ratio.js.map → chip.props.js.map} +0 -0
  1169. /package/dist/esm/components/{badge.js.map → schemas/toggle.schema.js.map} +0 -0
  1170. /package/dist/esm/components/{badge.props.js.map → toggle.js.map} +0 -0
  1171. /package/schemas/{icon-button.d.ts → toggle.d.ts} +0 -0
@@ -1,2 +1,2 @@
1
- import{c as e}from"./chunk-34KVYDF6.js";var s=["1","2","3","4"],r=["raised","solid","soft","outline","surface"],t={size:{type:"enum",className:"rt-r-size",values:s,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:r,default:"raised"},...e};export{t as a};
2
- //# sourceMappingURL=chunk-STMTXK7U.js.map
1
+ import{c as e}from"./chunk-CUNKWFKA.js";var s=["1","2","3","4"],r=["raised","solid","soft","outline","surface"],t={size:{type:"enum",className:"rt-r-size",values:s,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:r,default:"raised"},...e};export{t as a};
2
+ //# sourceMappingURL=chunk-24CVW6P7.js.map
@@ -1,2 +1,2 @@
1
- import{a as U}from"./chunk-OMYAVTX6.js";import{a as K,b as F,c as j,e as E,f as O}from"./chunk-IND2NZIN.js";import{a as H,b as z,c as W}from"./chunk-UFJJTUOU.js";import{d as G}from"./chunk-IX5HIHVI.js";import{a as P}from"./chunk-XXHIMGBY.js";import{b as N}from"./chunk-6RZVKCNG.js";import{b as x}from"./chunk-FWB47YCH.js";import{a as D}from"./chunk-CNMFVJNC.js";import{a as ae}from"./chunk-OS3FCYZY.js";var oe={};ae(oe,{Group:()=>_,GroupContent:()=>re,GroupLabel:()=>ee,Menu:()=>$,MenuButton:()=>J,MenuItem:()=>X,MenuSub:()=>Q,MenuSubContent:()=>Z,MenuSubTrigger:()=>Y,Search:()=>te,Separator:()=>V});import*as e from"react";import d from"classnames";import*as f from"@radix-ui/react-accordion";var V=e.forwardRef(({className:r,...t},n)=>e.createElement(U,{...t,ref:n,className:d("rt-SidebarSeparator",r)}));V.displayName="Sidebar.Separator";var $=e.forwardRef(({className:r,...t},n)=>e.createElement("ul",{...t,ref:n,className:d("rt-SidebarMenu",r)}));$.displayName="Sidebar.Menu";var X=e.forwardRef(({className:r,...t},n)=>e.createElement("li",{...t,ref:n,className:d("rt-SidebarMenuItem",r)}));X.displayName="Sidebar.MenuItem";function ne(r){let t=[],n=[];return e.Children.forEach(r,a=>{if(typeof a=="string"||typeof a=="number")n.push(e.createElement("span",{key:n.length,className:"rt-SidebarMenuLabel"},a));else if(e.isValidElement(a)){let s=a;s.type==="svg"||s.props&&s.props.icon||typeof s.type=="function"&&(s.type.displayName?.includes("Icon")||s.type.name?.includes("Icon"))?t.push(a):n.push(a)}else a&&n.push(a)}),{icons:t,labels:n}}function k(r){if(typeof r=="string"||typeof r=="number")return e.createElement("span",{className:"rt-SidebarMenuLabel"},r);if(Array.isArray(r))return r.map((t,n)=>e.createElement(e.Fragment,{key:n},k(t)));if(e.isValidElement(r)){let t=r,n=t.props&&t.props.className||"";if(typeof t.type=="string"&&n.split(" ").includes("rt-SidebarMenuLabel"))return t;let s=k(t.props?.children);return e.cloneElement(t,{...t.props},s)}return r}var J=e.forwardRef(({asChild:r=!1,isActive:t=!1,shortcut:n,badge:a,className:s,children:l,onKeyDown:m,...M},i)=>{let c=N(),u=c?.size??"2",v=c?.presentation==="thin",w=r?x:"button",I=e.useCallback(o=>{if(o.key==="ArrowDown"||o.key==="ArrowUp"){let b=o.currentTarget.closest(".rt-SidebarContent, .rt-SidebarSearchPopover"),y=b?Array.from(b.querySelectorAll(".rt-SidebarMenuButton")).filter(h=>h.offsetParent!==null):[],p=y.indexOf(o.currentTarget),C=y[p+(o.key==="ArrowDown"?1:-1)];p!==-1&&C&&(o.preventDefault(),C.focus())}m?.(o)},[m]),S=e.useMemo(()=>k(l),[l]),{icons:R,labels:B}=e.useMemo(()=>v?ne(l):{icons:[],labels:[]},[v,l]),L=e.useMemo(()=>{if(!r)return null;try{let o=e.Children.only(S),b=o.props?.children,y=e.createElement(e.Fragment,null,b,a&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof a=="string"?e.createElement(P,{size:u,variant:"soft"},a):e.createElement(P,{size:a.size||u,variant:a.variant||"soft",color:a.color,radius:a.radius},a.content)),n&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(D,{size:u},n)));return e.cloneElement(o,{...o.props},y)}catch{return S}},[r,S,a,n,u]);return e.createElement(w,{...M,ref:i,"aria-current":t?"page":void 0,className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton",s),"data-active":t||void 0,onKeyDown:I},r?L:v&&R.length>0?e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},R),B.map((o,b)=>e.createElement(e.Fragment,{key:b},typeof o=="string"||typeof o=="number"?e.createElement("span",{className:"rt-SidebarMenuLabel"},o):o))):e.createElement(e.Fragment,null,S,a&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof a=="string"?e.createElement(P,{size:u,variant:"soft"},a):e.createElement(P,{size:a.size||u,variant:a.variant||"soft",color:a.color,radius:a.radius},a.content)),n&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(D,{size:u},n))))});J.displayName="Sidebar.MenuButton";var T=e.createContext("accordion"),Q=e.forwardRef(({defaultOpen:r=!1,children:t,...n},a)=>(N()?.presentation==="thin"?"dropdown":"accordion")==="dropdown"?e.createElement("div",{...n,ref:a},e.createElement(K,null,e.createElement(T.Provider,{value:"dropdown"},t))):e.createElement("div",{...n,ref:a},e.createElement(T.Provider,{value:"accordion"},e.createElement(f.Root,{type:"single",collapsible:!0,defaultValue:r?"item":void 0},e.createElement(f.Item,{value:"item"},t)))));Q.displayName="Sidebar.MenuSub";var Y=e.forwardRef(({asChild:r=!1,className:t,children:n,...a},s)=>e.useContext(T)==="dropdown"?e.createElement(F,null,e.createElement("button",{...a,ref:s,type:"button","aria-haspopup":"menu",className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",t)},n)):e.createElement(f.Header,{asChild:!0},e.createElement("div",null,e.createElement(f.Trigger,{...a,ref:s,asChild:r,className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",t)},r?n:e.createElement(e.Fragment,null,n,e.createElement(G,{className:d("rt-BaseMenuSubTriggerIcon","rt-SidebarMenuSubTriggerIcon")}))))));Y.displayName="Sidebar.MenuSubTrigger";var Z=e.forwardRef(({className:r,children:t,...n},a)=>{let s=N();if(e.useContext(T)==="dropdown"){let m=i=>{if(Array.isArray(i))return i.map((c,u)=>e.createElement(e.Fragment,{key:u},m(c)));if(e.isValidElement(i)){if(i.type?.displayName==="Sidebar.MenuButton")return i.props?.children;let u=i.props?.children;if(u!==void 0)return e.cloneElement(i,{...i.props,children:m(u)})}return i},M=e.Children.map(t,(i,c)=>{if(e.isValidElement(i)&&i.type?.displayName==="Sidebar.MenuItem"){let u=i.props?.children,v=m(u);return e.createElement(E,{key:c,asChild:!0},v)}return e.createElement(E,{key:c,asChild:!0},m(i))});return e.createElement(j,{size:s?.size,className:d(r)},e.createElement(O,null,M))}return e.createElement(f.Content,{...n,ref:a,className:d("rt-SidebarMenuSubContent",r)},e.createElement("div",{className:"rt-SidebarMenuSubList"},t))});Z.displayName="Sidebar.MenuSubContent";var _=e.forwardRef(({className:r,...t},n)=>e.createElement("div",{...t,ref:n,className:d("rt-BaseMenuGroup","rt-SidebarGroup",r)}));_.displayName="Sidebar.Group";var ee=e.forwardRef(({asChild:r=!1,className:t,...n},a)=>e.createElement(r?x:"div",{...n,ref:a,className:d("rt-BaseMenuLabel","rt-SidebarGroupLabel",t)}));ee.displayName="Sidebar.GroupLabel";var re=e.forwardRef(({className:r,...t},n)=>e.createElement("div",{...t,ref:n,className:d("rt-SidebarGroupContent",r)}));re.displayName="Sidebar.GroupContent";var A=({className:r})=>e.createElement("svg",{className:r,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("circle",{cx:"11",cy:"11",r:"8"}),e.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),q=({className:r})=>e.createElement("svg",{className:r,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),te=e.forwardRef(({value:r,onValueChange:t,placeholder:n="Search...",children:a,className:s,...l},m)=>{let M=N(),i=M?.presentation==="thin",c=e.useRef(null),u=e.useRef(null),w=`${e.useId()}-results`,I=e.useRef(r);I.current=r;let S=e.useRef(t);S.current=t;let R=n.replace(/\.+$/,""),B=e.useCallback(o=>{o.key==="Escape"&&I.current&&(o.preventDefault(),o.stopPropagation(),S.current(""),c.current?.focus())},[]),L=e.useCallback(o=>{let b=u.current;if(!b)return;let y=b.querySelector('[role="group"]');if(!y)return;let p=Array.from(y.querySelectorAll("a, button"));if(p.length===0)return;let C=document.activeElement,h=C===c.current,g=p.indexOf(C);if(o.key.length===1&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!h&&g!==-1){c.current?.focus();return}switch(o.key){case"ArrowDown":{o.preventDefault(),h||g===-1?p[0]?.focus():g<p.length-1&&p[g+1]?.focus();break}case"ArrowUp":{o.preventDefault(),g<=0?c.current?.focus():p[g-1]?.focus();break}case"Home":{h||(o.preventDefault(),p[0]?.focus());break}case"End":{h||(o.preventDefault(),p[p.length-1]?.focus());break}}},[]);return i?e.createElement("div",{...l,ref:m,className:d("rt-SidebarSearch","rt-SidebarSearch--thin",s)},e.createElement(H,null,e.createElement(z,null,e.createElement("button",{type:"button",className:d("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarSearchTrigger"),"aria-label":R},e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},e.createElement(A,null)),e.createElement("span",{className:"rt-SidebarMenuLabel"},"Search"))),e.createElement(W,{side:"right",align:"start",size:"2",width:"280px","aria-label":R},e.createElement("div",{ref:u,className:"rt-SidebarSearchPopover",role:"search",onKeyDown:L},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(A,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:c,type:"search",className:"rt-SidebarSearchInput",value:r,onChange:o=>t(o.target.value),onKeyDown:B,placeholder:n,"aria-label":R,"aria-controls":a?w:void 0,autoFocus:!0}),r&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{t(""),c.current?.focus()},"aria-label":"Clear search"},e.createElement(q,null))),a&&e.createElement("div",{id:w,role:"group","aria-label":"Search results"},a))))):e.createElement("div",{...l,ref:m,className:d("rt-SidebarSearch","rt-SidebarSearch--expanded","rt-ShellPaneChrome",`rt-r-size-${M?.size??"2"}`,s),role:"search"},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(A,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:c,type:"search",className:"rt-SidebarSearchInput",value:r,onChange:o=>t(o.target.value),onKeyDown:B,placeholder:n,"aria-label":R}),r&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{t(""),c.current?.focus()},"aria-label":"Clear search"},e.createElement(q,null))))});te.displayName="Sidebar.Search";export{V as a,$ as b,X as c,J as d,Q as e,Y as f,Z as g,_ as h,ee as i,re as j,te as k,oe as l};
2
- //# sourceMappingURL=chunk-GTXRD4FZ.js.map
1
+ import{a as U}from"./chunk-36GV4H3C.js";import{a as K,b as F,c as j,e as A,f as O}from"./chunk-K6WT5ZEA.js";import{a as P}from"./chunk-ZCWDURKJ.js";import{a as H,b as z,c as W}from"./chunk-HGG3ULNK.js";import{d as G}from"./chunk-IX5HIHVI.js";import{b as N}from"./chunk-BHGES72S.js";import{b as D}from"./chunk-FWB47YCH.js";import{a as E}from"./chunk-LHYX53XA.js";import{a as ae}from"./chunk-OS3FCYZY.js";var oe={};ae(oe,{Group:()=>_,GroupContent:()=>re,GroupLabel:()=>ee,Menu:()=>$,MenuButton:()=>J,MenuItem:()=>X,MenuSub:()=>Q,MenuSubContent:()=>Z,MenuSubTrigger:()=>Y,Search:()=>te,Separator:()=>V});import*as e from"react";import p from"classnames";import*as f from"@radix-ui/react-accordion";var V=e.forwardRef(({className:r,...t},n)=>e.createElement(U,{...t,ref:n,className:p("rt-SidebarSeparator",r)}));V.displayName="Sidebar.Separator";var $=e.forwardRef(({className:r,...t},n)=>e.createElement("ul",{...t,ref:n,className:p("rt-SidebarMenu",r)}));$.displayName="Sidebar.Menu";var X=e.forwardRef(({className:r,...t},n)=>e.createElement("li",{...t,ref:n,className:p("rt-SidebarMenuItem",r)}));X.displayName="Sidebar.MenuItem";function ne(r){let t=[],n=[];return e.Children.forEach(r,a=>{if(typeof a=="string"||typeof a=="number")n.push(e.createElement("span",{key:n.length,className:"rt-SidebarMenuLabel"},a));else if(e.isValidElement(a)){let s=a;s.type==="svg"||s.props&&s.props.icon||typeof s.type=="function"&&(s.type.displayName?.includes("Icon")||s.type.name?.includes("Icon"))?t.push(a):n.push(a)}else a&&n.push(a)}),{icons:t,labels:n}}function B(r){if(typeof r=="string"||typeof r=="number")return e.createElement("span",{className:"rt-SidebarMenuLabel"},r);if(Array.isArray(r))return r.map((t,n)=>e.createElement(e.Fragment,{key:n},B(t)));if(e.isValidElement(r)){let t=r,n=t.props&&t.props.className||"";if(typeof t.type=="string"&&n.split(" ").includes("rt-SidebarMenuLabel"))return t;let s=B(t.props?.children);return e.cloneElement(t,{...t.props},s)}return r}var J=e.forwardRef(({asChild:r=!1,isActive:t=!1,shortcut:n,badge:a,className:s,children:l,onKeyDown:m,...M},i)=>{let c=N(),u=c?.size??"2",h=c?.presentation==="thin",w=r?D:"button",I=e.useCallback(o=>{if(o.key==="ArrowDown"||o.key==="ArrowUp"){let b=o.currentTarget.closest(".rt-SidebarContent, .rt-SidebarSearchPopover"),y=b?Array.from(b.querySelectorAll(".rt-SidebarMenuButton")).filter(v=>v.offsetParent!==null):[],d=y.indexOf(o.currentTarget),g=y[d+(o.key==="ArrowDown"?1:-1)];d!==-1&&g&&(o.preventDefault(),g.focus())}m?.(o)},[m]),S=e.useMemo(()=>B(l),[l]),{icons:R,labels:T}=e.useMemo(()=>h?ne(l):{icons:[],labels:[]},[h,l]),x=e.useMemo(()=>{if(!r)return null;try{let o=e.Children.only(S),b=o.props?.children,y=e.createElement(e.Fragment,null,b,a&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof a=="string"?e.createElement(P,{size:u,variant:"soft"},a):e.createElement(P,{size:a.size||u,variant:a.variant||"soft",color:a.color,radius:a.radius},a.content)),n&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(E,{size:u},n)));return e.cloneElement(o,{...o.props},y)}catch{return S}},[r,S,a,n,u]);return e.createElement(w,{...M,ref:i,"aria-current":t?"page":void 0,className:p("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton",s),"data-active":t||void 0,onKeyDown:I},r?x:h&&R.length>0?e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},R),T.map((o,b)=>e.createElement(e.Fragment,{key:b},typeof o=="string"||typeof o=="number"?e.createElement("span",{className:"rt-SidebarMenuLabel"},o):o))):e.createElement(e.Fragment,null,S,a&&e.createElement("div",{className:"rt-SidebarMenuBadge"},typeof a=="string"?e.createElement(P,{size:u,variant:"soft"},a):e.createElement(P,{size:a.size||u,variant:a.variant||"soft",color:a.color,radius:a.radius},a.content)),n&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-SidebarMenuShortcut"},e.createElement(E,{size:u},n))))});J.displayName="Sidebar.MenuButton";var L=e.createContext("accordion"),Q=e.forwardRef(({defaultOpen:r=!1,children:t,...n},a)=>(N()?.presentation==="thin"?"dropdown":"accordion")==="dropdown"?e.createElement("div",{...n,ref:a},e.createElement(K,null,e.createElement(L.Provider,{value:"dropdown"},t))):e.createElement("div",{...n,ref:a},e.createElement(L.Provider,{value:"accordion"},e.createElement(f.Root,{type:"single",collapsible:!0,defaultValue:r?"item":void 0},e.createElement(f.Item,{value:"item"},t)))));Q.displayName="Sidebar.MenuSub";var Y=e.forwardRef(({asChild:r=!1,className:t,children:n,...a},s)=>e.useContext(L)==="dropdown"?e.createElement(F,null,e.createElement("button",{...a,ref:s,type:"button","aria-haspopup":"menu",className:p("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",t)},n)):e.createElement(f.Header,{asChild:!0},e.createElement("div",null,e.createElement(f.Trigger,{...a,ref:s,asChild:r,className:p("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarMenuSubTrigger",t)},r?n:e.createElement(e.Fragment,null,n,e.createElement(G,{className:p("rt-BaseMenuSubTriggerIcon","rt-SidebarMenuSubTriggerIcon")}))))));Y.displayName="Sidebar.MenuSubTrigger";var Z=e.forwardRef(({className:r,children:t,...n},a)=>{let s=N();if(e.useContext(L)==="dropdown"){let m=i=>{if(Array.isArray(i))return i.map((c,u)=>e.createElement(e.Fragment,{key:u},m(c)));if(e.isValidElement(i)){if(i.type?.displayName==="Sidebar.MenuButton")return i.props?.children;let u=i.props?.children;if(u!==void 0)return e.cloneElement(i,{...i.props,children:m(u)})}return i},M=e.Children.map(t,(i,c)=>{if(e.isValidElement(i)&&i.type?.displayName==="Sidebar.MenuItem"){let u=i.props?.children,h=m(u);return e.createElement(A,{key:c,asChild:!0},h)}return e.createElement(A,{key:c,asChild:!0},m(i))});return e.createElement(j,{size:s?.size,className:p(r)},e.createElement(O,null,M))}return e.createElement(f.Content,{...n,ref:a,className:p("rt-SidebarMenuSubContent",r)},e.createElement("div",{className:"rt-SidebarMenuSubList"},t))});Z.displayName="Sidebar.MenuSubContent";var _=e.forwardRef(({className:r,...t},n)=>e.createElement("div",{...t,ref:n,className:p("rt-BaseMenuGroup","rt-SidebarGroup",r)}));_.displayName="Sidebar.Group";var ee=e.forwardRef(({asChild:r=!1,className:t,...n},a)=>e.createElement(r?D:"div",{...n,ref:a,className:p("rt-BaseMenuLabel","rt-SidebarGroupLabel",t)}));ee.displayName="Sidebar.GroupLabel";var re=e.forwardRef(({className:r,...t},n)=>e.createElement("div",{...t,ref:n,className:p("rt-SidebarGroupContent",r)}));re.displayName="Sidebar.GroupContent";var k=({className:r})=>e.createElement("svg",{className:r,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("circle",{cx:"11",cy:"11",r:"8"}),e.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),q=({className:r})=>e.createElement("svg",{className:r,width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),te=e.forwardRef(({value:r,onValueChange:t,placeholder:n="Search...",children:a,className:s,...l},m)=>{let M=N(),i=M?.presentation==="thin",c=e.useRef(null),u=e.useRef(null),w=`${e.useId()}-results`,I=e.useRef(r);I.current=r;let S=e.useRef(t);S.current=t;let R=n.replace(/\.+$/,""),T=e.useCallback(o=>{o.key==="Escape"&&I.current&&(o.preventDefault(),o.stopPropagation(),S.current(""),c.current?.focus())},[]),x=e.useCallback(o=>{let b=u.current;if(!b)return;let y=b.querySelector('[role="group"]');if(!y)return;let d=Array.from(y.querySelectorAll("a, button"));if(d.length===0)return;let g=document.activeElement,v=g===c.current,C=d.indexOf(g);if(o.key.length===1&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!v&&C!==-1){c.current?.focus();return}switch(o.key){case"ArrowDown":{o.preventDefault(),v||C===-1?d[0]?.focus():C<d.length-1&&d[C+1]?.focus();break}case"ArrowUp":{o.preventDefault(),C<=0?c.current?.focus():d[C-1]?.focus();break}case"Home":{v||(o.preventDefault(),d[0]?.focus());break}case"End":{v||(o.preventDefault(),d[d.length-1]?.focus());break}}},[]);return i?e.createElement("div",{...l,ref:m,className:p("rt-SidebarSearch","rt-SidebarSearch--thin",s)},e.createElement(H,null,e.createElement(z,null,e.createElement("button",{type:"button",className:p("rt-reset","rt-BaseMenuItem","rt-SidebarMenuButton","rt-SidebarSearchTrigger"),"aria-label":R},e.createElement("span",{className:"rt-SidebarMenuIconWrapper"},e.createElement(k,null)),e.createElement("span",{className:"rt-SidebarMenuLabel"},"Search"))),e.createElement(W,{side:"right",align:"start",size:"2",width:"280px","aria-label":R},e.createElement("div",{ref:u,className:"rt-SidebarSearchPopover",role:"search",onKeyDown:x},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(k,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:c,type:"search",className:"rt-SidebarSearchInput",value:r,onChange:o=>t(o.target.value),onKeyDown:T,placeholder:n,"aria-label":R,"aria-controls":a?w:void 0,autoFocus:!0}),r&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{t(""),c.current?.focus()},"aria-label":"Clear search"},e.createElement(q,null))),a&&e.createElement("div",{id:w,role:"group","aria-label":"Search results"},a))))):e.createElement("div",{...l,ref:m,className:p("rt-SidebarSearch","rt-SidebarSearch--expanded","rt-ShellPaneChrome",`rt-r-size-${M?.size??"2"}`,s),role:"search"},e.createElement("div",{className:"rt-SidebarSearchInputWrapper"},e.createElement(k,{className:"rt-SidebarSearchIcon"}),e.createElement("input",{ref:c,type:"search",className:"rt-SidebarSearchInput",value:r,onChange:o=>t(o.target.value),onKeyDown:T,placeholder:n,"aria-label":R}),r&&e.createElement("button",{type:"button",className:"rt-reset rt-SidebarSearchClear",onClick:()=>{t(""),c.current?.focus()},"aria-label":"Clear search"},e.createElement(q,null))))});te.displayName="Sidebar.Search";export{V as a,$ as b,X as c,J as d,Q as e,Y as f,Z as g,_ as h,ee as i,re as j,te as k,oe as l};
2
+ //# sourceMappingURL=chunk-2KZ44I6T.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/sidebar.tsx"],
4
+ "sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from './slot.js';\nimport * as Accordion from '@radix-ui/react-accordion';\nimport * as DropdownMenu from './dropdown-menu.js';\nimport * as Popover from './popover.js';\n\nimport { Separator } from './separator.js';\nimport { ThickChevronRightIcon } from './icons.js';\nimport { Kbd } from './kbd.js';\nimport { Chip } from './chip.js';\nimport { useSidebarVisual } from './_internal/pane-chrome.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { ChipProps } from './chip.js';\n\n// Chip configuration for the `badge` slot of sidebar menu buttons\ntype BadgeConfig = {\n content: React.ReactNode;\n variant?: ChipProps['variant'];\n size?: ChipProps['size'];\n color?: ChipProps['color'];\n radius?: ChipProps['radius'];\n};\n\n// Sidebar separator\ninterface SidebarSeparatorProps extends ComponentPropsWithout<typeof Separator, RemovedProps> {}\n\nconst SidebarSeparator = React.forwardRef<React.ComponentRef<typeof Separator>, SidebarSeparatorProps>(({ className, ...props }, forwardedRef) => (\n <Separator {...props} ref={forwardedRef} className={classNames('rt-SidebarSeparator', className)} />\n));\nSidebarSeparator.displayName = 'Sidebar.Separator';\n\n// Menu components - styled like dropdown menus, but semantically a navigation list.\n// No menu/menuitem roles: those promise an application menu, which a list of links is not.\ninterface SidebarMenuProps extends React.ComponentPropsWithoutRef<'ul'> {}\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, SidebarMenuProps>(({ className, ...props }, forwardedRef) => (\n <ul {...props} ref={forwardedRef} className={classNames('rt-SidebarMenu', className)} />\n));\nSidebarMenu.displayName = 'Sidebar.Menu';\n\ninterface SidebarMenuItemProps extends React.ComponentPropsWithoutRef<'li'> {}\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, SidebarMenuItemProps>(({ className, ...props }, forwardedRef) => (\n <li {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuItem', className)} />\n));\nSidebarMenuItem.displayName = 'Sidebar.MenuItem';\n\ninterface SidebarMenuButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n isActive?: boolean;\n shortcut?: React.ReactNode;\n badge?: string | BadgeConfig;\n}\n\n// Extracted to module scope to avoid re-creation on every render\nfunction separateIconsAndLabels(node: React.ReactNode): { icons: React.ReactNode[]; labels: React.ReactNode[] } {\n const icons: React.ReactNode[] = [];\n const labels: React.ReactNode[] = [];\n\n React.Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n labels.push(<span key={labels.length} className=\"rt-SidebarMenuLabel\">{child}</span>);\n } else if (React.isValidElement(child)) {\n const el = child as React.ReactElement<any>;\n if (el.type === 'svg' || (el.props && el.props.icon) || (typeof el.type === 'function' && ((el.type as any).displayName?.includes('Icon') || (el.type as any).name?.includes('Icon')))) {\n icons.push(child);\n } else {\n labels.push(child);\n }\n } else if (child) {\n labels.push(child);\n }\n });\n\n return { icons, labels };\n}\n\nfunction wrapTextNodes(node: React.ReactNode): React.ReactNode {\n if (typeof node === 'string' || typeof node === 'number') {\n return <span className=\"rt-SidebarMenuLabel\">{node}</span>;\n }\n if (Array.isArray(node)) {\n return node.map((child, index) => <React.Fragment key={index}>{wrapTextNodes(child)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const el = node as React.ReactElement<any>;\n const className: string = (el.props && (el.props as any).className) || '';\n const isAlreadyLabel = typeof el.type === 'string' && className.split(' ').includes('rt-SidebarMenuLabel');\n if (isAlreadyLabel) return el;\n const newChildren = wrapTextNodes((el.props as any)?.children);\n return React.cloneElement(el, { ...(el.props as any) }, newChildren);\n }\n return node;\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n ({ asChild = false, isActive = false, shortcut, badge, className, children, onKeyDown, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const sidebarSize = visual?.size ?? '2';\n const isThinMode = visual?.presentation === 'thin';\n\n const Comp = asChild ? Slot : 'button';\n\n // Enter and Space are left to the native button or link. Arrow keys move between\n // the visible buttons of the same sidebar, as a convenience on top of Tab.\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n const scope = event.currentTarget.closest('.rt-SidebarContent, .rt-SidebarSearchPopover');\n const buttons = scope\n ? Array.from(scope.querySelectorAll<HTMLElement>('.rt-SidebarMenuButton')).filter((el) => el.offsetParent !== null)\n : [];\n const index = buttons.indexOf(event.currentTarget);\n const next = buttons[index + (event.key === 'ArrowDown' ? 1 : -1)];\n if (index !== -1 && next) {\n event.preventDefault();\n next.focus();\n }\n }\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n // Memoize child processing to avoid re-traversal on every render\n const processedChildren = React.useMemo(() => wrapTextNodes(children), [children]);\n\n // For thin mode, separate icons into a wrapper for targeted background styling\n const { icons, labels } = React.useMemo(\n () => isThinMode ? separateIconsAndLabels(children) : { icons: [] as React.ReactNode[], labels: [] as React.ReactNode[] },\n [isThinMode, children],\n );\n\n // When rendering asChild, Slot expects a single child element. We still want to\n // append optional badge/shortcut inside that element so they render with Link.\n const slottedChildren = React.useMemo(() => {\n if (!asChild) return null;\n try {\n const onlyChild = React.Children.only(processedChildren as React.ReactElement<any>) as React.ReactElement<any>;\n const originalInnerChildren = (onlyChild.props as any)?.children;\n const enhancedInnerChildren = (\n <>\n {originalInnerChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Chip size={sidebarSize} variant=\"soft\">\n {badge}\n </Chip>\n ) : (\n <Chip size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} radius={badge.radius}>\n {badge.content}\n </Chip>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n );\n return React.cloneElement(onlyChild, { ...(onlyChild.props as any) }, enhancedInnerChildren);\n } catch {\n // Fallback: if multiple children were passed incorrectly, just return processedChildren\n return processedChildren as React.ReactNode;\n }\n }, [asChild, processedChildren, badge, shortcut, sidebarSize]);\n\n return (\n <Comp\n {...props}\n ref={forwardedRef}\n aria-current={isActive ? 'page' : undefined}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', className)}\n data-active={isActive || undefined}\n onKeyDown={handleKeyDown}\n >\n {asChild ? (\n slottedChildren\n ) : isThinMode && icons.length > 0 ? (\n <>\n <span className=\"rt-SidebarMenuIconWrapper\">{icons}</span>\n {labels.map((label, index) => (\n <React.Fragment key={index}>\n {typeof label === 'string' || typeof label === 'number' ? (\n <span className=\"rt-SidebarMenuLabel\">{label}</span>\n ) : (\n label\n )}\n </React.Fragment>\n ))}\n </>\n ) : (\n <>\n {processedChildren}\n {badge && (\n <div className=\"rt-SidebarMenuBadge\">\n {typeof badge === 'string' ? (\n <Chip size={sidebarSize} variant=\"soft\">\n {badge}\n </Chip>\n ) : (\n <Chip size={badge.size || sidebarSize} variant={badge.variant || 'soft'} color={badge.color} radius={badge.radius}>\n {badge.content}\n </Chip>\n )}\n </div>\n )}\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-SidebarMenuShortcut\">\n <Kbd size={sidebarSize}>{shortcut}</Kbd>\n </div>\n )}\n </>\n )}\n </Comp>\n );\n },\n);\nSidebarMenuButton.displayName = 'Sidebar.MenuButton';\n\n// Sub-menu components: Accordion in expanded, Dropdown in thin\nconst SidebarSubMenuModeContext = React.createContext<'accordion' | 'dropdown'>('accordion');\ninterface SidebarMenuSubProps extends React.ComponentPropsWithoutRef<'div'> {\n defaultOpen?: boolean;\n}\n\nconst SidebarMenuSub = React.forwardRef<HTMLDivElement, SidebarMenuSubProps>(({ defaultOpen = false, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode: 'accordion' | 'dropdown' = visual?.presentation === 'thin' ? 'dropdown' : 'accordion';\n\n if (mode === 'dropdown') {\n return (\n <div {...props} ref={forwardedRef}>\n <DropdownMenu.Root>\n <SidebarSubMenuModeContext.Provider value=\"dropdown\">{children}</SidebarSubMenuModeContext.Provider>\n </DropdownMenu.Root>\n </div>\n );\n }\n\n return (\n <div {...props} ref={forwardedRef}>\n <SidebarSubMenuModeContext.Provider value=\"accordion\">\n <Accordion.Root type=\"single\" collapsible defaultValue={defaultOpen ? 'item' : undefined}>\n <Accordion.Item value=\"item\">{children}</Accordion.Item>\n </Accordion.Root>\n </SidebarSubMenuModeContext.Provider>\n </div>\n );\n});\nSidebarMenuSub.displayName = 'Sidebar.MenuSub';\n\ninterface SidebarMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof Accordion.Trigger> {\n asChild?: boolean;\n}\n\nconst SidebarMenuSubTrigger = React.forwardRef<React.ElementRef<typeof Accordion.Trigger>, SidebarMenuSubTriggerProps>(\n ({ asChild = false, className, children, ...props }, forwardedRef) => {\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n return (\n <DropdownMenu.Trigger>\n <button\n {...(props as any)}\n ref={forwardedRef as any}\n type=\"button\"\n aria-haspopup=\"menu\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {children}\n </button>\n </DropdownMenu.Trigger>\n );\n }\n\n return (\n <Accordion.Header asChild>\n <div>\n <Accordion.Trigger\n {...props}\n ref={forwardedRef}\n asChild={asChild}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarMenuSubTrigger', className)}\n >\n {asChild ? (\n children\n ) : (\n <>\n {children}\n <ThickChevronRightIcon className={classNames('rt-BaseMenuSubTriggerIcon', 'rt-SidebarMenuSubTriggerIcon')} />\n </>\n )}\n </Accordion.Trigger>\n </div>\n </Accordion.Header>\n );\n },\n);\nSidebarMenuSubTrigger.displayName = 'Sidebar.MenuSubTrigger';\n\ninterface SidebarMenuSubContentProps extends React.ComponentPropsWithoutRef<typeof Accordion.Content> {}\n\nconst SidebarMenuSubContent = React.forwardRef<React.ElementRef<typeof Accordion.Content>, SidebarMenuSubContentProps>(({ className, children, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const mode = React.useContext(SidebarSubMenuModeContext);\n\n if (mode === 'dropdown') {\n const unwrapMenuButton = (node: React.ReactNode): React.ReactNode => {\n if (Array.isArray(node)) {\n return node.map((n, i) => <React.Fragment key={i}>{unwrapMenuButton(n)}</React.Fragment>);\n }\n if (React.isValidElement(node)) {\n const typeDisplay = (node.type as any)?.displayName;\n if (typeDisplay === 'Sidebar.MenuButton') {\n return (node.props as any)?.children;\n }\n const child = (node.props as any)?.children;\n if (child !== undefined) {\n return React.cloneElement(node as any, { ...(node.props as any), children: unwrapMenuButton(child) });\n }\n }\n return node;\n };\n\n const normalized = React.Children.map(children as React.ReactNode, (child, index) => {\n if (React.isValidElement(child) && (child.type as any)?.displayName === 'Sidebar.MenuItem') {\n const itemChildren = (child.props as any)?.children;\n const content = unwrapMenuButton(itemChildren);\n return (\n <DropdownMenu.Item key={index} asChild>\n {content as any}\n </DropdownMenu.Item>\n );\n }\n // Fallback: wrap raw nodes too for consistent menu styling\n return (\n <DropdownMenu.Item key={index} asChild>\n {unwrapMenuButton(child) as any}\n </DropdownMenu.Item>\n );\n });\n\n return (\n <DropdownMenu.Content size={visual?.size} className={classNames(className)}>\n <DropdownMenu.Group>{normalized}</DropdownMenu.Group>\n </DropdownMenu.Content>\n );\n }\n\n return (\n <Accordion.Content {...props} ref={forwardedRef} className={classNames('rt-SidebarMenuSubContent', className)}>\n <div className=\"rt-SidebarMenuSubList\">{children}</div>\n </Accordion.Content>\n );\n});\nSidebarMenuSubContent.displayName = 'Sidebar.MenuSubContent';\n\n// Group components. The label is plain text: no role, so it isn't announced as an empty group.\ninterface SidebarGroupProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, SidebarGroupProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-BaseMenuGroup', 'rt-SidebarGroup', className)} />\n));\nSidebarGroup.displayName = 'Sidebar.Group';\n\ninterface SidebarGroupLabelProps extends React.ComponentPropsWithoutRef<'div'> {\n asChild?: boolean;\n}\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(({ asChild = false, className, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'div';\n\n return <Comp {...props} ref={forwardedRef} className={classNames('rt-BaseMenuLabel', 'rt-SidebarGroupLabel', className)} />;\n});\nSidebarGroupLabel.displayName = 'Sidebar.GroupLabel';\n\ninterface SidebarGroupContentProps extends React.ComponentPropsWithoutRef<'div'> {}\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, SidebarGroupContentProps>(({ className, ...props }, forwardedRef) => (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarGroupContent', className)} />\n));\nSidebarGroupContent.displayName = 'Sidebar.GroupContent';\n\n// Search component: inline input in expanded, popover trigger in thin\ninterface SidebarSearchProps extends React.ComponentPropsWithoutRef<'div'> {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n children?: React.ReactNode;\n}\n\nconst SearchIcon = ({ className }: { className?: string }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst ClearIcon = ({ className }: { className?: string }) => (\n <svg className={className} width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\nconst SidebarSearch = React.forwardRef<HTMLDivElement, SidebarSearchProps>(\n ({ value, onValueChange, placeholder = 'Search...', children, className, ...props }, forwardedRef) => {\n const visual = useSidebarVisual();\n const isThin = visual?.presentation === 'thin';\n const inputRef = React.useRef<HTMLInputElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const searchId = React.useId();\n const resultsId = `${searchId}-results`;\n\n // Stable refs for values used in callbacks \u2014 avoids recreating handlers on every keystroke\n const valueRef = React.useRef(value);\n valueRef.current = value;\n const onValueChangeRef = React.useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n // Derive a clean aria-label from placeholder (strip trailing dots/ellipsis)\n const searchLabel = placeholder.replace(/\\.+$/, '');\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape' && valueRef.current) {\n e.preventDefault();\n e.stopPropagation();\n onValueChangeRef.current('');\n inputRef.current?.focus();\n }\n },\n [],\n );\n\n // Arrow key navigation within the popover (input \u2194 results)\n const handlePopoverKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const container = popoverRef.current;\n if (!container) return;\n\n const resultsGroup = container.querySelector('[role=\"group\"]');\n if (!resultsGroup) return;\n\n const items = Array.from(\n resultsGroup.querySelectorAll<HTMLElement>('a, button'),\n );\n if (items.length === 0) return;\n\n const active = document.activeElement as HTMLElement;\n const isOnInput = active === inputRef.current;\n const currentIndex = items.indexOf(active);\n\n // Typing while a result is focused \u2192 redirect focus to input\n if (\n e.key.length === 1 &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.altKey &&\n !isOnInput &&\n currentIndex !== -1\n ) {\n inputRef.current?.focus();\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (isOnInput || currentIndex === -1) {\n items[0]?.focus();\n } else if (currentIndex < items.length - 1) {\n items[currentIndex + 1]?.focus();\n }\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (currentIndex <= 0) {\n inputRef.current?.focus();\n } else {\n items[currentIndex - 1]?.focus();\n }\n break;\n }\n case 'Home': {\n // Only intercept when focused on a result, not the input (where Home moves cursor)\n if (!isOnInput) {\n e.preventDefault();\n items[0]?.focus();\n }\n break;\n }\n case 'End': {\n if (!isOnInput) {\n e.preventDefault();\n items[items.length - 1]?.focus();\n }\n break;\n }\n }\n },\n [],\n );\n\n if (isThin) {\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--thin', className)}>\n <Popover.Root>\n <Popover.Trigger>\n <button\n type=\"button\"\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-SidebarMenuButton', 'rt-SidebarSearchTrigger')}\n aria-label={searchLabel}\n >\n <span className=\"rt-SidebarMenuIconWrapper\">\n <SearchIcon />\n </span>\n <span className=\"rt-SidebarMenuLabel\">Search</span>\n </button>\n </Popover.Trigger>\n <Popover.Content side=\"right\" align=\"start\" size=\"2\" width=\"280px\" aria-label={searchLabel}>\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- keyDown manages arrow-key navigation between input and results, which is accessibility-enhancing */}\n <div\n ref={popoverRef}\n className=\"rt-SidebarSearchPopover\"\n role=\"search\"\n onKeyDown={handlePopoverKeyDown}\n >\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n aria-controls={children ? resultsId : undefined}\n // eslint-disable-next-line jsx-a11y/no-autofocus -- intentional: popover opens on user action, focusing the input is expected UX\n autoFocus\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n {children && (\n <div id={resultsId} role=\"group\" aria-label=\"Search results\">\n {children}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Root>\n </div>\n );\n }\n\n // Expanded mode: inline input\n return (\n <div {...props} ref={forwardedRef} className={classNames('rt-SidebarSearch', 'rt-SidebarSearch--expanded', 'rt-ShellPaneChrome', `rt-r-size-${visual?.size ?? '2'}`, className)} role=\"search\">\n <div className=\"rt-SidebarSearchInputWrapper\">\n <SearchIcon className=\"rt-SidebarSearchIcon\" />\n <input\n ref={inputRef}\n type=\"search\"\n className=\"rt-SidebarSearchInput\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={searchLabel}\n />\n {value && (\n <button\n type=\"button\"\n className=\"rt-reset rt-SidebarSearchClear\"\n onClick={() => {\n onValueChange('');\n inputRef.current?.focus();\n }}\n aria-label=\"Clear search\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n </div>\n );\n },\n);\nSidebarSearch.displayName = 'Sidebar.Search';\n\n// Export all components following shadcn's pattern\nexport {\n SidebarSeparator as Separator,\n SidebarMenu as Menu,\n SidebarMenuItem as MenuItem,\n SidebarMenuButton as MenuButton,\n SidebarMenuSub as MenuSub,\n SidebarMenuSubTrigger as MenuSubTrigger,\n SidebarMenuSubContent as MenuSubContent,\n SidebarGroup as Group,\n SidebarGroupLabel as GroupLabel,\n SidebarGroupContent as GroupContent,\n SidebarSearch as Search,\n};\n\nexport type { BadgeConfig };\n"],
5
+ "mappings": "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",
6
+ "names": ["sidebar_exports", "__export", "SidebarGroup", "SidebarGroupContent", "SidebarGroupLabel", "SidebarMenu", "SidebarMenuButton", "SidebarMenuItem", "SidebarMenuSub", "SidebarMenuSubContent", "SidebarMenuSubTrigger", "SidebarSearch", "SidebarSeparator", "React", "classNames", "Accordion", "SidebarSeparator", "className", "props", "forwardedRef", "Separator", "classNames", "SidebarMenu", "SidebarMenuItem", "separateIconsAndLabels", "node", "icons", "labels", "child", "el", "wrapTextNodes", "index", "newChildren", "SidebarMenuButton", "asChild", "isActive", "shortcut", "badge", "children", "onKeyDown", "visual", "useSidebarVisual", "sidebarSize", "isThinMode", "Comp", "Slot", "handleKeyDown", "event", "scope", "buttons", "next", "processedChildren", "slottedChildren", "onlyChild", "originalInnerChildren", "enhancedInnerChildren", "Chip", "Kbd", "label", "SidebarSubMenuModeContext", "SidebarMenuSub", "defaultOpen", "DropdownMenuRoot", "SidebarMenuSubTrigger", "DropdownMenuTrigger", "ThickChevronRightIcon", "SidebarMenuSubContent", "unwrapMenuButton", "n", "i", "normalized", "itemChildren", "content", "DropdownMenuItem", "DropdownMenuContent", "DropdownMenuGroup", "SidebarGroup", "SidebarGroupLabel", "SidebarGroupContent", "SearchIcon", "ClearIcon", "SidebarSearch", "value", "onValueChange", "placeholder", "isThin", "inputRef", "popoverRef", "resultsId", "valueRef", "onValueChangeRef", "searchLabel", "e", "handlePopoverKeyDown", "container", "resultsGroup", "items", "active", "isOnInput", "currentIndex", "PopoverRoot", "PopoverTrigger", "PopoverContent"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as o}from"./chunk-7FPLWHMT.js";import{a as e}from"./chunk-ELAW7ZUG.js";import*as r from"react";import f from"classnames";var c=r.forwardRef((p,t)=>{let{className:a,color:s,decorative:m,...n}=e(p,o);return r.createElement("span",{"data-accent-color":s,role:m?void 0:"separator",...n,ref:t,className:f("rt-Separator",a)})});c.displayName="Separator";export{c as a};
2
+ //# sourceMappingURL=chunk-36GV4H3C.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/separator.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { separatorPropDefs } from './separator.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 SeparatorElement = React.ElementRef<'span'>;\ntype SeparatorOwnProps = GetPropDefTypes<typeof separatorPropDefs>;\ninterface SeparatorProps extends ComponentPropsWithout<'span', RemovedProps>, SeparatorOwnProps {}\nconst Separator = React.forwardRef<SeparatorElement, SeparatorProps>((props, forwardedRef) => {\n const { className, color, decorative, ...separatorProps } = extractProps(props, separatorPropDefs);\n return <span data-accent-color={color} role={decorative ? undefined : 'separator'} {...separatorProps} ref={forwardedRef} className={classNames('rt-Separator', className)} />;\n});\nSeparator.displayName = 'Separator';\n\nexport { Separator };\nexport type { SeparatorProps };\n"],
5
+ "mappings": "gFAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aAWvB,IAAMC,EAAkB,aAA6C,CAACC,EAAOC,IAAiB,CAC5F,GAAM,CAAE,UAAAC,EAAW,MAAAC,EAAO,WAAAC,EAAY,GAAGC,CAAe,EAAIC,EAAaN,EAAOO,CAAiB,EACjG,OAAO,gBAAC,QAAK,oBAAmBJ,EAAO,KAAMC,EAAa,OAAY,YAAc,GAAGC,EAAgB,IAAKJ,EAAc,UAAWO,EAAW,eAAgBN,CAAS,EAAG,CAC9K,CAAC,EACDH,EAAU,YAAc",
6
+ "names": ["React", "classNames", "Separator", "props", "forwardedRef", "className", "color", "decorative", "separatorProps", "extractProps", "separatorPropDefs", "classNames"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as g}from"./chunk-GBFGUOFS.js";import{a as l}from"./chunk-IN6ZEGDK.js";import*as e from"react";import d from"classnames";import{Toggle as P}from"radix-ui";var T=e.forwardRef(({pressed:a,onPressedChange:i,defaultPressed:p,children:t,className:u,...s},m)=>{let{"aria-label":n,"aria-labelledby":o}=s,r=e.useRef(null);e.useEffect(()=>{r.current=null},[o]);let c=e.useCallback(()=>n||(o?(r.current===null&&(r.current=document.getElementById(o)?.textContent||"Toggle"),r.current):typeof t=="string"?t:e.isValidElement(t)&&typeof t.props?.children=="string"?t.props.children:"Toggle"),[n,o,t]),{handlePressedChange:f}=g({pressed:a,onPressedChange:i,getAccessibleName:c,componentName:"Toggle"});return e.createElement(P.Root,{pressed:a,onPressedChange:f,defaultPressed:p,asChild:!0},e.createElement(l,{...s,ref:m,className:d("rt-Toggle",u)},t))});T.displayName="Toggle";export{T as a};
2
+ //# sourceMappingURL=chunk-4I4NJNYO.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/toggle.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Toggle as TogglePrimitive } from 'radix-ui';\nimport { Button } from './button.js';\nimport type { ButtonIconOnlyProps, ButtonProps, ButtonRankProps } from './button.js';\nimport { useToggleState } from '../hooks/use-toggle-state.js';\n\ntype ToggleOwnProps = {\n /** Whether the toggle is on. The controlled counterpart of `defaultPressed`. */\n pressed?: boolean;\n /** Fires when the pressed state changes, with the new state. */\n onPressedChange?: (pressed: boolean) => void;\n /** Whether the toggle starts on. The uncontrolled counterpart of `pressed`. */\n defaultPressed?: boolean;\n};\n\n/**\n * Toggle takes every `Button` prop except `as`. Set `iconOnly` for a square toggle holding only\n * an icon; the type then requires `aria-label` or `aria-labelledby`.\n */\ntype ToggleProps = Omit<ButtonProps<'button'>, 'as' | 'variant' | 'emphasis' | 'iconOnly'> &\n ButtonRankProps &\n ButtonIconOnlyProps &\n ToggleOwnProps;\n\ntype ToggleElement = React.ElementRef<typeof Button>;\n\n/**\n * A button that stays pressed: bold in a formatting bar, a filter that is on or off. One\n * control, two states, `aria-pressed` from the primitive. It is a `Button` in every other\n * respect, and wears Button's pressed look while on.\n *\n * Picking one of several is a `SegmentedControl`.\n *\n * @example\n * ```tsx\n * <Toggle defaultPressed={false}>Show hidden</Toggle>\n *\n * <Toggle iconOnly aria-label=\"Bold\" pressed={bold} onPressedChange={setBold}>\n * <BoldIcon />\n * </Toggle>\n * ```\n */\nconst Toggle = React.forwardRef<ToggleElement, ToggleProps>(\n ({ pressed, onPressedChange, defaultPressed, children, className, ...buttonProps }, forwardedRef) => {\n const { 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy } = buttonProps as {\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n };\n\n // The label behind aria-labelledby is read once per id, not on every press.\n const cachedLabelRef = React.useRef<string | null>(null);\n React.useEffect(() => {\n cachedLabelRef.current = null;\n }, [ariaLabelledBy]);\n\n /**\n * The name announced when the pressed state changes: aria-label, then the label\n * aria-labelledby points at, then visible text.\n */\n const getAccessibleName = React.useCallback(() => {\n if (ariaLabel) return ariaLabel;\n if (ariaLabelledBy) {\n if (cachedLabelRef.current === null) {\n cachedLabelRef.current = document.getElementById(ariaLabelledBy)?.textContent || 'Toggle';\n }\n return cachedLabelRef.current;\n }\n if (typeof children === 'string') return children;\n if (React.isValidElement(children) && typeof (children.props as { children?: unknown })?.children === 'string') {\n return (children.props as { children: string }).children;\n }\n return 'Toggle';\n }, [ariaLabel, ariaLabelledBy, children]);\n\n // Shared toggle state hook: accessibility announcements and controlled-state warnings.\n const { handlePressedChange } = useToggleState({\n pressed,\n onPressedChange,\n getAccessibleName,\n componentName: 'Toggle',\n });\n\n return (\n <TogglePrimitive.Root pressed={pressed} onPressedChange={handlePressedChange} defaultPressed={defaultPressed} asChild>\n <Button {...(buttonProps as ButtonProps)} ref={forwardedRef} className={classNames('rt-Toggle', className)}>\n {children}\n </Button>\n </TogglePrimitive.Root>\n );\n },\n);\nToggle.displayName = 'Toggle';\n\nexport { Toggle };\nexport type { ToggleProps };\n"],
5
+ "mappings": "gFAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,UAAUC,MAAuB,WAyC1C,IAAMC,EAAe,aACnB,CAAC,CAAE,QAAAC,EAAS,gBAAAC,EAAiB,eAAAC,EAAgB,SAAAC,EAAU,UAAAC,EAAW,GAAGC,CAAY,EAAGC,IAAiB,CACnG,GAAM,CAAE,aAAcC,EAAW,kBAAmBC,CAAe,EAAIH,EAMjEI,EAAuB,SAAsB,IAAI,EACjD,YAAU,IAAM,CACpBA,EAAe,QAAU,IAC3B,EAAG,CAACD,CAAc,CAAC,EAMnB,IAAME,EAA0B,cAAY,IACtCH,IACAC,GACEC,EAAe,UAAY,OAC7BA,EAAe,QAAU,SAAS,eAAeD,CAAc,GAAG,aAAe,UAE5EC,EAAe,SAEpB,OAAON,GAAa,SAAiBA,EAC/B,iBAAeA,CAAQ,GAAK,OAAQA,EAAS,OAAkC,UAAa,SAC5FA,EAAS,MAA+B,SAE3C,UACN,CAACI,EAAWC,EAAgBL,CAAQ,CAAC,EAGlC,CAAE,oBAAAQ,CAAoB,EAAIC,EAAe,CAC7C,QAAAZ,EACA,gBAAAC,EACA,kBAAAS,EACA,cAAe,QACjB,CAAC,EAED,OACE,gBAACG,EAAgB,KAAhB,CAAqB,QAASb,EAAS,gBAAiBW,EAAqB,eAAgBT,EAAgB,QAAO,IACnH,gBAACY,EAAA,CAAQ,GAAIT,EAA6B,IAAKC,EAAc,UAAWS,EAAW,YAAaX,CAAS,GACtGD,CACH,CACF,CAEJ,CACF,EACAJ,EAAO,YAAc",
6
+ "names": ["React", "classNames", "TogglePrimitive", "Toggle", "pressed", "onPressedChange", "defaultPressed", "children", "className", "buttonProps", "forwardedRef", "ariaLabel", "ariaLabelledBy", "cachedLabelRef", "getAccessibleName", "handlePressedChange", "useToggleState", "TogglePrimitive", "Button", "classNames"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./chunk-SMGDH54W.js";import{a as r}from"./chunk-K53W3ELO.js";import{a as e}from"./chunk-2FPJ6Q2N.js";import{b as s}from"./chunk-FWB47YCH.js";import{a as p}from"./chunk-ELAW7ZUG.js";import*as o from"react";import x from"classnames";var f=o.forwardRef((m,a)=>{let{className:l,asChild:n,as:i="div",...P}=p(m,t,r,e);return o.createElement(n?s:i,{...P,ref:a,className:x("rt-Flex",l)})});f.displayName="Flex";export{f as a};
2
+ //# sourceMappingURL=chunk-4VBH3W2S.js.map
@@ -0,0 +1,2 @@
1
+ import{b as e}from"./chunk-WWF3IU3P.js";import{a as p}from"./chunk-WYADYDPN.js";import{a as s}from"./chunk-ZE2KAVXW.js";import{a as t}from"./chunk-2WSD2H23.js";import{a as o}from"./chunk-NZJGC6ZW.js";import{c as r}from"./chunk-CUNKWFKA.js";var f=["1","2","3","4","5","6","7","8","9"],n={...o,size:{type:"enum",className:"rt-r-size",values:f,responsive:!0},...t,...r,...e,...s,...p};export{n as a};
2
+ //# sourceMappingURL=chunk-4ZAJVYU6.js.map
@@ -1,2 +1,2 @@
1
- import{a as at}from"./chunk-74SNS4VY.js";import{a as Be}from"./chunk-HJZNHNLX.js";import{g as et,j as tt}from"./chunk-IX5HIHVI.js";import{a as we}from"./chunk-HJ6ACBXW.js";import{a as Ze}from"./chunk-42LDZ7L5.js";import{a as ze}from"./chunk-NETIWKIR.js";import{a as Fe}from"./chunk-OXYHRNJA.js";import{a as De}from"./chunk-AGAQC4HH.js";import{b as U}from"./chunk-FWB47YCH.js";import{d as Qe}from"./chunk-3YLYGKFB.js";import{a as Ot}from"./chunk-OS3FCYZY.js";var Vt={};Ot(Vt,{AttachTrigger:()=>bt,Attachment:()=>$e,AttachmentsRow:()=>mt,InlineEnd:()=>ut,InlineStart:()=>dt,Item:()=>ft,Root:()=>it,Row:()=>Rt,RowEnd:()=>gt,RowStart:()=>Ct,Send:()=>vt,Textarea:()=>lt});import*as e from"react";import E from"classnames";import{useComposedRefs as ot}from"radix-ui/internal";import{useDropzone as Ht}from"react-dropzone";var je=typeof window<"u"?e.useLayoutEffect:e.useEffect;function nt(t,o){let{placeholder:a}=t;if(!a){o();return}t.placeholder="";try{o()}finally{t.placeholder=a}}var It={values:["1","2","3"]},st=e.createContext(null),We=e.createContext(""),I=()=>{let t=e.useContext(st);if(!t)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return t},me=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(o=>o.trim()).filter(Boolean):[],Ft=(t,o)=>{if(o.length===0)return!0;let a=t.type.toLowerCase(),c=t.name.toLowerCase();for(let i of o){let l=i.toLowerCase();if(l.includes("/")){let[d,u]=l.split("/"),[h,f]=a.split("/");if(d==="*"||d===h&&(u==="*"||u===f))return!0}else if(l.startsWith(".")&&c.endsWith(l))return!0}return!1},zt=/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i,ct=(t,o)=>(o||"").toLowerCase().startsWith("image/")||zt.test(t),Ve=t=>t.trim().length>0,rt=(t,o)=>`${t} ${o}${t===1?"":"s"}`,Dt=0,Bt=()=>`chatbar-attachment-${Date.now()}-${++Dt}`,it=e.forwardRef((t,o)=>{let{className:a,style:c,children:i,value:l,defaultValue:d="",onValueChange:u,open:h,defaultOpen:f=!1,onOpenChange:g,expandOn:v="both",minLines:C=3,maxLines:w=6,sendMode:F="whenDirty",disabled:b,readOnly:S,onSubmit:D,size:M,variant:z,color:O,radius:H,width:Q,maxWidth:R,attachments:G,defaultAttachments:B,onAttachmentsChange:se,accept:P,multiple:L=!0,maxAttachments:Z,maxFileSize:_,paste:j=!0,pasteAccept:q,clearOnSubmit:V=!0,onAttachmentReject:k,dropzone:N=!0,apiRef:Se,onBlurCapture:pe,notices:he,context:fe,...Ee}=t,W=Qe(M,It),be=l!=null,[r,y]=e.useState(d),A=be?l:r,ee=h!=null,[X,te]=e.useState(f),ce=ee?h:X,Y="attachments"in t,[ie,Re]=e.useState(()=>B??[]),le=e.useMemo(()=>Y?G??[]:ie,[Y,G,ie]),[Ke,yt]=e.useState({text:"",id:0}),de=e.useCallback(n=>yt(s=>({text:n,id:s.id+1})),[]),Ue=e.useRef(null),xt=ot(o,Ue),Te=e.useRef(null),Le=e.useRef(null),ue=e.useRef(!1),Ce=e.useRef(!1),ge=e.useRef(void 0),ke=e.useRef(null),Ge=me(P).join(","),Ne=me(q).join(","),Me=e.useMemo(()=>me(Ge),[Ge]),Pt=e.useMemo(()=>Ne?me(Ne):Me,[Ne,Me]),_e={value:A,attachments:le,accepts:Me,pasteAccepts:Pt,multiple:L,maxAttachments:Z,maxFileSize:_,disabled:b,readOnly:S,expandOn:v,isValueControlled:be,isOpenControlled:ee,isAttachmentsControlled:Y,onValueChange:u,onOpenChange:g,onAttachmentsChange:se,onAttachmentReject:k,onSubmit:D},x=e.useRef(_e);x.current=_e;let Oe=e.useRef(null),$=e.useCallback(()=>Oe.current??x.current.attachments,[]),ae=e.useCallback(n=>{x.current.isOpenControlled||te(n),x.current.onOpenChange?.(n)},[]),ve=e.useCallback(n=>{x.current.isValueControlled||y(n),x.current.onValueChange?.(n)},[]),ne=e.useCallback(n=>{Oe.current=n,queueMicrotask(()=>{Oe.current=null}),x.current.isAttachmentsControlled||Re(n),x.current.onAttachmentsChange?.(n)},[]),ye=e.useRef(new Set),re=e.useCallback((n,s,m=x.current.multiple)=>{let p=x.current;if(p.disabled||p.readOnly||n.length===0)return 0;let K=$(),J=[],oe=[],Nt=typeof p.maxAttachments=="number"?Math.max(p.maxAttachments-K.length,0):1/0,Mt=m?1/0:1;for(let T of n){if(J.length>=Nt||J.length>=Mt){oe.push({file:T,reason:"count"});continue}if(typeof p.maxFileSize=="number"&&T.size>p.maxFileSize){oe.push({file:T,reason:"size"});continue}if(!Ft(T,s)){oe.push({file:T,reason:"type"});continue}let Ie=ct(T.name,T.type)?URL.createObjectURL(T):void 0;Ie&&ye.current.add(Ie),J.push({id:Bt(),name:T.name,size:T.size,type:T.type,file:T,url:Ie,status:"idle"})}let Ae=[];return J.length>0&&(ne(K.concat(J)),p.expandOn!=="none"&&ae(!0),Ae.push(`${rt(J.length,"file")} attached.`)),oe.length>0&&(p.onAttachmentReject?.(oe),Ae.push(`${rt(oe.length,"file")} could not be attached.`)),Ae.length>0&&de(Ae.join(" ")),J.length},[$,ne,ae,de]),xe=e.useCallback(n=>re(n,x.current.accepts),[re]),qe=e.useCallback(n=>re(n,x.current.pasteAccepts),[re]),Xe=e.useCallback(n=>{let s=$(),m=s.find(p=>p.id===n);m&&(ne(s.filter(p=>p.id!==n)),de(`Removed ${m.name}.`))},[$,ne,de]),Ye=e.useCallback(n=>{let s=x.current;if(s.disabled||s.readOnly)return!1;let m=$();if(!Ve(s.value)&&m.length===0)return!1;let p={value:s.value,attachments:m};if(n&&s.onSubmit)for(let K of m)K.url&&ye.current.delete(K.url);return s.onSubmit?.(p),n&&(ve(""),ne([])),!0},[$,ve,ne]);e.useEffect(()=>{let n=ye.current;if(n.size===0)return;let s=new Set(le.map(m=>m.url));for(let m of Array.from(n))s.has(m)||(URL.revokeObjectURL(m),n.delete(m))},[le]),e.useEffect(()=>{let n=ye.current;return()=>{if(!x.current.isAttachmentsControlled){for(let s of Array.from(n))URL.revokeObjectURL(s);n.clear()}}},[]);let Pe=e.useCallback(n=>{let s=x.current,m=Le.current;if(clearTimeout(ge.current),Ce.current=!1,!m||s.disabled||s.readOnly)return;let p=n?.accept!=null?me(n.accept):s.accepts,K=n?.multiple??s.multiple;ke.current={patterns:p,multiple:K},m.accept=p.join(","),m.multiple=K,ue.current=!0,m.click(),setTimeout(()=>{document.hasFocus()&&(ue.current=!1)},1e3)},[]),Je=e.useCallback(()=>{Ce.current=!0,clearTimeout(ge.current),ge.current=setTimeout(()=>{Ce.current=!1},800)},[]);e.useEffect(()=>()=>clearTimeout(ge.current),[]),e.useEffect(()=>{let n=Le.current,s=()=>{ue.current=!1};return window.addEventListener("focus",s),n?.addEventListener("cancel",s),()=>{window.removeEventListener("focus",s),n?.removeEventListener("cancel",s)}},[]);let At=e.useCallback(n=>{let s=n.currentTarget,m=Array.from(s.files??[]),p=ke.current;re(m,p?.patterns??x.current.accepts,p?.multiple),ue.current=!1,ke.current=null,s.value=""},[re]),wt=e.useCallback(n=>{pe?.(n);let s=x.current,m=Ue.current;if(!m||s.expandOn==="none")return;let p=n.relatedTarget;p&&m.contains(p)||ue.current||Ce.current||!Ve(s.value)&&$().length===0&&ae(!1)},[pe,ae,$]),St=e.useCallback(n=>{xe(n)},[xe]),{getRootProps:Et,isDragActive:Tt}=Ht({onDrop:St,onDragEnter:()=>de(""),noClick:!0,noKeyboard:!0,noPaste:!0,disabled:!N||b||S}),He=N&&Tt;e.useImperativeHandle(Se,()=>({focusTextarea:()=>Te.current?.focus({preventScroll:!0}),openFilePicker:()=>Pe()}),[Pe]);let Lt=e.useCallback(n=>{if(b||n.pointerType==="mouse"&&n.button!==0)return;let s=n.target;s instanceof Element&&s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')||(n.preventDefault(),Te.current?.focus({preventScroll:!0}))},[b]),kt=e.useMemo(()=>({open:ce,setOpen:ae,setValue:ve,size:W,expandOn:v,minLines:C,maxLines:w,sendMode:F,disabled:b,readOnly:S,paste:j,clearOnSubmit:V,multiple:L,textareaRef:Te,attachments:le,removeAttachment:Xe,submit:Ye,appendFiles:xe,appendFilesFromPaste:qe,openFilePicker:Pe,beginFilePickerPress:Je}),[ce,ae,ve,W,v,C,w,F,b,S,j,V,L,le,Xe,Ye,xe,qe,Pe,Je]);return e.createElement(st.Provider,{value:kt},e.createElement(We.Provider,{value:A},e.createElement(e.Fragment,null,e.createElement("div",{...Ee,ref:xt,className:E("rt-ChatbarRoot",`rt-r-size-${W}`,a),style:{position:"relative",width:Q,maxWidth:R,...c},"data-state":ce?"open":"closed","data-disabled":b?"":void 0,"data-readonly":S?"":void 0,"data-drop-active":He?"":void 0,"data-accent-color":O,"data-radius":H,onBlurCapture:wt},e.createElement("input",{ref:Le,type:"file",tabIndex:-1,"aria-hidden":!0,style:{display:"none"},onChange:At}),he?e.createElement("div",{className:"rt-ChatbarNotices"},e.createElement(at.Provider,{value:W},he)):null,e.createElement("div",{...N?Et():{},style:{width:"100%",flex:"1 1 auto",minHeight:0},onPointerDown:Lt},e.createElement("div",{className:E("rt-ChatbarBox",`rt-variant-${z??"raised"}`),style:{position:"relative"},"data-accent-color":O,"data-radius":H},e.createElement("div",{className:"rt-ChatbarGrid"},i),He&&e.createElement("div",{className:"rt-ChatbarDropOverlay","aria-hidden":!0},e.createElement("div",{className:"rt-ChatbarDropContent"},e.createElement(we,{emphasis:"medium",size:W,weight:"medium"},"Drop files here to attach"))))),fe?e.createElement(we,{as:"div",size:W==="3"?"2":"1",emphasis:"medium",className:"rt-ChatbarContext"},fe):null,e.createElement(De,{role:"status","aria-live":"polite"},He?"Drop files here to attach.":e.createElement("span",{key:Ke.id},Ke.text))))))});it.displayName="Chatbar.Root";var lt=e.forwardRef((t,o)=>{let{className:a,style:c,asChild:i,onFocus:l,onChange:d,onPaste:u,onKeyDown:h,onCompositionStart:f,onCompositionEnd:g,submitOnEnter:v=!1,...C}=t,w=I(),F=e.useContext(We),{open:b,minLines:S,maxLines:D,expandOn:M,disabled:z,readOnly:O,setOpen:H,setValue:Q,textareaRef:R,paste:G,appendFilesFromPaste:B,size:se,submit:P,clearOnSubmit:L}=w,Z=ot(o,R),_=e.useRef(0),j=e.useRef(0),q=e.useRef(!1),V=e.useRef({open:b,minLines:S,maxLines:D});je(()=>{V.current={open:b,minLines:S,maxLines:D}},[b,S,D]);let k=e.useCallback(()=>{let r=R.current;if(!r)return;let y=window.getComputedStyle(r);_.current=parseFloat(y.lineHeight)||20,j.current=(parseFloat(y.paddingTop)||0)+(parseFloat(y.paddingBottom)||0)},[R]),N=e.useCallback((r,y)=>{let{minLines:A,maxLines:ee}=V.current,X=_.current,te=j.current,ce=Math.ceil((y?A:1)*X)+te,Y=Math.ceil((y?ee:1)*X)+te,ie=Math.max(r.scrollHeight,ce);r.style.height=`${Math.min(ie,Y)}px`;let Re=ie>Y;r.style.overflowY=Re?"auto":"hidden",r.style.maxHeight=Re?`${Y}px`:"none"},[]);je(()=>{k()},[k,se]),je(()=>{let r=R.current;r&&(_.current===0&&k(),nt(r,()=>{r.style.height="auto";let y=b;if(!b&&(M==="overflow"||M==="both")){let A=Math.ceil(_.current)+j.current;r.scrollHeight>A+1&&(y=!0,H(!0))}N(r,y)}))},[F,b,M,S,D,se,H,R,k,N]),e.useEffect(()=>{let r=R.current;if(!r||typeof ResizeObserver>"u")return;let y=-1,A=new ResizeObserver(ee=>{let X=ee[0]?.contentRect.width??0;if(X===y)return;let te=y===-1;y=X,!te&&(k(),nt(r,()=>{r.style.height="auto",N(r,V.current.open)}))});return A.observe(r),()=>A.disconnect()},[R,k,N]),e.useEffect(()=>{},[]);let Se=e.useCallback(r=>{l?.(r),!(z||O)&&(M==="focus"||M==="both")&&!b&&H(!0)},[z,O,M,b,H,l]),pe=e.useCallback(r=>{Q(r.currentTarget.value),d?.(r)},[Q,d]),he=e.useCallback(r=>{if(u?.(r),r.defaultPrevented||!G||z||O)return;let y=Array.from(r.clipboardData?.items??[]).filter(A=>A.kind==="file").map(A=>A.getAsFile()).filter(A=>!!A);y.length!==0&&B(y)>0&&r.preventDefault()},[G,z,O,u,B]),fe=e.useCallback(r=>{q.current=!0,f?.(r)},[f]),Ee=e.useCallback(r=>{q.current=!1,g?.(r)},[g]),W=e.useCallback(r=>{h?.(r),!(r.defaultPrevented||!v)&&(r.key!=="Enter"||r.shiftKey||r.altKey||r.ctrlKey||r.metaKey||q.current||r.nativeEvent.isComposing||r.nativeEvent.keyCode===229||(r.preventDefault(),P(L)))},[v,h,P,L]),be=i?U:"textarea";return e.createElement("div",{className:E("rt-ChatbarField","rt-ChatbarTextarea",a)},e.createElement(be,{...C,ref:Z,className:"rt-ChatbarInput",value:F,onChange:pe,onFocus:Se,onPaste:he,onKeyDown:W,onCompositionStart:fe,onCompositionEnd:Ee,disabled:z,readOnly:O,rows:b?S:1,spellCheck:C.spellCheck??!0,autoCorrect:C.autoCorrect??"on",style:c}))});lt.displayName="Chatbar.Textarea";var dt=e.forwardRef((t,o)=>{let{children:a,asChild:c,className:i,...l}=t;return I().open?null:e.createElement(c?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineStart",i)},a)});dt.displayName="Chatbar.InlineStart";var ut=e.forwardRef((t,o)=>{let{children:a,asChild:c,className:i,...l}=t;return I().open?null:e.createElement(c?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineEnd",i)},a)});ut.displayName="Chatbar.InlineEnd";var mt=e.forwardRef((t,o)=>{let{asChild:a,forceMount:c,renderAttachment:i,className:l,children:d,...u}=t,h=I(),f=e.Children.toArray(d).length>0;return h.attachments.length===0&&!f&&!c?null:e.createElement("div",null,e.createElement(a?U:"div",{...u,ref:o,className:E("rt-ChatbarAttachmentsRow",l),role:"list","aria-label":u["aria-label"]??"Attachments"},e.createElement(Ze,{className:"rt-ChatbarScrollArea",scrollbars:"horizontal"},e.createElement(Fe,{align:"center",gap:"3",minWidth:"fit-content"},h.attachments.map(v=>e.createElement($e,{key:v.id,attachment:v,asChild:!!i},i?.(v))),d))))});mt.displayName="Chatbar.AttachmentsRow";function pt(t,o){let a=t.closest('[role="listitem"]'),c=a?.parentElement?Array.from(a.parentElement.children):[],i=a?c.indexOf(a):-1,d=(c[i+1]??c[i-1])?.querySelector(".rt-ChatbarItemRemove");d?d.focus():o.current?.focus({preventScroll:!0})}var ht=({lead:t,leadKind:o,label:a,detail:c,removeLabel:i,onRemove:l})=>{let d=I();return e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-ChatbarItemLead","data-kind":o,"aria-hidden":!0},t),e.createElement(we,{className:"rt-ChatbarItemLabel",size:d.size,truncate:!0},a,c?e.createElement(De,null,", ",c):null),l&&e.createElement(Be,{className:"rt-ChatbarItemRemove","aria-label":i,size:"1",variant:"ghost",color:"gray",onClick:l},e.createElement(et,null)))},jt={uploading:"uploading",error:"failed to upload"},$e=e.forwardRef((t,o)=>{let{attachment:a,asChild:c,className:i,children:l,...d}=t,u=I(),h=c?U:"div",f=!!a.url&&ct(a.name,a.type),g=`${Math.ceil(a.size/1024)} KB`,v=a.status?jt[a.status]:void 0,C=u.disabled||u.readOnly,w=b=>{pt(b.currentTarget,u.textareaRef),u.removeAttachment(a.id)},F=a.status==="uploading"?e.createElement(ze,null):f?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:a.url,alt:""}):e.createElement(tt,null);return e.createElement(h,{...d,ref:o,className:E(l?"rt-ChatbarAttachment":"rt-ChatbarAttachment rt-ChatbarItem",i),role:"listitem","data-kind":f?"image":"file","data-status":a.status,title:a.name},l??e.createElement(ht,{lead:F,leadKind:f&&a.status!=="uploading"?"image":"icon",label:a.name,detail:v?`${g}, ${v}`:g,removeLabel:`Remove ${a.name}`,onRemove:C?void 0:w}))});$e.displayName="Chatbar.Attachment";var ft=e.forwardRef((t,o)=>{let{children:a,icon:c,image:i,color:l,onRemove:d,removeLabel:u,className:h,...f}=t,g=I(),v=g.disabled||g.readOnly,C=d?w=>{pt(w.currentTarget,g.textareaRef),d()}:void 0;return e.createElement("div",{...f,ref:o,className:E("rt-ChatbarItem",h),role:"listitem","data-accent-color":i?void 0:l??"gray",title:a},e.createElement(ht,{lead:i?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:i,alt:""}):c,leadKind:i?"image":"icon",label:a,removeLabel:u??`Remove ${a}`,onRemove:v?void 0:C}))});ft.displayName="Chatbar.Item";var bt=e.forwardRef((t,o)=>{let{asChild:a,accept:c,multiple:i,disabled:l,onPointerDown:d,onClick:u,...h}=t,f=I(),g=l||f.disabled||f.readOnly;return e.createElement(a?U:"button",{...h,ref:o,className:E("rt-ChatbarAttachTrigger",h.className),type:h.type??"button","aria-label":h["aria-label"]??"Add attachments",disabled:g,onPointerDown:C=>{d?.(C),!g&&!C.defaultPrevented&&f.beginFilePickerPress()},onClick:C=>{u?.(C),!(g||C.defaultPrevented)&&f.openFilePicker({accept:c,multiple:i})}})});bt.displayName="Chatbar.AttachTrigger";var Rt=e.forwardRef((t,o)=>{let{asChild:a,children:c,className:i,...l}=t;return I().open?e.createElement("div",null,e.createElement(a?U:"div",{...l,ref:o,className:E("rt-ChatbarRow",i)},e.createElement(Fe,{align:"center",justify:"between",width:"100%"},c))):null});Rt.displayName="Chatbar.Row";var Ct=e.forwardRef((t,o)=>{let{className:a,...c}=t;return e.createElement("div",{...c,ref:o,className:E("rt-ChatbarRowStart",a)})});Ct.displayName="Chatbar.RowStart";var gt=e.forwardRef((t,o)=>{let{className:a,...c}=t;return e.createElement("div",{...c,ref:o,className:E("rt-ChatbarRowEnd",a)})});gt.displayName="Chatbar.RowEnd";var vt=e.forwardRef((t,o)=>{let{asChild:a,clearOnSend:c,disabled:i,children:l,style:d,className:u,size:h,variant:f,emphasis:g,tabIndex:v,onClick:C,status:w="ready",onStop:F,onRetry:b,stopLabel:S="Stop",retryLabel:D="Retry",stopIcon:M,retryIcon:z,"aria-label":O,"aria-labelledby":H,...Q}=t,R=I(),G=e.useContext(We),B=Ve(G)||R.attachments.length>0,P=B?"send":w==="submitted"||w==="streaming"?"stop":w==="error"?"retry":"send";if(R.sendMode==="never"&&P==="send")return null;let L=P!=="send"||R.sendMode==="always"||B,Z=P==="send"?i||R.disabled||R.readOnly||!B:i||R.disabled,j=P==="stop"?{"aria-label":S}:P==="retry"?{"aria-label":D}:H?{"aria-labelledby":H}:{"aria-label":O??"Send"},q=k=>{if(C?.(k),k.defaultPrevented||Z)return;if(P==="stop"){F?.();return}if(P==="retry"){b?.();return}let N=c??R.clearOnSubmit;R.submit(N)&&N&&R.textareaRef.current?.focus({preventScroll:!0})},V=P==="stop"?M??(w==="submitted"?e.createElement(ze,null):e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},e.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"2"}))):P==="retry"?z??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),e.createElement("path",{d:"M3 3v5h5"})):l??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"}));return e.createElement(Be,{...Q,ref:o,size:h??R.size,...g?{emphasis:g}:{variant:f??(R.open||P!=="send"?"solid":"ghost")},disabled:Z,className:E("rt-ChatbarSend",u),style:{opacity:L?1:0,pointerEvents:L?void 0:"none",...d},"aria-hidden":L?void 0:!0,tabIndex:L?v:-1,asChild:a,onClick:q,"data-status":w,"data-mode":P,...j},V)});vt.displayName="Chatbar.Send";export{it as a,lt as b,dt as c,ut as d,mt as e,$e as f,ft as g,bt as h,Rt as i,Ct as j,gt as k,vt as l,Vt as m};
2
- //# sourceMappingURL=chunk-QETAAJJV.js.map
1
+ import{a as at}from"./chunk-DSV3XBHM.js";import{g as et,j as tt}from"./chunk-IX5HIHVI.js";import{a as Be}from"./chunk-IN6ZEGDK.js";import{a as we}from"./chunk-P3WB3K2M.js";import{a as Ze}from"./chunk-7XWAXYZD.js";import{a as ze}from"./chunk-MC3GY6ET.js";import{a as Ie}from"./chunk-4VBH3W2S.js";import{a as De}from"./chunk-AGAQC4HH.js";import{b as U}from"./chunk-FWB47YCH.js";import{d as Qe}from"./chunk-3YLYGKFB.js";import{a as Ot}from"./chunk-OS3FCYZY.js";var Vt={};Ot(Vt,{AttachTrigger:()=>bt,Attachment:()=>$e,AttachmentsRow:()=>mt,InlineEnd:()=>ut,InlineStart:()=>dt,Item:()=>ft,Root:()=>it,Row:()=>Rt,RowEnd:()=>gt,RowStart:()=>Ct,Send:()=>vt,Textarea:()=>lt});import*as e from"react";import E from"classnames";import{useComposedRefs as ot}from"radix-ui/internal";import{useDropzone as Ht}from"react-dropzone";var je=typeof window<"u"?e.useLayoutEffect:e.useEffect;function nt(t,o){let{placeholder:a}=t;if(!a){o();return}t.placeholder="";try{o()}finally{t.placeholder=a}}var Ft={values:["1","2","3"]},st=e.createContext(null),We=e.createContext(""),F=()=>{let t=e.useContext(st);if(!t)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return t},me=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(o=>o.trim()).filter(Boolean):[],It=(t,o)=>{if(o.length===0)return!0;let a=t.type.toLowerCase(),c=t.name.toLowerCase();for(let i of o){let l=i.toLowerCase();if(l.includes("/")){let[d,u]=l.split("/"),[h,f]=a.split("/");if(d==="*"||d===h&&(u==="*"||u===f))return!0}else if(l.startsWith(".")&&c.endsWith(l))return!0}return!1},zt=/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i,ct=(t,o)=>(o||"").toLowerCase().startsWith("image/")||zt.test(t),Ve=t=>t.trim().length>0,rt=(t,o)=>`${t} ${o}${t===1?"":"s"}`,Dt=0,Bt=()=>`chatbar-attachment-${Date.now()}-${++Dt}`,it=e.forwardRef((t,o)=>{let{className:a,style:c,children:i,value:l,defaultValue:d="",onValueChange:u,open:h,defaultOpen:f=!1,onOpenChange:g,expandOn:v="both",minLines:C=3,maxLines:w=6,sendMode:I="whenDirty",disabled:b,readOnly:S,onSubmit:D,size:M,variant:z,color:O,radius:H,width:Q,maxWidth:R,attachments:G,defaultAttachments:B,onAttachmentsChange:se,accept:P,multiple:L=!0,maxAttachments:Z,maxFileSize:_,paste:j=!0,pasteAccept:q,clearOnSubmit:V=!0,onAttachmentReject:k,dropzone:N=!0,apiRef:Se,onBlurCapture:pe,notices:he,context:fe,...Ee}=t,W=Qe(M,Ft),be=l!=null,[r,y]=e.useState(d),A=be?l:r,ee=h!=null,[X,te]=e.useState(f),ce=ee?h:X,Y="attachments"in t,[ie,Re]=e.useState(()=>B??[]),le=e.useMemo(()=>Y?G??[]:ie,[Y,G,ie]),[Ke,yt]=e.useState({text:"",id:0}),de=e.useCallback(n=>yt(s=>({text:n,id:s.id+1})),[]),Ue=e.useRef(null),xt=ot(o,Ue),Te=e.useRef(null),Le=e.useRef(null),ue=e.useRef(!1),Ce=e.useRef(!1),ge=e.useRef(void 0),ke=e.useRef(null),Ge=me(P).join(","),Ne=me(q).join(","),Me=e.useMemo(()=>me(Ge),[Ge]),Pt=e.useMemo(()=>Ne?me(Ne):Me,[Ne,Me]),_e={value:A,attachments:le,accepts:Me,pasteAccepts:Pt,multiple:L,maxAttachments:Z,maxFileSize:_,disabled:b,readOnly:S,expandOn:v,isValueControlled:be,isOpenControlled:ee,isAttachmentsControlled:Y,onValueChange:u,onOpenChange:g,onAttachmentsChange:se,onAttachmentReject:k,onSubmit:D},x=e.useRef(_e);x.current=_e;let Oe=e.useRef(null),$=e.useCallback(()=>Oe.current??x.current.attachments,[]),ae=e.useCallback(n=>{x.current.isOpenControlled||te(n),x.current.onOpenChange?.(n)},[]),ve=e.useCallback(n=>{x.current.isValueControlled||y(n),x.current.onValueChange?.(n)},[]),ne=e.useCallback(n=>{Oe.current=n,queueMicrotask(()=>{Oe.current=null}),x.current.isAttachmentsControlled||Re(n),x.current.onAttachmentsChange?.(n)},[]),ye=e.useRef(new Set),re=e.useCallback((n,s,m=x.current.multiple)=>{let p=x.current;if(p.disabled||p.readOnly||n.length===0)return 0;let K=$(),J=[],oe=[],Nt=typeof p.maxAttachments=="number"?Math.max(p.maxAttachments-K.length,0):1/0,Mt=m?1/0:1;for(let T of n){if(J.length>=Nt||J.length>=Mt){oe.push({file:T,reason:"count"});continue}if(typeof p.maxFileSize=="number"&&T.size>p.maxFileSize){oe.push({file:T,reason:"size"});continue}if(!It(T,s)){oe.push({file:T,reason:"type"});continue}let Fe=ct(T.name,T.type)?URL.createObjectURL(T):void 0;Fe&&ye.current.add(Fe),J.push({id:Bt(),name:T.name,size:T.size,type:T.type,file:T,url:Fe,status:"idle"})}let Ae=[];return J.length>0&&(ne(K.concat(J)),p.expandOn!=="none"&&ae(!0),Ae.push(`${rt(J.length,"file")} attached.`)),oe.length>0&&(p.onAttachmentReject?.(oe),Ae.push(`${rt(oe.length,"file")} could not be attached.`)),Ae.length>0&&de(Ae.join(" ")),J.length},[$,ne,ae,de]),xe=e.useCallback(n=>re(n,x.current.accepts),[re]),qe=e.useCallback(n=>re(n,x.current.pasteAccepts),[re]),Xe=e.useCallback(n=>{let s=$(),m=s.find(p=>p.id===n);m&&(ne(s.filter(p=>p.id!==n)),de(`Removed ${m.name}.`))},[$,ne,de]),Ye=e.useCallback(n=>{let s=x.current;if(s.disabled||s.readOnly)return!1;let m=$();if(!Ve(s.value)&&m.length===0)return!1;let p={value:s.value,attachments:m};if(n&&s.onSubmit)for(let K of m)K.url&&ye.current.delete(K.url);return s.onSubmit?.(p),n&&(ve(""),ne([])),!0},[$,ve,ne]);e.useEffect(()=>{let n=ye.current;if(n.size===0)return;let s=new Set(le.map(m=>m.url));for(let m of Array.from(n))s.has(m)||(URL.revokeObjectURL(m),n.delete(m))},[le]),e.useEffect(()=>{let n=ye.current;return()=>{if(!x.current.isAttachmentsControlled){for(let s of Array.from(n))URL.revokeObjectURL(s);n.clear()}}},[]);let Pe=e.useCallback(n=>{let s=x.current,m=Le.current;if(clearTimeout(ge.current),Ce.current=!1,!m||s.disabled||s.readOnly)return;let p=n?.accept!=null?me(n.accept):s.accepts,K=n?.multiple??s.multiple;ke.current={patterns:p,multiple:K},m.accept=p.join(","),m.multiple=K,ue.current=!0,m.click(),setTimeout(()=>{document.hasFocus()&&(ue.current=!1)},1e3)},[]),Je=e.useCallback(()=>{Ce.current=!0,clearTimeout(ge.current),ge.current=setTimeout(()=>{Ce.current=!1},800)},[]);e.useEffect(()=>()=>clearTimeout(ge.current),[]),e.useEffect(()=>{let n=Le.current,s=()=>{ue.current=!1};return window.addEventListener("focus",s),n?.addEventListener("cancel",s),()=>{window.removeEventListener("focus",s),n?.removeEventListener("cancel",s)}},[]);let At=e.useCallback(n=>{let s=n.currentTarget,m=Array.from(s.files??[]),p=ke.current;re(m,p?.patterns??x.current.accepts,p?.multiple),ue.current=!1,ke.current=null,s.value=""},[re]),wt=e.useCallback(n=>{pe?.(n);let s=x.current,m=Ue.current;if(!m||s.expandOn==="none")return;let p=n.relatedTarget;p&&m.contains(p)||ue.current||Ce.current||!Ve(s.value)&&$().length===0&&ae(!1)},[pe,ae,$]),St=e.useCallback(n=>{xe(n)},[xe]),{getRootProps:Et,isDragActive:Tt}=Ht({onDrop:St,onDragEnter:()=>de(""),noClick:!0,noKeyboard:!0,noPaste:!0,disabled:!N||b||S}),He=N&&Tt;e.useImperativeHandle(Se,()=>({focusTextarea:()=>Te.current?.focus({preventScroll:!0}),openFilePicker:()=>Pe()}),[Pe]);let Lt=e.useCallback(n=>{if(b||n.pointerType==="mouse"&&n.button!==0)return;let s=n.target;s instanceof Element&&s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')||(n.preventDefault(),Te.current?.focus({preventScroll:!0}))},[b]),kt=e.useMemo(()=>({open:ce,setOpen:ae,setValue:ve,size:W,expandOn:v,minLines:C,maxLines:w,sendMode:I,disabled:b,readOnly:S,paste:j,clearOnSubmit:V,multiple:L,textareaRef:Te,attachments:le,removeAttachment:Xe,submit:Ye,appendFiles:xe,appendFilesFromPaste:qe,openFilePicker:Pe,beginFilePickerPress:Je}),[ce,ae,ve,W,v,C,w,I,b,S,j,V,L,le,Xe,Ye,xe,qe,Pe,Je]);return e.createElement(st.Provider,{value:kt},e.createElement(We.Provider,{value:A},e.createElement(e.Fragment,null,e.createElement("div",{...Ee,ref:xt,className:E("rt-ChatbarRoot",`rt-r-size-${W}`,a),style:{position:"relative",width:Q,maxWidth:R,...c},"data-state":ce?"open":"closed","data-disabled":b?"":void 0,"data-readonly":S?"":void 0,"data-drop-active":He?"":void 0,"data-accent-color":O,"data-radius":H,onBlurCapture:wt},e.createElement("input",{ref:Le,type:"file",tabIndex:-1,"aria-hidden":!0,style:{display:"none"},onChange:At}),he?e.createElement("div",{className:"rt-ChatbarNotices"},e.createElement(at.Provider,{value:W},he)):null,e.createElement("div",{...N?Et():{},style:{width:"100%",flex:"1 1 auto",minHeight:0},onPointerDown:Lt},e.createElement("div",{className:E("rt-ChatbarBox",`rt-variant-${z??"raised"}`),style:{position:"relative"},"data-accent-color":O,"data-radius":H},e.createElement("div",{className:"rt-ChatbarGrid"},i),He&&e.createElement("div",{className:"rt-ChatbarDropOverlay","aria-hidden":!0},e.createElement("div",{className:"rt-ChatbarDropContent"},e.createElement(we,{emphasis:"medium",size:W,weight:"medium"},"Drop files here to attach"))))),fe?e.createElement(we,{as:"div",size:W==="3"?"2":"1",emphasis:"medium",className:"rt-ChatbarContext"},fe):null,e.createElement(De,{role:"status","aria-live":"polite"},He?"Drop files here to attach.":e.createElement("span",{key:Ke.id},Ke.text))))))});it.displayName="Chatbar.Root";var lt=e.forwardRef((t,o)=>{let{className:a,style:c,asChild:i,onFocus:l,onChange:d,onPaste:u,onKeyDown:h,onCompositionStart:f,onCompositionEnd:g,submitOnEnter:v=!1,...C}=t,w=F(),I=e.useContext(We),{open:b,minLines:S,maxLines:D,expandOn:M,disabled:z,readOnly:O,setOpen:H,setValue:Q,textareaRef:R,paste:G,appendFilesFromPaste:B,size:se,submit:P,clearOnSubmit:L}=w,Z=ot(o,R),_=e.useRef(0),j=e.useRef(0),q=e.useRef(!1),V=e.useRef({open:b,minLines:S,maxLines:D});je(()=>{V.current={open:b,minLines:S,maxLines:D}},[b,S,D]);let k=e.useCallback(()=>{let r=R.current;if(!r)return;let y=window.getComputedStyle(r);_.current=parseFloat(y.lineHeight)||20,j.current=(parseFloat(y.paddingTop)||0)+(parseFloat(y.paddingBottom)||0)},[R]),N=e.useCallback((r,y)=>{let{minLines:A,maxLines:ee}=V.current,X=_.current,te=j.current,ce=Math.ceil((y?A:1)*X)+te,Y=Math.ceil((y?ee:1)*X)+te,ie=Math.max(r.scrollHeight,ce);r.style.height=`${Math.min(ie,Y)}px`;let Re=ie>Y;r.style.overflowY=Re?"auto":"hidden",r.style.maxHeight=Re?`${Y}px`:"none"},[]);je(()=>{k()},[k,se]),je(()=>{let r=R.current;r&&(_.current===0&&k(),nt(r,()=>{r.style.height="auto";let y=b;if(!b&&(M==="overflow"||M==="both")){let A=Math.ceil(_.current)+j.current;r.scrollHeight>A+1&&(y=!0,H(!0))}N(r,y)}))},[I,b,M,S,D,se,H,R,k,N]),e.useEffect(()=>{let r=R.current;if(!r||typeof ResizeObserver>"u")return;let y=-1,A=new ResizeObserver(ee=>{let X=ee[0]?.contentRect.width??0;if(X===y)return;let te=y===-1;y=X,!te&&(k(),nt(r,()=>{r.style.height="auto",N(r,V.current.open)}))});return A.observe(r),()=>A.disconnect()},[R,k,N]),e.useEffect(()=>{},[]);let Se=e.useCallback(r=>{l?.(r),!(z||O)&&(M==="focus"||M==="both")&&!b&&H(!0)},[z,O,M,b,H,l]),pe=e.useCallback(r=>{Q(r.currentTarget.value),d?.(r)},[Q,d]),he=e.useCallback(r=>{if(u?.(r),r.defaultPrevented||!G||z||O)return;let y=Array.from(r.clipboardData?.items??[]).filter(A=>A.kind==="file").map(A=>A.getAsFile()).filter(A=>!!A);y.length!==0&&B(y)>0&&r.preventDefault()},[G,z,O,u,B]),fe=e.useCallback(r=>{q.current=!0,f?.(r)},[f]),Ee=e.useCallback(r=>{q.current=!1,g?.(r)},[g]),W=e.useCallback(r=>{h?.(r),!(r.defaultPrevented||!v)&&(r.key!=="Enter"||r.shiftKey||r.altKey||r.ctrlKey||r.metaKey||q.current||r.nativeEvent.isComposing||r.nativeEvent.keyCode===229||(r.preventDefault(),P(L)))},[v,h,P,L]),be=i?U:"textarea";return e.createElement("div",{className:E("rt-ChatbarField","rt-ChatbarTextarea",a)},e.createElement(be,{...C,ref:Z,className:"rt-ChatbarInput",value:I,onChange:pe,onFocus:Se,onPaste:he,onKeyDown:W,onCompositionStart:fe,onCompositionEnd:Ee,disabled:z,readOnly:O,rows:b?S:1,spellCheck:C.spellCheck??!0,autoCorrect:C.autoCorrect??"on",style:c}))});lt.displayName="Chatbar.Textarea";var dt=e.forwardRef((t,o)=>{let{children:a,asChild:c,className:i,...l}=t;return F().open?null:e.createElement(c?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineStart",i)},a)});dt.displayName="Chatbar.InlineStart";var ut=e.forwardRef((t,o)=>{let{children:a,asChild:c,className:i,...l}=t;return F().open?null:e.createElement(c?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineEnd",i)},a)});ut.displayName="Chatbar.InlineEnd";var mt=e.forwardRef((t,o)=>{let{asChild:a,forceMount:c,renderAttachment:i,className:l,children:d,...u}=t,h=F(),f=e.Children.toArray(d).length>0;return h.attachments.length===0&&!f&&!c?null:e.createElement("div",null,e.createElement(a?U:"div",{...u,ref:o,className:E("rt-ChatbarAttachmentsRow",l),role:"list","aria-label":u["aria-label"]??"Attachments"},e.createElement(Ze,{className:"rt-ChatbarScrollArea",scrollbars:"horizontal"},e.createElement(Ie,{align:"center",gap:"3",minWidth:"fit-content"},h.attachments.map(v=>e.createElement($e,{key:v.id,attachment:v,asChild:!!i},i?.(v))),d))))});mt.displayName="Chatbar.AttachmentsRow";function pt(t,o){let a=t.closest('[role="listitem"]'),c=a?.parentElement?Array.from(a.parentElement.children):[],i=a?c.indexOf(a):-1,d=(c[i+1]??c[i-1])?.querySelector(".rt-ChatbarItemRemove");d?d.focus():o.current?.focus({preventScroll:!0})}var ht=({lead:t,leadKind:o,label:a,detail:c,removeLabel:i,onRemove:l})=>{let d=F();return e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-ChatbarItemLead","data-kind":o,"aria-hidden":!0},t),e.createElement(we,{className:"rt-ChatbarItemLabel",size:d.size,truncate:!0},a,c?e.createElement(De,null,", ",c):null),l&&e.createElement(Be,{iconOnly:!0,className:"rt-ChatbarItemRemove","aria-label":i,size:"1",variant:"ghost",color:"gray",onClick:l},e.createElement(et,null)))},jt={uploading:"uploading",error:"failed to upload"},$e=e.forwardRef((t,o)=>{let{attachment:a,asChild:c,className:i,children:l,...d}=t,u=F(),h=c?U:"div",f=!!a.url&&ct(a.name,a.type),g=`${Math.ceil(a.size/1024)} KB`,v=a.status?jt[a.status]:void 0,C=u.disabled||u.readOnly,w=b=>{pt(b.currentTarget,u.textareaRef),u.removeAttachment(a.id)},I=a.status==="uploading"?e.createElement(ze,null):f?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:a.url,alt:""}):e.createElement(tt,null);return e.createElement(h,{...d,ref:o,className:E(l?"rt-ChatbarAttachment":"rt-ChatbarAttachment rt-ChatbarItem",i),role:"listitem","data-kind":f?"image":"file","data-status":a.status,title:a.name},l??e.createElement(ht,{lead:I,leadKind:f&&a.status!=="uploading"?"image":"icon",label:a.name,detail:v?`${g}, ${v}`:g,removeLabel:`Remove ${a.name}`,onRemove:C?void 0:w}))});$e.displayName="Chatbar.Attachment";var ft=e.forwardRef((t,o)=>{let{children:a,icon:c,image:i,color:l,onRemove:d,removeLabel:u,className:h,...f}=t,g=F(),v=g.disabled||g.readOnly,C=d?w=>{pt(w.currentTarget,g.textareaRef),d()}:void 0;return e.createElement("div",{...f,ref:o,className:E("rt-ChatbarItem",h),role:"listitem","data-accent-color":i?void 0:l??"gray",title:a},e.createElement(ht,{lead:i?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:i,alt:""}):c,leadKind:i?"image":"icon",label:a,removeLabel:u??`Remove ${a}`,onRemove:v?void 0:C}))});ft.displayName="Chatbar.Item";var bt=e.forwardRef((t,o)=>{let{asChild:a,accept:c,multiple:i,disabled:l,onPointerDown:d,onClick:u,...h}=t,f=F(),g=l||f.disabled||f.readOnly;return e.createElement(a?U:"button",{...h,ref:o,className:E("rt-ChatbarAttachTrigger",h.className),type:h.type??"button","aria-label":h["aria-label"]??"Add attachments",disabled:g,onPointerDown:C=>{d?.(C),!g&&!C.defaultPrevented&&f.beginFilePickerPress()},onClick:C=>{u?.(C),!(g||C.defaultPrevented)&&f.openFilePicker({accept:c,multiple:i})}})});bt.displayName="Chatbar.AttachTrigger";var Rt=e.forwardRef((t,o)=>{let{asChild:a,children:c,className:i,...l}=t;return F().open?e.createElement("div",null,e.createElement(a?U:"div",{...l,ref:o,className:E("rt-ChatbarRow",i)},e.createElement(Ie,{align:"center",justify:"between",width:"100%"},c))):null});Rt.displayName="Chatbar.Row";var Ct=e.forwardRef((t,o)=>{let{className:a,...c}=t;return e.createElement("div",{...c,ref:o,className:E("rt-ChatbarRowStart",a)})});Ct.displayName="Chatbar.RowStart";var gt=e.forwardRef((t,o)=>{let{className:a,...c}=t;return e.createElement("div",{...c,ref:o,className:E("rt-ChatbarRowEnd",a)})});gt.displayName="Chatbar.RowEnd";var vt=e.forwardRef((t,o)=>{let{asChild:a,clearOnSend:c,disabled:i,children:l,style:d,className:u,size:h,variant:f,emphasis:g,tabIndex:v,onClick:C,status:w="ready",onStop:I,onRetry:b,stopLabel:S="Stop",retryLabel:D="Retry",stopIcon:M,retryIcon:z,"aria-label":O,"aria-labelledby":H,...Q}=t,R=F(),G=e.useContext(We),B=Ve(G)||R.attachments.length>0,P=B?"send":w==="submitted"||w==="streaming"?"stop":w==="error"?"retry":"send";if(R.sendMode==="never"&&P==="send")return null;let L=P!=="send"||R.sendMode==="always"||B,Z=P==="send"?i||R.disabled||R.readOnly||!B:i||R.disabled,j=P==="stop"?{"aria-label":S}:P==="retry"?{"aria-label":D}:H?{"aria-labelledby":H}:{"aria-label":O??"Send"},q=k=>{if(C?.(k),k.defaultPrevented||Z)return;if(P==="stop"){I?.();return}if(P==="retry"){b?.();return}let N=c??R.clearOnSubmit;R.submit(N)&&N&&R.textareaRef.current?.focus({preventScroll:!0})},V=P==="stop"?M??(w==="submitted"?e.createElement(ze,null):e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},e.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"2"}))):P==="retry"?z??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),e.createElement("path",{d:"M3 3v5h5"})):l??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"}));return e.createElement(Be,{iconOnly:!0,...Q,ref:o,size:h??R.size,...g?{emphasis:g}:{variant:f??(R.open||P!=="send"?"solid":"ghost")},disabled:Z,className:E("rt-ChatbarSend",u),style:{opacity:L?1:0,pointerEvents:L?void 0:"none",...d},"aria-hidden":L?void 0:!0,tabIndex:L?v:-1,asChild:a,onClick:q,"data-status":w,"data-mode":P,...j},V)});vt.displayName="Chatbar.Send";export{it as a,lt as b,dt as c,ut as d,mt as e,$e as f,ft as g,bt as h,Rt as i,Ct as j,gt as k,vt as l,Vt as m};
2
+ //# sourceMappingURL=chunk-5B6JDZ3S.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/chatbar.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { useDropzone } from 'react-dropzone';\n\nimport { Button } from './button.js';\nimport { CloseIcon, FileTextIcon } from './icons.js';\nimport { Flex } from './flex.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Slot } from './slot.js';\nimport { NoticeSizeContext } from './notice.js';\nimport { useThemeSize } from '../helpers/theme-size.js';\nimport { Spinner } from './spinner.js';\nimport { Text } from './text.js';\nimport { VisuallyHidden } from './visually-hidden.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { accentColors } from '../props/color.prop.js';\nimport type { radii } from '../props/radius.prop.js';\nimport type { ButtonProps, ButtonRankProps } from './button.js';\n\n// Avoid SSR warnings by using an isomorphic layout effect\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * Runs `measure` with the placeholder taken out of layout, so a height read\n * reflects the value alone.\n *\n * A textarea with an empty value lays its placeholder out as real text, so\n * `scrollHeight` reports the placeholder wrapped at whatever width the field\n * has at that instant. That sizes an empty bar to the suggestion showing in it\n * rather than to `minLines`, and when the read lands before the field has its\n * final width -- a panel still animating open, a flex parent whose basis is 0\n * -- it wraps that text at a fraction of the real width and opens the bar at\n * `maxLines`. The first keystroke takes the placeholder out of layout and the\n * height snaps back, which is what made the bug look intermittent rather than\n * simply wrong.\n *\n * The reset to 'auto' and the `scrollHeight` read sit in different functions\n * here, so the whole measurement window is wrapped rather than a single read.\n * Costs one extra style recalc on a path that is already forcing a reflow.\n */\nfunction withoutPlaceholder(el: HTMLTextAreaElement, measure: () => void): void {\n const { placeholder } = el;\n if (!placeholder) {\n measure();\n return;\n }\n el.placeholder = '';\n try {\n measure();\n } finally {\n el.placeholder = placeholder;\n }\n}\n\ntype ExpandOn = 'none' | 'focus' | 'overflow' | 'both';\ntype SendMode = 'always' | 'whenDirty' | 'never';\n\n// Attachments\n/** Status flag for attachment lifecycle. */\ntype AttachmentStatus = 'idle' | 'uploading' | 'error' | 'done';\n/**\n * Attachment data model used by Chatbar.\n * - `file` exposes the original File object for uploads and processing.\n * - `url` is an object URL used for image previews. Chatbar revokes it when the\n * attachment is removed; once an attachment is handed to `onSubmit`, the\n * consumer owns the URL and is responsible for revoking it.\n */\ninterface ChatbarAttachment {\n id: string;\n name: string;\n size: number;\n type: string;\n /** Original File object for uploads and processing */\n file: File;\n url?: string;\n status?: AttachmentStatus;\n progress?: number;\n meta?: Record<string, unknown>;\n}\n\ntype ChatbarRejectReason = 'type' | 'size' | 'count';\ninterface ChatbarAttachmentRejection {\n file: File;\n reason: ChatbarRejectReason;\n}\n\ninterface ChatbarSubmitPayload {\n value: string;\n attachments: ChatbarAttachment[];\n}\n\ninterface FilePickerOptions {\n accept?: string | string[];\n multiple?: boolean;\n}\n\ninterface ChatbarContextValue {\n open: boolean;\n setOpen(next: boolean): void;\n\n setValue(next: string): void;\n\n size: '1' | '2' | '3';\n expandOn: ExpandOn;\n minLines: number;\n maxLines: number;\n sendMode: SendMode;\n disabled?: boolean;\n readOnly?: boolean;\n paste: boolean;\n clearOnSubmit: boolean;\n multiple: boolean;\n\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\n\n attachments: ChatbarAttachment[];\n removeAttachment(id: string): void;\n\n /** Validates and submits; returns false when there was nothing to submit */\n submit(clear: boolean): boolean;\n appendFiles(files: File[]): number;\n appendFilesFromPaste(files: File[]): number;\n openFilePicker(options?: FilePickerOptions): void;\n /** Guards blur-collapse between pointerdown on a picker trigger and its click */\n beginFilePickerPress(): void;\n}\n\n/** Chatbar's own range; a Theme size of 4 maps to 3. */\nconst chatbarSizePropDef = { values: ['1', '2', '3'] as const };\n\nconst ChatbarContext = React.createContext<ChatbarContextValue | null>(null);\n// Value lives in its own context so keystrokes only re-render parts that read it\nconst ChatbarValueContext = React.createContext<string>('');\n\nconst useChatbarContext = () => {\n const ctx = React.useContext(ChatbarContext);\n if (!ctx) throw new Error('Chatbar context not found. Wrap parts in <Chatbar.Root>.');\n return ctx;\n};\n\nconst toArray = (val: string | string[] | undefined) =>\n Array.isArray(val) ? val : typeof val === 'string' ? val.split(',').map((s) => s.trim()).filter(Boolean) : [];\n\nconst matchesAccept = (file: File, patterns: string[]) => {\n if (patterns.length === 0) return true;\n const mime = file.type.toLowerCase();\n const name = file.name.toLowerCase();\n for (const patRaw of patterns) {\n const pat = patRaw.toLowerCase();\n if (pat.includes('/')) {\n const [type, subtype] = pat.split('/');\n const [fmType, fmSubtype] = mime.split('/');\n if (type === '*' || (type === fmType && (subtype === '*' || subtype === fmSubtype))) return true;\n } else if (pat.startsWith('.')) {\n if (name.endsWith(pat)) return true;\n }\n }\n return false;\n};\n\nconst IMAGE_EXT_RE = /\\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i;\nconst isImageLike = (name: string, type: string) => (type || '').toLowerCase().startsWith('image/') || IMAGE_EXT_RE.test(name);\n\nconst hasText = (value: string) => value.trim().length > 0;\n\nconst plural = (n: number, word: string) => `${n} ${word}${n === 1 ? '' : 's'}`;\n\nlet attachmentCounter = 0;\nconst createAttachmentId = () => `chatbar-attachment-${Date.now()}-${++attachmentCounter}`;\n\n/**\n * Chatbar container and state provider.\n *\n * Value & Open\n * - Supports controlled/uncontrolled `value` and `open`.\n *\n * Attachments\n * - Controlled/uncontrolled attachments with client-side filtering.\n * - Filters by `accept`/`pasteAccept`, `multiple`, `maxAttachments`, and `maxFileSize`.\n * - Rejections are reported via `onAttachmentReject`.\n *\n * Submit\n * - `onSubmit({ value, attachments })` emits both message and attachments.\n * - Submitting requires text or at least one attachment.\n * - `clearOnSubmit` clears message and attachments by default.\n */\ninterface ChatbarRootBaseProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n /** When the chatbar expands on its own. `none` leaves open state entirely to the consumer. */\n expandOn?: ExpandOn;\n\n /** Minimum visible lines when expanded (default: 3). The compact state is always one line. */\n minLines?: number;\n /** Maximum number of lines before scrolling (default: 6) */\n maxLines?: number;\n\n /** Controls Send button visibility only. Enter-to-submit is controlled by `Textarea submitOnEnter`. */\n sendMode?: SendMode;\n\n /** Disables text input, submission and every way of adding attachments */\n disabled?: boolean;\n /** Prevents editing, submission and adding attachments */\n readOnly?: boolean;\n\n /** Combined submit payload */\n onSubmit?: (payload: ChatbarSubmitPayload) => void;\n\n size?: '1' | '2' | '3';\n variant?: 'raised' | 'surface' | 'outline' | 'ghost' | 'soft';\n /** Accent color for the control (matches TextArea) */\n color?: (typeof accentColors)[number];\n /** Optional radius override (matches TextArea) */\n radius?: (typeof radii)[number];\n\n width?: React.CSSProperties['width'];\n maxWidth?: React.CSSProperties['maxWidth'];\n\n // Attachments API\n attachments?: ChatbarAttachment[];\n defaultAttachments?: ChatbarAttachment[];\n onAttachmentsChange?: (attachments: ChatbarAttachment[]) => void;\n accept?: string | string[];\n /** Allow more than one file per pick, paste or drop */\n multiple?: boolean;\n maxAttachments?: number;\n maxFileSize?: number;\n paste?: boolean;\n /** Accepted types for pasted files. Replaces `accept` for paste when set. */\n pasteAccept?: string | string[];\n /** Clear message and attachments after submit */\n clearOnSubmit?: boolean;\n onAttachmentReject?: (rejections: ChatbarAttachmentRejection[]) => void;\n\n /**\n * Enables drag-and-drop file uploads when true.\n *\n * When enabled:\n * - Files can be dropped anywhere on the chatbar\n * - Same validation rules apply (accept, multiple, maxFileSize, maxAttachments)\n * - Visual feedback shows during drag operations\n * - Rejected files trigger onAttachmentReject\n *\n * @default true\n */\n dropzone?: boolean;\n\n /**\n * Optional API ref to control Chatbar imperatively without relying on DOM refs.\n * Provides methods to focus the textarea and open the file picker.\n */\n apiRef?: React.Ref<ChatbarApi>;\n\n /**\n * Messages that need an answer before the next message, such as `Notice` and `Confirmation`.\n * They stack in a column above the chatbar, in the order given, so put the one the next\n * message answers last, nearest the text. They sit outside the box: a button in a notice never\n * submits the message, and pressing one never collapses the chatbar.\n */\n notices?: React.ReactNode;\n /**\n * Short facts that stay true about the conversation, such as the model or the context left.\n * They sit below the chatbar, inset from its sides.\n */\n context?: React.ReactNode;\n}\n\ntype RootElement = React.ElementRef<'div'>;\n/** Imperative API for Chatbar.Root */\nexport interface ChatbarApi {\n /** Focus the textarea input */\n focusTextarea: () => void;\n /** Open the file picker dialog (respects accept/multiple). No-op when disabled or read-only. */\n openFilePicker: () => void;\n}\n/**\n * Chatbar container and state provider.\n *\n * Behavior\n * - Supports controlled and uncontrolled `value` and `open` states via props.\n * - Provides context to subcomponents like `Textarea`, `Row`, and `Send`.\n * - Exposes `data-state`, `data-disabled`, and `data-readonly` attributes for styling.\n *\n * Attachments\n * - Paste-to-attach: when `paste` is enabled, pasting files adds attachments.\n * - Additions and rejections are announced through a polite live region.\n *\n * Dropzone\n * - When `dropzone` is true, enables drag-and-drop file uploads.\n * - Visual feedback via `data-drop-active` attribute during drag operations.\n *\n * Accessibility\n * - Consumers should label the `Textarea` via `aria-label`/`aria-labelledby`.\n */\ninterface RootProps extends ComponentPropsWithout<'div', RemovedProps | 'onSubmit' | 'color'>, ChatbarRootBaseProps {}\n\nconst Root = React.forwardRef<RootElement, RootProps>((props, forwardedRef) => {\n const {\n className,\n style,\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n expandOn = 'both',\n minLines = 3,\n maxLines = 6,\n sendMode = 'whenDirty',\n disabled,\n readOnly,\n onSubmit,\n size: sizeProp,\n variant,\n color,\n radius,\n width,\n maxWidth,\n attachments: attachmentsProp,\n defaultAttachments,\n onAttachmentsChange,\n accept,\n multiple = true,\n maxAttachments,\n maxFileSize,\n paste = true,\n pasteAccept,\n clearOnSubmit = true,\n onAttachmentReject,\n dropzone = true,\n apiRef,\n onBlurCapture,\n notices,\n context,\n ...divProps\n } = props;\n const size = useThemeSize(sizeProp, chatbarSizePropDef);\n\n const isValueControlled = valueProp != null;\n const [valueUncontrolled, setValueUncontrolled] = React.useState<string>(defaultValue);\n const value = isValueControlled ? valueProp : valueUncontrolled;\n\n const isOpenControlled = openProp != null;\n const [openUncontrolled, setOpenUncontrolled] = React.useState<boolean>(defaultOpen);\n const open = isOpenControlled ? openProp : openUncontrolled;\n\n // Treat `attachments` as controlled if the prop is provided, even if its value is `undefined`.\n // This avoids switching between controlled and uncontrolled when a consumer sets\n // `attachments={undefined}` to clear attachments. In that case we normalize to an empty array.\n const isAttachmentsControlled = 'attachments' in props;\n const [attachmentsUncontrolled, setAttachmentsUncontrolled] = React.useState<ChatbarAttachment[]>(() => defaultAttachments ?? []);\n const attachments = React.useMemo(\n () => (isAttachmentsControlled ? (attachmentsProp ?? []) : attachmentsUncontrolled),\n [isAttachmentsControlled, attachmentsProp, attachmentsUncontrolled],\n );\n\n // `id` changes on every announcement so identical messages still update the live region\n const [announcement, setAnnouncementState] = React.useState({ text: '', id: 0 });\n const announce = React.useCallback((text: string) => setAnnouncementState((prev) => ({ text, id: prev.id + 1 })), []);\n\n const rootRef = React.useRef<HTMLDivElement>(null);\n const composedRootRef = useComposedRefs(forwardedRef, rootRef);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n // Blur-collapse guards: `pickerOpenRef` is true while the native dialog is open,\n // `pressGuardRef` covers the gap between pointerdown on a trigger and its click\n // (Safari blurs the textarea before the click fires).\n const pickerOpenRef = React.useRef(false);\n const pressGuardRef = React.useRef(false);\n const pressGuardTimerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const pickerRef = React.useRef<{ patterns: string[]; multiple: boolean } | null>(null);\n\n const acceptKey = toArray(accept).join(',');\n const pasteAcceptKey = toArray(pasteAccept).join(',');\n const accepts = React.useMemo(() => toArray(acceptKey), [acceptKey]);\n const pasteAccepts = React.useMemo(() => (pasteAcceptKey ? toArray(pasteAcceptKey) : accepts), [pasteAcceptKey, accepts]);\n\n // Latest props/state for stable callbacks. Synced during render (not in an effect) so\n // child layout effects that call setOpen/setValue see this render's handlers.\n const snapshot = {\n value,\n attachments,\n accepts,\n pasteAccepts,\n multiple,\n maxAttachments,\n maxFileSize,\n disabled,\n readOnly,\n expandOn,\n isValueControlled,\n isOpenControlled,\n isAttachmentsControlled,\n onValueChange,\n onOpenChange,\n onAttachmentsChange,\n onAttachmentReject,\n onSubmit,\n };\n const latest = React.useRef(snapshot);\n // eslint-disable-next-line react-hooks/refs -- read only in callbacks/effects; see comment above\n latest.current = snapshot;\n\n // Attachments set during the current event, before Root re-renders. Cleared at the end\n // of the task so a controlled parent that rejects the change is not overridden.\n const pendingAttachmentsRef = React.useRef<ChatbarAttachment[] | null>(null);\n const getAttachments = React.useCallback(() => pendingAttachmentsRef.current ?? latest.current.attachments, []);\n\n const setOpen = React.useCallback((next: boolean) => {\n if (!latest.current.isOpenControlled) setOpenUncontrolled(next);\n latest.current.onOpenChange?.(next);\n }, []);\n\n const setValue = React.useCallback((next: string) => {\n if (!latest.current.isValueControlled) setValueUncontrolled(next);\n latest.current.onValueChange?.(next);\n }, []);\n\n const setAttachments = React.useCallback((next: ChatbarAttachment[]) => {\n // Back-to-back updates in one event must see each other\n pendingAttachmentsRef.current = next;\n queueMicrotask(() => {\n pendingAttachmentsRef.current = null;\n });\n if (!latest.current.isAttachmentsControlled) setAttachmentsUncontrolled(next);\n latest.current.onAttachmentsChange?.(next);\n }, []);\n\n // Object URLs Chatbar created and still owns\n const ownedUrlsRef = React.useRef<Set<string>>(new Set());\n\n const addFiles = React.useCallback(\n (files: File[], patterns: string[], multiple: boolean = latest.current.multiple): number => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly || files.length === 0) return 0;\n\n const current = getAttachments();\n const next: ChatbarAttachment[] = [];\n const rejected: ChatbarAttachmentRejection[] = [];\n const remainingSlots = typeof cfg.maxAttachments === 'number' ? Math.max(cfg.maxAttachments - current.length, 0) : Infinity;\n const perActionLimit = multiple ? Infinity : 1;\n\n for (const file of files) {\n if (next.length >= remainingSlots || next.length >= perActionLimit) {\n rejected.push({ file, reason: 'count' });\n continue;\n }\n if (typeof cfg.maxFileSize === 'number' && file.size > cfg.maxFileSize) {\n rejected.push({ file, reason: 'size' });\n continue;\n }\n if (!matchesAccept(file, patterns)) {\n rejected.push({ file, reason: 'type' });\n continue;\n }\n const url = isImageLike(file.name, file.type) ? URL.createObjectURL(file) : undefined;\n if (url) ownedUrlsRef.current.add(url);\n next.push({ id: createAttachmentId(), name: file.name, size: file.size, type: file.type, file, url, status: 'idle' });\n }\n\n const messages: string[] = [];\n if (next.length > 0) {\n setAttachments(current.concat(next));\n if (cfg.expandOn !== 'none') setOpen(true);\n messages.push(`${plural(next.length, 'file')} attached.`);\n }\n if (rejected.length > 0) {\n cfg.onAttachmentReject?.(rejected);\n messages.push(`${plural(rejected.length, 'file')} could not be attached.`);\n }\n if (messages.length > 0) announce(messages.join(' '));\n return next.length;\n },\n [getAttachments, setAttachments, setOpen, announce],\n );\n\n const appendFiles = React.useCallback((files: File[]) => addFiles(files, latest.current.accepts), [addFiles]);\n const appendFilesFromPaste = React.useCallback((files: File[]) => addFiles(files, latest.current.pasteAccepts), [addFiles]);\n\n const removeAttachment = React.useCallback(\n (id: string) => {\n const current = getAttachments();\n const removed = current.find((a) => a.id === id);\n if (!removed) return;\n setAttachments(current.filter((a) => a.id !== id));\n announce(`Removed ${removed.name}.`);\n },\n [getAttachments, setAttachments, announce],\n );\n\n const submit = React.useCallback(\n (clear: boolean) => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly) return false;\n const current = getAttachments();\n if (!hasText(cfg.value) && current.length === 0) return false;\n const payload = { value: cfg.value, attachments: current };\n // Hand preview URLs to the consumer only when they leave the chatbar; URLs still\n // rendered here stay owned so removing them later revokes them\n if (clear && cfg.onSubmit) {\n for (const att of current) if (att.url) ownedUrlsRef.current.delete(att.url);\n }\n cfg.onSubmit?.(payload);\n if (clear) {\n setValue('');\n setAttachments([]);\n }\n return true;\n },\n [getAttachments, setValue, setAttachments],\n );\n\n // Revoke owned object URLs that are no longer referenced by current attachments\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n if (owned.size === 0) return;\n const current = new Set(attachments.map((a) => a.url));\n for (const url of Array.from(owned)) {\n if (!current.has(url)) {\n URL.revokeObjectURL(url);\n owned.delete(url);\n }\n }\n }, [attachments]);\n\n // On unmount, revoke URLs only when Chatbar owns the attachment list;\n // controlled attachments may still be rendered by the parent.\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n return () => {\n if (latest.current.isAttachmentsControlled) return;\n for (const url of Array.from(owned)) URL.revokeObjectURL(url);\n owned.clear();\n };\n }, []);\n\n const openFilePicker = React.useCallback((options?: FilePickerOptions) => {\n const cfg = latest.current;\n const input = fileInputRef.current;\n // The picker guard takes over from the press guard\n clearTimeout(pressGuardTimerRef.current);\n pressGuardRef.current = false;\n if (!input || cfg.disabled || cfg.readOnly) return;\n const patterns = options?.accept != null ? toArray(options.accept) : cfg.accepts;\n const multiple = options?.multiple ?? cfg.multiple;\n pickerRef.current = { patterns, multiple };\n input.accept = patterns.join(',');\n input.multiple = multiple;\n pickerOpenRef.current = true;\n input.click();\n // Browsers block the dialog outside a user gesture; if the window kept focus,\n // no dialog opened and no focus/cancel/change event will clear the guard\n setTimeout(() => {\n if (document.hasFocus()) pickerOpenRef.current = false;\n }, 1000);\n }, []);\n\n const beginFilePickerPress = React.useCallback(() => {\n // On touch (notably iOS), the compatibility mousedown, blur and click arrive in later\n // tasks than pointerup, so hold the guard until the click or a timeout\n pressGuardRef.current = true;\n clearTimeout(pressGuardTimerRef.current);\n pressGuardTimerRef.current = setTimeout(() => {\n pressGuardRef.current = false;\n }, 800);\n }, []);\n\n React.useEffect(() => () => clearTimeout(pressGuardTimerRef.current), []);\n\n // Clear the picker guard when the dialog closes, whichever way it closes\n React.useEffect(() => {\n const input = fileInputRef.current;\n const reset = () => {\n pickerOpenRef.current = false;\n };\n window.addEventListener('focus', reset);\n input?.addEventListener('cancel', reset);\n return () => {\n window.removeEventListener('focus', reset);\n input?.removeEventListener('cancel', reset);\n };\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n const files = Array.from(input.files ?? []);\n const picker = pickerRef.current;\n addFiles(files, picker?.patterns ?? latest.current.accepts, picker?.multiple);\n pickerOpenRef.current = false;\n pickerRef.current = null;\n // Reset so selecting the same file again still fires change\n input.value = '';\n },\n [addFiles],\n );\n\n const handleBlurCapture = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onBlurCapture?.(event);\n const cfg = latest.current;\n const rootEl = rootRef.current;\n if (!rootEl || cfg.expandOn === 'none') return;\n const nextTarget = event.relatedTarget as Node | null;\n if (nextTarget && rootEl.contains(nextTarget)) return;\n if (pickerOpenRef.current || pressGuardRef.current) return;\n if (!hasText(cfg.value) && getAttachments().length === 0) setOpen(false);\n },\n [onBlurCapture, setOpen, getAttachments],\n );\n\n const handleDrop = React.useCallback((files: File[]) => {\n appendFiles(files);\n }, [appendFiles]);\n\n // Validation happens in addFiles so drop, paste and picker share one rule set\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: handleDrop,\n // Drop any earlier message so it is not re-announced when the drag hint goes away\n onDragEnter: () => announce(''),\n noClick: true,\n noKeyboard: true,\n // Textarea handles paste itself; letting the dropzone see it attaches twice\n noPaste: true,\n disabled: !dropzone || disabled || readOnly,\n });\n const dragActive = dropzone && isDragActive;\n\n React.useImperativeHandle(\n apiRef,\n () => ({\n focusTextarea: () => textareaRef.current?.focus({ preventScroll: true }),\n openFilePicker: () => openFilePicker(),\n }),\n [openFilePicker],\n );\n\n // Click-to-focus: focus textarea when clicking non-interactive areas inside the container\n const handleContainerPointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (disabled) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n const target = event.target;\n if (target instanceof Element && target.closest('button, [role=\"button\"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex=\"-1\"])')) return;\n event.preventDefault();\n textareaRef.current?.focus({ preventScroll: true });\n },\n [disabled],\n );\n\n const contextValue = React.useMemo<ChatbarContextValue>(\n () => ({\n open,\n setOpen,\n setValue,\n size,\n expandOn,\n minLines,\n maxLines,\n sendMode,\n disabled,\n readOnly,\n paste,\n clearOnSubmit,\n multiple,\n textareaRef,\n attachments,\n removeAttachment,\n submit,\n appendFiles,\n appendFilesFromPaste,\n openFilePicker,\n beginFilePickerPress,\n }),\n [\n open, setOpen, setValue, size, expandOn, minLines, maxLines, sendMode, disabled, readOnly, paste,\n clearOnSubmit, multiple, attachments, removeAttachment, submit, appendFiles, appendFilesFromPaste,\n openFilePicker, beginFilePickerPress,\n ],\n );\n\n return (\n <ChatbarContext.Provider value={contextValue}>\n <ChatbarValueContext.Provider value={value}>\n <>\n <div\n {...divProps}\n ref={composedRootRef}\n className={classNames('rt-ChatbarRoot', `rt-r-size-${size}`, className)}\n style={{ position: 'relative', width, maxWidth, ...style }}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n data-readonly={readOnly ? '' : undefined}\n data-drop-active={dragActive ? '' : undefined}\n data-accent-color={color}\n data-radius={radius}\n onBlurCapture={handleBlurCapture}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n tabIndex={-1}\n aria-hidden\n style={{ display: 'none' }}\n onChange={handleFileInputChange}\n />\n {notices ? (\n <div className=\"rt-ChatbarNotices\">\n <NoticeSizeContext.Provider value={size}>{notices}</NoticeSizeContext.Provider>\n </div>\n ) : null}\n <div {...(dropzone ? getRootProps() : {})} style={{ width: '100%', flex: '1 1 auto', minHeight: 0 }} onPointerDown={handleContainerPointerDown}>\n <div\n className={classNames('rt-ChatbarBox', `rt-variant-${variant ?? 'raised'}`)}\n style={{ position: 'relative' }}\n data-accent-color={color}\n data-radius={radius}\n >\n <div className=\"rt-ChatbarGrid\">\n {children}\n </div>\n {dragActive && (\n <div className=\"rt-ChatbarDropOverlay\" aria-hidden>\n <div className=\"rt-ChatbarDropContent\">\n <Text emphasis=\"medium\" size={size} weight=\"medium\">\n Drop files here to attach\n </Text>\n </div>\n </div>\n )}\n </div>\n </div>\n {context ? (\n <Text as=\"div\" size={size === '3' ? '2' : '1'} emphasis=\"medium\" className=\"rt-ChatbarContext\">\n {context}\n </Text>\n ) : null}\n <VisuallyHidden role=\"status\" aria-live=\"polite\">\n {dragActive ? 'Drop files here to attach.' : <span key={announcement.id}>{announcement.text}</span>}\n </VisuallyHidden>\n </div>\n </>\n </ChatbarValueContext.Provider>\n </ChatbarContext.Provider>\n );\n});\nRoot.displayName = 'Chatbar.Root';\n\n/**\n * Multi-line text input for Chatbar.\n * - Uses onChange to control value and avoid duplicate updates.\n * - Auto-resizes between minLines and maxLines.\n * - Expands on focus/overflow per `expandOn`.\n * - Paste-to-attach: when `paste` is enabled on Root, pasting files adds attachments.\n * - Provide `aria-label` or `aria-labelledby` for an accessible name.\n */\ninterface TextareaProps extends Omit<React.ComponentPropsWithoutRef<'textarea'>, 'size' | 'rows' | 'value' | 'defaultValue'> {\n asChild?: boolean;\n /**\n * When true, pressing Enter submits (Shift+Enter inserts a newline).\n * Works with every `sendMode`. Defaults to false.\n */\n submitOnEnter?: boolean;\n}\n\n/**\n * Chatbar multi-line text input.\n *\n * Behavior\n * - Controls the Chatbar value via React onChange.\n * - Auto-resizes between minLines and maxLines in a single layout effect, which\n * also opens the Chatbar when content overflows the compact height and\n * `expandOn` is `overflow` or `both`.\n * - Consumer handlers run first; calling `preventDefault` in `onKeyDown` or\n * `onPaste` skips the built-in submit or attach behavior.\n *\n * Accessibility\n * - Consumers should provide labeling via aria-label or aria-labelledby\n * on this component, as no implicit label is rendered.\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>((props, forwardedRef) => {\n const {\n className,\n style,\n asChild,\n onFocus,\n onChange,\n onPaste,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n submitOnEnter = false,\n ...textareaProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n const { open, minLines, maxLines, expandOn, disabled, readOnly, setOpen, setValue, textareaRef, paste, appendFilesFromPaste, size, submit, clearOnSubmit } = ctx;\n const composedRef = useComposedRefs(forwardedRef, textareaRef);\n\n // Cached metrics to avoid repeated getComputedStyle calls\n const lineHeightRef = React.useRef(0);\n const paddingRef = React.useRef(0);\n const composingRef = React.useRef(false);\n\n const sizingRef = React.useRef({ open, minLines, maxLines });\n // Declared before the sizing effect so it runs first in the same commit\n useIsomorphicLayoutEffect(() => {\n sizingRef.current = { open, minLines, maxLines };\n }, [open, minLines, maxLines]);\n\n const recomputeMetrics = React.useCallback(() => {\n const el = textareaRef.current;\n if (!el) return;\n const computedStyle = window.getComputedStyle(el);\n lineHeightRef.current = parseFloat(computedStyle.lineHeight) || 20;\n paddingRef.current = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0);\n }, [textareaRef]);\n\n // Sizes `el` for the given open state; caller must have set height to 'auto' first\n const applyHeight = React.useCallback((el: HTMLTextAreaElement, isOpen: boolean) => {\n const { minLines: min, maxLines: max } = sizingRef.current;\n const lineHeight = lineHeightRef.current;\n const padding = paddingRef.current;\n const minHeight = Math.ceil((isOpen ? min : 1) * lineHeight) + padding;\n const maxHeight = Math.ceil((isOpen ? max : 1) * lineHeight) + padding;\n const contentHeight = Math.max(el.scrollHeight, minHeight);\n el.style.height = `${Math.min(contentHeight, maxHeight)}px`;\n const overflowing = contentHeight > maxHeight;\n el.style.overflowY = overflowing ? 'auto' : 'hidden';\n el.style.maxHeight = overflowing ? `${maxHeight}px` : 'none';\n }, []);\n\n // Typography depends on size\n useIsomorphicLayoutEffect(() => {\n recomputeMetrics();\n }, [recomputeMetrics, size]);\n\n // Single place for sizing and overflow auto-open: one height reset, one scrollHeight read\n useIsomorphicLayoutEffect(() => {\n const el = textareaRef.current;\n if (!el) return;\n if (lineHeightRef.current === 0) recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n let isOpen = open;\n if (!open && (expandOn === 'overflow' || expandOn === 'both')) {\n const compactHeight = Math.ceil(lineHeightRef.current) + paddingRef.current;\n if (el.scrollHeight > compactHeight + 1) {\n isOpen = true;\n setOpen(true);\n }\n }\n applyHeight(el, isOpen);\n });\n }, [value, open, expandOn, minLines, maxLines, size, setOpen, textareaRef, recomputeMetrics, applyHeight]);\n\n // Width changes re-wrap text; re-measure only when the width actually changes\n React.useEffect(() => {\n const el = textareaRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return;\n let prevWidth = -1;\n const ro = new ResizeObserver((entries) => {\n const width = entries[0]?.contentRect.width ?? 0;\n if (width === prevWidth) return;\n const first = prevWidth === -1;\n prevWidth = width;\n if (first) return;\n recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n applyHeight(el, sizingRef.current.open);\n });\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [textareaRef, recomputeMetrics, applyHeight]);\n\n // Dev-only warning if no accessible name is provided\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n const hasLabel = textareaProps['aria-label'] != null || textareaProps['aria-labelledby'] != null;\n if (!hasLabel) {\n console.warn('[Chatbar.Textarea] Provide aria-label or aria-labelledby to ensure the control has an accessible name.');\n }\n // warn only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleFocus = React.useCallback<React.FocusEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onFocus?.(event);\n if (disabled || readOnly) return;\n if ((expandOn === 'focus' || expandOn === 'both') && !open) setOpen(true);\n },\n [disabled, readOnly, expandOn, open, setOpen, onFocus],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLTextAreaElement>>(\n (event) => {\n setValue(event.currentTarget.value);\n onChange?.(event);\n },\n [setValue, onChange],\n );\n\n const handlePaste = React.useCallback<React.ClipboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onPaste?.(event);\n if (event.defaultPrevented || !paste || disabled || readOnly) return;\n const files = Array.from(event.clipboardData?.items ?? [])\n .filter((item) => item.kind === 'file')\n .map((item) => item.getAsFile())\n .filter((f): f is File => !!f);\n if (files.length === 0) return;\n // Suppress the filename/text representation only when a file was actually attached\n if (appendFilesFromPaste(files) > 0) event.preventDefault();\n },\n [paste, disabled, readOnly, onPaste, appendFilesFromPaste],\n );\n\n const handleCompositionStart = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = true;\n onCompositionStart?.(event);\n },\n [onCompositionStart],\n );\n\n const handleCompositionEnd = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = false;\n onCompositionEnd?.(event);\n },\n [onCompositionEnd],\n );\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !submitOnEnter) return;\n if (event.key !== 'Enter' || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;\n // Safari fires the IME-confirming Enter after compositionend with keyCode 229\n if (composingRef.current || event.nativeEvent.isComposing || event.nativeEvent.keyCode === 229) return;\n // Plain Enter never inserts a newline when submitOnEnter is on, even with nothing to send\n event.preventDefault();\n submit(clearOnSubmit);\n },\n [submitOnEnter, onKeyDown, submit, clearOnSubmit],\n );\n\n const Comp = asChild ? Slot : 'textarea';\n return (\n <div className={classNames('rt-ChatbarField', 'rt-ChatbarTextarea', className)}>\n <Comp\n {...textareaProps}\n ref={composedRef}\n className=\"rt-ChatbarInput\"\n value={value}\n onChange={handleChange}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n disabled={disabled}\n readOnly={readOnly}\n rows={open ? minLines : 1}\n spellCheck={textareaProps.spellCheck ?? true}\n autoCorrect={textareaProps.autoCorrect ?? 'on'}\n style={style}\n />\n </div>\n );\n});\nTextarea.displayName = 'Chatbar.Textarea';\n\ninterface InlineSlotProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst InlineStart = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineStart', className)}>\n {children}\n </Comp>\n );\n});\nInlineStart.displayName = 'Chatbar.InlineStart';\n\nconst InlineEnd = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineEnd', className)}>\n {children}\n </Comp>\n );\n});\nInlineEnd.displayName = 'Chatbar.InlineEnd';\n\n/**\n * Renders a horizontally scrollable list of attachments above the inline row.\n * Hidden when empty unless `forceMount`. Override per-item with `renderAttachment`.\n * `Chatbar.Item`s passed as children follow the attachments in the same row.\n */\ninterface AttachmentsRowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n forceMount?: boolean;\n /** If provided, custom-render a tile; otherwise default tile is used */\n renderAttachment?: (attachment: ChatbarAttachment) => React.ReactNode;\n /** `Chatbar.Item`s: things the message refers to that are not files. */\n children?: React.ReactNode;\n}\n\nconst AttachmentsRow = React.forwardRef<HTMLDivElement, AttachmentsRowProps>((props, forwardedRef) => {\n const { asChild, forceMount, renderAttachment, className, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const hasItems = React.Children.toArray(children).length > 0;\n if (ctx.attachments.length === 0 && !hasItems && !forceMount) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <div>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarAttachmentsRow', className)} role=\"list\" aria-label={divProps['aria-label'] ?? 'Attachments'}>\n <ScrollArea className=\"rt-ChatbarScrollArea\" scrollbars=\"horizontal\">\n <Flex align=\"center\" gap=\"3\" minWidth=\"fit-content\">\n {ctx.attachments.map((att) => (\n <Attachment key={att.id} attachment={att} asChild={!!renderAttachment}>\n {renderAttachment?.(att)}\n </Attachment>\n ))}\n {children}\n </Flex>\n </ScrollArea>\n </Comp>\n </div>\n );\n});\nAttachmentsRow.displayName = 'Chatbar.AttachmentsRow';\n\n/**\n * Moves focus off a pill that is about to unmount, to the next pill's remove\n * button, the previous one's, or the text, so keyboard users are not dropped\n * to <body>.\n */\nfunction moveFocusOffPill(button: HTMLButtonElement, textareaRef: React.RefObject<HTMLTextAreaElement | null>) {\n const pill = button.closest('[role=\"listitem\"]');\n const pills = pill?.parentElement ? Array.from(pill.parentElement.children) : [];\n const index = pill ? pills.indexOf(pill) : -1;\n const neighbour = pills[index + 1] ?? pills[index - 1];\n const nextButton = neighbour?.querySelector<HTMLButtonElement>('.rt-ChatbarItemRemove');\n if (nextButton) nextButton.focus();\n else textareaRef.current?.focus({ preventScroll: true });\n}\n\n/** The pill an attachment and an item share: a lead tile, a label and \u00D7. */\nconst Pill: React.FC<{\n lead: React.ReactNode;\n leadKind: 'image' | 'icon';\n label: React.ReactNode;\n /** Read after the label by screen readers only, e.g. a file's size. */\n detail?: string;\n removeLabel: string;\n onRemove?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}> = ({ lead, leadKind, label, detail, removeLabel, onRemove }) => {\n const ctx = useChatbarContext();\n return (\n <>\n <span className=\"rt-ChatbarItemLead\" data-kind={leadKind} aria-hidden>\n {lead}\n </span>\n <Text className=\"rt-ChatbarItemLabel\" size={ctx.size} truncate>\n {label}\n {detail ? <VisuallyHidden>, {detail}</VisuallyHidden> : null}\n </Text>\n {onRemove && (\n <Button iconOnly className=\"rt-ChatbarItemRemove\" aria-label={removeLabel} size=\"1\" variant=\"ghost\" color=\"gray\" onClick={onRemove}>\n <CloseIcon />\n </Button>\n )}\n </>\n );\n};\n\n/** Default tile renderer for a single attachment. */\ninterface AttachmentProps extends React.ComponentPropsWithoutRef<'div'> {\n attachment: ChatbarAttachment;\n asChild?: boolean;\n}\n\nconst STATUS_LABEL: Partial<Record<AttachmentStatus, string>> = { uploading: 'uploading', error: 'failed to upload' };\n\nconst Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, forwardedRef) => {\n const { attachment, asChild, className, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const Comp = asChild ? Slot : 'div';\n const isImage = !!attachment.url && isImageLike(attachment.name, attachment.type);\n const sizeLabel = `${Math.ceil(attachment.size / 1024)} KB`;\n const statusLabel = attachment.status ? STATUS_LABEL[attachment.status] : undefined;\n const locked = ctx.disabled || ctx.readOnly;\n\n const handleRemove = (event: React.MouseEvent<HTMLButtonElement>) => {\n moveFocusOffPill(event.currentTarget, ctx.textareaRef);\n ctx.removeAttachment(attachment.id);\n };\n\n const lead =\n attachment.status === 'uploading' ? (\n <Spinner />\n ) : isImage ? (\n <img className=\"rt-ChatbarAttachmentImage\" src={attachment.url} alt=\"\" />\n ) : (\n <FileTextIcon />\n );\n\n return (\n <Comp\n {...divProps}\n ref={forwardedRef}\n className={classNames(children ? 'rt-ChatbarAttachment' : 'rt-ChatbarAttachment rt-ChatbarItem', className)}\n role=\"listitem\"\n data-kind={isImage ? 'image' : 'file'}\n data-status={attachment.status}\n title={attachment.name}\n >\n {children ?? (\n <Pill\n lead={lead}\n leadKind={isImage && attachment.status !== 'uploading' ? 'image' : 'icon'}\n label={attachment.name}\n detail={statusLabel ? `${sizeLabel}, ${statusLabel}` : sizeLabel}\n removeLabel={`Remove ${attachment.name}`}\n onRemove={locked ? undefined : handleRemove}\n />\n )}\n </Comp>\n );\n});\nAttachment.displayName = 'Chatbar.Attachment';\n\n/**\n * Something the message refers to that is not a file: a scene object, a\n * picked mode, a selection. The same pill as an attachment, placed in\n * `Chatbar.AttachmentsRow` as a child. The app owns the list, so removing one\n * calls `onRemove` and nothing else; leave it out for a pill that cannot be\n * removed.\n */\ninterface ItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'color'> {\n /** The label. Also names the remove button: \"Remove {label}\". */\n children: string;\n /** Drawn in the lead tile, tinted with `color`. */\n icon?: React.ReactNode;\n /** A thumbnail for the lead tile, in place of the icon. */\n image?: string;\n /** Tint of the icon tile. Defaults to gray. */\n color?: (typeof accentColors)[number];\n onRemove?: () => void;\n /** Overrides the remove button's label. */\n removeLabel?: string;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, ItemProps>((props, forwardedRef) => {\n const { children, icon, image, color, onRemove, removeLabel, className, ...divProps } = props;\n const ctx = useChatbarContext();\n const locked = ctx.disabled || ctx.readOnly;\n\n const handleRemove = onRemove\n ? (event: React.MouseEvent<HTMLButtonElement>) => {\n moveFocusOffPill(event.currentTarget, ctx.textareaRef);\n onRemove();\n }\n : undefined;\n\n return (\n <div\n {...divProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarItem', className)}\n role=\"listitem\"\n data-accent-color={image ? undefined : (color ?? 'gray')}\n title={children}\n >\n <Pill\n lead={image ? <img className=\"rt-ChatbarAttachmentImage\" src={image} alt=\"\" /> : icon}\n leadKind={image ? 'image' : 'icon'}\n label={children}\n removeLabel={removeLabel ?? `Remove ${children}`}\n onRemove={locked ? undefined : handleRemove}\n />\n </div>\n );\n});\nItem.displayName = 'Chatbar.Item';\n\ninterface AttachTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n /** Overrides Root `accept` for files chosen through this trigger */\n accept?: string | string[];\n multiple?: boolean;\n}\n\nconst AttachTrigger = React.forwardRef<HTMLButtonElement, AttachTriggerProps>((props, forwardedRef) => {\n const { asChild, accept, multiple, disabled: disabledProp, onPointerDown, onClick, ...buttonProps } = props;\n const ctx = useChatbarContext();\n const disabled = disabledProp || ctx.disabled || ctx.readOnly;\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...buttonProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarAttachTrigger', buttonProps.className)}\n type={buttonProps.type ?? 'button'}\n aria-label={buttonProps['aria-label'] ?? 'Add attachments'}\n disabled={disabled}\n onPointerDown={(event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDown?.(event);\n if (!disabled && !event.defaultPrevented) ctx.beginFilePickerPress();\n }}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (disabled || event.defaultPrevented) return;\n ctx.openFilePicker({ accept, multiple });\n }}\n />\n );\n});\nAttachTrigger.displayName = 'Chatbar.AttachTrigger';\n\ninterface RowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst Row = React.forwardRef<HTMLDivElement, RowProps>((props, forwardedRef) => {\n const { asChild, children, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (!ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <div>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRow', className)}>\n <Flex align=\"center\" justify=\"between\" width=\"100%\">\n {children}\n </Flex>\n </Comp>\n </div>\n );\n});\nRow.displayName = 'Chatbar.Row';\n\ntype RowSlotProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst RowStart = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowStart', className)} />;\n});\nRowStart.displayName = 'Chatbar.RowStart';\n\nconst RowEnd = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowEnd', className)} />;\n});\nRowEnd.displayName = 'Chatbar.RowEnd';\n\ntype SendStatus = 'ready' | 'submitted' | 'streaming' | 'error';\n\ntype SendProps = Omit<ButtonProps, 'aria-label' | 'aria-labelledby' | 'variant' | 'emphasis' | 'iconOnly' | 'fullWidth'> &\n ButtonRankProps & {\n /** Optional override for accessible name. Defaults to \"Send\". */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n asChild?: boolean;\n /** Clear message and attachments after sending. Defaults to Root `clearOnSubmit`. */\n clearOnSend?: boolean;\n /**\n * What the button means. `ready` sends. While a reply is `submitted` or `streaming` and the\n * box is empty, the button STOPS the reply (`onStop`); with a draft in the box it still sends,\n * and the app decides whether sending interrupts the reply. After an `error`, an empty box\n * makes it RETRY (`onRetry`). Default `ready`.\n */\n status?: SendStatus;\n /** Called when the button is pressed to stop a reply. */\n onStop?: () => void;\n /** Called when the button is pressed to retry after an error. */\n onRetry?: () => void;\n /** Accessible name while it stops. Default \"Stop\". */\n stopLabel?: string;\n /** Accessible name while it retries. Default \"Retry\". */\n retryLabel?: string;\n /** Glyph while it stops. Defaults to a square, or a spinner while `submitted`. */\n stopIcon?: React.ReactNode;\n /** Glyph while it retries. */\n retryIcon?: React.ReactNode;\n};\n\nconst Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef) => {\n const {\n asChild,\n clearOnSend,\n disabled,\n children,\n style,\n className,\n size: sizeProp,\n variant: variantProp, emphasis,\n tabIndex,\n onClick,\n status = 'ready',\n onStop,\n onRetry,\n stopLabel = 'Stop',\n retryLabel = 'Retry',\n stopIcon,\n retryIcon,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...buttonProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n\n const hasContent = hasText(value) || ctx.attachments.length > 0;\n const running = status === 'submitted' || status === 'streaming';\n const mode: 'send' | 'stop' | 'retry' = hasContent ? 'send' : running ? 'stop' : status === 'error' ? 'retry' : 'send';\n\n if (ctx.sendMode === 'never' && mode === 'send') return null;\n\n const visible = mode !== 'send' || ctx.sendMode === 'always' || hasContent;\n const inactive = mode === 'send' ? disabled || ctx.disabled || ctx.readOnly || !hasContent : disabled || ctx.disabled;\n\n const sendName = ariaLabel ?? 'Send';\n const labelProps: { 'aria-label': string } | { 'aria-labelledby': string } =\n mode === 'stop' ? { 'aria-label': stopLabel } : mode === 'retry' ? { 'aria-label': retryLabel } : ariaLabelledby ? { 'aria-labelledby': ariaLabelledby } : { 'aria-label': sendName };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || inactive) return;\n if (mode === 'stop') {\n onStop?.();\n return;\n }\n if (mode === 'retry') {\n onRetry?.();\n return;\n }\n const clear = clearOnSend ?? ctx.clearOnSubmit;\n // Clearing hides and disables this button; keep keyboard focus in the composer\n if (ctx.submit(clear) && clear) ctx.textareaRef.current?.focus({ preventScroll: true });\n };\n\n const glyph =\n mode === 'stop' ? (\n stopIcon ?? (status === 'submitted' ? <Spinner /> : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden>\n <rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\" />\n </svg>\n ))\n ) : mode === 'retry' ? (\n retryIcon ?? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <path d=\"M3 12a9 9 0 1 0 3-6.7L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n )\n ) : (\n children ?? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n )\n );\n\n return (\n <Button\n iconOnly\n {...buttonProps}\n ref={forwardedRef}\n size={sizeProp ?? ctx.size}\n {...(emphasis ? { emphasis } : { variant: variantProp ?? (ctx.open || mode !== 'send' ? 'solid' : 'ghost') })}\n disabled={inactive}\n className={classNames('rt-ChatbarSend', className)}\n style={{ opacity: visible ? 1 : 0, pointerEvents: visible ? undefined : 'none', ...style }}\n // Hidden Send must not be reachable by keyboard or announced\n aria-hidden={visible ? undefined : true}\n tabIndex={visible ? tabIndex : -1}\n asChild={asChild}\n onClick={handleClick}\n data-status={status}\n data-mode={mode}\n {...labelProps}\n >\n {glyph}\n </Button>\n );\n});\nSend.displayName = 'Chatbar.Send';\n\nexport { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, Item, AttachTrigger, Row, RowStart, RowEnd, Send };\nexport type {\n RootProps as ChatbarRootProps,\n TextareaProps as ChatbarTextareaProps,\n InlineSlotProps as ChatbarInlineSlotProps,\n AttachmentsRowProps as ChatbarAttachmentsRowProps,\n AttachmentProps as ChatbarAttachmentProps,\n ItemProps as ChatbarItemProps,\n AttachTriggerProps as ChatbarAttachTriggerProps,\n RowProps as ChatbarRowProps,\n RowSlotProps as ChatbarRowSlotProps,\n SendProps as ChatbarSendProps,\n ChatbarAttachment,\n ChatbarAttachmentRejection,\n ChatbarRejectReason,\n ChatbarSubmitPayload,\n AttachmentStatus as ChatbarAttachmentStatus,\n ExpandOn as ChatbarExpandOn,\n SendMode as ChatbarSendMode,\n SendStatus as ChatbarSendStatus,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["chatbar_exports", "__export", "AttachTrigger", "Attachment", "AttachmentsRow", "InlineEnd", "InlineStart", "Item", "Root", "Row", "RowEnd", "RowStart", "Send", "Textarea", "React", "classNames", "useComposedRefs", "useDropzone", "useIsomorphicLayoutEffect", "withoutPlaceholder", "el", "measure", "placeholder", "chatbarSizePropDef", "ChatbarContext", "ChatbarValueContext", "useChatbarContext", "ctx", "toArray", "val", "s", "matchesAccept", "file", "patterns", "mime", "name", "patRaw", "pat", "type", "subtype", "fmType", "fmSubtype", "IMAGE_EXT_RE", "isImageLike", "hasText", "value", "plural", "n", "word", "attachmentCounter", "createAttachmentId", "Root", "props", "forwardedRef", "className", "style", "children", "valueProp", "defaultValue", "onValueChange", "openProp", "defaultOpen", "onOpenChange", "expandOn", "minLines", "maxLines", "sendMode", "disabled", "readOnly", "onSubmit", "sizeProp", "variant", "color", "radius", "width", "maxWidth", "attachmentsProp", "defaultAttachments", "onAttachmentsChange", "accept", "multiple", "maxAttachments", "maxFileSize", "paste", "pasteAccept", "clearOnSubmit", "onAttachmentReject", "dropzone", "apiRef", "onBlurCapture", "notices", "context", "divProps", "size", "useThemeSize", "isValueControlled", "valueUncontrolled", "setValueUncontrolled", "isOpenControlled", "openUncontrolled", "setOpenUncontrolled", "open", "isAttachmentsControlled", "attachmentsUncontrolled", "setAttachmentsUncontrolled", "attachments", "announcement", "setAnnouncementState", "announce", "text", "prev", "rootRef", "composedRootRef", "useComposedRefs", "textareaRef", "fileInputRef", "pickerOpenRef", "pressGuardRef", "pressGuardTimerRef", "pickerRef", "acceptKey", "pasteAcceptKey", "accepts", "pasteAccepts", "snapshot", "latest", "pendingAttachmentsRef", "getAttachments", "setOpen", "next", "setValue", "setAttachments", "ownedUrlsRef", "addFiles", "files", "cfg", "current", "rejected", "remainingSlots", "perActionLimit", "url", "messages", "appendFiles", "appendFilesFromPaste", "removeAttachment", "id", "removed", "a", "submit", "clear", "payload", "att", "owned", "openFilePicker", "options", "input", "beginFilePickerPress", "reset", "handleFileInputChange", "event", "picker", "handleBlurCapture", "rootEl", "nextTarget", "handleDrop", "getRootProps", "isDragActive", "useDropzone", "dragActive", "handleContainerPointerDown", "target", "contextValue", "classNames", "NoticeSizeContext", "Text", "VisuallyHidden", "Textarea", "asChild", "onFocus", "onChange", "onPaste", "onKeyDown", "onCompositionStart", "onCompositionEnd", "submitOnEnter", "textareaProps", "composedRef", "lineHeightRef", "paddingRef", "composingRef", "sizingRef", "recomputeMetrics", "computedStyle", "applyHeight", "isOpen", "min", "max", "lineHeight", "padding", "minHeight", "maxHeight", "contentHeight", "overflowing", "compactHeight", "prevWidth", "ro", "entries", "first", "handleFocus", "handleChange", "handlePaste", "item", "f", "handleCompositionStart", "handleCompositionEnd", "handleKeyDown", "Comp", "Slot", "InlineStart", "InlineEnd", "AttachmentsRow", "forceMount", "renderAttachment", "hasItems", "ScrollArea", "Flex", "Attachment", "moveFocusOffPill", "button", "pill", "pills", "index", "nextButton", "Pill", "lead", "leadKind", "label", "detail", "removeLabel", "onRemove", "Button", "CloseIcon", "STATUS_LABEL", "attachment", "isImage", "sizeLabel", "statusLabel", "locked", "handleRemove", "Spinner", "FileTextIcon", "Item", "icon", "image", "AttachTrigger", "disabledProp", "onPointerDown", "onClick", "buttonProps", "Row", "RowStart", "RowEnd", "Send", "clearOnSend", "variantProp", "emphasis", "tabIndex", "status", "onStop", "onRetry", "stopLabel", "retryLabel", "stopIcon", "retryIcon", "ariaLabel", "ariaLabelledby", "hasContent", "mode", "visible", "inactive", "labelProps", "handleClick", "glyph"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{b as s}from"./chunk-KRJTW535.js";import{a as e}from"./chunk-NZJGC6ZW.js";import{d as o}from"./chunk-34KVYDF6.js";var a=["1","2","3","4"],t=["raised","solid","soft","surface","outline","ghost"],i={...e,size:{type:"enum",className:"rt-r-size",values:a,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:t,default:"solid"},...o,...s,loading:{type:"boolean",className:"rt-loading",default:!1},fullWidth:{type:"boolean",className:"rt-full-width",default:!1},flush:{type:"boolean",default:!1}};export{i as a};
2
- //# sourceMappingURL=chunk-NCDOMH5I.js.map
1
+ import{b as s}from"./chunk-KRJTW535.js";import{a as e}from"./chunk-NZJGC6ZW.js";import{d as o}from"./chunk-CUNKWFKA.js";var a=["1","2","3","4"],t=["raised","solid","soft","surface","outline","ghost"],f={...e,size:{type:"enum",className:"rt-r-size",values:a,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:t,default:"solid"},...o,...s,loading:{type:"boolean",className:"rt-loading",default:!1},fullWidth:{type:"boolean",className:"rt-full-width",default:!1}};export{f as a};
2
+ //# sourceMappingURL=chunk-5P4JTWBK.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/_internal/base-button.props.ts"],
4
+ "sourcesContent": ["import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { accentColorPropDef } from '../../props/color.prop.js';\nimport { radiusPropDef } from '../../props/radius.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\n/**\n * Available button sizes for responsive design\n * Size 1: 24px - Compact for toolbars and dense interfaces\n * Size 2: 32px - Standard for most interface contexts\n * Size 3: 40px - Large for important actions and mobile touch targets\n * Size 4: 48px - Extra large for hero sections and maximum impact\n */\nconst sizes = ['1', '2', '3', '4'] as const;\n\n/**\n * Available button variants for different visual contexts\n * - raised: lifted off its ground, with an edge and a shadow\n * - solid: Primary actions that should be noticed first (the default)\n * - soft: Content-heavy interfaces, natural integration\n * - surface: Elevated appearance with subtle depth\n * - outline: Secondary actions that support primary actions\n * - ghost: Utility functions that don't compete for attention\n */\nconst variants = ['raised', 'solid', 'soft', 'surface', 'outline', 'ghost'] as const;\n\n/**\n * Base button prop definitions that define the component's API\n * \n * These props are used by all button variants (Button and Toggle)\n * to ensure consistent behavior and styling across the design system.\n * \n * Key features:\n * - Responsive sizing with mobile-first approach\n * - Six visual variants for different interface contexts\n * - Comprehensive color system with semantic meanings\n * - Loading states with automatic accessibility\n * - Polymorphic rendering support via asChild\n * \n * @example\n * ```tsx\n * // Basic button with default props\n * <BaseButton>Click me</BaseButton>\n * \n * // Button with custom size and variant\n * <BaseButton size=\"3\" variant=\"solid\">Primary Action</BaseButton>\n * \n * // Button with loading state\n * <BaseButton loading>Processing...</BaseButton>\n * ```\n */\nconst baseButtonPropDefs = {\n ...asChildPropDef,\n /**\n * Button size for responsive design and interface density\n * Supports responsive objects: { initial: '1', sm: '2', md: '3', lg: '4' }\n */\n size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n /**\n * Visual variant that determines the button's appearance and context\n */\n variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n ...accentColorPropDef,\n ...radiusPropDef,\n /**\n * Loading state that shows a spinner and disables interaction\n * Automatically sets disabled=true and provides accessibility announcements\n */\n loading: { type: 'boolean', className: 'rt-loading', default: false },\n /**\n * Full width mode that expands the button to fill its container\n * Useful for mobile layouts and form submissions\n */\n fullWidth: { type: 'boolean', className: 'rt-full-width', default: false },\n} satisfies {\n size: PropDef<(typeof sizes)[number]>;\n variant: PropDef<(typeof variants)[number]>;\n loading: PropDef<boolean>;\n fullWidth: PropDef<boolean>;\n};\n\nexport { baseButtonPropDefs };\n"],
5
+ "mappings": "wHAaA,IAAMA,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAW3BC,EAAW,CAAC,SAAU,QAAS,OAAQ,UAAW,UAAW,OAAO,EA2BpEC,EAAqB,CACzB,GAAGC,EAKH,KAAM,CAAE,KAAM,OAAQ,UAAW,YAAa,OAAQH,EAAO,QAAS,IAAK,WAAY,EAAK,EAI5F,QAAS,CAAE,KAAM,OAAQ,UAAW,aAAc,OAAQC,EAAU,QAAS,OAAQ,EACrF,GAAGG,EACH,GAAGC,EAKH,QAAS,CAAE,KAAM,UAAW,UAAW,aAAc,QAAS,EAAM,EAKpE,UAAW,CAAE,KAAM,UAAW,UAAW,gBAAiB,QAAS,EAAM,CAC3E",
6
+ "names": ["sizes", "variants", "baseButtonPropDefs", "asChildPropDef", "accentColorPropDef", "radiusPropDef"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as s,b as i}from"./chunk-IX5HIHVI.js";import{e as p}from"./chunk-3YLYGKFB.js";import{a as o}from"./chunk-24CVW6P7.js";import{a as c}from"./chunk-ELAW7ZUG.js";import*as e from"react";import b from"classnames";import{Checkbox as h}from"radix-ui";import{useControllableState as P}from"radix-ui/internal";var u=e.forwardRef((a,m)=>{let n=p(a,o.size),{className:k,color:C,checked:d,defaultChecked:t,onCheckedChange:f,...l}=c(n,o),[r,x]=P({prop:d,defaultProp:t??!1,onChange:f});return e.createElement(h.Root,{"data-accent-color":C,...l,defaultChecked:t,checked:r,onCheckedChange:x,asChild:!1,ref:m,className:b("rt-reset","rt-BaseCheckboxRoot","rt-CheckboxRoot",k)},e.createElement(h.Indicator,{asChild:!0,className:"rt-BaseCheckboxIndicator rt-CheckboxIndicator"},r==="indeterminate"?e.createElement(s,null):e.createElement(i,null)))});u.displayName="Checkbox";export{u as a};
2
+ //# sourceMappingURL=chunk-5WLSAUNJ.js.map