@kamod-ch/ui 1.1.0 → 1.3.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 (336) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +12 -0
  3. package/dist/{Accordion-D1PiNspd.d.ts → Accordion-BiCBkB8o.d.ts} +7 -1
  4. package/dist/{AlertDialog-GadhKjPC.d.ts → AlertDialog-CZ2taZg4.d.ts} +3 -3
  5. package/dist/Button-OI3VvO-J.d.ts +84 -0
  6. package/dist/{Collapsible-CW1hQwqV.d.ts → Collapsible-BdQqvk35.d.ts} +6 -1
  7. package/dist/{ComboboxValue-BGfXgtZt.d.ts → ComboboxValue-Cq6zoDkt.d.ts} +1 -1
  8. package/dist/{Dialog-BOIteLfe.d.ts → Dialog-DdD1sMwk.d.ts} +12 -1
  9. package/dist/{DialogContent-cQHSRQdT.d.ts → DialogContent-YWzwWdSv.d.ts} +6 -1
  10. package/dist/{Drawer-CdjXZxxK.d.ts → Drawer-8xfn9KLf.d.ts} +2 -2
  11. package/dist/{Dropdown-CVbWVKok.d.ts → Dropdown-CzDJJgXQ.d.ts} +32 -27
  12. package/dist/{FieldTitle-aSgThW-B.d.ts → FieldTitle-hsI0Y6Zm.d.ts} +13 -13
  13. package/dist/{HoverCard-aVEEtkyO.d.ts → HoverCard-CBBr-tT9.d.ts} +14 -14
  14. package/dist/{Input-Cem05el9.d.ts → Input-C_X0Xpn2.d.ts} +11 -11
  15. package/dist/{PopoverTrigger-CH_Kx2mn.d.ts → PopoverTrigger-CIPAh0h0.d.ts} +14 -14
  16. package/dist/{RadioGroup-BaElzLwa.d.ts → RadioGroup-BDF3NaXQ.d.ts} +8 -8
  17. package/dist/{Sheet-DZ-p-aHY.d.ts → Sheet-DVt5iTiK.d.ts} +1 -1
  18. package/dist/{SidebarProvider-Bx7-BdQn.d.ts → SidebarProvider-CoVCItNd.d.ts} +18 -18
  19. package/dist/{Switch-CTTkNdqF.d.ts → Switch-BcNJFeRY.d.ts} +8 -8
  20. package/dist/{Tabs-CR-thcs6.d.ts → Tabs-CrXH3YED.d.ts} +18 -9
  21. package/dist/{Textarea-DbKkduOG.d.ts → Textarea-CST17pYW.d.ts} +11 -11
  22. package/dist/Toggle-BgvkYUI8.d.ts +49 -0
  23. package/dist/{ToggleGroup-UeYHzQe7.d.ts → ToggleGroup-CqYICGsS.d.ts} +42 -42
  24. package/dist/TreeProvider-Cpu8yo3y.d.ts +270 -0
  25. package/dist/Typography-Df9IVmw2.d.ts +64 -0
  26. package/dist/{chunk-ZM67EKZC.js → chunk-22G3DW5M.js} +4 -4
  27. package/dist/{chunk-ZM67EKZC.js.map → chunk-22G3DW5M.js.map} +1 -1
  28. package/dist/{chunk-BDK7CDEI.js → chunk-2F3PWEDR.js} +3 -3
  29. package/dist/{chunk-BDK7CDEI.js.map → chunk-2F3PWEDR.js.map} +1 -1
  30. package/dist/{chunk-ZHAGKFSO.js → chunk-2SPOI3MX.js} +3 -3
  31. package/dist/{chunk-ZHAGKFSO.js.map → chunk-2SPOI3MX.js.map} +1 -1
  32. package/dist/chunk-2UTJHQTS.js +162 -0
  33. package/dist/chunk-2UTJHQTS.js.map +1 -0
  34. package/dist/{chunk-NKKMM6CK.js → chunk-3AFRSB5R.js} +3 -3
  35. package/dist/{chunk-NKKMM6CK.js.map → chunk-3AFRSB5R.js.map} +1 -1
  36. package/dist/{chunk-LCMPFPBN.js → chunk-3ETRJPBL.js} +3 -3
  37. package/dist/{chunk-LCMPFPBN.js.map → chunk-3ETRJPBL.js.map} +1 -1
  38. package/dist/{chunk-WAPRVVDQ.js → chunk-3HBKDY64.js} +3 -3
  39. package/dist/{chunk-WAPRVVDQ.js.map → chunk-3HBKDY64.js.map} +1 -1
  40. package/dist/{chunk-PPYJQNE5.js → chunk-3XMFQKWB.js} +9 -5
  41. package/dist/chunk-3XMFQKWB.js.map +1 -0
  42. package/dist/{chunk-HCTZJYHK.js → chunk-4SQKSVBH.js} +6 -6
  43. package/dist/chunk-4SQKSVBH.js.map +1 -0
  44. package/dist/{chunk-ZVAW22GX.js → chunk-4ZFKDNSK.js} +3 -3
  45. package/dist/{chunk-ZVAW22GX.js.map → chunk-4ZFKDNSK.js.map} +1 -1
  46. package/dist/{chunk-IJ4ZRIR4.js → chunk-53FZEAOJ.js} +5 -5
  47. package/dist/{chunk-IJ4ZRIR4.js.map → chunk-53FZEAOJ.js.map} +1 -1
  48. package/dist/{chunk-BYG2ULS3.js → chunk-5ATODZ6L.js} +5 -7
  49. package/dist/chunk-5ATODZ6L.js.map +1 -0
  50. package/dist/{chunk-TXKPDNRD.js → chunk-5I7ULBDP.js} +3 -3
  51. package/dist/{chunk-TXKPDNRD.js.map → chunk-5I7ULBDP.js.map} +1 -1
  52. package/dist/{chunk-UEXTD7ZB.js → chunk-6HFTTHSY.js} +3 -3
  53. package/dist/{chunk-UEXTD7ZB.js.map → chunk-6HFTTHSY.js.map} +1 -1
  54. package/dist/{chunk-6RASPU5N.js → chunk-7LWAWZHM.js} +4 -11
  55. package/dist/chunk-7LWAWZHM.js.map +1 -0
  56. package/dist/{chunk-RHNI5UQO.js → chunk-A6ZZZFZN.js} +4 -4
  57. package/dist/{chunk-RHNI5UQO.js.map → chunk-A6ZZZFZN.js.map} +1 -1
  58. package/dist/{chunk-V63YIVKJ.js → chunk-APZXMU2X.js} +4 -4
  59. package/dist/{chunk-V63YIVKJ.js.map → chunk-APZXMU2X.js.map} +1 -1
  60. package/dist/{chunk-6FYSVMH7.js → chunk-AYLEWD77.js} +3 -3
  61. package/dist/{chunk-6FYSVMH7.js.map → chunk-AYLEWD77.js.map} +1 -1
  62. package/dist/{chunk-D3DQ4ICC.js → chunk-BZMD4EZC.js} +4 -11
  63. package/dist/chunk-BZMD4EZC.js.map +1 -0
  64. package/dist/{chunk-PU5J5EPY.js → chunk-C7TARE5T.js} +5 -5
  65. package/dist/{chunk-PU5J5EPY.js.map → chunk-C7TARE5T.js.map} +1 -1
  66. package/dist/{chunk-5FBD2NTR.js → chunk-DDRX6NNW.js} +6 -9
  67. package/dist/chunk-DDRX6NNW.js.map +1 -0
  68. package/dist/{chunk-HHLQYMPT.js → chunk-DUTKHOH3.js} +4 -4
  69. package/dist/{chunk-HHLQYMPT.js.map → chunk-DUTKHOH3.js.map} +1 -1
  70. package/dist/{chunk-24QD2FTA.js → chunk-EBXTNL52.js} +12 -15
  71. package/dist/chunk-EBXTNL52.js.map +1 -0
  72. package/dist/{chunk-STRBBF45.js → chunk-FOQ32NEP.js} +5 -5
  73. package/dist/chunk-FOQ32NEP.js.map +1 -0
  74. package/dist/{chunk-UIA74JVN.js → chunk-FXG53XY2.js} +5 -5
  75. package/dist/chunk-FXG53XY2.js.map +1 -0
  76. package/dist/{chunk-2KY7P27I.js → chunk-G7LTWXRN.js} +3 -3
  77. package/dist/{chunk-2KY7P27I.js.map → chunk-G7LTWXRN.js.map} +1 -1
  78. package/dist/{chunk-6BK3PIRX.js → chunk-GD3VBO44.js} +6 -6
  79. package/dist/{chunk-6BK3PIRX.js.map → chunk-GD3VBO44.js.map} +1 -1
  80. package/dist/{chunk-MD6HHORY.js → chunk-GPRE2VWB.js} +3 -3
  81. package/dist/{chunk-MD6HHORY.js.map → chunk-GPRE2VWB.js.map} +1 -1
  82. package/dist/{chunk-QZX3RFIC.js → chunk-HJF5AV4L.js} +11 -34
  83. package/dist/chunk-HJF5AV4L.js.map +1 -0
  84. package/dist/{chunk-QFDTG2ZJ.js → chunk-HWPROYKB.js} +3 -3
  85. package/dist/{chunk-QFDTG2ZJ.js.map → chunk-HWPROYKB.js.map} +1 -1
  86. package/dist/chunk-ISISDJ3Z.js +205 -0
  87. package/dist/chunk-ISISDJ3Z.js.map +1 -0
  88. package/dist/{chunk-3LIT5GWF.js → chunk-IW43BO47.js} +57 -19
  89. package/dist/chunk-IW43BO47.js.map +1 -0
  90. package/dist/{chunk-CLEC2RMU.js → chunk-JKEILBHG.js} +3 -3
  91. package/dist/{chunk-CLEC2RMU.js.map → chunk-JKEILBHG.js.map} +1 -1
  92. package/dist/{chunk-TFLSEEM4.js → chunk-KCN3GXRK.js} +3 -3
  93. package/dist/{chunk-TFLSEEM4.js.map → chunk-KCN3GXRK.js.map} +1 -1
  94. package/dist/{chunk-EMUPVA2F.js → chunk-KHV3WV6T.js} +4 -4
  95. package/dist/{chunk-EMUPVA2F.js.map → chunk-KHV3WV6T.js.map} +1 -1
  96. package/dist/{chunk-G6TV6TF7.js → chunk-KJ5PYCJG.js} +4 -12
  97. package/dist/chunk-KJ5PYCJG.js.map +1 -0
  98. package/dist/{chunk-5KS2VSX2.js → chunk-LAM4GIME.js} +4 -4
  99. package/dist/chunk-LAM4GIME.js.map +1 -0
  100. package/dist/{chunk-OCLVMKVC.js → chunk-MDXTENZ4.js} +8 -31
  101. package/dist/chunk-MDXTENZ4.js.map +1 -0
  102. package/dist/{chunk-CP55TVOV.js → chunk-MJUKNUFV.js} +3 -3
  103. package/dist/{chunk-CP55TVOV.js.map → chunk-MJUKNUFV.js.map} +1 -1
  104. package/dist/{chunk-GGTDJEE2.js → chunk-MTNLY7AY.js} +3 -3
  105. package/dist/{chunk-GGTDJEE2.js.map → chunk-MTNLY7AY.js.map} +1 -1
  106. package/dist/{chunk-67J4KBOW.js → chunk-NBIBBLP6.js} +10 -52
  107. package/dist/chunk-NBIBBLP6.js.map +1 -0
  108. package/dist/chunk-NBP4J2QF.js +200 -0
  109. package/dist/chunk-NBP4J2QF.js.map +1 -0
  110. package/dist/{chunk-NGKQBNZ5.js → chunk-NJYJCMKY.js} +3 -3
  111. package/dist/{chunk-NGKQBNZ5.js.map → chunk-NJYJCMKY.js.map} +1 -1
  112. package/dist/{chunk-COPT6I2D.js → chunk-NSEY5IC6.js} +9 -10
  113. package/dist/chunk-NSEY5IC6.js.map +1 -0
  114. package/dist/{chunk-UARVH66B.js → chunk-O4PHGLXF.js} +5 -5
  115. package/dist/{chunk-UARVH66B.js.map → chunk-O4PHGLXF.js.map} +1 -1
  116. package/dist/{chunk-J4DMQV64.js → chunk-OCZC4PDM.js} +3 -3
  117. package/dist/{chunk-J4DMQV64.js.map → chunk-OCZC4PDM.js.map} +1 -1
  118. package/dist/{chunk-IQH3XSOI.js → chunk-ODYHA3O5.js} +4 -4
  119. package/dist/{chunk-IQH3XSOI.js.map → chunk-ODYHA3O5.js.map} +1 -1
  120. package/dist/chunk-OJEZZVZB.js +9 -0
  121. package/dist/{chunk-CMBERB5B.js.map → chunk-OJEZZVZB.js.map} +1 -1
  122. package/dist/{chunk-7IOAIEIA.js → chunk-OTXP2QJ7.js} +6 -6
  123. package/dist/{chunk-7IOAIEIA.js.map → chunk-OTXP2QJ7.js.map} +1 -1
  124. package/dist/{chunk-JSHUWI3C.js → chunk-OUVUK3E7.js} +9 -9
  125. package/dist/chunk-OUVUK3E7.js.map +1 -0
  126. package/dist/{chunk-3KB54OYF.js → chunk-P6ICWO5B.js} +3 -3
  127. package/dist/{chunk-3KB54OYF.js.map → chunk-P6ICWO5B.js.map} +1 -1
  128. package/dist/{chunk-GIU6BZTW.js → chunk-P7PPE4P5.js} +8 -11
  129. package/dist/chunk-P7PPE4P5.js.map +1 -0
  130. package/dist/{chunk-XGFJJ2YB.js → chunk-PVQUVEZV.js} +4 -11
  131. package/dist/chunk-PVQUVEZV.js.map +1 -0
  132. package/dist/{chunk-LCWXIQKA.js → chunk-Q3RL7TOY.js} +4 -4
  133. package/dist/chunk-Q3RL7TOY.js.map +1 -0
  134. package/dist/{chunk-5Q4RBIMZ.js → chunk-Q5B6ROW6.js} +3 -3
  135. package/dist/{chunk-5Q4RBIMZ.js.map → chunk-Q5B6ROW6.js.map} +1 -1
  136. package/dist/{chunk-262EK2XT.js → chunk-Q7ZDP6DS.js} +9 -7
  137. package/dist/chunk-Q7ZDP6DS.js.map +1 -0
  138. package/dist/{chunk-4IBTERDG.js → chunk-QFTOABOJ.js} +3 -3
  139. package/dist/{chunk-4IBTERDG.js.map → chunk-QFTOABOJ.js.map} +1 -1
  140. package/dist/{chunk-JURNPBSW.js → chunk-QINEFXUA.js} +3 -3
  141. package/dist/{chunk-JURNPBSW.js.map → chunk-QINEFXUA.js.map} +1 -1
  142. package/dist/{chunk-FIOKWIJP.js → chunk-QWSD34JA.js} +4 -4
  143. package/dist/{chunk-FIOKWIJP.js.map → chunk-QWSD34JA.js.map} +1 -1
  144. package/dist/{chunk-Q5IUIA6B.js → chunk-RLBAA7WW.js} +3 -3
  145. package/dist/{chunk-Q5IUIA6B.js.map → chunk-RLBAA7WW.js.map} +1 -1
  146. package/dist/{chunk-MJQ6R345.js → chunk-SEC7UN45.js} +5 -5
  147. package/dist/chunk-SEC7UN45.js.map +1 -0
  148. package/dist/chunk-SIA46B4Q.js +9 -0
  149. package/dist/{chunk-RTIFG4XT.js.map → chunk-SIA46B4Q.js.map} +1 -1
  150. package/dist/{chunk-X4HPHMYW.js → chunk-TMPADU74.js} +4 -4
  151. package/dist/{chunk-X4HPHMYW.js.map → chunk-TMPADU74.js.map} +1 -1
  152. package/dist/{chunk-YTHUHPE5.js → chunk-USPWL4KC.js} +3 -3
  153. package/dist/{chunk-YTHUHPE5.js.map → chunk-USPWL4KC.js.map} +1 -1
  154. package/dist/{chunk-U2UNWXBC.js → chunk-VEQ7X2PO.js} +7 -6
  155. package/dist/chunk-VEQ7X2PO.js.map +1 -0
  156. package/dist/{chunk-YZLPO4B2.js → chunk-WRXXU5F6.js} +4 -11
  157. package/dist/chunk-WRXXU5F6.js.map +1 -0
  158. package/dist/{chunk-XNYAQZIB.js → chunk-X4B6I3M4.js} +4 -4
  159. package/dist/{chunk-XNYAQZIB.js.map → chunk-X4B6I3M4.js.map} +1 -1
  160. package/dist/{chunk-JNF7FDJO.js → chunk-XCYEWILH.js} +4 -4
  161. package/dist/{chunk-JNF7FDJO.js.map → chunk-XCYEWILH.js.map} +1 -1
  162. package/dist/{chunk-V2MG5Y5F.js → chunk-XGVQXRLA.js} +4 -4
  163. package/dist/chunk-XGVQXRLA.js.map +1 -0
  164. package/dist/chunk-XIANSPQO.js +11 -0
  165. package/dist/chunk-XIANSPQO.js.map +1 -0
  166. package/dist/{chunk-UNWEH4Z6.js → chunk-XOMPJYYA.js} +4 -4
  167. package/dist/chunk-XOMPJYYA.js.map +1 -0
  168. package/dist/{chunk-UXWUFNXY.js → chunk-XSYSV3R3.js} +3 -3
  169. package/dist/{chunk-UXWUFNXY.js.map → chunk-XSYSV3R3.js.map} +1 -1
  170. package/dist/{chunk-ERBGZZ2U.js → chunk-XZYJUJED.js} +4 -4
  171. package/dist/chunk-XZYJUJED.js.map +1 -0
  172. package/dist/chunk-YMKC3H55.js +921 -0
  173. package/dist/chunk-YMKC3H55.js.map +1 -0
  174. package/dist/{chunk-PFV7YIEP.js → chunk-Z4JNYSV3.js} +4 -4
  175. package/dist/{chunk-PFV7YIEP.js.map → chunk-Z4JNYSV3.js.map} +1 -1
  176. package/dist/{chunk-4V3WHQJE.js → chunk-ZLSCHWTN.js} +4 -4
  177. package/dist/{chunk-4V3WHQJE.js.map → chunk-ZLSCHWTN.js.map} +1 -1
  178. package/dist/chunk-ZQ2WOX4X.js +29 -0
  179. package/dist/chunk-ZQ2WOX4X.js.map +1 -0
  180. package/dist/{chunk-NILG56Z7.js → chunk-ZROHNZDC.js} +4 -4
  181. package/dist/{chunk-NILG56Z7.js.map → chunk-ZROHNZDC.js.map} +1 -1
  182. package/dist/{chunk-PGOCR4LG.js → chunk-ZVYCUG4N.js} +4 -4
  183. package/dist/chunk-ZVYCUG4N.js.map +1 -0
  184. package/dist/components/accordion/index.d.ts +2 -2
  185. package/dist/components/accordion/index.js +3 -2
  186. package/dist/components/alert/index.d.ts +26 -26
  187. package/dist/components/alert/index.js +2 -2
  188. package/dist/components/alert-dialog/index.d.ts +6 -5
  189. package/dist/components/alert-dialog/index.js +6 -6
  190. package/dist/components/aspect-ratio/index.js +2 -2
  191. package/dist/components/avatar/index.d.ts +11 -11
  192. package/dist/components/avatar/index.js +2 -2
  193. package/dist/components/badge/index.d.ts +112 -112
  194. package/dist/components/badge/index.js +2 -2
  195. package/dist/components/breadcrumb/index.js +2 -2
  196. package/dist/components/button/index.d.ts +51 -51
  197. package/dist/components/button/index.js +3 -3
  198. package/dist/components/button-group/index.js +2 -2
  199. package/dist/components/calendar/index.js +10 -10
  200. package/dist/components/card/index.d.ts +22 -22
  201. package/dist/components/card/index.js +2 -1
  202. package/dist/components/carousel/index.js +3 -3
  203. package/dist/components/chart/index.js +2 -2
  204. package/dist/components/checkbox/index.js +2 -2
  205. package/dist/components/collapsible/index.d.ts +2 -2
  206. package/dist/components/collapsible/index.js +3 -2
  207. package/dist/components/combobox/index.d.ts +2 -2
  208. package/dist/components/combobox/index.js +5 -5
  209. package/dist/components/command/index.js +7 -7
  210. package/dist/components/context-menu/index.d.ts +11 -11
  211. package/dist/components/context-menu/index.js +3 -3
  212. package/dist/components/data-table/index.js +3 -3
  213. package/dist/components/date-picker/index.js +6 -6
  214. package/dist/components/dialog/index.d.ts +26 -5
  215. package/dist/components/dialog/index.js +5 -5
  216. package/dist/components/direction/index.js +2 -2
  217. package/dist/components/drawer/index.d.ts +5 -4
  218. package/dist/components/drawer/index.js +5 -5
  219. package/dist/components/dropdown/index.d.ts +3 -3
  220. package/dist/components/dropdown/index.js +3 -3
  221. package/dist/components/dropzone/index.js +3 -3
  222. package/dist/components/empty/index.d.ts +6 -6
  223. package/dist/components/empty/index.js +2 -2
  224. package/dist/components/field/index.d.ts +2 -2
  225. package/dist/components/field/index.js +4 -4
  226. package/dist/components/hover-card/index.d.ts +2 -2
  227. package/dist/components/hover-card/index.js +2 -1
  228. package/dist/components/image/index.js +2 -2
  229. package/dist/components/input/index.d.ts +12 -12
  230. package/dist/components/input/index.js +3 -2
  231. package/dist/components/input-group/index.d.ts +56 -56
  232. package/dist/components/input-group/index.js +5 -5
  233. package/dist/components/input-otp/index.js +2 -2
  234. package/dist/components/item/index.d.ts +31 -31
  235. package/dist/components/item/index.js +3 -3
  236. package/dist/components/kbd/index.d.ts +8 -8
  237. package/dist/components/kbd/index.js +2 -2
  238. package/dist/components/label/index.d.ts +22 -22
  239. package/dist/components/label/index.js +3 -2
  240. package/dist/components/locale-segment-group/index.js +2 -2
  241. package/dist/components/menubar/index.js +3 -3
  242. package/dist/components/native-select/index.d.ts +34 -34
  243. package/dist/components/native-select/index.js +2 -1
  244. package/dist/components/navigation-menu/index.d.ts +2 -2
  245. package/dist/components/navigation-menu/index.js +3 -3
  246. package/dist/components/pagination/index.d.ts +1 -1
  247. package/dist/components/pagination/index.js +3 -3
  248. package/dist/components/popover/index.d.ts +22 -22
  249. package/dist/components/popover/index.js +4 -3
  250. package/dist/components/progress/index.js +2 -2
  251. package/dist/components/prose/index.js +2 -2
  252. package/dist/components/radio-group/index.d.ts +2 -2
  253. package/dist/components/radio-group/index.js +3 -3
  254. package/dist/components/scroll-area/index.js +2 -2
  255. package/dist/components/select/index.js +3 -3
  256. package/dist/components/selectable-card/index.js +3 -3
  257. package/dist/components/separator/index.d.ts +8 -8
  258. package/dist/components/separator/index.js +3 -2
  259. package/dist/components/sheet/index.d.ts +5 -4
  260. package/dist/components/sheet/index.js +5 -5
  261. package/dist/components/sidebar/index.d.ts +3 -3
  262. package/dist/components/sidebar/index.js +10 -10
  263. package/dist/components/skeleton/index.d.ts +22 -22
  264. package/dist/components/skeleton/index.js +2 -1
  265. package/dist/components/slider/index.js +2 -2
  266. package/dist/components/spinner/index.js +2 -2
  267. package/dist/components/switch/index.d.ts +1 -1
  268. package/dist/components/switch/index.js +2 -2
  269. package/dist/components/table/index.js +3 -3
  270. package/dist/components/tabs/index.d.ts +2 -2
  271. package/dist/components/tabs/index.js +3 -3
  272. package/dist/components/textarea/index.d.ts +12 -12
  273. package/dist/components/textarea/index.js +3 -2
  274. package/dist/components/theme-toggle/index.js +4 -4
  275. package/dist/components/toggle/index.d.ts +1 -1
  276. package/dist/components/toggle/index.js +2 -2
  277. package/dist/components/toggle-group/index.d.ts +2 -2
  278. package/dist/components/toggle-group/index.js +2 -2
  279. package/dist/components/tree/index.d.ts +24 -0
  280. package/dist/components/tree/index.js +5 -0
  281. package/dist/components/tree/index.js.map +1 -0
  282. package/dist/components/typography/index.d.ts +2 -2
  283. package/dist/components/typography/index.js +2 -2
  284. package/dist/components/video/index.js +2 -2
  285. package/dist/index.d.ts +25 -24
  286. package/dist/index.js +80 -78
  287. package/dist/lib/interactive/index.js +1 -1
  288. package/dist/lib/utils.d.ts +2 -1
  289. package/dist/lib/utils.js +1 -1
  290. package/dist/{navigationMenuTriggerStyle-BWnESpon.d.ts → navigationMenuTriggerStyle-DUhqCYxO.d.ts} +1 -1
  291. package/dist/theme.css +16 -0
  292. package/dist/utils.d.ts +2 -0
  293. package/dist/utils.js +3 -0
  294. package/dist/utils.js.map +1 -0
  295. package/package.json +34 -25
  296. package/dist/Button-vQnkiVTI.d.ts +0 -84
  297. package/dist/Toggle-CseZl7XN.d.ts +0 -49
  298. package/dist/Typography-ccTtE182.d.ts +0 -64
  299. package/dist/chunk-24QD2FTA.js.map +0 -1
  300. package/dist/chunk-262EK2XT.js.map +0 -1
  301. package/dist/chunk-3LIT5GWF.js.map +0 -1
  302. package/dist/chunk-5FBD2NTR.js.map +0 -1
  303. package/dist/chunk-5KS2VSX2.js.map +0 -1
  304. package/dist/chunk-67J4KBOW.js.map +0 -1
  305. package/dist/chunk-6RASPU5N.js.map +0 -1
  306. package/dist/chunk-BYG2ULS3.js.map +0 -1
  307. package/dist/chunk-CMBERB5B.js +0 -9
  308. package/dist/chunk-COPT6I2D.js.map +0 -1
  309. package/dist/chunk-D3DQ4ICC.js.map +0 -1
  310. package/dist/chunk-ERBGZZ2U.js.map +0 -1
  311. package/dist/chunk-G6TV6TF7.js.map +0 -1
  312. package/dist/chunk-GIU6BZTW.js.map +0 -1
  313. package/dist/chunk-HCTZJYHK.js.map +0 -1
  314. package/dist/chunk-JSHUWI3C.js.map +0 -1
  315. package/dist/chunk-LCWXIQKA.js.map +0 -1
  316. package/dist/chunk-MJQ6R345.js.map +0 -1
  317. package/dist/chunk-MKG3UAP6.js +0 -347
  318. package/dist/chunk-MKG3UAP6.js.map +0 -1
  319. package/dist/chunk-MS2ZNYCJ.js +0 -9
  320. package/dist/chunk-MS2ZNYCJ.js.map +0 -1
  321. package/dist/chunk-OCLVMKVC.js.map +0 -1
  322. package/dist/chunk-PGOCR4LG.js.map +0 -1
  323. package/dist/chunk-PPYJQNE5.js.map +0 -1
  324. package/dist/chunk-QZX3RFIC.js.map +0 -1
  325. package/dist/chunk-RTIFG4XT.js +0 -9
  326. package/dist/chunk-STRBBF45.js.map +0 -1
  327. package/dist/chunk-U2UNWXBC.js.map +0 -1
  328. package/dist/chunk-UEGIKBX6.js +0 -385
  329. package/dist/chunk-UEGIKBX6.js.map +0 -1
  330. package/dist/chunk-UIA74JVN.js.map +0 -1
  331. package/dist/chunk-UNWEH4Z6.js.map +0 -1
  332. package/dist/chunk-V2MG5Y5F.js.map +0 -1
  333. package/dist/chunk-X2YUFNK7.js +0 -18
  334. package/dist/chunk-X2YUFNK7.js.map +0 -1
  335. package/dist/chunk-XGFJJ2YB.js.map +0 -1
  336. package/dist/chunk-YZLPO4B2.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/tree/tree-registry.ts","../src/components/tree/TreeProvider.tsx","../src/components/tree/tree-keyboard.ts","../src/components/tree/Tree.tsx","../src/components/tree/TreeLines.tsx","../src/components/tree/tree-icons.tsx","../src/components/tree/TreeNode.tsx","../src/components/tree/TreeItem.tsx","../src/components/tree/index.ts"],"names":["signal","useRef","jsx","jsxs","createContext","useContext","useLayoutEffect","toChildArray"],"mappings":"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","file":"chunk-YMKC3H55.js","sourcesContent":["import { type Signal, signal } from \"@preact/signals\";\n\nexport type TreeNodeRecord = {\n nodeId: string;\n parentId: string | null;\n disabled: boolean;\n hasChildren: boolean;\n data: unknown;\n element: HTMLElement | null;\n order: number;\n isLast: boolean;\n level: number;\n};\n\nexport class TreeRegistry {\n private nodes = new Map<string, TreeNodeRecord>();\n private childrenByParent = new Map<string | null, string[]>();\n private orderCounter = 0;\n readonly version: Signal<number> = signal(0);\n\n private bump() {\n this.version.value += 1;\n }\n\n register(node: Omit<TreeNodeRecord, \"order\" | \"isLast\" | \"level\"> & { level: number }) {\n const existing = this.nodes.get(node.nodeId);\n if (existing) {\n existing.parentId = node.parentId;\n existing.disabled = node.disabled;\n existing.hasChildren = node.hasChildren;\n existing.data = node.data;\n existing.element = node.element;\n existing.level = node.level;\n this.rebuildChildren(node.parentId);\n this.bump();\n return;\n }\n\n this.nodes.set(node.nodeId, {\n ...node,\n order: this.orderCounter++,\n isLast: false,\n });\n this.rebuildChildren(node.parentId);\n this.bump();\n }\n\n unregister(nodeId: string) {\n const node = this.nodes.get(nodeId);\n if (!node) return;\n const parentId = node.parentId;\n this.nodes.delete(nodeId);\n this.rebuildChildren(parentId);\n this.bump();\n }\n\n setElement(nodeId: string, element: HTMLElement | null) {\n const node = this.nodes.get(nodeId);\n if (!node || node.element === element) return;\n node.element = element;\n this.bump();\n }\n\n getNode(nodeId: string) {\n return this.nodes.get(nodeId);\n }\n\n getChildren(parentId: string | null) {\n return this.childrenByParent.get(parentId) ?? [];\n }\n\n getParent(nodeId: string) {\n const node = this.nodes.get(nodeId);\n if (!node?.parentId) return null;\n return this.nodes.get(node.parentId) ?? null;\n }\n\n isVisible(nodeId: string, expandedIds: ReadonlySet<string>) {\n let current = this.nodes.get(nodeId);\n if (!current) return false;\n while (current.parentId) {\n if (!expandedIds.has(current.parentId)) return false;\n current = this.nodes.get(current.parentId);\n if (!current) return false;\n }\n return true;\n }\n\n getVisibleActivatableIds(expandedIds: ReadonlySet<string>) {\n const rootIds = this.getChildren(null);\n const result: string[] = [];\n\n const walk = (ids: string[]) => {\n for (const id of ids) {\n const node = this.nodes.get(id);\n if (!node) continue;\n if (!this.isVisible(id, expandedIds)) continue;\n if (!node.disabled) result.push(id);\n if (node.hasChildren && expandedIds.has(id)) {\n walk(this.getChildren(id));\n }\n }\n };\n\n walk(rootIds);\n return result;\n }\n\n private rebuildChildren(parentId: string | null) {\n const childIds = [...this.nodes.values()]\n .filter((node) => node.parentId === parentId)\n .sort((a, b) => a.order - b.order)\n .map((node) => node.nodeId);\n\n this.childrenByParent.set(parentId, childIds);\n\n childIds.forEach((childId, index) => {\n const node = this.nodes.get(childId);\n if (node) node.isLast = index === childIds.length - 1;\n });\n }\n}\n","import { type Signal, signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { TreeRegistry } from \"./tree-registry\";\nimport type { TreeIcons } from \"./tree-types\";\n\nexport type TreeSelectionMode = \"none\" | \"single\" | \"multiple\";\n\nexport const treeVariants = tv({\n base: \"w-full rounded-lg border border-border bg-background\",\n variants: {\n variant: {\n default: \"\",\n outline: \"border-2\",\n ghost: \"border-transparent bg-transparent\",\n },\n size: {\n sm: \"text-sm\",\n default: \"\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n});\n\nexport const treeItemVariants = tv({\n base: [\n \"group/tree-item relative flex min-w-0 cursor-default select-none items-center rounded-md outline-none transition-colors\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"motion-reduce:transition-none\",\n ],\n variants: {\n variant: {\n default:\n \"hover:bg-accent/60 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n outline:\n \"hover:bg-accent/40 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n ghost:\n \"hover:bg-accent/50 data-[selected=true]:bg-accent/70 data-[selected=true]:text-accent-foreground\",\n },\n size: {\n sm: \"min-h-7 gap-1.5 px-2 py-1 text-sm\",\n default: \"min-h-8 gap-2 px-2.5 py-1.5 text-sm\",\n lg: \"min-h-10 gap-2.5 px-3 py-2 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n});\n\nexport type TreeProviderContextValue = {\n registry: TreeRegistry;\n expandedIds: Signal<Set<string>>;\n selectedIds: Signal<Set<string>>;\n selectionMode: TreeSelectionMode;\n showLines: boolean;\n showIcons: boolean;\n animateExpand: boolean;\n indent: number | string;\n icons?: TreeIcons;\n variant: NonNullable<VariantProps<typeof treeVariants>[\"variant\"]>;\n size: NonNullable<VariantProps<typeof treeVariants>[\"size\"]>;\n focusedId: Signal<string | null>;\n tabbableId: Signal<string | null>;\n isExpandedControlled: boolean;\n isSelectedControlled: boolean;\n setExpandedIds: (ids: string[]) => void;\n setSelectedIds: (ids: string[]) => void;\n toggleExpanded: (nodeId: string) => void;\n selectNode: (nodeId: string, options?: { additive?: boolean; toggle?: boolean }) => void;\n focusNode: (nodeId: string, options?: { moveDOMFocus?: boolean }) => void;\n getNodeData: (nodeId: string) => unknown;\n};\n\nconst TreeProviderContext = createContext<TreeProviderContextValue | null>(null);\n\nexport const useTreeProvider = () => {\n const context = useContext(TreeProviderContext);\n if (!context) throw new Error(\"Tree components must be used within TreeProvider\");\n return context;\n};\n\nexport type TreeItemContextValue = {\n nodeId: string;\n level: number;\n parentPath: boolean[];\n isLast: boolean;\n};\n\nexport const TreeItemContext = createContext<TreeItemContextValue | null>(null);\n\nexport const useTreeItemContext = () => useContext(TreeItemContext);\n\nexport type TreeProviderProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> &\n VariantProps<typeof treeVariants> & {\n class?: string;\n expandedIds?: readonly string[];\n defaultExpandedIds?: readonly string[];\n onExpandedChange?: (ids: string[]) => void;\n selectedIds?: readonly string[];\n defaultSelectedIds?: readonly string[];\n onSelectionChange?: (ids: string[]) => void;\n selectionMode?: TreeSelectionMode;\n showLines?: boolean;\n showIcons?: boolean;\n animateExpand?: boolean;\n indent?: number | string;\n icons?: TreeIcons;\n children?: ComponentChildren;\n };\n\nexport const TreeProvider = ({\n class: className,\n variant = \"default\",\n size = \"default\",\n expandedIds: expandedIdsProp,\n defaultExpandedIds = [],\n onExpandedChange,\n selectedIds: selectedIdsProp,\n defaultSelectedIds = [],\n onSelectionChange,\n selectionMode = \"none\",\n showLines = true,\n showIcons = true,\n animateExpand = true,\n indent = 20,\n icons,\n children,\n ...rest\n}: TreeProviderProps) => {\n const registryRef = useRef<TreeRegistry | null>(null);\n if (!registryRef.current) registryRef.current = new TreeRegistry();\n const registry = registryRef.current;\n\n const isExpandedControlled = expandedIdsProp !== undefined;\n const isSelectedControlled = selectedIdsProp !== undefined;\n\n const [internalExpanded, setInternalExpanded] = useState<string[]>(() => [...defaultExpandedIds]);\n const [internalSelected, setInternalSelected] = useState<string[]>(() => [...defaultSelectedIds]);\n\n const expandedArray = isExpandedControlled ? [...expandedIdsProp] : internalExpanded;\n const selectedArray = isSelectedControlled ? [...selectedIdsProp] : internalSelected;\n\n const expandedIds = useMemo(() => signal(new Set(expandedArray)), []);\n expandedIds.value = new Set(expandedArray);\n\n const selectedIds = useMemo(() => signal(new Set(selectedArray)), []);\n selectedIds.value = new Set(selectedArray);\n\n const focusedId = useMemo(() => signal<string | null>(null), []);\n const tabbableId = useMemo(() => signal<string | null>(null), []);\n\n const setExpandedIds = (ids: string[]) => {\n if (!isExpandedControlled) setInternalExpanded(ids);\n expandedIds.value = new Set(ids);\n onExpandedChange?.(ids);\n };\n\n const setSelectedIds = (ids: string[]) => {\n if (!isSelectedControlled) setInternalSelected(ids);\n selectedIds.value = new Set(ids);\n onSelectionChange?.(ids);\n };\n\n const focusNode = (nodeId: string, options?: { moveDOMFocus?: boolean }) => {\n const node = registry.getNode(nodeId);\n if (!node || node.disabled) return;\n focusedId.value = nodeId;\n tabbableId.value = nodeId;\n if (options?.moveDOMFocus !== false && node.element) {\n node.element.focus();\n }\n };\n\n const collapseFocusCorrection = (branchId: string) => {\n const focused = focusedId.value;\n if (!focused || focused === branchId) return;\n let current = registry.getNode(focused);\n while (current) {\n if (current.nodeId === branchId) {\n focusNode(branchId);\n return;\n }\n current = current.parentId ? registry.getNode(current.parentId) : undefined;\n }\n };\n\n const toggleExpanded = (nodeId: string) => {\n const next = new Set(expandedIds.value);\n if (next.has(nodeId)) {\n next.delete(nodeId);\n setExpandedIds([...next]);\n collapseFocusCorrection(nodeId);\n } else {\n next.add(nodeId);\n setExpandedIds([...next]);\n }\n };\n\n const selectNode = (nodeId: string, options?: { additive?: boolean; toggle?: boolean }) => {\n if (selectionMode === \"none\") return;\n const node = registry.getNode(nodeId);\n if (!node || node.disabled) return;\n\n const current = new Set(selectedIds.value);\n const isSelected = current.has(nodeId);\n\n if (selectionMode === \"single\") {\n if (options?.toggle && isSelected) {\n setSelectedIds([]);\n return;\n }\n setSelectedIds([nodeId]);\n return;\n }\n\n if (options?.additive) {\n const next = new Set(current);\n if (isSelected) next.delete(nodeId);\n else next.add(nodeId);\n setSelectedIds([...next]);\n return;\n }\n\n if (options?.toggle && isSelected) {\n current.delete(nodeId);\n setSelectedIds([...current]);\n return;\n }\n\n setSelectedIds([nodeId]);\n };\n\n const prevExpandedRef = useRef(expandedArray);\n useLayoutEffect(() => {\n const prev = new Set(prevExpandedRef.current);\n const next = new Set(expandedArray);\n for (const id of prev) {\n if (!next.has(id)) collapseFocusCorrection(id);\n }\n prevExpandedRef.current = expandedArray;\n });\n\n const contextValue: TreeProviderContextValue = {\n registry,\n expandedIds,\n selectedIds,\n selectionMode,\n showLines,\n showIcons,\n animateExpand,\n indent,\n icons,\n variant: variant ?? \"default\",\n size: size ?? \"default\",\n focusedId,\n tabbableId,\n isExpandedControlled,\n isSelectedControlled,\n setExpandedIds,\n setSelectedIds,\n toggleExpanded,\n selectNode,\n focusNode,\n getNodeData: (nodeId) => registry.getNode(nodeId)?.data,\n };\n\n return (\n <TreeProviderContext.Provider value={contextValue}>\n <div\n data-slot=\"tree-provider\"\n data-variant={variant ?? \"default\"}\n data-size={size ?? \"default\"}\n class={cn(\"w-full\", className)}\n {...rest}\n >\n {children}\n </div>\n </TreeProviderContext.Provider>\n );\n};\n\nexport type { VariantProps };\n","import type { JSX } from \"preact\";\nimport type { TreeProviderContextValue } from \"./TreeProvider\";\n\nconst isMetaLike = (event: KeyboardEvent) => event.ctrlKey || event.metaKey;\n\nexport const handleTreeKeyDown = (\n event: JSX.TargetedKeyboardEvent<HTMLDivElement>,\n tree: TreeProviderContextValue,\n) => {\n if (event.defaultPrevented) return;\n\n const target = event.target as HTMLElement | null;\n const itemEl = target?.closest('[role=\"treeitem\"]') as HTMLElement | null;\n if (!itemEl) return;\n\n const nodeId = itemEl.getAttribute(\"data-node-id\");\n if (!nodeId) return;\n\n const visible = tree.registry.getVisibleActivatableIds(tree.expandedIds.value);\n const index = visible.indexOf(nodeId);\n if (index === -1) return;\n\n const node = tree.registry.getNode(nodeId);\n if (!node) return;\n\n const moveFocus = (nextId: string) => {\n event.preventDefault();\n tree.focusNode(nextId);\n };\n\n switch (event.key) {\n case \"ArrowDown\": {\n if (index < visible.length - 1) moveFocus(visible[index + 1]);\n break;\n }\n case \"ArrowUp\": {\n if (index > 0) moveFocus(visible[index - 1]);\n break;\n }\n case \"Home\": {\n if (visible.length > 0) moveFocus(visible[0]);\n break;\n }\n case \"End\": {\n if (visible.length > 0) moveFocus(visible[visible.length - 1]);\n break;\n }\n case \"ArrowRight\": {\n event.preventDefault();\n if (node.hasChildren) {\n if (!tree.expandedIds.value.has(nodeId)) {\n tree.toggleExpanded(nodeId);\n } else {\n const children = tree.registry.getChildren(nodeId).filter((id) => {\n const child = tree.registry.getNode(id);\n return child && !child.disabled && tree.registry.isVisible(id, tree.expandedIds.value);\n });\n if (children[0]) tree.focusNode(children[0]);\n }\n }\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n if (node.hasChildren && tree.expandedIds.value.has(nodeId)) {\n tree.toggleExpanded(nodeId);\n } else if (node.parentId) {\n tree.focusNode(node.parentId);\n }\n break;\n }\n case \"Enter\":\n case \" \": {\n if (event.key === \" \" && isMetaLike(event)) {\n event.preventDefault();\n tree.selectNode(nodeId, { additive: true, toggle: true });\n break;\n }\n event.preventDefault();\n if (node.hasChildren && !tree.expandedIds.value.has(nodeId)) {\n tree.toggleExpanded(nodeId);\n }\n if (tree.selectionMode !== \"none\") {\n tree.selectNode(nodeId, {\n toggle: tree.selectionMode === \"multiple\",\n });\n }\n break;\n }\n case \"a\":\n case \"A\": {\n if (!isMetaLike(event) || tree.selectionMode !== \"multiple\") break;\n event.preventDefault();\n tree.setSelectedIds(visible);\n break;\n }\n default:\n break;\n }\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useRef } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { treeVariants, useTreeProvider } from \"./TreeProvider\";\nimport { handleTreeKeyDown } from \"./tree-keyboard\";\n\nexport type TreeProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> & {\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const Tree = ({\n class: className,\n children,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n}: TreeProps) => {\n const tree = useTreeProvider();\n const rootRef = useRef<HTMLDivElement>(null);\n\n if (!ariaLabel && !ariaLabelledBy) {\n const env = (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV;\n if (env !== \"production\") {\n console.warn(\n \"[kamod-ui] <Tree> requires an accessible name via aria-label or aria-labelledby.\",\n );\n }\n }\n\n const multiselectable = tree.selectionMode === \"multiple\";\n\n return (\n <div\n ref={rootRef}\n role=\"tree\"\n aria-multiselectable={multiselectable ? true : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-slot=\"tree\"\n data-variant={tree.variant}\n data-size={tree.size}\n class={cn(treeVariants({ variant: tree.variant, size: tree.size }), className)}\n onKeyDown={(event) => {\n handleTreeKeyDown(event, tree);\n }}\n onFocus={(event) => {\n if (event.target !== event.currentTarget) return;\n const visible = tree.registry.getVisibleActivatableIds(tree.expandedIds.value);\n if (visible.length === 0) return;\n const current = tree.tabbableId.value;\n const target = current && visible.includes(current) ? current : visible[0];\n tree.focusNode(target);\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import { cn } from \"../../lib/utils\";\n\nconst indentCSSValue = (indent: number | string) =>\n typeof indent === \"number\" ? `${indent}px` : indent;\n\nexport type TreeLinesProps = {\n level: number;\n parentPath: boolean[];\n isLast: boolean;\n indent: number | string;\n class?: string;\n};\n\nexport const TreeLines = ({\n level,\n parentPath,\n isLast,\n indent,\n class: className,\n}: TreeLinesProps) => {\n if (level <= 0) return null;\n const indentPx = indentCSSValue(indent);\n\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"tree-lines\"\n class={cn(\"pointer-events-none absolute inset-y-0 start-0\", className)}\n >\n {parentPath.map((pathIsLast, pathIndex) => {\n if (pathIsLast) return null;\n return (\n <span\n key={`line-${pathIndex}`}\n class=\"absolute top-0 bottom-0 w-px bg-border\"\n style={{ insetInlineStart: `calc(${pathIndex + 1} * ${indentPx})` }}\n />\n );\n })}\n <span\n class=\"absolute top-1/2 h-px bg-border\"\n style={{\n insetInlineStart: `calc(${level - 1} * ${indentPx} + ${indentPx} / 2)`,\n width: `calc(${indentPx} / 2)`,\n }}\n />\n {!isLast ? (\n <span\n class=\"absolute top-0 bottom-0 w-px bg-border\"\n style={{ insetInlineStart: `calc(${level} * ${indentPx})` }}\n />\n ) : null}\n </div>\n );\n};\n\nexport { indentCSSValue };\n","import type { ComponentChildren } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport type { TreeIconProp, TreeIconState, TreeIcons } from \"./tree-types\";\n\nconst DefaultChevron = ({ expanded }: { expanded: boolean }) => (\n <svg\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n aria-hidden=\"true\"\n focusable=\"false\"\n class={cn(\n \"size-4 shrink-0 origin-center text-muted-foreground transition-transform duration-200 motion-reduce:transition-none\",\n expanded && \"rotate-90 rtl:-rotate-90\",\n )}\n >\n <path\n d=\"M6 4l4 4-4 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst DefaultBranchIcon = () => (\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <path\n d=\"M2 4.5h8a2 2 0 012 2V12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path d=\"M12 12h2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst DefaultLeafIcon = () => (\n <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M4 8h8M8 4v8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\n\nconst renderIconProp = (\n icon: TreeIconProp | undefined,\n state: TreeIconState,\n): ComponentChildren => {\n if (icon == null) return null;\n if (typeof icon === \"function\") return icon(state);\n return icon;\n};\n\nexport type ResolveTreeIconOptions = {\n state: TreeIconState;\n icon?: TreeIconProp;\n expandedIcon?: ComponentChildren;\n selectedIcon?: ComponentChildren;\n disabledIcon?: ComponentChildren;\n providerIcons?: TreeIcons;\n showFallback?: boolean;\n};\n\n/** Priority: disabledIcon → selectedIcon → expandedIcon → node icon → provider default → internal fallback */\nexport const resolveTreeIcon = ({\n state,\n icon,\n expandedIcon,\n selectedIcon,\n disabledIcon,\n providerIcons,\n showFallback = true,\n}: ResolveTreeIconOptions): ComponentChildren => {\n if (state.disabled && disabledIcon != null) return disabledIcon;\n if (state.selected && selectedIcon != null) return selectedIcon;\n if (state.branch && state.expanded && expandedIcon != null) return expandedIcon;\n\n const nodeIcon = renderIconProp(icon, state);\n if (nodeIcon != null) return nodeIcon;\n\n if (providerIcons) {\n if (state.branch) {\n if (state.expanded && providerIcons.branchExpanded != null)\n return providerIcons.branchExpanded;\n if (providerIcons.branch != null) return providerIcons.branch;\n } else if (providerIcons.leaf != null) {\n return providerIcons.leaf;\n }\n }\n\n if (!showFallback) return null;\n return state.branch ? <DefaultBranchIcon /> : <DefaultLeafIcon />;\n};\n\nexport const resolveTreeExpanderIcon = (\n expanded: boolean,\n providerIcons?: TreeIcons,\n): ComponentChildren => {\n if (expanded && providerIcons?.expanderExpanded != null) return providerIcons.expanderExpanded;\n if (!expanded && providerIcons?.expander != null) return providerIcons.expander;\n return <DefaultChevron expanded={expanded} />;\n};\n","import type { ComponentChildren, JSX, RefObject } from \"preact\";\nimport { createContext, toChildArray } from \"preact\";\nimport { useContext, useLayoutEffect, useRef } from \"preact/hooks\";\nimport { useHeightDisclosureContent } from \"../../lib/disclosure/use-height-disclosure-content\";\nimport { cn } from \"../../lib/utils\";\nimport { indentCSSValue, TreeLines } from \"./TreeLines\";\nimport {\n TreeItemContext,\n treeItemVariants,\n useTreeItemContext,\n useTreeProvider,\n} from \"./TreeProvider\";\nimport { resolveTreeExpanderIcon, resolveTreeIcon } from \"./tree-icons\";\nimport type { TreeIconProp } from \"./tree-types\";\n\nexport type TreeNodeContextValue = {\n nodeId: string;\n disabled: boolean;\n hasChildren: boolean;\n data?: unknown;\n icon?: TreeIconProp;\n expandedIcon?: ComponentChildren;\n selectedIcon?: ComponentChildren;\n disabledIcon?: ComponentChildren;\n level: number;\n parentPath: boolean[];\n isLast: boolean;\n itemRef: RefObject<HTMLDivElement>;\n};\n\nconst TreeNodeContext = createContext<TreeNodeContextValue | null>(null);\n\nexport const useTreeNodeContext = () => {\n const context = useContext(TreeNodeContext);\n if (!context) throw new Error(\"Tree node subcomponents must be used within TreeNode\");\n return context;\n};\n\nexport type TreeNodeProps = {\n nodeId: string;\n disabled?: boolean;\n data?: unknown;\n icon?: TreeIconProp;\n expandedIcon?: ComponentChildren;\n selectedIcon?: ComponentChildren;\n disabledIcon?: ComponentChildren;\n children?: ComponentChildren;\n};\n\nexport const TreeNode = ({\n nodeId,\n disabled = false,\n data,\n icon,\n expandedIcon,\n selectedIcon,\n disabledIcon,\n children,\n}: TreeNodeProps) => {\n const tree = useTreeProvider();\n const parentItem = useTreeItemContext();\n const itemRef = useRef<HTMLDivElement>(null);\n\n const childArray = toChildArray(children);\n const hasChildren = childArray.some(\n (child) =>\n child != null &&\n typeof child === \"object\" &&\n \"type\" in child &&\n typeof child.type === \"function\" &&\n (child.type as { __kamodTreeContent?: boolean }).__kamodTreeContent === true,\n );\n\n const level = parentItem ? parentItem.level + 1 : 1;\n const parentPath = parentItem ? [...parentItem.parentPath, parentItem.isLast] : [];\n\n const registryVersion = tree.registry.version.value;\n const nodeRecord = tree.registry.getNode(nodeId);\n const isLast = nodeRecord?.isLast ?? false;\n void registryVersion;\n\n useLayoutEffect(() => {\n const env = (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV;\n const existing = tree.registry.getNode(nodeId);\n if (\n env !== \"production\" &&\n existing &&\n existing.element &&\n existing.element !== itemRef.current\n ) {\n console.warn(`[kamod-ui] Duplicate Tree nodeId \"${nodeId}\" detected.`);\n }\n\n tree.registry.register({\n nodeId,\n parentId: parentItem?.nodeId ?? null,\n disabled,\n hasChildren,\n data,\n element: itemRef.current,\n level,\n });\n\n return () => {\n tree.registry.unregister(nodeId);\n };\n }, [nodeId, parentItem?.nodeId, disabled, hasChildren, data, level, tree.registry]);\n\n useLayoutEffect(() => {\n const visible = tree.registry.getVisibleActivatableIds(tree.expandedIds.value);\n if (visible.length === 0) {\n tree.tabbableId.value = null;\n return;\n }\n if (!tree.tabbableId.value || !visible.includes(tree.tabbableId.value)) {\n tree.tabbableId.value = visible[0];\n }\n }, [tree.registry.version.value, tree.expandedIds.value, tree]);\n\n const contextValue: TreeNodeContextValue = {\n nodeId,\n disabled,\n hasChildren,\n data,\n icon,\n expandedIcon,\n selectedIcon,\n disabledIcon,\n level,\n parentPath,\n isLast,\n itemRef,\n };\n\n return (\n <TreeNodeContext.Provider value={contextValue}>\n <div data-slot=\"tree-node\" data-node-id={nodeId} class=\"relative min-w-0\">\n {children}\n </div>\n </TreeNodeContext.Provider>\n );\n};\n\nexport type TreeNodeTriggerProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> & {\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const TreeNodeTrigger = ({\n class: className,\n children,\n onClick,\n onFocus,\n ...rest\n}: TreeNodeTriggerProps) => {\n const tree = useTreeProvider();\n const node = useTreeNodeContext();\n\n useLayoutEffect(() => {\n tree.registry.setElement(node.nodeId, node.itemRef.current);\n });\n\n const isExpanded = tree.expandedIds.value.has(node.nodeId);\n const isSelected = tree.selectedIds.value.has(node.nodeId);\n const isTabbable = tree.tabbableId.value === node.nodeId;\n\n const handleItemClick = (event: JSX.TargetedMouseEvent<HTMLDivElement>) => {\n if (node.disabled) return;\n tree.focusNode(node.nodeId);\n if (tree.selectionMode !== \"none\") {\n tree.selectNode(node.nodeId, {\n toggle: tree.selectionMode === \"multiple\" && (event.metaKey || event.ctrlKey),\n additive: tree.selectionMode === \"multiple\" && (event.metaKey || event.ctrlKey),\n });\n }\n onClick?.(event);\n };\n\n return (\n <div\n ref={node.itemRef}\n role=\"treeitem\"\n data-node-id={node.nodeId}\n data-slot=\"tree-node-trigger\"\n data-state={node.hasChildren ? (isExpanded ? \"open\" : \"closed\") : \"leaf\"}\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={node.disabled ? \"\" : undefined}\n data-level={node.level}\n aria-level={node.level}\n aria-expanded={node.hasChildren ? isExpanded : undefined}\n aria-selected={tree.selectionMode !== \"none\" ? isSelected : undefined}\n aria-disabled={node.disabled || undefined}\n tabIndex={node.disabled ? -1 : isTabbable ? 0 : -1}\n class={cn(\n treeItemVariants({ variant: tree.variant, size: tree.size }),\n \"relative\",\n node.disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n style={{ paddingInlineStart: `calc(${node.level} * ${indentCSSValue(tree.indent)})` }}\n onClick={handleItemClick}\n onFocus={(event) => {\n tree.focusedId.value = node.nodeId;\n tree.tabbableId.value = node.nodeId;\n onFocus?.(event);\n }}\n {...rest}\n >\n {tree.showLines ? (\n <TreeLines\n level={node.level}\n parentPath={node.parentPath}\n isLast={node.isLast}\n indent={tree.indent}\n />\n ) : null}\n {children}\n </div>\n );\n};\n\nexport type TreeExpanderProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"class\"> & {\n class?: string;\n};\n\nexport const TreeExpander = ({ class: className, ...rest }: TreeExpanderProps) => {\n const tree = useTreeProvider();\n const node = useTreeNodeContext();\n const isExpanded = tree.expandedIds.value.has(node.nodeId);\n\n const handleExpandToggle = (event: Event) => {\n event.stopPropagation();\n if (node.disabled || !node.hasChildren) return;\n tree.toggleExpanded(node.nodeId);\n };\n\n if (!node.hasChildren) {\n return <span class={cn(\"inline-flex size-4 shrink-0\", className)} aria-hidden=\"true\" />;\n }\n\n return (\n <span\n data-slot=\"tree-expander\"\n data-expanded={isExpanded ? \"true\" : \"false\"}\n data-disabled={node.disabled ? \"\" : undefined}\n class={cn(\n \"relative z-[1] inline-flex size-4 shrink-0 cursor-pointer items-center justify-center\",\n className,\n )}\n aria-hidden=\"true\"\n onClick={handleExpandToggle}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.stopPropagation();\n handleExpandToggle(event);\n }\n rest.onKeyDown?.(event);\n }}\n {...rest}\n >\n {resolveTreeExpanderIcon(isExpanded, tree.icons)}\n </span>\n );\n};\n\nexport type TreeIconProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"class\"> & {\n class?: string;\n icon?: TreeIconProp;\n expandedIcon?: ComponentChildren;\n selectedIcon?: ComponentChildren;\n disabledIcon?: ComponentChildren;\n};\n\nexport const TreeIcon = ({\n class: className,\n icon: iconProp,\n expandedIcon: expandedIconProp,\n selectedIcon: selectedIconProp,\n disabledIcon: disabledIconProp,\n ...rest\n}: TreeIconProps) => {\n const tree = useTreeProvider();\n const node = useTreeNodeContext();\n\n if (!tree.showIcons) return null;\n\n const isExpanded = tree.expandedIds.value.has(node.nodeId);\n const isSelected = tree.selectedIds.value.has(node.nodeId);\n\n const iconState = {\n nodeId: node.nodeId,\n branch: node.hasChildren,\n expanded: isExpanded,\n selected: isSelected,\n disabled: node.disabled,\n level: node.level,\n };\n\n const hasIconSlot =\n iconProp != null ||\n node.icon != null ||\n node.expandedIcon != null ||\n node.selectedIcon != null ||\n node.disabledIcon != null ||\n expandedIconProp != null ||\n selectedIconProp != null ||\n disabledIconProp != null ||\n tree.icons != null;\n\n if (!hasIconSlot) return null;\n\n const content = resolveTreeIcon({\n state: iconState,\n icon: iconProp ?? node.icon,\n expandedIcon: expandedIconProp ?? node.expandedIcon,\n selectedIcon: selectedIconProp ?? node.selectedIcon,\n disabledIcon: disabledIconProp ?? node.disabledIcon,\n providerIcons: tree.icons,\n showFallback: tree.icons != null,\n });\n\n return (\n <span\n data-slot=\"tree-icon\"\n data-expanded={isExpanded ? \"true\" : \"false\"}\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={node.disabled ? \"\" : undefined}\n class={cn(\n \"relative z-[1] inline-flex size-4 shrink-0 items-center justify-center [&_svg]:size-4\",\n className,\n )}\n aria-hidden=\"true\"\n {...rest}\n >\n {content}\n </span>\n );\n};\n\nexport type TreeLabelProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"class\"> & {\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const TreeLabel = ({ class: className, children, ...rest }: TreeLabelProps) => (\n <span\n data-slot=\"tree-label\"\n class={cn(\"relative z-[1] min-w-0 flex-1 truncate text-start\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n\nexport type TreeNodeActionsProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"class\"> & {\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const TreeNodeActions = ({\n class: className,\n children,\n onClick,\n onKeyDown,\n ...rest\n}: TreeNodeActionsProps) => (\n <span\n data-slot=\"tree-node-actions\"\n class={cn(\"relative z-[1] ms-auto inline-flex shrink-0 items-center gap-1\", className)}\n onClick={(event) => {\n event.stopPropagation();\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n </span>\n);\n\nexport type TreeNodeContentProps = {\n children?: ComponentChildren;\n class?: string;\n};\n\nexport const TreeNodeContent = ({ children, class: className }: TreeNodeContentProps) => {\n const tree = useTreeProvider();\n const node = useTreeNodeContext();\n const isExpanded = tree.expandedIds.value.has(node.nodeId);\n\n const {\n allowRender,\n isAnimatingClose,\n isAnimatingOpen,\n outerRef,\n innerRef,\n handleTransitionEnd,\n } = useHeightDisclosureContent({\n open: isExpanded,\n forceMount: !tree.animateExpand,\n });\n\n const showBranch = node.hasChildren && (tree.animateExpand ? allowRender : isExpanded);\n\n if (!node.hasChildren) return null;\n\n const itemContextValue = {\n nodeId: node.nodeId,\n level: node.level,\n parentPath: node.parentPath,\n isLast: node.isLast,\n };\n\n return (\n <div\n role=\"group\"\n data-slot=\"tree-node-content\"\n class={className}\n hidden={!showBranch && !isAnimatingClose}\n aria-hidden={!isExpanded && !isAnimatingClose}\n >\n {tree.animateExpand ? (\n <div\n ref={outerRef}\n data-slot=\"tree-node-content-outer\"\n data-state={isExpanded ? \"open\" : \"closed\"}\n onTransitionEnd={handleTransitionEnd}\n class={cn(\n \"min-h-0 overflow-hidden\",\n (isAnimatingOpen || isAnimatingClose) && \"will-change-[height]\",\n )}\n inert={!isExpanded || undefined}\n >\n <div ref={innerRef} data-slot=\"tree-node-content-inner\">\n <TreeItemContext.Provider value={itemContextValue}>{children}</TreeItemContext.Provider>\n </div>\n </div>\n ) : isExpanded ? (\n <TreeItemContext.Provider value={itemContextValue}>{children}</TreeItemContext.Provider>\n ) : null}\n </div>\n );\n};\n\nTreeNodeContent.__kamodTreeContent = true;\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { toChildArray } from \"preact\";\nimport {\n TreeExpander,\n TreeIcon,\n TreeLabel,\n TreeNode,\n TreeNodeActions,\n TreeNodeContent,\n TreeNodeTrigger,\n} from \"./TreeNode\";\nimport type { TreeIconProp } from \"./tree-types\";\n\nexport type TreeItemProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"class\"> & {\n nodeId: string;\n label: ComponentChildren;\n icon?: TreeIconProp;\n expandedIcon?: ComponentChildren;\n selectedIcon?: ComponentChildren;\n disabledIcon?: ComponentChildren;\n endContent?: ComponentChildren;\n data?: unknown;\n disabled?: boolean;\n class?: string;\n children?: ComponentChildren;\n};\n\nexport const TreeItem = ({\n nodeId,\n label,\n icon,\n expandedIcon,\n selectedIcon,\n disabledIcon,\n endContent,\n data,\n disabled = false,\n class: className,\n children,\n ...rest\n}: TreeItemProps) => {\n const childArray = toChildArray(children);\n const hasChildren = childArray.length > 0;\n\n return (\n <TreeNode\n nodeId={nodeId}\n disabled={disabled}\n data={data}\n icon={icon}\n expandedIcon={expandedIcon}\n selectedIcon={selectedIcon}\n disabledIcon={disabledIcon}\n >\n <TreeNodeTrigger class={className} {...rest}>\n <TreeExpander />\n <TreeIcon />\n <TreeLabel>{label}</TreeLabel>\n {endContent ? <TreeNodeActions>{endContent}</TreeNodeActions> : null}\n </TreeNodeTrigger>\n {hasChildren ? <TreeNodeContent>{children}</TreeNodeContent> : null}\n </TreeNode>\n );\n};\n","import { Tree } from \"./Tree\";\nimport { TreeItem } from \"./TreeItem\";\nimport { TreeLines } from \"./TreeLines\";\nimport {\n TreeExpander,\n TreeIcon,\n TreeLabel,\n TreeNode,\n TreeNodeActions,\n TreeNodeContent,\n TreeNodeTrigger,\n useTreeNodeContext,\n} from \"./TreeNode\";\nimport {\n TreeProvider,\n treeItemVariants,\n treeVariants,\n useTreeItemContext,\n useTreeProvider,\n} from \"./TreeProvider\";\n\nexport type { TreeProps } from \"./Tree\";\nexport type { TreeItemProps } from \"./TreeItem\";\nexport type { TreeLinesProps } from \"./TreeLines\";\nexport type {\n TreeExpanderProps,\n TreeIconProps,\n TreeLabelProps,\n TreeNodeActionsProps,\n TreeNodeContentProps,\n TreeNodeContextValue,\n TreeNodeProps,\n TreeNodeTriggerProps,\n} from \"./TreeNode\";\nexport type {\n TreeItemContextValue,\n TreeProviderContextValue,\n TreeProviderProps,\n TreeSelectionMode,\n} from \"./TreeProvider\";\nexport type { TreeIconProp, TreeIconRender, TreeIconState, TreeIcons } from \"./tree-types\";\nexport {\n Tree,\n TreeExpander,\n TreeIcon,\n TreeItem,\n TreeLabel,\n TreeLines,\n TreeNode,\n TreeNodeActions,\n TreeNodeContent,\n TreeNodeTrigger,\n TreeProvider,\n treeItemVariants,\n treeVariants,\n useTreeItemContext,\n useTreeNodeContext,\n useTreeProvider,\n};\n\nexport default {\n Provider: TreeProvider,\n Root: Tree,\n Item: TreeItem,\n Node: TreeNode,\n NodeTrigger: TreeNodeTrigger,\n Expander: TreeExpander,\n Icon: TreeIcon,\n Label: TreeLabel,\n NodeActions: TreeNodeActions,\n NodeContent: TreeNodeContent,\n Lines: TreeLines,\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { Spinner } from './chunk-NKKMM6CK.js';
2
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { Spinner } from './chunk-3AFRSB5R.js';
2
+ import { cn } from './chunk-XIANSPQO.js';
3
3
  import { signal } from '@preact/signals';
4
4
  import { jsxs, jsx } from 'preact/jsx-runtime';
5
5
 
@@ -100,5 +100,5 @@ var DropzoneUploadIndicator = ({
100
100
  );
101
101
 
102
102
  export { Dropzone, DropzoneFilesList, DropzoneLoadingIndicator, DropzoneUploadIndicator };
103
- //# sourceMappingURL=chunk-PFV7YIEP.js.map
104
- //# sourceMappingURL=chunk-PFV7YIEP.js.map
103
+ //# sourceMappingURL=chunk-Z4JNYSV3.js.map
104
+ //# sourceMappingURL=chunk-Z4JNYSV3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/dropzone/Dropzone.tsx","../src/components/dropzone/DropzoneFilesList.tsx","../src/components/dropzone/DropzoneLoadingIndicator.tsx","../src/components/dropzone/DropzoneUploadIndicator.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-PFV7YIEP.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX, TargetedDragEvent } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneProps = JSX.HTMLAttributes<HTMLDivElement> & {\n accept?: string;\n multiple?: boolean;\n onFilesChange?: (files: File[]) => void;\n children?: ComponentChildren;\n};\n\nexport const Dropzone = ({\n accept,\n multiple = true,\n onFilesChange,\n class: className,\n children,\n ...rest\n}: DropzoneProps) => {\n const isDragging = signal(false);\n\n const readFiles = (list: FileList | null) => {\n const files = list ? Array.from(list) : [];\n onFilesChange?.(files);\n };\n\n const onDragOver = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = true;\n };\n\n const onDragLeave = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = false;\n };\n\n const onDrop = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = false;\n readFiles(event.dataTransfer?.files ?? null);\n };\n\n return (\n <div\n data-slot=\"dropzone\"\n data-dragging={isDragging.value ? \"true\" : \"false\"}\n class={cn(\n \"border-input bg-background hover:bg-muted/50 relative rounded-lg border border-dashed p-5 transition-colors\",\n isDragging.value && \"border-primary bg-primary/5\",\n className,\n )}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n onDrop={onDrop}\n {...rest}\n >\n <input\n data-slot=\"dropzone-input\"\n type=\"file\"\n accept={accept}\n multiple={multiple}\n class=\"absolute inset-0 cursor-pointer opacity-0\"\n onChange={(event) => readFiles((event.currentTarget as HTMLInputElement).files)}\n />\n {children}\n </div>\n );\n};\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneFilesListProps = JSX.HTMLAttributes<HTMLUListElement> & {\n files: File[];\n};\n\nexport const DropzoneFilesList = ({ files, class: className, ...rest }: DropzoneFilesListProps) => (\n <ul\n data-slot=\"dropzone-files-list\"\n class={cn(\"text-muted-foreground mt-2 grid gap-1 text-sm\", className)}\n {...rest}\n >\n {files.map((file) => (\n <li key={file.name}>{file.name}</li>\n ))}\n </ul>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { Spinner } from \"../spinner\";\n\nexport type DropzoneLoadingIndicatorProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropzoneLoadingIndicator = ({\n class: className,\n children = \"Uploading...\",\n ...rest\n}: DropzoneLoadingIndicatorProps) => (\n <div\n data-slot=\"dropzone-loading-indicator\"\n class={cn(\"inline-flex items-center gap-2 text-sm\", className)}\n {...rest}\n >\n <Spinner size=\"sm\" />\n <span>{children}</span>\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneUploadIndicatorProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropzoneUploadIndicator = ({\n class: className,\n children = \"Drop files here or click to upload\",\n ...rest\n}: DropzoneUploadIndicatorProps) => (\n <div\n data-slot=\"dropzone-upload-indicator\"\n class={cn(\"text-muted-foreground text-sm\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n"]}
1
+ {"version":3,"sources":["../src/components/dropzone/Dropzone.tsx","../src/components/dropzone/DropzoneFilesList.tsx","../src/components/dropzone/DropzoneLoadingIndicator.tsx","../src/components/dropzone/DropzoneUploadIndicator.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-Z4JNYSV3.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX, TargetedDragEvent } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneProps = JSX.HTMLAttributes<HTMLDivElement> & {\n accept?: string;\n multiple?: boolean;\n onFilesChange?: (files: File[]) => void;\n children?: ComponentChildren;\n};\n\nexport const Dropzone = ({\n accept,\n multiple = true,\n onFilesChange,\n class: className,\n children,\n ...rest\n}: DropzoneProps) => {\n const isDragging = signal(false);\n\n const readFiles = (list: FileList | null) => {\n const files = list ? Array.from(list) : [];\n onFilesChange?.(files);\n };\n\n const onDragOver = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = true;\n };\n\n const onDragLeave = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = false;\n };\n\n const onDrop = (event: TargetedDragEvent<HTMLDivElement>) => {\n event.preventDefault();\n isDragging.value = false;\n readFiles(event.dataTransfer?.files ?? null);\n };\n\n return (\n <div\n data-slot=\"dropzone\"\n data-dragging={isDragging.value ? \"true\" : \"false\"}\n class={cn(\n \"border-input bg-background hover:bg-muted/50 relative rounded-lg border border-dashed p-5 transition-colors\",\n isDragging.value && \"border-primary bg-primary/5\",\n className,\n )}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n onDrop={onDrop}\n {...rest}\n >\n <input\n data-slot=\"dropzone-input\"\n type=\"file\"\n accept={accept}\n multiple={multiple}\n class=\"absolute inset-0 cursor-pointer opacity-0\"\n onChange={(event) => readFiles((event.currentTarget as HTMLInputElement).files)}\n />\n {children}\n </div>\n );\n};\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneFilesListProps = JSX.HTMLAttributes<HTMLUListElement> & {\n files: File[];\n};\n\nexport const DropzoneFilesList = ({ files, class: className, ...rest }: DropzoneFilesListProps) => (\n <ul\n data-slot=\"dropzone-files-list\"\n class={cn(\"text-muted-foreground mt-2 grid gap-1 text-sm\", className)}\n {...rest}\n >\n {files.map((file) => (\n <li key={file.name}>{file.name}</li>\n ))}\n </ul>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { Spinner } from \"../spinner\";\n\nexport type DropzoneLoadingIndicatorProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropzoneLoadingIndicator = ({\n class: className,\n children = \"Uploading...\",\n ...rest\n}: DropzoneLoadingIndicatorProps) => (\n <div\n data-slot=\"dropzone-loading-indicator\"\n class={cn(\"inline-flex items-center gap-2 text-sm\", className)}\n {...rest}\n >\n <Spinner size=\"sm\" />\n <span>{children}</span>\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type DropzoneUploadIndicatorProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const DropzoneUploadIndicator = ({\n class: className,\n children = \"Drop files here or click to upload\",\n ...rest\n}: DropzoneUploadIndicatorProps) => (\n <div\n data-slot=\"dropzone-upload-indicator\"\n class={cn(\"text-muted-foreground text-sm\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n"]}
@@ -1,5 +1,5 @@
1
- import { createIdFactory, createDismissableLayer } from './chunk-PPYJQNE5.js';
2
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { createIdFactory, createDismissableLayer } from './chunk-3XMFQKWB.js';
2
+ import { cn } from './chunk-XIANSPQO.js';
3
3
  import { signal } from '@preact/signals';
4
4
  import { createContext } from 'preact';
5
5
  import { useRef, useMemo, useEffect, useContext } from 'preact/hooks';
@@ -506,5 +506,5 @@ var select_default = {
506
506
  };
507
507
 
508
508
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSearch, SelectSeparator, SelectTrigger, SelectValue, select_default };
509
- //# sourceMappingURL=chunk-4V3WHQJE.js.map
510
- //# sourceMappingURL=chunk-4V3WHQJE.js.map
509
+ //# sourceMappingURL=chunk-ZLSCHWTN.js.map
510
+ //# sourceMappingURL=chunk-ZLSCHWTN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/select/Select.tsx","../src/components/select/SelectContent.tsx","../src/components/select/SelectGroup.tsx","../src/components/select/SelectItem.tsx","../src/components/select/SelectLabel.tsx","../src/components/select/SelectSearch.tsx","../src/components/select/SelectSeparator.tsx","../src/components/select/SelectTrigger.tsx","../src/components/select/SelectValue.tsx","../src/components/select/index.ts"],"names":["value","jsx","useRef","useMemo","useEffect"],"mappings":"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","file":"chunk-4V3WHQJE.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer, createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\n\ntype SelectItemRecord = {\n id: string;\n value: string;\n ref: HTMLDivElement | null;\n disabled: boolean;\n};\n\ntype SelectContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n selectedValue: ReturnType<typeof signal<string | null>>;\n activeItemId: ReturnType<typeof signal<string | null>>;\n triggerId: string;\n contentId: string;\n setOpen: (next: boolean) => void;\n setSelected: (value: string) => void;\n openAndFocus: (target: \"selected\" | \"first\" | \"last\") => void;\n closeAndFocusTrigger: () => void;\n registerItem: (item: SelectItemRecord) => void;\n unregisterItem: (id: string) => void;\n setActiveItemId: (id: string | null) => void;\n moveActive: (direction: \"next\" | \"prev\" | \"first\" | \"last\") => void;\n focusActiveItem: () => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n};\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nexport const useSelect = () => {\n const context = useContext(SelectContext);\n if (!context) throw new Error(\"Select subcomponents must be used within Select\");\n return context;\n};\n\nexport type SelectProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n children?: ComponentChildren;\n};\n\nexport const Select = ({\n defaultValue,\n value,\n onValueChange,\n children,\n class: className,\n ...rest\n}: SelectProps) => {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const itemsRef = useRef<SelectItemRecord[]>([]);\n const idFactory = useMemo(() => createIdFactory(\"select\"), []);\n const triggerId = useMemo(() => idFactory(), [idFactory]);\n const contentId = useMemo(() => idFactory(), [idFactory]);\n\n const open = useMemo(() => signal(false), []);\n const isControlled = typeof value === \"string\";\n const selectedValue = useMemo(() => signal<string | null>(value ?? defaultValue ?? null), []);\n const activeItemId = useMemo(() => signal<string | null>(null), []);\n\n useEffect(() => {\n if (isControlled) {\n selectedValue.value = value ?? null;\n }\n }, [isControlled, value]);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => open.value,\n onDismiss: () => {\n open.value = false;\n activeItemId.value = null;\n },\n });\n return () => layer.dispose();\n }, []);\n\n const getEnabledItems = () =>\n itemsRef.current.filter((item) => !item.disabled && item.ref && item.ref.isConnected);\n\n const focusActiveItem = () => {\n const active = itemsRef.current.find(\n (item) => item.id === activeItemId.value && !item.disabled,\n );\n active?.ref?.focus();\n };\n\n const setActiveFromTarget = (target: \"selected\" | \"first\" | \"last\") => {\n const enabledItems = getEnabledItems();\n if (enabledItems.length === 0) {\n activeItemId.value = null;\n return;\n }\n\n if (target === \"first\") {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n if (target === \"last\") {\n activeItemId.value = enabledItems[enabledItems.length - 1]?.id ?? null;\n return;\n }\n\n const selected = enabledItems.find((item) => item.value === selectedValue.value);\n activeItemId.value = selected?.id ?? enabledItems[0]?.id ?? null;\n };\n\n const moveActive = (direction: \"next\" | \"prev\" | \"first\" | \"last\") => {\n const enabledItems = getEnabledItems();\n if (enabledItems.length === 0) {\n activeItemId.value = null;\n return;\n }\n\n if (direction === \"first\") {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n if (direction === \"last\") {\n activeItemId.value = enabledItems[enabledItems.length - 1]?.id ?? null;\n return;\n }\n\n const currentIndex = enabledItems.findIndex((item) => item.id === activeItemId.value);\n if (currentIndex < 0) {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n const offset = direction === \"next\" ? 1 : -1;\n const nextIndex = (currentIndex + offset + enabledItems.length) % enabledItems.length;\n activeItemId.value = enabledItems[nextIndex]?.id ?? null;\n };\n\n const setSelected = (value: string) => {\n if (!isControlled) {\n selectedValue.value = value;\n }\n onValueChange?.(value);\n open.value = false;\n activeItemId.value = null;\n };\n\n useEffect(() => {\n if (!open.value) return;\n setActiveFromTarget(\"selected\");\n }, [open.value, selectedValue.value]);\n\n const openAndFocus = (target: \"selected\" | \"first\" | \"last\") => {\n open.value = true;\n setActiveFromTarget(target);\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(() => focusActiveItem());\n } else {\n focusActiveItem();\n }\n };\n\n const closeAndFocusTrigger = () => {\n open.value = false;\n activeItemId.value = null;\n triggerRef.current?.focus();\n };\n\n const registerItem = (item: SelectItemRecord) => {\n const index = itemsRef.current.findIndex((entry) => entry.id === item.id);\n if (index >= 0) {\n const next = [...itemsRef.current];\n next[index] = item;\n itemsRef.current = next;\n } else {\n itemsRef.current = [...itemsRef.current, item];\n }\n\n if (open.value && activeItemId.value === null && !item.disabled && item.ref?.isConnected) {\n if (selectedValue.value === item.value || selectedValue.value === null) {\n activeItemId.value = item.id;\n }\n }\n };\n\n const unregisterItem = (id: string) => {\n itemsRef.current = itemsRef.current.filter((item) => item.id !== id);\n if (activeItemId.value === id) {\n activeItemId.value = null;\n }\n };\n\n return (\n <SelectContext.Provider\n value={{\n open,\n selectedValue,\n activeItemId,\n triggerId,\n contentId,\n setOpen: (next) => {\n open.value = next;\n if (!next) activeItemId.value = null;\n },\n setSelected,\n openAndFocus,\n closeAndFocusTrigger,\n registerItem,\n unregisterItem,\n setActiveItemId: (id) => {\n activeItemId.value = id;\n },\n moveActive,\n focusActiveItem,\n setTriggerNode: (node) => {\n triggerRef.current = node;\n },\n }}\n >\n <div\n ref={rootRef}\n class={cn(\"relative\", className)}\n data-slot=\"select\"\n data-state={open.value ? \"open\" : \"closed\"}\n {...rest}\n >\n {children}\n </div>\n </SelectContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n forceMount?: boolean;\n children?: ComponentChildren;\n};\n\nexport const SelectContent = ({\n forceMount = false,\n children,\n onKeyDown,\n class: className,\n ...rest\n}: SelectContentProps) => {\n const select = useSelect();\n\n if (!select.open.value && !forceMount) return null;\n return (\n <div\n id={select.contentId}\n role=\"listbox\"\n aria-labelledby={select.triggerId}\n tabIndex={-1}\n data-slot=\"select-content\"\n data-state={select.open.value ? \"open\" : \"closed\"}\n aria-activedescendant={select.activeItemId.value ?? undefined}\n class={cn(\n \"bg-popover text-popover-foreground absolute left-0 right-0 top-full z-50 mt-1 flex max-h-72 flex-col overflow-hidden rounded-md border border-border p-1 shadow-md\",\n className,\n )}\n onKeyDown={(event) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n select.moveActive(\"next\");\n select.focusActiveItem();\n break;\n case \"ArrowUp\":\n event.preventDefault();\n select.moveActive(\"prev\");\n select.focusActiveItem();\n break;\n case \"Home\":\n event.preventDefault();\n select.moveActive(\"first\");\n select.focusActiveItem();\n break;\n case \"End\":\n event.preventDefault();\n select.moveActive(\"last\");\n select.focusActiveItem();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (select.activeItemId.value) {\n const active = document.getElementById(\n select.activeItemId.value,\n ) as HTMLDivElement | null;\n active?.click();\n }\n break;\n case \"Escape\":\n event.preventDefault();\n select.closeAndFocusTrigger();\n break;\n case \"Tab\":\n select.setOpen(false);\n break;\n default:\n break;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {/* Padding lives on the outer shell; scrolling on the inner viewport avoids asymmetric layout when a scrollbar is present (padding + gutter on one element skews highlights). */}\n <div\n data-slot=\"select-viewport\"\n class={cn(\n \"flex min-h-0 min-w-0 flex-1 flex-col items-stretch overflow-x-hidden overflow-y-auto\",\n /* Classic scrollbars steal inline-end width → uneven highlight vs. padding. Hide bar; list still scrolls (wheel, trackpad, touch, Arrow/Home/End). */\n \"[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\",\n )}\n >\n {children}\n </div>\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectGroup = ({ children, class: className, ...rest }: SelectGroupProps) => (\n <div data-slot=\"select-group\" class={cn(\"p-1\", className)} {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectItemProps = JSX.HTMLAttributes<HTMLDivElement> & {\n value: string;\n disabled?: boolean;\n children?: ComponentChildren;\n};\n\nexport const SelectItem = ({\n value,\n disabled = false,\n children,\n id,\n onClick,\n onFocus,\n onKeyDown,\n onMouseMove,\n class: className,\n ...rest\n}: SelectItemProps) => {\n const select = useSelect();\n const itemRef = useRef<HTMLDivElement | null>(null);\n const autoIdFactory = useMemo(() => createIdFactory(\"select-item\"), []);\n const explicitId = typeof id === \"string\" ? id : undefined;\n const itemId = useMemo(() => autoIdFactory(explicitId), [autoIdFactory, explicitId]);\n const selected = select.selectedValue.value === value;\n const active = select.activeItemId.value === itemId;\n\n useEffect(() => {\n select.registerItem({\n id: itemId,\n value,\n ref: itemRef.current,\n disabled,\n });\n return () => {\n select.unregisterItem(itemId);\n };\n }, [itemId, value, disabled]);\n\n return (\n <div\n ref={itemRef}\n id={itemId}\n role=\"option\"\n data-slot=\"select-item\"\n data-highlighted={active ? \"true\" : undefined}\n data-disabled={disabled ? \"true\" : undefined}\n data-state={selected ? \"checked\" : \"unchecked\"}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : active ? 0 : -1}\n class={cn(\n \"relative flex w-full min-w-0 shrink-0 cursor-default select-none items-center rounded-none px-2 py-1.5 text-sm outline-none transition-colors [-webkit-tap-highlight-color:transparent]\",\n /* Solid full-row fill (no rounded corners that read as “gaps” against the popover) */\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"data-[highlighted=true]:bg-accent data-[highlighted=true]:text-accent-foreground\",\n selected && \"font-medium\",\n className,\n )}\n onFocus={(event) => {\n if (!disabled) select.setActiveItemId(itemId);\n onFocus?.(event);\n }}\n onMouseMove={(event) => {\n if (!disabled) select.setActiveItemId(itemId);\n onMouseMove?.(event);\n }}\n onKeyDown={(event) => {\n if (disabled) {\n onKeyDown?.(event);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select.setSelected(value);\n select.closeAndFocusTrigger();\n }\n onKeyDown?.(event);\n }}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n select.setSelected(value);\n onClick?.(event as unknown as JSX.TargetedMouseEvent<HTMLDivElement>);\n select.closeAndFocusTrigger();\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectLabelProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectLabel = ({ children, class: className, ...rest }: SelectLabelProps) => (\n <div\n data-slot=\"select-label\"\n class={cn(\"text-muted-foreground px-2 py-1.5 text-xs font-semibold\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectSearchProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\nexport const SelectSearch = ({ class: className, ...rest }: SelectSearchProps) => (\n <input\n type=\"text\"\n data-slot=\"select-search\"\n class={cn(\n \"border-input bg-background placeholder:text-muted-foreground focus:ring-ring mb-1 h-8 w-full rounded-md border px-2.5 text-sm outline-none focus:ring-2\",\n className,\n )}\n {...rest}\n />\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectSeparatorProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const SelectSeparator = ({ class: className, ...rest }: SelectSeparatorProps) => (\n <div\n role=\"separator\"\n data-slot=\"select-separator\"\n class={cn(\"bg-border my-1 h-px w-full shrink-0\", className)}\n {...rest}\n />\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectTrigger = ({\n children,\n onClick,\n onKeyDown,\n ref,\n class: className,\n ...rest\n}: SelectTriggerProps) => {\n const select = useSelect();\n\n const setRefs = (node: HTMLButtonElement | null) => {\n select.setTriggerNode(node);\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n if (ref && typeof ref === \"object\") {\n ref.current = node;\n }\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n data-slot=\"select-trigger\"\n id={select.triggerId}\n aria-haspopup=\"listbox\"\n aria-controls={select.contentId}\n aria-expanded={select.open.value}\n data-state={select.open.value ? \"open\" : \"closed\"}\n class={cn(\n \"border-input bg-background dark:bg-input/30 placeholder:text-muted-foreground flex h-8 w-full items-center justify-between gap-2 rounded-md border px-3 py-1 text-sm shadow-xs outline-none transition-[color,box-shadow]\",\n \"hover:border-foreground/15\",\n \"focus-visible:border-outline focus-visible:ring-3 focus-visible:ring-outline/50\",\n \"data-[state=open]:border-outline data-[state=open]:ring-3 data-[state=open]:ring-outline/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n onClick={(event) => {\n select.setOpen(!select.open.value);\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"selected\");\n } else {\n select.moveActive(\"next\");\n select.focusActiveItem();\n }\n break;\n case \"ArrowUp\":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"last\");\n } else {\n select.moveActive(\"prev\");\n select.focusActiveItem();\n }\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"selected\");\n }\n break;\n default:\n break;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n <span\n aria-hidden=\"true\"\n class=\"text-muted-foreground pointer-events-none size-4 shrink-0 opacity-50\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </button>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectValueProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n placeholder?: string;\n children?: ComponentChildren;\n};\n\nexport const SelectValue = ({\n placeholder = \"Select\",\n children,\n class: className,\n ...rest\n}: SelectValueProps) => {\n const select = useSelect();\n return (\n <span data-slot=\"select-value\" class={cn(\"line-clamp-1 text-left\", className)} {...rest}>\n {children ?? select.selectedValue.value ?? placeholder}\n </span>\n );\n};\n","import { Select } from \"./Select\";\nimport { SelectContent } from \"./SelectContent\";\nimport { SelectGroup } from \"./SelectGroup\";\nimport { SelectItem } from \"./SelectItem\";\nimport { SelectLabel } from \"./SelectLabel\";\nimport { SelectSearch } from \"./SelectSearch\";\nimport { SelectSeparator } from \"./SelectSeparator\";\nimport { SelectTrigger } from \"./SelectTrigger\";\nimport { SelectValue } from \"./SelectValue\";\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectSearch,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n\nexport default {\n Root: Select,\n Trigger: SelectTrigger,\n Content: SelectContent,\n Group: SelectGroup,\n Item: SelectItem,\n Label: SelectLabel,\n Search: SelectSearch,\n Separator: SelectSeparator,\n Value: SelectValue,\n};\n"]}
1
+ {"version":3,"sources":["../src/components/select/Select.tsx","../src/components/select/SelectContent.tsx","../src/components/select/SelectGroup.tsx","../src/components/select/SelectItem.tsx","../src/components/select/SelectLabel.tsx","../src/components/select/SelectSearch.tsx","../src/components/select/SelectSeparator.tsx","../src/components/select/SelectTrigger.tsx","../src/components/select/SelectValue.tsx","../src/components/select/index.ts"],"names":["value","jsx","useRef","useMemo","useEffect"],"mappings":";;;;;;;AAgCA,IAAM,aAAA,GAAgB,cAAyC,IAAI,CAAA;AAE5D,IAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,OAAA,GAAU,WAAW,aAAa,CAAA;AACxC,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAC/E,EAAA,OAAO,OAAA;AACT,CAAA;AASO,IAAM,SAAS,CAAC;AAAA,EACrB,YAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAAmB;AACjB,EAAA,MAAM,OAAA,GAAU,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,OAAiC,IAAI,CAAA;AACxD,EAAA,MAAM,QAAA,GAAW,MAAA,CAA2B,EAAE,CAAA;AAC9C,EAAA,MAAM,YAAY,OAAA,CAAQ,MAAM,gBAAgB,QAAQ,CAAA,EAAG,EAAE,CAAA;AAC7D,EAAA,MAAM,YAAY,OAAA,CAAQ,MAAM,WAAU,EAAG,CAAC,SAAS,CAAC,CAAA;AACxD,EAAA,MAAM,YAAY,OAAA,CAAQ,MAAM,WAAU,EAAG,CAAC,SAAS,CAAC,CAAA;AAExD,EAAA,MAAM,OAAO,OAAA,CAAQ,MAAM,OAAO,KAAK,CAAA,EAAG,EAAE,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAAU,QAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM,MAAA,CAAsB,SAAS,YAAA,IAAgB,IAAI,CAAA,EAAG,EAAE,CAAA;AAC5F,EAAA,MAAM,eAAe,OAAA,CAAQ,MAAM,OAAsB,IAAI,CAAA,EAAG,EAAE,CAAA;AAElE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,aAAA,CAAc,QAAQ,KAAA,IAAS,IAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,KAAK,CAAC,CAAA;AAExB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAQ,sBAAA,CAAuB;AAAA,MACnC,IAAA,EAAM,MAAM,OAAA,CAAQ,OAAA;AAAA,MACpB,IAAA,EAAM,MAAM,IAAA,CAAK,KAAA;AAAA,MACjB,WAAW,MAAM;AACf,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AAAA,MACvB;AAAA,KACD,CAAA;AACD,IAAA,OAAO,MAAM,MAAM,OAAA,EAAQ;AAAA,EAC7B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,eAAA,GAAkB,MACtB,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,GAAA,IAAO,IAAA,CAAK,IAAI,WAAW,CAAA;AAEtF,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,MAAA,GAAS,SAAS,OAAA,CAAQ,IAAA;AAAA,MAC9B,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,YAAA,CAAa,KAAA,IAAS,CAAC,IAAA,CAAK;AAAA,KACpD;AACA,IAAA,MAAA,EAAQ,KAAK,KAAA,EAAM;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,MAAA,KAA0C;AACrE,IAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,MAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,YAAA,CAAa,KAAA,GAAQ,YAAA,CAAa,CAAC,CAAA,EAAG,EAAA,IAAM,IAAA;AAC5C,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,YAAA,CAAa,QAAQ,YAAA,CAAa,YAAA,CAAa,MAAA,GAAS,CAAC,GAAG,EAAA,IAAM,IAAA;AAClE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,aAAa,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,KAAA,KAAU,cAAc,KAAK,CAAA;AAC/E,IAAA,YAAA,CAAa,QAAQ,QAAA,EAAU,EAAA,IAAM,YAAA,CAAa,CAAC,GAAG,EAAA,IAAM,IAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAkD;AACpE,IAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,MAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,YAAA,CAAa,KAAA,GAAQ,YAAA,CAAa,CAAC,CAAA,EAAG,EAAA,IAAM,IAAA;AAC5C,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,YAAA,CAAa,QAAQ,YAAA,CAAa,YAAA,CAAa,MAAA,GAAS,CAAC,GAAG,EAAA,IAAM,IAAA;AAClE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,YAAA,GAAe,aAAa,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,EAAA,KAAO,aAAa,KAAK,CAAA;AACpF,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,YAAA,CAAa,KAAA,GAAQ,YAAA,CAAa,CAAC,CAAA,EAAG,EAAA,IAAM,IAAA;AAC5C,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,SAAA,KAAc,MAAA,GAAS,CAAA,GAAI,EAAA;AAC1C,IAAA,MAAM,SAAA,GAAA,CAAa,YAAA,GAAe,MAAA,GAAS,YAAA,CAAa,UAAU,YAAA,CAAa,MAAA;AAC/E,IAAA,YAAA,CAAa,KAAA,GAAQ,YAAA,CAAa,SAAS,CAAA,EAAG,EAAA,IAAM,IAAA;AAAA,EACtD,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAACA,MAAAA,KAAkB;AACrC,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,aAAA,CAAc,KAAA,GAAQA,MAAAA;AAAA,IACxB;AACA,IAAA,aAAA,GAAgBA,MAAK,CAAA;AACrB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,IAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AAAA,EACvB,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACjB,IAAA,mBAAA,CAAoB,UAAU,CAAA;AAAA,EAChC,GAAG,CAAC,IAAA,CAAK,KAAA,EAAO,aAAA,CAAc,KAAK,CAAC,CAAA;AAEpC,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAA0C;AAC9D,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,IAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,IAAA,IAAI,OAAO,0BAA0B,UAAA,EAAY;AAC/C,MAAA,qBAAA,CAAsB,MAAM,iBAAiB,CAAA;AAAA,IAC/C,CAAA,MAAO;AACL,MAAA,eAAA,EAAgB;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,IAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AACrB,IAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,EAC5B,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA2B;AAC/C,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,CAAQ,SAAA,CAAU,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO,IAAA,CAAK,EAAE,CAAA;AACxE,IAAA,IAAI,SAAS,CAAA,EAAG;AACd,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,QAAA,CAAS,OAAO,CAAA;AACjC,MAAA,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA;AACd,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,OAAA,GAAU,CAAC,GAAG,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA,IAC/C;AAEA,IAAA,IAAI,IAAA,CAAK,KAAA,IAAS,YAAA,CAAa,KAAA,KAAU,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,GAAA,EAAK,WAAA,EAAa;AACxF,MAAA,IAAI,cAAc,KAAA,KAAU,IAAA,CAAK,KAAA,IAAS,aAAA,CAAc,UAAU,IAAA,EAAM;AACtE,QAAA,YAAA,CAAa,QAAQ,IAAA,CAAK,EAAA;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,EAAA,KAAe;AACrC,IAAA,QAAA,CAAS,OAAA,GAAU,SAAS,OAAA,CAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,EAAE,CAAA;AACnE,IAAA,IAAI,YAAA,CAAa,UAAU,EAAA,EAAI;AAC7B,MAAA,YAAA,CAAa,KAAA,GAAQ,IAAA;AAAA,IACvB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA,CAAc,QAAA;AAAA,IAAd;AAAA,MACC,KAAA,EAAO;AAAA,QACL,IAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,EAAS,CAAC,IAAA,KAAS;AACjB,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,UAAA,IAAI,CAAC,IAAA,EAAM,YAAA,CAAa,KAAA,GAAQ,IAAA;AAAA,QAClC,CAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,eAAA,EAAiB,CAAC,EAAA,KAAO;AACvB,UAAA,YAAA,CAAa,KAAA,GAAQ,EAAA;AAAA,QACvB,CAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA,EAAgB,CAAC,IAAA,KAAS;AACxB,UAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AAAA,QACvB;AAAA,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,OAAA;AAAA,UACL,KAAA,EAAO,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,UAC/B,WAAA,EAAU,QAAA;AAAA,UACV,YAAA,EAAY,IAAA,CAAK,KAAA,GAAQ,MAAA,GAAS,QAAA;AAAA,UACjC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;ACnOO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,UAAA,GAAa,KAAA;AAAA,EACb,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,KAAA,IAAS,CAAC,YAAY,OAAO,IAAA;AAC9C,EAAA,uBACEC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAI,MAAA,CAAO,SAAA;AAAA,MACX,IAAA,EAAK,SAAA;AAAA,MACL,mBAAiB,MAAA,CAAO,SAAA;AAAA,MACxB,QAAA,EAAU,EAAA;AAAA,MACV,WAAA,EAAU,gBAAA;AAAA,MACV,YAAA,EAAY,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,MAAA,GAAS,QAAA;AAAA,MACzC,uBAAA,EAAuB,MAAA,CAAO,YAAA,CAAa,KAAA,IAAS,MAAA;AAAA,MACpD,KAAA,EAAO,EAAA;AAAA,QACL,oKAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,QAAQ,MAAM,GAAA;AAAK,UACjB,KAAK,WAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,YAAA,MAAA,CAAO,eAAA,EAAgB;AACvB,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,YAAA,MAAA,CAAO,eAAA,EAAgB;AACvB,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AACzB,YAAA,MAAA,CAAO,eAAA,EAAgB;AACvB,YAAA;AAAA,UACF,KAAK,KAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,YAAA,MAAA,CAAO,eAAA,EAAgB;AACvB,YAAA;AAAA,UACF,KAAK,OAAA;AAAA,UACL,KAAK,GAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,MAAA,CAAO,aAAa,KAAA,EAAO;AAC7B,cAAA,MAAM,SAAS,QAAA,CAAS,cAAA;AAAA,gBACtB,OAAO,YAAA,CAAa;AAAA,eACtB;AACA,cAAA,MAAA,EAAQ,KAAA,EAAM;AAAA,YAChB;AACA,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,MAAA,CAAO,oBAAA,EAAqB;AAC5B,YAAA;AAAA,UACF,KAAK,KAAA;AACH,YAAA,MAAA,CAAO,QAAQ,KAAK,CAAA;AACpB,YAAA;AAEA;AAEJ,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAGJ,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAU,iBAAA;AAAA,UACV,KAAA,EAAO,EAAA;AAAA,YACL,sFAAA;AAAA;AAAA,YAEA;AAAA,WACF;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;ACpFO,IAAM,WAAA,GAAc,CAAC,EAAE,QAAA,EAAU,OAAO,SAAA,EAAW,GAAG,MAAK,qBAChEA,IAAC,KAAA,EAAA,EAAI,WAAA,EAAU,gBAAe,KAAA,EAAO,EAAA,CAAG,OAAO,SAAS,CAAA,EAAI,GAAG,IAAA,EAC5D,QAAA,EACH;ACEK,IAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,EAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAAuB;AACrB,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,OAAA,GAAUC,OAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,gBAAgBC,OAAAA,CAAQ,MAAM,gBAAgB,aAAa,CAAA,EAAG,EAAE,CAAA;AACtE,EAAA,MAAM,UAAA,GAAa,OAAO,EAAA,KAAO,QAAA,GAAW,EAAA,GAAK,MAAA;AACjD,EAAA,MAAM,MAAA,GAASA,QAAQ,MAAM,aAAA,CAAc,UAAU,CAAA,EAAG,CAAC,aAAA,EAAe,UAAU,CAAC,CAAA;AACnF,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,aAAA,CAAc,KAAA,KAAU,KAAA;AAChD,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,YAAA,CAAa,KAAA,KAAU,MAAA;AAE7C,EAAAC,UAAU,MAAM;AACd,IAAA,MAAA,CAAO,YAAA,CAAa;AAAA,MAClB,EAAA,EAAI,MAAA;AAAA,MACJ,KAAA;AAAA,MACA,KAAK,OAAA,CAAQ,OAAA;AAAA,MACb;AAAA,KACD,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,eAAe,MAAM,CAAA;AAAA,IAC9B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAE5B,EAAA,uBACEH,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,aAAA;AAAA,MACV,kBAAA,EAAkB,SAAS,MAAA,GAAS,MAAA;AAAA,MACpC,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,MACnC,YAAA,EAAY,WAAW,SAAA,GAAY,WAAA;AAAA,MACnC,eAAA,EAAe,QAAA;AAAA,MACf,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,QAAA,EAAU,QAAA,GAAW,EAAA,GAAK,MAAA,GAAS,CAAA,GAAI,EAAA;AAAA,MACvC,KAAA,EAAO,EAAA;AAAA,QACL,yLAAA;AAAA;AAAA,QAEA,8CAAA;AAAA,QACA,8CAAA;AAAA,QACA,0EAAA;AAAA,QACA,kFAAA;AAAA,QACA,QAAA,IAAY,aAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,IAAI,CAAC,QAAA,EAAU,MAAA,CAAO,eAAA,CAAgB,MAAM,CAAA;AAC5C,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,QAAA,IAAI,CAAC,QAAA,EAAU,MAAA,CAAO,eAAA,CAAgB,MAAM,CAAA;AAC5C,QAAA,WAAA,GAAc,KAAK,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,SAAA,GAAY,KAAK,CAAA;AACjB,UAAA;AAAA,QACF;AACA,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AACxB,UAAA,MAAA,CAAO,oBAAA,EAAqB;AAAA,QAC9B;AACA,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,MAAA,CAAO,YAAY,KAAK,CAAA;AACxB,QAAA,OAAA,GAAU,KAA0D,CAAA;AACpE,QAAA,MAAA,CAAO,oBAAA,EAAqB;AAAA,MAC9B,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC7FO,IAAM,WAAA,GAAc,CAAC,EAAE,QAAA,EAAU,OAAO,SAAA,EAAW,GAAG,IAAA,EAAK,qBAChEA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,cAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,yDAAA,EAA2D,SAAS,CAAA;AAAA,IAC7E,GAAG,IAAA;AAAA,IAEH;AAAA;AACH;ACTK,IAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,WAAW,GAAG,IAAA,uBAClDA,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,MAAA;AAAA,IACL,WAAA,EAAU,eAAA;AAAA,IACV,KAAA,EAAO,EAAA;AAAA,MACL,yJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;ACTK,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,GAAG,IAAA,uBACrDA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,WAAA;AAAA,IACL,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,qCAAA,EAAuC,SAAS,CAAA;AAAA,IACzD,GAAG;AAAA;AACN;ACHK,IAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAA0B;AACxB,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAmC;AAClD,IAAA,MAAA,CAAO,eAAe,IAAI,CAAA;AAC1B,IAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,MAAA,GAAA,CAAI,IAAI,CAAA;AACR,MAAA;AAAA,IACF;AACA,IAAA,IAAI,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,MAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,gBAAA;AAAA,MACV,IAAI,MAAA,CAAO,SAAA;AAAA,MACX,eAAA,EAAc,SAAA;AAAA,MACd,iBAAe,MAAA,CAAO,SAAA;AAAA,MACtB,eAAA,EAAe,OAAO,IAAA,CAAK,KAAA;AAAA,MAC3B,YAAA,EAAY,MAAA,CAAO,IAAA,CAAK,KAAA,GAAQ,MAAA,GAAS,QAAA;AAAA,MACzC,KAAA,EAAO,EAAA;AAAA,QACL,2NAAA;AAAA,QACA,4BAAA;AAAA,QACA,iFAAA;AAAA,QACA,6FAAA;AAAA,QACA,iDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,QAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AACjC,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,QAAQ,MAAM,GAAA;AAAK,UACjB,KAAK,WAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO;AACtB,cAAA,MAAA,CAAO,aAAa,UAAU,CAAA;AAAA,YAChC,CAAA,MAAO;AACL,cAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,cAAA,MAAA,CAAO,eAAA,EAAgB;AAAA,YACzB;AACA,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO;AACtB,cAAA,MAAA,CAAO,aAAa,MAAM,CAAA;AAAA,YAC5B,CAAA,MAAO;AACL,cAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,cAAA,MAAA,CAAO,eAAA,EAAgB;AAAA,YACzB;AACA,YAAA;AAAA,UACF,KAAK,OAAA;AAAA,UACL,KAAK,GAAA;AACH,YAAA,KAAA,CAAM,cAAA,EAAe;AACrB,YAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO;AACtB,cAAA,MAAA,CAAO,aAAa,UAAU,CAAA;AAAA,YAChC;AACA,YAAA;AAEA;AAEJ,QAAA,SAAA,GAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAM,sEAAA;AAAA,YAEN,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,4BAAA;AAAA,gBACN,KAAA,EAAM,IAAA;AAAA,gBACN,MAAA,EAAO,IAAA;AAAA,gBACP,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,cAAA,EAAa,GAAA;AAAA,gBACb,gBAAA,EAAe,OAAA;AAAA,gBACf,iBAAA,EAAgB,OAAA;AAAA,gBAChB,KAAA,EAAM,QAAA;AAAA,gBACN,aAAA,EAAY,MAAA;AAAA,gBAEZ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AACzB;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;ACnGO,IAAM,cAAc,CAAC;AAAA,EAC1B,WAAA,GAAc,QAAA;AAAA,EACd,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAAwB;AACtB,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,uBACEA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,cAAA,EAAe,OAAO,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA,EAAI,GAAG,IAAA,EAChF,QAAA,EAAA,QAAA,IAAY,MAAA,CAAO,aAAA,CAAc,SAAS,WAAA,EAC7C,CAAA;AAEJ;;;ACCA,IAAO,cAAA,GAAQ;AAAA,EACb,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO,WAAA;AAAA,EACP,IAAA,EAAM,UAAA;AAAA,EACN,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,EAAQ,YAAA;AAAA,EACR,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO;AACT","file":"chunk-ZLSCHWTN.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer, createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\n\ntype SelectItemRecord = {\n id: string;\n value: string;\n ref: HTMLDivElement | null;\n disabled: boolean;\n};\n\ntype SelectContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n selectedValue: ReturnType<typeof signal<string | null>>;\n activeItemId: ReturnType<typeof signal<string | null>>;\n triggerId: string;\n contentId: string;\n setOpen: (next: boolean) => void;\n setSelected: (value: string) => void;\n openAndFocus: (target: \"selected\" | \"first\" | \"last\") => void;\n closeAndFocusTrigger: () => void;\n registerItem: (item: SelectItemRecord) => void;\n unregisterItem: (id: string) => void;\n setActiveItemId: (id: string | null) => void;\n moveActive: (direction: \"next\" | \"prev\" | \"first\" | \"last\") => void;\n focusActiveItem: () => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n};\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nexport const useSelect = () => {\n const context = useContext(SelectContext);\n if (!context) throw new Error(\"Select subcomponents must be used within Select\");\n return context;\n};\n\nexport type SelectProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n children?: ComponentChildren;\n};\n\nexport const Select = ({\n defaultValue,\n value,\n onValueChange,\n children,\n class: className,\n ...rest\n}: SelectProps) => {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const itemsRef = useRef<SelectItemRecord[]>([]);\n const idFactory = useMemo(() => createIdFactory(\"select\"), []);\n const triggerId = useMemo(() => idFactory(), [idFactory]);\n const contentId = useMemo(() => idFactory(), [idFactory]);\n\n const open = useMemo(() => signal(false), []);\n const isControlled = typeof value === \"string\";\n const selectedValue = useMemo(() => signal<string | null>(value ?? defaultValue ?? null), []);\n const activeItemId = useMemo(() => signal<string | null>(null), []);\n\n useEffect(() => {\n if (isControlled) {\n selectedValue.value = value ?? null;\n }\n }, [isControlled, value]);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => open.value,\n onDismiss: () => {\n open.value = false;\n activeItemId.value = null;\n },\n });\n return () => layer.dispose();\n }, []);\n\n const getEnabledItems = () =>\n itemsRef.current.filter((item) => !item.disabled && item.ref && item.ref.isConnected);\n\n const focusActiveItem = () => {\n const active = itemsRef.current.find(\n (item) => item.id === activeItemId.value && !item.disabled,\n );\n active?.ref?.focus();\n };\n\n const setActiveFromTarget = (target: \"selected\" | \"first\" | \"last\") => {\n const enabledItems = getEnabledItems();\n if (enabledItems.length === 0) {\n activeItemId.value = null;\n return;\n }\n\n if (target === \"first\") {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n if (target === \"last\") {\n activeItemId.value = enabledItems[enabledItems.length - 1]?.id ?? null;\n return;\n }\n\n const selected = enabledItems.find((item) => item.value === selectedValue.value);\n activeItemId.value = selected?.id ?? enabledItems[0]?.id ?? null;\n };\n\n const moveActive = (direction: \"next\" | \"prev\" | \"first\" | \"last\") => {\n const enabledItems = getEnabledItems();\n if (enabledItems.length === 0) {\n activeItemId.value = null;\n return;\n }\n\n if (direction === \"first\") {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n if (direction === \"last\") {\n activeItemId.value = enabledItems[enabledItems.length - 1]?.id ?? null;\n return;\n }\n\n const currentIndex = enabledItems.findIndex((item) => item.id === activeItemId.value);\n if (currentIndex < 0) {\n activeItemId.value = enabledItems[0]?.id ?? null;\n return;\n }\n\n const offset = direction === \"next\" ? 1 : -1;\n const nextIndex = (currentIndex + offset + enabledItems.length) % enabledItems.length;\n activeItemId.value = enabledItems[nextIndex]?.id ?? null;\n };\n\n const setSelected = (value: string) => {\n if (!isControlled) {\n selectedValue.value = value;\n }\n onValueChange?.(value);\n open.value = false;\n activeItemId.value = null;\n };\n\n useEffect(() => {\n if (!open.value) return;\n setActiveFromTarget(\"selected\");\n }, [open.value, selectedValue.value]);\n\n const openAndFocus = (target: \"selected\" | \"first\" | \"last\") => {\n open.value = true;\n setActiveFromTarget(target);\n if (typeof requestAnimationFrame === \"function\") {\n requestAnimationFrame(() => focusActiveItem());\n } else {\n focusActiveItem();\n }\n };\n\n const closeAndFocusTrigger = () => {\n open.value = false;\n activeItemId.value = null;\n triggerRef.current?.focus();\n };\n\n const registerItem = (item: SelectItemRecord) => {\n const index = itemsRef.current.findIndex((entry) => entry.id === item.id);\n if (index >= 0) {\n const next = [...itemsRef.current];\n next[index] = item;\n itemsRef.current = next;\n } else {\n itemsRef.current = [...itemsRef.current, item];\n }\n\n if (open.value && activeItemId.value === null && !item.disabled && item.ref?.isConnected) {\n if (selectedValue.value === item.value || selectedValue.value === null) {\n activeItemId.value = item.id;\n }\n }\n };\n\n const unregisterItem = (id: string) => {\n itemsRef.current = itemsRef.current.filter((item) => item.id !== id);\n if (activeItemId.value === id) {\n activeItemId.value = null;\n }\n };\n\n return (\n <SelectContext.Provider\n value={{\n open,\n selectedValue,\n activeItemId,\n triggerId,\n contentId,\n setOpen: (next) => {\n open.value = next;\n if (!next) activeItemId.value = null;\n },\n setSelected,\n openAndFocus,\n closeAndFocusTrigger,\n registerItem,\n unregisterItem,\n setActiveItemId: (id) => {\n activeItemId.value = id;\n },\n moveActive,\n focusActiveItem,\n setTriggerNode: (node) => {\n triggerRef.current = node;\n },\n }}\n >\n <div\n ref={rootRef}\n class={cn(\"relative\", className)}\n data-slot=\"select\"\n data-state={open.value ? \"open\" : \"closed\"}\n {...rest}\n >\n {children}\n </div>\n </SelectContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n forceMount?: boolean;\n children?: ComponentChildren;\n};\n\nexport const SelectContent = ({\n forceMount = false,\n children,\n onKeyDown,\n class: className,\n ...rest\n}: SelectContentProps) => {\n const select = useSelect();\n\n if (!select.open.value && !forceMount) return null;\n return (\n <div\n id={select.contentId}\n role=\"listbox\"\n aria-labelledby={select.triggerId}\n tabIndex={-1}\n data-slot=\"select-content\"\n data-state={select.open.value ? \"open\" : \"closed\"}\n aria-activedescendant={select.activeItemId.value ?? undefined}\n class={cn(\n \"bg-popover text-popover-foreground absolute left-0 right-0 top-full z-50 mt-1 flex max-h-72 flex-col overflow-hidden rounded-md border border-border p-1 shadow-md\",\n className,\n )}\n onKeyDown={(event) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n select.moveActive(\"next\");\n select.focusActiveItem();\n break;\n case \"ArrowUp\":\n event.preventDefault();\n select.moveActive(\"prev\");\n select.focusActiveItem();\n break;\n case \"Home\":\n event.preventDefault();\n select.moveActive(\"first\");\n select.focusActiveItem();\n break;\n case \"End\":\n event.preventDefault();\n select.moveActive(\"last\");\n select.focusActiveItem();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (select.activeItemId.value) {\n const active = document.getElementById(\n select.activeItemId.value,\n ) as HTMLDivElement | null;\n active?.click();\n }\n break;\n case \"Escape\":\n event.preventDefault();\n select.closeAndFocusTrigger();\n break;\n case \"Tab\":\n select.setOpen(false);\n break;\n default:\n break;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {/* Padding lives on the outer shell; scrolling on the inner viewport avoids asymmetric layout when a scrollbar is present (padding + gutter on one element skews highlights). */}\n <div\n data-slot=\"select-viewport\"\n class={cn(\n \"flex min-h-0 min-w-0 flex-1 flex-col items-stretch overflow-x-hidden overflow-y-auto\",\n /* Classic scrollbars steal inline-end width → uneven highlight vs. padding. Hide bar; list still scrolls (wheel, trackpad, touch, Arrow/Home/End). */\n \"[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\",\n )}\n >\n {children}\n </div>\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectGroup = ({ children, class: className, ...rest }: SelectGroupProps) => (\n <div data-slot=\"select-group\" class={cn(\"p-1\", className)} {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectItemProps = JSX.HTMLAttributes<HTMLDivElement> & {\n value: string;\n disabled?: boolean;\n children?: ComponentChildren;\n};\n\nexport const SelectItem = ({\n value,\n disabled = false,\n children,\n id,\n onClick,\n onFocus,\n onKeyDown,\n onMouseMove,\n class: className,\n ...rest\n}: SelectItemProps) => {\n const select = useSelect();\n const itemRef = useRef<HTMLDivElement | null>(null);\n const autoIdFactory = useMemo(() => createIdFactory(\"select-item\"), []);\n const explicitId = typeof id === \"string\" ? id : undefined;\n const itemId = useMemo(() => autoIdFactory(explicitId), [autoIdFactory, explicitId]);\n const selected = select.selectedValue.value === value;\n const active = select.activeItemId.value === itemId;\n\n useEffect(() => {\n select.registerItem({\n id: itemId,\n value,\n ref: itemRef.current,\n disabled,\n });\n return () => {\n select.unregisterItem(itemId);\n };\n }, [itemId, value, disabled]);\n\n return (\n <div\n ref={itemRef}\n id={itemId}\n role=\"option\"\n data-slot=\"select-item\"\n data-highlighted={active ? \"true\" : undefined}\n data-disabled={disabled ? \"true\" : undefined}\n data-state={selected ? \"checked\" : \"unchecked\"}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : active ? 0 : -1}\n class={cn(\n \"relative flex w-full min-w-0 shrink-0 cursor-default select-none items-center rounded-none px-2 py-1.5 text-sm outline-none transition-colors [-webkit-tap-highlight-color:transparent]\",\n /* Solid full-row fill (no rounded corners that read as “gaps” against the popover) */\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"data-[highlighted=true]:bg-accent data-[highlighted=true]:text-accent-foreground\",\n selected && \"font-medium\",\n className,\n )}\n onFocus={(event) => {\n if (!disabled) select.setActiveItemId(itemId);\n onFocus?.(event);\n }}\n onMouseMove={(event) => {\n if (!disabled) select.setActiveItemId(itemId);\n onMouseMove?.(event);\n }}\n onKeyDown={(event) => {\n if (disabled) {\n onKeyDown?.(event);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n select.setSelected(value);\n select.closeAndFocusTrigger();\n }\n onKeyDown?.(event);\n }}\n onClick={(event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n select.setSelected(value);\n onClick?.(event as unknown as JSX.TargetedMouseEvent<HTMLDivElement>);\n select.closeAndFocusTrigger();\n }}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectLabelProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectLabel = ({ children, class: className, ...rest }: SelectLabelProps) => (\n <div\n data-slot=\"select-label\"\n class={cn(\"text-muted-foreground px-2 py-1.5 text-xs font-semibold\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectSearchProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\nexport const SelectSearch = ({ class: className, ...rest }: SelectSearchProps) => (\n <input\n type=\"text\"\n data-slot=\"select-search\"\n class={cn(\n \"border-input bg-background placeholder:text-muted-foreground focus:ring-ring mb-1 h-8 w-full rounded-md border px-2.5 text-sm outline-none focus:ring-2\",\n className,\n )}\n {...rest}\n />\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SelectSeparatorProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const SelectSeparator = ({ class: className, ...rest }: SelectSeparatorProps) => (\n <div\n role=\"separator\"\n data-slot=\"select-separator\"\n class={cn(\"bg-border my-1 h-px w-full shrink-0\", className)}\n {...rest}\n />\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const SelectTrigger = ({\n children,\n onClick,\n onKeyDown,\n ref,\n class: className,\n ...rest\n}: SelectTriggerProps) => {\n const select = useSelect();\n\n const setRefs = (node: HTMLButtonElement | null) => {\n select.setTriggerNode(node);\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n if (ref && typeof ref === \"object\") {\n ref.current = node;\n }\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n data-slot=\"select-trigger\"\n id={select.triggerId}\n aria-haspopup=\"listbox\"\n aria-controls={select.contentId}\n aria-expanded={select.open.value}\n data-state={select.open.value ? \"open\" : \"closed\"}\n class={cn(\n \"border-input bg-background dark:bg-input/30 placeholder:text-muted-foreground flex h-8 w-full items-center justify-between gap-2 rounded-md border px-3 py-1 text-sm shadow-xs outline-none transition-[color,box-shadow]\",\n \"hover:border-foreground/15\",\n \"focus-visible:border-outline focus-visible:ring-3 focus-visible:ring-outline/50\",\n \"data-[state=open]:border-outline data-[state=open]:ring-3 data-[state=open]:ring-outline/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n onClick={(event) => {\n select.setOpen(!select.open.value);\n onClick?.(event);\n }}\n onKeyDown={(event) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"selected\");\n } else {\n select.moveActive(\"next\");\n select.focusActiveItem();\n }\n break;\n case \"ArrowUp\":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"last\");\n } else {\n select.moveActive(\"prev\");\n select.focusActiveItem();\n }\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (!select.open.value) {\n select.openAndFocus(\"selected\");\n }\n break;\n default:\n break;\n }\n onKeyDown?.(event);\n }}\n {...rest}\n >\n {children}\n <span\n aria-hidden=\"true\"\n class=\"text-muted-foreground pointer-events-none size-4 shrink-0 opacity-50\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </span>\n </button>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useSelect } from \"./Select\";\n\nexport type SelectValueProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n placeholder?: string;\n children?: ComponentChildren;\n};\n\nexport const SelectValue = ({\n placeholder = \"Select\",\n children,\n class: className,\n ...rest\n}: SelectValueProps) => {\n const select = useSelect();\n return (\n <span data-slot=\"select-value\" class={cn(\"line-clamp-1 text-left\", className)} {...rest}>\n {children ?? select.selectedValue.value ?? placeholder}\n </span>\n );\n};\n","import { Select } from \"./Select\";\nimport { SelectContent } from \"./SelectContent\";\nimport { SelectGroup } from \"./SelectGroup\";\nimport { SelectItem } from \"./SelectItem\";\nimport { SelectLabel } from \"./SelectLabel\";\nimport { SelectSearch } from \"./SelectSearch\";\nimport { SelectSeparator } from \"./SelectSeparator\";\nimport { SelectTrigger } from \"./SelectTrigger\";\nimport { SelectValue } from \"./SelectValue\";\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectSearch,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n\nexport default {\n Root: Select,\n Trigger: SelectTrigger,\n Content: SelectContent,\n Group: SelectGroup,\n Item: SelectItem,\n Label: SelectLabel,\n Search: SelectSearch,\n Separator: SelectSeparator,\n Value: SelectValue,\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import { DialogFooter, DialogHeader } from './chunk-Q5B6ROW6.js';
2
+ import { DialogClose, DialogDescription, DialogTitle, DialogContent, DialogTrigger, Dialog, useDialog } from './chunk-DUTKHOH3.js';
3
+ import { createPortal } from './chunk-B47B6KK6.js';
4
+ import { jsx, Fragment } from 'preact/jsx-runtime';
5
+
6
+ function DialogPortal({ forceMount = false, children }) {
7
+ const dialog = useDialog();
8
+ const isOpen = dialog.open.value;
9
+ if (!isOpen && !forceMount) return null;
10
+ if (typeof document === "undefined") return /* @__PURE__ */ jsx(Fragment, { children });
11
+ return createPortal(/* @__PURE__ */ jsx(Fragment, { children }), document.body);
12
+ }
13
+
14
+ // src/components/dialog/index.ts
15
+ var dialog_default = {
16
+ Root: Dialog,
17
+ Trigger: DialogTrigger,
18
+ Portal: DialogPortal,
19
+ Content: DialogContent,
20
+ Header: DialogHeader,
21
+ Footer: DialogFooter,
22
+ Title: DialogTitle,
23
+ Description: DialogDescription,
24
+ Close: DialogClose
25
+ };
26
+
27
+ export { DialogPortal, dialog_default };
28
+ //# sourceMappingURL=chunk-ZQ2WOX4X.js.map
29
+ //# sourceMappingURL=chunk-ZQ2WOX4X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/dialog/DialogPortal.tsx","../src/components/dialog/index.ts"],"names":[],"mappings":";;;;;AAcO,SAAS,YAAA,CAAa,EAAE,UAAA,GAAa,KAAA,EAAO,UAAS,EAAsB;AAChF,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,KAAA;AAC3B,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,UAAA,EAAY,OAAO,IAAA;AAEnC,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa,uCAAU,QAAA,EAAS,CAAA;AACxD,EAAA,OAAO,YAAA,iBAAa,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAS,CAAA,EAAK,SAAS,IAAI,CAAA;AACpD;;;ACKA,IAAO,cAAA,GAAQ;AAAA,EACb,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ,YAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAO,WAAA;AAAA,EACP,WAAA,EAAa,iBAAA;AAAA,EACb,KAAA,EAAO;AACT","file":"chunk-ZQ2WOX4X.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { createPortal } from \"../../lib/createPortal\";\nimport { useDialog } from \"./Dialog\";\n\nexport type DialogPortalProps = {\n /** Keep the portal mounted while exit animations run. */\n forceMount?: boolean;\n children?: ComponentChildren;\n};\n\n/**\n * Portals dialog children to `document.body` without overlay or panel chrome.\n * Use for custom modal layouts (e.g. motion wrappers) that supply their own structure.\n */\nexport function DialogPortal({ forceMount = false, children }: DialogPortalProps) {\n const dialog = useDialog();\n const isOpen = dialog.open.value;\n if (!isOpen && !forceMount) return null;\n\n if (typeof document === \"undefined\") return <>{children}</>;\n return createPortal(<>{children}</>, document.body);\n}\n","import { Dialog } from \"./Dialog\";\nimport { DialogClose } from \"./DialogClose\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogDescription } from \"./DialogDescription\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogPortal } from \"./DialogPortal\";\nimport { DialogTitle } from \"./DialogTitle\";\nimport { DialogTrigger } from \"./DialogTrigger\";\n\nexport { useDialog } from \"./Dialog\";\nexport type { DialogContentPresentation, DialogContentProps } from \"./DialogContent\";\nexport { dialogViewportBleedClass } from \"./DialogContent\";\nexport { useModalPanelA11y } from \"./useModalPanelA11y\";\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n\nexport default {\n Root: Dialog,\n Trigger: DialogTrigger,\n Portal: DialogPortal,\n Content: DialogContent,\n Header: DialogHeader,\n Footer: DialogFooter,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { Dialog, DialogContent } from './chunk-HHLQYMPT.js';
2
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { Dialog, DialogContent } from './chunk-DUTKHOH3.js';
2
+ import { cn } from './chunk-XIANSPQO.js';
3
3
  import { jsx } from 'preact/jsx-runtime';
4
4
 
5
5
  var CommandDialog = ({
@@ -28,5 +28,5 @@ var CommandShortcut = ({ class: className, children, ...rest }) => /* @__PURE__
28
28
  );
29
29
 
30
30
  export { CommandDialog, CommandShortcut };
31
- //# sourceMappingURL=chunk-NILG56Z7.js.map
32
- //# sourceMappingURL=chunk-NILG56Z7.js.map
31
+ //# sourceMappingURL=chunk-ZROHNZDC.js.map
32
+ //# sourceMappingURL=chunk-ZROHNZDC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/command/CommandDialog.tsx","../src/components/command/CommandShortcut.tsx"],"names":["jsx"],"mappings":";;;;AAYO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAA,EAA0B,YAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,EAAC,aAAA;AAAA,EAAA;AAAA,IACC,eAAA,EAAiB,KAAA;AAAA,IACjB,OAAO,YAAA,IAAgB,uCAAA;AAAA,IACvB,WAAA,EAAU,wBAAA;AAAA,IAET;AAAA;AACH,CAAA,EACF;ACpBK,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACpEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,IAC3E,GAAG,IAAA;AAAA,IAEH;AAAA;AACH","file":"chunk-NILG56Z7.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\nexport type CommandDialogProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ComponentChildren;\n /** Passed to `DialogContent` for width (default command palette sizing). */\n contentClass?: string;\n};\n\nexport const CommandDialog = ({\n open,\n defaultOpen,\n onOpenChange,\n contentClass,\n children,\n}: CommandDialogProps) => (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <DialogContent\n showCloseButton={false}\n class={contentClass ?? \"gap-0 overflow-hidden p-0 sm:max-w-lg\"}\n data-slot=\"command-dialog-content\"\n >\n {children}\n </DialogContent>\n </Dialog>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CommandShortcutProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const CommandShortcut = ({ class: className, children, ...rest }: CommandShortcutProps) => (\n <span\n data-slot=\"command-shortcut\"\n class={cn(\"text-muted-foreground ms-auto text-xs tracking-widest\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n"]}
1
+ {"version":3,"sources":["../src/components/command/CommandDialog.tsx","../src/components/command/CommandShortcut.tsx"],"names":["jsx"],"mappings":";;;;AAYO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,WAAA,EAA0B,YAAA,EAC5C,QAAA,kBAAA,GAAA;AAAA,EAAC,aAAA;AAAA,EAAA;AAAA,IACC,eAAA,EAAiB,KAAA;AAAA,IACjB,OAAO,YAAA,IAAgB,uCAAA;AAAA,IACvB,WAAA,EAAU,wBAAA;AAAA,IAET;AAAA;AACH,CAAA,EACF;ACpBK,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACpEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,IAC3E,GAAG,IAAA;AAAA,IAEH;AAAA;AACH","file":"chunk-ZROHNZDC.js","sourcesContent":["import type { ComponentChildren } from \"preact\";\nimport { Dialog, DialogContent } from \"../dialog\";\n\nexport type CommandDialogProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: ComponentChildren;\n /** Passed to `DialogContent` for width (default command palette sizing). */\n contentClass?: string;\n};\n\nexport const CommandDialog = ({\n open,\n defaultOpen,\n onOpenChange,\n contentClass,\n children,\n}: CommandDialogProps) => (\n <Dialog open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n <DialogContent\n showCloseButton={false}\n class={contentClass ?? \"gap-0 overflow-hidden p-0 sm:max-w-lg\"}\n data-slot=\"command-dialog-content\"\n >\n {children}\n </DialogContent>\n </Dialog>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CommandShortcutProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const CommandShortcut = ({ class: className, children, ...rest }: CommandShortcutProps) => (\n <span\n data-slot=\"command-shortcut\"\n class={cn(\"text-muted-foreground ms-auto text-xs tracking-widest\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { cn } from './chunk-XIANSPQO.js';
2
2
  import { createContext, toChildArray, isValidElement, Fragment } from 'preact';
3
3
  import { useState, useCallback, useMemo, useEffect, useContext } from 'preact/hooks';
4
4
  import { tv } from 'tailwind-variants';
@@ -95,7 +95,7 @@ var Avatar = ({ size = "default", class: className, children, ...rest }) => {
95
95
  ...rest,
96
96
  "data-slot": "avatar",
97
97
  "data-size": dataSize,
98
- class: avatarRoot({ size, class: className }),
98
+ class: cn(avatarRoot({ size }), className),
99
99
  children: [
100
100
  /* @__PURE__ */ jsx("span", { class: avatarMedia(), children: media }),
101
101
  badges
@@ -212,5 +212,5 @@ var AvatarImage = ({
212
212
  };
213
213
 
214
214
  export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, avatarRoot };
215
- //# sourceMappingURL=chunk-PGOCR4LG.js.map
216
- //# sourceMappingURL=chunk-PGOCR4LG.js.map
215
+ //# sourceMappingURL=chunk-ZVYCUG4N.js.map
216
+ //# sourceMappingURL=chunk-ZVYCUG4N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/avatar/context.tsx","../src/components/avatar/AvatarBadge.tsx","../src/components/avatar/Avatar.tsx","../src/components/avatar/AvatarFallback.tsx","../src/components/avatar/AvatarGroupCount.tsx","../src/components/avatar/AvatarGroup.tsx","../src/components/avatar/AvatarImage.tsx"],"names":["jsx","toChildArray","isValidElement"],"mappings":"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","file":"chunk-ZVYCUG4N.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport type { AvatarContextValue } from \"./types\";\n\nexport const AvatarContext = createContext<AvatarContextValue | null>(null);\n\nexport const useAvatarContext = () => {\n const ctx = useContext(AvatarContext);\n if (!ctx) {\n throw new Error(\"AvatarImage, AvatarFallback, and AvatarBadge must be used within Avatar\");\n }\n return ctx;\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useAvatarContext } from \"./context\";\n\nexport type AvatarBadgeProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const AvatarBadge = ({ class: className, children, ...rest }: AvatarBadgeProps) => {\n useAvatarContext();\n\n return (\n <span\n data-slot=\"avatar-badge\"\n class={cn(\n \"absolute z-20 box-border inline-flex items-center justify-center rounded-full bg-primary\",\n /* Bottom-inline-end overlap (~¼ avatar width) with a thick white ring so the dot reads clearly on the photo. */\n \"bottom-0.5 end-0.5 ring-[3px] ring-white dark:ring-background\",\n \"group-data-[size=sm]/avatar:bottom-px group-data-[size=sm]/avatar:end-px group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:ring-2\",\n \"group-data-[size=sm]/avatar:[&_svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&_svg]:size-2\",\n \"group-data-[size=lg]/avatar:bottom-1 group-data-[size=lg]/avatar:end-1 group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&_svg]:size-2\",\n className,\n )}\n {...rest}\n >\n {children}\n </span>\n );\n};\n","import type { ComponentChild, ComponentChildren, JSX, VNode } from \"preact\";\nimport { isValidElement, toChildArray } from \"preact\";\nimport { useCallback, useMemo, useState } from \"preact/hooks\";\nimport { tv } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { AvatarBadge } from \"./AvatarBadge\";\nimport { AvatarContext } from \"./context\";\n\n/** Outer shell: no overflow so AvatarBadge rings are not clipped. */\nexport const avatarRoot = tv({\n base: \"group/avatar relative inline-flex shrink-0 select-none\",\n variants: {\n size: {\n sm: \"size-8\",\n default: \"size-10\",\n lg: \"size-12\",\n },\n },\n defaultVariants: { size: \"default\" },\n});\n\n/** Circular clip + border for image/fallback only. */\nconst avatarMedia = tv({\n base: [\n \"absolute inset-0 overflow-hidden rounded-full border border-border\",\n \"after:pointer-events-none after:absolute after:inset-0 after:z-[5] after:rounded-full after:border after:border-border/50\",\n ],\n});\n\nfunction partitionAvatarChildren(children: ComponentChildren): {\n media: ComponentChild[];\n badges: VNode[];\n} {\n const media: ComponentChild[] = [];\n const badges: VNode[] = [];\n for (const node of toChildArray(children)) {\n if (isValidElement(node) && node.type === AvatarBadge) {\n badges.push(node);\n } else {\n media.push(node);\n }\n }\n return { media, badges };\n}\n\nexport type AvatarProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"size\"> & {\n children?: ComponentChildren;\n size?: \"sm\" | \"default\" | \"lg\";\n};\n\nexport const Avatar = ({ size = \"default\", class: className, children, ...rest }: AvatarProps) => {\n const [loaded, setLoaded] = useState(false);\n const [failed, setFailed] = useState(false);\n\n const notifyLoad = useCallback(() => {\n setLoaded(true);\n setFailed(false);\n }, []);\n\n const notifyError = useCallback(() => {\n setFailed(true);\n setLoaded(false);\n }, []);\n\n const resetImage = useCallback(() => {\n setLoaded(false);\n setFailed(false);\n }, []);\n\n const showFallback = !loaded || failed;\n\n const value = useMemo(\n () => ({\n notifyLoad,\n notifyError,\n resetImage,\n showFallback,\n }),\n [notifyLoad, notifyError, resetImage, showFallback],\n );\n\n const dataSize = size === \"default\" ? \"default\" : size;\n const { media, badges } = partitionAvatarChildren(children);\n\n return (\n <AvatarContext.Provider value={value}>\n <span\n {...rest}\n data-slot=\"avatar\"\n data-size={dataSize}\n class={cn(avatarRoot({ size }), className)}\n >\n <span class={avatarMedia()}>{media}</span>\n {badges}\n </span>\n </AvatarContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useAvatarContext } from \"./context\";\n\nexport type AvatarFallbackProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const AvatarFallback = ({ class: className, children, ...rest }: AvatarFallbackProps) => {\n const { showFallback } = useAvatarContext();\n\n return (\n <span\n data-slot=\"avatar-fallback\"\n class={cn(\n \"bg-muted text-muted-foreground absolute inset-0 z-0 inline-flex size-full items-center justify-center font-medium\",\n \"text-sm group-data-[size=sm]/avatar:text-xs group-data-[size=lg]/avatar:text-base\",\n !showFallback && \"hidden\",\n className,\n )}\n {...rest}\n >\n {children}\n </span>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type AvatarGroupCountProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AvatarGroupCount = ({\n class: className,\n children,\n ...rest\n}: AvatarGroupCountProps) => (\n <div\n data-slot=\"avatar-group-count\"\n class={cn(\n \"bg-muted text-muted-foreground relative z-[100] -ms-2 inline-flex size-10 shrink-0 items-center justify-center rounded-full text-center text-xs font-medium tabular-nums leading-none ring-2 ring-background rtl:-ms-0 rtl:-me-2\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { Fragment, isValidElement, toChildArray } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { Avatar } from \"./Avatar\";\nimport { AvatarGroupCount } from \"./AvatarGroupCount\";\n\nexport type AvatarGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const AvatarGroup = ({ class: className, children, ...rest }: AvatarGroupProps) => {\n const items = toChildArray(children);\n let stackIndex = 0;\n\n return (\n <div\n data-slot=\"avatar-group\"\n class={cn(\n \"isolate flex flex-row flex-wrap items-center -space-x-2 rtl:space-x-reverse\",\n className,\n )}\n {...rest}\n >\n {items.map((child, i) => {\n if (isValidElement(child) && child.type === Avatar) {\n const z = stackIndex;\n stackIndex += 1;\n const key =\n typeof child.key === \"string\" || typeof child.key === \"number\"\n ? child.key\n : `avatar-group-${i}`;\n return (\n <span\n key={key}\n class=\"relative inline-flex shrink-0 rounded-full ring-2 ring-background\"\n style={{ zIndex: z }}\n >\n {child}\n </span>\n );\n }\n if (isValidElement(child) && child.type === AvatarGroupCount) {\n const key =\n typeof child.key === \"string\" || typeof child.key === \"number\"\n ? child.key\n : `avatar-group-count-${i}`;\n return (\n <span key={key} class=\"relative z-[100] inline-flex shrink-0\">\n {child}\n </span>\n );\n }\n return <Fragment key={i}>{child}</Fragment>;\n })}\n </div>\n );\n};\n","import type { JSX } from \"preact\";\nimport { useEffect } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { useAvatarContext } from \"./context\";\n\nexport type AvatarImageProps = JSX.ImgHTMLAttributes<HTMLImageElement>;\n\nexport const AvatarImage = ({\n class: className,\n src,\n alt = \"\",\n onLoad,\n onError,\n ...rest\n}: AvatarImageProps) => {\n const { notifyLoad, notifyError, resetImage, showFallback } = useAvatarContext();\n\n useEffect(() => {\n resetImage();\n if (!src || src === \"\") {\n notifyError();\n }\n }, [src, resetImage, notifyError]);\n\n return (\n <img\n data-slot=\"avatar-image\"\n src={src}\n alt={alt}\n class={cn(\n \"absolute inset-0 z-10 size-full object-cover\",\n showFallback && \"invisible\",\n className,\n )}\n onLoad={(e) => {\n onLoad?.(e);\n notifyLoad();\n }}\n onError={(e) => {\n onError?.(e);\n notifyError();\n }}\n {...rest}\n />\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { d as AccordionProps, e as AccordionItemProps, f as AccordionTriggerProps, g as AccordionContentProps } from '../../Accordion-D1PiNspd.js';
2
- export { A as Accordion, a as AccordionContent, b as AccordionItem, c as AccordionTrigger } from '../../Accordion-D1PiNspd.js';
1
+ import { d as AccordionProps, e as AccordionItemProps, f as AccordionTriggerProps, g as AccordionContentProps } from '../../Accordion-BiCBkB8o.js';
2
+ export { A as Accordion, a as AccordionContent, b as AccordionItem, c as AccordionTrigger, u as useAccordionItem } from '../../Accordion-BiCBkB8o.js';
3
3
  import * as preact from 'preact';
4
4
 
5
5
  declare const _default: {
@@ -1,4 +1,5 @@
1
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, accordion_default as default } from '../../chunk-UEGIKBX6.js';
2
- import '../../chunk-MS2ZNYCJ.js';
1
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, accordion_default as default, useAccordionItem } from '../../chunk-NBP4J2QF.js';
2
+ import '../../chunk-ISISDJ3Z.js';
3
+ import '../../chunk-XIANSPQO.js';
3
4
  //# sourceMappingURL=index.js.map
4
5
  //# sourceMappingURL=index.js.map