@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,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');
@@ -46,8 +46,8 @@ function RadioGroup({
46
46
  lg: "h-5 w-5",
47
47
  xl: "h-6 w-6"
48
48
  }[size];
49
- const selectedIndex = list.map(chunkYLGTDBB2_cjs.resolveOption).findIndex((o) => o.value === value);
50
- const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkXKDW6B7X_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkYLGTDBB2_cjs.resolveOption).find((o) => o.value === value)?.label }) : /* @__PURE__ */ jsxRuntime.jsx(
49
+ const selectedIndex = list.map(chunkO3F6DYWR_cjs.resolveOption).findIndex((o) => o.value === value);
50
+ const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkP53432AK_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkO3F6DYWR_cjs.resolveOption).find((o) => o.value === value)?.label }) : /* @__PURE__ */ jsxRuntime.jsx(
51
51
  "div",
52
52
  {
53
53
  ...rest,
@@ -63,7 +63,7 @@ function RadioGroup({
63
63
  className
64
64
  ),
65
65
  children: list.map((option, index) => {
66
- const resolved = chunkYLGTDBB2_cjs.resolveOption(option);
66
+ const resolved = chunkO3F6DYWR_cjs.resolveOption(option);
67
67
  const optionId = `${groupId}-${index}`;
68
68
  const isSelected = value === resolved.value;
69
69
  const shouldAutoFocus = interactive && (selectedIndex === -1 ? index === 0 : isSelected);
@@ -81,8 +81,8 @@ function RadioGroup({
81
81
  onChange: () => setValue(resolved.value),
82
82
  className: chunkZU5Q77OT_cjs.cn(
83
83
  sizeClasses,
84
- "cursor-pointer 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]",
85
- chunkYLGTDBB2_cjs.dirtyRingClasses(dirty),
84
+ "cursor-pointer 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)]",
85
+ chunkO3F6DYWR_cjs.dirtyRingClasses(dirty),
86
86
  error && "border-red-500"
87
87
  )
88
88
  }
@@ -99,7 +99,7 @@ function RadioGroup({
99
99
  children: resolved.label
100
100
  }
101
101
  ),
102
- resolved.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-zinc-500 dark:text-zinc-400", children: resolved.description })
102
+ 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 })
103
103
  ] })
104
104
  ] }, optionId);
105
105
  })
@@ -107,7 +107,7 @@ function RadioGroup({
107
107
  );
108
108
  if (label || error || description) {
109
109
  return /* @__PURE__ */ jsxRuntime.jsx(
110
- chunkBBOIFV27_cjs.Field,
110
+ chunkQF7CD4JH_cjs.Field,
111
111
  {
112
112
  label,
113
113
  labelHidden,
@@ -125,5 +125,5 @@ function RadioGroup({
125
125
  RadioGroup.displayName = "RadioGroup";
126
126
 
127
127
  exports.RadioGroup = RadioGroup;
128
- //# sourceMappingURL=chunk-FPZYPD3N.cjs.map
129
- //# sourceMappingURL=chunk-FPZYPD3N.cjs.map
128
+ //# sourceMappingURL=chunk-H7ELUIF6.cjs.map
129
+ //# sourceMappingURL=chunk-H7ELUIF6.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/RadioGroup/RadioGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","resolveOption","jsx","DisplayValue","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-FPZYPD3N.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 { RadioGroupProps } from \"./RadioGroup.types\";\n\nexport function RadioGroup<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}: RadioGroupProps<V>) {\n const groupId = useId();\n const radioName = name ?? groupId;\n // Same reason as MultiSwitch: a `<label>` cannot name a div[role=\"radiogroup\"].\n // This one did not even pass `htmlFor`, so its label named nothing at all.\n const labelId = label ? `${groupId}-label` : undefined;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue as V,\n onValueChange,\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 selectedIndex = list.map(resolveOption).findIndex((o) => o.value === value);\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list.map(resolveOption).find((o) => o.value === value)?.label}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-radio-group=\"\"\n role=\"radiogroup\"\n aria-labelledby={labelId}\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 isSelected = value === resolved.value;\n // Focus the selected radio on entering edit (or the first if none).\n const shouldAutoFocus =\n interactive && (selectedIndex === -1 ? index === 0 : isSelected);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"radio\"\n name={radioName}\n value={String(resolved.value)}\n checked={isSelected}\n disabled={disabled || resolved.disabled}\n autoFocus={shouldAutoFocus}\n onChange={() => setValue(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer 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 labelId={labelId}\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\nRadioGroup.displayName = \"RadioGroup\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/RadioGroup/RadioGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","resolveOption","jsx","DisplayValue","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-H7ELUIF6.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 { RadioGroupProps } from \"./RadioGroup.types\";\n\nexport function RadioGroup<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}: RadioGroupProps<V>) {\n const groupId = useId();\n const radioName = name ?? groupId;\n // Same reason as MultiSwitch: a `<label>` cannot name a div[role=\"radiogroup\"].\n // This one did not even pass `htmlFor`, so its label named nothing at all.\n const labelId = label ? `${groupId}-label` : undefined;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue as V,\n onValueChange,\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 selectedIndex = list.map(resolveOption).findIndex((o) => o.value === value);\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list.map(resolveOption).find((o) => o.value === value)?.label}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-radio-group=\"\"\n role=\"radiogroup\"\n aria-labelledby={labelId}\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 isSelected = value === resolved.value;\n // Focus the selected radio on entering edit (or the first if none).\n const shouldAutoFocus =\n interactive && (selectedIndex === -1 ? index === 0 : isSelected);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"radio\"\n name={radioName}\n value={String(resolved.value)}\n checked={isSelected}\n disabled={disabled || resolved.disabled}\n autoFocus={shouldAutoFocus}\n onChange={() => setValue(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer 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 labelId={labelId}\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\nRadioGroup.displayName = \"RadioGroup\";\n"]}
@@ -1,4 +1,4 @@
1
- import { FauxClient } from './chunk-XZUGREDI.js';
1
+ import { FauxClient } from './chunk-GVMWJ4NI.js';
2
2
  import { cn } from './chunk-MMW2JGKZ.js';
3
3
  import { forwardRef } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -24,7 +24,7 @@ var PdfViewer = forwardRef(
24
24
  className: "h-full w-full border-0"
25
25
  }
26
26
  ),
27
- /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-2 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400", children: [
27
+ /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-2 p-4 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))]", children: [
28
28
  /* @__PURE__ */ jsx("span", { children: "This browser can't display the PDF inline." }),
29
29
  /* @__PURE__ */ jsx(
30
30
  "a",
@@ -52,5 +52,5 @@ var PdfViewer = forwardRef(
52
52
  PdfViewer.displayName = "PdfViewer";
53
53
 
54
54
  export { PdfViewer };
55
- //# sourceMappingURL=chunk-VB3QJ6QE.js.map
56
- //# sourceMappingURL=chunk-VB3QJ6QE.js.map
55
+ //# sourceMappingURL=chunk-HRH5BIYG.js.map
56
+ //# sourceMappingURL=chunk-HRH5BIYG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/PdfViewer/PdfViewer.tsx"],"names":[],"mappings":";;;;;AAeO,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,EAAE,GAAA,EAAK,KAAA,GAAQ,cAAA,EAAgB,SAAA,EAAW,KAAA,EAAO,KAAA,GAAQ,KAAA,EAAO,UAAA,EAAW,EAAG,GAAA,KAAQ;AACrF,IAAA,MAAM,MAAA,mBACJ,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,6BAAA,EAA4B,EAAA;AAAA,QAC5B,SAAA,EAAW,EAAA;AAAA,UACT,8FAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QAEA,+BAAC,QAAA,EAAA,EAAO,IAAA,EAAM,KAAK,IAAA,EAAK,iBAAA,EAAkB,WAAU,eAAA,EAClD,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iHAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAK,QAAA,EAAA,4CAAA,EAA+C,CAAA;AAAA,4BACrD,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,GAAA;AAAA,gBACN,QAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAU,8DAAA;AAAA,gBACX,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF;AAAA,SAAA,EACF;AAAA;AAAA,KACF;AAGF,IAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AAMnB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKE,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,KAAK,KAAA,EAAO,QAAA,EAAU,EAAE,IAAA,EAAM,OAAM,EAAG,IAAA,EAAI,IAAA,EAAE,GAAG,YAC3E,QAAA,EAAA,MAAA,EACH;AAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA","file":"chunk-VB3QJ6QE.js","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { FauxClient } from \"../FauxClient\";\nimport type { PdfViewerProps } from \"./PdfViewer.types\";\n\n/**\n * A standalone PDF viewer — embeds the document via the browser's native PDF\n * plugin (`<object>`), falling back to an `<iframe>`, then to a download link.\n * Fills its container, so give it a height (a `min-h` floor is built in).\n * Renders for PDF sources inside `<MediaViewer>`.\n *\n * ```tsx\n * <PdfViewer src=\"/report.pdf\" title=\"report.pdf\" style={{ height: 600 }} />\n * ```\n */\nexport const PdfViewer = forwardRef<HTMLDivElement, PdfViewerProps>(\n ({ src, title = \"PDF document\", className, style, frame = false, frameProps }, ref) => {\n const viewer = (\n <div\n ref={ref}\n data-react-fancy-pdf-viewer=\"\"\n className={cn(\n \"relative h-full min-h-[20rem] w-full overflow-hidden rounded-md bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <object data={src} type=\"application/pdf\" className=\"h-full w-full\">\n <iframe\n src={src}\n title={title}\n className=\"h-full w-full border-0\"\n />\n <div className=\"flex h-full flex-col items-center justify-center gap-2 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\">\n <span>This browser can&apos;t display the PDF inline.</span>\n <a\n href={src}\n download\n className=\"font-medium text-blue-600 hover:underline dark:text-blue-400\"\n >\n Download PDF\n </a>\n </div>\n </object>\n </div>\n );\n\n if (!frame) return viewer;\n\n // Full screen from the frame; zoom stays on the browser's PDF toolbar. A\n // plugin fits the page to its box, so scaling the box only re-fits it, and\n // the `#zoom=` open parameter is relative to the page's real size, which a\n // frame cannot know -- its bar would jump by uneven steps.\n return (\n // The browser variant, because the plugin swallows the pointer: hover over\n // the PDF never reaches the frame, so controls over it could not be\n // revealed, and its top-right corner is the PDF toolbar's. In the address\n // bar they are reachable and collide with nothing.\n <FauxClient variant=\"browser\" url={title} controls={{ zoom: false }} fill {...frameProps}>\n {viewer}\n </FauxClient>\n );\n },\n);\n\nPdfViewer.displayName = \"PdfViewer\";\n"]}
1
+ {"version":3,"sources":["../src/components/PdfViewer/PdfViewer.tsx"],"names":[],"mappings":";;;;;AAeO,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,EAAE,GAAA,EAAK,KAAA,GAAQ,cAAA,EAAgB,SAAA,EAAW,KAAA,EAAO,KAAA,GAAQ,KAAA,EAAO,UAAA,EAAW,EAAG,GAAA,KAAQ;AACrF,IAAA,MAAM,MAAA,mBACJ,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,6BAAA,EAA4B,EAAA;AAAA,QAC5B,SAAA,EAAW,EAAA;AAAA,UACT,8FAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QAEA,+BAAC,QAAA,EAAA,EAAO,IAAA,EAAM,KAAK,IAAA,EAAK,iBAAA,EAAkB,WAAU,eAAA,EAClD,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gNAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAK,QAAA,EAAA,4CAAA,EAA+C,CAAA;AAAA,4BACrD,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,GAAA;AAAA,gBACN,QAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAU,8DAAA;AAAA,gBACX,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF;AAAA,SAAA,EACF;AAAA;AAAA,KACF;AAGF,IAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AAMnB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKE,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,KAAK,KAAA,EAAO,QAAA,EAAU,EAAE,IAAA,EAAM,OAAM,EAAG,IAAA,EAAI,IAAA,EAAE,GAAG,YAC3E,QAAA,EAAA,MAAA,EACH;AAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA","file":"chunk-HRH5BIYG.js","sourcesContent":["import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { FauxClient } from \"../FauxClient\";\nimport type { PdfViewerProps } from \"./PdfViewer.types\";\n\n/**\n * A standalone PDF viewer — embeds the document via the browser's native PDF\n * plugin (`<object>`), falling back to an `<iframe>`, then to a download link.\n * Fills its container, so give it a height (a `min-h` floor is built in).\n * Renders for PDF sources inside `<MediaViewer>`.\n *\n * ```tsx\n * <PdfViewer src=\"/report.pdf\" title=\"report.pdf\" style={{ height: 600 }} />\n * ```\n */\nexport const PdfViewer = forwardRef<HTMLDivElement, PdfViewerProps>(\n ({ src, title = \"PDF document\", className, style, frame = false, frameProps }, ref) => {\n const viewer = (\n <div\n ref={ref}\n data-react-fancy-pdf-viewer=\"\"\n className={cn(\n \"relative h-full min-h-[20rem] w-full overflow-hidden rounded-md bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <object data={src} type=\"application/pdf\" className=\"h-full w-full\">\n <iframe\n src={src}\n title={title}\n className=\"h-full w-full border-0\"\n />\n <div className=\"flex h-full flex-col items-center justify-center gap-2 p-4 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 <span>This browser can&apos;t display the PDF inline.</span>\n <a\n href={src}\n download\n className=\"font-medium text-blue-600 hover:underline dark:text-blue-400\"\n >\n Download PDF\n </a>\n </div>\n </object>\n </div>\n );\n\n if (!frame) return viewer;\n\n // Full screen from the frame; zoom stays on the browser's PDF toolbar. A\n // plugin fits the page to its box, so scaling the box only re-fits it, and\n // the `#zoom=` open parameter is relative to the page's real size, which a\n // frame cannot know -- its bar would jump by uneven steps.\n return (\n // The browser variant, because the plugin swallows the pointer: hover over\n // the PDF never reaches the frame, so controls over it could not be\n // revealed, and its top-right corner is the PDF toolbar's. In the address\n // bar they are reachable and collide with nothing.\n <FauxClient variant=\"browser\" url={title} controls={{ zoom: false }} fill {...frameProps}>\n {viewer}\n </FauxClient>\n );\n },\n);\n\nPdfViewer.displayName = \"PdfViewer\";\n"]}
@@ -144,7 +144,7 @@ var Calendar = forwardRef(
144
144
  "data-react-fancy-calendar": "",
145
145
  ref,
146
146
  className: cn(
147
- "inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900",
147
+ "inline-block w-72 rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-4 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
148
148
  className
149
149
  ),
150
150
  children: [
@@ -154,7 +154,7 @@ var Calendar = forwardRef(
154
154
  {
155
155
  type: "button",
156
156
  onClick: prevMonth,
157
- className: "rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800",
157
+ className: "rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
158
158
  "aria-label": "Previous month",
159
159
  children: /* @__PURE__ */ jsx(ChevronLeft, { size: 16 })
160
160
  }
@@ -169,7 +169,7 @@ var Calendar = forwardRef(
169
169
  {
170
170
  type: "button",
171
171
  onClick: nextMonth,
172
- className: "rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800",
172
+ className: "rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
173
173
  "aria-label": "Next month",
174
174
  children: /* @__PURE__ */ jsx(ChevronRight, { size: 16 })
175
175
  }
@@ -199,7 +199,7 @@ var Calendar = forwardRef(
199
199
  className: cn(
200
200
  btnBase,
201
201
  !isCurrentMonth && "text-zinc-300 dark:text-zinc-600",
202
- isCurrentMonth && !selected && !inRange && "text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800",
202
+ isCurrentMonth && !selected && !inRange && "text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover: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))]",
203
203
  inRange && "bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300",
204
204
  selected && "bg-zinc-900 text-white dark:bg-white dark:text-zinc-900",
205
205
  isToday && !selected && "font-bold",
@@ -218,5 +218,5 @@ var Calendar = forwardRef(
218
218
  Calendar.displayName = "Calendar";
219
219
 
220
220
  export { Calendar };
221
- //# sourceMappingURL=chunk-NTMHP7FS.js.map
222
- //# sourceMappingURL=chunk-NTMHP7FS.js.map
221
+ //# sourceMappingURL=chunk-HVND2IIB.js.map
222
+ //# sourceMappingURL=chunk-HVND2IIB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["Calendar"],"mappings":"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","file":"chunk-NTMHP7FS.js","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
1
+ {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["Calendar"],"mappings":"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","file":"chunk-HVND2IIB.js","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-4 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 {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover: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))]\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
@@ -1,4 +1,4 @@
1
- import { FauxClient } from './chunk-XZUGREDI.js';
1
+ import { FauxClient } from './chunk-GVMWJ4NI.js';
2
2
  import { usePanZoom } from './chunk-CPY7NHXM.js';
3
3
  import { cn } from './chunk-MMW2JGKZ.js';
4
4
  import { forwardRef, useRef, useState, useCallback } from 'react';
@@ -141,7 +141,7 @@ var ImageViewer = forwardRef(
141
141
  "div",
142
142
  {
143
143
  "data-react-fancy-image-viewer-error": "",
144
- className: "absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400",
144
+ className: "absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 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))]",
145
145
  children: [
146
146
  /* @__PURE__ */ jsx("span", { className: "font-medium", children: "Couldn't load image" }),
147
147
  /* @__PURE__ */ jsx("span", { className: "max-w-full truncate text-xs opacity-70", children: alt || src })
@@ -152,7 +152,7 @@ var ImageViewer = forwardRef(
152
152
  "div",
153
153
  {
154
154
  "data-react-fancy-image-viewer-controls": "",
155
- className: "absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200",
155
+ className: "absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-zinc-900/90 dark:text-zinc-200",
156
156
  children: [
157
157
  /* @__PURE__ */ jsx(
158
158
  "button",
@@ -160,7 +160,7 @@ var ImageViewer = forwardRef(
160
160
  type: "button",
161
161
  "aria-label": "Zoom out",
162
162
  onClick: () => zoomBy(1 / 1.25),
163
- className: "flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800",
163
+ className: "flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
164
164
  children: "\u2212"
165
165
  }
166
166
  ),
@@ -170,7 +170,7 @@ var ImageViewer = forwardRef(
170
170
  type: "button",
171
171
  "aria-label": "Reset zoom",
172
172
  onClick: reset,
173
- className: "min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800",
173
+ className: "min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
174
174
  children: [
175
175
  Math.round(current.zoom * 100),
176
176
  "%"
@@ -183,7 +183,7 @@ var ImageViewer = forwardRef(
183
183
  type: "button",
184
184
  "aria-label": "Zoom in",
185
185
  onClick: () => zoomBy(1.25),
186
- className: "flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800",
186
+ className: "flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
187
187
  children: "+"
188
188
  }
189
189
  )
@@ -214,5 +214,5 @@ var ImageViewer = forwardRef(
214
214
  ImageViewer.displayName = "ImageViewer";
215
215
 
216
216
  export { ImageViewer };
217
- //# sourceMappingURL=chunk-ASS6EWNI.js.map
218
- //# sourceMappingURL=chunk-ASS6EWNI.js.map
217
+ //# sourceMappingURL=chunk-ICMLLZKZ.js.map
218
+ //# sourceMappingURL=chunk-ICMLLZKZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":"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","file":"chunk-ASS6EWNI.js","sourcesContent":["import { FauxClient } from \"../FauxClient\";\nimport {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n frame = false,\n frameProps,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = !frame && (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n const viewer = (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n // In the frame it fills the frame's body; standalone, the caller sizes it.\n frame && \"h-full w-full rounded-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\"\n >\n <span className=\"font-medium\">Couldn&apos;t load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n\n if (!frame) return viewer;\n\n // The frame's bar drives the image's own zoom (about the centre), and the\n // image's boxed bar steps aside: one set of controls, revealed on hover.\n return (\n <FauxClient\n variant=\"device\"\n controls\n fill\n applyZoom={false}\n zoom={current.zoom}\n onZoomChange={(z) => (z === 1 ? reset() : zoomBy(z / current.zoom))}\n minZoom={minZoom}\n maxZoom={maxZoom}\n {...frameProps}\n >\n {viewer}\n </FauxClient>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
1
+ {"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":[],"mappings":";;;;;;AAYA,IAAM,mBAAwC,EAAE,IAAA,EAAM,GAAG,IAAA,EAAM,CAAA,EAAG,MAAM,CAAA,EAAE;AAE1E,IAAM,UAAA,GAAmE;AAAA,EACvE,OAAA,EAAS,8BAAA;AAAA,EACT,KAAA,EAAO,4BAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,KAAA,CAAM,CAAA,EAAW,GAAA,EAAa,GAAA,EAAqB;AAC1D,EAAA,OAAO,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAC,CAAA;AACvC;AAcO,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CACE;AAAA,IACE,GAAA;AAAA,IACA,GAAA,GAAM,EAAA;AAAA,IACN,GAAA,GAAM,SAAA;AAAA,IACN,QAAA,GAAW,IAAA;AAAA,IACX,QAAA,GAAW,IAAA;AAAA,IACX,QAAA;AAAA,IACA,OAAA,GAAU,IAAA;AAAA,IACV,OAAA,GAAU,CAAA;AAAA,IACV,YAAA,GAAe,IAAA;AAAA,IACf,QAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA,GAAQ,KAAA;AAAA,IACR;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAyC,SAAS,CAAA;AAG9E,IAAA,MAAM,eAAe,QAAA,KAAa,MAAA;AAClC,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA;AAAA,MAC9B,eAAA,IAAmB;AAAA,KACrB;AACA,IAAA,MAAM,OAAA,GAAU,eAAe,QAAA,GAAY,QAAA;AAC3C,IAAA,MAAM,UAAA,GAAa,OAAO,OAAO,CAAA;AACjC,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAErB,IAAA,MAAM,WAAA,GAAc,WAAA;AAAA,MAClB,CACE,IAAA,KAGG;AACH,QAAA,MAAM,WACJ,OAAO,IAAA,KAAS,aAAa,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,GAAI,IAAA;AAC1D,QAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,QAAQ,CAAA;AACvC,QAAA,gBAAA,GAAmB,QAAQ,CAAA;AAAA,MAC7B,CAAA;AAAA,MACA,CAAC,cAAc,gBAAgB;AAAA,KACjC;AAEA,IAAA,MAAM,cAAc,MAAA,KAAW,QAAA;AAC/B,IAAA,MAAM,EAAE,cAAA,EAAgB,SAAA,EAAU,GAAI,UAAA,CAAW;AAAA,MAC/C,QAAA,EAAU,OAAA;AAAA,MACV,WAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAU,QAAA,IAAY,WAAA;AAAA,MACtB,UAAU,QAAA,IAAY,WAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,MAAA,GAAS,WAAA;AAAA,MACb,CAAC,MAAA,KAAmB;AAClB,QAAA,MAAM,KAAK,YAAA,CAAa,OAAA;AACxB,QAAA,IAAI,CAAC,EAAA,EAAI;AACT,QAAA,MAAM,IAAA,GAAO,GAAG,qBAAA,EAAsB;AACtC,QAAA,MAAM,EAAA,GAAK,KAAK,KAAA,GAAQ,CAAA;AACxB,QAAA,MAAM,EAAA,GAAK,KAAK,MAAA,GAAS,CAAA;AACzB,QAAA,WAAA,CAAY,CAAC,IAAA,KAAS;AACpB,UAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,IAAA,GAAO,MAAA,EAAQ,SAAS,OAAO,CAAA;AAC1D,UAAA,MAAM,KAAA,GAAQ,UAAU,IAAA,CAAK,IAAA;AAC7B,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,OAAA;AAAA,YACN,IAAA,EAAM,EAAA,GAAA,CAAM,EAAA,GAAK,IAAA,CAAK,IAAA,IAAQ,KAAA;AAAA,YAC9B,IAAA,EAAM,EAAA,GAAA,CAAM,EAAA,GAAK,IAAA,CAAK,IAAA,IAAQ;AAAA,WAChC;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA;AAAA,MACA,CAAC,WAAA,EAAa,OAAA,EAAS,OAAO;AAAA,KAChC;AAEA,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM,WAAA,CAAY,gBAAgB,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAE5E,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAU,QAAA,IAAY,QAAA,CAAA,IAAa,WAAA;AACzD,IAAA,MAAM,SAAA,GAAY,aAAa,OAAA,CAAQ,IAAI,OAAO,OAAA,CAAQ,IAAI,CAAA,UAAA,EAAa,OAAA,CAAQ,IAAI,CAAA,CAAA,CAAA;AAEvF,IAAA,MAAM,MAAA,mBACJ,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,+BAAA,EAA8B,EAAA;AAAA,QAC9B,SAAA,EAAW,EAAA;AAAA,UACT,yDAAA;AAAA;AAAA,UAEA,KAAA,IAAS,4BAAA;AAAA,UACT,eACI,oBAAA,GACA,8BAAA;AAAA,UACJ;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,YAAA;AAAA,cACL,gBAAA,EAAe,EAAA;AAAA,cACf,SAAA,EAAW,EAAA;AAAA,gBACT,mDAAA;AAAA,gBACA,SAAA,GACI,iBAAA,GACA,QAAA,IAAY,WAAA,GACV,aAAA,GACA;AAAA,eACR;AAAA,cACA,KAAA,EACE;AAAA,gBACE,SAAA;AAAA,gBACA,eAAA,EAAiB,KAAA;AAAA,gBACjB,UAAA,EAAY,WAAA;AAAA,gBACZ,WAAA,EAAa,QAAA,IAAY,QAAA,GAAW,MAAA,GAAS;AAAA,eAC/C;AAAA,cAEF,aAAA,EAAe,WAAW,KAAA,GAAQ,MAAA;AAAA,cACjC,GAAG,cAAA;AAAA,cAEJ,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,SAAA,EAAW,KAAA;AAAA,kBACX,QAAQ,MAAM;AACZ,oBAAA,SAAA,CAAU,QAAQ,CAAA;AAClB,oBAAA,MAAA,IAAS;AAAA,kBACX,CAAA;AAAA,kBACA,SAAS,MAAM;AACb,oBAAA,SAAA,CAAU,OAAO,CAAA;AACjB,oBAAA,OAAA,IAAU;AAAA,kBACZ,CAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACT,2BAAA;AAAA,oBACA,WAAW,OAAA,IAAW,QAAA;AAAA,oBACtB,WAAW,GAAG;AAAA;AAChB;AAAA;AACF;AAAA,WACF;AAAA,UAEC,WAAW,OAAA,oBACV,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,qCAAA,EAAoC,EAAA;AAAA,cACpC,SAAA,EAAU,0NAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,QAAA,EAAA,qBAAA,EAAwB,CAAA;AAAA,gCACtD,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAA0C,iBAAO,GAAA,EAAI;AAAA;AAAA;AAAA,WACvE;AAAA,UAGD,YAAA,oBACC,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,wCAAA,EAAuC,EAAA;AAAA,cACvC,SAAA,EAAU,kSAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAW,UAAA;AAAA,oBACX,OAAA,EAAS,MAAM,MAAA,CAAO,CAAA,GAAI,IAAI,CAAA;AAAA,oBAC9B,SAAA,EAAU,uNAAA;AAAA,oBACX,QAAA,EAAA;AAAA;AAAA,iBAED;AAAA,gCACA,IAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAW,YAAA;AAAA,oBACX,OAAA,EAAS,KAAA;AAAA,oBACT,SAAA,EAAU,0MAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,IAAA,GAAO,GAAG,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAClC;AAAA,gCACA,GAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA,EAAW,SAAA;AAAA,oBACX,OAAA,EAAS,MAAM,MAAA,CAAO,IAAI,CAAA;AAAA,oBAC1B,SAAA,EAAU,uNAAA;AAAA,oBACX,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA;AACF;AAAA;AAAA,KAEJ;AAGF,IAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AAInB,IAAA,uBACE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAI,IAAA;AAAA,QACJ,SAAA,EAAW,KAAA;AAAA,QACX,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,YAAA,EAAc,CAAC,CAAA,KAAO,CAAA,KAAM,CAAA,GAAI,OAAM,GAAI,MAAA,CAAO,CAAA,GAAI,OAAA,CAAQ,IAAI,CAAA;AAAA,QACjE,OAAA;AAAA,QACA,OAAA;AAAA,QACC,GAAG,UAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-ICMLLZKZ.js","sourcesContent":["import { FauxClient } from \"../FauxClient\";\nimport {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n frame = false,\n frameProps,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = !frame && (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n const viewer = (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n // In the frame it fills the frame's body; standalone, the caller sizes it.\n frame && \"h-full w-full rounded-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\"\n >\n <span className=\"font-medium\">Couldn&apos;t load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n\n if (!frame) return viewer;\n\n // The frame's bar drives the image's own zoom (about the centre), and the\n // image's boxed bar steps aside: one set of controls, revealed on hover.\n return (\n <FauxClient\n variant=\"device\"\n controls\n fill\n applyZoom={false}\n zoom={current.zoom}\n onZoomChange={(z) => (z === 1 ? reset() : zoomBy(z / current.zoom))}\n minZoom={minZoom}\n maxZoom={maxZoom}\n {...frameProps}\n >\n {viewer}\n </FauxClient>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
@@ -42,9 +42,9 @@ function TabsList({ children, className }) {
42
42
  onKeyDown: handleKeyDown,
43
43
  className: cn(
44
44
  "flex",
45
- variant === "underline" && "gap-0 border-b border-zinc-200 dark:border-zinc-700",
46
- variant === "pills" && "gap-0 rounded-lg bg-zinc-100 p-1 dark:bg-zinc-800",
47
- variant === "boxed" && "gap-0 rounded-lg bg-zinc-100 p-1 dark:bg-zinc-800",
45
+ 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))]",
46
+ 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))]",
47
+ variant === "boxed" && "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))]",
48
48
  className
49
49
  ),
50
50
  children
@@ -81,15 +81,15 @@ function TabsTab({
81
81
  disabled && "cursor-not-allowed opacity-50",
82
82
  variant === "underline" && [
83
83
  "border-b-2 px-4 py-2.5",
84
- isActive ? "border-zinc-900 text-zinc-900 dark:border-white dark:text-white" : "border-transparent text-zinc-500 hover:border-zinc-300 hover:text-zinc-700 dark:text-zinc-400 dark:hover:text-zinc-300"
84
+ isActive ? "border-zinc-900 text-zinc-900 dark:border-white dark:text-white" : "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))]"
85
85
  ],
86
86
  variant === "pills" && [
87
87
  "rounded-md px-4 py-1.5",
88
- isActive ? "bg-white text-zinc-900 shadow-sm dark:bg-zinc-900 dark:text-white" : "text-zinc-500 dark:text-zinc-400"
88
+ isActive ? "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" : "text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]"
89
89
  ],
90
90
  variant === "boxed" && [
91
91
  "flex-1 rounded-md px-4 py-1.5",
92
- isActive ? "bg-white text-zinc-900 shadow-sm dark:bg-zinc-900 dark:text-white" : "text-zinc-500 dark:text-zinc-400"
92
+ isActive ? "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" : "text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]"
93
93
  ],
94
94
  className
95
95
  ),
@@ -135,5 +135,5 @@ var Tabs = Object.assign(TabsRoot, {
135
135
  });
136
136
 
137
137
  export { Tabs, useTabs };
138
- //# sourceMappingURL=chunk-FNEPZ33A.js.map
139
- //# sourceMappingURL=chunk-FNEPZ33A.js.map
138
+ //# sourceMappingURL=chunk-IU5WQUUC.js.map
139
+ //# sourceMappingURL=chunk-IU5WQUUC.js.map
@@ -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":["jsx"],"mappings":"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","file":"chunk-FNEPZ33A.js","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":["jsx"],"mappings":"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","file":"chunk-IU5WQUUC.js","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"]}