@particle-academy/react-fancy 5.21.0 → 5.23.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 (597) hide show
  1. package/dist/{FieldMode.context-C28RH8GR.d.cts → FieldMode.context-BOShROIw.d.cts} +1 -1
  2. package/dist/{FieldMode.context-Bv_wuS8V.d.ts → FieldMode.context-DNyItEKV.d.ts} +1 -1
  3. package/dist/accordion-panel.cjs +8 -8
  4. package/dist/accordion-panel.js +2 -2
  5. package/dist/accordion.cjs +4 -4
  6. package/dist/accordion.js +2 -2
  7. package/dist/audio-viewer.cjs +3 -3
  8. package/dist/audio-viewer.js +2 -2
  9. package/dist/autocomplete.cjs +3 -3
  10. package/dist/autocomplete.d.cts +1 -1
  11. package/dist/autocomplete.d.ts +1 -1
  12. package/dist/autocomplete.js +2 -2
  13. package/dist/avatar.cjs +3 -3
  14. package/dist/avatar.js +2 -2
  15. package/dist/badge.cjs +3 -3
  16. package/dist/badge.js +2 -2
  17. package/dist/brand.cjs +4 -4
  18. package/dist/brand.js +2 -2
  19. package/dist/breadcrumbs.cjs +3 -3
  20. package/dist/breadcrumbs.js +2 -2
  21. package/dist/button.cjs +5 -5
  22. package/dist/button.js +3 -3
  23. package/dist/calendar.cjs +3 -3
  24. package/dist/calendar.js +2 -2
  25. package/dist/callout.cjs +3 -3
  26. package/dist/callout.js +2 -2
  27. package/dist/card.cjs +7 -7
  28. package/dist/card.js +2 -2
  29. package/dist/carousel.cjs +8 -8
  30. package/dist/carousel.js +2 -2
  31. package/dist/chart.cjs +3 -3
  32. package/dist/chart.js +2 -2
  33. package/dist/chat-drawer.cjs +4 -4
  34. package/dist/chat-drawer.js +3 -3
  35. package/dist/checkbox-group.cjs +5 -5
  36. package/dist/checkbox-group.d.cts +2 -2
  37. package/dist/checkbox-group.d.ts +2 -2
  38. package/dist/checkbox-group.js +4 -4
  39. package/dist/checkbox.cjs +3 -3
  40. package/dist/checkbox.d.cts +1 -1
  41. package/dist/checkbox.d.ts +1 -1
  42. package/dist/checkbox.js +2 -2
  43. package/dist/{chunk-ZLCVKYHY.js → chunk-25ZOOUFG.js} +3 -3
  44. package/dist/{chunk-ZLCVKYHY.js.map → chunk-25ZOOUFG.js.map} +1 -1
  45. package/dist/{chunk-UCYAHLGM.js → chunk-2LBRS6Z4.js} +3 -3
  46. package/dist/{chunk-UCYAHLGM.js.map → chunk-2LBRS6Z4.js.map} +1 -1
  47. package/dist/{chunk-E4LFD44D.js → chunk-35EN5AYE.js} +3 -3
  48. package/dist/{chunk-E4LFD44D.js.map → chunk-35EN5AYE.js.map} +1 -1
  49. package/dist/{chunk-AOOBRPTE.cjs → chunk-3EIB7RPD.cjs} +8 -8
  50. package/dist/{chunk-AOOBRPTE.cjs.map → chunk-3EIB7RPD.cjs.map} +1 -1
  51. package/dist/{chunk-GKGL7F36.js → chunk-3FG5K7A7.js} +3 -3
  52. package/dist/{chunk-GKGL7F36.js.map → chunk-3FG5K7A7.js.map} +1 -1
  53. package/dist/{chunk-WNIP443K.js → chunk-3LM47BME.js} +4 -4
  54. package/dist/{chunk-WNIP443K.js.map → chunk-3LM47BME.js.map} +1 -1
  55. package/dist/{chunk-NH7NRRII.js → chunk-4K4ECIKK.js} +3 -3
  56. package/dist/{chunk-NH7NRRII.js.map → chunk-4K4ECIKK.js.map} +1 -1
  57. package/dist/chunk-4VVC46ZZ.js +37 -0
  58. package/dist/chunk-4VVC46ZZ.js.map +1 -0
  59. package/dist/{chunk-KC6QBKKB.cjs → chunk-524TOKU3.cjs} +8 -8
  60. package/dist/{chunk-KC6QBKKB.cjs.map → chunk-524TOKU3.cjs.map} +1 -1
  61. package/dist/{chunk-6OSHAP6L.cjs → chunk-5CXJ5Z4C.cjs} +6 -6
  62. package/dist/{chunk-6OSHAP6L.cjs.map → chunk-5CXJ5Z4C.cjs.map} +1 -1
  63. package/dist/{chunk-3DJGPNUI.js → chunk-5MU6X3KO.js} +9 -4
  64. package/dist/chunk-5MU6X3KO.js.map +1 -0
  65. package/dist/{chunk-VQ4M25U3.cjs → chunk-5P3PISAX.cjs} +4 -4
  66. package/dist/{chunk-VQ4M25U3.cjs.map → chunk-5P3PISAX.cjs.map} +1 -1
  67. package/dist/{chunk-P7AJAN62.js → chunk-5RLP77KK.js} +3 -3
  68. package/dist/{chunk-P7AJAN62.js.map → chunk-5RLP77KK.js.map} +1 -1
  69. package/dist/{chunk-AR2IBCX7.cjs → chunk-5XTNJBC5.cjs} +53 -53
  70. package/dist/{chunk-AR2IBCX7.cjs.map → chunk-5XTNJBC5.cjs.map} +1 -1
  71. package/dist/{chunk-FCAV5IFW.js → chunk-6GWOB2Z4.js} +3 -3
  72. package/dist/{chunk-FCAV5IFW.js.map → chunk-6GWOB2Z4.js.map} +1 -1
  73. package/dist/{chunk-JCOBDDHF.js → chunk-6KXAFP2T.js} +3 -3
  74. package/dist/{chunk-JCOBDDHF.js.map → chunk-6KXAFP2T.js.map} +1 -1
  75. package/dist/{chunk-E7PHL3TD.cjs → chunk-6LOV75CN.cjs} +5 -5
  76. package/dist/{chunk-E7PHL3TD.cjs.map → chunk-6LOV75CN.cjs.map} +1 -1
  77. package/dist/{chunk-CEEEENPW.js → chunk-6PF5ENWM.js} +3 -3
  78. package/dist/{chunk-CEEEENPW.js.map → chunk-6PF5ENWM.js.map} +1 -1
  79. package/dist/{chunk-2PELJ4VA.cjs → chunk-6SO2ZX3J.cjs} +15 -15
  80. package/dist/{chunk-2PELJ4VA.cjs.map → chunk-6SO2ZX3J.cjs.map} +1 -1
  81. package/dist/{chunk-AVR5P4GA.cjs → chunk-7B3HK6TY.cjs} +11 -11
  82. package/dist/{chunk-AVR5P4GA.cjs.map → chunk-7B3HK6TY.cjs.map} +1 -1
  83. package/dist/{chunk-YHXE274U.js → chunk-7CN7IHES.js} +3 -3
  84. package/dist/{chunk-YHXE274U.js.map → chunk-7CN7IHES.js.map} +1 -1
  85. package/dist/{chunk-7NLKXBZ2.cjs → chunk-7EZBMGEE.cjs} +8 -8
  86. package/dist/{chunk-7NLKXBZ2.cjs.map → chunk-7EZBMGEE.cjs.map} +1 -1
  87. package/dist/{chunk-ZFVSEO5Z.cjs → chunk-7HMEDY24.cjs} +6 -6
  88. package/dist/{chunk-ZFVSEO5Z.cjs.map → chunk-7HMEDY24.cjs.map} +1 -1
  89. package/dist/chunk-7TGJFNZM.cjs +39 -0
  90. package/dist/chunk-7TGJFNZM.cjs.map +1 -0
  91. package/dist/{chunk-YXC7QHNT.cjs → chunk-7VLRHXLQ.cjs} +6 -6
  92. package/dist/{chunk-YXC7QHNT.cjs.map → chunk-7VLRHXLQ.cjs.map} +1 -1
  93. package/dist/{chunk-GIDW3SUE.cjs → chunk-7Y2AENZD.cjs} +6 -6
  94. package/dist/{chunk-GIDW3SUE.cjs.map → chunk-7Y2AENZD.cjs.map} +1 -1
  95. package/dist/{chunk-ANEX75DF.cjs → chunk-AASQ6L6X.cjs} +4 -4
  96. package/dist/{chunk-ANEX75DF.cjs.map → chunk-AASQ6L6X.cjs.map} +1 -1
  97. package/dist/{chunk-ZWOEKDNI.js → chunk-AT5OG5N4.js} +3 -3
  98. package/dist/{chunk-ZWOEKDNI.js.map → chunk-AT5OG5N4.js.map} +1 -1
  99. package/dist/{chunk-TVRCOKJQ.cjs → chunk-ATJSHM6J.cjs} +4 -4
  100. package/dist/{chunk-TVRCOKJQ.cjs.map → chunk-ATJSHM6J.cjs.map} +1 -1
  101. package/dist/{chunk-MDUSUJWY.cjs → chunk-AVU4JOYM.cjs} +4 -4
  102. package/dist/{chunk-MDUSUJWY.cjs.map → chunk-AVU4JOYM.cjs.map} +1 -1
  103. package/dist/{chunk-PPLR2DNC.cjs → chunk-BBOIFV27.cjs} +11 -6
  104. package/dist/chunk-BBOIFV27.cjs.map +1 -0
  105. package/dist/{chunk-IGU5YXRV.cjs → chunk-BJYTI2ID.cjs} +26 -9
  106. package/dist/chunk-BJYTI2ID.cjs.map +1 -0
  107. package/dist/{chunk-HAOYXGGJ.js → chunk-CCG2L5EH.js} +3 -3
  108. package/dist/{chunk-HAOYXGGJ.js.map → chunk-CCG2L5EH.js.map} +1 -1
  109. package/dist/{chunk-Y5V5GBN4.cjs → chunk-CJVNO5YM.cjs} +6 -6
  110. package/dist/{chunk-Y5V5GBN4.cjs.map → chunk-CJVNO5YM.cjs.map} +1 -1
  111. package/dist/{chunk-PVWPZYTR.js → chunk-CK6LRROH.js} +3 -3
  112. package/dist/{chunk-PVWPZYTR.js.map → chunk-CK6LRROH.js.map} +1 -1
  113. package/dist/{chunk-LNWO23PU.cjs → chunk-COH45MGW.cjs} +7 -7
  114. package/dist/{chunk-LNWO23PU.cjs.map → chunk-COH45MGW.cjs.map} +1 -1
  115. package/dist/{chunk-EVXDG2XN.js → chunk-CRR3AMJ4.js} +3 -3
  116. package/dist/{chunk-EVXDG2XN.js.map → chunk-CRR3AMJ4.js.map} +1 -1
  117. package/dist/{chunk-4UA45GB4.js → chunk-DEFGT75G.js} +8 -6
  118. package/dist/chunk-DEFGT75G.js.map +1 -0
  119. package/dist/{chunk-Y6DK4CGY.js → chunk-E2I4C5EA.js} +14 -14
  120. package/dist/{chunk-Y6DK4CGY.js.map → chunk-E2I4C5EA.js.map} +1 -1
  121. package/dist/{chunk-PITWDKKY.js → chunk-EWRP6KCY.js} +3 -3
  122. package/dist/{chunk-PITWDKKY.js.map → chunk-EWRP6KCY.js.map} +1 -1
  123. package/dist/{chunk-HTKDPFLJ.cjs → chunk-F2VJEXN2.cjs} +16 -16
  124. package/dist/{chunk-HTKDPFLJ.cjs.map → chunk-F2VJEXN2.cjs.map} +1 -1
  125. package/dist/{chunk-DV4IMAQW.js → chunk-FA4IG5RB.js} +3 -3
  126. package/dist/{chunk-DV4IMAQW.js.map → chunk-FA4IG5RB.js.map} +1 -1
  127. package/dist/{chunk-FVV76TRF.js → chunk-FBWUXSKH.js} +3 -3
  128. package/dist/{chunk-FVV76TRF.js.map → chunk-FBWUXSKH.js.map} +1 -1
  129. package/dist/{chunk-XMBOZ73D.js → chunk-FCSR2WVS.js} +3 -3
  130. package/dist/{chunk-XMBOZ73D.js.map → chunk-FCSR2WVS.js.map} +1 -1
  131. package/dist/{chunk-M24NCWBU.js → chunk-FFWAY7F5.js} +3 -3
  132. package/dist/{chunk-M24NCWBU.js.map → chunk-FFWAY7F5.js.map} +1 -1
  133. package/dist/{chunk-SYXLPCQP.cjs → chunk-FQSSVOVQ.cjs} +4 -4
  134. package/dist/{chunk-SYXLPCQP.cjs.map → chunk-FQSSVOVQ.cjs.map} +1 -1
  135. package/dist/{chunk-X36ZGYTF.js → chunk-FUG3OCGP.js} +10 -7
  136. package/dist/chunk-FUG3OCGP.js.map +1 -0
  137. package/dist/{chunk-JU5W65N3.cjs → chunk-FXP4JLGU.cjs} +24 -18
  138. package/dist/chunk-FXP4JLGU.cjs.map +1 -0
  139. package/dist/{chunk-RNHIDZLE.cjs → chunk-G7227RTY.cjs} +7 -7
  140. package/dist/{chunk-RNHIDZLE.cjs.map → chunk-G7227RTY.cjs.map} +1 -1
  141. package/dist/{chunk-KUKYJZIU.cjs → chunk-GBGJWAXZ.cjs} +8 -8
  142. package/dist/{chunk-KUKYJZIU.cjs.map → chunk-GBGJWAXZ.cjs.map} +1 -1
  143. package/dist/{chunk-RMFLRBUC.cjs → chunk-GHAZOIEG.cjs} +8 -8
  144. package/dist/{chunk-RMFLRBUC.cjs.map → chunk-GHAZOIEG.cjs.map} +1 -1
  145. package/dist/{chunk-SKI33QNW.js → chunk-GKEWT3DW.js} +3 -3
  146. package/dist/{chunk-SKI33QNW.js.map → chunk-GKEWT3DW.js.map} +1 -1
  147. package/dist/{chunk-X5VZRFQD.cjs → chunk-H5OPZEVQ.cjs} +5 -5
  148. package/dist/{chunk-X5VZRFQD.cjs.map → chunk-H5OPZEVQ.cjs.map} +1 -1
  149. package/dist/{chunk-CS4GQXYY.js → chunk-H6F6ZWAG.js} +3 -3
  150. package/dist/{chunk-CS4GQXYY.js.map → chunk-H6F6ZWAG.js.map} +1 -1
  151. package/dist/{chunk-6FYMMQ3G.cjs → chunk-HBCKKE24.cjs} +12 -10
  152. package/dist/chunk-HBCKKE24.cjs.map +1 -0
  153. package/dist/{chunk-T6IXZZBQ.cjs → chunk-HE3JJXIL.cjs} +4 -4
  154. package/dist/{chunk-T6IXZZBQ.cjs.map → chunk-HE3JJXIL.cjs.map} +1 -1
  155. package/dist/{chunk-ARSQY4P7.cjs → chunk-HIN6PHSE.cjs} +7 -7
  156. package/dist/{chunk-ARSQY4P7.cjs.map → chunk-HIN6PHSE.cjs.map} +1 -1
  157. package/dist/{chunk-WT72KW5M.cjs → chunk-HIOMHITU.cjs} +19 -19
  158. package/dist/{chunk-WT72KW5M.cjs.map → chunk-HIOMHITU.cjs.map} +1 -1
  159. package/dist/{chunk-B4JLRS5E.js → chunk-HOP3XXPV.js} +3 -3
  160. package/dist/{chunk-B4JLRS5E.js.map → chunk-HOP3XXPV.js.map} +1 -1
  161. package/dist/{chunk-IF5LOWUL.js → chunk-I3RPL3GE.js} +3 -3
  162. package/dist/{chunk-IF5LOWUL.js.map → chunk-I3RPL3GE.js.map} +1 -1
  163. package/dist/{chunk-6Y2QO7YV.cjs → chunk-ICT477LK.cjs} +8 -8
  164. package/dist/{chunk-6Y2QO7YV.cjs.map → chunk-ICT477LK.cjs.map} +1 -1
  165. package/dist/{chunk-A22T6DKO.cjs → chunk-IRD6UXDK.cjs} +16 -13
  166. package/dist/chunk-IRD6UXDK.cjs.map +1 -0
  167. package/dist/{chunk-VBZZ4CMM.cjs → chunk-ISPCXIJZ.cjs} +5 -5
  168. package/dist/{chunk-VBZZ4CMM.cjs.map → chunk-ISPCXIJZ.cjs.map} +1 -1
  169. package/dist/{chunk-ZT36VWIA.js → chunk-IUT3Q2EC.js} +24 -7
  170. package/dist/chunk-IUT3Q2EC.js.map +1 -0
  171. package/dist/{chunk-M7EEQPE7.js → chunk-IVRYSSM7.js} +3 -3
  172. package/dist/{chunk-M7EEQPE7.js.map → chunk-IVRYSSM7.js.map} +1 -1
  173. package/dist/{chunk-D4WM23Y4.js → chunk-IWXP2YUP.js} +3 -3
  174. package/dist/{chunk-D4WM23Y4.js.map → chunk-IWXP2YUP.js.map} +1 -1
  175. package/dist/{chunk-PJ4TQ6YO.js → chunk-IYTTEPCV.js} +5 -5
  176. package/dist/{chunk-PJ4TQ6YO.js.map → chunk-IYTTEPCV.js.map} +1 -1
  177. package/dist/{chunk-DDRHCFUE.js → chunk-JAAJJJKI.js} +8 -6
  178. package/dist/chunk-JAAJJJKI.js.map +1 -0
  179. package/dist/{chunk-3SQ34IQC.cjs → chunk-JDRKYYXP.cjs} +12 -10
  180. package/dist/chunk-JDRKYYXP.cjs.map +1 -0
  181. package/dist/{chunk-6GC5DMOK.cjs → chunk-JFOORUUD.cjs} +8 -8
  182. package/dist/{chunk-6GC5DMOK.cjs.map → chunk-JFOORUUD.cjs.map} +1 -1
  183. package/dist/{chunk-MZIU27UY.js → chunk-JICO4LTT.js} +3 -3
  184. package/dist/{chunk-MZIU27UY.js.map → chunk-JICO4LTT.js.map} +1 -1
  185. package/dist/{chunk-ZNTEM7F2.js → chunk-JJBOKZWV.js} +3 -3
  186. package/dist/{chunk-ZNTEM7F2.js.map → chunk-JJBOKZWV.js.map} +1 -1
  187. package/dist/{chunk-FO4GCX67.cjs → chunk-JM2H642B.cjs} +9 -9
  188. package/dist/{chunk-FO4GCX67.cjs.map → chunk-JM2H642B.cjs.map} +1 -1
  189. package/dist/{chunk-IE4CM2SN.js → chunk-JP4C3ROX.js} +7 -5
  190. package/dist/chunk-JP4C3ROX.js.map +1 -0
  191. package/dist/{chunk-7ZDIQOFH.cjs → chunk-JV6RDIA6.cjs} +13 -13
  192. package/dist/{chunk-7ZDIQOFH.cjs.map → chunk-JV6RDIA6.cjs.map} +1 -1
  193. package/dist/{chunk-K7JGOQJG.js → chunk-KKWNKBKR.js} +3 -3
  194. package/dist/{chunk-K7JGOQJG.js.map → chunk-KKWNKBKR.js.map} +1 -1
  195. package/dist/{chunk-QWSTG5MF.js → chunk-KO2HLNBB.js} +7 -7
  196. package/dist/{chunk-QWSTG5MF.js.map → chunk-KO2HLNBB.js.map} +1 -1
  197. package/dist/{chunk-5QL7XT3N.js → chunk-KQQA7JBC.js} +4 -4
  198. package/dist/{chunk-5QL7XT3N.js.map → chunk-KQQA7JBC.js.map} +1 -1
  199. package/dist/{chunk-CQWPMRYS.js → chunk-L2FPIFMN.js} +10 -5
  200. package/dist/chunk-L2FPIFMN.js.map +1 -0
  201. package/dist/{chunk-DWRMC2FN.cjs → chunk-LMPPAQKP.cjs} +7 -7
  202. package/dist/{chunk-DWRMC2FN.cjs.map → chunk-LMPPAQKP.cjs.map} +1 -1
  203. package/dist/{chunk-M2S5GCXY.cjs → chunk-LY7PZEF4.cjs} +11 -11
  204. package/dist/{chunk-M2S5GCXY.cjs.map → chunk-LY7PZEF4.cjs.map} +1 -1
  205. package/dist/{chunk-AKIUDPJU.js → chunk-LYHQ4VBR.js} +3 -3
  206. package/dist/{chunk-AKIUDPJU.js.map → chunk-LYHQ4VBR.js.map} +1 -1
  207. package/dist/{chunk-RM4QWJS3.js → chunk-MIUSTEIV.js} +3 -3
  208. package/dist/{chunk-RM4QWJS3.js.map → chunk-MIUSTEIV.js.map} +1 -1
  209. package/dist/chunk-MMW2JGKZ.js +29 -0
  210. package/dist/chunk-MMW2JGKZ.js.map +1 -0
  211. package/dist/{chunk-RID7CYGD.js → chunk-MRRKDRZU.js} +5 -5
  212. package/dist/{chunk-RID7CYGD.js.map → chunk-MRRKDRZU.js.map} +1 -1
  213. package/dist/{chunk-A3CNYKT3.js → chunk-MUCXXYDN.js} +3 -3
  214. package/dist/{chunk-A3CNYKT3.js.map → chunk-MUCXXYDN.js.map} +1 -1
  215. package/dist/{chunk-CZZH45GQ.cjs → chunk-N4VHOTMK.cjs} +9 -9
  216. package/dist/{chunk-CZZH45GQ.cjs.map → chunk-N4VHOTMK.cjs.map} +1 -1
  217. package/dist/{chunk-6FBFE66M.cjs → chunk-N6K2CTSU.cjs} +5 -5
  218. package/dist/{chunk-6FBFE66M.cjs.map → chunk-N6K2CTSU.cjs.map} +1 -1
  219. package/dist/{chunk-DJ3YM72H.cjs → chunk-ND5D7GJB.cjs} +4 -4
  220. package/dist/{chunk-DJ3YM72H.cjs.map → chunk-ND5D7GJB.cjs.map} +1 -1
  221. package/dist/{chunk-YCZN4FWI.js → chunk-NDUEPDNS.js} +3 -3
  222. package/dist/{chunk-YCZN4FWI.js.map → chunk-NDUEPDNS.js.map} +1 -1
  223. package/dist/{chunk-POZZY3D5.cjs → chunk-NR346SKH.cjs} +5 -5
  224. package/dist/{chunk-POZZY3D5.cjs.map → chunk-NR346SKH.cjs.map} +1 -1
  225. package/dist/{chunk-TECFGOV2.js → chunk-NTMHP7FS.js} +3 -3
  226. package/dist/{chunk-TECFGOV2.js.map → chunk-NTMHP7FS.js.map} +1 -1
  227. package/dist/{chunk-7XDKIZQE.js → chunk-NUPQJ5SJ.js} +3 -3
  228. package/dist/{chunk-7XDKIZQE.js.map → chunk-NUPQJ5SJ.js.map} +1 -1
  229. package/dist/{chunk-M645OITZ.js → chunk-NYDR2VSA.js} +3 -3
  230. package/dist/{chunk-M645OITZ.js.map → chunk-NYDR2VSA.js.map} +1 -1
  231. package/dist/{chunk-YT42J4VQ.js → chunk-O6E2WC3J.js} +3 -3
  232. package/dist/{chunk-YT42J4VQ.js.map → chunk-O6E2WC3J.js.map} +1 -1
  233. package/dist/{chunk-5LHG7HEY.cjs → chunk-O6GTY53I.cjs} +4 -4
  234. package/dist/{chunk-5LHG7HEY.cjs.map → chunk-O6GTY53I.cjs.map} +1 -1
  235. package/dist/{chunk-ESKVRRVA.js → chunk-OFHO5SXA.js} +3 -3
  236. package/dist/{chunk-ESKVRRVA.js.map → chunk-OFHO5SXA.js.map} +1 -1
  237. package/dist/{chunk-SCPHSBBU.cjs → chunk-OGEE23SP.cjs} +4 -4
  238. package/dist/{chunk-SCPHSBBU.cjs.map → chunk-OGEE23SP.cjs.map} +1 -1
  239. package/dist/{chunk-RR7BWUVP.cjs → chunk-OS2QC3NE.cjs} +6 -6
  240. package/dist/{chunk-RR7BWUVP.cjs.map → chunk-OS2QC3NE.cjs.map} +1 -1
  241. package/dist/{chunk-F6SCZCJE.js → chunk-P7F32HIH.js} +3 -3
  242. package/dist/{chunk-F6SCZCJE.js.map → chunk-P7F32HIH.js.map} +1 -1
  243. package/dist/{chunk-PH3WGR5P.cjs → chunk-PFEFKLUV.cjs} +8 -8
  244. package/dist/{chunk-PH3WGR5P.cjs.map → chunk-PFEFKLUV.cjs.map} +1 -1
  245. package/dist/{chunk-JYKZKSZJ.js → chunk-PIFJECFU.js} +10 -5
  246. package/dist/chunk-PIFJECFU.js.map +1 -0
  247. package/dist/{chunk-5HOQ2PHR.cjs → chunk-PV5WDIGM.cjs} +9 -9
  248. package/dist/{chunk-5HOQ2PHR.cjs.map → chunk-PV5WDIGM.cjs.map} +1 -1
  249. package/dist/{chunk-D7NAXQ2N.js → chunk-PWEZCMIY.js} +3 -3
  250. package/dist/{chunk-D7NAXQ2N.js.map → chunk-PWEZCMIY.js.map} +1 -1
  251. package/dist/{chunk-LYFUPTLG.cjs → chunk-PWLBHNOA.cjs} +14 -14
  252. package/dist/{chunk-LYFUPTLG.cjs.map → chunk-PWLBHNOA.cjs.map} +1 -1
  253. package/dist/{chunk-BPBI3WWQ.cjs → chunk-QAFAPHAF.cjs} +8 -8
  254. package/dist/{chunk-BPBI3WWQ.cjs.map → chunk-QAFAPHAF.cjs.map} +1 -1
  255. package/dist/{chunk-AC7M7JDO.cjs → chunk-QDVDBUJM.cjs} +6 -6
  256. package/dist/{chunk-AC7M7JDO.cjs.map → chunk-QDVDBUJM.cjs.map} +1 -1
  257. package/dist/{chunk-2ICXWLKS.js → chunk-QJKWBU3I.js} +3 -3
  258. package/dist/{chunk-2ICXWLKS.js.map → chunk-QJKWBU3I.js.map} +1 -1
  259. package/dist/{chunk-JXIBUIEY.cjs → chunk-QKFOJKVE.cjs} +4 -4
  260. package/dist/{chunk-JXIBUIEY.cjs.map → chunk-QKFOJKVE.cjs.map} +1 -1
  261. package/dist/{chunk-NNSNANNY.cjs → chunk-QOGKO6JH.cjs} +5 -5
  262. package/dist/{chunk-NNSNANNY.cjs.map → chunk-QOGKO6JH.cjs.map} +1 -1
  263. package/dist/{chunk-B3HVWXIQ.cjs → chunk-QSFTWIUH.cjs} +8 -8
  264. package/dist/{chunk-B3HVWXIQ.cjs.map → chunk-QSFTWIUH.cjs.map} +1 -1
  265. package/dist/{chunk-3MHVFEIP.cjs → chunk-QW66UHWO.cjs} +4 -4
  266. package/dist/{chunk-3MHVFEIP.cjs.map → chunk-QW66UHWO.cjs.map} +1 -1
  267. package/dist/{chunk-IGYIMS6J.js → chunk-RA2VOQ46.js} +3 -3
  268. package/dist/{chunk-IGYIMS6J.js.map → chunk-RA2VOQ46.js.map} +1 -1
  269. package/dist/{chunk-HG6XUJOT.js → chunk-RFLPFQFF.js} +3 -3
  270. package/dist/{chunk-HG6XUJOT.js.map → chunk-RFLPFQFF.js.map} +1 -1
  271. package/dist/{chunk-KICZTIZL.cjs → chunk-RKG2Q2HT.cjs} +7 -7
  272. package/dist/{chunk-KICZTIZL.cjs.map → chunk-RKG2Q2HT.cjs.map} +1 -1
  273. package/dist/{chunk-PRJSEZ5F.cjs → chunk-RN2EW7CK.cjs} +12 -12
  274. package/dist/{chunk-PRJSEZ5F.cjs.map → chunk-RN2EW7CK.cjs.map} +1 -1
  275. package/dist/{chunk-EERAEPQO.cjs → chunk-RPVCMW64.cjs} +12 -12
  276. package/dist/{chunk-EERAEPQO.cjs.map → chunk-RPVCMW64.cjs.map} +1 -1
  277. package/dist/{chunk-ATFXU6R6.js → chunk-RSLZL6VP.js} +3 -3
  278. package/dist/{chunk-ATFXU6R6.js.map → chunk-RSLZL6VP.js.map} +1 -1
  279. package/dist/{chunk-HNITJ2UR.js → chunk-SAF5642F.js} +4 -4
  280. package/dist/{chunk-HNITJ2UR.js.map → chunk-SAF5642F.js.map} +1 -1
  281. package/dist/{chunk-PG3ILQIW.js → chunk-SLJD25VV.js} +3 -3
  282. package/dist/{chunk-PG3ILQIW.js.map → chunk-SLJD25VV.js.map} +1 -1
  283. package/dist/{chunk-EQGY3QDJ.cjs → chunk-SO4NNG26.cjs} +7 -7
  284. package/dist/{chunk-EQGY3QDJ.cjs.map → chunk-SO4NNG26.cjs.map} +1 -1
  285. package/dist/{chunk-DZD2RJVD.js → chunk-SOYORSLZ.js} +3 -3
  286. package/dist/{chunk-DZD2RJVD.js.map → chunk-SOYORSLZ.js.map} +1 -1
  287. package/dist/{chunk-MGZE2QEM.cjs → chunk-SUCBR6L5.cjs} +6 -6
  288. package/dist/{chunk-MGZE2QEM.cjs.map → chunk-SUCBR6L5.cjs.map} +1 -1
  289. package/dist/{chunk-NLJGNPNN.js → chunk-SWBF2BXA.js} +3 -3
  290. package/dist/{chunk-NLJGNPNN.js.map → chunk-SWBF2BXA.js.map} +1 -1
  291. package/dist/{chunk-6H6OYLMJ.js → chunk-SX4CSO6C.js} +3 -3
  292. package/dist/{chunk-6H6OYLMJ.js.map → chunk-SX4CSO6C.js.map} +1 -1
  293. package/dist/{chunk-ORFHF6PT.cjs → chunk-T5OCRKPD.cjs} +6 -6
  294. package/dist/{chunk-ORFHF6PT.cjs.map → chunk-T5OCRKPD.cjs.map} +1 -1
  295. package/dist/{chunk-AGDW5ENV.js → chunk-TB35HNBE.js} +3 -3
  296. package/dist/{chunk-AGDW5ENV.js.map → chunk-TB35HNBE.js.map} +1 -1
  297. package/dist/{chunk-RES2GOQQ.js → chunk-TDDWWAM5.js} +3 -3
  298. package/dist/{chunk-RES2GOQQ.js.map → chunk-TDDWWAM5.js.map} +1 -1
  299. package/dist/{chunk-6L6LI2RL.cjs → chunk-TGNQ5Y6F.cjs} +4 -4
  300. package/dist/{chunk-6L6LI2RL.cjs.map → chunk-TGNQ5Y6F.cjs.map} +1 -1
  301. package/dist/{chunk-I462NM2A.cjs → chunk-TH7VP4CL.cjs} +5 -5
  302. package/dist/{chunk-I462NM2A.cjs.map → chunk-TH7VP4CL.cjs.map} +1 -1
  303. package/dist/{chunk-PYRMH34E.js → chunk-TJJ63UJV.js} +3 -3
  304. package/dist/{chunk-PYRMH34E.js.map → chunk-TJJ63UJV.js.map} +1 -1
  305. package/dist/{chunk-I25RP6AM.js → chunk-TQFQUNV3.js} +3 -3
  306. package/dist/{chunk-I25RP6AM.js.map → chunk-TQFQUNV3.js.map} +1 -1
  307. package/dist/{chunk-UPVWN72I.cjs → chunk-TXCAIL5X.cjs} +7 -7
  308. package/dist/{chunk-UPVWN72I.cjs.map → chunk-TXCAIL5X.cjs.map} +1 -1
  309. package/dist/{chunk-LZL2KD4P.cjs → chunk-TZHK3LEW.cjs} +9 -9
  310. package/dist/{chunk-LZL2KD4P.cjs.map → chunk-TZHK3LEW.cjs.map} +1 -1
  311. package/dist/{chunk-WXADO5TS.cjs → chunk-UA2C2U3M.cjs} +15 -10
  312. package/dist/chunk-UA2C2U3M.cjs.map +1 -0
  313. package/dist/{chunk-74ZN5CNE.js → chunk-UIJR26YW.js} +3 -3
  314. package/dist/{chunk-74ZN5CNE.js.map → chunk-UIJR26YW.js.map} +1 -1
  315. package/dist/{chunk-CFBK5RIZ.js → chunk-UKUNWGL5.js} +3 -3
  316. package/dist/{chunk-CFBK5RIZ.js.map → chunk-UKUNWGL5.js.map} +1 -1
  317. package/dist/{chunk-JHEM6IGT.cjs → chunk-V35A6B7A.cjs} +4 -4
  318. package/dist/{chunk-JHEM6IGT.cjs.map → chunk-V35A6B7A.cjs.map} +1 -1
  319. package/dist/{chunk-5I4PR2KV.cjs → chunk-V6VFSX6V.cjs} +12 -10
  320. package/dist/chunk-V6VFSX6V.cjs.map +1 -0
  321. package/dist/{chunk-PRDWJ4AR.js → chunk-VFIVF5YO.js} +3 -3
  322. package/dist/{chunk-PRDWJ4AR.js.map → chunk-VFIVF5YO.js.map} +1 -1
  323. package/dist/{chunk-IJ4I55QQ.cjs → chunk-VGBZWDMM.cjs} +4 -4
  324. package/dist/{chunk-IJ4I55QQ.cjs.map → chunk-VGBZWDMM.cjs.map} +1 -1
  325. package/dist/{chunk-DBJWHDWP.js → chunk-VKMPVFQK.js} +3 -3
  326. package/dist/{chunk-DBJWHDWP.js.map → chunk-VKMPVFQK.js.map} +1 -1
  327. package/dist/{chunk-5OC6DUYT.js → chunk-VME5743O.js} +3 -3
  328. package/dist/{chunk-5OC6DUYT.js.map → chunk-VME5743O.js.map} +1 -1
  329. package/dist/{chunk-YVDAXYHP.js → chunk-VOGI7GX3.js} +3 -3
  330. package/dist/{chunk-YVDAXYHP.js.map → chunk-VOGI7GX3.js.map} +1 -1
  331. package/dist/{chunk-KKYP5R3G.cjs → chunk-VUKIFFWK.cjs} +17 -12
  332. package/dist/chunk-VUKIFFWK.cjs.map +1 -0
  333. package/dist/{chunk-R55HE5C5.js → chunk-VVL5LMLW.js} +3 -3
  334. package/dist/{chunk-R55HE5C5.js.map → chunk-VVL5LMLW.js.map} +1 -1
  335. package/dist/{chunk-2CYRAKWI.cjs → chunk-VW6WUXFR.cjs} +11 -11
  336. package/dist/{chunk-2CYRAKWI.cjs.map → chunk-VW6WUXFR.cjs.map} +1 -1
  337. package/dist/{chunk-6RYZ2MOE.js → chunk-VYQI4R6S.js} +4 -4
  338. package/dist/{chunk-6RYZ2MOE.js.map → chunk-VYQI4R6S.js.map} +1 -1
  339. package/dist/{chunk-HBFVOHQC.cjs → chunk-WCWZADR2.cjs} +7 -7
  340. package/dist/{chunk-HBFVOHQC.cjs.map → chunk-WCWZADR2.cjs.map} +1 -1
  341. package/dist/{chunk-IXHZVFHX.cjs → chunk-WKAEAGMT.cjs} +4 -4
  342. package/dist/{chunk-IXHZVFHX.cjs.map → chunk-WKAEAGMT.cjs.map} +1 -1
  343. package/dist/{chunk-PBXYU4EV.cjs → chunk-WKNVZUWZ.cjs} +5 -5
  344. package/dist/{chunk-PBXYU4EV.cjs.map → chunk-WKNVZUWZ.cjs.map} +1 -1
  345. package/dist/{chunk-6BW5BQMN.cjs → chunk-XKDW6B7X.cjs} +4 -4
  346. package/dist/{chunk-6BW5BQMN.cjs.map → chunk-XKDW6B7X.cjs.map} +1 -1
  347. package/dist/{chunk-23CLGUMT.cjs → chunk-XLFGWNW4.cjs} +4 -4
  348. package/dist/{chunk-23CLGUMT.cjs.map → chunk-XLFGWNW4.cjs.map} +1 -1
  349. package/dist/{chunk-MPDLL4X3.cjs → chunk-XQNYFXBY.cjs} +8 -8
  350. package/dist/{chunk-MPDLL4X3.cjs.map → chunk-XQNYFXBY.cjs.map} +1 -1
  351. package/dist/{chunk-I2JXK25I.js → chunk-XXBW4EUO.js} +3 -3
  352. package/dist/{chunk-I2JXK25I.js.map → chunk-XXBW4EUO.js.map} +1 -1
  353. package/dist/{chunk-RA3P63XW.cjs → chunk-Y3T7WMT6.cjs} +4 -4
  354. package/dist/{chunk-RA3P63XW.cjs.map → chunk-Y3T7WMT6.cjs.map} +1 -1
  355. package/dist/{chunk-LPQVXTKV.js → chunk-Y4UPKJN5.js} +3 -3
  356. package/dist/{chunk-LPQVXTKV.js.map → chunk-Y4UPKJN5.js.map} +1 -1
  357. package/dist/{chunk-47TFRODY.cjs → chunk-YAJYIRQL.cjs} +4 -4
  358. package/dist/{chunk-47TFRODY.cjs.map → chunk-YAJYIRQL.cjs.map} +1 -1
  359. package/dist/{chunk-DTPGJNOI.js → chunk-YCV43A7D.js} +3 -3
  360. package/dist/{chunk-DTPGJNOI.js.map → chunk-YCV43A7D.js.map} +1 -1
  361. package/dist/{chunk-YT6N44Z3.js → chunk-YF2EHBTV.js} +3 -3
  362. package/dist/{chunk-YT6N44Z3.js.map → chunk-YF2EHBTV.js.map} +1 -1
  363. package/dist/{chunk-4CM2VMLR.js → chunk-YLDYGT5O.js} +3 -3
  364. package/dist/{chunk-4CM2VMLR.js.map → chunk-YLDYGT5O.js.map} +1 -1
  365. package/dist/{chunk-JIYP73OJ.js → chunk-YQJWD53X.js} +3 -3
  366. package/dist/{chunk-JIYP73OJ.js.map → chunk-YQJWD53X.js.map} +1 -1
  367. package/dist/{chunk-O4MKOSU2.js → chunk-YTMQ2K64.js} +3 -3
  368. package/dist/{chunk-O4MKOSU2.js.map → chunk-YTMQ2K64.js.map} +1 -1
  369. package/dist/{chunk-IF25CE6S.cjs → chunk-YTXBU6QC.cjs} +6 -6
  370. package/dist/{chunk-IF25CE6S.cjs.map → chunk-YTXBU6QC.cjs.map} +1 -1
  371. package/dist/{chunk-F6NEPU67.cjs → chunk-Z43BI7CQ.cjs} +10 -10
  372. package/dist/{chunk-F6NEPU67.cjs.map → chunk-Z43BI7CQ.cjs.map} +1 -1
  373. package/dist/{chunk-BWT2L6XP.js → chunk-ZH3SPBVB.js} +12 -6
  374. package/dist/chunk-ZH3SPBVB.js.map +1 -0
  375. package/dist/{chunk-BEGDL2CD.js → chunk-ZI7JP3TN.js} +3 -3
  376. package/dist/{chunk-BEGDL2CD.js.map → chunk-ZI7JP3TN.js.map} +1 -1
  377. package/dist/{chunk-3F66SAE7.js → chunk-ZKFFHIEW.js} +3 -3
  378. package/dist/{chunk-3F66SAE7.js.map → chunk-ZKFFHIEW.js.map} +1 -1
  379. package/dist/{chunk-QFFC2DKK.js → chunk-ZLWCZV7R.js} +3 -3
  380. package/dist/{chunk-QFFC2DKK.js.map → chunk-ZLWCZV7R.js.map} +1 -1
  381. package/dist/{chunk-BWTFK2GV.cjs → chunk-ZMD3PIYF.cjs} +12 -12
  382. package/dist/{chunk-BWTFK2GV.cjs.map → chunk-ZMD3PIYF.cjs.map} +1 -1
  383. package/dist/{chunk-JPTWZ3RF.cjs → chunk-ZTC3EQFZ.cjs} +8 -8
  384. package/dist/{chunk-JPTWZ3RF.cjs.map → chunk-ZTC3EQFZ.cjs.map} +1 -1
  385. package/dist/chunk-ZU5Q77OT.cjs +31 -0
  386. package/dist/chunk-ZU5Q77OT.cjs.map +1 -0
  387. package/dist/{chunk-ORPYY2MO.cjs → chunk-ZVDW2VX5.cjs} +4 -4
  388. package/dist/{chunk-ORPYY2MO.cjs.map → chunk-ZVDW2VX5.cjs.map} +1 -1
  389. package/dist/{chunk-4DQ6HX27.cjs → chunk-ZVRVOKXH.cjs} +7 -7
  390. package/dist/{chunk-4DQ6HX27.cjs.map → chunk-ZVRVOKXH.cjs.map} +1 -1
  391. package/dist/code-view.cjs +3 -3
  392. package/dist/code-view.js +2 -2
  393. package/dist/color-picker.cjs +3 -3
  394. package/dist/color-picker.d.cts +1 -1
  395. package/dist/color-picker.d.ts +1 -1
  396. package/dist/color-picker.js +2 -2
  397. package/dist/command.cjs +4 -4
  398. package/dist/command.js +2 -2
  399. package/dist/composer.cjs +3 -3
  400. package/dist/composer.js +2 -2
  401. package/dist/container.cjs +3 -3
  402. package/dist/container.js +2 -2
  403. package/dist/content-renderer.cjs +5 -5
  404. package/dist/content-renderer.js +2 -2
  405. package/dist/context-menu.cjs +4 -4
  406. package/dist/context-menu.js +2 -2
  407. package/dist/date-picker.cjs +5 -5
  408. package/dist/date-picker.d.cts +1 -1
  409. package/dist/date-picker.d.ts +1 -1
  410. package/dist/date-picker.js +4 -4
  411. package/dist/drawer.cjs +4 -4
  412. package/dist/drawer.js +2 -2
  413. package/dist/dropdown.cjs +4 -4
  414. package/dist/dropdown.js +2 -2
  415. package/dist/editor.cjs +6 -6
  416. package/dist/editor.d.cts +1 -1
  417. package/dist/editor.d.ts +1 -1
  418. package/dist/editor.js +4 -4
  419. package/dist/emoji-select.cjs +3 -3
  420. package/dist/emoji-select.js +2 -2
  421. package/dist/emoji.cjs +3 -3
  422. package/dist/emoji.js +2 -2
  423. package/dist/eyebrow.cjs +3 -3
  424. package/dist/eyebrow.js +2 -2
  425. package/dist/faux-client.cjs +3 -3
  426. package/dist/faux-client.js +2 -2
  427. package/dist/field.cjs +3 -3
  428. package/dist/field.d.cts +12 -1
  429. package/dist/field.d.ts +12 -1
  430. package/dist/field.js +2 -2
  431. package/dist/file-browser.cjs +6 -6
  432. package/dist/file-browser.js +2 -2
  433. package/dist/file-upload.cjs +4 -4
  434. package/dist/file-upload.js +2 -2
  435. package/dist/grid.cjs +3 -3
  436. package/dist/grid.d.cts +22 -1
  437. package/dist/grid.d.ts +22 -1
  438. package/dist/grid.js +2 -2
  439. package/dist/heading.cjs +3 -3
  440. package/dist/heading.js +2 -2
  441. package/dist/icon.cjs +8 -8
  442. package/dist/icon.js +2 -2
  443. package/dist/image-viewer.cjs +3 -3
  444. package/dist/image-viewer.js +2 -2
  445. package/dist/{index-BfFk-CIv.d.ts → index-DWJGBEW9.d.ts} +1 -1
  446. package/dist/{index-BypPN_6l.d.cts → index-YSQnfXN-.d.cts} +1 -1
  447. package/dist/index-list.cjs +3 -3
  448. package/dist/index-list.js +2 -2
  449. package/dist/index.cjs +220 -220
  450. package/dist/index.d.cts +10 -4
  451. package/dist/index.d.ts +10 -4
  452. package/dist/index.js +87 -87
  453. package/dist/input.cjs +6 -6
  454. package/dist/input.d.cts +1 -1
  455. package/dist/input.d.ts +1 -1
  456. package/dist/input.js +5 -5
  457. package/dist/inputs.cjs +26 -26
  458. package/dist/inputs.d.cts +2 -2
  459. package/dist/inputs.d.ts +2 -2
  460. package/dist/inputs.js +14 -14
  461. package/dist/{inputs.types-CkWdvN-t.d.cts → inputs.types-CJbAS14j.d.cts} +9 -0
  462. package/dist/{inputs.types-DERzxpe1.d.ts → inputs.types-vl3PAc4q.d.ts} +9 -0
  463. package/dist/json-editor.cjs +27 -27
  464. package/dist/json-editor.d.cts +2 -2
  465. package/dist/json-editor.d.ts +2 -2
  466. package/dist/json-editor.js +16 -16
  467. package/dist/kanban.cjs +4 -4
  468. package/dist/kanban.js +2 -2
  469. package/dist/kbd.cjs +3 -3
  470. package/dist/kbd.js +2 -2
  471. package/dist/magic-wand.cjs +10 -10
  472. package/dist/magic-wand.js +9 -9
  473. package/dist/marquee.cjs +3 -3
  474. package/dist/marquee.js +2 -2
  475. package/dist/media-viewer.cjs +7 -7
  476. package/dist/media-viewer.js +6 -6
  477. package/dist/menu.cjs +4 -4
  478. package/dist/menu.js +2 -2
  479. package/dist/mobile-menu.cjs +4 -4
  480. package/dist/mobile-menu.js +2 -2
  481. package/dist/modal.cjs +4 -4
  482. package/dist/modal.js +2 -2
  483. package/dist/mode.cjs +3 -3
  484. package/dist/mode.d.cts +2 -2
  485. package/dist/mode.d.ts +2 -2
  486. package/dist/mode.js +2 -2
  487. package/dist/multi-switch.cjs +5 -5
  488. package/dist/multi-switch.d.cts +13 -3
  489. package/dist/multi-switch.d.ts +13 -3
  490. package/dist/multi-switch.js +4 -4
  491. package/dist/navbar.cjs +4 -4
  492. package/dist/navbar.js +2 -2
  493. package/dist/otp-input.cjs +3 -3
  494. package/dist/otp-input.d.cts +1 -1
  495. package/dist/otp-input.d.ts +1 -1
  496. package/dist/otp-input.js +2 -2
  497. package/dist/pagination.cjs +3 -3
  498. package/dist/pagination.js +2 -2
  499. package/dist/pdf-viewer.cjs +3 -3
  500. package/dist/pdf-viewer.js +2 -2
  501. package/dist/pillbox.cjs +3 -3
  502. package/dist/pillbox.js +2 -2
  503. package/dist/popover.cjs +4 -4
  504. package/dist/popover.js +2 -2
  505. package/dist/profile.cjs +4 -4
  506. package/dist/profile.js +3 -3
  507. package/dist/progress.cjs +3 -3
  508. package/dist/progress.js +2 -2
  509. package/dist/prompt-input.cjs +6 -6
  510. package/dist/prompt-input.js +5 -5
  511. package/dist/pull-quote.cjs +3 -3
  512. package/dist/pull-quote.js +2 -2
  513. package/dist/radio-group.cjs +5 -5
  514. package/dist/radio-group.d.cts +2 -2
  515. package/dist/radio-group.d.ts +2 -2
  516. package/dist/radio-group.js +4 -4
  517. package/dist/reason-tag.cjs +6 -6
  518. package/dist/reason-tag.js +5 -5
  519. package/dist/section.cjs +3 -3
  520. package/dist/section.js +2 -2
  521. package/dist/select.cjs +6 -6
  522. package/dist/select.d.cts +1 -1
  523. package/dist/select.d.ts +1 -1
  524. package/dist/select.js +5 -5
  525. package/dist/separator.cjs +3 -3
  526. package/dist/separator.js +2 -2
  527. package/dist/sidebar.cjs +4 -4
  528. package/dist/sidebar.js +2 -2
  529. package/dist/skeleton.cjs +3 -3
  530. package/dist/skeleton.js +2 -2
  531. package/dist/slider.cjs +5 -5
  532. package/dist/slider.d.cts +1 -1
  533. package/dist/slider.d.ts +1 -1
  534. package/dist/slider.js +4 -4
  535. package/dist/stat-list.cjs +3 -3
  536. package/dist/stat-list.js +2 -2
  537. package/dist/stat.cjs +4 -4
  538. package/dist/stat.js +2 -2
  539. package/dist/sticky-note.cjs +3 -3
  540. package/dist/sticky-note.js +2 -2
  541. package/dist/switch.cjs +3 -3
  542. package/dist/switch.d.cts +1 -1
  543. package/dist/switch.d.ts +1 -1
  544. package/dist/switch.js +2 -2
  545. package/dist/table.cjs +12 -12
  546. package/dist/table.js +2 -2
  547. package/dist/tabs.cjs +4 -4
  548. package/dist/tabs.js +2 -2
  549. package/dist/text.cjs +3 -3
  550. package/dist/text.js +2 -2
  551. package/dist/textarea.cjs +6 -6
  552. package/dist/textarea.d.cts +1 -1
  553. package/dist/textarea.d.ts +1 -1
  554. package/dist/textarea.js +5 -5
  555. package/dist/time-grid.cjs +3 -3
  556. package/dist/time-grid.js +2 -2
  557. package/dist/time-picker.cjs +3 -3
  558. package/dist/time-picker.d.cts +1 -1
  559. package/dist/time-picker.d.ts +1 -1
  560. package/dist/time-picker.js +2 -2
  561. package/dist/timeline.cjs +5 -5
  562. package/dist/timeline.js +2 -2
  563. package/dist/toast.cjs +4 -4
  564. package/dist/toast.js +2 -2
  565. package/dist/tooltip.cjs +3 -3
  566. package/dist/tooltip.js +2 -2
  567. package/dist/tree-nav.cjs +4 -4
  568. package/dist/tree-nav.js +2 -2
  569. package/dist/video-viewer.cjs +3 -3
  570. package/dist/video-viewer.js +2 -2
  571. package/package.json +1 -2
  572. package/dist/chunk-3DJGPNUI.js.map +0 -1
  573. package/dist/chunk-3SQ34IQC.cjs.map +0 -1
  574. package/dist/chunk-3Z6ALUWP.cjs +0 -13
  575. package/dist/chunk-3Z6ALUWP.cjs.map +0 -1
  576. package/dist/chunk-4UA45GB4.js.map +0 -1
  577. package/dist/chunk-5I4PR2KV.cjs.map +0 -1
  578. package/dist/chunk-6FYMMQ3G.cjs.map +0 -1
  579. package/dist/chunk-A22T6DKO.cjs.map +0 -1
  580. package/dist/chunk-AY3JABE3.cjs +0 -32
  581. package/dist/chunk-AY3JABE3.cjs.map +0 -1
  582. package/dist/chunk-BWT2L6XP.js.map +0 -1
  583. package/dist/chunk-CQWPMRYS.js.map +0 -1
  584. package/dist/chunk-DDRHCFUE.js.map +0 -1
  585. package/dist/chunk-DSUHZO6T.js +0 -11
  586. package/dist/chunk-DSUHZO6T.js.map +0 -1
  587. package/dist/chunk-IE4CM2SN.js.map +0 -1
  588. package/dist/chunk-IGU5YXRV.cjs.map +0 -1
  589. package/dist/chunk-JU5W65N3.cjs.map +0 -1
  590. package/dist/chunk-JYKZKSZJ.js.map +0 -1
  591. package/dist/chunk-KKYP5R3G.cjs.map +0 -1
  592. package/dist/chunk-MKFWFZVX.js +0 -30
  593. package/dist/chunk-MKFWFZVX.js.map +0 -1
  594. package/dist/chunk-PPLR2DNC.cjs.map +0 -1
  595. package/dist/chunk-WXADO5TS.cjs.map +0 -1
  596. package/dist/chunk-X36ZGYTF.js.map +0 -1
  597. package/dist/chunk-ZT36VWIA.js.map +0 -1
@@ -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":["createContext","useContext","useCallback","jsx","cn","Children","isValidElement","useState","useRef","useEffect","jsxs","useMemo"],"mappings":"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","file":"chunk-BPBI3WWQ.cjs","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":["createContext","useContext","useCallback","jsx","cn","Children","isValidElement","useState","useRef","useEffect","jsxs","useMemo"],"mappings":"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","file":"chunk-QAFAPHAF.cjs","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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkT6YELZPJ_cjs = require('./chunk-T6YELZPJ.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
 
@@ -87,7 +87,7 @@ var ImageViewer = react.forwardRef(
87
87
  {
88
88
  ref,
89
89
  "data-react-fancy-image-viewer": "",
90
- className: chunk3Z6ALUWP_cjs.cn(
90
+ className: chunkZU5Q77OT_cjs.cn(
91
91
  "relative isolate overflow-hidden rounded-md select-none",
92
92
  checkerboard ? "fancy-checkerboard" : "bg-zinc-100 dark:bg-zinc-900",
93
93
  className
@@ -99,7 +99,7 @@ var ImageViewer = react.forwardRef(
99
99
  {
100
100
  ref: containerRef,
101
101
  "data-canvas-bg": "",
102
- className: chunk3Z6ALUWP_cjs.cn(
102
+ className: chunkZU5Q77OT_cjs.cn(
103
103
  "absolute inset-0 flex items-center justify-center",
104
104
  isPanning ? "cursor-grabbing" : pannable && interactive ? "cursor-grab" : ""
105
105
  ),
@@ -125,7 +125,7 @@ var ImageViewer = react.forwardRef(
125
125
  setStatus("error");
126
126
  onError?.();
127
127
  },
128
- className: chunk3Z6ALUWP_cjs.cn(
128
+ className: chunkZU5Q77OT_cjs.cn(
129
129
  "pointer-events-none block",
130
130
  status === "error" && "hidden",
131
131
  fitClasses[fit]
@@ -195,5 +195,5 @@ var ImageViewer = react.forwardRef(
195
195
  ImageViewer.displayName = "ImageViewer";
196
196
 
197
197
  exports.ImageViewer = ImageViewer;
198
- //# sourceMappingURL=chunk-AC7M7JDO.cjs.map
199
- //# sourceMappingURL=chunk-AC7M7JDO.cjs.map
198
+ //# sourceMappingURL=chunk-QDVDBUJM.cjs.map
199
+ //# sourceMappingURL=chunk-QDVDBUJM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":["forwardRef","useRef","useState","useCallback","usePanZoom","jsxs","cn","jsx"],"mappings":"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","file":"chunk-AC7M7JDO.cjs","sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n return (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\"\n >\n <span className=\"font-medium\">Couldn&apos;t load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
1
+ {"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":["forwardRef","useRef","useState","useCallback","usePanZoom","jsxs","cn","jsx"],"mappings":"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","file":"chunk-QDVDBUJM.cjs","sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n return (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\"\n >\n <span className=\"font-medium\">Couldn&apos;t load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
@@ -2,7 +2,7 @@ import { dirtyRingClasses } from './chunk-GFYSELJF.js';
2
2
  import { useInlineEdit } from './chunk-OL53XYHF.js';
3
3
  import { useFieldMode } from './chunk-NRXK42LO.js';
4
4
  import { useControllableState } from './chunk-6FQGMVF2.js';
5
- import { cn } from './chunk-DSUHZO6T.js';
5
+ import { cn } from './chunk-MMW2JGKZ.js';
6
6
  import { forwardRef, useId } from 'react';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
8
8
 
@@ -160,5 +160,5 @@ var Switch = forwardRef(
160
160
  Switch.displayName = "Switch";
161
161
 
162
162
  export { Switch };
163
- //# sourceMappingURL=chunk-2ICXWLKS.js.map
164
- //# sourceMappingURL=chunk-2ICXWLKS.js.map
163
+ //# sourceMappingURL=chunk-QJKWBU3I.js.map
164
+ //# sourceMappingURL=chunk-QJKWBU3I.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-2ICXWLKS.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-QJKWBU3I.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\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
 
@@ -121,7 +121,7 @@ var Icon = react.forwardRef(
121
121
  ref,
122
122
  "aria-hidden": "true",
123
123
  "data-react-fancy-icon": "",
124
- className: chunk3Z6ALUWP_cjs.cn(
124
+ className: chunkZU5Q77OT_cjs.cn(
125
125
  "inline-flex items-center justify-center flex-shrink-0",
126
126
  sizeClasses[size],
127
127
  className
@@ -140,5 +140,5 @@ exports.registerIconAddendum = registerIconAddendum;
140
140
  exports.registerIconSet = registerIconSet;
141
141
  exports.registerIcons = registerIcons;
142
142
  exports.resolveIcon = resolveIcon;
143
- //# sourceMappingURL=chunk-JXIBUIEY.cjs.map
144
- //# sourceMappingURL=chunk-JXIBUIEY.cjs.map
143
+ //# sourceMappingURL=chunk-QKFOJKVE.cjs.map
144
+ //# sourceMappingURL=chunk-QKFOJKVE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Icon/icon-config.ts","../src/components/Icon/Icon.tsx"],"names":["map","forwardRef","useSyncExternalStore","jsx","cn"],"mappings":"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","file":"chunk-JXIBUIEY.cjs","sourcesContent":["import type { ComponentType } from \"react\";\nimport type { IconSet } from \"./icon-config.types\";\n\ntype IconComponent = ComponentType<{ className?: string; size?: number }>;\n\nconst registry = new Map<string, IconSet>();\nlet defaultSetName = \"lucide\";\n\n/**\n * Addendum layer — icon sets consulted across EVERY lookup, after the active\n * base set but before the lucide auto-fallback, regardless of `defaultSet`.\n * This is how a brand-icon pack (e.g. `@particle-academy/fancy-brand-icons`)\n * layers in: `<Icon name=\"github\" />` resolves the brand mark on top of Lucide\n * (or any swapped base) without a `set=` query. Base set still wins; addenda\n * supplement. Empty by default ⇒ behavior unchanged.\n */\nconst addenda: IconSet[] = [];\n\n/** Register an icon set as an addendum (supplements every base set). */\nexport function registerIconAddendum(set: IconSet): void {\n if (!addenda.includes(set)) addenda.push(set);\n}\n\nfunction resolveFromAddenda(name: string): IconComponent | null {\n for (const set of addenda) {\n const hit = set.resolve(name);\n if (hit) return hit as IconComponent;\n }\n return null;\n}\n\nfunction kebabToPascal(str: string): string {\n return str\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Lazy lucide barrel. The auto-fallback (`<Icon name=\"…\" />` resolving ANY\n * lucide icon by kebab name) needs the whole namespace because names are\n * dynamic — un-tree-shakeable. Importing it eagerly forced all ~5400 icons\n * into react-fancy's main bundle for every consumer (~548KB). Instead we\n * dynamic-import it on first auto-resolve, so the barrel becomes a lazy chunk\n * loaded ONLY by apps that actually use `<Icon name>` with an unregistered\n * icon — never on the critical path. Consumers wanting sync resolution +\n * tree-shaking should `registerIcons({ ...named imports })` (those win and\n * never trigger the lazy load).\n */\nlet lucideModule: Record<string, IconComponent | undefined> | null = null;\nlet lucidePromise: Promise<unknown> | null = null;\nlet lucideVersion = 0;\nconst lucideListeners = new Set<() => void>();\n\nfunction ensureLucideLoaded(): void {\n if (lucideModule || lucidePromise) return;\n lucidePromise = import(\"lucide-react\")\n .then((mod) => {\n lucideModule = mod as unknown as Record<string, IconComponent | undefined>;\n lucideVersion++;\n for (const listener of lucideListeners) listener();\n })\n .catch(() => {\n // Leave lucidePromise set so we don't hammer a failed import.\n });\n}\n\n/** Subscribe to the lazy lucide load so `<Icon>` can re-render once it lands. */\nexport function subscribeIconResolution(listener: () => void): () => void {\n lucideListeners.add(listener);\n return () => lucideListeners.delete(listener);\n}\n\n/** Snapshot for useSyncExternalStore — bumps when the lucide barrel loads. */\nexport function getIconResolutionVersion(): number {\n return lucideVersion;\n}\n\n/**\n * Fallback resolver: look up any lucide-react icon by its kebab-case name\n * without requiring the consumer to call `registerIcons()` first. Returns null\n * until the lazy barrel has loaded (the first call kicks off the import; `<Icon>`\n * re-renders via `subscribeIconResolution` when it's ready). Overrides\n * registered via `registerIcons()` still win and resolve synchronously.\n */\nfunction resolveFromLucide(name: string): IconComponent | null {\n // SSR-deterministic: never resolve the lazily-imported lucide barrel on the\n // server. A long-running SSR process (e.g. Inertia's node SSR daemon) loads\n // the barrel after its first request, then renders auto-fallback lucide icons\n // that a fresh client (barrel not yet loaded) does NOT have at hydration →\n // React #418 (\"server HTML didn't match\"). Returning null on the server makes\n // the server render match the client's FIRST render; the icon then appears\n // once the client loads the barrel (via subscribeIconResolution). Registered\n // icons + addenda (brand packs) still resolve synchronously on both sides.\n if (typeof window === \"undefined\") return null;\n if (!lucideModule) {\n ensureLucideLoaded();\n return null;\n }\n const pascal = kebabToPascal(name);\n const icon = lucideModule[pascal];\n return typeof icon === \"function\" || (icon && typeof icon === \"object\") ? (icon as IconComponent) : null;\n}\n\n/**\n * Register individual icon components by their kebab-case name.\n *\n * ```tsx\n * import { registerIcons } from \"@particle-academy/react-fancy\";\n * import { Home, Settings, Mail } from \"lucide-react\";\n *\n * registerIcons({ Home, Settings, Mail });\n * ```\n *\n * Icons are registered into the default \"lucide\" icon set and resolved\n * by the `<Icon name=\"home\" />` component using kebab-case names.\n */\nexport function registerIcons(\n icons: Record<string, ComponentType<{ className?: string; size?: number }>>,\n): void {\n let set = registry.get(\"lucide\");\n if (!set) {\n const map = new Map<string, ComponentType<{ className?: string; size?: number }>>();\n set = {\n resolve: (name: string) => {\n const pascal = kebabToPascal(name);\n return map.get(pascal) ?? null;\n },\n _map: map,\n } as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> };\n registry.set(\"lucide\", set);\n }\n const map = (set as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> })._map;\n for (const [key, component] of Object.entries(icons)) {\n map.set(key, component);\n }\n}\n\nexport function registerIconSet(name: string, set: IconSet): void {\n registry.set(name, set);\n}\n\nexport function configureIcons(options: { defaultSet?: string }): void {\n if (options.defaultSet) {\n defaultSetName = options.defaultSet;\n }\n}\n\nexport function resolveIcon(\n name: string,\n setName?: string,\n): IconComponent | null {\n const resolvedSet = setName ?? defaultSetName;\n const set = registry.get(resolvedSet);\n const registered = set ? set.resolve(name) : null;\n if (registered) return registered;\n // Addenda fill gaps after the base set, before the lucide auto-fallback — so a\n // brand pack's `github` wins over lucide's auto-resolved one.\n const fromAddenda = resolveFromAddenda(name);\n if (fromAddenda) return fromAddenda;\n if (resolvedSet === \"lucide\") return resolveFromLucide(name);\n return null;\n}\n","import { forwardRef, useSyncExternalStore } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveIcon, subscribeIconResolution, getIconResolutionVersion } from \"./icon-config\";\nimport type { IconProps } from \"./Icon.types\";\n\nconst sizeClasses: Record<NonNullable<IconProps[\"size\"]>, string> = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n};\n\nconst sizePixels: Record<NonNullable<IconProps[\"size\"]>, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(\n ({ size = \"md\", className, children, name, iconSet, ...props }, ref) => {\n // Re-render when the lazy lucide barrel lands, so `<Icon name>` auto-resolved\n // from lucide appears once loaded. Registered icons resolve synchronously and\n // never trigger the lazy load. SSR snapshot is the same getter (version 0).\n useSyncExternalStore(\n subscribeIconResolution,\n getIconResolutionVersion,\n getIconResolutionVersion,\n );\n\n let content = children;\n\n if (name && !children) {\n const ResolvedIcon = resolveIcon(name, iconSet);\n if (ResolvedIcon) {\n content = <ResolvedIcon size={sizePixels[size]} />;\n }\n }\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-react-fancy-icon=\"\"\n className={cn(\n \"inline-flex items-center justify-center flex-shrink-0\",\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n {content}\n </span>\n );\n },\n);\n\nIcon.displayName = \"Icon\";\n"]}
1
+ {"version":3,"sources":["../src/components/Icon/icon-config.ts","../src/components/Icon/Icon.tsx"],"names":["map","forwardRef","useSyncExternalStore","jsx","cn"],"mappings":"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","file":"chunk-QKFOJKVE.cjs","sourcesContent":["import type { ComponentType } from \"react\";\nimport type { IconSet } from \"./icon-config.types\";\n\ntype IconComponent = ComponentType<{ className?: string; size?: number }>;\n\nconst registry = new Map<string, IconSet>();\nlet defaultSetName = \"lucide\";\n\n/**\n * Addendum layer — icon sets consulted across EVERY lookup, after the active\n * base set but before the lucide auto-fallback, regardless of `defaultSet`.\n * This is how a brand-icon pack (e.g. `@particle-academy/fancy-brand-icons`)\n * layers in: `<Icon name=\"github\" />` resolves the brand mark on top of Lucide\n * (or any swapped base) without a `set=` query. Base set still wins; addenda\n * supplement. Empty by default ⇒ behavior unchanged.\n */\nconst addenda: IconSet[] = [];\n\n/** Register an icon set as an addendum (supplements every base set). */\nexport function registerIconAddendum(set: IconSet): void {\n if (!addenda.includes(set)) addenda.push(set);\n}\n\nfunction resolveFromAddenda(name: string): IconComponent | null {\n for (const set of addenda) {\n const hit = set.resolve(name);\n if (hit) return hit as IconComponent;\n }\n return null;\n}\n\nfunction kebabToPascal(str: string): string {\n return str\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Lazy lucide barrel. The auto-fallback (`<Icon name=\"…\" />` resolving ANY\n * lucide icon by kebab name) needs the whole namespace because names are\n * dynamic — un-tree-shakeable. Importing it eagerly forced all ~5400 icons\n * into react-fancy's main bundle for every consumer (~548KB). Instead we\n * dynamic-import it on first auto-resolve, so the barrel becomes a lazy chunk\n * loaded ONLY by apps that actually use `<Icon name>` with an unregistered\n * icon — never on the critical path. Consumers wanting sync resolution +\n * tree-shaking should `registerIcons({ ...named imports })` (those win and\n * never trigger the lazy load).\n */\nlet lucideModule: Record<string, IconComponent | undefined> | null = null;\nlet lucidePromise: Promise<unknown> | null = null;\nlet lucideVersion = 0;\nconst lucideListeners = new Set<() => void>();\n\nfunction ensureLucideLoaded(): void {\n if (lucideModule || lucidePromise) return;\n lucidePromise = import(\"lucide-react\")\n .then((mod) => {\n lucideModule = mod as unknown as Record<string, IconComponent | undefined>;\n lucideVersion++;\n for (const listener of lucideListeners) listener();\n })\n .catch(() => {\n // Leave lucidePromise set so we don't hammer a failed import.\n });\n}\n\n/** Subscribe to the lazy lucide load so `<Icon>` can re-render once it lands. */\nexport function subscribeIconResolution(listener: () => void): () => void {\n lucideListeners.add(listener);\n return () => lucideListeners.delete(listener);\n}\n\n/** Snapshot for useSyncExternalStore — bumps when the lucide barrel loads. */\nexport function getIconResolutionVersion(): number {\n return lucideVersion;\n}\n\n/**\n * Fallback resolver: look up any lucide-react icon by its kebab-case name\n * without requiring the consumer to call `registerIcons()` first. Returns null\n * until the lazy barrel has loaded (the first call kicks off the import; `<Icon>`\n * re-renders via `subscribeIconResolution` when it's ready). Overrides\n * registered via `registerIcons()` still win and resolve synchronously.\n */\nfunction resolveFromLucide(name: string): IconComponent | null {\n // SSR-deterministic: never resolve the lazily-imported lucide barrel on the\n // server. A long-running SSR process (e.g. Inertia's node SSR daemon) loads\n // the barrel after its first request, then renders auto-fallback lucide icons\n // that a fresh client (barrel not yet loaded) does NOT have at hydration →\n // React #418 (\"server HTML didn't match\"). Returning null on the server makes\n // the server render match the client's FIRST render; the icon then appears\n // once the client loads the barrel (via subscribeIconResolution). Registered\n // icons + addenda (brand packs) still resolve synchronously on both sides.\n if (typeof window === \"undefined\") return null;\n if (!lucideModule) {\n ensureLucideLoaded();\n return null;\n }\n const pascal = kebabToPascal(name);\n const icon = lucideModule[pascal];\n return typeof icon === \"function\" || (icon && typeof icon === \"object\") ? (icon as IconComponent) : null;\n}\n\n/**\n * Register individual icon components by their kebab-case name.\n *\n * ```tsx\n * import { registerIcons } from \"@particle-academy/react-fancy\";\n * import { Home, Settings, Mail } from \"lucide-react\";\n *\n * registerIcons({ Home, Settings, Mail });\n * ```\n *\n * Icons are registered into the default \"lucide\" icon set and resolved\n * by the `<Icon name=\"home\" />` component using kebab-case names.\n */\nexport function registerIcons(\n icons: Record<string, ComponentType<{ className?: string; size?: number }>>,\n): void {\n let set = registry.get(\"lucide\");\n if (!set) {\n const map = new Map<string, ComponentType<{ className?: string; size?: number }>>();\n set = {\n resolve: (name: string) => {\n const pascal = kebabToPascal(name);\n return map.get(pascal) ?? null;\n },\n _map: map,\n } as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> };\n registry.set(\"lucide\", set);\n }\n const map = (set as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> })._map;\n for (const [key, component] of Object.entries(icons)) {\n map.set(key, component);\n }\n}\n\nexport function registerIconSet(name: string, set: IconSet): void {\n registry.set(name, set);\n}\n\nexport function configureIcons(options: { defaultSet?: string }): void {\n if (options.defaultSet) {\n defaultSetName = options.defaultSet;\n }\n}\n\nexport function resolveIcon(\n name: string,\n setName?: string,\n): IconComponent | null {\n const resolvedSet = setName ?? defaultSetName;\n const set = registry.get(resolvedSet);\n const registered = set ? set.resolve(name) : null;\n if (registered) return registered;\n // Addenda fill gaps after the base set, before the lucide auto-fallback — so a\n // brand pack's `github` wins over lucide's auto-resolved one.\n const fromAddenda = resolveFromAddenda(name);\n if (fromAddenda) return fromAddenda;\n if (resolvedSet === \"lucide\") return resolveFromLucide(name);\n return null;\n}\n","import { forwardRef, useSyncExternalStore } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveIcon, subscribeIconResolution, getIconResolutionVersion } from \"./icon-config\";\nimport type { IconProps } from \"./Icon.types\";\n\nconst sizeClasses: Record<NonNullable<IconProps[\"size\"]>, string> = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n};\n\nconst sizePixels: Record<NonNullable<IconProps[\"size\"]>, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(\n ({ size = \"md\", className, children, name, iconSet, ...props }, ref) => {\n // Re-render when the lazy lucide barrel lands, so `<Icon name>` auto-resolved\n // from lucide appears once loaded. Registered icons resolve synchronously and\n // never trigger the lazy load. SSR snapshot is the same getter (version 0).\n useSyncExternalStore(\n subscribeIconResolution,\n getIconResolutionVersion,\n getIconResolutionVersion,\n );\n\n let content = children;\n\n if (name && !children) {\n const ResolvedIcon = resolveIcon(name, iconSet);\n if (ResolvedIcon) {\n content = <ResolvedIcon size={sizePixels[size]} />;\n }\n }\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-react-fancy-icon=\"\"\n className={cn(\n \"inline-flex items-center justify-center flex-shrink-0\",\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n {content}\n </span>\n );\n },\n);\n\nIcon.displayName = \"Icon\";\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 lucideReact = require('lucide-react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -145,7 +145,7 @@ var Calendar = react.forwardRef(
145
145
  {
146
146
  "data-react-fancy-calendar": "",
147
147
  ref,
148
- className: chunk3Z6ALUWP_cjs.cn(
148
+ className: chunkZU5Q77OT_cjs.cn(
149
149
  "inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900",
150
150
  className
151
151
  ),
@@ -198,7 +198,7 @@ var Calendar = react.forwardRef(
198
198
  disabled,
199
199
  onClick: () => handleSelect(date),
200
200
  onMouseEnter: () => mode === "range" && setRangeHover(date),
201
- className: chunk3Z6ALUWP_cjs.cn(
201
+ className: chunkZU5Q77OT_cjs.cn(
202
202
  btnBase,
203
203
  !isCurrentMonth && "text-zinc-300 dark:text-zinc-600",
204
204
  isCurrentMonth && !selected && !inRange && "text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800",
@@ -220,5 +220,5 @@ var Calendar = react.forwardRef(
220
220
  Calendar.displayName = "Calendar";
221
221
 
222
222
  exports.Calendar = Calendar;
223
- //# sourceMappingURL=chunk-NNSNANNY.cjs.map
224
- //# sourceMappingURL=chunk-NNSNANNY.cjs.map
223
+ //# sourceMappingURL=chunk-QOGKO6JH.cjs.map
224
+ //# sourceMappingURL=chunk-QOGKO6JH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["forwardRef","Calendar","useMemo","useState","useCallback","jsxs","cn","jsx","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-NNSNANNY.cjs","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
1
+ {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["forwardRef","Calendar","useMemo","useState","useCallback","jsxs","cn","jsx","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-QOGKO6JH.cjs","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\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
  var lucideReact = require('lucide-react');
@@ -14,7 +14,7 @@ function useNavbar() {
14
14
  return ctx;
15
15
  }
16
16
  function NavbarBrand({ children, className }) {
17
- return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-react-fancy-navbar-brand": "", className: chunk3Z6ALUWP_cjs.cn("flex items-center", className), children });
17
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-react-fancy-navbar-brand": "", className: chunkZU5Q77OT_cjs.cn("flex items-center", className), children });
18
18
  }
19
19
  NavbarBrand.displayName = "NavbarBrand";
20
20
  function NavbarItems({ children, className }) {
@@ -23,7 +23,7 @@ function NavbarItems({ children, className }) {
23
23
  "div",
24
24
  {
25
25
  "data-react-fancy-navbar-items": "",
26
- className: chunk3Z6ALUWP_cjs.cn(
26
+ className: chunkZU5Q77OT_cjs.cn(
27
27
  "items-center gap-1",
28
28
  mobileOpen ? "flex flex-col border-t border-zinc-200 pt-4 dark:border-zinc-700" : "hidden md:flex md:flex-row",
29
29
  className
@@ -41,7 +41,7 @@ function NavbarItem({
41
41
  className,
42
42
  ...rest
43
43
  }) {
44
- const baseClass = chunk3Z6ALUWP_cjs.cn(
44
+ const baseClass = chunkZU5Q77OT_cjs.cn(
45
45
  "rounded-lg px-3 py-2 text-sm font-medium transition-colors",
46
46
  active ? "bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white" : "text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-white",
47
47
  className
@@ -70,7 +70,7 @@ function NavbarToggle({ className }) {
70
70
  "data-react-fancy-navbar-toggle": "",
71
71
  type: "button",
72
72
  onClick: () => setMobileOpen(!mobileOpen),
73
- className: chunk3Z6ALUWP_cjs.cn(
73
+ className: chunkZU5Q77OT_cjs.cn(
74
74
  "inline-flex items-center rounded-lg p-2 text-zinc-500 hover:bg-zinc-100 md:hidden dark:hover:bg-zinc-800",
75
75
  className
76
76
  ),
@@ -91,7 +91,7 @@ function NavbarRoot({ children, className }) {
91
91
  "nav",
92
92
  {
93
93
  "data-react-fancy-navbar": "",
94
- className: chunk3Z6ALUWP_cjs.cn(
94
+ className: chunkZU5Q77OT_cjs.cn(
95
95
  "border-b border-zinc-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-900",
96
96
  className
97
97
  ),
@@ -108,5 +108,5 @@ var Navbar = Object.assign(NavbarRoot, {
108
108
 
109
109
  exports.Navbar = Navbar;
110
110
  exports.useNavbar = useNavbar;
111
- //# sourceMappingURL=chunk-B3HVWXIQ.cjs.map
112
- //# sourceMappingURL=chunk-B3HVWXIQ.cjs.map
111
+ //# sourceMappingURL=chunk-QSFTWIUH.cjs.map
112
+ //# sourceMappingURL=chunk-QSFTWIUH.cjs.map