@particle-academy/react-fancy 5.51.2 → 5.53.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 (535) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +69 -0
  3. package/dist/accordion-panel.cjs +7 -7
  4. package/dist/accordion-panel.js +1 -1
  5. package/dist/accordion.cjs +3 -3
  6. package/dist/accordion.js +1 -1
  7. package/dist/activity-light.cjs +2 -2
  8. package/dist/activity-light.js +1 -1
  9. package/dist/audio-viewer.cjs +2 -2
  10. package/dist/audio-viewer.js +1 -1
  11. package/dist/autocomplete.cjs +2 -2
  12. package/dist/autocomplete.js +1 -1
  13. package/dist/avatar.cjs +2 -2
  14. package/dist/avatar.js +1 -1
  15. package/dist/brand.cjs +3 -3
  16. package/dist/brand.js +1 -1
  17. package/dist/breadcrumbs.cjs +2 -2
  18. package/dist/breadcrumbs.js +1 -1
  19. package/dist/button.cjs +3 -3
  20. package/dist/button.js +1 -1
  21. package/dist/calendar.cjs +2 -2
  22. package/dist/calendar.js +1 -1
  23. package/dist/card.cjs +9 -9
  24. package/dist/card.js +3 -3
  25. package/dist/carousel.cjs +7 -7
  26. package/dist/carousel.js +1 -1
  27. package/dist/chart.cjs +2 -2
  28. package/dist/chart.js +1 -1
  29. package/dist/chat-drawer.cjs +2 -2
  30. package/dist/chat-drawer.js +1 -1
  31. package/dist/checkbox-group.cjs +5 -5
  32. package/dist/checkbox-group.js +4 -4
  33. package/dist/checkbox.cjs +3 -3
  34. package/dist/checkbox.js +2 -2
  35. package/dist/{chunk-KODD54GT.js → chunk-26JZ47BJ.js} +5 -5
  36. package/dist/{chunk-KODD54GT.js.map → chunk-26JZ47BJ.js.map} +1 -1
  37. package/dist/{chunk-FWCREAIT.js → chunk-2BXMMVQS.js} +2 -2
  38. package/dist/{chunk-FWCREAIT.js.map → chunk-2BXMMVQS.js.map} +1 -1
  39. package/dist/{chunk-VKXNCYLE.cjs → chunk-2GFM5WD4.cjs} +5 -5
  40. package/dist/chunk-2GFM5WD4.cjs.map +1 -0
  41. package/dist/{chunk-SAPOYAGN.cjs → chunk-2KFHSFFY.cjs} +10 -10
  42. package/dist/{chunk-SAPOYAGN.cjs.map → chunk-2KFHSFFY.cjs.map} +1 -1
  43. package/dist/{chunk-MGE5KOVA.js → chunk-2MUGEPRD.js} +10 -10
  44. package/dist/{chunk-MGE5KOVA.js.map → chunk-2MUGEPRD.js.map} +1 -1
  45. package/dist/{chunk-UIJR26YW.js → chunk-2OMA3O63.js} +4 -4
  46. package/dist/{chunk-UIJR26YW.js.map → chunk-2OMA3O63.js.map} +1 -1
  47. package/dist/{chunk-OC75GWX5.js → chunk-2UTN3EFK.js} +6 -6
  48. package/dist/{chunk-OC75GWX5.js.map → chunk-2UTN3EFK.js.map} +1 -1
  49. package/dist/{chunk-CF2U25LM.js → chunk-2XO6EYZ7.js} +9 -9
  50. package/dist/chunk-2XO6EYZ7.js.map +1 -0
  51. package/dist/{chunk-QSFTWIUH.cjs → chunk-36HG5JK6.cjs} +6 -6
  52. package/dist/chunk-36HG5JK6.cjs.map +1 -0
  53. package/dist/{chunk-TDDWWAM5.js → chunk-3AYRLFNO.js} +6 -6
  54. package/dist/chunk-3AYRLFNO.js.map +1 -0
  55. package/dist/{chunk-7JDVCQXD.js → chunk-3EWO5EBI.js} +14 -14
  56. package/dist/chunk-3EWO5EBI.js.map +1 -0
  57. package/dist/{chunk-PCTZNK2Z.js → chunk-3NIXNJ3I.js} +10 -10
  58. package/dist/chunk-3NIXNJ3I.js.map +1 -0
  59. package/dist/{chunk-Z3NSPDTW.cjs → chunk-3YA6FDVN.cjs} +8 -8
  60. package/dist/chunk-3YA6FDVN.cjs.map +1 -0
  61. package/dist/{chunk-SYVOGYJG.cjs → chunk-43ZRUYJC.cjs} +11 -11
  62. package/dist/{chunk-SYVOGYJG.cjs.map → chunk-43ZRUYJC.cjs.map} +1 -1
  63. package/dist/{chunk-NDUEPDNS.js → chunk-44VYWOCG.js} +4 -4
  64. package/dist/{chunk-NDUEPDNS.js.map → chunk-44VYWOCG.js.map} +1 -1
  65. package/dist/{chunk-LYHQ4VBR.js → chunk-45FDQ3R5.js} +3 -3
  66. package/dist/{chunk-LYHQ4VBR.js.map → chunk-45FDQ3R5.js.map} +1 -1
  67. package/dist/{chunk-LBU3T2LF.js → chunk-4FH2JHUY.js} +7 -7
  68. package/dist/{chunk-LBU3T2LF.js.map → chunk-4FH2JHUY.js.map} +1 -1
  69. package/dist/{chunk-5F6V5HHT.cjs → chunk-4JT2QANA.cjs} +11 -11
  70. package/dist/chunk-4JT2QANA.cjs.map +1 -0
  71. package/dist/{chunk-N6OZZAOT.js → chunk-4TVAHZ35.js} +9 -9
  72. package/dist/chunk-4TVAHZ35.js.map +1 -0
  73. package/dist/{chunk-XLFGWNW4.cjs → chunk-4XMBXG4K.cjs} +4 -4
  74. package/dist/{chunk-XLFGWNW4.cjs.map → chunk-4XMBXG4K.cjs.map} +1 -1
  75. package/dist/{chunk-N4VHOTMK.cjs → chunk-546K5LRX.cjs} +3 -3
  76. package/dist/{chunk-N4VHOTMK.cjs.map → chunk-546K5LRX.cjs.map} +1 -1
  77. package/dist/{chunk-P7Q2YIIS.js → chunk-5DG4CAWS.js} +8 -8
  78. package/dist/chunk-5DG4CAWS.js.map +1 -0
  79. package/dist/{chunk-GU5BYZTR.cjs → chunk-5H6IUCOD.cjs} +8 -8
  80. package/dist/chunk-5H6IUCOD.cjs.map +1 -0
  81. package/dist/{chunk-ZY4CVNNZ.js → chunk-5JA4ENMF.js} +6 -6
  82. package/dist/chunk-5JA4ENMF.js.map +1 -0
  83. package/dist/{chunk-R3UG6PVX.cjs → chunk-5JK2VDWY.cjs} +7 -7
  84. package/dist/{chunk-R3UG6PVX.cjs.map → chunk-5JK2VDWY.cjs.map} +1 -1
  85. package/dist/{chunk-5MU6X3KO.js → chunk-5WQ6FPSP.js} +4 -4
  86. package/dist/{chunk-5MU6X3KO.js.map → chunk-5WQ6FPSP.js.map} +1 -1
  87. package/dist/{chunk-56U4LBNL.cjs → chunk-5ZNOLPIJ.cjs} +9 -9
  88. package/dist/chunk-5ZNOLPIJ.cjs.map +1 -0
  89. package/dist/{chunk-TNYWQ6EQ.js → chunk-6HJF55U7.js} +8 -8
  90. package/dist/chunk-6HJF55U7.js.map +1 -0
  91. package/dist/{chunk-F7YCIII4.cjs → chunk-6MXFZ3B5.cjs} +3 -3
  92. package/dist/{chunk-F7YCIII4.cjs.map → chunk-6MXFZ3B5.cjs.map} +1 -1
  93. package/dist/{chunk-7Y2AENZD.cjs → chunk-7DDUMW4R.cjs} +4 -4
  94. package/dist/{chunk-7Y2AENZD.cjs.map → chunk-7DDUMW4R.cjs.map} +1 -1
  95. package/dist/{chunk-2KZINS6D.cjs → chunk-7QENPLOP.cjs} +9 -9
  96. package/dist/{chunk-2KZINS6D.cjs.map → chunk-7QENPLOP.cjs.map} +1 -1
  97. package/dist/{chunk-HPNIEYSJ.cjs → chunk-A2JUTNE6.cjs} +2 -2
  98. package/dist/{chunk-HPNIEYSJ.cjs.map → chunk-A2JUTNE6.cjs.map} +1 -1
  99. package/dist/{chunk-25UPDBI6.cjs → chunk-A5DN2XNM.cjs} +9 -9
  100. package/dist/chunk-A5DN2XNM.cjs.map +1 -0
  101. package/dist/{chunk-RA2VOQ46.js → chunk-A5RTALZJ.js} +6 -6
  102. package/dist/chunk-A5RTALZJ.js.map +1 -0
  103. package/dist/{chunk-WN45ZE37.cjs → chunk-AVEFCM6T.cjs} +3 -3
  104. package/dist/{chunk-WN45ZE37.cjs.map → chunk-AVEFCM6T.cjs.map} +1 -1
  105. package/dist/{chunk-TGNQ5Y6F.cjs → chunk-AYBKPAI2.cjs} +6 -6
  106. package/dist/{chunk-TGNQ5Y6F.cjs.map → chunk-AYBKPAI2.cjs.map} +1 -1
  107. package/dist/{chunk-OTCLBINT.js → chunk-AZQXPI5S.js} +7 -7
  108. package/dist/{chunk-OTCLBINT.js.map → chunk-AZQXPI5S.js.map} +1 -1
  109. package/dist/{chunk-RWOH2ADL.cjs → chunk-B4YV2V7G.cjs} +4 -4
  110. package/dist/{chunk-RWOH2ADL.cjs.map → chunk-B4YV2V7G.cjs.map} +1 -1
  111. package/dist/{chunk-AR3JOPGT.cjs → chunk-BDUL42VO.cjs} +31 -31
  112. package/dist/{chunk-AR3JOPGT.cjs.map → chunk-BDUL42VO.cjs.map} +1 -1
  113. package/dist/{chunk-5CXJ5Z4C.cjs → chunk-BJL3VDRK.cjs} +4 -4
  114. package/dist/{chunk-5CXJ5Z4C.cjs.map → chunk-BJL3VDRK.cjs.map} +1 -1
  115. package/dist/{chunk-WKAEAGMT.cjs → chunk-BK6XQQYG.cjs} +4 -4
  116. package/dist/{chunk-WKAEAGMT.cjs.map → chunk-BK6XQQYG.cjs.map} +1 -1
  117. package/dist/{chunk-UKUNWGL5.js → chunk-BLOX7MRO.js} +6 -6
  118. package/dist/{chunk-UKUNWGL5.js.map → chunk-BLOX7MRO.js.map} +1 -1
  119. package/dist/{chunk-Q7O5TLVU.js → chunk-BX7EDTL4.js} +3 -3
  120. package/dist/{chunk-Q7O5TLVU.js.map → chunk-BX7EDTL4.js.map} +1 -1
  121. package/dist/{chunk-FWA4PCW7.cjs → chunk-CAMQ5B3V.cjs} +5 -5
  122. package/dist/{chunk-FWA4PCW7.cjs.map → chunk-CAMQ5B3V.cjs.map} +1 -1
  123. package/dist/{chunk-I6L7OP7G.cjs → chunk-CG3RCQVL.cjs} +5 -5
  124. package/dist/chunk-CG3RCQVL.cjs.map +1 -0
  125. package/dist/{chunk-3Q4NSAEA.cjs → chunk-CQ54H7DZ.cjs} +8 -8
  126. package/dist/{chunk-3Q4NSAEA.cjs.map → chunk-CQ54H7DZ.cjs.map} +1 -1
  127. package/dist/{chunk-YOTCZUNW.js → chunk-D4QOV56U.js} +7 -7
  128. package/dist/{chunk-YOTCZUNW.js.map → chunk-D4QOV56U.js.map} +1 -1
  129. package/dist/{chunk-BZDXX6E3.cjs → chunk-DJB3N4G3.cjs} +11 -11
  130. package/dist/{chunk-BZDXX6E3.cjs.map → chunk-DJB3N4G3.cjs.map} +1 -1
  131. package/dist/{chunk-BMTTSBHF.js → chunk-DJYG7DXS.js} +4 -4
  132. package/dist/{chunk-BMTTSBHF.js.map → chunk-DJYG7DXS.js.map} +1 -1
  133. package/dist/{chunk-WBVWV2V7.cjs → chunk-DN244T6G.cjs} +6 -6
  134. package/dist/chunk-DN244T6G.cjs.map +1 -0
  135. package/dist/{chunk-NCXH5O4I.cjs → chunk-E4TRDGSU.cjs} +10 -10
  136. package/dist/{chunk-NCXH5O4I.cjs.map → chunk-E4TRDGSU.cjs.map} +1 -1
  137. package/dist/{chunk-FVG3YXXM.cjs → chunk-EEMNTO7L.cjs} +8 -8
  138. package/dist/{chunk-FVG3YXXM.cjs.map → chunk-EEMNTO7L.cjs.map} +1 -1
  139. package/dist/{chunk-GAB2QXHH.js → chunk-EJ6P7K4G.js} +8 -8
  140. package/dist/{chunk-GAB2QXHH.js.map → chunk-EJ6P7K4G.js.map} +1 -1
  141. package/dist/{chunk-Y4UPKJN5.js → chunk-EQ7G5F6K.js} +4 -4
  142. package/dist/{chunk-Y4UPKJN5.js.map → chunk-EQ7G5F6K.js.map} +1 -1
  143. package/dist/{chunk-U7PFHQBN.cjs → chunk-ETNQ4AEQ.cjs} +6 -6
  144. package/dist/{chunk-U7PFHQBN.cjs.map → chunk-ETNQ4AEQ.cjs.map} +1 -1
  145. package/dist/{chunk-23PAOCQQ.cjs → chunk-EXQ33MJR.cjs} +5 -5
  146. package/dist/{chunk-23PAOCQQ.cjs.map → chunk-EXQ33MJR.cjs.map} +1 -1
  147. package/dist/{chunk-HKRB2Z6R.cjs → chunk-FGI2EC32.cjs} +8 -8
  148. package/dist/chunk-FGI2EC32.cjs.map +1 -0
  149. package/dist/{chunk-AASQ6L6X.cjs → chunk-FNIHCNVD.cjs} +3 -3
  150. package/dist/{chunk-AASQ6L6X.cjs.map → chunk-FNIHCNVD.cjs.map} +1 -1
  151. package/dist/{chunk-O6GTY53I.cjs → chunk-FVQO75KY.cjs} +4 -4
  152. package/dist/{chunk-O6GTY53I.cjs.map → chunk-FVQO75KY.cjs.map} +1 -1
  153. package/dist/{chunk-FCSR2WVS.js → chunk-FWAVMWMP.js} +4 -4
  154. package/dist/{chunk-FCSR2WVS.js.map → chunk-FWAVMWMP.js.map} +1 -1
  155. package/dist/{chunk-FSRPZYZZ.js → chunk-G35XN5WV.js} +4 -4
  156. package/dist/chunk-G35XN5WV.js.map +1 -0
  157. package/dist/{chunk-HE3JJXIL.cjs → chunk-G4M3MCJO.cjs} +5 -5
  158. package/dist/{chunk-HE3JJXIL.cjs.map → chunk-G4M3MCJO.cjs.map} +1 -1
  159. package/dist/{chunk-T45XK5GN.cjs → chunk-G5DMYAWL.cjs} +19 -19
  160. package/dist/chunk-G5DMYAWL.cjs.map +1 -0
  161. package/dist/{chunk-7CN7IHES.js → chunk-GF23UBOT.js} +3 -3
  162. package/dist/{chunk-7CN7IHES.js.map → chunk-GF23UBOT.js.map} +1 -1
  163. package/dist/{chunk-BVRPDMB7.cjs → chunk-GKLETY7D.cjs} +4 -4
  164. package/dist/{chunk-BVRPDMB7.cjs.map → chunk-GKLETY7D.cjs.map} +1 -1
  165. package/dist/{chunk-KQQA7JBC.js → chunk-GOE36IXL.js} +5 -5
  166. package/dist/{chunk-KQQA7JBC.js.map → chunk-GOE36IXL.js.map} +1 -1
  167. package/dist/{chunk-XZUGREDI.js → chunk-GVMWJ4NI.js} +6 -6
  168. package/dist/{chunk-XZUGREDI.js.map → chunk-GVMWJ4NI.js.map} +1 -1
  169. package/dist/{chunk-FPZYPD3N.cjs → chunk-H7ELUIF6.cjs} +12 -12
  170. package/dist/{chunk-FPZYPD3N.cjs.map → chunk-H7ELUIF6.cjs.map} +1 -1
  171. package/dist/{chunk-VB3QJ6QE.js → chunk-HRH5BIYG.js} +4 -4
  172. package/dist/{chunk-VB3QJ6QE.js.map → chunk-HRH5BIYG.js.map} +1 -1
  173. package/dist/{chunk-NTMHP7FS.js → chunk-HVND2IIB.js} +6 -6
  174. package/dist/{chunk-NTMHP7FS.js.map → chunk-HVND2IIB.js.map} +1 -1
  175. package/dist/{chunk-ASS6EWNI.js → chunk-ICMLLZKZ.js} +8 -8
  176. package/dist/{chunk-ASS6EWNI.js.map → chunk-ICMLLZKZ.js.map} +1 -1
  177. package/dist/{chunk-FNEPZ33A.js → chunk-IU5WQUUC.js} +8 -8
  178. package/dist/{chunk-FNEPZ33A.js.map → chunk-IU5WQUUC.js.map} +1 -1
  179. package/dist/{chunk-7ZDJPHLJ.cjs → chunk-JRRYYW3Y.cjs} +24 -24
  180. package/dist/{chunk-7ZDJPHLJ.cjs.map → chunk-JRRYYW3Y.cjs.map} +1 -1
  181. package/dist/{chunk-ZLWCZV7R.js → chunk-JSD6IEBW.js} +7 -7
  182. package/dist/chunk-JSD6IEBW.js.map +1 -0
  183. package/dist/{chunk-QAFAPHAF.cjs → chunk-JUQZMNPR.cjs} +4 -4
  184. package/dist/chunk-JUQZMNPR.cjs.map +1 -0
  185. package/dist/{chunk-PFEFKLUV.cjs → chunk-K5MQZTDW.cjs} +6 -6
  186. package/dist/{chunk-PFEFKLUV.cjs.map → chunk-K5MQZTDW.cjs.map} +1 -1
  187. package/dist/{chunk-32AJIHBZ.js → chunk-K6Q542VL.js} +5 -5
  188. package/dist/chunk-K6Q542VL.js.map +1 -0
  189. package/dist/{chunk-OFHO5SXA.js → chunk-KC3PYCBO.js} +4 -4
  190. package/dist/{chunk-OFHO5SXA.js.map → chunk-KC3PYCBO.js.map} +1 -1
  191. package/dist/{chunk-QW66UHWO.cjs → chunk-KE4XURZD.cjs} +4 -4
  192. package/dist/{chunk-QW66UHWO.cjs.map → chunk-KE4XURZD.cjs.map} +1 -1
  193. package/dist/{chunk-JFOORUUD.cjs → chunk-KNKOSMOQ.cjs} +6 -6
  194. package/dist/chunk-KNKOSMOQ.cjs.map +1 -0
  195. package/dist/{chunk-LLA33GKC.cjs → chunk-KSU6RYWU.cjs} +4 -4
  196. package/dist/chunk-KSU6RYWU.cjs.map +1 -0
  197. package/dist/{chunk-PWEZCMIY.js → chunk-KXYMMNNV.js} +7 -7
  198. package/dist/chunk-KXYMMNNV.js.map +1 -0
  199. package/dist/{chunk-SUCBR6L5.cjs → chunk-L4JIBKFW.cjs} +3 -3
  200. package/dist/{chunk-SUCBR6L5.cjs.map → chunk-L4JIBKFW.cjs.map} +1 -1
  201. package/dist/{chunk-VGBZWDMM.cjs → chunk-LIVC3WUU.cjs} +4 -4
  202. package/dist/{chunk-VGBZWDMM.cjs.map → chunk-LIVC3WUU.cjs.map} +1 -1
  203. package/dist/{chunk-YF2EHBTV.js → chunk-LKN7FYW6.js} +3 -3
  204. package/dist/{chunk-YF2EHBTV.js.map → chunk-LKN7FYW6.js.map} +1 -1
  205. package/dist/{chunk-RPVCMW64.cjs → chunk-LX23ZJDM.cjs} +6 -6
  206. package/dist/chunk-LX23ZJDM.cjs.map +1 -0
  207. package/dist/{chunk-RU6ZTA4M.cjs → chunk-M5SEYDSS.cjs} +6 -6
  208. package/dist/{chunk-RU6ZTA4M.cjs.map → chunk-M5SEYDSS.cjs.map} +1 -1
  209. package/dist/{chunk-FYKOLKQZ.js → chunk-M6XBF2ZS.js} +4 -4
  210. package/dist/chunk-M6XBF2ZS.js.map +1 -0
  211. package/dist/{chunk-V6VFSX6V.cjs → chunk-MAZEX4EZ.cjs} +13 -13
  212. package/dist/{chunk-V6VFSX6V.cjs.map → chunk-MAZEX4EZ.cjs.map} +1 -1
  213. package/dist/{chunk-7EZBMGEE.cjs → chunk-MRZXTL46.cjs} +7 -7
  214. package/dist/chunk-MRZXTL46.cjs.map +1 -0
  215. package/dist/{chunk-M5ACSJJ4.js → chunk-MV6BK4WG.js} +13 -14
  216. package/dist/chunk-MV6BK4WG.js.map +1 -0
  217. package/dist/{chunk-K6EJLBBQ.js → chunk-N5XMBHX7.js} +3 -3
  218. package/dist/{chunk-K6EJLBBQ.js.map → chunk-N5XMBHX7.js.map} +1 -1
  219. package/dist/{chunk-MH4QS7OE.cjs → chunk-N7ABDCQ6.cjs} +16 -16
  220. package/dist/{chunk-MH4QS7OE.cjs.map → chunk-N7ABDCQ6.cjs.map} +1 -1
  221. package/dist/{chunk-G73TVXDQ.js → chunk-NVXTHTJI.js} +9 -9
  222. package/dist/{chunk-G73TVXDQ.js.map → chunk-NVXTHTJI.js.map} +1 -1
  223. package/dist/{chunk-YLGTDBB2.cjs → chunk-O3F6DYWR.cjs} +3 -3
  224. package/dist/{chunk-YLGTDBB2.cjs.map → chunk-O3F6DYWR.cjs.map} +1 -1
  225. package/dist/{chunk-IECPLOSZ.js → chunk-OFNA5HS5.js} +12 -12
  226. package/dist/{chunk-IECPLOSZ.js.map → chunk-OFNA5HS5.js.map} +1 -1
  227. package/dist/{chunk-4HRD4S25.js → chunk-OTM7RL2L.js} +5 -5
  228. package/dist/{chunk-4HRD4S25.js.map → chunk-OTM7RL2L.js.map} +1 -1
  229. package/dist/{chunk-TJJ63UJV.js → chunk-OTSVOPKP.js} +3 -3
  230. package/dist/{chunk-TJJ63UJV.js.map → chunk-OTSVOPKP.js.map} +1 -1
  231. package/dist/{chunk-ZVXOL5H3.js → chunk-OYDJVGFS.js} +3 -3
  232. package/dist/{chunk-ZVXOL5H3.js.map → chunk-OYDJVGFS.js.map} +1 -1
  233. package/dist/{chunk-XKDW6B7X.cjs → chunk-P53432AK.cjs} +9 -9
  234. package/dist/{chunk-XKDW6B7X.cjs.map → chunk-P53432AK.cjs.map} +1 -1
  235. package/dist/{chunk-WNUU7T62.cjs → chunk-PBZHLHSA.cjs} +3 -3
  236. package/dist/{chunk-WNUU7T62.cjs.map → chunk-PBZHLHSA.cjs.map} +1 -1
  237. package/dist/{chunk-S5KUYX3Z.cjs → chunk-PCNJJVTF.cjs} +7 -7
  238. package/dist/{chunk-S5KUYX3Z.cjs.map → chunk-PCNJJVTF.cjs.map} +1 -1
  239. package/dist/{chunk-O6E2WC3J.js → chunk-PRP5N7NY.js} +4 -4
  240. package/dist/chunk-PRP5N7NY.js.map +1 -0
  241. package/dist/{chunk-MFQ5NBSV.cjs → chunk-QAKIG43N.cjs} +3 -3
  242. package/dist/{chunk-MFQ5NBSV.cjs.map → chunk-QAKIG43N.cjs.map} +1 -1
  243. package/dist/{chunk-BBOIFV27.cjs → chunk-QF7CD4JH.cjs} +5 -5
  244. package/dist/{chunk-BBOIFV27.cjs.map → chunk-QF7CD4JH.cjs.map} +1 -1
  245. package/dist/{chunk-ZI7JP3TN.js → chunk-QFC736WY.js} +5 -5
  246. package/dist/{chunk-ZI7JP3TN.js.map → chunk-QFC736WY.js.map} +1 -1
  247. package/dist/{chunk-ZUQUL53P.cjs → chunk-QHN63FRP.cjs} +10 -10
  248. package/dist/{chunk-ZUQUL53P.cjs.map → chunk-QHN63FRP.cjs.map} +1 -1
  249. package/dist/{chunk-CESGP5AF.js → chunk-QPM4CZ4G.js} +3 -3
  250. package/dist/{chunk-CESGP5AF.js.map → chunk-QPM4CZ4G.js.map} +1 -1
  251. package/dist/{chunk-LMPPAQKP.cjs → chunk-QUKUX5KU.cjs} +4 -4
  252. package/dist/{chunk-LMPPAQKP.cjs.map → chunk-QUKUX5KU.cjs.map} +1 -1
  253. package/dist/{chunk-RUSRAKKA.js → chunk-RANTYGKW.js} +7 -7
  254. package/dist/{chunk-RUSRAKKA.js.map → chunk-RANTYGKW.js.map} +1 -1
  255. package/dist/{chunk-Y52NXM73.cjs → chunk-RVBTDXPD.cjs} +5 -5
  256. package/dist/{chunk-Y52NXM73.cjs.map → chunk-RVBTDXPD.cjs.map} +1 -1
  257. package/dist/{chunk-RLMU3NHQ.cjs → chunk-S3V2C4DW.cjs} +14 -14
  258. package/dist/chunk-S3V2C4DW.cjs.map +1 -0
  259. package/dist/{chunk-6IBBAOQC.cjs → chunk-SONXLQPJ.cjs} +8 -8
  260. package/dist/chunk-SONXLQPJ.cjs.map +1 -0
  261. package/dist/{chunk-HIN6PHSE.cjs → chunk-SSCW67KA.cjs} +3 -3
  262. package/dist/{chunk-HIN6PHSE.cjs.map → chunk-SSCW67KA.cjs.map} +1 -1
  263. package/dist/{chunk-F2GAZZVS.js → chunk-SVSQXKFL.js} +4 -4
  264. package/dist/{chunk-F2GAZZVS.js.map → chunk-SVSQXKFL.js.map} +1 -1
  265. package/dist/{chunk-ATANWEXA.cjs → chunk-SW2MDI2E.cjs} +51 -51
  266. package/dist/{chunk-ATANWEXA.cjs.map → chunk-SW2MDI2E.cjs.map} +1 -1
  267. package/dist/{chunk-ZKFFHIEW.js → chunk-SXXDTW7S.js} +4 -4
  268. package/dist/{chunk-ZKFFHIEW.js.map → chunk-SXXDTW7S.js.map} +1 -1
  269. package/dist/{chunk-TT3K5D6J.js → chunk-T67FLC55.js} +8 -8
  270. package/dist/{chunk-TT3K5D6J.js.map → chunk-T67FLC55.js.map} +1 -1
  271. package/dist/{chunk-FNJDMGJ3.js → chunk-TAYJSIOP.js} +7 -7
  272. package/dist/{chunk-FNJDMGJ3.js.map → chunk-TAYJSIOP.js.map} +1 -1
  273. package/dist/{chunk-GCWIZNN2.cjs → chunk-TFKG5FSG.cjs} +8 -8
  274. package/dist/{chunk-GCWIZNN2.cjs.map → chunk-TFKG5FSG.cjs.map} +1 -1
  275. package/dist/{chunk-MFBUK4RV.cjs → chunk-TJTC4WNY.cjs} +8 -8
  276. package/dist/{chunk-MFBUK4RV.cjs.map → chunk-TJTC4WNY.cjs.map} +1 -1
  277. package/dist/{chunk-BZZDHDMK.cjs → chunk-TLRFXSPA.cjs} +14 -14
  278. package/dist/{chunk-BZZDHDMK.cjs.map → chunk-TLRFXSPA.cjs.map} +1 -1
  279. package/dist/{chunk-XDJSFGXW.js → chunk-TMQF2CRN.js} +4 -4
  280. package/dist/chunk-TMQF2CRN.js.map +1 -0
  281. package/dist/{chunk-65HKNZFG.cjs → chunk-TTZJ2KXK.cjs} +3 -3
  282. package/dist/{chunk-65HKNZFG.cjs.map → chunk-TTZJ2KXK.cjs.map} +1 -1
  283. package/dist/{chunk-P7PKK5BO.js → chunk-UE3QO7R3.js} +4 -4
  284. package/dist/{chunk-P7PKK5BO.js.map → chunk-UE3QO7R3.js.map} +1 -1
  285. package/dist/{chunk-QOGKO6JH.cjs → chunk-UET6D7B3.cjs} +6 -6
  286. package/dist/{chunk-QOGKO6JH.cjs.map → chunk-UET6D7B3.cjs.map} +1 -1
  287. package/dist/{chunk-MODCP3UV.js → chunk-UIE5FP3A.js} +9 -9
  288. package/dist/chunk-UIE5FP3A.js.map +1 -0
  289. package/dist/chunk-USWQAMI3.js +35 -0
  290. package/dist/{chunk-GFYSELJF.js.map → chunk-USWQAMI3.js.map} +1 -1
  291. package/dist/{chunk-YD4SXA6K.js → chunk-UVMIJCY3.js} +8 -8
  292. package/dist/chunk-UVMIJCY3.js.map +1 -0
  293. package/dist/{chunk-DEFGT75G.js → chunk-UVUBV4VZ.js} +6 -6
  294. package/dist/{chunk-DEFGT75G.js.map → chunk-UVUBV4VZ.js.map} +1 -1
  295. package/dist/{chunk-CRR3AMJ4.js → chunk-UZCR7DK5.js} +4 -4
  296. package/dist/{chunk-CRR3AMJ4.js.map → chunk-UZCR7DK5.js.map} +1 -1
  297. package/dist/{chunk-WKNVZUWZ.cjs → chunk-UZG6LO4Z.cjs} +3 -3
  298. package/dist/{chunk-WKNVZUWZ.cjs.map → chunk-UZG6LO4Z.cjs.map} +1 -1
  299. package/dist/{chunk-DCVR6NPP.js → chunk-V4235IZO.js} +3 -3
  300. package/dist/{chunk-DCVR6NPP.js.map → chunk-V4235IZO.js.map} +1 -1
  301. package/dist/{chunk-WIS4QRGK.cjs → chunk-V5JTTLJP.cjs} +6 -6
  302. package/dist/{chunk-WIS4QRGK.cjs.map → chunk-V5JTTLJP.cjs.map} +1 -1
  303. package/dist/{chunk-IAUJKZAQ.js → chunk-VOHTL6WN.js} +14 -14
  304. package/dist/{chunk-IAUJKZAQ.js.map → chunk-VOHTL6WN.js.map} +1 -1
  305. package/dist/{chunk-NBAHXZHJ.js → chunk-VQXXX6DK.js} +4 -4
  306. package/dist/{chunk-NBAHXZHJ.js.map → chunk-VQXXX6DK.js.map} +1 -1
  307. package/dist/{chunk-COH45MGW.cjs → chunk-WFHK2DKG.cjs} +3 -3
  308. package/dist/{chunk-COH45MGW.cjs.map → chunk-WFHK2DKG.cjs.map} +1 -1
  309. package/dist/{chunk-VYHZEQIG.js → chunk-WGRLNXNB.js} +6 -6
  310. package/dist/{chunk-VYHZEQIG.js.map → chunk-WGRLNXNB.js.map} +1 -1
  311. package/dist/{chunk-XK5WHQ3O.cjs → chunk-WMANILKC.cjs} +4 -4
  312. package/dist/chunk-WMANILKC.cjs.map +1 -0
  313. package/dist/{chunk-DHIUMQLP.cjs → chunk-WNUAGRQN.cjs} +4 -4
  314. package/dist/{chunk-DHIUMQLP.cjs.map → chunk-WNUAGRQN.cjs.map} +1 -1
  315. package/dist/{chunk-B6CQ4KK7.cjs → chunk-WONP337S.cjs} +13 -14
  316. package/dist/chunk-WONP337S.cjs.map +1 -0
  317. package/dist/{chunk-ENYHLZ2X.js → chunk-WW56U3RV.js} +5 -5
  318. package/dist/{chunk-ENYHLZ2X.js.map → chunk-WW56U3RV.js.map} +1 -1
  319. package/dist/{chunk-KKWNKBKR.js → chunk-WX5XYDVN.js} +8 -8
  320. package/dist/{chunk-KKWNKBKR.js.map → chunk-WX5XYDVN.js.map} +1 -1
  321. package/dist/{chunk-TB35HNBE.js → chunk-X7VIIM2P.js} +3 -3
  322. package/dist/{chunk-TB35HNBE.js.map → chunk-X7VIIM2P.js.map} +1 -1
  323. package/dist/{chunk-4NBM3LXN.js → chunk-XB3H2EEL.js} +5 -5
  324. package/dist/{chunk-4NBM3LXN.js.map → chunk-XB3H2EEL.js.map} +1 -1
  325. package/dist/{chunk-5RLP77KK.js → chunk-XM3V3RSU.js} +4 -4
  326. package/dist/{chunk-5RLP77KK.js.map → chunk-XM3V3RSU.js.map} +1 -1
  327. package/dist/{chunk-IYVV4RD3.cjs → chunk-XM3W5ETT.cjs} +5 -5
  328. package/dist/{chunk-IYVV4RD3.cjs.map → chunk-XM3W5ETT.cjs.map} +1 -1
  329. package/dist/{chunk-IWXP2YUP.js → chunk-XOYRJFMU.js} +6 -6
  330. package/dist/chunk-XOYRJFMU.js.map +1 -0
  331. package/dist/{chunk-XB6YHUKW.js → chunk-XQDGUXMS.js} +10 -10
  332. package/dist/{chunk-XB6YHUKW.js.map → chunk-XQDGUXMS.js.map} +1 -1
  333. package/dist/{chunk-2KAJ4L7C.js → chunk-XS3EIQFP.js} +19 -19
  334. package/dist/chunk-XS3EIQFP.js.map +1 -0
  335. package/dist/{chunk-6KXAFP2T.js → chunk-XYOT75HH.js} +3 -3
  336. package/dist/{chunk-6KXAFP2T.js.map → chunk-XYOT75HH.js.map} +1 -1
  337. package/dist/{chunk-UDEEPMQ4.js → chunk-Y6LL3B5P.js} +4 -4
  338. package/dist/{chunk-UDEEPMQ4.js.map → chunk-Y6LL3B5P.js.map} +1 -1
  339. package/dist/{chunk-OS2QC3NE.cjs → chunk-Y7RGUUTS.cjs} +7 -7
  340. package/dist/chunk-Y7RGUUTS.cjs.map +1 -0
  341. package/dist/{chunk-Z6RVBZQ4.js → chunk-Y7UE37QZ.js} +8 -8
  342. package/dist/{chunk-Z6RVBZQ4.js.map → chunk-Y7UE37QZ.js.map} +1 -1
  343. package/dist/{chunk-YMDYDUBH.cjs → chunk-YH75G6SP.cjs} +7 -7
  344. package/dist/{chunk-YMDYDUBH.cjs.map → chunk-YH75G6SP.cjs.map} +1 -1
  345. package/dist/{chunk-PHDIQ4VC.js → chunk-YQTKTEWS.js} +8 -8
  346. package/dist/chunk-YQTKTEWS.js.map +1 -0
  347. package/dist/{chunk-FVTCPERB.cjs → chunk-Z4UXLQSK.cjs} +15 -15
  348. package/dist/{chunk-FVTCPERB.cjs.map → chunk-Z4UXLQSK.cjs.map} +1 -1
  349. package/dist/{chunk-W6RDAZJC.js → chunk-ZAX72LXL.js} +5 -5
  350. package/dist/chunk-ZAX72LXL.js.map +1 -0
  351. package/dist/{chunk-M52IS5SO.cjs → chunk-ZKJLDBXA.cjs} +16 -16
  352. package/dist/chunk-ZKJLDBXA.cjs.map +1 -0
  353. package/dist/{chunk-NE3Z4AWP.js → chunk-ZULMMW5W.js} +7 -7
  354. package/dist/{chunk-NE3Z4AWP.js.map → chunk-ZULMMW5W.js.map} +1 -1
  355. package/dist/color-picker.cjs +2 -2
  356. package/dist/color-picker.js +1 -1
  357. package/dist/command.cjs +3 -3
  358. package/dist/command.js +1 -1
  359. package/dist/composer.cjs +5 -5
  360. package/dist/composer.js +3 -3
  361. package/dist/content-renderer.cjs +4 -4
  362. package/dist/content-renderer.js +1 -1
  363. package/dist/context-menu.cjs +3 -3
  364. package/dist/context-menu.js +1 -1
  365. package/dist/dark-variant.css +3 -0
  366. package/dist/dark-variant.css.map +1 -0
  367. package/dist/date-picker.cjs +5 -5
  368. package/dist/date-picker.js +4 -4
  369. package/dist/drawer.cjs +3 -3
  370. package/dist/drawer.js +1 -1
  371. package/dist/dropdown.cjs +3 -3
  372. package/dist/dropdown.js +1 -1
  373. package/dist/editor.cjs +6 -6
  374. package/dist/editor.js +4 -4
  375. package/dist/emoji-select.cjs +2 -2
  376. package/dist/emoji-select.js +1 -1
  377. package/dist/eyebrow.cjs +2 -2
  378. package/dist/eyebrow.js +1 -1
  379. package/dist/faux-client.cjs +2 -2
  380. package/dist/faux-client.js +1 -1
  381. package/dist/field.cjs +3 -3
  382. package/dist/field.js +2 -2
  383. package/dist/file-browser.cjs +5 -5
  384. package/dist/file-browser.js +1 -1
  385. package/dist/file-upload.cjs +3 -3
  386. package/dist/file-upload.js +1 -1
  387. package/dist/heading.cjs +2 -2
  388. package/dist/heading.js +1 -1
  389. package/dist/image-viewer.cjs +3 -3
  390. package/dist/image-viewer.js +2 -2
  391. package/dist/index-list.cjs +2 -2
  392. package/dist/index-list.js +1 -1
  393. package/dist/index.cjs +372 -299
  394. package/dist/index.cjs.map +1 -1
  395. package/dist/index.d.cts +114 -1
  396. package/dist/index.d.ts +114 -1
  397. package/dist/index.js +166 -90
  398. package/dist/index.js.map +1 -1
  399. package/dist/input-tag.cjs +6 -6
  400. package/dist/input-tag.js +1 -1
  401. package/dist/input.cjs +8 -8
  402. package/dist/input.js +7 -7
  403. package/dist/inputs.cjs +36 -36
  404. package/dist/inputs.js +17 -17
  405. package/dist/json-editor.cjs +31 -31
  406. package/dist/json-editor.js +20 -20
  407. package/dist/kanban.cjs +3 -3
  408. package/dist/kanban.js +1 -1
  409. package/dist/kbd.cjs +2 -2
  410. package/dist/kbd.js +1 -1
  411. package/dist/magic-wand.cjs +11 -11
  412. package/dist/magic-wand.js +10 -10
  413. package/dist/media-viewer.cjs +6 -6
  414. package/dist/media-viewer.js +5 -5
  415. package/dist/menu.cjs +3 -3
  416. package/dist/menu.js +1 -1
  417. package/dist/mobile-menu.cjs +4 -4
  418. package/dist/mobile-menu.js +2 -2
  419. package/dist/modal.cjs +3 -3
  420. package/dist/modal.js +1 -1
  421. package/dist/mode.cjs +3 -3
  422. package/dist/mode.js +2 -2
  423. package/dist/mood-meter.cjs +2 -2
  424. package/dist/mood-meter.js +1 -1
  425. package/dist/multi-switch.cjs +5 -5
  426. package/dist/multi-switch.js +4 -4
  427. package/dist/navbar.cjs +3 -3
  428. package/dist/navbar.js +1 -1
  429. package/dist/otp-input.cjs +2 -2
  430. package/dist/otp-input.js +1 -1
  431. package/dist/pagination.cjs +2 -2
  432. package/dist/pagination.js +1 -1
  433. package/dist/paste-pills.cjs +15 -15
  434. package/dist/paste-pills.js +2 -2
  435. package/dist/pdf-viewer.cjs +3 -3
  436. package/dist/pdf-viewer.js +2 -2
  437. package/dist/pillbox.cjs +2 -2
  438. package/dist/pillbox.js +1 -1
  439. package/dist/popover.cjs +3 -3
  440. package/dist/popover.js +1 -1
  441. package/dist/profile.cjs +3 -3
  442. package/dist/profile.js +2 -2
  443. package/dist/progress.cjs +2 -2
  444. package/dist/progress.js +1 -1
  445. package/dist/prompt-input.cjs +9 -9
  446. package/dist/prompt-input.js +8 -8
  447. package/dist/pull-quote.cjs +2 -2
  448. package/dist/pull-quote.js +1 -1
  449. package/dist/radio-group.cjs +5 -5
  450. package/dist/radio-group.js +4 -4
  451. package/dist/reason-tag.cjs +8 -8
  452. package/dist/reason-tag.js +7 -7
  453. package/dist/select.cjs +6 -6
  454. package/dist/select.js +5 -5
  455. package/dist/separator.cjs +2 -2
  456. package/dist/separator.js +1 -1
  457. package/dist/sidebar.cjs +4 -4
  458. package/dist/sidebar.js +2 -2
  459. package/dist/skeleton.cjs +2 -2
  460. package/dist/skeleton.js +1 -1
  461. package/dist/slider.cjs +5 -5
  462. package/dist/slider.js +4 -4
  463. package/dist/stat-list.cjs +2 -2
  464. package/dist/stat-list.js +1 -1
  465. package/dist/stat.cjs +3 -3
  466. package/dist/stat.js +1 -1
  467. package/dist/styles.css +60 -60
  468. package/dist/styles.css.map +1 -1
  469. package/dist/switch.cjs +3 -3
  470. package/dist/switch.js +2 -2
  471. package/dist/table.cjs +11 -11
  472. package/dist/table.js +1 -1
  473. package/dist/tabs.cjs +3 -3
  474. package/dist/tabs.js +1 -1
  475. package/dist/text.cjs +2 -2
  476. package/dist/text.js +1 -1
  477. package/dist/textarea.cjs +6 -6
  478. package/dist/textarea.js +5 -5
  479. package/dist/time-grid.cjs +2 -2
  480. package/dist/time-grid.js +1 -1
  481. package/dist/time-picker.cjs +2 -2
  482. package/dist/time-picker.js +1 -1
  483. package/dist/timeline.cjs +4 -4
  484. package/dist/timeline.js +1 -1
  485. package/dist/toast.cjs +4 -4
  486. package/dist/toast.js +2 -2
  487. package/dist/tree-nav.cjs +3 -3
  488. package/dist/tree-nav.js +1 -1
  489. package/package.json +2 -1
  490. package/dist/chunk-25UPDBI6.cjs.map +0 -1
  491. package/dist/chunk-2KAJ4L7C.js.map +0 -1
  492. package/dist/chunk-32AJIHBZ.js.map +0 -1
  493. package/dist/chunk-56U4LBNL.cjs.map +0 -1
  494. package/dist/chunk-5F6V5HHT.cjs.map +0 -1
  495. package/dist/chunk-6IBBAOQC.cjs.map +0 -1
  496. package/dist/chunk-7EZBMGEE.cjs.map +0 -1
  497. package/dist/chunk-7JDVCQXD.js.map +0 -1
  498. package/dist/chunk-B6CQ4KK7.cjs.map +0 -1
  499. package/dist/chunk-CF2U25LM.js.map +0 -1
  500. package/dist/chunk-FSRPZYZZ.js.map +0 -1
  501. package/dist/chunk-FYKOLKQZ.js.map +0 -1
  502. package/dist/chunk-GFYSELJF.js +0 -35
  503. package/dist/chunk-GU5BYZTR.cjs.map +0 -1
  504. package/dist/chunk-HKRB2Z6R.cjs.map +0 -1
  505. package/dist/chunk-I6L7OP7G.cjs.map +0 -1
  506. package/dist/chunk-IWXP2YUP.js.map +0 -1
  507. package/dist/chunk-JFOORUUD.cjs.map +0 -1
  508. package/dist/chunk-LLA33GKC.cjs.map +0 -1
  509. package/dist/chunk-M52IS5SO.cjs.map +0 -1
  510. package/dist/chunk-M5ACSJJ4.js.map +0 -1
  511. package/dist/chunk-MODCP3UV.js.map +0 -1
  512. package/dist/chunk-N6OZZAOT.js.map +0 -1
  513. package/dist/chunk-O6E2WC3J.js.map +0 -1
  514. package/dist/chunk-OS2QC3NE.cjs.map +0 -1
  515. package/dist/chunk-P7Q2YIIS.js.map +0 -1
  516. package/dist/chunk-PCTZNK2Z.js.map +0 -1
  517. package/dist/chunk-PHDIQ4VC.js.map +0 -1
  518. package/dist/chunk-PWEZCMIY.js.map +0 -1
  519. package/dist/chunk-QAFAPHAF.cjs.map +0 -1
  520. package/dist/chunk-QSFTWIUH.cjs.map +0 -1
  521. package/dist/chunk-RA2VOQ46.js.map +0 -1
  522. package/dist/chunk-RLMU3NHQ.cjs.map +0 -1
  523. package/dist/chunk-RPVCMW64.cjs.map +0 -1
  524. package/dist/chunk-T45XK5GN.cjs.map +0 -1
  525. package/dist/chunk-TDDWWAM5.js.map +0 -1
  526. package/dist/chunk-TNYWQ6EQ.js.map +0 -1
  527. package/dist/chunk-VKXNCYLE.cjs.map +0 -1
  528. package/dist/chunk-W6RDAZJC.js.map +0 -1
  529. package/dist/chunk-WBVWV2V7.cjs.map +0 -1
  530. package/dist/chunk-XDJSFGXW.js.map +0 -1
  531. package/dist/chunk-XK5WHQ3O.cjs.map +0 -1
  532. package/dist/chunk-YD4SXA6K.js.map +0 -1
  533. package/dist/chunk-Z3NSPDTW.cjs.map +0 -1
  534. package/dist/chunk-ZLWCZV7R.js.map +0 -1
  535. package/dist/chunk-ZY4CVNNZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tabs/Tabs.context.ts","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsTab.tsx","../src/components/Tabs/TabsPanels.tsx","../src/components/Tabs/TabsPanel.tsx","../src/components/Tabs/Tabs.tsx"],"names":["createContext","useContext","useRef","useCallback","jsx","cn","useControllableState","useMemo"],"mappings":"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","file":"chunk-3Q4NSAEA.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TabsContextValue } from \"./Tabs.types\";\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nexport function useTabs(): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(\"Tabs compound components must be used within <Tabs>\");\n }\n return ctx;\n}\n","import { useCallback, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsListProps } from \"./Tabs.types\";\n\nexport function TabsList({ children, className }: TabsListProps) {\n const { variant } = useTabs();\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n const buttons = listRef.current?.querySelectorAll<HTMLButtonElement>(\n '[role=\"tab\"]:not([disabled])',\n );\n if (!buttons?.length) return;\n\n const items = Array.from(buttons);\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n items[next].focus();\n items[next].click();\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n items[prev].focus();\n items[prev].click();\n }\n }, []);\n\n return (\n <div\n data-react-fancy-tabs-list=\"\"\n ref={listRef}\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex\",\n variant === \"underline\" && \"gap-0 border-b border-zinc-200 dark:border-zinc-700\",\n variant === \"pills\" && \"gap-0 rounded-lg bg-zinc-100 p-1 dark:bg-zinc-800\",\n variant === \"boxed\" &&\n \"gap-0 rounded-lg bg-zinc-100 p-1 dark:bg-zinc-800\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nTabsList.displayName = \"TabsList\";\n","import { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsTabProps } from \"./Tabs.types\";\n\nexport function TabsTab({\n children,\n value,\n disabled = false,\n className,\n onClick,\n ...rest\n}: TabsTabProps) {\n const { activeTab, setActiveTab, variant } = useTabs();\n const isActive = activeTab === value;\n\n return (\n <button\n data-react-fancy-tabs-tab=\"\"\n type=\"button\"\n role=\"tab\"\n disabled={disabled}\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n onClick={(e) => { if (!disabled) setActiveTab(value); onClick?.(e); }}\n {...rest}\n className={cn(\n \"text-sm font-medium transition-colors\",\n disabled && \"cursor-not-allowed opacity-50\",\n variant === \"underline\" && [\n \"border-b-2 px-4 py-2.5\",\n isActive\n ? \"border-zinc-900 text-zinc-900 dark:border-white dark:text-white\"\n : \"border-transparent text-zinc-500 hover:border-zinc-300 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-300\",\n ],\n variant === \"pills\" && [\n \"rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-white text-zinc-900 shadow-sm dark:bg-zinc-900 dark:text-white\"\n : \"text-zinc-500 dark:text-zinc-400\",\n ],\n variant === \"boxed\" && [\n \"flex-1 rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-white text-zinc-900 shadow-sm dark:bg-zinc-900 dark:text-white\"\n : \"text-zinc-500 dark:text-zinc-400\",\n ],\n className,\n )}\n >\n {children}\n </button>\n );\n}\n\nTabsTab.displayName = \"TabsTab\";\n","import { cn } from \"../../utils/cn\";\nimport type { TabsPanelsProps } from \"./Tabs.types\";\n\nexport function TabsPanels({ children, className }: TabsPanelsProps) {\n return <div data-react-fancy-tabs-panels=\"\" className={cn(\"mt-4\", className)}>{children}</div>;\n}\n\nTabsPanels.displayName = \"TabsPanels\";\n","import { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsPanelProps } from \"./Tabs.types\";\n\nexport function TabsPanel({ children, value, className }: TabsPanelProps) {\n const { activeTab } = useTabs();\n\n if (activeTab !== value) return null;\n\n return (\n <div data-react-fancy-tabs-panel=\"\" role=\"tabpanel\" className={cn(\"fancy-fade-in\", className)}>\n {children}\n </div>\n );\n}\n\nTabsPanel.displayName = \"TabsPanel\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { TabsContext } from \"./Tabs.context\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsTab } from \"./TabsTab\";\nimport { TabsPanels } from \"./TabsPanels\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport type { TabsProps } from \"./Tabs.types\";\n\nfunction TabsRoot({\n children,\n defaultTab = \"\",\n activeTab: controlledTab,\n onTabChange,\n variant = \"underline\",\n className,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useControllableState(\n controlledTab,\n defaultTab,\n onTabChange,\n );\n\n const ctx = useMemo(\n () => ({ activeTab, setActiveTab, variant }),\n [activeTab, setActiveTab, variant],\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div data-react-fancy-tabs=\"\" className={cn(className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Tab: TabsTab,\n Panels: TabsPanels,\n Panel: TabsPanel,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/Tabs/Tabs.context.ts","../src/components/Tabs/TabsList.tsx","../src/components/Tabs/TabsTab.tsx","../src/components/Tabs/TabsPanels.tsx","../src/components/Tabs/TabsPanel.tsx","../src/components/Tabs/Tabs.tsx"],"names":["createContext","useContext","useRef","useCallback","jsx","cn","useControllableState","useMemo"],"mappings":"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","file":"chunk-CQ54H7DZ.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TabsContextValue } from \"./Tabs.types\";\n\nexport const TabsContext = createContext<TabsContextValue | null>(null);\n\nexport function useTabs(): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(\"Tabs compound components must be used within <Tabs>\");\n }\n return ctx;\n}\n","import { useCallback, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsListProps } from \"./Tabs.types\";\n\nexport function TabsList({ children, className }: TabsListProps) {\n const { variant } = useTabs();\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n const buttons = listRef.current?.querySelectorAll<HTMLButtonElement>(\n '[role=\"tab\"]:not([disabled])',\n );\n if (!buttons?.length) return;\n\n const items = Array.from(buttons);\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n items[next].focus();\n items[next].click();\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const prev = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n items[prev].focus();\n items[prev].click();\n }\n }, []);\n\n return (\n <div\n data-react-fancy-tabs-list=\"\"\n ref={listRef}\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex\",\n variant === \"underline\" && \"gap-0 border-b border-[color:var(--fancy-border,var(--color-zinc-200))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n variant === \"pills\" && \"gap-0 rounded-lg bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] p-1 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n variant === \"boxed\" &&\n \"gap-0 rounded-lg bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] p-1 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nTabsList.displayName = \"TabsList\";\n","import { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsTabProps } from \"./Tabs.types\";\n\nexport function TabsTab({\n children,\n value,\n disabled = false,\n className,\n onClick,\n ...rest\n}: TabsTabProps) {\n const { activeTab, setActiveTab, variant } = useTabs();\n const isActive = activeTab === value;\n\n return (\n <button\n data-react-fancy-tabs-tab=\"\"\n type=\"button\"\n role=\"tab\"\n disabled={disabled}\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n onClick={(e) => { if (!disabled) setActiveTab(value); onClick?.(e); }}\n {...rest}\n className={cn(\n \"text-sm font-medium transition-colors\",\n disabled && \"cursor-not-allowed opacity-50\",\n variant === \"underline\" && [\n \"border-b-2 px-4 py-2.5\",\n isActive\n ? \"border-zinc-900 text-zinc-900 dark:border-white dark:text-white\"\n : \"border-transparent text-[color:var(--fancy-text-muted,var(--color-zinc-500))] hover:border-zinc-300 hover:text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))] dark:hover:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n ],\n variant === \"pills\" && [\n \"rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 shadow-sm dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n ],\n variant === \"boxed\" && [\n \"flex-1 rounded-md px-4 py-1.5\",\n isActive\n ? \"bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 shadow-sm dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n ],\n className,\n )}\n >\n {children}\n </button>\n );\n}\n\nTabsTab.displayName = \"TabsTab\";\n","import { cn } from \"../../utils/cn\";\nimport type { TabsPanelsProps } from \"./Tabs.types\";\n\nexport function TabsPanels({ children, className }: TabsPanelsProps) {\n return <div data-react-fancy-tabs-panels=\"\" className={cn(\"mt-4\", className)}>{children}</div>;\n}\n\nTabsPanels.displayName = \"TabsPanels\";\n","import { cn } from \"../../utils/cn\";\nimport { useTabs } from \"./Tabs.context\";\nimport type { TabsPanelProps } from \"./Tabs.types\";\n\nexport function TabsPanel({ children, value, className }: TabsPanelProps) {\n const { activeTab } = useTabs();\n\n if (activeTab !== value) return null;\n\n return (\n <div data-react-fancy-tabs-panel=\"\" role=\"tabpanel\" className={cn(\"fancy-fade-in\", className)}>\n {children}\n </div>\n );\n}\n\nTabsPanel.displayName = \"TabsPanel\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { TabsContext } from \"./Tabs.context\";\nimport { TabsList } from \"./TabsList\";\nimport { TabsTab } from \"./TabsTab\";\nimport { TabsPanels } from \"./TabsPanels\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport type { TabsProps } from \"./Tabs.types\";\n\nfunction TabsRoot({\n children,\n defaultTab = \"\",\n activeTab: controlledTab,\n onTabChange,\n variant = \"underline\",\n className,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useControllableState(\n controlledTab,\n defaultTab,\n onTabChange,\n );\n\n const ctx = useMemo(\n () => ({ activeTab, setActiveTab, variant }),\n [activeTab, setActiveTab, variant],\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div data-react-fancy-tabs=\"\" className={cn(className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Tab: TabsTab,\n Panels: TabsPanels,\n Panel: TabsPanel,\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  import { VideoViewer } from './chunk-VOGI7GX3.js';
2
- import { PdfViewer } from './chunk-VB3QJ6QE.js';
3
- import { ImageViewer } from './chunk-ASS6EWNI.js';
4
- import { AudioViewer } from './chunk-UIJR26YW.js';
2
+ import { PdfViewer } from './chunk-HRH5BIYG.js';
3
+ import { ImageViewer } from './chunk-ICMLLZKZ.js';
4
+ import { AudioViewer } from './chunk-2OMA3O63.js';
5
5
  import { cn } from './chunk-MMW2JGKZ.js';
6
6
  import { forwardRef } from 'react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -119,12 +119,12 @@ function MediaFallback({ src, mime, label, className }) {
119
119
  {
120
120
  "data-react-fancy-media-fallback": "",
121
121
  className: cn(
122
- "flex flex-col items-center justify-center gap-2 rounded-lg border border-zinc-200 bg-white p-6 text-center dark:border-zinc-700 dark:bg-zinc-900",
122
+ "flex flex-col items-center justify-center gap-2 rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-6 text-center dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
123
123
  className
124
124
  ),
125
125
  children: [
126
126
  /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-zinc-700 dark:text-zinc-200", children: "No preview available" }),
127
- (name || mime) && /* @__PURE__ */ jsxs("span", { className: "max-w-full truncate text-xs text-zinc-500 dark:text-zinc-400", children: [
127
+ (name || mime) && /* @__PURE__ */ jsxs("span", { className: "max-w-full truncate text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]", children: [
128
128
  name,
129
129
  name && mime ? " \xB7 " : "",
130
130
  mime
@@ -226,5 +226,5 @@ var MediaViewer = forwardRef(
226
226
  MediaViewer.displayName = "MediaViewer";
227
227
 
228
228
  export { MediaViewer, resolveMediaType };
229
- //# sourceMappingURL=chunk-YOTCZUNW.js.map
230
- //# sourceMappingURL=chunk-YOTCZUNW.js.map
229
+ //# sourceMappingURL=chunk-D4QOV56U.js.map
230
+ //# sourceMappingURL=chunk-D4QOV56U.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/media-type.ts","../src/components/MediaViewer/MediaFallback.tsx","../src/components/MediaViewer/MediaViewer.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-YOTCZUNW.js","sourcesContent":["/**\n * Resolve what kind of media a source is, from its MIME type (preferred) or its\n * URL — a file extension, or the type embedded in a `data:` URI.\n *\n * Shared by `<MediaViewer>` to pick the right per-type viewer, and exported so\n * downstream packages (e.g. fancy-code's file viewer) can make the same\n * text-vs-media decision without re-deriving the table.\n */\n\nexport type MediaKind = \"image\" | \"video\" | \"audio\" | \"pdf\" | \"unknown\";\n\nexport interface ResolveMediaTypeInput {\n /** MIME type — preferred when known (e.g. `\"image/png\"`, `\"video/mp4\"`). */\n mime?: string | null;\n /**\n * Source URL — used to sniff the kind from a file extension, or from the type\n * embedded in a `data:` URI, when no `mime` is given. `http(s):` / `data:` /\n * `blob:` are all accepted (a bare `blob:` URL carries no type, so pass\n * `mime` alongside it).\n */\n src?: string | null;\n}\n\nconst IMAGE_EXTS = new Set([\n \"png\", \"jpg\", \"jpeg\", \"jfif\", \"pjpeg\", \"gif\", \"webp\", \"avif\", \"bmp\", \"ico\",\n \"cur\", \"svg\", \"svgz\", \"apng\", \"tif\", \"tiff\", \"heic\", \"heif\",\n]);\nconst VIDEO_EXTS = new Set([\n \"mp4\", \"m4v\", \"webm\", \"ogv\", \"ogm\", \"mov\", \"mkv\", \"avi\", \"wmv\", \"flv\", \"3gp\",\n \"3g2\", \"mpg\", \"mpeg\",\n]);\nconst AUDIO_EXTS = new Set([\n \"mp3\", \"wav\", \"wave\", \"ogg\", \"oga\", \"m4a\", \"m4b\", \"aac\", \"flac\", \"opus\",\n \"weba\", \"mid\", \"midi\", \"aiff\", \"aif\",\n]);\n\n/** Map a (possibly parameterized) MIME type to a media kind. */\nfunction mimeToKind(mime: string): MediaKind {\n // Strip any parameters (`; charset=…`) and normalize.\n const m = mime.toLowerCase().split(\";\")[0].trim();\n if (!m) return \"unknown\";\n if (m === \"application/pdf\" || m === \"application/x-pdf\") return \"pdf\";\n if (m.startsWith(\"image/\")) return \"image\";\n if (m.startsWith(\"video/\")) return \"video\";\n if (m.startsWith(\"audio/\")) return \"audio\";\n // `application/ogg` is audio in practice; treat it as such.\n if (m === \"application/ogg\") return \"audio\";\n return \"unknown\";\n}\n\n/** Map a bare file extension (no leading dot) to a media kind. */\nfunction extToKind(ext: string): MediaKind {\n const e = ext.toLowerCase();\n if (e === \"pdf\") return \"pdf\";\n if (IMAGE_EXTS.has(e)) return \"image\";\n if (VIDEO_EXTS.has(e)) return \"video\";\n if (AUDIO_EXTS.has(e)) return \"audio\";\n return \"unknown\";\n}\n\n/** Pull the file extension out of a URL, ignoring its query/hash. */\nfunction extFromSrc(src: string): string | null {\n const clean = src.split(/[?#]/, 1)[0];\n const lastSeg = clean.split(\"/\").pop() ?? \"\";\n const dot = lastSeg.lastIndexOf(\".\");\n if (dot <= 0 || dot === lastSeg.length - 1) return null;\n return lastSeg.slice(dot + 1);\n}\n\n/** Extract the MIME type embedded in a `data:` URI, if present. */\nfunction mimeFromDataUri(src: string): string | null {\n if (!/^data:/i.test(src)) return null;\n const header = src.slice(5).split(\",\", 1)[0]; // text after `data:`, before the comma\n const mt = header.split(\";\")[0].trim();\n return mt || null;\n}\n\n/**\n * Resolve a {@link MediaKind} from a MIME type and/or source URL. MIME wins\n * when it's conclusive; otherwise the `src` is sniffed (a `data:` URI's\n * embedded type first, then the file extension). Returns `\"unknown\"` when\n * nothing matches — callers treat that as \"not previewable media\" (e.g. text).\n */\nexport function resolveMediaType({ mime, src }: ResolveMediaTypeInput): MediaKind {\n if (mime) {\n const k = mimeToKind(mime);\n if (k !== \"unknown\") return k;\n }\n if (src) {\n const dataMime = mimeFromDataUri(src);\n if (dataMime) {\n const k = mimeToKind(dataMime);\n if (k !== \"unknown\") return k;\n }\n const ext = extFromSrc(src);\n if (ext) return extToKind(ext);\n }\n return \"unknown\";\n}\n","import { cn } from \"../../utils/cn\";\n\ninterface MediaFallbackProps {\n src: string;\n mime?: string;\n label?: string;\n className?: string;\n}\n\n/** Filename guess from a URL, ignoring query/hash and `data:`/`blob:` URLs. */\nfunction basename(src: string): string | null {\n if (/^(data|blob):/i.test(src)) return null;\n const seg = src.split(/[?#]/, 1)[0].split(\"/\").pop();\n return seg ? decodeURIComponent(seg) : null;\n}\n\n/**\n * Shown by `<MediaViewer>` when a source isn't a previewable media type — a\n * small themed card naming the file and offering a download.\n */\nexport function MediaFallback({ src, mime, label, className }: MediaFallbackProps) {\n const name = label || basename(src);\n return (\n <div\n data-react-fancy-media-fallback=\"\"\n className={cn(\n \"flex flex-col items-center justify-center gap-2 rounded-lg border border-zinc-200 bg-white p-6 text-center dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n <span className=\"text-sm font-medium text-zinc-700 dark:text-zinc-200\">\n No preview available\n </span>\n {(name || mime) && (\n <span className=\"max-w-full truncate text-xs text-zinc-500 dark:text-zinc-400\">\n {name}\n {name && mime ? \" · \" : \"\"}\n {mime}\n </span>\n )}\n <a\n href={src}\n download={name ?? undefined}\n className=\"text-xs font-medium text-blue-600 hover:underline dark:text-blue-400\"\n >\n Download\n </a>\n </div>\n );\n}\n","import { forwardRef } from \"react\";\nimport { resolveMediaType } from \"../../utils/media-type\";\nimport { ImageViewer } from \"../ImageViewer\";\nimport { VideoViewer } from \"../VideoViewer\";\nimport { AudioViewer } from \"../AudioViewer\";\nimport { PdfViewer } from \"../PdfViewer\";\nimport { MediaFallback } from \"./MediaFallback\";\nimport type { MediaViewerProps } from \"./MediaViewer.types\";\n\n/**\n * Renders the right viewer for a media file, picked from its `mime` (preferred)\n * or `src` — image, video, audio, or PDF — and a download fallback for anything\n * else. SVG renders through `<ImageViewer>`. The single entry point for showing\n * a file from a tree/workspace when you don't know its type ahead of time.\n *\n * ```tsx\n * <MediaViewer src={url} mime=\"image/png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const MediaViewer = forwardRef<HTMLDivElement, MediaViewerProps>(\n (\n {\n src,\n mime,\n alt,\n kind,\n imageProps,\n videoProps,\n audioProps,\n pdfProps,\n fallback,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const resolved = kind ?? resolveMediaType({ mime, src });\n\n switch (resolved) {\n case \"image\":\n return (\n <ImageViewer\n ref={ref}\n src={src}\n alt={alt ?? \"\"}\n onError={onError}\n className={className}\n style={style}\n {...imageProps}\n />\n );\n case \"video\":\n return (\n <VideoViewer\n ref={ref}\n src={src}\n onError={onError}\n className={className}\n style={style}\n {...videoProps}\n />\n );\n case \"audio\":\n return (\n <AudioViewer\n ref={ref}\n src={src}\n title={alt}\n onError={onError}\n className={className}\n style={style}\n {...audioProps}\n />\n );\n case \"pdf\":\n return (\n <PdfViewer\n ref={ref}\n src={src}\n title={alt}\n className={className}\n style={style}\n {...pdfProps}\n />\n );\n default:\n return (\n <div\n ref={ref}\n data-react-fancy-media-viewer=\"\"\n className={className}\n style={style}\n >\n {fallback ?? <MediaFallback src={src} mime={mime} label={alt} />}\n </div>\n );\n }\n },\n);\n\nMediaViewer.displayName = \"MediaViewer\";\n"]}
1
+ {"version":3,"sources":["../src/utils/media-type.ts","../src/components/MediaViewer/MediaFallback.tsx","../src/components/MediaViewer/MediaViewer.tsx"],"names":["jsx"],"mappings":";;;;;;;;;AAuBA,IAAM,UAAA,uBAAiB,GAAA,CAAI;AAAA,EACzB,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,OAAA;AAAA,EAAS,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EACrE,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ;AACvD,CAAC,CAAA;AACD,IAAM,UAAA,uBAAiB,GAAA,CAAI;AAAA,EACzB,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EACvE,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO;AAChB,CAAC,CAAA;AACD,IAAM,UAAA,uBAAiB,GAAA,CAAI;AAAA,EACzB,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EACjE,MAAA;AAAA,EAAQ,KAAA;AAAA,EAAO,MAAA;AAAA,EAAQ,MAAA;AAAA,EAAQ;AACjC,CAAC,CAAA;AAGD,SAAS,WAAW,IAAA,EAAyB;AAE3C,EAAA,MAAM,CAAA,GAAI,KAAK,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAK;AAChD,EAAA,IAAI,CAAC,GAAG,OAAO,SAAA;AACf,EAAA,IAAI,CAAA,KAAM,iBAAA,IAAqB,CAAA,KAAM,mBAAA,EAAqB,OAAO,KAAA;AACjE,EAAA,IAAI,CAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAO,OAAA;AACnC,EAAA,IAAI,CAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAO,OAAA;AACnC,EAAA,IAAI,CAAA,CAAE,UAAA,CAAW,QAAQ,CAAA,EAAG,OAAO,OAAA;AAEnC,EAAA,IAAI,CAAA,KAAM,mBAAmB,OAAO,OAAA;AACpC,EAAA,OAAO,SAAA;AACT;AAGA,SAAS,UAAU,GAAA,EAAwB;AACzC,EAAA,MAAM,CAAA,GAAI,IAAI,WAAA,EAAY;AAC1B,EAAA,IAAI,CAAA,KAAM,OAAO,OAAO,KAAA;AACxB,EAAA,IAAI,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,EAAG,OAAO,OAAA;AAC9B,EAAA,IAAI,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,EAAG,OAAO,OAAA;AAC9B,EAAA,IAAI,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,EAAG,OAAO,OAAA;AAC9B,EAAA,OAAO,SAAA;AACT;AAGA,SAAS,WAAW,GAAA,EAA4B;AAC9C,EAAA,MAAM,QAAQ,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,CAAC,EAAE,CAAC,CAAA;AACpC,EAAA,MAAM,UAAU,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAAE,KAAI,IAAK,EAAA;AAC1C,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,WAAA,CAAY,GAAG,CAAA;AACnC,EAAA,IAAI,OAAO,CAAA,IAAK,GAAA,KAAQ,OAAA,CAAQ,MAAA,GAAS,GAAG,OAAO,IAAA;AACnD,EAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAC9B;AAGA,SAAS,gBAAgB,GAAA,EAA4B;AACnD,EAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,GAAG,GAAG,OAAO,IAAA;AACjC,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,CAAC,EAAE,KAAA,CAAM,GAAA,EAAK,CAAC,CAAA,CAAE,CAAC,CAAA;AAC3C,EAAA,MAAM,KAAK,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EAAE,IAAA,EAAK;AACrC,EAAA,OAAO,EAAA,IAAM,IAAA;AACf;AAQO,SAAS,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAA,EAAI,EAAqC;AAChF,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,MAAM,CAAA,GAAI,WAAW,IAAI,CAAA;AACzB,IAAA,IAAI,CAAA,KAAM,WAAW,OAAO,CAAA;AAAA,EAC9B;AACA,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAM,QAAA,GAAW,gBAAgB,GAAG,CAAA;AACpC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,CAAA,GAAI,WAAW,QAAQ,CAAA;AAC7B,MAAA,IAAI,CAAA,KAAM,WAAW,OAAO,CAAA;AAAA,IAC9B;AACA,IAAA,MAAM,GAAA,GAAM,WAAW,GAAG,CAAA;AAC1B,IAAA,IAAI,GAAA,EAAK,OAAO,SAAA,CAAU,GAAG,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,SAAA;AACT;ACxFA,SAAS,SAAS,GAAA,EAA4B;AAC5C,EAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAA,EAAG,OAAO,IAAA;AACvC,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,EAAI;AACnD,EAAA,OAAO,GAAA,GAAM,kBAAA,CAAmB,GAAG,CAAA,GAAI,IAAA;AACzC;AAMO,SAAS,cAAc,EAAE,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,WAAU,EAAuB;AACjF,EAAA,MAAM,IAAA,GAAO,KAAA,IAAS,QAAA,CAAS,GAAG,CAAA;AAClC,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,iCAAA,EAAgC,EAAA;AAAA,MAChC,SAAA,EAAW,EAAA;AAAA,QACT,kUAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sDAAA,EAAuD,QAAA,EAAA,sBAAA,EAEvE,CAAA;AAAA,QAAA,CACE,IAAA,IAAQ,IAAA,qBACR,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,6JAAA,EACb,QAAA,EAAA;AAAA,UAAA,IAAA;AAAA,UACA,IAAA,IAAQ,OAAO,QAAA,GAAQ,EAAA;AAAA,UACvB;AAAA,SAAA,EACH,CAAA;AAAA,wBAEF,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,GAAA;AAAA,YACN,UAAU,IAAA,IAAQ,MAAA;AAAA,YAClB,SAAA,EAAU,sEAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,GACF;AAEJ;AC9BO,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CACE;AAAA,IACE,GAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,WAAW,IAAA,IAAQ,gBAAA,CAAiB,EAAE,IAAA,EAAM,KAAK,CAAA;AAEvD,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,OAAA;AACH,QAAA,uBACEA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,GAAA;AAAA,YACA,KAAK,GAAA,IAAO,EAAA;AAAA,YACZ,OAAA;AAAA,YACA,SAAA;AAAA,YACA,KAAA;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,MAEJ,KAAK,OAAA;AACH,QAAA,uBACEA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,GAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAA;AAAA,YACA,KAAA;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,MAEJ,KAAK,OAAA;AACH,QAAA,uBACEA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,GAAA;AAAA,YACA,KAAA,EAAO,GAAA;AAAA,YACP,OAAA;AAAA,YACA,SAAA;AAAA,YACA,KAAA;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,MAEJ,KAAK,KAAA;AACH,QAAA,uBACEA,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,GAAA;AAAA,YACA,KAAA,EAAO,GAAA;AAAA,YACP,SAAA;AAAA,YACA,KAAA;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,MAEJ;AACE,QAAA,uBACEA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,+BAAA,EAA8B,EAAA;AAAA,YAC9B,SAAA;AAAA,YACA,KAAA;AAAA,YAEC,sCAAYA,GAAAA,CAAC,iBAAc,GAAA,EAAU,IAAA,EAAY,OAAO,GAAA,EAAK;AAAA;AAAA,SAChE;AAAA;AAEN,EACF;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-D4QOV56U.js","sourcesContent":["/**\n * Resolve what kind of media a source is, from its MIME type (preferred) or its\n * URL — a file extension, or the type embedded in a `data:` URI.\n *\n * Shared by `<MediaViewer>` to pick the right per-type viewer, and exported so\n * downstream packages (e.g. fancy-code's file viewer) can make the same\n * text-vs-media decision without re-deriving the table.\n */\n\nexport type MediaKind = \"image\" | \"video\" | \"audio\" | \"pdf\" | \"unknown\";\n\nexport interface ResolveMediaTypeInput {\n /** MIME type — preferred when known (e.g. `\"image/png\"`, `\"video/mp4\"`). */\n mime?: string | null;\n /**\n * Source URL — used to sniff the kind from a file extension, or from the type\n * embedded in a `data:` URI, when no `mime` is given. `http(s):` / `data:` /\n * `blob:` are all accepted (a bare `blob:` URL carries no type, so pass\n * `mime` alongside it).\n */\n src?: string | null;\n}\n\nconst IMAGE_EXTS = new Set([\n \"png\", \"jpg\", \"jpeg\", \"jfif\", \"pjpeg\", \"gif\", \"webp\", \"avif\", \"bmp\", \"ico\",\n \"cur\", \"svg\", \"svgz\", \"apng\", \"tif\", \"tiff\", \"heic\", \"heif\",\n]);\nconst VIDEO_EXTS = new Set([\n \"mp4\", \"m4v\", \"webm\", \"ogv\", \"ogm\", \"mov\", \"mkv\", \"avi\", \"wmv\", \"flv\", \"3gp\",\n \"3g2\", \"mpg\", \"mpeg\",\n]);\nconst AUDIO_EXTS = new Set([\n \"mp3\", \"wav\", \"wave\", \"ogg\", \"oga\", \"m4a\", \"m4b\", \"aac\", \"flac\", \"opus\",\n \"weba\", \"mid\", \"midi\", \"aiff\", \"aif\",\n]);\n\n/** Map a (possibly parameterized) MIME type to a media kind. */\nfunction mimeToKind(mime: string): MediaKind {\n // Strip any parameters (`; charset=…`) and normalize.\n const m = mime.toLowerCase().split(\";\")[0].trim();\n if (!m) return \"unknown\";\n if (m === \"application/pdf\" || m === \"application/x-pdf\") return \"pdf\";\n if (m.startsWith(\"image/\")) return \"image\";\n if (m.startsWith(\"video/\")) return \"video\";\n if (m.startsWith(\"audio/\")) return \"audio\";\n // `application/ogg` is audio in practice; treat it as such.\n if (m === \"application/ogg\") return \"audio\";\n return \"unknown\";\n}\n\n/** Map a bare file extension (no leading dot) to a media kind. */\nfunction extToKind(ext: string): MediaKind {\n const e = ext.toLowerCase();\n if (e === \"pdf\") return \"pdf\";\n if (IMAGE_EXTS.has(e)) return \"image\";\n if (VIDEO_EXTS.has(e)) return \"video\";\n if (AUDIO_EXTS.has(e)) return \"audio\";\n return \"unknown\";\n}\n\n/** Pull the file extension out of a URL, ignoring its query/hash. */\nfunction extFromSrc(src: string): string | null {\n const clean = src.split(/[?#]/, 1)[0];\n const lastSeg = clean.split(\"/\").pop() ?? \"\";\n const dot = lastSeg.lastIndexOf(\".\");\n if (dot <= 0 || dot === lastSeg.length - 1) return null;\n return lastSeg.slice(dot + 1);\n}\n\n/** Extract the MIME type embedded in a `data:` URI, if present. */\nfunction mimeFromDataUri(src: string): string | null {\n if (!/^data:/i.test(src)) return null;\n const header = src.slice(5).split(\",\", 1)[0]; // text after `data:`, before the comma\n const mt = header.split(\";\")[0].trim();\n return mt || null;\n}\n\n/**\n * Resolve a {@link MediaKind} from a MIME type and/or source URL. MIME wins\n * when it's conclusive; otherwise the `src` is sniffed (a `data:` URI's\n * embedded type first, then the file extension). Returns `\"unknown\"` when\n * nothing matches — callers treat that as \"not previewable media\" (e.g. text).\n */\nexport function resolveMediaType({ mime, src }: ResolveMediaTypeInput): MediaKind {\n if (mime) {\n const k = mimeToKind(mime);\n if (k !== \"unknown\") return k;\n }\n if (src) {\n const dataMime = mimeFromDataUri(src);\n if (dataMime) {\n const k = mimeToKind(dataMime);\n if (k !== \"unknown\") return k;\n }\n const ext = extFromSrc(src);\n if (ext) return extToKind(ext);\n }\n return \"unknown\";\n}\n","import { cn } from \"../../utils/cn\";\n\ninterface MediaFallbackProps {\n src: string;\n mime?: string;\n label?: string;\n className?: string;\n}\n\n/** Filename guess from a URL, ignoring query/hash and `data:`/`blob:` URLs. */\nfunction basename(src: string): string | null {\n if (/^(data|blob):/i.test(src)) return null;\n const seg = src.split(/[?#]/, 1)[0].split(\"/\").pop();\n return seg ? decodeURIComponent(seg) : null;\n}\n\n/**\n * Shown by `<MediaViewer>` when a source isn't a previewable media type — a\n * small themed card naming the file and offering a download.\n */\nexport function MediaFallback({ src, mime, label, className }: MediaFallbackProps) {\n const name = label || basename(src);\n return (\n <div\n data-react-fancy-media-fallback=\"\"\n className={cn(\n \"flex flex-col items-center justify-center gap-2 rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-6 text-center dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n className,\n )}\n >\n <span className=\"text-sm font-medium text-zinc-700 dark:text-zinc-200\">\n No preview available\n </span>\n {(name || mime) && (\n <span className=\"max-w-full truncate text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {name}\n {name && mime ? \" · \" : \"\"}\n {mime}\n </span>\n )}\n <a\n href={src}\n download={name ?? undefined}\n className=\"text-xs font-medium text-blue-600 hover:underline dark:text-blue-400\"\n >\n Download\n </a>\n </div>\n );\n}\n","import { forwardRef } from \"react\";\nimport { resolveMediaType } from \"../../utils/media-type\";\nimport { ImageViewer } from \"../ImageViewer\";\nimport { VideoViewer } from \"../VideoViewer\";\nimport { AudioViewer } from \"../AudioViewer\";\nimport { PdfViewer } from \"../PdfViewer\";\nimport { MediaFallback } from \"./MediaFallback\";\nimport type { MediaViewerProps } from \"./MediaViewer.types\";\n\n/**\n * Renders the right viewer for a media file, picked from its `mime` (preferred)\n * or `src` — image, video, audio, or PDF — and a download fallback for anything\n * else. SVG renders through `<ImageViewer>`. The single entry point for showing\n * a file from a tree/workspace when you don't know its type ahead of time.\n *\n * ```tsx\n * <MediaViewer src={url} mime=\"image/png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const MediaViewer = forwardRef<HTMLDivElement, MediaViewerProps>(\n (\n {\n src,\n mime,\n alt,\n kind,\n imageProps,\n videoProps,\n audioProps,\n pdfProps,\n fallback,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const resolved = kind ?? resolveMediaType({ mime, src });\n\n switch (resolved) {\n case \"image\":\n return (\n <ImageViewer\n ref={ref}\n src={src}\n alt={alt ?? \"\"}\n onError={onError}\n className={className}\n style={style}\n {...imageProps}\n />\n );\n case \"video\":\n return (\n <VideoViewer\n ref={ref}\n src={src}\n onError={onError}\n className={className}\n style={style}\n {...videoProps}\n />\n );\n case \"audio\":\n return (\n <AudioViewer\n ref={ref}\n src={src}\n title={alt}\n onError={onError}\n className={className}\n style={style}\n {...audioProps}\n />\n );\n case \"pdf\":\n return (\n <PdfViewer\n ref={ref}\n src={src}\n title={alt}\n className={className}\n style={style}\n {...pdfProps}\n />\n );\n default:\n return (\n <div\n ref={ref}\n data-react-fancy-media-viewer=\"\"\n className={className}\n style={style}\n >\n {fallback ?? <MediaFallback src={src} mime={mime} label={alt} />}\n </div>\n );\n }\n },\n);\n\nMediaViewer.displayName = \"MediaViewer\";\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkXKDW6B7X_cjs = require('./chunk-XKDW6B7X.cjs');
4
- var chunkBBOIFV27_cjs = require('./chunk-BBOIFV27.cjs');
5
- var chunkYLGTDBB2_cjs = require('./chunk-YLGTDBB2.cjs');
3
+ var chunkP53432AK_cjs = require('./chunk-P53432AK.cjs');
4
+ var chunkQF7CD4JH_cjs = require('./chunk-QF7CD4JH.cjs');
5
+ var chunkO3F6DYWR_cjs = require('./chunk-O3F6DYWR.cjs');
6
6
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
7
7
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
8
8
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -48,7 +48,7 @@ function CheckboxGroup({
48
48
  lg: "h-5 w-5",
49
49
  xl: "h-6 w-6"
50
50
  }[size];
51
- const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkXKDW6B7X_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkYLGTDBB2_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
51
+ const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkP53432AK_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkO3F6DYWR_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
52
52
  "div",
53
53
  {
54
54
  ...rest,
@@ -62,7 +62,7 @@ function CheckboxGroup({
62
62
  className
63
63
  ),
64
64
  children: list.map((option, index) => {
65
- const resolved = chunkYLGTDBB2_cjs.resolveOption(option);
65
+ const resolved = chunkO3F6DYWR_cjs.resolveOption(option);
66
66
  const optionId = `${groupId}-${index}`;
67
67
  const isChecked = value.includes(resolved.value);
68
68
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2", children: [
@@ -79,8 +79,8 @@ function CheckboxGroup({
79
79
  onChange: () => handleToggle(resolved.value),
80
80
  className: chunkZU5Q77OT_cjs.cn(
81
81
  sizeClasses,
82
- "cursor-pointer rounded border border-zinc-300 bg-white text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-[#1e1e24]",
83
- chunkYLGTDBB2_cjs.dirtyRingClasses(dirty),
82
+ "cursor-pointer rounded border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-[color:var(--fancy-input,var(--color-white))] text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)]",
83
+ chunkO3F6DYWR_cjs.dirtyRingClasses(dirty),
84
84
  error && "border-red-500"
85
85
  )
86
86
  }
@@ -97,7 +97,7 @@ function CheckboxGroup({
97
97
  children: resolved.label
98
98
  }
99
99
  ),
100
- resolved.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-zinc-500 dark:text-zinc-400", children: resolved.description })
100
+ resolved.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]", children: resolved.description })
101
101
  ] })
102
102
  ] }, optionId);
103
103
  })
@@ -105,7 +105,7 @@ function CheckboxGroup({
105
105
  );
106
106
  if (label || error || description) {
107
107
  return /* @__PURE__ */ jsxRuntime.jsx(
108
- chunkBBOIFV27_cjs.Field,
108
+ chunkQF7CD4JH_cjs.Field,
109
109
  {
110
110
  label,
111
111
  labelHidden,
@@ -122,5 +122,5 @@ function CheckboxGroup({
122
122
  CheckboxGroup.displayName = "CheckboxGroup";
123
123
 
124
124
  exports.CheckboxGroup = CheckboxGroup;
125
- //# sourceMappingURL=chunk-BZDXX6E3.cjs.map
126
- //# sourceMappingURL=chunk-BZDXX6E3.cjs.map
125
+ //# sourceMappingURL=chunk-DJB3N4G3.cjs.map
126
+ //# sourceMappingURL=chunk-DJB3N4G3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-BZDXX6E3.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-zinc-300 bg-white text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-[#1e1e24]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-DJB3N4G3.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-[color:var(--fancy-input,var(--color-white))] text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
@@ -159,7 +159,7 @@ var CarouselSteps = forwardRef(
159
159
  "flex items-center gap-1.5 text-sm font-medium transition-colors",
160
160
  isActive && "text-blue-600 dark:text-blue-400",
161
161
  isCompleted && "text-green-600 dark:text-green-400",
162
- !isActive && !isCompleted && "text-zinc-400 dark:text-zinc-500"
162
+ !isActive && !isCompleted && "text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]"
163
163
  ),
164
164
  "aria-label": name || `Step ${i + 1}`,
165
165
  "aria-current": isActive ? "step" : void 0,
@@ -171,7 +171,7 @@ var CarouselSteps = forwardRef(
171
171
  "flex h-6 w-6 items-center justify-center rounded-full text-xs",
172
172
  isActive && "bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300",
173
173
  isCompleted && "bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300",
174
- !isActive && !isCompleted && "bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-500"
174
+ !isActive && !isCompleted && "bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-zinc-500"
175
175
  ),
176
176
  children: isCompleted ? "\u2713" : i + 1
177
177
  }
@@ -324,5 +324,5 @@ var Carousel = Object.assign(CarouselRoot, {
324
324
  });
325
325
 
326
326
  export { Carousel, CarouselControls, CarouselPanels, CarouselSlide, CarouselSteps, useCarousel };
327
- //# sourceMappingURL=chunk-BMTTSBHF.js.map
328
- //# sourceMappingURL=chunk-BMTTSBHF.js.map
327
+ //# sourceMappingURL=chunk-DJYG7DXS.js.map
328
+ //# sourceMappingURL=chunk-DJYG7DXS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Carousel/Carousel.context.ts","../src/components/Carousel/CarouselPanels.tsx","../src/components/Carousel/CarouselSlide.tsx","../src/components/Carousel/CarouselControls.tsx","../src/components/Carousel/CarouselSteps.tsx","../src/components/Carousel/Carousel.tsx"],"names":["forwardRef","jsx","jsxs","useState","useRef","useEffect"],"mappings":"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","file":"chunk-BMTTSBHF.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { CarouselContextValue } from \"./Carousel.types\";\n\nexport const CarouselContext = createContext<CarouselContextValue | null>(null);\nCarouselContext.displayName = \"CarouselContext\";\n\nexport function useCarousel(): CarouselContextValue {\n const ctx = useContext(CarouselContext);\n if (!ctx) {\n throw new Error(\"Carousel compound components must be used within <Carousel>\");\n }\n return ctx;\n}\n","import { Children, forwardRef, isValidElement, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselPanelsProps, CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselPanels = forwardRef<HTMLDivElement, CarouselPanelsProps>(\n ({ children, className, transition = \"none\" }, ref) => {\n const { activeIndex, registerSlides, registerSlideNames } = useCarousel();\n const slides = Children.toArray(children);\n const prevIndexRef = useRef(activeIndex);\n const [transitionState, setTransitionState] = useState<\"enter\" | \"idle\">(\"idle\");\n\n // Register slide count\n useEffect(() => {\n registerSlides(slides.length);\n }, [slides.length, registerSlides]);\n\n // Register slide names from the `name` prop on each Carousel.Slide\n useEffect(() => {\n const names = slides.map((slide) => {\n if (isValidElement<CarouselSlideProps>(slide) && slide.props.name) {\n return slide.props.name;\n }\n return \"\";\n });\n registerSlideNames(names);\n }, [slides.length, registerSlideNames]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Handle fade transition when activeIndex changes\n useEffect(() => {\n if (transition !== \"fade\") {\n return;\n }\n\n if (prevIndexRef.current !== activeIndex) {\n setTransitionState(\"enter\");\n const timer = setTimeout(() => {\n setTransitionState(\"idle\");\n }, 300);\n prevIndexRef.current = activeIndex;\n return () => clearTimeout(timer);\n }\n }, [activeIndex, transition]);\n\n if (transition === \"fade\") {\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n <div\n key={activeIndex}\n className={cn(\n transitionState === \"enter\" && \"fancy-fade-in\",\n )}\n style={{\n animationDuration: transitionState === \"enter\" ? \"300ms\" : undefined,\n }}\n >\n {slides[activeIndex]}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n {slides[activeIndex]}\n </div>\n );\n },\n);\n\nCarouselPanels.displayName = \"CarouselPanels\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselSlide = forwardRef<HTMLDivElement, CarouselSlideProps>(\n ({ children, className, name: _name }, ref) => {\n return (\n <div ref={ref} data-react-fancy-carousel-slide=\"\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n );\n },\n);\n\nCarouselSlide.displayName = \"CarouselSlide\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselControlsProps } from \"./Carousel.types\";\n\nexport const CarouselControls = forwardRef<HTMLDivElement, CarouselControlsProps>(\n (\n {\n className,\n prevLabel,\n nextLabel,\n finishLabel,\n },\n ref,\n ) => {\n const { prev, next, activeIndex, totalSlides, variant, loop, onFinish, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n const isFirst = activeIndex === 0;\n const isLast = activeIndex === totalSlides - 1;\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={isFirst}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"Back\"}\n </button>\n {isLast ? (\n <button\n type=\"button\"\n onClick={onFinish}\n className=\"rounded-lg border border-blue-500 bg-blue-500 px-3 py-1 text-sm text-white hover:bg-blue-600\"\n >\n {finishLabel ?? \"Finish\"}\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={next}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"Next\"}\n </button>\n )}\n </div>\n );\n }\n\n // Directional variant (default)\n const prevDisabled = !loop && isFirst;\n const nextDisabled = !loop && isLast;\n\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={prevDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"\\u2190\"}\n </button>\n <button\n type=\"button\"\n onClick={next}\n disabled={nextDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"\\u2192\"}\n </button>\n </div>\n );\n },\n);\n\nCarouselControls.displayName = \"CarouselControls\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselStepsProps } from \"./Carousel.types\";\n\nexport const CarouselSteps = forwardRef<HTMLDivElement, CarouselStepsProps>(\n ({ className }, ref) => {\n const { activeIndex, totalSlides, goTo, variant, slideNames, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-3\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => {\n const isActive = i === activeIndex;\n const isCompleted = i < activeIndex;\n const name = slideNames[i];\n\n return (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-medium transition-colors\",\n isActive && \"text-blue-600 dark:text-blue-400\",\n isCompleted && \"text-green-600 dark:text-green-400\",\n !isActive && !isCompleted && \"text-zinc-400 dark:text-zinc-500\",\n )}\n aria-label={name || `Step ${i + 1}`}\n aria-current={isActive ? \"step\" : undefined}\n >\n <span\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded-full text-xs\",\n isActive && \"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300\",\n isCompleted && \"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300\",\n !isActive && !isCompleted && \"bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-500\",\n )}\n >\n {isCompleted ? \"\\u2713\" : i + 1}\n </span>\n {name && <span>{name}</span>}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Directional variant: dot indicators (default)\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-1.5\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"h-2 w-2 rounded-full transition-colors\",\n i === activeIndex ? \"bg-zinc-800 dark:bg-white\" : \"bg-zinc-300 dark:bg-zinc-600\",\n )}\n aria-label={`Go to slide ${i + 1}`}\n />\n ))}\n </div>\n );\n },\n);\n\nCarouselSteps.displayName = \"CarouselSteps\";\n","import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { CarouselContext } from \"./Carousel.context\";\nimport { CarouselPanels } from \"./CarouselPanels\";\nimport { CarouselSlide } from \"./CarouselSlide\";\nimport { CarouselControls } from \"./CarouselControls\";\nimport { CarouselSteps } from \"./CarouselSteps\";\nimport type { CarouselProps, CarouselContextValue } from \"./Carousel.types\";\n\nconst CarouselRoot = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n children,\n defaultIndex = 0,\n activeIndex: controlledIndex,\n onIndexChange,\n className,\n autoPlay = false,\n interval = 5000,\n loop = false,\n variant = \"directional\",\n headless = false,\n onFinish,\n },\n ref,\n ) => {\n const [activeIndex, setActiveIndex] = useControllableState<number>(\n controlledIndex,\n defaultIndex,\n onIndexChange,\n );\n const [totalSlides, setTotalSlides] = useState(0);\n const [slideNames, setSlideNames] = useState<string[]>([]);\n const [isPaused, setIsPaused] = useState(false);\n const onFinishRef = useRef(onFinish);\n onFinishRef.current = onFinish;\n\n const registerSlides = useCallback((count: number) => {\n setTotalSlides(count);\n }, []);\n\n const registerSlideNames = useCallback((names: string[]) => {\n setSlideNames(names);\n }, []);\n\n const next = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const prev = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i <= 0) {\n return loop ? totalSlides - 1 : i;\n }\n return i - 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const goTo = useCallback(\n (index: number) => setActiveIndex(index),\n [setActiveIndex],\n );\n\n // AutoPlay\n useEffect(() => {\n if (!autoPlay || isPaused || totalSlides <= 1) {\n return;\n }\n\n const id = setInterval(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, interval);\n\n return () => clearInterval(id);\n }, [autoPlay, interval, isPaused, totalSlides, loop, setActiveIndex]);\n\n const ctx = useMemo<CarouselContextValue>(\n () => ({\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n onFinish: onFinishRef.current,\n headless,\n }),\n [\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n headless,\n ],\n );\n\n const handleMouseEnter = useCallback(() => {\n if (autoPlay) {\n setIsPaused(true);\n }\n }, [autoPlay]);\n\n const handleMouseLeave = useCallback(() => {\n if (autoPlay) {\n setIsPaused(false);\n }\n }, [autoPlay]);\n\n return (\n <CarouselContext.Provider value={ctx}>\n <div\n data-react-fancy-carousel=\"\"\n ref={ref}\n className={cn(\"relative\", className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\n\nCarouselRoot.displayName = \"Carousel\";\n\nexport const Carousel = Object.assign(CarouselRoot, {\n Panels: CarouselPanels,\n Slide: CarouselSlide,\n Controls: CarouselControls,\n Steps: CarouselSteps,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/Carousel/Carousel.context.ts","../src/components/Carousel/CarouselPanels.tsx","../src/components/Carousel/CarouselSlide.tsx","../src/components/Carousel/CarouselControls.tsx","../src/components/Carousel/CarouselSteps.tsx","../src/components/Carousel/Carousel.tsx"],"names":["forwardRef","jsx","jsxs","useState","useRef","useEffect"],"mappings":"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","file":"chunk-DJYG7DXS.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { CarouselContextValue } from \"./Carousel.types\";\n\nexport const CarouselContext = createContext<CarouselContextValue | null>(null);\nCarouselContext.displayName = \"CarouselContext\";\n\nexport function useCarousel(): CarouselContextValue {\n const ctx = useContext(CarouselContext);\n if (!ctx) {\n throw new Error(\"Carousel compound components must be used within <Carousel>\");\n }\n return ctx;\n}\n","import { Children, forwardRef, isValidElement, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselPanelsProps, CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselPanels = forwardRef<HTMLDivElement, CarouselPanelsProps>(\n ({ children, className, transition = \"none\" }, ref) => {\n const { activeIndex, registerSlides, registerSlideNames } = useCarousel();\n const slides = Children.toArray(children);\n const prevIndexRef = useRef(activeIndex);\n const [transitionState, setTransitionState] = useState<\"enter\" | \"idle\">(\"idle\");\n\n // Register slide count\n useEffect(() => {\n registerSlides(slides.length);\n }, [slides.length, registerSlides]);\n\n // Register slide names from the `name` prop on each Carousel.Slide\n useEffect(() => {\n const names = slides.map((slide) => {\n if (isValidElement<CarouselSlideProps>(slide) && slide.props.name) {\n return slide.props.name;\n }\n return \"\";\n });\n registerSlideNames(names);\n }, [slides.length, registerSlideNames]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Handle fade transition when activeIndex changes\n useEffect(() => {\n if (transition !== \"fade\") {\n return;\n }\n\n if (prevIndexRef.current !== activeIndex) {\n setTransitionState(\"enter\");\n const timer = setTimeout(() => {\n setTransitionState(\"idle\");\n }, 300);\n prevIndexRef.current = activeIndex;\n return () => clearTimeout(timer);\n }\n }, [activeIndex, transition]);\n\n if (transition === \"fade\") {\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n <div\n key={activeIndex}\n className={cn(\n transitionState === \"enter\" && \"fancy-fade-in\",\n )}\n style={{\n animationDuration: transitionState === \"enter\" ? \"300ms\" : undefined,\n }}\n >\n {slides[activeIndex]}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n {slides[activeIndex]}\n </div>\n );\n },\n);\n\nCarouselPanels.displayName = \"CarouselPanels\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselSlide = forwardRef<HTMLDivElement, CarouselSlideProps>(\n ({ children, className, name: _name }, ref) => {\n return (\n <div ref={ref} data-react-fancy-carousel-slide=\"\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n );\n },\n);\n\nCarouselSlide.displayName = \"CarouselSlide\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselControlsProps } from \"./Carousel.types\";\n\nexport const CarouselControls = forwardRef<HTMLDivElement, CarouselControlsProps>(\n (\n {\n className,\n prevLabel,\n nextLabel,\n finishLabel,\n },\n ref,\n ) => {\n const { prev, next, activeIndex, totalSlides, variant, loop, onFinish, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n const isFirst = activeIndex === 0;\n const isLast = activeIndex === totalSlides - 1;\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={isFirst}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"Back\"}\n </button>\n {isLast ? (\n <button\n type=\"button\"\n onClick={onFinish}\n className=\"rounded-lg border border-blue-500 bg-blue-500 px-3 py-1 text-sm text-white hover:bg-blue-600\"\n >\n {finishLabel ?? \"Finish\"}\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={next}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"Next\"}\n </button>\n )}\n </div>\n );\n }\n\n // Directional variant (default)\n const prevDisabled = !loop && isFirst;\n const nextDisabled = !loop && isLast;\n\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={prevDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"\\u2190\"}\n </button>\n <button\n type=\"button\"\n onClick={next}\n disabled={nextDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"\\u2192\"}\n </button>\n </div>\n );\n },\n);\n\nCarouselControls.displayName = \"CarouselControls\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselStepsProps } from \"./Carousel.types\";\n\nexport const CarouselSteps = forwardRef<HTMLDivElement, CarouselStepsProps>(\n ({ className }, ref) => {\n const { activeIndex, totalSlides, goTo, variant, slideNames, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-3\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => {\n const isActive = i === activeIndex;\n const isCompleted = i < activeIndex;\n const name = slideNames[i];\n\n return (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-medium transition-colors\",\n isActive && \"text-blue-600 dark:text-blue-400\",\n isCompleted && \"text-green-600 dark:text-green-400\",\n !isActive && !isCompleted && \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n )}\n aria-label={name || `Step ${i + 1}`}\n aria-current={isActive ? \"step\" : undefined}\n >\n <span\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded-full text-xs\",\n isActive && \"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300\",\n isCompleted && \"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300\",\n !isActive && !isCompleted && \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-zinc-500\",\n )}\n >\n {isCompleted ? \"\\u2713\" : i + 1}\n </span>\n {name && <span>{name}</span>}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Directional variant: dot indicators (default)\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-1.5\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"h-2 w-2 rounded-full transition-colors\",\n i === activeIndex ? \"bg-zinc-800 dark:bg-white\" : \"bg-zinc-300 dark:bg-zinc-600\",\n )}\n aria-label={`Go to slide ${i + 1}`}\n />\n ))}\n </div>\n );\n },\n);\n\nCarouselSteps.displayName = \"CarouselSteps\";\n","import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { CarouselContext } from \"./Carousel.context\";\nimport { CarouselPanels } from \"./CarouselPanels\";\nimport { CarouselSlide } from \"./CarouselSlide\";\nimport { CarouselControls } from \"./CarouselControls\";\nimport { CarouselSteps } from \"./CarouselSteps\";\nimport type { CarouselProps, CarouselContextValue } from \"./Carousel.types\";\n\nconst CarouselRoot = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n children,\n defaultIndex = 0,\n activeIndex: controlledIndex,\n onIndexChange,\n className,\n autoPlay = false,\n interval = 5000,\n loop = false,\n variant = \"directional\",\n headless = false,\n onFinish,\n },\n ref,\n ) => {\n const [activeIndex, setActiveIndex] = useControllableState<number>(\n controlledIndex,\n defaultIndex,\n onIndexChange,\n );\n const [totalSlides, setTotalSlides] = useState(0);\n const [slideNames, setSlideNames] = useState<string[]>([]);\n const [isPaused, setIsPaused] = useState(false);\n const onFinishRef = useRef(onFinish);\n onFinishRef.current = onFinish;\n\n const registerSlides = useCallback((count: number) => {\n setTotalSlides(count);\n }, []);\n\n const registerSlideNames = useCallback((names: string[]) => {\n setSlideNames(names);\n }, []);\n\n const next = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const prev = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i <= 0) {\n return loop ? totalSlides - 1 : i;\n }\n return i - 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const goTo = useCallback(\n (index: number) => setActiveIndex(index),\n [setActiveIndex],\n );\n\n // AutoPlay\n useEffect(() => {\n if (!autoPlay || isPaused || totalSlides <= 1) {\n return;\n }\n\n const id = setInterval(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, interval);\n\n return () => clearInterval(id);\n }, [autoPlay, interval, isPaused, totalSlides, loop, setActiveIndex]);\n\n const ctx = useMemo<CarouselContextValue>(\n () => ({\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n onFinish: onFinishRef.current,\n headless,\n }),\n [\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n headless,\n ],\n );\n\n const handleMouseEnter = useCallback(() => {\n if (autoPlay) {\n setIsPaused(true);\n }\n }, [autoPlay]);\n\n const handleMouseLeave = useCallback(() => {\n if (autoPlay) {\n setIsPaused(false);\n }\n }, [autoPlay]);\n\n return (\n <CarouselContext.Provider value={ctx}>\n <div\n data-react-fancy-carousel=\"\"\n ref={ref}\n className={cn(\"relative\", className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\n\nCarouselRoot.displayName = \"Carousel\";\n\nexport const Carousel = Object.assign(CarouselRoot, {\n Panels: CarouselPanels,\n Slide: CarouselSlide,\n Controls: CarouselControls,\n Steps: CarouselSteps,\n});\n"]}
@@ -25,7 +25,7 @@ function CommandInput({
25
25
  className
26
26
  }) {
27
27
  const { query, setQuery, listId } = useCommand();
28
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-react-fancy-command-input": "", className: "flex items-center border-b border-zinc-200 px-4 dark:border-zinc-700", children: [
28
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-react-fancy-command-input": "", className: "flex items-center border-b border-[color:var(--fancy-border,var(--color-zinc-200))] px-4 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]", children: [
29
29
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { size: 16, className: "shrink-0 text-zinc-400" }),
30
30
  /* @__PURE__ */ jsxRuntime.jsx(
31
31
  "input",
@@ -89,7 +89,7 @@ function CommandItem({
89
89
  },
90
90
  className: chunkZU5Q77OT_cjs.cn(
91
91
  "flex w-full items-center rounded-lg px-3 py-2 text-left text-sm transition-colors",
92
- "text-zinc-700 hover:bg-zinc-100 data-[active]:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:data-[active]:bg-zinc-800",
92
+ "text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] data-[active]:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:data-[active]:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
93
93
  className
94
94
  ),
95
95
  onClick: () => {
@@ -121,7 +121,7 @@ function CommandEmpty({
121
121
  {
122
122
  "data-react-fancy-command-empty": "",
123
123
  className: chunkZU5Q77OT_cjs.cn(
124
- "py-6 text-center text-sm text-zinc-500 dark:text-zinc-400",
124
+ "py-6 text-center text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]",
125
125
  className
126
126
  ),
127
127
  children
@@ -241,7 +241,7 @@ function CommandRoot({
241
241
  },
242
242
  "data-react-fancy-command": "",
243
243
  className: chunkZU5Q77OT_cjs.cn(
244
- "relative w-full max-w-lg overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-2xl dark:border-zinc-700 dark:bg-zinc-900",
244
+ "relative w-full max-w-lg overflow-hidden rounded-2xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] shadow-2xl dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
245
245
  animClass,
246
246
  className
247
247
  ),
@@ -260,5 +260,5 @@ var Command = Object.assign(CommandRoot, {
260
260
 
261
261
  exports.Command = Command;
262
262
  exports.useCommand = useCommand;
263
- //# sourceMappingURL=chunk-WBVWV2V7.cjs.map
264
- //# sourceMappingURL=chunk-WBVWV2V7.cjs.map
263
+ //# sourceMappingURL=chunk-DN244T6G.cjs.map
264
+ //# sourceMappingURL=chunk-DN244T6G.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Command/Command.context.ts","../src/components/Command/CommandInput.tsx","../src/components/Command/CommandList.tsx","../src/components/Command/CommandItem.tsx","../src/components/Command/CommandGroup.tsx","../src/components/Command/CommandEmpty.tsx","../src/components/Command/Command.tsx"],"names":["createContext","useContext","jsxs","jsx","Search","cn","useId","useControllableState","useState","useRef","useCallback","useEscapeKey","useFocusTrap","useEffect","useLayoutEffect","useAnimation","useMemo","Portal"],"mappings":"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","file":"chunk-DN244T6G.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { CommandContextValue } from \"./Command.types\";\n\nexport const CommandContext = createContext<CommandContextValue | null>(null);\n\nexport function useCommand(): CommandContextValue {\n const ctx = useContext(CommandContext);\n if (!ctx) {\n throw new Error(\n \"Command compound components must be used within <Command>\",\n );\n }\n return ctx;\n}\n","import { Search } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCommand } from \"./Command.context\";\nimport type { CommandInputProps } from \"./Command.types\";\n\nexport function CommandInput({\n placeholder = \"Type a command or search...\",\n className,\n}: CommandInputProps) {\n const { query, setQuery, listId } = useCommand();\n\n return (\n <div data-react-fancy-command-input=\"\" className=\"flex items-center border-b border-[color:var(--fancy-border,var(--color-zinc-200))] px-4 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\">\n <Search size={16} className=\"shrink-0 text-zinc-400\" />\n <input\n type=\"text\"\n // A combobox: focus stays here while the arrows move the active option,\n // which Command announces through aria-activedescendant.\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={placeholder}\n className={cn(\n \"flex-1 bg-transparent px-3 py-3 text-sm outline-none placeholder:text-zinc-400\",\n className,\n )}\n autoFocus\n />\n </div>\n );\n}\n\nCommandInput.displayName = \"CommandInput\";\n","import { cn } from \"../../utils/cn\";\nimport { useCommand } from \"./Command.context\";\nimport type { CommandListProps } from \"./Command.types\";\n\nexport function CommandList({ children, className }: CommandListProps) {\n const { listId } = useCommand();\n\n return (\n <div\n id={listId}\n data-react-fancy-command-list=\"\"\n role=\"listbox\"\n className={cn(\"max-h-72 overflow-y-auto p-2\", className)}\n >\n {children}\n </div>\n );\n}\n\nCommandList.displayName = \"CommandList\";\n","import { useId } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCommand } from \"./Command.context\";\nimport type { CommandItemProps } from \"./Command.types\";\n\nexport function CommandItem({\n children,\n value,\n onSelect,\n className,\n}: CommandItemProps) {\n const { query, close, shouldFilter, setActiveIndex } = useCommand();\n // Called before the filter's early return, so the hook order never changes.\n const id = useId();\n\n // Filter by query — unless the caller filters for itself (`shouldFilter={false}`).\n const text = value ?? (typeof children === \"string\" ? children : \"\");\n if (shouldFilter && query && !text.toLowerCase().includes(query.toLowerCase())) {\n return null;\n }\n\n return (\n <button\n id={id}\n data-react-fancy-command-item=\"\"\n type=\"button\"\n role=\"option\"\n // Marked active by Command itself (aria-selected + data-active), since an\n // item cannot know its own position among the rendered options.\n aria-selected={false}\n // Keyboard focus stays in the input; the items are reached with the arrows.\n tabIndex={-1}\n onMouseEnter={(e) => {\n const options = e.currentTarget\n .closest(\"[data-react-fancy-command]\")\n ?.querySelectorAll('[role=\"option\"]');\n if (options) setActiveIndex(Array.from(options).indexOf(e.currentTarget));\n }}\n className={cn(\n \"flex w-full items-center rounded-lg px-3 py-2 text-left text-sm transition-colors\",\n \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] data-[active]:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:data-[active]:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n className,\n )}\n onClick={() => {\n onSelect?.();\n close();\n }}\n >\n {children}\n </button>\n );\n}\n\nCommandItem.displayName = \"CommandItem\";\n","import { cn } from \"../../utils/cn\";\nimport type { CommandGroupProps } from \"./Command.types\";\n\nexport function CommandGroup({\n children,\n heading,\n className,\n}: CommandGroupProps) {\n return (\n <div data-react-fancy-command-group=\"\" role=\"group\" className={cn(\"py-1\", className)}>\n {heading && (\n <div className=\"px-3 py-1.5 text-xs font-medium text-zinc-400\">\n {heading}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nCommandGroup.displayName = \"CommandGroup\";\n","import { cn } from \"../../utils/cn\";\nimport type { CommandEmptyProps } from \"./Command.types\";\n\nexport function CommandEmpty({\n children = \"No results found.\",\n className,\n}: CommandEmptyProps) {\n return (\n <div\n data-react-fancy-command-empty=\"\"\n className={cn(\n \"py-6 text-center text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nCommandEmpty.displayName = \"CommandEmpty\";\n","import {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { CommandContext } from \"./Command.context\";\nimport { CommandInput } from \"./CommandInput\";\nimport { CommandList } from \"./CommandList\";\nimport { CommandItem } from \"./CommandItem\";\nimport { CommandGroup } from \"./CommandGroup\";\nimport { CommandEmpty } from \"./CommandEmpty\";\nimport { useFocusTrap } from \"../../hooks/use-focus-trap\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport type { CommandProps } from \"./Command.types\";\n\nfunction CommandRoot({\n children,\n open,\n onClose,\n className,\n shouldFilter = true,\n query: controlledQuery,\n onQueryChange,\n}: CommandProps) {\n const [query, setQuery] = useControllableState(controlledQuery, \"\", onQueryChange);\n const [activeIndex, setActiveIndex] = useState(-1);\n const panelRef = useRef<HTMLDivElement>(null);\n const listId = useId();\n\n const close = useCallback(() => {\n onClose();\n setQuery(\"\");\n setActiveIndex(-1);\n }, [onClose]);\n\n useEscapeKey(close, open);\n useFocusTrap(panelRef, open);\n\n // Cmd+K global shortcut is handled by the consumer\n useEffect(() => {\n if (open) {\n const original = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = original;\n };\n }\n }, [open]);\n\n /*\n * Keyboard navigation, as a combobox: the arrows move the ACTIVE item while\n * focus stays in the input (announced through aria-activedescendant), and\n * Enter picks the active item — or the first visible one when none is active.\n *\n * Focus used to move onto the items, and Enter was handled nowhere, so typing\n * a query and pressing Enter did nothing: only a focused item took Enter, as a\n * native click. Found by Genie 2's real-window test.\n */\n useEffect(() => {\n if (!open) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const items = panelRef.current?.querySelectorAll<HTMLElement>(\n '[role=\"option\"]',\n );\n if (!items?.length) return;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex(activeIndex < items.length - 1 ? activeIndex + 1 : 0);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex(activeIndex > 0 ? activeIndex - 1 : items.length - 1);\n } else if (e.key === \"Enter\") {\n // A focused item takes Enter natively, as a click; picking here as well\n // would select it twice.\n if ((e.target as HTMLElement | null)?.getAttribute(\"role\") === \"option\") return;\n const pick = items[activeIndex] ?? items[0];\n e.preventDefault();\n pick.click();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [open, activeIndex]);\n\n /*\n * Mark the active item and point the input at it. Done on the DOM after each\n * render because an item cannot know its own index — that is its position\n * among the options currently rendered, which filtering changes.\n */\n useLayoutEffect(() => {\n const panel = panelRef.current;\n if (!panel) return;\n\n const items = Array.from(panel.querySelectorAll<HTMLElement>('[role=\"option\"]'));\n const active = items[activeIndex];\n items.forEach((item) => {\n const on = item === active;\n item.setAttribute(\"aria-selected\", on ? \"true\" : \"false\");\n if (on) item.setAttribute(\"data-active\", \"\");\n else item.removeAttribute(\"data-active\");\n });\n\n const input = panel.querySelector<HTMLInputElement>(\"[data-react-fancy-command-input] input\");\n if (active?.id) input?.setAttribute(\"aria-activedescendant\", active.id);\n else input?.removeAttribute(\"aria-activedescendant\");\n active?.scrollIntoView?.({ block: \"nearest\" });\n });\n\n // A new query is a new list: nothing in it is active yet, so Enter picks the first match.\n const changeQuery = useCallback(\n (next: string) => {\n setQuery(next);\n setActiveIndex(-1);\n },\n [setQuery],\n );\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: \"fancy-slide-up\",\n exitClass: \"fancy-fade-out\",\n });\n\n const ctx = useMemo(\n () => ({\n open,\n close,\n query,\n setQuery: changeQuery,\n activeIndex,\n setActiveIndex,\n shouldFilter,\n listId,\n }),\n [open, close, query, changeQuery, activeIndex, shouldFilter, listId],\n );\n\n if (!mounted) return null;\n\n return (\n <CommandContext.Provider value={ctx}>\n <Portal>\n <div className=\"fixed inset-0 z-50 flex items-start justify-center pt-[20vh]\">\n <div\n className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\"\n onClick={close}\n aria-hidden=\"true\"\n />\n <div\n ref={(node) => {\n panelRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current =\n node;\n }}\n data-react-fancy-command=\"\"\n className={cn(\n \"relative w-full max-w-lg overflow-hidden rounded-2xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] shadow-2xl dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n animClass,\n className,\n )}\n >\n {children}\n </div>\n </div>\n </Portal>\n </CommandContext.Provider>\n );\n}\n\nexport const Command = Object.assign(CommandRoot, {\n Input: CommandInput,\n List: CommandList,\n Item: CommandItem,\n Group: CommandGroup,\n Empty: CommandEmpty,\n});\n"]}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkTH7VP4CL_cjs = require('./chunk-TH7VP4CL.cjs');
4
- var chunkIYVV4RD3_cjs = require('./chunk-IYVV4RD3.cjs');
5
- var chunk2KZINS6D_cjs = require('./chunk-2KZINS6D.cjs');
6
- var chunkQW66UHWO_cjs = require('./chunk-QW66UHWO.cjs');
4
+ var chunkXM3W5ETT_cjs = require('./chunk-XM3W5ETT.cjs');
5
+ var chunk7QENPLOP_cjs = require('./chunk-7QENPLOP.cjs');
6
+ var chunkKE4XURZD_cjs = require('./chunk-KE4XURZD.cjs');
7
7
  var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
8
8
  var react = require('react');
9
9
  var jsxRuntime = require('react/jsx-runtime');
@@ -121,12 +121,12 @@ function MediaFallback({ src, mime, label, className }) {
121
121
  {
122
122
  "data-react-fancy-media-fallback": "",
123
123
  className: chunkZU5Q77OT_cjs.cn(
124
- "flex flex-col items-center justify-center gap-2 rounded-lg border border-zinc-200 bg-white p-6 text-center dark:border-zinc-700 dark:bg-zinc-900",
124
+ "flex flex-col items-center justify-center gap-2 rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-6 text-center dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
125
125
  className
126
126
  ),
127
127
  children: [
128
128
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-zinc-700 dark:text-zinc-200", children: "No preview available" }),
129
- (name || mime) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "max-w-full truncate text-xs text-zinc-500 dark:text-zinc-400", children: [
129
+ (name || mime) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "max-w-full truncate text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]", children: [
130
130
  name,
131
131
  name && mime ? " \xB7 " : "",
132
132
  mime
@@ -163,7 +163,7 @@ var MediaViewer = react.forwardRef(
163
163
  switch (resolved) {
164
164
  case "image":
165
165
  return /* @__PURE__ */ jsxRuntime.jsx(
166
- chunk2KZINS6D_cjs.ImageViewer,
166
+ chunk7QENPLOP_cjs.ImageViewer,
167
167
  {
168
168
  ref,
169
169
  src,
@@ -188,7 +188,7 @@ var MediaViewer = react.forwardRef(
188
188
  );
189
189
  case "audio":
190
190
  return /* @__PURE__ */ jsxRuntime.jsx(
191
- chunkQW66UHWO_cjs.AudioViewer,
191
+ chunkKE4XURZD_cjs.AudioViewer,
192
192
  {
193
193
  ref,
194
194
  src,
@@ -201,7 +201,7 @@ var MediaViewer = react.forwardRef(
201
201
  );
202
202
  case "pdf":
203
203
  return /* @__PURE__ */ jsxRuntime.jsx(
204
- chunkIYVV4RD3_cjs.PdfViewer,
204
+ chunkXM3W5ETT_cjs.PdfViewer,
205
205
  {
206
206
  ref,
207
207
  src,
@@ -229,5 +229,5 @@ MediaViewer.displayName = "MediaViewer";
229
229
 
230
230
  exports.MediaViewer = MediaViewer;
231
231
  exports.resolveMediaType = resolveMediaType;
232
- //# sourceMappingURL=chunk-NCXH5O4I.cjs.map
233
- //# sourceMappingURL=chunk-NCXH5O4I.cjs.map
232
+ //# sourceMappingURL=chunk-E4TRDGSU.cjs.map
233
+ //# sourceMappingURL=chunk-E4TRDGSU.cjs.map