@particle-academy/react-fancy 5.21.0 → 5.22.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 (529) hide show
  1. package/dist/accordion-panel.cjs +8 -8
  2. package/dist/accordion-panel.js +2 -2
  3. package/dist/accordion.cjs +4 -4
  4. package/dist/accordion.js +2 -2
  5. package/dist/audio-viewer.cjs +3 -3
  6. package/dist/audio-viewer.js +2 -2
  7. package/dist/autocomplete.cjs +3 -3
  8. package/dist/autocomplete.js +2 -2
  9. package/dist/avatar.cjs +3 -3
  10. package/dist/avatar.js +2 -2
  11. package/dist/badge.cjs +3 -3
  12. package/dist/badge.js +2 -2
  13. package/dist/brand.cjs +4 -4
  14. package/dist/brand.js +2 -2
  15. package/dist/breadcrumbs.cjs +3 -3
  16. package/dist/breadcrumbs.js +2 -2
  17. package/dist/button.cjs +5 -5
  18. package/dist/button.js +3 -3
  19. package/dist/calendar.cjs +3 -3
  20. package/dist/calendar.js +2 -2
  21. package/dist/callout.cjs +3 -3
  22. package/dist/callout.js +2 -2
  23. package/dist/card.cjs +7 -7
  24. package/dist/card.js +2 -2
  25. package/dist/carousel.cjs +8 -8
  26. package/dist/carousel.js +2 -2
  27. package/dist/chart.cjs +3 -3
  28. package/dist/chart.js +2 -2
  29. package/dist/chat-drawer.cjs +4 -4
  30. package/dist/chat-drawer.js +3 -3
  31. package/dist/checkbox-group.cjs +5 -5
  32. package/dist/checkbox-group.js +4 -4
  33. package/dist/checkbox.cjs +3 -3
  34. package/dist/checkbox.js +2 -2
  35. package/dist/{chunk-ZLCVKYHY.js → chunk-25ZOOUFG.js} +3 -3
  36. package/dist/{chunk-ZLCVKYHY.js.map → chunk-25ZOOUFG.js.map} +1 -1
  37. package/dist/{chunk-UCYAHLGM.js → chunk-2LBRS6Z4.js} +3 -3
  38. package/dist/{chunk-UCYAHLGM.js.map → chunk-2LBRS6Z4.js.map} +1 -1
  39. package/dist/{chunk-E4LFD44D.js → chunk-35EN5AYE.js} +3 -3
  40. package/dist/{chunk-E4LFD44D.js.map → chunk-35EN5AYE.js.map} +1 -1
  41. package/dist/{chunk-AOOBRPTE.cjs → chunk-3EIB7RPD.cjs} +8 -8
  42. package/dist/{chunk-AOOBRPTE.cjs.map → chunk-3EIB7RPD.cjs.map} +1 -1
  43. package/dist/{chunk-GKGL7F36.js → chunk-3FG5K7A7.js} +3 -3
  44. package/dist/{chunk-GKGL7F36.js.map → chunk-3FG5K7A7.js.map} +1 -1
  45. package/dist/{chunk-WNIP443K.js → chunk-3LM47BME.js} +4 -4
  46. package/dist/{chunk-WNIP443K.js.map → chunk-3LM47BME.js.map} +1 -1
  47. package/dist/{chunk-NH7NRRII.js → chunk-4K4ECIKK.js} +3 -3
  48. package/dist/{chunk-NH7NRRII.js.map → chunk-4K4ECIKK.js.map} +1 -1
  49. package/dist/{chunk-KC6QBKKB.cjs → chunk-524TOKU3.cjs} +8 -8
  50. package/dist/{chunk-KC6QBKKB.cjs.map → chunk-524TOKU3.cjs.map} +1 -1
  51. package/dist/{chunk-6OSHAP6L.cjs → chunk-5CXJ5Z4C.cjs} +6 -6
  52. package/dist/{chunk-6OSHAP6L.cjs.map → chunk-5CXJ5Z4C.cjs.map} +1 -1
  53. package/dist/{chunk-AY3JABE3.cjs → chunk-5DSMOURR.cjs} +4 -4
  54. package/dist/{chunk-AY3JABE3.cjs.map → chunk-5DSMOURR.cjs.map} +1 -1
  55. package/dist/{chunk-VQ4M25U3.cjs → chunk-5P3PISAX.cjs} +4 -4
  56. package/dist/{chunk-VQ4M25U3.cjs.map → chunk-5P3PISAX.cjs.map} +1 -1
  57. package/dist/{chunk-P7AJAN62.js → chunk-5RLP77KK.js} +3 -3
  58. package/dist/{chunk-P7AJAN62.js.map → chunk-5RLP77KK.js.map} +1 -1
  59. package/dist/{chunk-FCAV5IFW.js → chunk-6GWOB2Z4.js} +3 -3
  60. package/dist/{chunk-FCAV5IFW.js.map → chunk-6GWOB2Z4.js.map} +1 -1
  61. package/dist/{chunk-JCOBDDHF.js → chunk-6KXAFP2T.js} +3 -3
  62. package/dist/{chunk-JCOBDDHF.js.map → chunk-6KXAFP2T.js.map} +1 -1
  63. package/dist/{chunk-E7PHL3TD.cjs → chunk-6LOV75CN.cjs} +5 -5
  64. package/dist/{chunk-E7PHL3TD.cjs.map → chunk-6LOV75CN.cjs.map} +1 -1
  65. package/dist/{chunk-CEEEENPW.js → chunk-6PF5ENWM.js} +3 -3
  66. package/dist/{chunk-CEEEENPW.js.map → chunk-6PF5ENWM.js.map} +1 -1
  67. package/dist/{chunk-2PELJ4VA.cjs → chunk-6SO2ZX3J.cjs} +15 -15
  68. package/dist/{chunk-2PELJ4VA.cjs.map → chunk-6SO2ZX3J.cjs.map} +1 -1
  69. package/dist/{chunk-AVR5P4GA.cjs → chunk-7B3HK6TY.cjs} +11 -11
  70. package/dist/{chunk-AVR5P4GA.cjs.map → chunk-7B3HK6TY.cjs.map} +1 -1
  71. package/dist/{chunk-YHXE274U.js → chunk-7CN7IHES.js} +3 -3
  72. package/dist/{chunk-YHXE274U.js.map → chunk-7CN7IHES.js.map} +1 -1
  73. package/dist/{chunk-7NLKXBZ2.cjs → chunk-7EZBMGEE.cjs} +8 -8
  74. package/dist/{chunk-7NLKXBZ2.cjs.map → chunk-7EZBMGEE.cjs.map} +1 -1
  75. package/dist/{chunk-ZFVSEO5Z.cjs → chunk-7HMEDY24.cjs} +6 -6
  76. package/dist/{chunk-ZFVSEO5Z.cjs.map → chunk-7HMEDY24.cjs.map} +1 -1
  77. package/dist/{chunk-YXC7QHNT.cjs → chunk-7VLRHXLQ.cjs} +6 -6
  78. package/dist/{chunk-YXC7QHNT.cjs.map → chunk-7VLRHXLQ.cjs.map} +1 -1
  79. package/dist/{chunk-GIDW3SUE.cjs → chunk-7Y2AENZD.cjs} +6 -6
  80. package/dist/{chunk-GIDW3SUE.cjs.map → chunk-7Y2AENZD.cjs.map} +1 -1
  81. package/dist/{chunk-ANEX75DF.cjs → chunk-AASQ6L6X.cjs} +4 -4
  82. package/dist/{chunk-ANEX75DF.cjs.map → chunk-AASQ6L6X.cjs.map} +1 -1
  83. package/dist/{chunk-ZWOEKDNI.js → chunk-AT5OG5N4.js} +3 -3
  84. package/dist/{chunk-ZWOEKDNI.js.map → chunk-AT5OG5N4.js.map} +1 -1
  85. package/dist/{chunk-TVRCOKJQ.cjs → chunk-ATJSHM6J.cjs} +4 -4
  86. package/dist/{chunk-TVRCOKJQ.cjs.map → chunk-ATJSHM6J.cjs.map} +1 -1
  87. package/dist/{chunk-A22T6DKO.cjs → chunk-AVCDGSXV.cjs} +13 -13
  88. package/dist/{chunk-A22T6DKO.cjs.map → chunk-AVCDGSXV.cjs.map} +1 -1
  89. package/dist/{chunk-MDUSUJWY.cjs → chunk-AVU4JOYM.cjs} +4 -4
  90. package/dist/{chunk-MDUSUJWY.cjs.map → chunk-AVU4JOYM.cjs.map} +1 -1
  91. package/dist/{chunk-AR2IBCX7.cjs → chunk-BZP4LOO5.cjs} +53 -53
  92. package/dist/{chunk-AR2IBCX7.cjs.map → chunk-BZP4LOO5.cjs.map} +1 -1
  93. package/dist/{chunk-HAOYXGGJ.js → chunk-CCG2L5EH.js} +3 -3
  94. package/dist/{chunk-HAOYXGGJ.js.map → chunk-CCG2L5EH.js.map} +1 -1
  95. package/dist/{chunk-Y5V5GBN4.cjs → chunk-CJVNO5YM.cjs} +6 -6
  96. package/dist/{chunk-Y5V5GBN4.cjs.map → chunk-CJVNO5YM.cjs.map} +1 -1
  97. package/dist/{chunk-PVWPZYTR.js → chunk-CK6LRROH.js} +3 -3
  98. package/dist/{chunk-PVWPZYTR.js.map → chunk-CK6LRROH.js.map} +1 -1
  99. package/dist/{chunk-LNWO23PU.cjs → chunk-COH45MGW.cjs} +7 -7
  100. package/dist/{chunk-LNWO23PU.cjs.map → chunk-COH45MGW.cjs.map} +1 -1
  101. package/dist/{chunk-EVXDG2XN.js → chunk-CRR3AMJ4.js} +3 -3
  102. package/dist/{chunk-EVXDG2XN.js.map → chunk-CRR3AMJ4.js.map} +1 -1
  103. package/dist/{chunk-BWT2L6XP.js → chunk-D7G53WOZ.js} +6 -6
  104. package/dist/{chunk-BWT2L6XP.js.map → chunk-D7G53WOZ.js.map} +1 -1
  105. package/dist/{chunk-JYKZKSZJ.js → chunk-DIHH75KD.js} +5 -5
  106. package/dist/{chunk-JYKZKSZJ.js.map → chunk-DIHH75KD.js.map} +1 -1
  107. package/dist/{chunk-ZT36VWIA.js → chunk-DKKU3VVJ.js} +5 -5
  108. package/dist/{chunk-ZT36VWIA.js.map → chunk-DKKU3VVJ.js.map} +1 -1
  109. package/dist/{chunk-PITWDKKY.js → chunk-EWRP6KCY.js} +3 -3
  110. package/dist/{chunk-PITWDKKY.js.map → chunk-EWRP6KCY.js.map} +1 -1
  111. package/dist/{chunk-HTKDPFLJ.cjs → chunk-F2VJEXN2.cjs} +16 -16
  112. package/dist/{chunk-HTKDPFLJ.cjs.map → chunk-F2VJEXN2.cjs.map} +1 -1
  113. package/dist/{chunk-DV4IMAQW.js → chunk-FA4IG5RB.js} +3 -3
  114. package/dist/{chunk-DV4IMAQW.js.map → chunk-FA4IG5RB.js.map} +1 -1
  115. package/dist/{chunk-FVV76TRF.js → chunk-FBWUXSKH.js} +3 -3
  116. package/dist/{chunk-FVV76TRF.js.map → chunk-FBWUXSKH.js.map} +1 -1
  117. package/dist/{chunk-XMBOZ73D.js → chunk-FCSR2WVS.js} +3 -3
  118. package/dist/{chunk-XMBOZ73D.js.map → chunk-FCSR2WVS.js.map} +1 -1
  119. package/dist/{chunk-3DJGPNUI.js → chunk-FERMW3YE.js} +3 -3
  120. package/dist/{chunk-3DJGPNUI.js.map → chunk-FERMW3YE.js.map} +1 -1
  121. package/dist/{chunk-M24NCWBU.js → chunk-FFWAY7F5.js} +3 -3
  122. package/dist/{chunk-M24NCWBU.js.map → chunk-FFWAY7F5.js.map} +1 -1
  123. package/dist/{chunk-SYXLPCQP.cjs → chunk-FQSSVOVQ.cjs} +4 -4
  124. package/dist/{chunk-SYXLPCQP.cjs.map → chunk-FQSSVOVQ.cjs.map} +1 -1
  125. package/dist/{chunk-RNHIDZLE.cjs → chunk-G7227RTY.cjs} +7 -7
  126. package/dist/{chunk-RNHIDZLE.cjs.map → chunk-G7227RTY.cjs.map} +1 -1
  127. package/dist/{chunk-KUKYJZIU.cjs → chunk-GBGJWAXZ.cjs} +8 -8
  128. package/dist/{chunk-KUKYJZIU.cjs.map → chunk-GBGJWAXZ.cjs.map} +1 -1
  129. package/dist/{chunk-IE4CM2SN.js → chunk-GIIGXAT4.js} +5 -5
  130. package/dist/{chunk-IE4CM2SN.js.map → chunk-GIIGXAT4.js.map} +1 -1
  131. package/dist/{chunk-SKI33QNW.js → chunk-GKEWT3DW.js} +3 -3
  132. package/dist/{chunk-SKI33QNW.js.map → chunk-GKEWT3DW.js.map} +1 -1
  133. package/dist/{chunk-X5VZRFQD.cjs → chunk-H5OPZEVQ.cjs} +5 -5
  134. package/dist/{chunk-X5VZRFQD.cjs.map → chunk-H5OPZEVQ.cjs.map} +1 -1
  135. package/dist/{chunk-CS4GQXYY.js → chunk-H6F6ZWAG.js} +3 -3
  136. package/dist/{chunk-CS4GQXYY.js.map → chunk-H6F6ZWAG.js.map} +1 -1
  137. package/dist/{chunk-T6IXZZBQ.cjs → chunk-HE3JJXIL.cjs} +4 -4
  138. package/dist/{chunk-T6IXZZBQ.cjs.map → chunk-HE3JJXIL.cjs.map} +1 -1
  139. package/dist/{chunk-ARSQY4P7.cjs → chunk-HIN6PHSE.cjs} +7 -7
  140. package/dist/{chunk-ARSQY4P7.cjs.map → chunk-HIN6PHSE.cjs.map} +1 -1
  141. package/dist/{chunk-WT72KW5M.cjs → chunk-HIOMHITU.cjs} +19 -19
  142. package/dist/{chunk-WT72KW5M.cjs.map → chunk-HIOMHITU.cjs.map} +1 -1
  143. package/dist/{chunk-B4JLRS5E.js → chunk-HOP3XXPV.js} +3 -3
  144. package/dist/{chunk-B4JLRS5E.js.map → chunk-HOP3XXPV.js.map} +1 -1
  145. package/dist/{chunk-CQWPMRYS.js → chunk-HYNED2OA.js} +5 -5
  146. package/dist/{chunk-CQWPMRYS.js.map → chunk-HYNED2OA.js.map} +1 -1
  147. package/dist/{chunk-IF5LOWUL.js → chunk-I3RPL3GE.js} +3 -3
  148. package/dist/{chunk-IF5LOWUL.js.map → chunk-I3RPL3GE.js.map} +1 -1
  149. package/dist/{chunk-6Y2QO7YV.cjs → chunk-ICT477LK.cjs} +8 -8
  150. package/dist/{chunk-6Y2QO7YV.cjs.map → chunk-ICT477LK.cjs.map} +1 -1
  151. package/dist/{chunk-VBZZ4CMM.cjs → chunk-ISPCXIJZ.cjs} +5 -5
  152. package/dist/{chunk-VBZZ4CMM.cjs.map → chunk-ISPCXIJZ.cjs.map} +1 -1
  153. package/dist/{chunk-M7EEQPE7.js → chunk-IVRYSSM7.js} +3 -3
  154. package/dist/{chunk-M7EEQPE7.js.map → chunk-IVRYSSM7.js.map} +1 -1
  155. package/dist/{chunk-D4WM23Y4.js → chunk-IWXP2YUP.js} +3 -3
  156. package/dist/{chunk-D4WM23Y4.js.map → chunk-IWXP2YUP.js.map} +1 -1
  157. package/dist/{chunk-6GC5DMOK.cjs → chunk-JFOORUUD.cjs} +8 -8
  158. package/dist/{chunk-6GC5DMOK.cjs.map → chunk-JFOORUUD.cjs.map} +1 -1
  159. package/dist/{chunk-MZIU27UY.js → chunk-JICO4LTT.js} +3 -3
  160. package/dist/{chunk-MZIU27UY.js.map → chunk-JICO4LTT.js.map} +1 -1
  161. package/dist/{chunk-ZNTEM7F2.js → chunk-JJBOKZWV.js} +3 -3
  162. package/dist/{chunk-ZNTEM7F2.js.map → chunk-JJBOKZWV.js.map} +1 -1
  163. package/dist/{chunk-FO4GCX67.cjs → chunk-JM2H642B.cjs} +9 -9
  164. package/dist/{chunk-FO4GCX67.cjs.map → chunk-JM2H642B.cjs.map} +1 -1
  165. package/dist/{chunk-7ZDIQOFH.cjs → chunk-JV6RDIA6.cjs} +13 -13
  166. package/dist/{chunk-7ZDIQOFH.cjs.map → chunk-JV6RDIA6.cjs.map} +1 -1
  167. package/dist/{chunk-K7JGOQJG.js → chunk-KKWNKBKR.js} +3 -3
  168. package/dist/{chunk-K7JGOQJG.js.map → chunk-KKWNKBKR.js.map} +1 -1
  169. package/dist/{chunk-QWSTG5MF.js → chunk-KO2HLNBB.js} +7 -7
  170. package/dist/{chunk-QWSTG5MF.js.map → chunk-KO2HLNBB.js.map} +1 -1
  171. package/dist/{chunk-5QL7XT3N.js → chunk-KQQA7JBC.js} +4 -4
  172. package/dist/{chunk-5QL7XT3N.js.map → chunk-KQQA7JBC.js.map} +1 -1
  173. package/dist/{chunk-DWRMC2FN.cjs → chunk-LMPPAQKP.cjs} +7 -7
  174. package/dist/{chunk-DWRMC2FN.cjs.map → chunk-LMPPAQKP.cjs.map} +1 -1
  175. package/dist/{chunk-JU5W65N3.cjs → chunk-LNFMT2CE.cjs} +18 -18
  176. package/dist/{chunk-JU5W65N3.cjs.map → chunk-LNFMT2CE.cjs.map} +1 -1
  177. package/dist/{chunk-M2S5GCXY.cjs → chunk-LY7PZEF4.cjs} +11 -11
  178. package/dist/{chunk-M2S5GCXY.cjs.map → chunk-LY7PZEF4.cjs.map} +1 -1
  179. package/dist/{chunk-AKIUDPJU.js → chunk-LYHQ4VBR.js} +3 -3
  180. package/dist/{chunk-AKIUDPJU.js.map → chunk-LYHQ4VBR.js.map} +1 -1
  181. package/dist/{chunk-MKFWFZVX.js → chunk-M6AONUIX.js} +3 -3
  182. package/dist/{chunk-MKFWFZVX.js.map → chunk-M6AONUIX.js.map} +1 -1
  183. package/dist/{chunk-KKYP5R3G.cjs → chunk-MCCE5RDB.cjs} +12 -12
  184. package/dist/{chunk-KKYP5R3G.cjs.map → chunk-MCCE5RDB.cjs.map} +1 -1
  185. package/dist/{chunk-X36ZGYTF.js → chunk-MEUR7C6X.js} +5 -5
  186. package/dist/{chunk-X36ZGYTF.js.map → chunk-MEUR7C6X.js.map} +1 -1
  187. package/dist/{chunk-RM4QWJS3.js → chunk-MIUSTEIV.js} +3 -3
  188. package/dist/{chunk-RM4QWJS3.js.map → chunk-MIUSTEIV.js.map} +1 -1
  189. package/dist/chunk-MMW2JGKZ.js +29 -0
  190. package/dist/chunk-MMW2JGKZ.js.map +1 -0
  191. package/dist/{chunk-RID7CYGD.js → chunk-MRRKDRZU.js} +5 -5
  192. package/dist/{chunk-RID7CYGD.js.map → chunk-MRRKDRZU.js.map} +1 -1
  193. package/dist/{chunk-A3CNYKT3.js → chunk-MUCXXYDN.js} +3 -3
  194. package/dist/{chunk-A3CNYKT3.js.map → chunk-MUCXXYDN.js.map} +1 -1
  195. package/dist/{chunk-CZZH45GQ.cjs → chunk-N4VHOTMK.cjs} +9 -9
  196. package/dist/{chunk-CZZH45GQ.cjs.map → chunk-N4VHOTMK.cjs.map} +1 -1
  197. package/dist/{chunk-6FBFE66M.cjs → chunk-N6K2CTSU.cjs} +5 -5
  198. package/dist/{chunk-6FBFE66M.cjs.map → chunk-N6K2CTSU.cjs.map} +1 -1
  199. package/dist/{chunk-DJ3YM72H.cjs → chunk-ND5D7GJB.cjs} +4 -4
  200. package/dist/{chunk-DJ3YM72H.cjs.map → chunk-ND5D7GJB.cjs.map} +1 -1
  201. package/dist/{chunk-YCZN4FWI.js → chunk-NDUEPDNS.js} +3 -3
  202. package/dist/{chunk-YCZN4FWI.js.map → chunk-NDUEPDNS.js.map} +1 -1
  203. package/dist/{chunk-6FYMMQ3G.cjs → chunk-NHTSQRAF.cjs} +10 -10
  204. package/dist/{chunk-6FYMMQ3G.cjs.map → chunk-NHTSQRAF.cjs.map} +1 -1
  205. package/dist/{chunk-PPLR2DNC.cjs → chunk-NP7SU2DF.cjs} +5 -5
  206. package/dist/{chunk-PPLR2DNC.cjs.map → chunk-NP7SU2DF.cjs.map} +1 -1
  207. package/dist/{chunk-POZZY3D5.cjs → chunk-NR346SKH.cjs} +5 -5
  208. package/dist/{chunk-POZZY3D5.cjs.map → chunk-NR346SKH.cjs.map} +1 -1
  209. package/dist/{chunk-TECFGOV2.js → chunk-NTMHP7FS.js} +3 -3
  210. package/dist/{chunk-TECFGOV2.js.map → chunk-NTMHP7FS.js.map} +1 -1
  211. package/dist/{chunk-7XDKIZQE.js → chunk-NUPQJ5SJ.js} +3 -3
  212. package/dist/{chunk-7XDKIZQE.js.map → chunk-NUPQJ5SJ.js.map} +1 -1
  213. package/dist/{chunk-M645OITZ.js → chunk-NYDR2VSA.js} +3 -3
  214. package/dist/{chunk-M645OITZ.js.map → chunk-NYDR2VSA.js.map} +1 -1
  215. package/dist/{chunk-3SQ34IQC.cjs → chunk-NZFJ4XMJ.cjs} +10 -10
  216. package/dist/{chunk-3SQ34IQC.cjs.map → chunk-NZFJ4XMJ.cjs.map} +1 -1
  217. package/dist/{chunk-YT42J4VQ.js → chunk-O6E2WC3J.js} +3 -3
  218. package/dist/{chunk-YT42J4VQ.js.map → chunk-O6E2WC3J.js.map} +1 -1
  219. package/dist/{chunk-5LHG7HEY.cjs → chunk-O6GTY53I.cjs} +4 -4
  220. package/dist/{chunk-5LHG7HEY.cjs.map → chunk-O6GTY53I.cjs.map} +1 -1
  221. package/dist/{chunk-ESKVRRVA.js → chunk-OFHO5SXA.js} +3 -3
  222. package/dist/{chunk-ESKVRRVA.js.map → chunk-OFHO5SXA.js.map} +1 -1
  223. package/dist/{chunk-SCPHSBBU.cjs → chunk-OGEE23SP.cjs} +4 -4
  224. package/dist/{chunk-SCPHSBBU.cjs.map → chunk-OGEE23SP.cjs.map} +1 -1
  225. package/dist/{chunk-RR7BWUVP.cjs → chunk-OS2QC3NE.cjs} +6 -6
  226. package/dist/{chunk-RR7BWUVP.cjs.map → chunk-OS2QC3NE.cjs.map} +1 -1
  227. package/dist/{chunk-F6SCZCJE.js → chunk-P7F32HIH.js} +3 -3
  228. package/dist/{chunk-F6SCZCJE.js.map → chunk-P7F32HIH.js.map} +1 -1
  229. package/dist/{chunk-WXADO5TS.cjs → chunk-PAESRUUH.cjs} +10 -10
  230. package/dist/{chunk-WXADO5TS.cjs.map → chunk-PAESRUUH.cjs.map} +1 -1
  231. package/dist/{chunk-PH3WGR5P.cjs → chunk-PFEFKLUV.cjs} +8 -8
  232. package/dist/{chunk-PH3WGR5P.cjs.map → chunk-PFEFKLUV.cjs.map} +1 -1
  233. package/dist/{chunk-5HOQ2PHR.cjs → chunk-PV5WDIGM.cjs} +9 -9
  234. package/dist/{chunk-5HOQ2PHR.cjs.map → chunk-PV5WDIGM.cjs.map} +1 -1
  235. package/dist/{chunk-DDRHCFUE.js → chunk-PVQBXEV3.js} +6 -6
  236. package/dist/{chunk-DDRHCFUE.js.map → chunk-PVQBXEV3.js.map} +1 -1
  237. package/dist/{chunk-D7NAXQ2N.js → chunk-PWEZCMIY.js} +3 -3
  238. package/dist/{chunk-D7NAXQ2N.js.map → chunk-PWEZCMIY.js.map} +1 -1
  239. package/dist/{chunk-LYFUPTLG.cjs → chunk-PWLBHNOA.cjs} +14 -14
  240. package/dist/{chunk-LYFUPTLG.cjs.map → chunk-PWLBHNOA.cjs.map} +1 -1
  241. package/dist/{chunk-BPBI3WWQ.cjs → chunk-QAFAPHAF.cjs} +8 -8
  242. package/dist/{chunk-BPBI3WWQ.cjs.map → chunk-QAFAPHAF.cjs.map} +1 -1
  243. package/dist/{chunk-AC7M7JDO.cjs → chunk-QDVDBUJM.cjs} +6 -6
  244. package/dist/{chunk-AC7M7JDO.cjs.map → chunk-QDVDBUJM.cjs.map} +1 -1
  245. package/dist/{chunk-2ICXWLKS.js → chunk-QJKWBU3I.js} +3 -3
  246. package/dist/{chunk-2ICXWLKS.js.map → chunk-QJKWBU3I.js.map} +1 -1
  247. package/dist/{chunk-JXIBUIEY.cjs → chunk-QKFOJKVE.cjs} +4 -4
  248. package/dist/{chunk-JXIBUIEY.cjs.map → chunk-QKFOJKVE.cjs.map} +1 -1
  249. package/dist/{chunk-NNSNANNY.cjs → chunk-QOGKO6JH.cjs} +5 -5
  250. package/dist/{chunk-NNSNANNY.cjs.map → chunk-QOGKO6JH.cjs.map} +1 -1
  251. package/dist/{chunk-B3HVWXIQ.cjs → chunk-QSFTWIUH.cjs} +8 -8
  252. package/dist/{chunk-B3HVWXIQ.cjs.map → chunk-QSFTWIUH.cjs.map} +1 -1
  253. package/dist/{chunk-3MHVFEIP.cjs → chunk-QW66UHWO.cjs} +4 -4
  254. package/dist/{chunk-3MHVFEIP.cjs.map → chunk-QW66UHWO.cjs.map} +1 -1
  255. package/dist/{chunk-IGYIMS6J.js → chunk-RA2VOQ46.js} +3 -3
  256. package/dist/{chunk-IGYIMS6J.js.map → chunk-RA2VOQ46.js.map} +1 -1
  257. package/dist/{chunk-HG6XUJOT.js → chunk-RFLPFQFF.js} +3 -3
  258. package/dist/{chunk-HG6XUJOT.js.map → chunk-RFLPFQFF.js.map} +1 -1
  259. package/dist/{chunk-KICZTIZL.cjs → chunk-RKG2Q2HT.cjs} +7 -7
  260. package/dist/{chunk-KICZTIZL.cjs.map → chunk-RKG2Q2HT.cjs.map} +1 -1
  261. package/dist/{chunk-PRJSEZ5F.cjs → chunk-RN2EW7CK.cjs} +12 -12
  262. package/dist/{chunk-PRJSEZ5F.cjs.map → chunk-RN2EW7CK.cjs.map} +1 -1
  263. package/dist/{chunk-EERAEPQO.cjs → chunk-RPVCMW64.cjs} +12 -12
  264. package/dist/{chunk-EERAEPQO.cjs.map → chunk-RPVCMW64.cjs.map} +1 -1
  265. package/dist/{chunk-ATFXU6R6.js → chunk-RSLZL6VP.js} +3 -3
  266. package/dist/{chunk-ATFXU6R6.js.map → chunk-RSLZL6VP.js.map} +1 -1
  267. package/dist/{chunk-HNITJ2UR.js → chunk-SAF5642F.js} +4 -4
  268. package/dist/{chunk-HNITJ2UR.js.map → chunk-SAF5642F.js.map} +1 -1
  269. package/dist/{chunk-4UA45GB4.js → chunk-SG3L4322.js} +6 -6
  270. package/dist/{chunk-4UA45GB4.js.map → chunk-SG3L4322.js.map} +1 -1
  271. package/dist/{chunk-PG3ILQIW.js → chunk-SLJD25VV.js} +3 -3
  272. package/dist/{chunk-PG3ILQIW.js.map → chunk-SLJD25VV.js.map} +1 -1
  273. package/dist/{chunk-EQGY3QDJ.cjs → chunk-SO4NNG26.cjs} +7 -7
  274. package/dist/{chunk-EQGY3QDJ.cjs.map → chunk-SO4NNG26.cjs.map} +1 -1
  275. package/dist/{chunk-DZD2RJVD.js → chunk-SOYORSLZ.js} +3 -3
  276. package/dist/{chunk-DZD2RJVD.js.map → chunk-SOYORSLZ.js.map} +1 -1
  277. package/dist/{chunk-MGZE2QEM.cjs → chunk-SUCBR6L5.cjs} +6 -6
  278. package/dist/{chunk-MGZE2QEM.cjs.map → chunk-SUCBR6L5.cjs.map} +1 -1
  279. package/dist/{chunk-NLJGNPNN.js → chunk-SWBF2BXA.js} +3 -3
  280. package/dist/{chunk-NLJGNPNN.js.map → chunk-SWBF2BXA.js.map} +1 -1
  281. package/dist/{chunk-6H6OYLMJ.js → chunk-SX4CSO6C.js} +3 -3
  282. package/dist/{chunk-6H6OYLMJ.js.map → chunk-SX4CSO6C.js.map} +1 -1
  283. package/dist/{chunk-ORFHF6PT.cjs → chunk-T5OCRKPD.cjs} +6 -6
  284. package/dist/{chunk-ORFHF6PT.cjs.map → chunk-T5OCRKPD.cjs.map} +1 -1
  285. package/dist/{chunk-AGDW5ENV.js → chunk-TB35HNBE.js} +3 -3
  286. package/dist/{chunk-AGDW5ENV.js.map → chunk-TB35HNBE.js.map} +1 -1
  287. package/dist/{chunk-RES2GOQQ.js → chunk-TDDWWAM5.js} +3 -3
  288. package/dist/{chunk-RES2GOQQ.js.map → chunk-TDDWWAM5.js.map} +1 -1
  289. package/dist/{chunk-6L6LI2RL.cjs → chunk-TGNQ5Y6F.cjs} +4 -4
  290. package/dist/{chunk-6L6LI2RL.cjs.map → chunk-TGNQ5Y6F.cjs.map} +1 -1
  291. package/dist/{chunk-I462NM2A.cjs → chunk-TH7VP4CL.cjs} +5 -5
  292. package/dist/{chunk-I462NM2A.cjs.map → chunk-TH7VP4CL.cjs.map} +1 -1
  293. package/dist/{chunk-PYRMH34E.js → chunk-TJJ63UJV.js} +3 -3
  294. package/dist/{chunk-PYRMH34E.js.map → chunk-TJJ63UJV.js.map} +1 -1
  295. package/dist/{chunk-I25RP6AM.js → chunk-TQFQUNV3.js} +3 -3
  296. package/dist/{chunk-I25RP6AM.js.map → chunk-TQFQUNV3.js.map} +1 -1
  297. package/dist/{chunk-RMFLRBUC.cjs → chunk-TWSPVX6X.cjs} +8 -8
  298. package/dist/{chunk-RMFLRBUC.cjs.map → chunk-TWSPVX6X.cjs.map} +1 -1
  299. package/dist/{chunk-UPVWN72I.cjs → chunk-TXCAIL5X.cjs} +7 -7
  300. package/dist/{chunk-UPVWN72I.cjs.map → chunk-TXCAIL5X.cjs.map} +1 -1
  301. package/dist/{chunk-LZL2KD4P.cjs → chunk-TZHK3LEW.cjs} +9 -9
  302. package/dist/{chunk-LZL2KD4P.cjs.map → chunk-TZHK3LEW.cjs.map} +1 -1
  303. package/dist/{chunk-74ZN5CNE.js → chunk-UIJR26YW.js} +3 -3
  304. package/dist/{chunk-74ZN5CNE.js.map → chunk-UIJR26YW.js.map} +1 -1
  305. package/dist/{chunk-CFBK5RIZ.js → chunk-UKUNWGL5.js} +3 -3
  306. package/dist/{chunk-CFBK5RIZ.js.map → chunk-UKUNWGL5.js.map} +1 -1
  307. package/dist/{chunk-IGU5YXRV.cjs → chunk-UMJ3JMDT.cjs} +9 -9
  308. package/dist/{chunk-IGU5YXRV.cjs.map → chunk-UMJ3JMDT.cjs.map} +1 -1
  309. package/dist/{chunk-JHEM6IGT.cjs → chunk-V35A6B7A.cjs} +4 -4
  310. package/dist/{chunk-JHEM6IGT.cjs.map → chunk-V35A6B7A.cjs.map} +1 -1
  311. package/dist/{chunk-PRDWJ4AR.js → chunk-VFIVF5YO.js} +3 -3
  312. package/dist/{chunk-PRDWJ4AR.js.map → chunk-VFIVF5YO.js.map} +1 -1
  313. package/dist/{chunk-Y6DK4CGY.js → chunk-VGAOLXTK.js} +14 -14
  314. package/dist/{chunk-Y6DK4CGY.js.map → chunk-VGAOLXTK.js.map} +1 -1
  315. package/dist/{chunk-IJ4I55QQ.cjs → chunk-VGBZWDMM.cjs} +4 -4
  316. package/dist/{chunk-IJ4I55QQ.cjs.map → chunk-VGBZWDMM.cjs.map} +1 -1
  317. package/dist/{chunk-DBJWHDWP.js → chunk-VKMPVFQK.js} +3 -3
  318. package/dist/{chunk-DBJWHDWP.js.map → chunk-VKMPVFQK.js.map} +1 -1
  319. package/dist/{chunk-5OC6DUYT.js → chunk-VME5743O.js} +3 -3
  320. package/dist/{chunk-5OC6DUYT.js.map → chunk-VME5743O.js.map} +1 -1
  321. package/dist/{chunk-YVDAXYHP.js → chunk-VOGI7GX3.js} +3 -3
  322. package/dist/{chunk-YVDAXYHP.js.map → chunk-VOGI7GX3.js.map} +1 -1
  323. package/dist/{chunk-R55HE5C5.js → chunk-VVL5LMLW.js} +3 -3
  324. package/dist/{chunk-R55HE5C5.js.map → chunk-VVL5LMLW.js.map} +1 -1
  325. package/dist/{chunk-2CYRAKWI.cjs → chunk-VW6WUXFR.cjs} +11 -11
  326. package/dist/{chunk-2CYRAKWI.cjs.map → chunk-VW6WUXFR.cjs.map} +1 -1
  327. package/dist/{chunk-6RYZ2MOE.js → chunk-VYQI4R6S.js} +4 -4
  328. package/dist/{chunk-6RYZ2MOE.js.map → chunk-VYQI4R6S.js.map} +1 -1
  329. package/dist/{chunk-HBFVOHQC.cjs → chunk-WCWZADR2.cjs} +7 -7
  330. package/dist/{chunk-HBFVOHQC.cjs.map → chunk-WCWZADR2.cjs.map} +1 -1
  331. package/dist/{chunk-IXHZVFHX.cjs → chunk-WKAEAGMT.cjs} +4 -4
  332. package/dist/{chunk-IXHZVFHX.cjs.map → chunk-WKAEAGMT.cjs.map} +1 -1
  333. package/dist/{chunk-PBXYU4EV.cjs → chunk-WKNVZUWZ.cjs} +5 -5
  334. package/dist/{chunk-PBXYU4EV.cjs.map → chunk-WKNVZUWZ.cjs.map} +1 -1
  335. package/dist/{chunk-6BW5BQMN.cjs → chunk-XKDW6B7X.cjs} +4 -4
  336. package/dist/{chunk-6BW5BQMN.cjs.map → chunk-XKDW6B7X.cjs.map} +1 -1
  337. package/dist/{chunk-23CLGUMT.cjs → chunk-XLFGWNW4.cjs} +4 -4
  338. package/dist/{chunk-23CLGUMT.cjs.map → chunk-XLFGWNW4.cjs.map} +1 -1
  339. package/dist/{chunk-PJ4TQ6YO.js → chunk-XLVYW5LK.js} +5 -5
  340. package/dist/{chunk-PJ4TQ6YO.js.map → chunk-XLVYW5LK.js.map} +1 -1
  341. package/dist/{chunk-MPDLL4X3.cjs → chunk-XQNYFXBY.cjs} +8 -8
  342. package/dist/{chunk-MPDLL4X3.cjs.map → chunk-XQNYFXBY.cjs.map} +1 -1
  343. package/dist/{chunk-I2JXK25I.js → chunk-XXBW4EUO.js} +3 -3
  344. package/dist/{chunk-I2JXK25I.js.map → chunk-XXBW4EUO.js.map} +1 -1
  345. package/dist/{chunk-RA3P63XW.cjs → chunk-Y3T7WMT6.cjs} +4 -4
  346. package/dist/{chunk-RA3P63XW.cjs.map → chunk-Y3T7WMT6.cjs.map} +1 -1
  347. package/dist/{chunk-LPQVXTKV.js → chunk-Y4UPKJN5.js} +3 -3
  348. package/dist/{chunk-LPQVXTKV.js.map → chunk-Y4UPKJN5.js.map} +1 -1
  349. package/dist/{chunk-47TFRODY.cjs → chunk-YAJYIRQL.cjs} +4 -4
  350. package/dist/{chunk-47TFRODY.cjs.map → chunk-YAJYIRQL.cjs.map} +1 -1
  351. package/dist/{chunk-DTPGJNOI.js → chunk-YCV43A7D.js} +3 -3
  352. package/dist/{chunk-DTPGJNOI.js.map → chunk-YCV43A7D.js.map} +1 -1
  353. package/dist/{chunk-YT6N44Z3.js → chunk-YF2EHBTV.js} +3 -3
  354. package/dist/{chunk-YT6N44Z3.js.map → chunk-YF2EHBTV.js.map} +1 -1
  355. package/dist/{chunk-4CM2VMLR.js → chunk-YLDYGT5O.js} +3 -3
  356. package/dist/{chunk-4CM2VMLR.js.map → chunk-YLDYGT5O.js.map} +1 -1
  357. package/dist/{chunk-JIYP73OJ.js → chunk-YQJWD53X.js} +3 -3
  358. package/dist/{chunk-JIYP73OJ.js.map → chunk-YQJWD53X.js.map} +1 -1
  359. package/dist/{chunk-O4MKOSU2.js → chunk-YTMQ2K64.js} +3 -3
  360. package/dist/{chunk-O4MKOSU2.js.map → chunk-YTMQ2K64.js.map} +1 -1
  361. package/dist/{chunk-IF25CE6S.cjs → chunk-YTXBU6QC.cjs} +6 -6
  362. package/dist/{chunk-IF25CE6S.cjs.map → chunk-YTXBU6QC.cjs.map} +1 -1
  363. package/dist/{chunk-F6NEPU67.cjs → chunk-Z43BI7CQ.cjs} +10 -10
  364. package/dist/{chunk-F6NEPU67.cjs.map → chunk-Z43BI7CQ.cjs.map} +1 -1
  365. package/dist/{chunk-BEGDL2CD.js → chunk-ZI7JP3TN.js} +3 -3
  366. package/dist/{chunk-BEGDL2CD.js.map → chunk-ZI7JP3TN.js.map} +1 -1
  367. package/dist/{chunk-3F66SAE7.js → chunk-ZKFFHIEW.js} +3 -3
  368. package/dist/{chunk-3F66SAE7.js.map → chunk-ZKFFHIEW.js.map} +1 -1
  369. package/dist/{chunk-QFFC2DKK.js → chunk-ZLWCZV7R.js} +3 -3
  370. package/dist/{chunk-QFFC2DKK.js.map → chunk-ZLWCZV7R.js.map} +1 -1
  371. package/dist/{chunk-BWTFK2GV.cjs → chunk-ZMD3PIYF.cjs} +12 -12
  372. package/dist/{chunk-BWTFK2GV.cjs.map → chunk-ZMD3PIYF.cjs.map} +1 -1
  373. package/dist/{chunk-5I4PR2KV.cjs → chunk-ZPHHKIFV.cjs} +10 -10
  374. package/dist/{chunk-5I4PR2KV.cjs.map → chunk-ZPHHKIFV.cjs.map} +1 -1
  375. package/dist/{chunk-JPTWZ3RF.cjs → chunk-ZTC3EQFZ.cjs} +8 -8
  376. package/dist/{chunk-JPTWZ3RF.cjs.map → chunk-ZTC3EQFZ.cjs.map} +1 -1
  377. package/dist/chunk-ZU5Q77OT.cjs +31 -0
  378. package/dist/chunk-ZU5Q77OT.cjs.map +1 -0
  379. package/dist/{chunk-ORPYY2MO.cjs → chunk-ZVDW2VX5.cjs} +4 -4
  380. package/dist/{chunk-ORPYY2MO.cjs.map → chunk-ZVDW2VX5.cjs.map} +1 -1
  381. package/dist/{chunk-4DQ6HX27.cjs → chunk-ZVRVOKXH.cjs} +7 -7
  382. package/dist/{chunk-4DQ6HX27.cjs.map → chunk-ZVRVOKXH.cjs.map} +1 -1
  383. package/dist/code-view.cjs +3 -3
  384. package/dist/code-view.js +2 -2
  385. package/dist/color-picker.cjs +3 -3
  386. package/dist/color-picker.js +2 -2
  387. package/dist/command.cjs +4 -4
  388. package/dist/command.js +2 -2
  389. package/dist/composer.cjs +3 -3
  390. package/dist/composer.js +2 -2
  391. package/dist/container.cjs +3 -3
  392. package/dist/container.js +2 -2
  393. package/dist/content-renderer.cjs +5 -5
  394. package/dist/content-renderer.js +2 -2
  395. package/dist/context-menu.cjs +4 -4
  396. package/dist/context-menu.js +2 -2
  397. package/dist/date-picker.cjs +5 -5
  398. package/dist/date-picker.js +4 -4
  399. package/dist/drawer.cjs +4 -4
  400. package/dist/drawer.js +2 -2
  401. package/dist/dropdown.cjs +4 -4
  402. package/dist/dropdown.js +2 -2
  403. package/dist/editor.cjs +6 -6
  404. package/dist/editor.js +4 -4
  405. package/dist/emoji-select.cjs +3 -3
  406. package/dist/emoji-select.js +2 -2
  407. package/dist/emoji.cjs +3 -3
  408. package/dist/emoji.js +2 -2
  409. package/dist/eyebrow.cjs +3 -3
  410. package/dist/eyebrow.js +2 -2
  411. package/dist/faux-client.cjs +3 -3
  412. package/dist/faux-client.js +2 -2
  413. package/dist/field.cjs +3 -3
  414. package/dist/field.js +2 -2
  415. package/dist/file-browser.cjs +6 -6
  416. package/dist/file-browser.js +2 -2
  417. package/dist/file-upload.cjs +4 -4
  418. package/dist/file-upload.js +2 -2
  419. package/dist/grid.cjs +3 -3
  420. package/dist/grid.js +2 -2
  421. package/dist/heading.cjs +3 -3
  422. package/dist/heading.js +2 -2
  423. package/dist/icon.cjs +8 -8
  424. package/dist/icon.js +2 -2
  425. package/dist/image-viewer.cjs +3 -3
  426. package/dist/image-viewer.js +2 -2
  427. package/dist/index-list.cjs +3 -3
  428. package/dist/index-list.js +2 -2
  429. package/dist/index.cjs +220 -220
  430. package/dist/index.d.cts +7 -1
  431. package/dist/index.d.ts +7 -1
  432. package/dist/index.js +87 -87
  433. package/dist/input.cjs +6 -6
  434. package/dist/input.js +5 -5
  435. package/dist/inputs.cjs +26 -26
  436. package/dist/inputs.js +14 -14
  437. package/dist/json-editor.cjs +27 -27
  438. package/dist/json-editor.js +16 -16
  439. package/dist/kanban.cjs +4 -4
  440. package/dist/kanban.js +2 -2
  441. package/dist/kbd.cjs +3 -3
  442. package/dist/kbd.js +2 -2
  443. package/dist/magic-wand.cjs +10 -10
  444. package/dist/magic-wand.js +9 -9
  445. package/dist/marquee.cjs +3 -3
  446. package/dist/marquee.js +2 -2
  447. package/dist/media-viewer.cjs +7 -7
  448. package/dist/media-viewer.js +6 -6
  449. package/dist/menu.cjs +4 -4
  450. package/dist/menu.js +2 -2
  451. package/dist/mobile-menu.cjs +4 -4
  452. package/dist/mobile-menu.js +2 -2
  453. package/dist/modal.cjs +4 -4
  454. package/dist/modal.js +2 -2
  455. package/dist/mode.cjs +3 -3
  456. package/dist/mode.js +2 -2
  457. package/dist/multi-switch.cjs +5 -5
  458. package/dist/multi-switch.js +4 -4
  459. package/dist/navbar.cjs +4 -4
  460. package/dist/navbar.js +2 -2
  461. package/dist/otp-input.cjs +3 -3
  462. package/dist/otp-input.js +2 -2
  463. package/dist/pagination.cjs +3 -3
  464. package/dist/pagination.js +2 -2
  465. package/dist/pdf-viewer.cjs +3 -3
  466. package/dist/pdf-viewer.js +2 -2
  467. package/dist/pillbox.cjs +3 -3
  468. package/dist/pillbox.js +2 -2
  469. package/dist/popover.cjs +4 -4
  470. package/dist/popover.js +2 -2
  471. package/dist/profile.cjs +4 -4
  472. package/dist/profile.js +3 -3
  473. package/dist/progress.cjs +3 -3
  474. package/dist/progress.js +2 -2
  475. package/dist/prompt-input.cjs +6 -6
  476. package/dist/prompt-input.js +5 -5
  477. package/dist/pull-quote.cjs +3 -3
  478. package/dist/pull-quote.js +2 -2
  479. package/dist/radio-group.cjs +5 -5
  480. package/dist/radio-group.js +4 -4
  481. package/dist/reason-tag.cjs +6 -6
  482. package/dist/reason-tag.js +5 -5
  483. package/dist/section.cjs +3 -3
  484. package/dist/section.js +2 -2
  485. package/dist/select.cjs +6 -6
  486. package/dist/select.js +5 -5
  487. package/dist/separator.cjs +3 -3
  488. package/dist/separator.js +2 -2
  489. package/dist/sidebar.cjs +4 -4
  490. package/dist/sidebar.js +2 -2
  491. package/dist/skeleton.cjs +3 -3
  492. package/dist/skeleton.js +2 -2
  493. package/dist/slider.cjs +5 -5
  494. package/dist/slider.js +4 -4
  495. package/dist/stat-list.cjs +3 -3
  496. package/dist/stat-list.js +2 -2
  497. package/dist/stat.cjs +4 -4
  498. package/dist/stat.js +2 -2
  499. package/dist/sticky-note.cjs +3 -3
  500. package/dist/sticky-note.js +2 -2
  501. package/dist/switch.cjs +3 -3
  502. package/dist/switch.js +2 -2
  503. package/dist/table.cjs +12 -12
  504. package/dist/table.js +2 -2
  505. package/dist/tabs.cjs +4 -4
  506. package/dist/tabs.js +2 -2
  507. package/dist/text.cjs +3 -3
  508. package/dist/text.js +2 -2
  509. package/dist/textarea.cjs +6 -6
  510. package/dist/textarea.js +5 -5
  511. package/dist/time-grid.cjs +3 -3
  512. package/dist/time-grid.js +2 -2
  513. package/dist/time-picker.cjs +3 -3
  514. package/dist/time-picker.js +2 -2
  515. package/dist/timeline.cjs +5 -5
  516. package/dist/timeline.js +2 -2
  517. package/dist/toast.cjs +4 -4
  518. package/dist/toast.js +2 -2
  519. package/dist/tooltip.cjs +3 -3
  520. package/dist/tooltip.js +2 -2
  521. package/dist/tree-nav.cjs +4 -4
  522. package/dist/tree-nav.js +2 -2
  523. package/dist/video-viewer.cjs +3 -3
  524. package/dist/video-viewer.js +2 -2
  525. package/package.json +1 -2
  526. package/dist/chunk-3Z6ALUWP.cjs +0 -13
  527. package/dist/chunk-3Z6ALUWP.cjs.map +0 -1
  528. package/dist/chunk-DSUHZO6T.js +0 -11
  529. package/dist/chunk-DSUHZO6T.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/TreeNav/TreeNav.context.ts","../src/components/TreeNav/TreeNode.tsx","../src/components/TreeNav/TreeNav.tsx"],"names":["useCallback","jsx"],"mappings":"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","file":"chunk-7XDKIZQE.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TreeNavContextValue } from \"./TreeNav.types\";\n\nexport const TreeNavContext = createContext<TreeNavContextValue | null>(null);\n\nexport function useTreeNav(): TreeNavContextValue {\n const ctx = useContext(TreeNavContext);\n if (!ctx) {\n throw new Error(\"useTreeNav must be used within a <TreeNav> component\");\n }\n return ctx;\n}\n","import { useRef, useEffect, useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useTreeNav } from \"./TreeNav.context\";\nimport type { TreeNodeProps, TreeNodeData, DropPosition } from \"./TreeNav.types\";\n\nconst EXT_COLORS: Record<string, string> = {\n ts: \"#3178c6\",\n tsx: \"#3178c6\",\n js: \"#f7df1e\",\n jsx: \"#f7df1e\",\n php: \"#777bb4\",\n html: \"#e34c26\",\n htm: \"#e34c26\",\n css: \"#264de4\",\n json: \"#a1a1aa\",\n md: \"#71717a\",\n yaml: \"#cb171e\",\n yml: \"#cb171e\",\n};\n\nfunction FileIcon({ ext }: { ext?: string }) {\n const color = (ext && EXT_COLORS[ext.toLowerCase()]) || \"#71717a\";\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M4 1h5.5L13 4.5V14a1 1 0 01-1 1H4a1 1 0 01-1-1V2a1 1 0 011-1z\" stroke={color} strokeWidth=\"1.2\" />\n <path d=\"M9 1v4h4\" stroke={color} strokeWidth=\"1.2\" />\n </svg>\n );\n}\n\nfunction FolderIcon({ open }: { open: boolean }) {\n if (open) {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M1.5 3.5a1 1 0 011-1h3l1.5 1.5H13a1 1 0 011 1V5H2.5V3.5z\" fill=\"#fbbf24\" />\n <path d=\"M1 6h13l-1.5 7.5H2.5L1 6z\" fill=\"#fbbf24\" opacity=\"0.7\" />\n </svg>\n );\n }\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M1.5 3a1 1 0 011-1h3l1.5 1.5H13a1 1 0 011 1v8a1 1 0 01-1 1H2.5a1 1 0 01-1-1V3z\" fill=\"#fbbf24\" />\n </svg>\n );\n}\n\nfunction ChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"shrink-0 transition-transform duration-150\", open && \"rotate-90\")}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\nfunction isDescendantOf(\n nodes: TreeNodeData[],\n ancestorId: string,\n targetId: string,\n): boolean {\n function findNode(haystack: TreeNodeData[], id: string): TreeNodeData | undefined {\n for (const n of haystack) {\n if (n.id === id) return n;\n if (n.children) {\n const found = findNode(n.children, id);\n if (found) return found;\n }\n }\n return undefined;\n }\n\n function hasDescendant(node: TreeNodeData, id: string): boolean {\n if (!node.children) return false;\n for (const child of node.children) {\n if (child.id === id) return true;\n if (hasDescendant(child, id)) return true;\n }\n return false;\n }\n\n const ancestor = findNode(nodes, ancestorId);\n return ancestor ? hasDescendant(ancestor, targetId) : false;\n}\n\nfunction computeDropPosition(\n e: React.DragEvent,\n isFolder: boolean,\n): DropPosition {\n const rect = e.currentTarget.getBoundingClientRect();\n const offsetY = e.clientY - rect.top;\n const third = rect.height / 3;\n\n if (offsetY < third) return \"before\";\n if (offsetY > third * 2) return \"after\";\n return isFolder ? \"inside\" : \"after\";\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function TreeNode({ node, depth }: TreeNodeProps) {\n const {\n selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, setDragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode,\n } = useTreeNav();\n\n const isFolder = node.type === \"folder\" || (node.children && node.children.length > 0);\n const isExpanded = expandedIds.includes(node.id);\n const isSelected = selectedId === node.id;\n const paddingLeft = depth * indentSize + 4;\n\n const isDragging = dragState.draggedNodeId === node.id;\n const isDropTarget = dragState.dropTargetId === node.id;\n const dropPosition = isDropTarget ? dragState.dropPosition : null;\n\n // Auto-expand timer for folders during drag\n const autoExpandTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearAutoExpand = useCallback(() => {\n if (autoExpandTimer.current) {\n clearTimeout(autoExpandTimer.current);\n autoExpandTimer.current = null;\n }\n }, []);\n\n useEffect(() => clearAutoExpand, [clearAutoExpand]);\n\n // ---------------------------------------------------------------------------\n // Click handlers\n // ---------------------------------------------------------------------------\n\n const handleClick = () => {\n if (node.disabled) return;\n if (isFolder) {\n toggle(node.id);\n }\n onSelect?.(node.id, node);\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n if (onNodeContextMenu) {\n e.preventDefault();\n onNodeContextMenu(e, node);\n }\n };\n\n // ---------------------------------------------------------------------------\n // Drag source handlers\n // ---------------------------------------------------------------------------\n\n const handleDragStart = useCallback((e: React.DragEvent) => {\n e.dataTransfer.setData(\"text/plain\", node.id);\n e.dataTransfer.effectAllowed = \"move\";\n // Set state async so the browser captures the element for the drag ghost first\n requestAnimationFrame(() => {\n setDragState({ draggedNodeId: node.id, dropTargetId: null, dropPosition: null });\n });\n }, [node.id, setDragState]);\n\n const handleDragEnd = useCallback(() => {\n clearAutoExpand();\n setDragState({ draggedNodeId: null, dropTargetId: null, dropPosition: null });\n }, [clearAutoExpand, setDragState]);\n\n // ---------------------------------------------------------------------------\n // Drop target handlers (on outer div)\n // ---------------------------------------------------------------------------\n\n const isExternalDrag = !dragState.draggedNodeId;\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n if (isExternalDrag) {\n // External drop accepted only when host opted in.\n if (!acceptExternalDrops) return;\n } else {\n const sourceId = dragState.draggedNodeId!;\n if (sourceId === node.id) return;\n if (isDescendantOf(nodes, sourceId, node.id)) return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n e.dataTransfer.dropEffect = isExternalDrag ? \"copy\" : \"move\";\n\n const position = computeDropPosition(e, !!isFolder);\n\n // Auto-expand collapsed folders when hovering \"inside\"\n if (isFolder && !isExpanded && position === \"inside\") {\n if (!autoExpandTimer.current) {\n autoExpandTimer.current = setTimeout(() => {\n expandNode(node.id);\n autoExpandTimer.current = null;\n }, 500);\n }\n } else {\n clearAutoExpand();\n }\n\n if (dragState.dropTargetId !== node.id || dragState.dropPosition !== position) {\n setDragState({ draggedNodeId: dragState.draggedNodeId, dropTargetId: node.id, dropPosition: position });\n }\n }, [dragState, isExternalDrag, acceptExternalDrops, node.id, isFolder, isExpanded, nodes, setDragState, expandNode, clearAutoExpand]);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n clearAutoExpand();\n if (dragState.dropTargetId === node.id) {\n setDragState({ ...dragState, dropTargetId: null, dropPosition: null });\n }\n }\n }, [dragState, node.id, setDragState, clearAutoExpand]);\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n clearAutoExpand();\n\n const sourceId = dragState.draggedNodeId;\n const position = dragState.dropPosition ?? computeDropPosition(e, !!isFolder);\n\n if (sourceId) {\n // Internal node move.\n if (sourceId === node.id) return;\n if (isDescendantOf(nodes, sourceId, node.id)) return;\n onNodeMove?.(sourceId, node.id, position);\n } else if (acceptExternalDrops) {\n // External drop — files, items from other components, etc.\n onExternalDrop?.(e, node, position);\n }\n\n setDragState({ draggedNodeId: null, dropTargetId: null, dropPosition: null });\n }, [dragState, node, isFolder, nodes, onNodeMove, acceptExternalDrops, onExternalDrop, setDragState, clearAutoExpand]);\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n const canDrag = draggable && !node.disabled;\n const dropEnabled = draggable || acceptExternalDrops;\n\n return (\n <div\n data-react-fancy-tree-node=\"\"\n onDragOver={dropEnabled ? handleDragOver : undefined}\n onDragLeave={dropEnabled ? handleDragLeave : undefined}\n onDrop={dropEnabled ? handleDrop : undefined}\n >\n {/* Before drop indicator */}\n {isDropTarget && dropPosition === \"before\" && (\n <div\n data-react-fancy-tree-drop-indicator=\"before\"\n className=\"pointer-events-none h-0.5 rounded-full bg-blue-500\"\n style={{ marginLeft: paddingLeft }}\n />\n )}\n\n <button\n type=\"button\"\n draggable={canDrag}\n onDragStart={canDrag ? handleDragStart : undefined}\n onDragEnd={canDrag ? handleDragEnd : undefined}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n disabled={node.disabled}\n className={cn(\n \"flex w-full items-center gap-1 rounded-md py-0.5 text-left text-[13px] transition-colors\",\n isSelected\n ? \"bg-blue-500/15 text-blue-600 dark:text-blue-400\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n node.disabled && \"pointer-events-none opacity-40\",\n isDragging && \"opacity-50\",\n // Grab affordance. By default (`dragCursor=\"none\"`) the row keeps its\n // normal click cursor on hover — no open-hand \"move me\" cursor before\n // any drag — and only shows the closed-hand `grabbing` cursor while a\n // drag is actually underway (mousedown/drag). `dragCursor=\"grab\"` opts\n // back into the always-on grab cursor for whole-row drag handles (#14).\n canDrag &&\n (dragCursor === \"grab\" ? \"cursor-grab active:cursor-grabbing\" : \"active:cursor-grabbing\"),\n isDropTarget && dropPosition === \"inside\" && \"bg-blue-500/10 ring-1 ring-blue-500/30 ring-inset\",\n )}\n style={{ paddingLeft }}\n >\n {isFolder && <ChevronIcon open={isExpanded} />}\n {!isFolder && <span className=\"w-3.5 shrink-0\" />}\n {showIcons && (\n node.icon ?? (isFolder\n ? <FolderIcon open={isExpanded} />\n : <FileIcon ext={node.ext ?? node.label.split(\".\").pop()} />)\n )}\n <span className=\"truncate\">{node.label}</span>\n </button>\n\n {/* After drop indicator */}\n {isDropTarget && dropPosition === \"after\" && (\n <div\n data-react-fancy-tree-drop-indicator=\"after\"\n className=\"pointer-events-none h-0.5 rounded-full bg-blue-500\"\n style={{ marginLeft: paddingLeft }}\n />\n )}\n\n {isFolder && isExpanded && node.children && (\n <div data-react-fancy-tree-node-children=\"\">\n {node.children.map((child) => (\n <TreeNode key={child.id} node={child} depth={depth + 1} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nTreeNode.displayName = \"TreeNode\";\n","import { useMemo, useCallback, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { TreeNavContext } from \"./TreeNav.context\";\nimport { TreeNode } from \"./TreeNode\";\nimport type { TreeNavProps, TreeNodeData, DragState } from \"./TreeNav.types\";\n\nfunction collectFolderIds(nodes: TreeNodeData[]): string[] {\n const ids: string[] = [];\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n ids.push(...collectFolderIds(node.children));\n }\n }\n return ids;\n}\n\nconst EMPTY_DRAG_STATE: DragState = {\n draggedNodeId: null,\n dropTargetId: null,\n dropPosition: null,\n};\n\nfunction TreeNavRoot({\n nodes,\n selectedId,\n onSelect,\n onNodeContextMenu,\n draggable = false,\n onNodeMove,\n acceptExternalDrops = false,\n onExternalDrop,\n expandedIds: controlledExpanded,\n defaultExpandedIds,\n onExpandedChange,\n defaultExpandAll = false,\n indentSize = 16,\n showIcons = true,\n dragCursor = \"none\",\n className,\n}: TreeNavProps) {\n const [internalExpanded, setInternalExpanded] = useState<string[]>(() => {\n if (defaultExpandedIds) return defaultExpandedIds;\n if (defaultExpandAll) return collectFolderIds(nodes);\n return [];\n });\n\n const isControlled = controlledExpanded !== undefined;\n const expandedIds = isControlled ? controlledExpanded : internalExpanded;\n\n const toggle = useCallback(\n (id: string) => {\n const next = expandedIds.includes(id)\n ? expandedIds.filter((v) => v !== id)\n : [...expandedIds, id];\n\n if (!isControlled) {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n },\n [expandedIds, isControlled, onExpandedChange],\n );\n\n const expandNode = useCallback(\n (id: string) => {\n if (expandedIds.includes(id)) return;\n const next = [...expandedIds, id];\n if (!isControlled) {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n },\n [expandedIds, isControlled, onExpandedChange],\n );\n\n const [dragState, setDragState] = useState<DragState>(EMPTY_DRAG_STATE);\n\n const handleDragEnd = useCallback(() => {\n setDragState(EMPTY_DRAG_STATE);\n }, []);\n\n const ctx = useMemo(\n () => ({\n selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, setDragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode,\n }),\n [selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode],\n );\n\n const dropEnabled = draggable || acceptExternalDrops;\n\n return (\n <TreeNavContext.Provider value={ctx}>\n <nav\n data-react-fancy-tree-nav=\"\"\n className={cn(\"flex flex-col gap-0.5 py-1 text-sm\", className)}\n onDragEnd={dropEnabled ? handleDragEnd : undefined}\n >\n {nodes.map((node) => (\n <TreeNode key={node.id} node={node} depth={0} />\n ))}\n </nav>\n </TreeNavContext.Provider>\n );\n}\n\nTreeNavRoot.displayName = \"TreeNav\";\n\nexport const TreeNav = Object.assign(TreeNavRoot, {\n Node: TreeNode,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/TreeNav/TreeNav.context.ts","../src/components/TreeNav/TreeNode.tsx","../src/components/TreeNav/TreeNav.tsx"],"names":["useCallback","jsx"],"mappings":";;;;AAGO,IAAM,cAAA,GAAiB,cAA0C,IAAI,CAAA;AAErE,SAAS,UAAA,GAAkC;AAChD,EAAA,MAAM,GAAA,GAAM,WAAW,cAAc,CAAA;AACrC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,GAAA;AACT;ACNA,IAAM,UAAA,GAAqC;AAAA,EACzC,EAAA,EAAI,SAAA;AAAA,EACJ,GAAA,EAAK,SAAA;AAAA,EACL,EAAA,EAAI,SAAA;AAAA,EACJ,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,IAAA,EAAM,SAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,SAAA;AAAA,EACL,IAAA,EAAM,SAAA;AAAA,EACN,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAM,SAAA;AAAA,EACN,GAAA,EAAK;AACP,CAAA;AAEA,SAAS,QAAA,CAAS,EAAE,GAAA,EAAI,EAAqB;AAC3C,EAAA,MAAM,QAAS,GAAA,IAAO,UAAA,CAAW,GAAA,CAAI,WAAA,EAAa,CAAA,IAAM,SAAA;AACxD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,UAAA,EACpE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAK,CAAA,EAAE,+DAAA,EAAgE,MAAA,EAAQ,KAAA,EAAO,aAAY,KAAA,EAAM,CAAA;AAAA,wBACxG,MAAA,EAAA,EAAK,CAAA,EAAE,YAAW,MAAA,EAAQ,KAAA,EAAO,aAAY,KAAA,EAAM;AAAA,GAAA,EACtD,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,IAAA,EAAK,EAAsB;AAC/C,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,UAAA,EACpE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0DAAA,EAA2D,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,0BACjF,MAAA,EAAA,EAAK,CAAA,EAAE,6BAA4B,IAAA,EAAK,SAAA,EAAU,SAAQ,KAAA,EAAM;AAAA,KAAA,EACnE,CAAA;AAAA,EAEJ;AACA,EAAA,2BACG,KAAA,EAAA,EAAI,KAAA,EAAM,MAAK,MAAA,EAAO,IAAA,EAAK,SAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,YACpE,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,gFAAA,EAAiF,IAAA,EAAK,WAAU,CAAA,EAC1G,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAK,EAAsB;AAChD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,IAAA,IAAQ,WAAW,CAAA;AAAA,MAE/E,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA,GACpC;AAEJ;AAMA,SAAS,cAAA,CACP,KAAA,EACA,UAAA,EACA,QAAA,EACS;AACT,EAAA,SAAS,QAAA,CAAS,UAA0B,EAAA,EAAsC;AAChF,IAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,MAAA,IAAI,CAAA,CAAE,EAAA,KAAO,EAAA,EAAI,OAAO,CAAA;AACxB,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,CAAE,QAAA,EAAU,EAAE,CAAA;AACrC,QAAA,IAAI,OAAO,OAAO,KAAA;AAAA,MACpB;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,SAAS,aAAA,CAAc,MAAoB,EAAA,EAAqB;AAC9D,IAAA,IAAI,CAAC,IAAA,CAAK,QAAA,EAAU,OAAO,KAAA;AAC3B,IAAA,KAAA,MAAW,KAAA,IAAS,KAAK,QAAA,EAAU;AACjC,MAAA,IAAI,KAAA,CAAM,EAAA,KAAO,EAAA,EAAI,OAAO,IAAA;AAC5B,MAAA,IAAI,aAAA,CAAc,KAAA,EAAO,EAAE,CAAA,EAAG,OAAO,IAAA;AAAA,IACvC;AACA,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,EAAO,UAAU,CAAA;AAC3C,EAAA,OAAO,QAAA,GAAW,aAAA,CAAc,QAAA,EAAU,QAAQ,CAAA,GAAI,KAAA;AACxD;AAEA,SAAS,mBAAA,CACP,GACA,QAAA,EACc;AACd,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,qBAAA,EAAsB;AACnD,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,GAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,GAAS,CAAA;AAE5B,EAAA,IAAI,OAAA,GAAU,OAAO,OAAO,QAAA;AAC5B,EAAA,IAAI,OAAA,GAAU,KAAA,GAAQ,CAAA,EAAG,OAAO,OAAA;AAChC,EAAA,OAAO,WAAW,QAAA,GAAW,OAAA;AAC/B;AAMO,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,EAAM,EAAkB;AACvD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IAAY,QAAA;AAAA,IAAU,iBAAA;AAAA,IAAmB,WAAA;AAAA,IAAa,MAAA;AAAA,IAAQ,UAAA;AAAA,IAAY,SAAA;AAAA,IAC1E,SAAA;AAAA,IAAW,UAAA;AAAA,IAAY,SAAA;AAAA,IAAW,YAAA;AAAA,IAAc,UAAA;AAAA,IAAY,mBAAA;AAAA,IAAqB,cAAA;AAAA,IAAgB,KAAA;AAAA,IAAO;AAAA,MACtG,UAAA,EAAW;AAEf,EAAA,MAAM,QAAA,GAAW,KAAK,IAAA,KAAS,QAAA,IAAa,KAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA;AACpF,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAa,eAAe,IAAA,CAAK,EAAA;AACvC,EAAA,MAAM,WAAA,GAAc,QAAQ,UAAA,GAAa,CAAA;AAEzC,EAAA,MAAM,UAAA,GAAa,SAAA,CAAU,aAAA,KAAkB,IAAA,CAAK,EAAA;AACpD,EAAA,MAAM,YAAA,GAAe,SAAA,CAAU,YAAA,KAAiB,IAAA,CAAK,EAAA;AACrD,EAAA,MAAM,YAAA,GAAe,YAAA,GAAe,SAAA,CAAU,YAAA,GAAe,IAAA;AAG7D,EAAA,MAAM,eAAA,GAAkB,OAA6C,IAAI,CAAA;AAEzE,EAAA,MAAM,eAAA,GAAkB,YAAY,MAAM;AACxC,IAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,MAAA,YAAA,CAAa,gBAAgB,OAAO,CAAA;AACpC,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM,eAAA,EAAiB,CAAC,eAAe,CAAC,CAAA;AAMlD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,KAAK,QAAA,EAAU;AACnB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,IAChB;AACA,IAAA,QAAA,GAAW,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,KAAwB;AACjD,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,iBAAA,CAAkB,GAAG,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA;AAMA,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,CAAA,KAAuB;AAC1D,IAAA,CAAA,CAAE,YAAA,CAAa,OAAA,CAAQ,YAAA,EAAc,IAAA,CAAK,EAAE,CAAA;AAC5C,IAAA,CAAA,CAAE,aAAa,aAAA,GAAgB,MAAA;AAE/B,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,YAAA,CAAa,EAAE,eAAe,IAAA,CAAK,EAAA,EAAI,cAAc,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAAA,IACjF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,IAAA,CAAK,EAAA,EAAI,YAAY,CAAC,CAAA;AAE1B,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,eAAA,EAAgB;AAChB,IAAA,YAAA,CAAa,EAAE,aAAA,EAAe,IAAA,EAAM,cAAc,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAAA,EAC9E,CAAA,EAAG,CAAC,eAAA,EAAiB,YAAY,CAAC,CAAA;AAMlC,EAAA,MAAM,cAAA,GAAiB,CAAC,SAAA,CAAU,aAAA;AAElC,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,CAAC,CAAA,KAAuB;AACzD,IAAA,IAAI,cAAA,EAAgB;AAElB,MAAA,IAAI,CAAC,mBAAA,EAAqB;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,MAAM,WAAW,SAAA,CAAU,aAAA;AAC3B,MAAA,IAAI,QAAA,KAAa,KAAK,EAAA,EAAI;AAC1B,MAAA,IAAI,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,EAAE,CAAA,EAAG;AAAA,IAChD;AAEA,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,CAAA,CAAE,YAAA,CAAa,UAAA,GAAa,cAAA,GAAiB,MAAA,GAAS,MAAA;AAEtD,IAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,CAAA,EAAG,CAAC,CAAC,QAAQ,CAAA;AAGlD,IAAA,IAAI,QAAA,IAAY,CAAC,UAAA,IAAc,QAAA,KAAa,QAAA,EAAU;AACpD,MAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC5B,QAAA,eAAA,CAAgB,OAAA,GAAU,WAAW,MAAM;AACzC,UAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAClB,UAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,QAC5B,GAAG,GAAG,CAAA;AAAA,MACR;AAAA,IACF,CAAA,MAAO;AACL,MAAA,eAAA,EAAgB;AAAA,IAClB;AAEA,IAAA,IAAI,UAAU,YAAA,KAAiB,IAAA,CAAK,EAAA,IAAM,SAAA,CAAU,iBAAiB,QAAA,EAAU;AAC7E,MAAA,YAAA,CAAa,EAAE,eAAe,SAAA,CAAU,aAAA,EAAe,cAAc,IAAA,CAAK,EAAA,EAAI,YAAA,EAAc,QAAA,EAAU,CAAA;AAAA,IACxG;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,cAAA,EAAgB,mBAAA,EAAqB,IAAA,CAAK,EAAA,EAAI,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,YAAA,EAAc,UAAA,EAAY,eAAe,CAAC,CAAA;AAEpI,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,CAAA,KAAuB;AAC1D,IAAA,IAAI,CAAC,CAAA,CAAE,aAAA,CAAc,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AACtD,MAAA,eAAA,EAAgB;AAChB,MAAA,IAAI,SAAA,CAAU,YAAA,KAAiB,IAAA,CAAK,EAAA,EAAI;AACtC,QAAA,YAAA,CAAa,EAAE,GAAG,SAAA,EAAW,cAAc,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAAA,MACvE;AAAA,IACF;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,KAAK,EAAA,EAAI,YAAA,EAAc,eAAe,CAAC,CAAA;AAEtD,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,CAAA,KAAuB;AACrD,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,eAAA,EAAgB;AAEhB,IAAA,MAAM,WAAW,SAAA,CAAU,aAAA;AAC3B,IAAA,MAAM,WAAW,SAAA,CAAU,YAAA,IAAgB,oBAAoB,CAAA,EAAG,CAAC,CAAC,QAAQ,CAAA;AAE5E,IAAA,IAAI,QAAA,EAAU;AAEZ,MAAA,IAAI,QAAA,KAAa,KAAK,EAAA,EAAI;AAC1B,MAAA,IAAI,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,EAAE,CAAA,EAAG;AAC9C,MAAA,UAAA,GAAa,QAAA,EAAU,IAAA,CAAK,EAAA,EAAI,QAAQ,CAAA;AAAA,IAC1C,WAAW,mBAAA,EAAqB;AAE9B,MAAA,cAAA,GAAiB,CAAA,EAAG,MAAM,QAAQ,CAAA;AAAA,IACpC;AAEA,IAAA,YAAA,CAAa,EAAE,aAAA,EAAe,IAAA,EAAM,cAAc,IAAA,EAAM,YAAA,EAAc,MAAM,CAAA;AAAA,EAC9E,CAAA,EAAG,CAAC,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,mBAAA,EAAqB,cAAA,EAAgB,YAAA,EAAc,eAAe,CAAC,CAAA;AAMrH,EAAA,MAAM,OAAA,GAAU,SAAA,IAAa,CAAC,IAAA,CAAK,QAAA;AACnC,EAAA,MAAM,cAAc,SAAA,IAAa,mBAAA;AAEjC,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,4BAAA,EAA2B,EAAA;AAAA,MAC3B,UAAA,EAAY,cAAc,cAAA,GAAiB,MAAA;AAAA,MAC3C,WAAA,EAAa,cAAc,eAAA,GAAkB,MAAA;AAAA,MAC7C,MAAA,EAAQ,cAAc,UAAA,GAAa,MAAA;AAAA,MAGlC,QAAA,EAAA;AAAA,QAAA,YAAA,IAAgB,iBAAiB,QAAA,oBAChC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,sCAAA,EAAqC,QAAA;AAAA,YACrC,SAAA,EAAU,oDAAA;AAAA,YACV,KAAA,EAAO,EAAE,UAAA,EAAY,WAAA;AAAY;AAAA,SACnC;AAAA,wBAGF,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,OAAA;AAAA,YACX,WAAA,EAAa,UAAU,eAAA,GAAkB,MAAA;AAAA,YACzC,SAAA,EAAW,UAAU,aAAA,GAAgB,MAAA;AAAA,YACrC,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,EAAA;AAAA,cACT,0FAAA;AAAA,cACA,aACI,iDAAA,GACA,2EAAA;AAAA,cACJ,KAAK,QAAA,IAAY,gCAAA;AAAA,cACjB,UAAA,IAAc,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMd,OAAA,KACG,UAAA,KAAe,MAAA,GAAS,oCAAA,GAAuC,wBAAA,CAAA;AAAA,cAClE,YAAA,IAAgB,iBAAiB,QAAA,IAAY;AAAA,aAC/C;AAAA,YACA,KAAA,EAAO,EAAE,WAAA,EAAY;AAAA,YAEpB,QAAA,EAAA;AAAA,cAAA,QAAA,oBAAY,GAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAM,UAAA,EAAY,CAAA;AAAA,cAC3C,CAAC,QAAA,oBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EAAiB,CAAA;AAAA,cAC9C,SAAA,KACC,KAAK,IAAA,KAAS,QAAA,uBACT,UAAA,EAAA,EAAW,IAAA,EAAM,YAAY,CAAA,mBAC9B,GAAA,CAAC,YAAS,GAAA,EAAK,IAAA,CAAK,OAAO,IAAA,CAAK,KAAA,CAAM,MAAM,GAAG,CAAA,CAAE,KAAI,EAAG,CAAA,CAAA,CAAA;AAAA,8BAE9D,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,eAAK,KAAA,EAAM;AAAA;AAAA;AAAA,SACzC;AAAA,QAGC,YAAA,IAAgB,iBAAiB,OAAA,oBAChC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,sCAAA,EAAqC,OAAA;AAAA,YACrC,SAAA,EAAU,oDAAA;AAAA,YACV,KAAA,EAAO,EAAE,UAAA,EAAY,WAAA;AAAY;AAAA,SACnC;AAAA,QAGD,QAAA,IAAY,cAAc,IAAA,CAAK,QAAA,wBAC7B,KAAA,EAAA,EAAI,qCAAA,EAAoC,EAAA,EACtC,QAAA,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,qBAClB,GAAA,CAAC,QAAA,EAAA,EAAwB,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,QAAQ,CAAA,EAAA,EAAtC,KAAA,CAAM,EAAmC,CACzD,CAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AChUvB,SAAS,iBAAiB,KAAA,EAAiC;AACzD,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,MAAA,GAAA,CAAI,IAAA,CAAK,KAAK,EAAE,CAAA;AAChB,MAAA,GAAA,CAAI,IAAA,CAAK,GAAG,gBAAA,CAAiB,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,IAC7C;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,IAAM,gBAAA,GAA8B;AAAA,EAClC,aAAA,EAAe,IAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,YAAA,EAAc;AAChB,CAAA;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,UAAA;AAAA,EACA,mBAAA,GAAsB,KAAA;AAAA,EACtB,cAAA;AAAA,EACA,WAAA,EAAa,kBAAA;AAAA,EACb,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA,GAAmB,KAAA;AAAA,EACnB,UAAA,GAAa,EAAA;AAAA,EACb,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA,GAAa,MAAA;AAAA,EACb;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAmB,MAAM;AACvE,IAAA,IAAI,oBAAoB,OAAO,kBAAA;AAC/B,IAAA,IAAI,gBAAA,EAAkB,OAAO,gBAAA,CAAiB,KAAK,CAAA;AACnD,IAAA,OAAO,EAAC;AAAA,EACV,CAAC,CAAA;AAED,EAAA,MAAM,eAAe,kBAAA,KAAuB,MAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,eAAe,kBAAA,GAAqB,gBAAA;AAExD,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACb,CAAC,EAAA,KAAe;AACd,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,QAAA,CAAS,EAAE,IAChC,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,EAAE,CAAA,GAClC,CAAC,GAAG,aAAa,EAAE,CAAA;AAEvB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,MAC1B;AACA,MAAA,gBAAA,GAAmB,IAAI,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,YAAA,EAAc,gBAAgB;AAAA,GAC9C;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA;AAAA,IACjB,CAAC,EAAA,KAAe;AACd,MAAA,IAAI,WAAA,CAAY,QAAA,CAAS,EAAE,CAAA,EAAG;AAC9B,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,WAAA,EAAa,EAAE,CAAA;AAChC,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,MAC1B;AACA,MAAA,gBAAA,GAAmB,IAAI,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,YAAA,EAAc,gBAAgB;AAAA,GAC9C;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAoB,gBAAgB,CAAA;AAEtE,EAAA,MAAM,aAAA,GAAgBA,YAAY,MAAM;AACtC,IAAA,YAAA,CAAa,gBAAgB,CAAA;AAAA,EAC/B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,GAAA,GAAM,OAAA;AAAA,IACV,OAAO;AAAA,MACL,UAAA;AAAA,MAAY,QAAA;AAAA,MAAU,iBAAA;AAAA,MAAmB,WAAA;AAAA,MAAa,MAAA;AAAA,MAAQ,UAAA;AAAA,MAAY,SAAA;AAAA,MAC1E,SAAA;AAAA,MAAW,UAAA;AAAA,MAAY,SAAA;AAAA,MAAW,YAAA;AAAA,MAAc,UAAA;AAAA,MAAY,mBAAA;AAAA,MAAqB,cAAA;AAAA,MAAgB,KAAA;AAAA,MAAO;AAAA,KAC1G,CAAA;AAAA,IACA;AAAA,MAAC,UAAA;AAAA,MAAY,QAAA;AAAA,MAAU,iBAAA;AAAA,MAAmB,WAAA;AAAA,MAAa,MAAA;AAAA,MAAQ,UAAA;AAAA,MAAY,SAAA;AAAA,MAC1E,SAAA;AAAA,MAAW,UAAA;AAAA,MAAY,SAAA;AAAA,MAAW,UAAA;AAAA,MAAY,mBAAA;AAAA,MAAqB,cAAA;AAAA,MAAgB,KAAA;AAAA,MAAO;AAAA;AAAU,GACvG;AAEA,EAAA,MAAM,cAAc,SAAA,IAAa,mBAAA;AAEjC,EAAA,uBACEC,GAAAA,CAAC,cAAA,CAAe,UAAf,EAAwB,KAAA,EAAO,KAC9B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,2BAAA,EAA0B,EAAA;AAAA,MAC1B,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC7D,SAAA,EAAW,cAAc,aAAA,GAAgB,MAAA;AAAA,MAExC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA,CAAC,QAAA,EAAA,EAAuB,IAAA,EAAY,KAAA,EAAO,CAAA,EAAA,EAA5B,IAAA,CAAK,EAA0B,CAC/C;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,SAAA;AAEnB,IAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa;AAAA,EAChD,IAAA,EAAM;AACR,CAAC","file":"chunk-NUPQJ5SJ.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TreeNavContextValue } from \"./TreeNav.types\";\n\nexport const TreeNavContext = createContext<TreeNavContextValue | null>(null);\n\nexport function useTreeNav(): TreeNavContextValue {\n const ctx = useContext(TreeNavContext);\n if (!ctx) {\n throw new Error(\"useTreeNav must be used within a <TreeNav> component\");\n }\n return ctx;\n}\n","import { useRef, useEffect, useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useTreeNav } from \"./TreeNav.context\";\nimport type { TreeNodeProps, TreeNodeData, DropPosition } from \"./TreeNav.types\";\n\nconst EXT_COLORS: Record<string, string> = {\n ts: \"#3178c6\",\n tsx: \"#3178c6\",\n js: \"#f7df1e\",\n jsx: \"#f7df1e\",\n php: \"#777bb4\",\n html: \"#e34c26\",\n htm: \"#e34c26\",\n css: \"#264de4\",\n json: \"#a1a1aa\",\n md: \"#71717a\",\n yaml: \"#cb171e\",\n yml: \"#cb171e\",\n};\n\nfunction FileIcon({ ext }: { ext?: string }) {\n const color = (ext && EXT_COLORS[ext.toLowerCase()]) || \"#71717a\";\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M4 1h5.5L13 4.5V14a1 1 0 01-1 1H4a1 1 0 01-1-1V2a1 1 0 011-1z\" stroke={color} strokeWidth=\"1.2\" />\n <path d=\"M9 1v4h4\" stroke={color} strokeWidth=\"1.2\" />\n </svg>\n );\n}\n\nfunction FolderIcon({ open }: { open: boolean }) {\n if (open) {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M1.5 3.5a1 1 0 011-1h3l1.5 1.5H13a1 1 0 011 1V5H2.5V3.5z\" fill=\"#fbbf24\" />\n <path d=\"M1 6h13l-1.5 7.5H2.5L1 6z\" fill=\"#fbbf24\" opacity=\"0.7\" />\n </svg>\n );\n }\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path d=\"M1.5 3a1 1 0 011-1h3l1.5 1.5H13a1 1 0 011 1v8a1 1 0 01-1 1H2.5a1 1 0 01-1-1V3z\" fill=\"#fbbf24\" />\n </svg>\n );\n}\n\nfunction ChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"shrink-0 transition-transform duration-150\", open && \"rotate-90\")}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Utilities\n// ---------------------------------------------------------------------------\n\nfunction isDescendantOf(\n nodes: TreeNodeData[],\n ancestorId: string,\n targetId: string,\n): boolean {\n function findNode(haystack: TreeNodeData[], id: string): TreeNodeData | undefined {\n for (const n of haystack) {\n if (n.id === id) return n;\n if (n.children) {\n const found = findNode(n.children, id);\n if (found) return found;\n }\n }\n return undefined;\n }\n\n function hasDescendant(node: TreeNodeData, id: string): boolean {\n if (!node.children) return false;\n for (const child of node.children) {\n if (child.id === id) return true;\n if (hasDescendant(child, id)) return true;\n }\n return false;\n }\n\n const ancestor = findNode(nodes, ancestorId);\n return ancestor ? hasDescendant(ancestor, targetId) : false;\n}\n\nfunction computeDropPosition(\n e: React.DragEvent,\n isFolder: boolean,\n): DropPosition {\n const rect = e.currentTarget.getBoundingClientRect();\n const offsetY = e.clientY - rect.top;\n const third = rect.height / 3;\n\n if (offsetY < third) return \"before\";\n if (offsetY > third * 2) return \"after\";\n return isFolder ? \"inside\" : \"after\";\n}\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nexport function TreeNode({ node, depth }: TreeNodeProps) {\n const {\n selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, setDragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode,\n } = useTreeNav();\n\n const isFolder = node.type === \"folder\" || (node.children && node.children.length > 0);\n const isExpanded = expandedIds.includes(node.id);\n const isSelected = selectedId === node.id;\n const paddingLeft = depth * indentSize + 4;\n\n const isDragging = dragState.draggedNodeId === node.id;\n const isDropTarget = dragState.dropTargetId === node.id;\n const dropPosition = isDropTarget ? dragState.dropPosition : null;\n\n // Auto-expand timer for folders during drag\n const autoExpandTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearAutoExpand = useCallback(() => {\n if (autoExpandTimer.current) {\n clearTimeout(autoExpandTimer.current);\n autoExpandTimer.current = null;\n }\n }, []);\n\n useEffect(() => clearAutoExpand, [clearAutoExpand]);\n\n // ---------------------------------------------------------------------------\n // Click handlers\n // ---------------------------------------------------------------------------\n\n const handleClick = () => {\n if (node.disabled) return;\n if (isFolder) {\n toggle(node.id);\n }\n onSelect?.(node.id, node);\n };\n\n const handleContextMenu = (e: React.MouseEvent) => {\n if (onNodeContextMenu) {\n e.preventDefault();\n onNodeContextMenu(e, node);\n }\n };\n\n // ---------------------------------------------------------------------------\n // Drag source handlers\n // ---------------------------------------------------------------------------\n\n const handleDragStart = useCallback((e: React.DragEvent) => {\n e.dataTransfer.setData(\"text/plain\", node.id);\n e.dataTransfer.effectAllowed = \"move\";\n // Set state async so the browser captures the element for the drag ghost first\n requestAnimationFrame(() => {\n setDragState({ draggedNodeId: node.id, dropTargetId: null, dropPosition: null });\n });\n }, [node.id, setDragState]);\n\n const handleDragEnd = useCallback(() => {\n clearAutoExpand();\n setDragState({ draggedNodeId: null, dropTargetId: null, dropPosition: null });\n }, [clearAutoExpand, setDragState]);\n\n // ---------------------------------------------------------------------------\n // Drop target handlers (on outer div)\n // ---------------------------------------------------------------------------\n\n const isExternalDrag = !dragState.draggedNodeId;\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n if (isExternalDrag) {\n // External drop accepted only when host opted in.\n if (!acceptExternalDrops) return;\n } else {\n const sourceId = dragState.draggedNodeId!;\n if (sourceId === node.id) return;\n if (isDescendantOf(nodes, sourceId, node.id)) return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n e.dataTransfer.dropEffect = isExternalDrag ? \"copy\" : \"move\";\n\n const position = computeDropPosition(e, !!isFolder);\n\n // Auto-expand collapsed folders when hovering \"inside\"\n if (isFolder && !isExpanded && position === \"inside\") {\n if (!autoExpandTimer.current) {\n autoExpandTimer.current = setTimeout(() => {\n expandNode(node.id);\n autoExpandTimer.current = null;\n }, 500);\n }\n } else {\n clearAutoExpand();\n }\n\n if (dragState.dropTargetId !== node.id || dragState.dropPosition !== position) {\n setDragState({ draggedNodeId: dragState.draggedNodeId, dropTargetId: node.id, dropPosition: position });\n }\n }, [dragState, isExternalDrag, acceptExternalDrops, node.id, isFolder, isExpanded, nodes, setDragState, expandNode, clearAutoExpand]);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n clearAutoExpand();\n if (dragState.dropTargetId === node.id) {\n setDragState({ ...dragState, dropTargetId: null, dropPosition: null });\n }\n }\n }, [dragState, node.id, setDragState, clearAutoExpand]);\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n e.stopPropagation();\n clearAutoExpand();\n\n const sourceId = dragState.draggedNodeId;\n const position = dragState.dropPosition ?? computeDropPosition(e, !!isFolder);\n\n if (sourceId) {\n // Internal node move.\n if (sourceId === node.id) return;\n if (isDescendantOf(nodes, sourceId, node.id)) return;\n onNodeMove?.(sourceId, node.id, position);\n } else if (acceptExternalDrops) {\n // External drop — files, items from other components, etc.\n onExternalDrop?.(e, node, position);\n }\n\n setDragState({ draggedNodeId: null, dropTargetId: null, dropPosition: null });\n }, [dragState, node, isFolder, nodes, onNodeMove, acceptExternalDrops, onExternalDrop, setDragState, clearAutoExpand]);\n\n // ---------------------------------------------------------------------------\n // Render\n // ---------------------------------------------------------------------------\n\n const canDrag = draggable && !node.disabled;\n const dropEnabled = draggable || acceptExternalDrops;\n\n return (\n <div\n data-react-fancy-tree-node=\"\"\n onDragOver={dropEnabled ? handleDragOver : undefined}\n onDragLeave={dropEnabled ? handleDragLeave : undefined}\n onDrop={dropEnabled ? handleDrop : undefined}\n >\n {/* Before drop indicator */}\n {isDropTarget && dropPosition === \"before\" && (\n <div\n data-react-fancy-tree-drop-indicator=\"before\"\n className=\"pointer-events-none h-0.5 rounded-full bg-blue-500\"\n style={{ marginLeft: paddingLeft }}\n />\n )}\n\n <button\n type=\"button\"\n draggable={canDrag}\n onDragStart={canDrag ? handleDragStart : undefined}\n onDragEnd={canDrag ? handleDragEnd : undefined}\n onClick={handleClick}\n onContextMenu={handleContextMenu}\n disabled={node.disabled}\n className={cn(\n \"flex w-full items-center gap-1 rounded-md py-0.5 text-left text-[13px] transition-colors\",\n isSelected\n ? \"bg-blue-500/15 text-blue-600 dark:text-blue-400\"\n : \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n node.disabled && \"pointer-events-none opacity-40\",\n isDragging && \"opacity-50\",\n // Grab affordance. By default (`dragCursor=\"none\"`) the row keeps its\n // normal click cursor on hover — no open-hand \"move me\" cursor before\n // any drag — and only shows the closed-hand `grabbing` cursor while a\n // drag is actually underway (mousedown/drag). `dragCursor=\"grab\"` opts\n // back into the always-on grab cursor for whole-row drag handles (#14).\n canDrag &&\n (dragCursor === \"grab\" ? \"cursor-grab active:cursor-grabbing\" : \"active:cursor-grabbing\"),\n isDropTarget && dropPosition === \"inside\" && \"bg-blue-500/10 ring-1 ring-blue-500/30 ring-inset\",\n )}\n style={{ paddingLeft }}\n >\n {isFolder && <ChevronIcon open={isExpanded} />}\n {!isFolder && <span className=\"w-3.5 shrink-0\" />}\n {showIcons && (\n node.icon ?? (isFolder\n ? <FolderIcon open={isExpanded} />\n : <FileIcon ext={node.ext ?? node.label.split(\".\").pop()} />)\n )}\n <span className=\"truncate\">{node.label}</span>\n </button>\n\n {/* After drop indicator */}\n {isDropTarget && dropPosition === \"after\" && (\n <div\n data-react-fancy-tree-drop-indicator=\"after\"\n className=\"pointer-events-none h-0.5 rounded-full bg-blue-500\"\n style={{ marginLeft: paddingLeft }}\n />\n )}\n\n {isFolder && isExpanded && node.children && (\n <div data-react-fancy-tree-node-children=\"\">\n {node.children.map((child) => (\n <TreeNode key={child.id} node={child} depth={depth + 1} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nTreeNode.displayName = \"TreeNode\";\n","import { useMemo, useCallback, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { TreeNavContext } from \"./TreeNav.context\";\nimport { TreeNode } from \"./TreeNode\";\nimport type { TreeNavProps, TreeNodeData, DragState } from \"./TreeNav.types\";\n\nfunction collectFolderIds(nodes: TreeNodeData[]): string[] {\n const ids: string[] = [];\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n ids.push(node.id);\n ids.push(...collectFolderIds(node.children));\n }\n }\n return ids;\n}\n\nconst EMPTY_DRAG_STATE: DragState = {\n draggedNodeId: null,\n dropTargetId: null,\n dropPosition: null,\n};\n\nfunction TreeNavRoot({\n nodes,\n selectedId,\n onSelect,\n onNodeContextMenu,\n draggable = false,\n onNodeMove,\n acceptExternalDrops = false,\n onExternalDrop,\n expandedIds: controlledExpanded,\n defaultExpandedIds,\n onExpandedChange,\n defaultExpandAll = false,\n indentSize = 16,\n showIcons = true,\n dragCursor = \"none\",\n className,\n}: TreeNavProps) {\n const [internalExpanded, setInternalExpanded] = useState<string[]>(() => {\n if (defaultExpandedIds) return defaultExpandedIds;\n if (defaultExpandAll) return collectFolderIds(nodes);\n return [];\n });\n\n const isControlled = controlledExpanded !== undefined;\n const expandedIds = isControlled ? controlledExpanded : internalExpanded;\n\n const toggle = useCallback(\n (id: string) => {\n const next = expandedIds.includes(id)\n ? expandedIds.filter((v) => v !== id)\n : [...expandedIds, id];\n\n if (!isControlled) {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n },\n [expandedIds, isControlled, onExpandedChange],\n );\n\n const expandNode = useCallback(\n (id: string) => {\n if (expandedIds.includes(id)) return;\n const next = [...expandedIds, id];\n if (!isControlled) {\n setInternalExpanded(next);\n }\n onExpandedChange?.(next);\n },\n [expandedIds, isControlled, onExpandedChange],\n );\n\n const [dragState, setDragState] = useState<DragState>(EMPTY_DRAG_STATE);\n\n const handleDragEnd = useCallback(() => {\n setDragState(EMPTY_DRAG_STATE);\n }, []);\n\n const ctx = useMemo(\n () => ({\n selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, setDragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode,\n }),\n [selectedId, onSelect, onNodeContextMenu, expandedIds, toggle, indentSize, showIcons,\n draggable, dragCursor, dragState, onNodeMove, acceptExternalDrops, onExternalDrop, nodes, expandNode],\n );\n\n const dropEnabled = draggable || acceptExternalDrops;\n\n return (\n <TreeNavContext.Provider value={ctx}>\n <nav\n data-react-fancy-tree-nav=\"\"\n className={cn(\"flex flex-col gap-0.5 py-1 text-sm\", className)}\n onDragEnd={dropEnabled ? handleDragEnd : undefined}\n >\n {nodes.map((node) => (\n <TreeNode key={node.id} node={node} depth={0} />\n ))}\n </nav>\n </TreeNavContext.Provider>\n );\n}\n\nTreeNavRoot.displayName = \"TreeNav\";\n\nexport const TreeNav = Object.assign(TreeNavRoot, {\n Node: TreeNode,\n});\n"]}
@@ -2,7 +2,7 @@ import { useFocusTrap } from './chunk-5U2DZ7AV.js';
2
2
  import { useAnimation } from './chunk-CHADHN6M.js';
3
3
  import { Portal } from './chunk-WHEXTDPV.js';
4
4
  import { useEscapeKey } from './chunk-JXE5XID6.js';
5
- import { cn } from './chunk-DSUHZO6T.js';
5
+ import { cn } from './chunk-MMW2JGKZ.js';
6
6
  import { createContext, useRef, useCallback, useEffect, useMemo, useContext } from 'react';
7
7
  import { X } from 'lucide-react';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -141,5 +141,5 @@ var Modal = Object.assign(ModalRoot, {
141
141
  });
142
142
 
143
143
  export { Modal, useModal };
144
- //# sourceMappingURL=chunk-M645OITZ.js.map
145
- //# sourceMappingURL=chunk-M645OITZ.js.map
144
+ //# sourceMappingURL=chunk-NYDR2VSA.js.map
145
+ //# sourceMappingURL=chunk-NYDR2VSA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Modal/Modal.context.ts","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/Modal.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"chunk-M645OITZ.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ModalContextValue } from \"./Modal.types\";\n\nexport const ModalContext = createContext<ModalContextValue | null>(null);\n\nexport function useModal(): ModalContextValue {\n const ctx = useContext(ModalContext);\n if (!ctx) {\n throw new Error(\"Modal compound components must be used within <Modal>\");\n }\n return ctx;\n}\n","import { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useModal } from \"./Modal.context\";\nimport type { ModalHeaderProps } from \"./Modal.types\";\n\nexport function ModalHeader({ children, className }: ModalHeaderProps) {\n const { close } = useModal();\n\n return (\n <div\n data-react-fancy-modal-header=\"\"\n className={cn(\n \"flex items-center justify-between border-b border-zinc-200 px-6 py-4 dark:border-zinc-700\",\n className,\n )}\n >\n <div className=\"text-lg font-semibold text-zinc-900 dark:text-zinc-100\">{children}</div>\n <button\n type=\"button\"\n onClick={close}\n className=\"rounded-lg p-1 text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-300\"\n aria-label=\"Close\"\n >\n <X size={20} />\n </button>\n </div>\n );\n}\n\nModalHeader.displayName = \"ModalHeader\";\n","import { cn } from \"../../utils/cn\";\nimport type { ModalBodyProps } from \"./Modal.types\";\n\nexport function ModalBody({ children, className }: ModalBodyProps) {\n return (\n // `min-h-0` is load-bearing, not decoration. A flex child defaults to\n // `min-height: auto`, which refuses to shrink below its content — so\n // `flex-1` alone would push the panel through its own max-height and the\n // scrollbar would never appear. This is what permits the overflow that\n // `overflow-y-auto` then handles.\n <div data-react-fancy-modal-body=\"\" className={cn(\"min-h-0 flex-1 overflow-y-auto px-6 py-4 text-zinc-700 dark:text-zinc-300\", className)}>\n {children}\n </div>\n );\n}\n\nModalBody.displayName = \"ModalBody\";\n","import { cn } from \"../../utils/cn\";\nimport type { ModalFooterProps } from \"./Modal.types\";\n\nexport function ModalFooter({ children, className }: ModalFooterProps) {\n return (\n <div\n data-react-fancy-modal-footer=\"\"\n className={cn(\n \"flex items-center justify-end gap-3 border-t border-zinc-200 px-6 py-4 dark:border-zinc-700\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nModalFooter.displayName = \"ModalFooter\";\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { ModalContext } from \"./Modal.context\";\nimport { ModalHeader } from \"./ModalHeader\";\nimport { ModalBody } from \"./ModalBody\";\nimport { ModalFooter } from \"./ModalFooter\";\nimport { useFocusTrap } from \"../../hooks/use-focus-trap\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport type { ModalProps } from \"./Modal.types\";\n\n/**\n * Every size is capped against the VIEWPORT, not just the width.\n *\n * Only `full` used to carry a max-height. The other four were width-constrained\n * and vertically unbounded, so a modal with long content simply grew past the\n * bottom of the screen and the rest became unreachable — no scrollbar, because\n * there was no overflow to scroll: the box got taller instead.\n *\n * `ModalBody` already had `flex-1 overflow-y-auto` and the panel already had\n * `overflow-hidden`. The scrolling machinery was complete and inert, waiting on\n * the one constraint that makes it engage.\n *\n * `dvh` over `vh` deliberately: on mobile browsers `100vh` is the tallest the\n * viewport ever gets, ignoring the address bar, so a `vh`-capped modal still\n * runs under the chrome on exactly the devices with least room. `dvh` tracks\n * the visible height. The `vh` fallback is listed first for any engine that\n * does not know `dvh` yet — an unknown unit drops the declaration, so ordering\n * is what keeps the old behaviour rather than none.\n */\nconst VIEWPORT_CAP = \"max-h-[calc(100vh-2rem)] max-h-[calc(100dvh-2rem)]\";\n\nconst SIZE_MAP = {\n sm: `max-w-sm ${VIEWPORT_CAP}`,\n md: `max-w-lg ${VIEWPORT_CAP}`,\n lg: `max-w-2xl ${VIEWPORT_CAP}`,\n xl: `max-w-4xl ${VIEWPORT_CAP}`,\n full: `max-w-[calc(100vw-2rem)] ${VIEWPORT_CAP}`,\n} as const;\n\nfunction ModalRoot({\n children,\n open,\n onClose,\n size = \"md\",\n className,\n ...rest\n}: ModalProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n\n const close = useCallback(() => onClose(), [onClose]);\n useEscapeKey(close, open);\n useFocusTrap(panelRef, open);\n\n // Body scroll lock\n useEffect(() => {\n if (open) {\n const original = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = original;\n };\n }\n }, [open]);\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: \"fancy-slide-up\",\n exitClass: \"fancy-fade-out\",\n });\n\n const ctx = useMemo(() => ({ open, close }), [open, close]);\n\n if (!mounted) return null;\n\n return (\n <ModalContext.Provider value={ctx}>\n <Portal>\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\n onClick={close}\n aria-hidden=\"true\"\n />\n {/* Panel */}\n <div\n ref={(node) => {\n panelRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current =\n node;\n }}\n data-react-fancy-modal=\"\"\n role=\"dialog\"\n aria-modal=\"true\"\n {...rest}\n className={cn(\n \"relative flex w-full flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-900\",\n SIZE_MAP[size],\n animClass,\n className,\n )}\n >\n {children}\n </div>\n </div>\n </Portal>\n </ModalContext.Provider>\n );\n}\n\nexport const Modal = Object.assign(ModalRoot, {\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/Modal/Modal.context.ts","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/Modal.tsx"],"names":["jsx","jsxs"],"mappings":";;;;;;;;;AAGO,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAEjE,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,EACzE;AACA,EAAA,OAAO,GAAA;AACT;ACNO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,SAAA,EAAU,EAAqB;AACrE,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,QAAA,EAAS;AAE3B,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,+BAAA,EAA8B,EAAA;AAAA,MAC9B,SAAA,EAAW,EAAA;AAAA,QACT,2FAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EAA0D,QAAA,EAAS,CAAA;AAAA,wBAClF,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,KAAA;AAAA,YACT,SAAA,EAAU,sIAAA;AAAA,YACV,YAAA,EAAW,OAAA;AAAA,YAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA;AACf;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AC1BnB,SAAS,SAAA,CAAU,EAAE,QAAA,EAAU,SAAA,EAAU,EAAmB;AACjE,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMEA,GAAAA,CAAC,KAAA,EAAA,EAAI,6BAAA,EAA4B,EAAA,EAAG,WAAW,EAAA,CAAG,2EAAA,EAA6E,SAAS,CAAA,EACrI,QAAA,EACH;AAAA;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACbjB,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,SAAA,EAAU,EAAqB;AACrE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,+BAAA,EAA8B,EAAA;AAAA,MAC9B,SAAA,EAAW,EAAA;AAAA,QACT,6FAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;ACc1B,IAAM,YAAA,GAAe,oDAAA;AAErB,IAAM,QAAA,GAAW;AAAA,EACf,EAAA,EAAI,YAAY,YAAY,CAAA,CAAA;AAAA,EAC5B,EAAA,EAAI,YAAY,YAAY,CAAA,CAAA;AAAA,EAC5B,EAAA,EAAI,aAAa,YAAY,CAAA,CAAA;AAAA,EAC7B,EAAA,EAAI,aAAa,YAAY,CAAA,CAAA;AAAA,EAC7B,IAAA,EAAM,4BAA4B,YAAY,CAAA;AAChD,CAAA;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,MAAM,QAAA,GAAW,OAAuB,IAAI,CAAA;AAE5C,EAAA,MAAM,QAAQ,WAAA,CAAY,MAAM,SAAQ,EAAG,CAAC,OAAO,CAAC,CAAA;AACpD,EAAA,YAAA,CAAa,OAAO,IAAI,CAAA;AACxB,EAAA,YAAA,CAAa,UAAU,IAAI,CAAA;AAG3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AACrC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAC/B,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,MACjC,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,WAAW,GAAA,EAAK,OAAA,KAAY,YAAA,CAAa;AAAA,IACnE,IAAA;AAAA,IACA,UAAA,EAAY,gBAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAO,EAAE,IAAA,EAAM,OAAM,CAAA,EAAI,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAE1D,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,uBACEA,GAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,GAAA,EAC5B,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yDAAA,EAEb,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,+CAAA;AAAA,QACV,OAAA,EAAS,KAAA;AAAA,QACT,aAAA,EAAY;AAAA;AAAA,KACd;AAAA,oBAEAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,CAAC,IAAA,KAAS;AACb,UAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,UAAC,QAAuD,OAAA,GACtD,IAAA;AAAA,QACJ,CAAA;AAAA,QACA,wBAAA,EAAuB,EAAA;AAAA,QACvB,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACV,GAAG,IAAA;AAAA,QACJ,SAAA,EAAW,EAAA;AAAA,UACT,2IAAA;AAAA,UACA,SAAS,IAAI,CAAA;AAAA,UACb,SAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC;AAAA;AAAA;AACH,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;AAEO,IAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW;AAAA,EAC5C,MAAA,EAAQ,WAAA;AAAA,EACR,IAAA,EAAM,SAAA;AAAA,EACN,MAAA,EAAQ;AACV,CAAC","file":"chunk-NYDR2VSA.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ModalContextValue } from \"./Modal.types\";\n\nexport const ModalContext = createContext<ModalContextValue | null>(null);\n\nexport function useModal(): ModalContextValue {\n const ctx = useContext(ModalContext);\n if (!ctx) {\n throw new Error(\"Modal compound components must be used within <Modal>\");\n }\n return ctx;\n}\n","import { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useModal } from \"./Modal.context\";\nimport type { ModalHeaderProps } from \"./Modal.types\";\n\nexport function ModalHeader({ children, className }: ModalHeaderProps) {\n const { close } = useModal();\n\n return (\n <div\n data-react-fancy-modal-header=\"\"\n className={cn(\n \"flex items-center justify-between border-b border-zinc-200 px-6 py-4 dark:border-zinc-700\",\n className,\n )}\n >\n <div className=\"text-lg font-semibold text-zinc-900 dark:text-zinc-100\">{children}</div>\n <button\n type=\"button\"\n onClick={close}\n className=\"rounded-lg p-1 text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-600 dark:hover:bg-zinc-800 dark:hover:text-zinc-300\"\n aria-label=\"Close\"\n >\n <X size={20} />\n </button>\n </div>\n );\n}\n\nModalHeader.displayName = \"ModalHeader\";\n","import { cn } from \"../../utils/cn\";\nimport type { ModalBodyProps } from \"./Modal.types\";\n\nexport function ModalBody({ children, className }: ModalBodyProps) {\n return (\n // `min-h-0` is load-bearing, not decoration. A flex child defaults to\n // `min-height: auto`, which refuses to shrink below its content — so\n // `flex-1` alone would push the panel through its own max-height and the\n // scrollbar would never appear. This is what permits the overflow that\n // `overflow-y-auto` then handles.\n <div data-react-fancy-modal-body=\"\" className={cn(\"min-h-0 flex-1 overflow-y-auto px-6 py-4 text-zinc-700 dark:text-zinc-300\", className)}>\n {children}\n </div>\n );\n}\n\nModalBody.displayName = \"ModalBody\";\n","import { cn } from \"../../utils/cn\";\nimport type { ModalFooterProps } from \"./Modal.types\";\n\nexport function ModalFooter({ children, className }: ModalFooterProps) {\n return (\n <div\n data-react-fancy-modal-footer=\"\"\n className={cn(\n \"flex items-center justify-end gap-3 border-t border-zinc-200 px-6 py-4 dark:border-zinc-700\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nModalFooter.displayName = \"ModalFooter\";\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { ModalContext } from \"./Modal.context\";\nimport { ModalHeader } from \"./ModalHeader\";\nimport { ModalBody } from \"./ModalBody\";\nimport { ModalFooter } from \"./ModalFooter\";\nimport { useFocusTrap } from \"../../hooks/use-focus-trap\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport type { ModalProps } from \"./Modal.types\";\n\n/**\n * Every size is capped against the VIEWPORT, not just the width.\n *\n * Only `full` used to carry a max-height. The other four were width-constrained\n * and vertically unbounded, so a modal with long content simply grew past the\n * bottom of the screen and the rest became unreachable — no scrollbar, because\n * there was no overflow to scroll: the box got taller instead.\n *\n * `ModalBody` already had `flex-1 overflow-y-auto` and the panel already had\n * `overflow-hidden`. The scrolling machinery was complete and inert, waiting on\n * the one constraint that makes it engage.\n *\n * `dvh` over `vh` deliberately: on mobile browsers `100vh` is the tallest the\n * viewport ever gets, ignoring the address bar, so a `vh`-capped modal still\n * runs under the chrome on exactly the devices with least room. `dvh` tracks\n * the visible height. The `vh` fallback is listed first for any engine that\n * does not know `dvh` yet — an unknown unit drops the declaration, so ordering\n * is what keeps the old behaviour rather than none.\n */\nconst VIEWPORT_CAP = \"max-h-[calc(100vh-2rem)] max-h-[calc(100dvh-2rem)]\";\n\nconst SIZE_MAP = {\n sm: `max-w-sm ${VIEWPORT_CAP}`,\n md: `max-w-lg ${VIEWPORT_CAP}`,\n lg: `max-w-2xl ${VIEWPORT_CAP}`,\n xl: `max-w-4xl ${VIEWPORT_CAP}`,\n full: `max-w-[calc(100vw-2rem)] ${VIEWPORT_CAP}`,\n} as const;\n\nfunction ModalRoot({\n children,\n open,\n onClose,\n size = \"md\",\n className,\n ...rest\n}: ModalProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n\n const close = useCallback(() => onClose(), [onClose]);\n useEscapeKey(close, open);\n useFocusTrap(panelRef, open);\n\n // Body scroll lock\n useEffect(() => {\n if (open) {\n const original = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = original;\n };\n }\n }, [open]);\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: \"fancy-slide-up\",\n exitClass: \"fancy-fade-out\",\n });\n\n const ctx = useMemo(() => ({ open, close }), [open, close]);\n\n if (!mounted) return null;\n\n return (\n <ModalContext.Provider value={ctx}>\n <Portal>\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\n onClick={close}\n aria-hidden=\"true\"\n />\n {/* Panel */}\n <div\n ref={(node) => {\n panelRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current =\n node;\n }}\n data-react-fancy-modal=\"\"\n role=\"dialog\"\n aria-modal=\"true\"\n {...rest}\n className={cn(\n \"relative flex w-full flex-col overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-xl dark:border-zinc-700 dark:bg-zinc-900\",\n SIZE_MAP[size],\n animClass,\n className,\n )}\n >\n {children}\n </div>\n </div>\n </Portal>\n </ModalContext.Provider>\n );\n}\n\nexport const Modal = Object.assign(ModalRoot, {\n Header: ModalHeader,\n Body: ModalBody,\n Footer: ModalFooter,\n});\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk6BW5BQMN_cjs = require('./chunk-6BW5BQMN.cjs');
4
- var chunkPPLR2DNC_cjs = require('./chunk-PPLR2DNC.cjs');
3
+ var chunkXKDW6B7X_cjs = require('./chunk-XKDW6B7X.cjs');
4
+ var chunkNP7SU2DF_cjs = require('./chunk-NP7SU2DF.cjs');
5
5
  var chunkYLGTDBB2_cjs = require('./chunk-YLGTDBB2.cjs');
6
6
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
7
7
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
8
8
  var chunkOUOEQZHY_cjs = require('./chunk-OUOEQZHY.cjs');
9
- var chunk3Z6ALUWP_cjs = require('./chunk-3Z6ALUWP.cjs');
9
+ var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
10
10
  var react = require('react');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
 
@@ -47,7 +47,7 @@ function CheckboxGroup({
47
47
  lg: "h-5 w-5",
48
48
  xl: "h-6 w-6"
49
49
  }[size];
50
- const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunk6BW5BQMN_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkYLGTDBB2_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
50
+ const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkXKDW6B7X_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkYLGTDBB2_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
51
51
  "div",
52
52
  {
53
53
  ...rest,
@@ -55,7 +55,7 @@ function CheckboxGroup({
55
55
  onBlur: (e) => {
56
56
  if (interactive && !e.currentTarget.contains(e.relatedTarget)) exitEdit();
57
57
  },
58
- className: chunk3Z6ALUWP_cjs.cn(
58
+ className: chunkZU5Q77OT_cjs.cn(
59
59
  "flex gap-3",
60
60
  orientation === "vertical" ? "flex-col" : "flex-row flex-wrap",
61
61
  className
@@ -76,7 +76,7 @@ function CheckboxGroup({
76
76
  disabled: disabled || resolved.disabled,
77
77
  autoFocus: interactive && index === 0,
78
78
  onChange: () => handleToggle(resolved.value),
79
- className: chunk3Z6ALUWP_cjs.cn(
79
+ className: chunkZU5Q77OT_cjs.cn(
80
80
  sizeClasses,
81
81
  "cursor-pointer rounded border border-zinc-300 bg-white text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-[#1e1e24]",
82
82
  chunkYLGTDBB2_cjs.dirtyRingClasses(dirty),
@@ -89,7 +89,7 @@ function CheckboxGroup({
89
89
  "label",
90
90
  {
91
91
  htmlFor: optionId,
92
- className: chunk3Z6ALUWP_cjs.cn(
92
+ className: chunkZU5Q77OT_cjs.cn(
93
93
  "cursor-pointer text-sm text-zinc-700 dark:text-zinc-100",
94
94
  (disabled || resolved.disabled) && "cursor-not-allowed opacity-50"
95
95
  ),
@@ -104,7 +104,7 @@ function CheckboxGroup({
104
104
  );
105
105
  if (label || error || description) {
106
106
  return /* @__PURE__ */ jsxRuntime.jsx(
107
- chunkPPLR2DNC_cjs.Field,
107
+ chunkNP7SU2DF_cjs.Field,
108
108
  {
109
109
  label,
110
110
  description,
@@ -120,5 +120,5 @@ function CheckboxGroup({
120
120
  CheckboxGroup.displayName = "CheckboxGroup";
121
121
 
122
122
  exports.CheckboxGroup = CheckboxGroup;
123
- //# sourceMappingURL=chunk-3SQ34IQC.cjs.map
124
- //# sourceMappingURL=chunk-3SQ34IQC.cjs.map
123
+ //# sourceMappingURL=chunk-NZFJ4XMJ.cjs.map
124
+ //# sourceMappingURL=chunk-NZFJ4XMJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-3SQ34IQC.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-zinc-300 bg-white text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-[#1e1e24]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-NZFJ4XMJ.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-zinc-300 bg-white text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-[#1e1e24]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-DSUHZO6T.js';
1
+ import { cn } from './chunk-MMW2JGKZ.js';
2
2
  import { createContext, useState, useRef, useCallback, useMemo, useEffect, useContext, Children, isValidElement } from 'react';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
 
@@ -357,5 +357,5 @@ var Kanban = Object.assign(KanbanRoot, {
357
357
  });
358
358
 
359
359
  export { Kanban, useKanban };
360
- //# sourceMappingURL=chunk-YT42J4VQ.js.map
361
- //# sourceMappingURL=chunk-YT42J4VQ.js.map
360
+ //# sourceMappingURL=chunk-O6E2WC3J.js.map
361
+ //# sourceMappingURL=chunk-O6E2WC3J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Kanban/Kanban.context.ts","../src/components/Kanban/KanbanCard.tsx","../src/components/Kanban/KanbanColumn.tsx","../src/components/Kanban/KanbanColumnHandle.tsx","../src/components/Kanban/Kanban.tsx"],"names":["useCallback","jsx","useState","useRef"],"mappings":"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","file":"chunk-YT42J4VQ.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { KanbanContextValue } from \"./Kanban.types\";\n\nexport const KanbanContext = createContext<KanbanContextValue | null>(null);\n\nexport function useKanban(): KanbanContextValue {\n const ctx = useContext(KanbanContext);\n if (!ctx) {\n throw new Error(\"Kanban compound components must be used within <Kanban>\");\n }\n return ctx;\n}\n\nexport const KanbanColumnContext = createContext<string>(\"\");\n\nexport function useKanbanColumn(): string {\n return useContext(KanbanColumnContext);\n}\n","import { useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useKanban, useKanbanColumn } from \"./Kanban.context\";\nimport type { KanbanCardProps } from \"./Kanban.types\";\n\nconst DEFAULT_CARD_CLASSES =\n \"rounded-lg border border-zinc-200 bg-white p-3 shadow-sm transition-shadow hover:shadow-md dark:border-zinc-700 dark:bg-zinc-900\";\n\nexport function KanbanCard({ children, id, className, unstyled }: KanbanCardProps) {\n const { setDraggedCard, setDragSource } = useKanban();\n const columnId = useKanbanColumn();\n\n const handleDragStart = useCallback(() => {\n setDraggedCard(id);\n setDragSource(columnId);\n }, [id, columnId, setDraggedCard, setDragSource]);\n\n const handleDragEnd = useCallback(() => {\n setDraggedCard(null);\n setDragSource(null);\n }, [setDraggedCard, setDragSource]);\n\n return (\n <div\n data-react-fancy-kanban-card=\"\"\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n className={cn(\n // Drag affordance — kept even when unstyled so users still see grab cursors.\n \"cursor-grab active:cursor-grabbing\",\n !unstyled && DEFAULT_CARD_CLASSES,\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nKanbanCard.displayName = \"KanbanCard\";\n","import { Children, isValidElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { KanbanCard } from \"./KanbanCard\";\nimport { useKanban, KanbanColumnContext } from \"./Kanban.context\";\nimport type { KanbanColumnProps } from \"./Kanban.types\";\n\nconst DEFAULT_COLUMN_CLASSES =\n \"min-h-[200px] w-72 rounded-xl bg-zinc-50 p-3 dark:bg-zinc-800/50\";\n\n/**\n * Deep-recurse through the children tree counting Kanban.Card descendants\n * regardless of wrapping (Fragment, ContextMenu, motion.div, custom HOCs,\n * etc.). Used by `hideWhenEmpty` and the WIP-limit count chip.\n */\nfunction countCardChildren(children: React.ReactNode): number {\n let n = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n if (child.type === KanbanCard) {\n n += 1;\n return;\n }\n const inner = (child.props as { children?: React.ReactNode }).children;\n if (inner !== undefined) n += countCardChildren(inner);\n });\n return n;\n}\n\n/**\n * Find the document-order index of a Kanban.Card with the given id, deep-\n * recursing through wrappers. Used by same-column reorder to compute the\n * post-removal insert position.\n */\nfunction findCardIndex(children: React.ReactNode, cardId: string): number {\n let idx = -1;\n let i = 0;\n function walk(nodes: React.ReactNode): void {\n Children.forEach(nodes, (child) => {\n if (idx !== -1) return;\n if (!isValidElement(child)) return;\n if (child.type === KanbanCard) {\n if ((child.props as { id?: string }).id === cardId) idx = i;\n i += 1;\n return;\n }\n const inner = (child.props as { children?: React.ReactNode }).children;\n if (inner !== undefined) walk(inner);\n });\n }\n walk(children);\n return idx;\n}\n\nexport function KanbanColumn({\n children,\n id,\n title,\n className,\n unstyled,\n wipLimit,\n hideWhenEmpty,\n}: KanbanColumnProps) {\n const { onCardMove, draggedCard, dragSource, registerColumn } = useKanban();\n const [dragOver, setDragOver] = useState(false);\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const [dropY, setDropY] = useState<number | null>(null);\n const cardsRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => registerColumn(id), [id, registerColumn]);\n\n /**\n * Compute drop position from mouse Y. Walks the *DOM* (not the React\n * tree) and queries `[data-react-fancy-kanban-card]` so wrappers\n * (ContextMenu, custom Card surfaces, motion.div) don't break the\n * indicator placement.\n */\n const updateDrop = useCallback((clientY: number) => {\n const container = cardsRef.current;\n if (!container) {\n setDropIndex(null);\n setDropY(null);\n return;\n }\n\n // Limit to cards belonging to THIS column — important if a card\n // happens to nest a sub-board (rare, but cheap to defend).\n const all = Array.from(\n container.querySelectorAll<HTMLElement>(\n \"[data-react-fancy-kanban-card]\",\n ),\n );\n const cards = all.filter(\n (el) =>\n el.closest(\"[data-react-fancy-kanban-column]\") ===\n cardsRef.current?.closest(\"[data-react-fancy-kanban-column]\"),\n );\n\n const containerRect = container.getBoundingClientRect();\n\n if (cards.length === 0) {\n setDropIndex(0);\n setDropY(0);\n return;\n }\n\n let idx = cards.length;\n let yRel = 0;\n for (let i = 0; i < cards.length; i++) {\n const rect = cards[i]!.getBoundingClientRect();\n if (clientY < rect.top + rect.height / 2) {\n idx = i;\n yRel = rect.top - containerRect.top;\n break;\n }\n }\n if (idx === cards.length) {\n const last = cards[cards.length - 1]!.getBoundingClientRect();\n yRel = last.bottom - containerRect.top;\n }\n\n setDropIndex(idx);\n setDropY(yRel);\n }, []);\n\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n // Only react to card drags. Column drags are handled by the root.\n if (!draggedCard) return;\n e.preventDefault();\n e.stopPropagation();\n setDragOver(true);\n updateDrop(e.clientY);\n },\n [draggedCard, updateDrop],\n );\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n if (e.currentTarget.contains(e.relatedTarget as Node | null)) return;\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n }, []);\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n if (!draggedCard) return;\n e.preventDefault();\n e.stopPropagation();\n const target = dropIndex ?? 0;\n\n if (dragSource) {\n let finalIdx = target;\n if (dragSource === id) {\n const srcIdx = findCardIndex(children, draggedCard);\n if (srcIdx !== -1 && target > srcIdx) finalIdx = target - 1;\n if (srcIdx === finalIdx) {\n // No-op\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n return;\n }\n }\n onCardMove?.(draggedCard, dragSource, id, finalIdx);\n }\n\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n },\n [draggedCard, dragSource, dropIndex, id, onCardMove, children],\n );\n\n const cardCount = countCardChildren(children);\n if (hideWhenEmpty && cardCount === 0 && !draggedCard) return null;\n\n const showIndicator =\n draggedCard !== null &&\n dropIndex !== null &&\n dropY !== null &&\n dragOver;\n\n const overWip = wipLimit !== undefined && cardCount > wipLimit;\n\n return (\n <KanbanColumnContext.Provider value={id}>\n <div\n data-react-fancy-kanban-column=\"\"\n data-column-id={id}\n role=\"group\"\n aria-label={title}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n className={cn(\n \"flex flex-col\",\n !unstyled && DEFAULT_COLUMN_CLASSES,\n dragOver && \"ring-2 ring-blue-400 ring-inset\",\n className,\n )}\n >\n {title && (\n <h3 className=\"mb-3 flex items-center gap-2 text-sm font-semibold text-zinc-600 dark:text-zinc-400\">\n <span className=\"flex-1\">{title}</span>\n <span\n className={cn(\n \"rounded-full px-1.5 py-0.5 text-[10px] font-semibold\",\n overWip\n ? \"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300\"\n : \"bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300\",\n )}\n >\n {cardCount}\n {wipLimit !== undefined ? `/${wipLimit}` : \"\"}\n </span>\n </h3>\n )}\n\n {/* Cards container — `relative` so the drop indicator overlay\n can position itself in the container's coordinate space.\n Children are rendered untouched so any wrapper hierarchy\n (ContextMenu, motion.div, etc.) keeps working. */}\n <div ref={cardsRef} className=\"relative flex flex-1 flex-col gap-2\">\n {children}\n\n {showIndicator && (\n <div\n data-react-fancy-kanban-drop-indicator=\"\"\n style={{ top: dropY }}\n className=\"pointer-events-none absolute left-0 right-0 h-0.5 -translate-y-1/2 rounded-full bg-blue-500/80 shadow-[0_0_0_3px_rgba(59,130,246,0.15)]\"\n />\n )}\n </div>\n </div>\n </KanbanColumnContext.Provider>\n );\n}\n\nKanbanColumn.displayName = \"KanbanColumn\";\n","import { useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useKanban, useKanbanColumn } from \"./Kanban.context\";\nimport type { KanbanColumnHandleProps } from \"./Kanban.types\";\n\n/**\n * Drag handle for column reordering.\n *\n * Mount inside a `Kanban.Column` to make that column draggable. The\n * column's parent `Kanban` listens for the drop and surfaces the new\n * position via `onColumnMove`. Without a handle, columns are static.\n *\n * Typically wrapped around the column header so users grab the title\n * to reorder; can also be a small grip icon.\n */\nexport function KanbanColumnHandle({\n children,\n className,\n}: KanbanColumnHandleProps) {\n const { setDraggedColumn } = useKanban();\n const columnId = useKanbanColumn();\n\n const handleDragStart = useCallback(\n (e: React.DragEvent) => {\n // Set a dataTransfer payload so the browser permits the drag — some\n // browsers refuse if dataTransfer is empty.\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.setData(\"text/plain\", columnId);\n e.stopPropagation();\n setDraggedColumn(columnId);\n },\n [columnId, setDraggedColumn],\n );\n\n const handleDragEnd = useCallback(() => {\n setDraggedColumn(null);\n }, [setDraggedColumn]);\n\n return (\n <div\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n data-react-fancy-kanban-column-handle=\"\"\n className={cn(\n \"cursor-grab active:cursor-grabbing select-none\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nKanbanColumnHandle.displayName = \"KanbanColumnHandle\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { KanbanContext } from \"./Kanban.context\";\nimport { KanbanColumn } from \"./KanbanColumn\";\nimport { KanbanCard } from \"./KanbanCard\";\nimport { KanbanColumnHandle } from \"./KanbanColumnHandle\";\nimport type { KanbanProps } from \"./Kanban.types\";\n\n/**\n * Kanban board.\n *\n * Compound:\n * <Kanban onCardMove={...} onColumnMove={...}>\n * <Kanban.Column id=\"todo\" wipLimit={4}>\n * <Kanban.ColumnHandle>...header...</Kanban.ColumnHandle> // optional\n * <Kanban.Card id=\"...\">...</Kanban.Card>\n * </Kanban.Column>\n * </Kanban>\n *\n * Cards drag between columns AND within a column. Drop position is\n * computed from mouse Y at hover time and surfaced via the `toIndex`\n * argument on `onCardMove`.\n *\n * Columns drag horizontally to reorder when a `<Kanban.ColumnHandle>`\n * is mounted inside them. The root computes the drop index from\n * mouse X and surfaces it via `onColumnMove`.\n */\nfunction KanbanRoot({\n children,\n onCardMove,\n onColumnMove,\n className,\n}: KanbanProps) {\n const [draggedCard, setDraggedCard] = useState<string | null>(null);\n const [dragSource, setDragSource] = useState<string | null>(null);\n const [draggedColumn, setDraggedColumn] = useState<string | null>(null);\n\n const orderRef = useRef<string[]>([]);\n const [columnIds, setColumnIds] = useState<string[]>([]);\n\n const registerColumn = useCallback((id: string) => {\n if (!orderRef.current.includes(id)) {\n orderRef.current = [...orderRef.current, id];\n setColumnIds(orderRef.current);\n }\n return () => {\n orderRef.current = orderRef.current.filter((x) => x !== id);\n setColumnIds(orderRef.current);\n };\n }, []);\n\n const ctx = useMemo(\n () => ({\n draggedCard,\n setDraggedCard,\n dragSource,\n setDragSource,\n draggedColumn,\n setDraggedColumn,\n onCardMove,\n onColumnMove,\n columnIds,\n registerColumn,\n }),\n [\n draggedCard,\n dragSource,\n draggedColumn,\n onCardMove,\n onColumnMove,\n columnIds,\n registerColumn,\n ],\n );\n\n // ── Column-level drop handling ────────────────────────────────────────\n // Root listens only when a column is being dragged. Drop index is\n // computed from mouse X versus each column's horizontal midpoint.\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n if (!draggedColumn) return;\n e.preventDefault();\n },\n [draggedColumn],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n if (!draggedColumn || !containerRef.current) return;\n e.preventDefault();\n\n const cols = containerRef.current.querySelectorAll<HTMLElement>(\n '[data-react-fancy-kanban-column]',\n );\n const x = e.clientX;\n let dropIdx = cols.length;\n for (let i = 0; i < cols.length; i++) {\n const rect = cols[i]!.getBoundingClientRect();\n if (x < rect.left + rect.width / 2) {\n dropIdx = i;\n break;\n }\n }\n\n const sourceIdx = columnIds.indexOf(draggedColumn);\n // When moving rightward, dropping at index N visually means landing\n // at N - 1 after the source is removed.\n const finalIdx =\n sourceIdx >= 0 && dropIdx > sourceIdx ? dropIdx - 1 : dropIdx;\n\n if (finalIdx !== sourceIdx) {\n onColumnMove?.(draggedColumn, finalIdx);\n }\n setDraggedColumn(null);\n },\n [draggedColumn, columnIds, onColumnMove],\n );\n\n return (\n <KanbanContext.Provider value={ctx}>\n <div\n ref={containerRef}\n data-react-fancy-kanban=\"\"\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"application\"\n aria-roledescription=\"kanban board\"\n className={cn(\"flex gap-4 overflow-x-auto p-4\", className)}\n >\n {children}\n </div>\n </KanbanContext.Provider>\n );\n}\n\nexport const Kanban = Object.assign(KanbanRoot, {\n Column: KanbanColumn,\n Card: KanbanCard,\n ColumnHandle: KanbanColumnHandle,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/Kanban/Kanban.context.ts","../src/components/Kanban/KanbanCard.tsx","../src/components/Kanban/KanbanColumn.tsx","../src/components/Kanban/KanbanColumnHandle.tsx","../src/components/Kanban/Kanban.tsx"],"names":["useCallback","jsx","useState","useRef"],"mappings":"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","file":"chunk-O6E2WC3J.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { KanbanContextValue } from \"./Kanban.types\";\n\nexport const KanbanContext = createContext<KanbanContextValue | null>(null);\n\nexport function useKanban(): KanbanContextValue {\n const ctx = useContext(KanbanContext);\n if (!ctx) {\n throw new Error(\"Kanban compound components must be used within <Kanban>\");\n }\n return ctx;\n}\n\nexport const KanbanColumnContext = createContext<string>(\"\");\n\nexport function useKanbanColumn(): string {\n return useContext(KanbanColumnContext);\n}\n","import { useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useKanban, useKanbanColumn } from \"./Kanban.context\";\nimport type { KanbanCardProps } from \"./Kanban.types\";\n\nconst DEFAULT_CARD_CLASSES =\n \"rounded-lg border border-zinc-200 bg-white p-3 shadow-sm transition-shadow hover:shadow-md dark:border-zinc-700 dark:bg-zinc-900\";\n\nexport function KanbanCard({ children, id, className, unstyled }: KanbanCardProps) {\n const { setDraggedCard, setDragSource } = useKanban();\n const columnId = useKanbanColumn();\n\n const handleDragStart = useCallback(() => {\n setDraggedCard(id);\n setDragSource(columnId);\n }, [id, columnId, setDraggedCard, setDragSource]);\n\n const handleDragEnd = useCallback(() => {\n setDraggedCard(null);\n setDragSource(null);\n }, [setDraggedCard, setDragSource]);\n\n return (\n <div\n data-react-fancy-kanban-card=\"\"\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n className={cn(\n // Drag affordance — kept even when unstyled so users still see grab cursors.\n \"cursor-grab active:cursor-grabbing\",\n !unstyled && DEFAULT_CARD_CLASSES,\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nKanbanCard.displayName = \"KanbanCard\";\n","import { Children, isValidElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { KanbanCard } from \"./KanbanCard\";\nimport { useKanban, KanbanColumnContext } from \"./Kanban.context\";\nimport type { KanbanColumnProps } from \"./Kanban.types\";\n\nconst DEFAULT_COLUMN_CLASSES =\n \"min-h-[200px] w-72 rounded-xl bg-zinc-50 p-3 dark:bg-zinc-800/50\";\n\n/**\n * Deep-recurse through the children tree counting Kanban.Card descendants\n * regardless of wrapping (Fragment, ContextMenu, motion.div, custom HOCs,\n * etc.). Used by `hideWhenEmpty` and the WIP-limit count chip.\n */\nfunction countCardChildren(children: React.ReactNode): number {\n let n = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n if (child.type === KanbanCard) {\n n += 1;\n return;\n }\n const inner = (child.props as { children?: React.ReactNode }).children;\n if (inner !== undefined) n += countCardChildren(inner);\n });\n return n;\n}\n\n/**\n * Find the document-order index of a Kanban.Card with the given id, deep-\n * recursing through wrappers. Used by same-column reorder to compute the\n * post-removal insert position.\n */\nfunction findCardIndex(children: React.ReactNode, cardId: string): number {\n let idx = -1;\n let i = 0;\n function walk(nodes: React.ReactNode): void {\n Children.forEach(nodes, (child) => {\n if (idx !== -1) return;\n if (!isValidElement(child)) return;\n if (child.type === KanbanCard) {\n if ((child.props as { id?: string }).id === cardId) idx = i;\n i += 1;\n return;\n }\n const inner = (child.props as { children?: React.ReactNode }).children;\n if (inner !== undefined) walk(inner);\n });\n }\n walk(children);\n return idx;\n}\n\nexport function KanbanColumn({\n children,\n id,\n title,\n className,\n unstyled,\n wipLimit,\n hideWhenEmpty,\n}: KanbanColumnProps) {\n const { onCardMove, draggedCard, dragSource, registerColumn } = useKanban();\n const [dragOver, setDragOver] = useState(false);\n const [dropIndex, setDropIndex] = useState<number | null>(null);\n const [dropY, setDropY] = useState<number | null>(null);\n const cardsRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => registerColumn(id), [id, registerColumn]);\n\n /**\n * Compute drop position from mouse Y. Walks the *DOM* (not the React\n * tree) and queries `[data-react-fancy-kanban-card]` so wrappers\n * (ContextMenu, custom Card surfaces, motion.div) don't break the\n * indicator placement.\n */\n const updateDrop = useCallback((clientY: number) => {\n const container = cardsRef.current;\n if (!container) {\n setDropIndex(null);\n setDropY(null);\n return;\n }\n\n // Limit to cards belonging to THIS column — important if a card\n // happens to nest a sub-board (rare, but cheap to defend).\n const all = Array.from(\n container.querySelectorAll<HTMLElement>(\n \"[data-react-fancy-kanban-card]\",\n ),\n );\n const cards = all.filter(\n (el) =>\n el.closest(\"[data-react-fancy-kanban-column]\") ===\n cardsRef.current?.closest(\"[data-react-fancy-kanban-column]\"),\n );\n\n const containerRect = container.getBoundingClientRect();\n\n if (cards.length === 0) {\n setDropIndex(0);\n setDropY(0);\n return;\n }\n\n let idx = cards.length;\n let yRel = 0;\n for (let i = 0; i < cards.length; i++) {\n const rect = cards[i]!.getBoundingClientRect();\n if (clientY < rect.top + rect.height / 2) {\n idx = i;\n yRel = rect.top - containerRect.top;\n break;\n }\n }\n if (idx === cards.length) {\n const last = cards[cards.length - 1]!.getBoundingClientRect();\n yRel = last.bottom - containerRect.top;\n }\n\n setDropIndex(idx);\n setDropY(yRel);\n }, []);\n\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n // Only react to card drags. Column drags are handled by the root.\n if (!draggedCard) return;\n e.preventDefault();\n e.stopPropagation();\n setDragOver(true);\n updateDrop(e.clientY);\n },\n [draggedCard, updateDrop],\n );\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n if (e.currentTarget.contains(e.relatedTarget as Node | null)) return;\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n }, []);\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n if (!draggedCard) return;\n e.preventDefault();\n e.stopPropagation();\n const target = dropIndex ?? 0;\n\n if (dragSource) {\n let finalIdx = target;\n if (dragSource === id) {\n const srcIdx = findCardIndex(children, draggedCard);\n if (srcIdx !== -1 && target > srcIdx) finalIdx = target - 1;\n if (srcIdx === finalIdx) {\n // No-op\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n return;\n }\n }\n onCardMove?.(draggedCard, dragSource, id, finalIdx);\n }\n\n setDragOver(false);\n setDropIndex(null);\n setDropY(null);\n },\n [draggedCard, dragSource, dropIndex, id, onCardMove, children],\n );\n\n const cardCount = countCardChildren(children);\n if (hideWhenEmpty && cardCount === 0 && !draggedCard) return null;\n\n const showIndicator =\n draggedCard !== null &&\n dropIndex !== null &&\n dropY !== null &&\n dragOver;\n\n const overWip = wipLimit !== undefined && cardCount > wipLimit;\n\n return (\n <KanbanColumnContext.Provider value={id}>\n <div\n data-react-fancy-kanban-column=\"\"\n data-column-id={id}\n role=\"group\"\n aria-label={title}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n className={cn(\n \"flex flex-col\",\n !unstyled && DEFAULT_COLUMN_CLASSES,\n dragOver && \"ring-2 ring-blue-400 ring-inset\",\n className,\n )}\n >\n {title && (\n <h3 className=\"mb-3 flex items-center gap-2 text-sm font-semibold text-zinc-600 dark:text-zinc-400\">\n <span className=\"flex-1\">{title}</span>\n <span\n className={cn(\n \"rounded-full px-1.5 py-0.5 text-[10px] font-semibold\",\n overWip\n ? \"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300\"\n : \"bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300\",\n )}\n >\n {cardCount}\n {wipLimit !== undefined ? `/${wipLimit}` : \"\"}\n </span>\n </h3>\n )}\n\n {/* Cards container — `relative` so the drop indicator overlay\n can position itself in the container's coordinate space.\n Children are rendered untouched so any wrapper hierarchy\n (ContextMenu, motion.div, etc.) keeps working. */}\n <div ref={cardsRef} className=\"relative flex flex-1 flex-col gap-2\">\n {children}\n\n {showIndicator && (\n <div\n data-react-fancy-kanban-drop-indicator=\"\"\n style={{ top: dropY }}\n className=\"pointer-events-none absolute left-0 right-0 h-0.5 -translate-y-1/2 rounded-full bg-blue-500/80 shadow-[0_0_0_3px_rgba(59,130,246,0.15)]\"\n />\n )}\n </div>\n </div>\n </KanbanColumnContext.Provider>\n );\n}\n\nKanbanColumn.displayName = \"KanbanColumn\";\n","import { useCallback } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useKanban, useKanbanColumn } from \"./Kanban.context\";\nimport type { KanbanColumnHandleProps } from \"./Kanban.types\";\n\n/**\n * Drag handle for column reordering.\n *\n * Mount inside a `Kanban.Column` to make that column draggable. The\n * column's parent `Kanban` listens for the drop and surfaces the new\n * position via `onColumnMove`. Without a handle, columns are static.\n *\n * Typically wrapped around the column header so users grab the title\n * to reorder; can also be a small grip icon.\n */\nexport function KanbanColumnHandle({\n children,\n className,\n}: KanbanColumnHandleProps) {\n const { setDraggedColumn } = useKanban();\n const columnId = useKanbanColumn();\n\n const handleDragStart = useCallback(\n (e: React.DragEvent) => {\n // Set a dataTransfer payload so the browser permits the drag — some\n // browsers refuse if dataTransfer is empty.\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.setData(\"text/plain\", columnId);\n e.stopPropagation();\n setDraggedColumn(columnId);\n },\n [columnId, setDraggedColumn],\n );\n\n const handleDragEnd = useCallback(() => {\n setDraggedColumn(null);\n }, [setDraggedColumn]);\n\n return (\n <div\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n data-react-fancy-kanban-column-handle=\"\"\n className={cn(\n \"cursor-grab active:cursor-grabbing select-none\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nKanbanColumnHandle.displayName = \"KanbanColumnHandle\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { KanbanContext } from \"./Kanban.context\";\nimport { KanbanColumn } from \"./KanbanColumn\";\nimport { KanbanCard } from \"./KanbanCard\";\nimport { KanbanColumnHandle } from \"./KanbanColumnHandle\";\nimport type { KanbanProps } from \"./Kanban.types\";\n\n/**\n * Kanban board.\n *\n * Compound:\n * <Kanban onCardMove={...} onColumnMove={...}>\n * <Kanban.Column id=\"todo\" wipLimit={4}>\n * <Kanban.ColumnHandle>...header...</Kanban.ColumnHandle> // optional\n * <Kanban.Card id=\"...\">...</Kanban.Card>\n * </Kanban.Column>\n * </Kanban>\n *\n * Cards drag between columns AND within a column. Drop position is\n * computed from mouse Y at hover time and surfaced via the `toIndex`\n * argument on `onCardMove`.\n *\n * Columns drag horizontally to reorder when a `<Kanban.ColumnHandle>`\n * is mounted inside them. The root computes the drop index from\n * mouse X and surfaces it via `onColumnMove`.\n */\nfunction KanbanRoot({\n children,\n onCardMove,\n onColumnMove,\n className,\n}: KanbanProps) {\n const [draggedCard, setDraggedCard] = useState<string | null>(null);\n const [dragSource, setDragSource] = useState<string | null>(null);\n const [draggedColumn, setDraggedColumn] = useState<string | null>(null);\n\n const orderRef = useRef<string[]>([]);\n const [columnIds, setColumnIds] = useState<string[]>([]);\n\n const registerColumn = useCallback((id: string) => {\n if (!orderRef.current.includes(id)) {\n orderRef.current = [...orderRef.current, id];\n setColumnIds(orderRef.current);\n }\n return () => {\n orderRef.current = orderRef.current.filter((x) => x !== id);\n setColumnIds(orderRef.current);\n };\n }, []);\n\n const ctx = useMemo(\n () => ({\n draggedCard,\n setDraggedCard,\n dragSource,\n setDragSource,\n draggedColumn,\n setDraggedColumn,\n onCardMove,\n onColumnMove,\n columnIds,\n registerColumn,\n }),\n [\n draggedCard,\n dragSource,\n draggedColumn,\n onCardMove,\n onColumnMove,\n columnIds,\n registerColumn,\n ],\n );\n\n // ── Column-level drop handling ────────────────────────────────────────\n // Root listens only when a column is being dragged. Drop index is\n // computed from mouse X versus each column's horizontal midpoint.\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleDragOver = useCallback(\n (e: React.DragEvent) => {\n if (!draggedColumn) return;\n e.preventDefault();\n },\n [draggedColumn],\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n if (!draggedColumn || !containerRef.current) return;\n e.preventDefault();\n\n const cols = containerRef.current.querySelectorAll<HTMLElement>(\n '[data-react-fancy-kanban-column]',\n );\n const x = e.clientX;\n let dropIdx = cols.length;\n for (let i = 0; i < cols.length; i++) {\n const rect = cols[i]!.getBoundingClientRect();\n if (x < rect.left + rect.width / 2) {\n dropIdx = i;\n break;\n }\n }\n\n const sourceIdx = columnIds.indexOf(draggedColumn);\n // When moving rightward, dropping at index N visually means landing\n // at N - 1 after the source is removed.\n const finalIdx =\n sourceIdx >= 0 && dropIdx > sourceIdx ? dropIdx - 1 : dropIdx;\n\n if (finalIdx !== sourceIdx) {\n onColumnMove?.(draggedColumn, finalIdx);\n }\n setDraggedColumn(null);\n },\n [draggedColumn, columnIds, onColumnMove],\n );\n\n return (\n <KanbanContext.Provider value={ctx}>\n <div\n ref={containerRef}\n data-react-fancy-kanban=\"\"\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"application\"\n aria-roledescription=\"kanban board\"\n className={cn(\"flex gap-4 overflow-x-auto p-4\", className)}\n >\n {children}\n </div>\n </KanbanContext.Provider>\n );\n}\n\nexport const Kanban = Object.assign(KanbanRoot, {\n Column: KanbanColumn,\n Card: KanbanCard,\n ColumnHandle: KanbanColumnHandle,\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk3Z6ALUWP_cjs = require('./chunk-3Z6ALUWP.cjs');
3
+ var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -14,7 +14,7 @@ var StatList = react.forwardRef(
14
14
  ...props,
15
15
  "data-react-fancy-stat-list": "",
16
16
  "data-align": align,
17
- className: chunk3Z6ALUWP_cjs.cn(
17
+ className: chunkZU5Q77OT_cjs.cn(
18
18
  "flex flex-col gap-0.5 font-mono text-[11.5px] text-zinc-500 dark:text-zinc-400",
19
19
  align === "right" ? "items-end text-right" : "items-start text-left",
20
20
  className
@@ -38,5 +38,5 @@ var StatList = react.forwardRef(
38
38
  StatList.displayName = "StatList";
39
39
 
40
40
  exports.StatList = StatList;
41
- //# sourceMappingURL=chunk-5LHG7HEY.cjs.map
42
- //# sourceMappingURL=chunk-5LHG7HEY.cjs.map
41
+ //# sourceMappingURL=chunk-O6GTY53I.cjs.map
42
+ //# sourceMappingURL=chunk-O6GTY53I.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/StatList/StatList.tsx"],"names":["forwardRef","jsx","cn","jsxs"],"mappings":";;;;;;AAoBO,IAAM,QAAA,GAAWA,gBAAA;AAAA,EACtB,CAAC,EAAE,KAAA,EAAO,KAAA,GAAQ,SAAS,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACxD,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,4BAAA,EAA2B,EAAA;AAAA,QAC3B,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAWC,oBAAA;AAAA,UACT,gFAAA;AAAA,UACA,KAAA,KAAU,UAAU,sBAAA,GAAyB,uBAAA;AAAA,UAC7C;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAChBC,eAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,WAAA,EAAW,KAAK,GAAA,KAAQ,OAAO,KAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,MAAA,CAAA;AAAA,YAEtE,QAAA,EAAA;AAAA,8BAAAF,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8CAAA,EAAgD,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,cAAK,GAAA;AAAA,cAC5E,IAAA,CAAK;AAAA;AAAA,WAAA;AAAA,UAJD,KAAK,GAAA,KAAQ,OAAO,KAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,CAAA;AAAA,SAMnE;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-5LHG7HEY.cjs","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { StatListProps } from \"./StatList.types\";\n\n/**\n * The mono figure stack — `70 packages / 261 components / MIT licensed`.\n *\n * The Inspiration index and `/packages` each hand-rolled this from tokens, which\n * is the gallery working as intended: it stress-tests the kit, and what it\n * hand-rolls is the gap list. The list only pays off when the gap comes back\n * here, otherwise every surface keeps a copy and they drift apart.\n *\n * Takes `items` as DATA rather than children. What those surfaces repeat is a\n * shape, not a layout, so there is nothing to assemble at the call site — and a\n * data prop is what an agent can emit, which children are not.\n *\n * The value is a `<b>` rather than a colour, because in most of these stacks the\n * figure is the only part that is not muted, and expressing that structurally\n * keeps it meaningful when a design replaces the styling wholesale.\n */\nexport const StatList = forwardRef<HTMLDivElement, StatListProps>(\n ({ items, align = \"right\", className, ...props }, ref) => {\n if (items.length === 0) return null;\n\n return (\n <div\n ref={ref}\n {...props}\n data-react-fancy-stat-list=\"\"\n data-align={align}\n className={cn(\n \"flex flex-col gap-0.5 font-mono text-[11.5px] text-zinc-500 dark:text-zinc-400\",\n align === \"right\" ? \"items-end text-right\" : \"items-start text-left\",\n className,\n )}\n >\n {items.map((item, i) => (\n <span\n key={item.key ?? (typeof item.label === \"string\" ? item.label : i)}\n data-stat={item.key ?? (typeof item.label === \"string\" ? item.label : undefined)}\n >\n <b className=\"font-medium text-zinc-900 dark:text-zinc-100\">{item.value}</b>{\" \"}\n {item.label}\n </span>\n ))}\n </div>\n );\n },\n);\n\nStatList.displayName = \"StatList\";\n"]}
1
+ {"version":3,"sources":["../src/components/StatList/StatList.tsx"],"names":["forwardRef","jsx","cn","jsxs"],"mappings":";;;;;;AAoBO,IAAM,QAAA,GAAWA,gBAAA;AAAA,EACtB,CAAC,EAAE,KAAA,EAAO,KAAA,GAAQ,SAAS,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACxD,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,4BAAA,EAA2B,EAAA;AAAA,QAC3B,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA,EAAWC,oBAAA;AAAA,UACT,gFAAA;AAAA,UACA,KAAA,KAAU,UAAU,sBAAA,GAAyB,uBAAA;AAAA,UAC7C;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,qBAChBC,eAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,WAAA,EAAW,KAAK,GAAA,KAAQ,OAAO,KAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,MAAA,CAAA;AAAA,YAEtE,QAAA,EAAA;AAAA,8BAAAF,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8CAAA,EAAgD,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,cAAK,GAAA;AAAA,cAC5E,IAAA,CAAK;AAAA;AAAA,WAAA;AAAA,UAJD,KAAK,GAAA,KAAQ,OAAO,KAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,CAAA;AAAA,SAMnE;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-O6GTY53I.cjs","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { StatListProps } from \"./StatList.types\";\n\n/**\n * The mono figure stack — `70 packages / 261 components / MIT licensed`.\n *\n * The Inspiration index and `/packages` each hand-rolled this from tokens, which\n * is the gallery working as intended: it stress-tests the kit, and what it\n * hand-rolls is the gap list. The list only pays off when the gap comes back\n * here, otherwise every surface keeps a copy and they drift apart.\n *\n * Takes `items` as DATA rather than children. What those surfaces repeat is a\n * shape, not a layout, so there is nothing to assemble at the call site — and a\n * data prop is what an agent can emit, which children are not.\n *\n * The value is a `<b>` rather than a colour, because in most of these stacks the\n * figure is the only part that is not muted, and expressing that structurally\n * keeps it meaningful when a design replaces the styling wholesale.\n */\nexport const StatList = forwardRef<HTMLDivElement, StatListProps>(\n ({ items, align = \"right\", className, ...props }, ref) => {\n if (items.length === 0) return null;\n\n return (\n <div\n ref={ref}\n {...props}\n data-react-fancy-stat-list=\"\"\n data-align={align}\n className={cn(\n \"flex flex-col gap-0.5 font-mono text-[11.5px] text-zinc-500 dark:text-zinc-400\",\n align === \"right\" ? \"items-end text-right\" : \"items-start text-left\",\n className,\n )}\n >\n {items.map((item, i) => (\n <span\n key={item.key ?? (typeof item.label === \"string\" ? item.label : i)}\n data-stat={item.key ?? (typeof item.label === \"string\" ? item.label : undefined)}\n >\n <b className=\"font-medium text-zinc-900 dark:text-zinc-100\">{item.value}</b>{\" \"}\n {item.label}\n </span>\n ))}\n </div>\n );\n },\n);\n\nStatList.displayName = \"StatList\";\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-DSUHZO6T.js';
1
+ import { cn } from './chunk-MMW2JGKZ.js';
2
2
  import { forwardRef } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
@@ -52,5 +52,5 @@ StatRoot.displayName = "Stat";
52
52
  var Stat = Object.assign(StatRoot, { Band: StatBand });
53
53
 
54
54
  export { Stat, StatBand };
55
- //# sourceMappingURL=chunk-ESKVRRVA.js.map
56
- //# sourceMappingURL=chunk-ESKVRRVA.js.map
55
+ //# sourceMappingURL=chunk-OFHO5SXA.js.map
56
+ //# sourceMappingURL=chunk-OFHO5SXA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Stat/StatBand.tsx","../src/components/Stat/Stat.tsx"],"names":["forwardRef","jsx"],"mappings":";;;;AAWO,IAAM,QAAA,GAAW,UAAA;AAAA,EACtB,CAAC,EAAE,OAAA,GAAU,CAAA,EAAG,SAAA,EAAW,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9D,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,4BAAA,EAA2B,EAAA;AAAA,QAC3B,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,QACrC,OAAO,EAAE,mBAAA,EAAqB,UAAU,OAAO,CAAA,iBAAA,CAAA,EAAqB,GAAG,KAAA,EAAM;AAAA,QAC5E,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;ACtBvB,IAAM,YAAA,GAA+D;AAAA,EACnE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAcA,IAAM,QAAA,GAAWA,UAAAA;AAAA,EACf,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,GAAO,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACrE,IAAA,uBACEC,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,uBAAA,EAAsB,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EACnE,sCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,6BAAA,EAA4B,EAAA;AAAA,UAC5B,SAAA,EAAW,EAAA;AAAA,YACT,yFAAA;AAAA,YACA,aAAa,IAAI;AAAA,WACnB;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MACC,KAAA,IAAS,wBACRA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,6BAAA,EAA4B,EAAA;AAAA,UAC5B,SAAA,EAAU,mFAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,MAAA;AAEhB,IAAM,OAAO,MAAA,CAAO,MAAA,CAAO,UAAU,EAAE,IAAA,EAAM,UAAU","file":"chunk-ESKVRRVA.js","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { StatBandProps } from \"./Stat.types\";\n\n/**\n * The row a set of `<Stat>`s sits in.\n *\n * A plain grid, but it is the reason `<Stat>` defaults to `tabular-nums`: a\n * figure alone can be proportional without anyone noticing, and only becomes\n * wrong once it has neighbours to fail to line up with.\n */\nexport const StatBand = forwardRef<HTMLDivElement, StatBandProps>(\n ({ columns = 4, className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-react-fancy-stat-band=\"\"\n className={cn(\"grid gap-6\", className)}\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nStatBand.displayName = \"StatBand\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { StatBand } from \"./StatBand\";\nimport type { StatProps } from \"./Stat.types\";\n\nconst valueClasses: Record<NonNullable<StatProps[\"size\"]>, string> = {\n sm: \"text-xl\",\n md: \"text-3xl\",\n lg: \"text-5xl\",\n};\n\n/**\n * A big display figure with a caption — the `2016 / 120+ / 08 / 14` band cell.\n *\n * Twenty-seven gallery styles build this, and **five of seventeen forgot\n * `tabular-nums`**. That is not a cosmetic slip: in a proportional face a `1` is\n * narrower than a `0`, so a row of figures that is supposed to read as a band\n * comes out visibly ragged, and the fix is one property nobody remembers to\n * look for. It is the default here.\n *\n * Distinct from a right-aligned key/value list — this is a large flush-left\n * figure repeated across a row.\n */\nconst StatRoot = forwardRef<HTMLDivElement, StatProps>(\n ({ value, label, size = \"md\", className, children, ...props }, ref) => {\n return (\n <div ref={ref} data-react-fancy-stat=\"\" className={cn(className)} {...props}>\n {children ?? (\n <>\n <div\n data-react-fancy-stat-value=\"\"\n className={cn(\n \"font-semibold leading-none tracking-tight text-zinc-900 tabular-nums dark:text-zinc-100\",\n valueClasses[size],\n )}\n >\n {value}\n </div>\n {label != null && (\n <div\n data-react-fancy-stat-label=\"\"\n className=\"mt-1.5 font-mono text-xs uppercase tracking-wide text-zinc-500 dark:text-zinc-400\"\n >\n {label}\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nStatRoot.displayName = \"Stat\";\n\nexport const Stat = Object.assign(StatRoot, { Band: StatBand });\n"]}
1
+ {"version":3,"sources":["../src/components/Stat/StatBand.tsx","../src/components/Stat/Stat.tsx"],"names":["forwardRef","jsx"],"mappings":";;;;AAWO,IAAM,QAAA,GAAW,UAAA;AAAA,EACtB,CAAC,EAAE,OAAA,GAAU,CAAA,EAAG,SAAA,EAAW,OAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9D,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,4BAAA,EAA2B,EAAA;AAAA,QAC3B,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,QACrC,OAAO,EAAE,mBAAA,EAAqB,UAAU,OAAO,CAAA,iBAAA,CAAA,EAAqB,GAAG,KAAA,EAAM;AAAA,QAC5E,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;ACtBvB,IAAM,YAAA,GAA+D;AAAA,EACnE,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAcA,IAAM,QAAA,GAAWA,UAAAA;AAAA,EACf,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,IAAA,GAAO,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACrE,IAAA,uBACEC,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,uBAAA,EAAsB,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EACnE,sCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,6BAAA,EAA4B,EAAA;AAAA,UAC5B,SAAA,EAAW,EAAA;AAAA,YACT,yFAAA;AAAA,YACA,aAAa,IAAI;AAAA,WACnB;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MACC,KAAA,IAAS,wBACRA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,6BAAA,EAA4B,EAAA;AAAA,UAC5B,SAAA,EAAU,mFAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,MAAA;AAEhB,IAAM,OAAO,MAAA,CAAO,MAAA,CAAO,UAAU,EAAE,IAAA,EAAM,UAAU","file":"chunk-OFHO5SXA.js","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { StatBandProps } from \"./Stat.types\";\n\n/**\n * The row a set of `<Stat>`s sits in.\n *\n * A plain grid, but it is the reason `<Stat>` defaults to `tabular-nums`: a\n * figure alone can be proportional without anyone noticing, and only becomes\n * wrong once it has neighbours to fail to line up with.\n */\nexport const StatBand = forwardRef<HTMLDivElement, StatBandProps>(\n ({ columns = 4, className, style, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-react-fancy-stat-band=\"\"\n className={cn(\"grid gap-6\", className)}\n style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nStatBand.displayName = \"StatBand\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { StatBand } from \"./StatBand\";\nimport type { StatProps } from \"./Stat.types\";\n\nconst valueClasses: Record<NonNullable<StatProps[\"size\"]>, string> = {\n sm: \"text-xl\",\n md: \"text-3xl\",\n lg: \"text-5xl\",\n};\n\n/**\n * A big display figure with a caption — the `2016 / 120+ / 08 / 14` band cell.\n *\n * Twenty-seven gallery styles build this, and **five of seventeen forgot\n * `tabular-nums`**. That is not a cosmetic slip: in a proportional face a `1` is\n * narrower than a `0`, so a row of figures that is supposed to read as a band\n * comes out visibly ragged, and the fix is one property nobody remembers to\n * look for. It is the default here.\n *\n * Distinct from a right-aligned key/value list — this is a large flush-left\n * figure repeated across a row.\n */\nconst StatRoot = forwardRef<HTMLDivElement, StatProps>(\n ({ value, label, size = \"md\", className, children, ...props }, ref) => {\n return (\n <div ref={ref} data-react-fancy-stat=\"\" className={cn(className)} {...props}>\n {children ?? (\n <>\n <div\n data-react-fancy-stat-value=\"\"\n className={cn(\n \"font-semibold leading-none tracking-tight text-zinc-900 tabular-nums dark:text-zinc-100\",\n valueClasses[size],\n )}\n >\n {value}\n </div>\n {label != null && (\n <div\n data-react-fancy-stat-label=\"\"\n className=\"mt-1.5 font-mono text-xs uppercase tracking-wide text-zinc-500 dark:text-zinc-400\"\n >\n {label}\n </div>\n )}\n </>\n )}\n </div>\n );\n },\n);\n\nStatRoot.displayName = \"Stat\";\n\nexport const Stat = Object.assign(StatRoot, { Band: StatBand });\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkOUOEQZHY_cjs = require('./chunk-OUOEQZHY.cjs');
4
- var chunk3Z6ALUWP_cjs = require('./chunk-3Z6ALUWP.cjs');
4
+ var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -39,7 +39,7 @@ var Composer = react.forwardRef(
39
39
  {
40
40
  "data-react-fancy-composer": "",
41
41
  ref,
42
- className: chunk3Z6ALUWP_cjs.cn(
42
+ className: chunkZU5Q77OT_cjs.cn(
43
43
  "rounded-xl border border-zinc-200 bg-white dark:border-zinc-700 dark:bg-zinc-900",
44
44
  disabled && "opacity-50",
45
45
  className
@@ -79,5 +79,5 @@ var Composer = react.forwardRef(
79
79
  Composer.displayName = "Composer";
80
80
 
81
81
  exports.Composer = Composer;
82
- //# sourceMappingURL=chunk-SCPHSBBU.cjs.map
83
- //# sourceMappingURL=chunk-SCPHSBBU.cjs.map
82
+ //# sourceMappingURL=chunk-OGEE23SP.cjs.map
83
+ //# sourceMappingURL=chunk-OGEE23SP.cjs.map