@particle-academy/react-fancy 6.8.0 → 6.10.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 (583) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -0
  3. package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
  4. package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
  5. package/dist/accordion-panel.cjs +7 -7
  6. package/dist/accordion-panel.js +1 -1
  7. package/dist/accordion.cjs +3 -3
  8. package/dist/accordion.js +1 -1
  9. package/dist/autocomplete.cjs +4 -3
  10. package/dist/autocomplete.js +3 -2
  11. package/dist/avatar.cjs +2 -2
  12. package/dist/avatar.js +1 -1
  13. package/dist/breadcrumbs.cjs +2 -2
  14. package/dist/breadcrumbs.js +1 -1
  15. package/dist/button.cjs +3 -3
  16. package/dist/button.d.cts +1 -1
  17. package/dist/button.d.ts +1 -1
  18. package/dist/button.js +1 -1
  19. package/dist/calendar.cjs +2 -2
  20. package/dist/calendar.js +1 -1
  21. package/dist/callout.cjs +2 -2
  22. package/dist/callout.js +1 -1
  23. package/dist/card.cjs +7 -7
  24. package/dist/card.d.cts +2 -2
  25. package/dist/card.d.ts +2 -2
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.cjs +7 -7
  28. package/dist/carousel.js +1 -1
  29. package/dist/chart.cjs +2 -2
  30. package/dist/chart.js +1 -1
  31. package/dist/chat-drawer.cjs +2 -2
  32. package/dist/chat-drawer.js +1 -1
  33. package/dist/chat-thread.cjs +7 -7
  34. package/dist/chat-thread.js +5 -5
  35. package/dist/checkbox-group.cjs +5 -5
  36. package/dist/checkbox-group.js +4 -4
  37. package/dist/checkbox.cjs +3 -3
  38. package/dist/checkbox.js +2 -2
  39. package/dist/{chunk-6GVOW3UL.js → chunk-24RWB7Q3.js} +12 -11
  40. package/dist/chunk-24RWB7Q3.js.map +1 -0
  41. package/dist/{chunk-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
  42. package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
  43. package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
  44. package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
  45. package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
  46. package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
  47. package/dist/chunk-36IC3NDN.cjs +21 -0
  48. package/dist/chunk-36IC3NDN.cjs.map +1 -0
  49. package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
  50. package/dist/chunk-3BBEVHSP.cjs.map +1 -0
  51. package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
  52. package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
  53. package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
  54. package/dist/chunk-3O3ZWWLG.js.map +1 -0
  55. package/dist/{chunk-5TP642UT.js → chunk-3W6BKQVZ.js} +12 -11
  56. package/dist/chunk-3W6BKQVZ.js.map +1 -0
  57. package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
  58. package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
  59. package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
  60. package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
  61. package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
  62. package/dist/chunk-54NB3T3Q.js.map +1 -0
  63. package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
  64. package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
  65. package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
  66. package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
  67. package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
  68. package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
  69. package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
  70. package/dist/chunk-5SVZX6WF.cjs.map +1 -0
  71. package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
  72. package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
  73. package/dist/{chunk-OASSZI6M.cjs → chunk-6B43ARGW.cjs} +5 -4
  74. package/dist/chunk-6B43ARGW.cjs.map +1 -0
  75. package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
  76. package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
  77. package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
  78. package/dist/chunk-6GOPFKGC.cjs.map +1 -0
  79. package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
  80. package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
  81. package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
  82. package/dist/chunk-7B3Z4NVM.js.map +1 -0
  83. package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
  84. package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
  85. package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
  86. package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
  87. package/dist/{chunk-I2VAGZXY.cjs → chunk-7N7XVBH7.cjs} +11 -11
  88. package/dist/{chunk-I2VAGZXY.cjs.map → chunk-7N7XVBH7.cjs.map} +1 -1
  89. package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
  90. package/dist/chunk-7NRG77U5.cjs.map +1 -0
  91. package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
  92. package/dist/chunk-7OUBFO4D.js.map +1 -0
  93. package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
  94. package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
  95. package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
  96. package/dist/chunk-AE6ICNJR.js.map +1 -0
  97. package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
  98. package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
  99. package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
  100. package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
  101. package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
  102. package/dist/chunk-AR5DLM4K.js.map +1 -0
  103. package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
  104. package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
  105. package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
  106. package/dist/chunk-AXW55PQG.js.map +1 -0
  107. package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
  108. package/dist/chunk-BPTCMI3E.js.map +1 -0
  109. package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
  110. package/dist/chunk-BYMOPR7P.cjs.map +1 -0
  111. package/dist/{chunk-RWU2MFUL.js → chunk-C2VGO375.js} +5 -4
  112. package/dist/chunk-C2VGO375.js.map +1 -0
  113. package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
  114. package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
  115. package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
  116. package/dist/chunk-CO2NEUFK.js.map +1 -0
  117. package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
  118. package/dist/chunk-D6NISIKV.js.map +1 -0
  119. package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
  120. package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
  121. package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
  122. package/dist/chunk-DPPDZOMY.cjs.map +1 -0
  123. package/dist/{chunk-KOTUFZJ6.cjs → chunk-DQWAG7YY.cjs} +14 -11
  124. package/dist/chunk-DQWAG7YY.cjs.map +1 -0
  125. package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
  126. package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
  127. package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
  128. package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
  129. package/dist/{chunk-XBFTO64U.cjs → chunk-EDIB6V6Y.cjs} +4 -4
  130. package/dist/{chunk-XBFTO64U.cjs.map → chunk-EDIB6V6Y.cjs.map} +1 -1
  131. package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
  132. package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
  133. package/dist/{chunk-HNJXBMHI.cjs → chunk-EEFU5BVM.cjs} +40 -39
  134. package/dist/chunk-EEFU5BVM.cjs.map +1 -0
  135. package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
  136. package/dist/chunk-ETUDUDSL.cjs.map +1 -0
  137. package/dist/{chunk-PJNUGSKI.js → chunk-EW2N52FD.js} +26 -25
  138. package/dist/chunk-EW2N52FD.js.map +1 -0
  139. package/dist/{chunk-6PRXG7L6.js → chunk-FECD3WKN.js} +4 -4
  140. package/dist/{chunk-6PRXG7L6.js.map → chunk-FECD3WKN.js.map} +1 -1
  141. package/dist/{chunk-CNWTYRZC.cjs → chunk-FF5G3E76.cjs} +4 -4
  142. package/dist/{chunk-CNWTYRZC.cjs.map → chunk-FF5G3E76.cjs.map} +1 -1
  143. package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
  144. package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
  145. package/dist/{chunk-QTS4Q2NK.js → chunk-FNHKZMMI.js} +4 -3
  146. package/dist/chunk-FNHKZMMI.js.map +1 -0
  147. package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
  148. package/dist/chunk-FNPII6TF.cjs.map +1 -0
  149. package/dist/{chunk-HLI6RB5V.cjs → chunk-FR3V5IAJ.cjs} +32 -31
  150. package/dist/chunk-FR3V5IAJ.cjs.map +1 -0
  151. package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
  152. package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
  153. package/dist/{chunk-BYO5RUDE.cjs → chunk-FSLEFL4U.cjs} +6 -5
  154. package/dist/chunk-FSLEFL4U.cjs.map +1 -0
  155. package/dist/{chunk-JY2RC6I4.js → chunk-FX37P4KR.js} +13 -10
  156. package/dist/chunk-FX37P4KR.js.map +1 -0
  157. package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
  158. package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
  159. package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
  160. package/dist/chunk-FZQWFDUV.cjs.map +1 -0
  161. package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
  162. package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
  163. package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
  164. package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
  165. package/dist/{chunk-PIG3UTHU.js → chunk-GZSRKBYI.js} +3 -3
  166. package/dist/{chunk-PIG3UTHU.js.map → chunk-GZSRKBYI.js.map} +1 -1
  167. package/dist/{chunk-BXPLERIJ.js → chunk-H5LJFN7D.js} +5 -4
  168. package/dist/chunk-H5LJFN7D.js.map +1 -0
  169. package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
  170. package/dist/chunk-H7IQVCTX.js.map +1 -0
  171. package/dist/{chunk-LY3RQB3H.js → chunk-HCIEXBEB.js} +3 -3
  172. package/dist/{chunk-LY3RQB3H.js.map → chunk-HCIEXBEB.js.map} +1 -1
  173. package/dist/{chunk-XZOBGKZL.cjs → chunk-HEGM5LMZ.cjs} +6 -5
  174. package/dist/chunk-HEGM5LMZ.cjs.map +1 -0
  175. package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
  176. package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
  177. package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
  178. package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
  179. package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
  180. package/dist/chunk-I65KXHYL.js.map +1 -0
  181. package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
  182. package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
  183. package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
  184. package/dist/chunk-IG2UDCBA.js.map +1 -0
  185. package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
  186. package/dist/chunk-INC35VEE.cjs.map +1 -0
  187. package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
  188. package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
  189. package/dist/{chunk-GDH43QH6.js → chunk-J57JSHDC.js} +6 -6
  190. package/dist/{chunk-GDH43QH6.js.map → chunk-J57JSHDC.js.map} +1 -1
  191. package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
  192. package/dist/chunk-JDFJK5GO.cjs.map +1 -0
  193. package/dist/{chunk-GSMD5NK5.js → chunk-JN5DHZ6I.js} +7 -7
  194. package/dist/{chunk-GSMD5NK5.js.map → chunk-JN5DHZ6I.js.map} +1 -1
  195. package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
  196. package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
  197. package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
  198. package/dist/chunk-KDRBUF5S.js.map +1 -0
  199. package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
  200. package/dist/chunk-KGSL6SVX.cjs.map +1 -0
  201. package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
  202. package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
  203. package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
  204. package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
  205. package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
  206. package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
  207. package/dist/chunk-LJCQI6ZS.js +1212 -0
  208. package/dist/chunk-LJCQI6ZS.js.map +1 -0
  209. package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
  210. package/dist/chunk-LREJ7AV2.cjs.map +1 -0
  211. package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
  212. package/dist/chunk-LVNCNMKD.cjs.map +1 -0
  213. package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
  214. package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
  215. package/dist/{chunk-MKGWHSNV.cjs → chunk-MAY4NMRI.cjs} +5 -4
  216. package/dist/chunk-MAY4NMRI.cjs.map +1 -0
  217. package/dist/{chunk-PDVU2PXR.js → chunk-MD7HUHJB.js} +10 -10
  218. package/dist/chunk-MD7HUHJB.js.map +1 -0
  219. package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
  220. package/dist/chunk-MDAI54AG.cjs.map +1 -0
  221. package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
  222. package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
  223. package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
  224. package/dist/chunk-NETUI353.js.map +1 -0
  225. package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
  226. package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
  227. package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
  228. package/dist/chunk-NW2LQRUP.js.map +1 -0
  229. package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
  230. package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
  231. package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
  232. package/dist/chunk-OBA2LR4I.js.map +1 -0
  233. package/dist/{chunk-GR2WKBER.js → chunk-OE4AIUAN.js} +4 -3
  234. package/dist/chunk-OE4AIUAN.js.map +1 -0
  235. package/dist/chunk-OP7A4SZZ.cjs +1216 -0
  236. package/dist/chunk-OP7A4SZZ.cjs.map +1 -0
  237. package/dist/{chunk-Z44A7NPD.cjs → chunk-OUPHLIXV.cjs} +40 -39
  238. package/dist/chunk-OUPHLIXV.cjs.map +1 -0
  239. package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
  240. package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
  241. package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
  242. package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
  243. package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
  244. package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
  245. package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
  246. package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
  247. package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
  248. package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
  249. package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
  250. package/dist/chunk-QEJBMXRQ.js.map +1 -0
  251. package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
  252. package/dist/chunk-QMZK7SRS.cjs.map +1 -0
  253. package/dist/{chunk-J2DI6RMR.cjs → chunk-QQKWI7QP.cjs} +19 -12
  254. package/dist/chunk-QQKWI7QP.cjs.map +1 -0
  255. package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
  256. package/dist/chunk-QSRYTWQN.js.map +1 -0
  257. package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
  258. package/dist/chunk-QU6HZH6V.cjs.map +1 -0
  259. package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
  260. package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
  261. package/dist/{chunk-VZTXUYPM.cjs → chunk-R4SANV3G.cjs} +20 -20
  262. package/dist/chunk-R4SANV3G.cjs.map +1 -0
  263. package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
  264. package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
  265. package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
  266. package/dist/chunk-RCTPN5QK.js.map +1 -0
  267. package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
  268. package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
  269. package/dist/{chunk-MQ6VGG62.js → chunk-RUEDMYBF.js} +19 -12
  270. package/dist/chunk-RUEDMYBF.js.map +1 -0
  271. package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
  272. package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
  273. package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
  274. package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
  275. package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
  276. package/dist/chunk-S4JQPOBR.js.map +1 -0
  277. package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
  278. package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
  279. package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
  280. package/dist/chunk-SD6YAMDH.cjs.map +1 -0
  281. package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
  282. package/dist/chunk-SOIGBPK6.js.map +1 -0
  283. package/dist/{chunk-KKYILQTG.cjs → chunk-TBLKVTJC.cjs} +7 -7
  284. package/dist/{chunk-KKYILQTG.cjs.map → chunk-TBLKVTJC.cjs.map} +1 -1
  285. package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
  286. package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
  287. package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
  288. package/dist/chunk-U4KUW3RK.cjs.map +1 -0
  289. package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
  290. package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
  291. package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
  292. package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
  293. package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
  294. package/dist/chunk-UQABXIQV.cjs.map +1 -0
  295. package/dist/chunk-US5R36TQ.js +17 -0
  296. package/dist/chunk-US5R36TQ.js.map +1 -0
  297. package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
  298. package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
  299. package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
  300. package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
  301. package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
  302. package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
  303. package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
  304. package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
  305. package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
  306. package/dist/chunk-VOAC5OKY.cjs.map +1 -0
  307. package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
  308. package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
  309. package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
  310. package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
  311. package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
  312. package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
  313. package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
  314. package/dist/chunk-WLRKE4HC.js.map +1 -0
  315. package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
  316. package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
  317. package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
  318. package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
  319. package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
  320. package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
  321. package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
  322. package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
  323. package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
  324. package/dist/chunk-XCFBMHQD.cjs.map +1 -0
  325. package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
  326. package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
  327. package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
  328. package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
  329. package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
  330. package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
  331. package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
  332. package/dist/chunk-XO4GHRA2.js.map +1 -0
  333. package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
  334. package/dist/chunk-XQF4HCOV.cjs.map +1 -0
  335. package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
  336. package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
  337. package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
  338. package/dist/chunk-YTWMIVRI.js.map +1 -0
  339. package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
  340. package/dist/chunk-YZW7HQXH.js.map +1 -0
  341. package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
  342. package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
  343. package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
  344. package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
  345. package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
  346. package/dist/chunk-ZBXJDQXN.js.map +1 -0
  347. package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
  348. package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
  349. package/dist/{chunk-NPSKZ7ZB.cjs → chunk-ZFXCZ2QO.cjs} +12 -12
  350. package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-ZFXCZ2QO.cjs.map} +1 -1
  351. package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
  352. package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
  353. package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
  354. package/dist/chunk-ZL5QVNKG.js.map +1 -0
  355. package/dist/code-block.cjs +4 -4
  356. package/dist/code-block.js +3 -3
  357. package/dist/code-view.cjs +2 -2
  358. package/dist/code-view.js +1 -1
  359. package/dist/command.cjs +3 -3
  360. package/dist/command.js +1 -1
  361. package/dist/composer.cjs +7 -6
  362. package/dist/composer.js +5 -4
  363. package/dist/content-renderer.cjs +6 -6
  364. package/dist/content-renderer.js +3 -3
  365. package/dist/context-menu.cjs +4 -3
  366. package/dist/context-menu.d.cts +2 -0
  367. package/dist/context-menu.d.ts +2 -0
  368. package/dist/context-menu.js +2 -1
  369. package/dist/date-picker.cjs +5 -5
  370. package/dist/date-picker.js +4 -4
  371. package/dist/drawer.cjs +3 -3
  372. package/dist/drawer.d.cts +10 -4
  373. package/dist/drawer.d.ts +10 -4
  374. package/dist/drawer.js +1 -1
  375. package/dist/dropdown.cjs +5 -4
  376. package/dist/dropdown.js +3 -2
  377. package/dist/editor.cjs +9 -8
  378. package/dist/editor.js +7 -6
  379. package/dist/emoji-select.cjs +2 -2
  380. package/dist/emoji-select.js +1 -1
  381. package/dist/eyebrow.cjs +2 -2
  382. package/dist/eyebrow.js +1 -1
  383. package/dist/faux-client.cjs +2 -2
  384. package/dist/faux-client.js +1 -1
  385. package/dist/field.cjs +3 -3
  386. package/dist/field.js +2 -2
  387. package/dist/file-browser.cjs +6 -5
  388. package/dist/file-browser.js +2 -1
  389. package/dist/file-upload.cjs +3 -3
  390. package/dist/file-upload.js +1 -1
  391. package/dist/image-viewer.cjs +3 -3
  392. package/dist/image-viewer.js +2 -2
  393. package/dist/index-list.cjs +2 -2
  394. package/dist/index-list.js +1 -1
  395. package/dist/index.cjs +252 -238
  396. package/dist/index.cjs.map +1 -1
  397. package/dist/index.d.cts +20 -1
  398. package/dist/index.d.ts +20 -1
  399. package/dist/index.js +83 -81
  400. package/dist/index.js.map +1 -1
  401. package/dist/input-tag.cjs +7 -6
  402. package/dist/input-tag.d.cts +6 -2
  403. package/dist/input-tag.d.ts +6 -2
  404. package/dist/input-tag.js +2 -1
  405. package/dist/input.cjs +10 -9
  406. package/dist/input.js +9 -8
  407. package/dist/inputs.cjs +42 -41
  408. package/dist/inputs.js +21 -20
  409. package/dist/json-editor.cjs +27 -26
  410. package/dist/json-editor.js +16 -15
  411. package/dist/magic-wand.cjs +8 -8
  412. package/dist/magic-wand.js +7 -7
  413. package/dist/marquee.cjs +2 -2
  414. package/dist/marquee.js +1 -1
  415. package/dist/media-viewer.cjs +5 -5
  416. package/dist/media-viewer.js +4 -4
  417. package/dist/menu.cjs +3 -3
  418. package/dist/menu.js +1 -1
  419. package/dist/mobile-menu.cjs +5 -4
  420. package/dist/mobile-menu.d.cts +2 -1
  421. package/dist/mobile-menu.d.ts +2 -1
  422. package/dist/mobile-menu.js +3 -2
  423. package/dist/mode.cjs +3 -3
  424. package/dist/mode.js +2 -2
  425. package/dist/multi-switch.cjs +6 -5
  426. package/dist/multi-switch.js +5 -4
  427. package/dist/number-field.cjs +11 -10
  428. package/dist/number-field.js +10 -9
  429. package/dist/otp-input.cjs +3 -2
  430. package/dist/otp-input.js +2 -1
  431. package/dist/pagination.cjs +2 -2
  432. package/dist/pagination.js +1 -1
  433. package/dist/paste-pills.cjs +17 -16
  434. package/dist/paste-pills.js +4 -3
  435. package/dist/pdf-viewer.cjs +3 -3
  436. package/dist/pdf-viewer.js +2 -2
  437. package/dist/phone-input.cjs +39 -0
  438. package/dist/phone-input.cjs.map +1 -0
  439. package/dist/phone-input.d.cts +139 -0
  440. package/dist/phone-input.d.ts +139 -0
  441. package/dist/phone-input.js +22 -0
  442. package/dist/phone-input.js.map +1 -0
  443. package/dist/popover.cjs +5 -4
  444. package/dist/popover.js +3 -2
  445. package/dist/profile.cjs +3 -3
  446. package/dist/profile.js +2 -2
  447. package/dist/progress.cjs +2 -2
  448. package/dist/progress.js +1 -1
  449. package/dist/prompt-input.cjs +10 -9
  450. package/dist/prompt-input.js +7 -6
  451. package/dist/qr-code.cjs +8 -8
  452. package/dist/qr-code.js +2 -2
  453. package/dist/radio-group.cjs +5 -5
  454. package/dist/radio-group.js +4 -4
  455. package/dist/reason-tag.cjs +6 -5
  456. package/dist/reason-tag.js +5 -4
  457. package/dist/reorderable-grid.cjs +4 -3
  458. package/dist/reorderable-grid.js +2 -1
  459. package/dist/resizable-panels.cjs +3 -2
  460. package/dist/resizable-panels.js +2 -1
  461. package/dist/select.cjs +8 -7
  462. package/dist/select.js +7 -6
  463. package/dist/separator.cjs +2 -2
  464. package/dist/separator.js +1 -1
  465. package/dist/sidebar.cjs +6 -5
  466. package/dist/sidebar.js +4 -3
  467. package/dist/slider.cjs +5 -5
  468. package/dist/slider.js +4 -4
  469. package/dist/stat-list.cjs +2 -2
  470. package/dist/stat-list.d.cts +5 -2
  471. package/dist/stat-list.d.ts +5 -2
  472. package/dist/stat-list.js +1 -1
  473. package/dist/stepper.cjs +3 -2
  474. package/dist/stepper.js +2 -1
  475. package/dist/styles.css +24 -0
  476. package/dist/styles.css.map +1 -1
  477. package/dist/switch.cjs +3 -3
  478. package/dist/switch.js +2 -2
  479. package/dist/table.cjs +11 -11
  480. package/dist/table.js +1 -1
  481. package/dist/tabs.cjs +4 -3
  482. package/dist/tabs.js +2 -1
  483. package/dist/textarea.cjs +6 -6
  484. package/dist/textarea.js +5 -5
  485. package/dist/time-grid.cjs +3 -2
  486. package/dist/time-grid.js +2 -1
  487. package/dist/time-picker.cjs +2 -2
  488. package/dist/time-picker.js +1 -1
  489. package/dist/timeline.cjs +4 -4
  490. package/dist/timeline.js +1 -1
  491. package/dist/toast.cjs +4 -3
  492. package/dist/toast.d.cts +6 -2
  493. package/dist/toast.d.ts +6 -2
  494. package/dist/toast.js +2 -1
  495. package/dist/tooltip.cjs +4 -3
  496. package/dist/tooltip.js +3 -2
  497. package/dist/tree-nav.cjs +3 -3
  498. package/dist/tree-nav.js +1 -1
  499. package/docs/Dropdown.md +1 -1
  500. package/docs/InputTag.md +1 -1
  501. package/docs/MobileMenu.md +2 -2
  502. package/docs/PhoneInput.md +104 -0
  503. package/docs/Popover.md +1 -1
  504. package/docs/ReorderableGrid.md +2 -0
  505. package/docs/ResizablePanels.md +2 -0
  506. package/docs/Toast.md +2 -2
  507. package/package.json +11 -1
  508. package/dist/chunk-25HRO7HQ.cjs.map +0 -1
  509. package/dist/chunk-2O5UXH5R.cjs.map +0 -1
  510. package/dist/chunk-37D5PYEF.js.map +0 -1
  511. package/dist/chunk-3S5ED522.js.map +0 -1
  512. package/dist/chunk-4DL2U23D.cjs.map +0 -1
  513. package/dist/chunk-5EW47IH7.js.map +0 -1
  514. package/dist/chunk-5TP642UT.js.map +0 -1
  515. package/dist/chunk-6GVOW3UL.js.map +0 -1
  516. package/dist/chunk-AJPYGRLA.cjs.map +0 -1
  517. package/dist/chunk-BXPLERIJ.js.map +0 -1
  518. package/dist/chunk-BYO5RUDE.cjs.map +0 -1
  519. package/dist/chunk-CEFK54WP.cjs.map +0 -1
  520. package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
  521. package/dist/chunk-DJYG7DXS.js.map +0 -1
  522. package/dist/chunk-DTOIO42M.js.map +0 -1
  523. package/dist/chunk-DXZCKDYS.js.map +0 -1
  524. package/dist/chunk-ESCIXKFT.js.map +0 -1
  525. package/dist/chunk-EUVWYDFN.js.map +0 -1
  526. package/dist/chunk-F4OYQ2XZ.js.map +0 -1
  527. package/dist/chunk-FKZB27OM.cjs.map +0 -1
  528. package/dist/chunk-FR4RHVPR.js.map +0 -1
  529. package/dist/chunk-FVQO75KY.cjs.map +0 -1
  530. package/dist/chunk-GDF6XTHC.js.map +0 -1
  531. package/dist/chunk-GR2WKBER.js.map +0 -1
  532. package/dist/chunk-GTS3QA7M.js.map +0 -1
  533. package/dist/chunk-HLI6RB5V.cjs.map +0 -1
  534. package/dist/chunk-HNJXBMHI.cjs.map +0 -1
  535. package/dist/chunk-J2DI6RMR.cjs.map +0 -1
  536. package/dist/chunk-JY2RC6I4.js.map +0 -1
  537. package/dist/chunk-KFA7B6WP.cjs.map +0 -1
  538. package/dist/chunk-KOAMRCSC.cjs.map +0 -1
  539. package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
  540. package/dist/chunk-LFC2DL6H.cjs.map +0 -1
  541. package/dist/chunk-LKN7FYW6.js.map +0 -1
  542. package/dist/chunk-MI57NAKF.js.map +0 -1
  543. package/dist/chunk-MKGWHSNV.cjs.map +0 -1
  544. package/dist/chunk-MLZGGAXQ.js.map +0 -1
  545. package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
  546. package/dist/chunk-MQ6VGG62.js.map +0 -1
  547. package/dist/chunk-NSJBVV7R.js.map +0 -1
  548. package/dist/chunk-NVXTHTJI.js.map +0 -1
  549. package/dist/chunk-O5ORO2RX.cjs.map +0 -1
  550. package/dist/chunk-OASSZI6M.cjs.map +0 -1
  551. package/dist/chunk-PCNJJVTF.cjs.map +0 -1
  552. package/dist/chunk-PDVU2PXR.js.map +0 -1
  553. package/dist/chunk-PJNUGSKI.js.map +0 -1
  554. package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
  555. package/dist/chunk-PXZRYL5I.js.map +0 -1
  556. package/dist/chunk-QF2FODTG.js.map +0 -1
  557. package/dist/chunk-QGY5FPVM.js.map +0 -1
  558. package/dist/chunk-QP6VNKLW.cjs.map +0 -1
  559. package/dist/chunk-QTS4Q2NK.js.map +0 -1
  560. package/dist/chunk-RANTYGKW.js.map +0 -1
  561. package/dist/chunk-RSLZL6VP.js.map +0 -1
  562. package/dist/chunk-RWU2MFUL.js.map +0 -1
  563. package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
  564. package/dist/chunk-SKMORSBO.cjs.map +0 -1
  565. package/dist/chunk-SSCW67KA.cjs.map +0 -1
  566. package/dist/chunk-SXXDTW7S.js.map +0 -1
  567. package/dist/chunk-TFX4LL7V.js.map +0 -1
  568. package/dist/chunk-TMQF2CRN.js.map +0 -1
  569. package/dist/chunk-UK6BGM74.cjs.map +0 -1
  570. package/dist/chunk-UXYFM2XT.cjs.map +0 -1
  571. package/dist/chunk-VZTXUYPM.cjs.map +0 -1
  572. package/dist/chunk-WMANILKC.cjs.map +0 -1
  573. package/dist/chunk-WNUAGRQN.cjs.map +0 -1
  574. package/dist/chunk-WZAKEJDL.js.map +0 -1
  575. package/dist/chunk-X2A3NAJW.js.map +0 -1
  576. package/dist/chunk-XZOBGKZL.cjs.map +0 -1
  577. package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
  578. package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
  579. package/dist/chunk-Z44A7NPD.cjs.map +0 -1
  580. package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
  581. package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
  582. package/dist/chunk-ZPBKRJMH.js.map +0 -1
  583. package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CodeBlock/CodeBlock.tsx"],"names":["tokenize","highlightCodeWithVariables","forwardRef","CodeBlock","useMemo","useState","useRef","useEffect","useCallback","runWriter","defaultClipboardWriter","jsx","Button","cn","paletteColor","jsxs","CODE_PALETTE_ATTR","CODE_PALETTE_DARK_CLASS","CODE_PALETTE_STYLE","visuallyHidden"],"mappings":"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","file":"chunk-AFFR7HHZ.cjs","sourcesContent":["import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n highlightCodeWithVariables,\n tokenize,\n type Token,\n} from \"@particle-academy/fancy-file-commons\";\nimport { cn } from \"../../utils/cn\";\nimport { visuallyHidden } from \"../../utils/visually-hidden\";\nimport { Button } from \"../Button/Button\";\nimport { defaultClipboardWriter, runWriter } from \"../ContentRenderer/copy\";\nimport {\n CODE_PALETTE_ATTR,\n CODE_PALETTE_DARK_CLASS,\n CODE_PALETTE_STYLE,\n paletteColor,\n} from \"../CodeView/code-palette\";\nimport type { CodeBlockProps } from \"./CodeBlock.types\";\n\n/** How long \"Copied\" / \"Copy failed\" stays before the button resets. */\nconst FEEDBACK_MS = 2000;\n\n/**\n * Tokens for any language fancy-file-commons can highlight (aliases included,\n * case-insensitive); none for anything else, which renders as plain text.\n * `snippet: true` because a code block shows documentation snippets: PHP\n * without an opening `<?php` is read as PHP, not inline HTML. `tokenize`\n * returns sorted, non-overlapping, in-bounds tokens, which `highlightLines`\n * relies on.\n */\nfunction tokensFor(code: string, language: string): Token[] {\n return tokenize(code, language, { snippet: true }) ?? [];\n}\n\n/**\n * Highlight one line at a time, clipping each token to the line it falls on, so\n * a token that spans lines (an HTML comment) keeps its colour on every line.\n * `highlightCodeWithVariables` escapes every slice it emits, highlighted or not,\n * and writes no colour value: spans read the palette variables on the root.\n */\nfunction highlightLines(code: string, tokens: Token[]): string[] {\n const out: string[] = [];\n let start = 0;\n let ti = 0;\n for (const line of code.split(\"\\n\")) {\n const end = start + line.length;\n while (ti < tokens.length && tokens[ti].end <= start) ti++;\n const clipped: Token[] = [];\n for (let j = ti; j < tokens.length && tokens[j].start < end; j++) {\n const s = Math.max(tokens[j].start, start) - start;\n const e = Math.min(tokens[j].end, end) - start;\n if (e > s) clipped.push({ type: tokens[j].type, start: s, end: e });\n }\n out.push(highlightCodeWithVariables(line, clipped));\n start = end + 1;\n }\n return out;\n}\n\ntype CopyState = \"idle\" | \"copied\" | \"failed\";\n\n// Matches CodeView's text metrics so the two sit together.\nconst TEXT_METRICS = \"m-0 p-3 font-mono text-xs leading-relaxed\";\n\n/**\n * A display-only code block: `<pre><code>`, syntax-highlighted where a grammar\n * exists, with an optional copy button. It contains no textarea, input, select\n * or contenteditable element, so it is safe on pages that must not accept\n * input. For an editable or selectable source surface, use `CodeView`.\n */\nexport const CodeBlock = forwardRef<HTMLDivElement, CodeBlockProps>(function CodeBlock(\n {\n code,\n language = \"plaintext\",\n copyable = true,\n title,\n showLineNumbers = false,\n wrap = false,\n copyLabels,\n onCopyCode,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const tokens = useMemo(() => tokensFor(code, language), [code, language]);\n const html = useMemo(\n () => (showLineNumbers ? null : highlightCodeWithVariables(code, tokens)),\n [code, tokens, showLineNumbers],\n );\n const lines = useMemo(() => {\n if (!showLineNumbers) return null;\n const all = highlightLines(code, tokens);\n // A trailing newline ends the last line; it does not start a new one.\n if (all.length > 1 && code.endsWith(\"\\n\")) all.pop();\n return all;\n }, [code, tokens, showLineNumbers]);\n\n const [copyState, setCopyState] = useState<CopyState>(\"idle\");\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(timer.current), []);\n\n // Latest props at click time, without re-creating the handler.\n const latest = useRef({ code, onCopyCode });\n latest.current = { code, onCopyCode };\n\n const onCopyClick = useCallback(async () => {\n const { code: text, onCopyCode: report } = latest.current;\n // Raw `code`, never the highlighted HTML. `defaultClipboardWriter` throws\n // when `navigator.clipboard` is absent (SSR, insecure context), and\n // `runWriter` turns a throw, rejection or hang into `false`.\n const ok = await runWriter(defaultClipboardWriter, { kind: \"code\", text, html: \"\" });\n setCopyState(ok ? \"copied\" : \"failed\");\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopyState(\"idle\"), FEEDBACK_MS);\n report?.({ text, ok });\n }, []);\n\n const labels = {\n copy: copyLabels?.copy ?? \"Copy code\",\n copied: copyLabels?.copied ?? \"Copied\",\n failed: copyLabels?.failed ?? \"Copy failed\",\n };\n const label = copyState === \"copied\" ? labels.copied : copyState === \"failed\" ? labels.failed : labels.copy;\n const hasHeader = title != null && title !== false;\n const floating = copyable && !hasHeader;\n\n const copyButton = copyable ? (\n <Button\n type=\"button\"\n size=\"xs\"\n variant=\"ghost\"\n icon={copyState === \"copied\" ? \"check\" : copyState === \"failed\" ? \"x\" : \"copy\"}\n aria-label={label}\n title={label}\n data-react-fancy-code-block-copy=\"\"\n data-copy-state={copyState}\n onClick={onCopyClick}\n className={cn(\n floating && \"opacity-80 group-hover:opacity-100 focus-visible:opacity-100\",\n )}\n style={floating ? { backgroundColor: paletteColor(\"background\") } : undefined}\n >\n {/* Visible feedback; idle is icon-only when floating over the code. */}\n {copyState !== \"idle\" ? label : hasHeader ? \"Copy\" : undefined}\n </Button>\n ) : null;\n\n const gutterWidth = lines ? `${String(lines.length).length}ch` : undefined;\n\n return (\n <div\n ref={ref}\n data-react-fancy-code-block=\"\"\n data-language={language}\n data-wrap={wrap ? \"true\" : \"false\"}\n {...{ [CODE_PALETTE_ATTR]: \"\" }}\n className={cn(\n \"group relative overflow-hidden rounded-lg border\",\n CODE_PALETTE_DARK_CLASS,\n className,\n )}\n style={{\n // Both palettes; the dark one applies under the consumer's `dark`\n // variant or a `.dark` / `[data-theme=\"dark\"]` ancestor (code-palette).\n ...CODE_PALETTE_STYLE,\n backgroundColor: paletteColor(\"background\"),\n color: paletteColor(\"foreground\"),\n borderColor: paletteColor(\"gutterBorder\"),\n // `relative` inline too: the floating button and the live region are\n // absolute, and must not escape a host whose Tailwind lacks the class.\n position: \"relative\",\n ...style,\n }}\n {...rest}\n >\n {hasHeader && (\n <div\n data-react-fancy-code-block-header=\"\"\n className=\"flex items-center justify-between gap-2 border-b py-1 ps-3 pe-1 text-xs\"\n style={{\n backgroundColor: paletteColor(\"gutterBackground\"),\n color: paletteColor(\"gutterForeground\"),\n borderColor: paletteColor(\"gutterBorder\"),\n }}\n >\n <span data-react-fancy-code-block-title=\"\" className=\"min-w-0 truncate font-mono\">\n {title}\n </span>\n {copyButton}\n </div>\n )}\n\n <pre\n data-react-fancy-code-block-pre=\"\"\n // Code reads left-to-right whatever the page's direction: in an RTL\n // page it would otherwise right-align, and the bidi algorithm would\n // reorder its brackets and operators. The header around it, and the\n // floating copy button over it, stay with the LTR code.\n dir=\"ltr\"\n className={cn(TEXT_METRICS, \"border-none\", wrap ? \"overflow-x-hidden\" : \"overflow-x-auto\", floating && \"pr-12\")}\n style={{\n whiteSpace: wrap ? \"pre-wrap\" : \"pre\",\n overflowWrap: wrap ? \"break-word\" : \"normal\",\n backgroundColor: \"transparent\",\n color: \"inherit\",\n }}\n >\n {lines ? (\n <code\n data-react-fancy-code-block-code=\"\"\n style={{ display: wrap ? \"block\" : \"inline-block\", minWidth: \"100%\" }}\n >\n {lines.map((lineHtml, i) => (\n <span key={i} data-react-fancy-code-block-line={i + 1} style={{ display: \"flex\" }}>\n <span\n data-react-fancy-code-block-line-number=\"\"\n aria-hidden=\"true\"\n className=\"select-none\"\n style={{\n flex: \"none\",\n width: gutterWidth,\n marginRight: \"1.5ch\",\n textAlign: \"right\",\n color: paletteColor(\"gutterForeground\"),\n userSelect: \"none\",\n }}\n >\n {i + 1}\n </span>\n <span\n data-react-fancy-code-block-line-content=\"\"\n style={{ flex: \"1 1 auto\", minWidth: 0 }}\n dangerouslySetInnerHTML={{ __html: lineHtml }}\n />\n </span>\n ))}\n </code>\n ) : (\n <code data-react-fancy-code-block-code=\"\" dangerouslySetInnerHTML={{ __html: html ?? \"\" }} />\n )}\n </pre>\n\n {floating && (\n <div\n data-react-fancy-code-block-actions=\"\"\n className=\"absolute right-2 top-2\"\n style={{ position: \"absolute\", right: \"0.5rem\", top: \"0.5rem\" }}\n >\n {copyButton}\n </div>\n )}\n\n {copyable && (\n <span role=\"status\" aria-live=\"polite\" className=\"sr-only\" style={visuallyHidden}>\n {copyState === \"idle\" ? \"\" : label}\n </span>\n )}\n </div>\n );\n});\n\nCodeBlock.displayName = \"CodeBlock\";\n"]}
@@ -1,7 +1,7 @@
1
- import { Textarea } from './chunk-UVUBV4VZ.js';
1
+ import { Textarea } from './chunk-S2ID4NNQ.js';
2
2
  import { Portal } from './chunk-RBCMKPBX.js';
3
3
  import { Badge } from './chunk-OZ4QFJ7N.js';
4
- import { Button } from './chunk-4GPH7HOR.js';
4
+ import { Button } from './chunk-Q4CNEHVN.js';
5
5
  import { useRef, useState, useCallback, useEffect } from 'react';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
@@ -174,7 +174,7 @@ function Wand({
174
174
  style: { left: pos.x, top: pos.y - 6 },
175
175
  children: [
176
176
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 rounded-full border border-violet-300 bg-[color:var(--fancy-surface,var(--color-white))] px-1.5 py-1 shadow-lg ring-1 ring-violet-200 dark:border-violet-700 dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:ring-violet-900", children: [
177
- /* @__PURE__ */ jsxs("span", { className: "ml-1 mr-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300", children: [
177
+ /* @__PURE__ */ jsxs("span", { className: "ms-1 me-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300", children: [
178
178
  /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\u2726" }),
179
179
  appearance === "floating" && /* @__PURE__ */ jsxs(Badge, { color: "violet", children: [
180
180
  selectionLength,
@@ -192,7 +192,7 @@ function Wand({
192
192
  title: a.hint,
193
193
  children: [
194
194
  busy === a.id ? "\u2026" : appearance === "pill" ? a.label[0] : a.label,
195
- appearance === "floating" && a.tag && /* @__PURE__ */ jsx("span", { className: "ml-1 rounded-full bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] px-1 text-[9px] font-medium text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]", children: a.tag })
195
+ appearance === "floating" && a.tag && /* @__PURE__ */ jsx("span", { className: "ms-1 rounded-full bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] px-1 text-[9px] font-medium text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]", children: a.tag })
196
196
  ]
197
197
  },
198
198
  a.id
@@ -229,6 +229,9 @@ function selectionPoint(ta, start, end) {
229
229
  "lineHeight",
230
230
  "fontFamily",
231
231
  "textAlign",
232
+ // An RTL textarea lays its lines out from the right; without this the
233
+ // mirror measures the caret as if it were LTR.
234
+ "direction",
232
235
  "textTransform",
233
236
  "textIndent",
234
237
  "letterSpacing",
@@ -260,5 +263,5 @@ function selectionPoint(ta, start, end) {
260
263
  }
261
264
 
262
265
  export { MagicWand };
263
- //# sourceMappingURL=chunk-F4OYQ2XZ.js.map
264
- //# sourceMappingURL=chunk-F4OYQ2XZ.js.map
266
+ //# sourceMappingURL=chunk-AR5DLM4K.js.map
267
+ //# sourceMappingURL=chunk-AR5DLM4K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/MagicWand/MagicWand.tsx"],"names":[],"mappings":"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","file":"chunk-AR5DLM4K.js","sourcesContent":["import { useCallback, useEffect, useRef, useState, type RefObject } from \"react\";\nimport { Button } from \"../Button\";\nimport { Badge } from \"../Badge\";\nimport { Portal } from \"../Portal\";\nimport { Textarea } from \"../inputs/Textarea/Textarea\";\n\n/**\n * MagicWand — selection-anchored floating toolbar for text inputs.\n *\n * When the user highlights text inside the wrapped <Textarea>, a small\n * pill of AI quick-actions floats above the selection. Clicking an\n * action invokes the host callback with the selected substring + range;\n * the host returns a replacement string and MagicWand swaps it in-place.\n *\n * <MagicWand\n * value={body}\n * onValueChange={setBody}\n * actions={[\n * { id: \"rephrase\", label: \"Rephrase\", hint: \"same meaning, different words\",\n * run: async (s) => await ai.rephrase(s) },\n * …\n * ]}\n * />\n *\n * Pass `target` to act on a textarea, input or editor the HOST renders instead:\n * MagicWand then renders no textarea of its own, only the floating wand.\n *\n * <textarea ref={ref} value={body} onChange={(e) => setBody(e.target.value)} />\n * <MagicWand target={ref} value={body} onValueChange={setBody} actions={…} />\n *\n * Two appearances: `\"floating\"` (default — full labels) and `\"pill\"`\n * (icon-only, compact). Auto-hides on click-away or scroll by default.\n */\nexport type MagicWandSelection = { start: number; end: number; text: string };\n\nexport type MagicWandAction = {\n /** Stable id, also shown as the busy-state key. */\n id: string;\n /** Display label (first character used in `pill` mode). */\n label: string;\n /** Tooltip body. */\n hint?: string;\n /** Optional kind chip rendered next to the label. */\n tag?: string;\n /** Returns the replacement text for the selection. */\n run: (selection: string, range: MagicWandSelection) => Promise<string> | string;\n};\n\nexport type MagicWandAppearance = \"pill\" | \"floating\";\n\n/** A viewport rectangle, the shape `getBoundingClientRect()` returns. */\nexport type MagicWandRect = { left: number; top: number; width: number; height: number };\n\n/**\n * How MagicWand reads a selection out of an editor it does not own — a code\n * editor, a contenteditable, anything that is not a plain textarea.\n *\n * Read-only on purpose. The write goes through `onValueChange`, like every other\n * edit, so the host's `value` stays the one source of truth and the editor is\n * updated the way it always is: from that value.\n */\nexport interface MagicWandTargetAdapter {\n /**\n * The editor's element. MagicWand listens on it for `mouseup` / `keyup` /\n * `select` to know the selection may have changed, and treats a click inside\n * it as \"not away\" for `autoHide`.\n */\n element: RefObject<HTMLElement | null> | HTMLElement | null;\n /** The selection as offsets into `value`. `null` or `start === end` hides the wand. */\n getSelection: () => { start: number; end: number } | null;\n /** Where the selection is on screen. Default: the top-centre of `element`. */\n getSelectionRect?: () => MagicWandRect | null;\n}\n\n/** A host-owned textarea / input by ref, or an adapter for anything else. */\nexport type MagicWandTarget =\n | RefObject<HTMLTextAreaElement | HTMLInputElement | null>\n | MagicWandTargetAdapter;\n\nexport interface MagicWandProps {\n /** Controlled value — of the built-in textarea, or of `target`. */\n value: string;\n /** Called on every edit, and with the result of an action. */\n onValueChange: (v: string) => void;\n /** Action list. */\n actions: MagicWandAction[];\n /**\n * Act on a textarea / input / editor the host renders, instead of rendering\n * one. A ref to a textarea or input works as is; anything else takes a\n * `MagicWandTargetAdapter`. `value` must still be the target's current value.\n */\n target?: MagicWandTarget;\n /** Visual treatment. Defaults to \"floating\". */\n appearance?: MagicWandAppearance;\n /** Auto-hide the wand on click-away or scroll. Defaults to true. */\n autoHide?: boolean;\n /** Textarea rows (built-in textarea only). */\n rows?: number;\n /** Placeholder (built-in textarea only). */\n placeholder?: string;\n /** Called after an action runs successfully. */\n onAction?: (action: MagicWandAction, selection: MagicWandSelection, replacement: string) => void;\n}\n\nfunction isAdapter(target: MagicWandTarget): target is MagicWandTargetAdapter {\n return typeof (target as MagicWandTargetAdapter).getSelection === \"function\";\n}\n\nfunction targetElement(target: MagicWandTarget | undefined): HTMLElement | null {\n if (!target) return null;\n if (!isAdapter(target)) return target.current;\n const el = target.element;\n if (!el) return null;\n return el instanceof HTMLElement ? el : el.current;\n}\n\ntype TextField = HTMLTextAreaElement | HTMLInputElement;\n\n/** The selection and the viewport point the wand should sit above, or null. */\nfunction readTarget(\n target: MagicWandTarget,\n): { start: number; end: number; point: { x: number; y: number } } | null {\n if (!isAdapter(target)) {\n const field = target.current as TextField | null;\n if (!field) return null;\n const start = field.selectionStart ?? 0;\n const end = field.selectionEnd ?? 0;\n if (start === end) return null;\n return { start, end, point: selectionPoint(field, start, end) };\n }\n\n const range = target.getSelection();\n if (!range || range.start === range.end) return null;\n const rect = target.getSelectionRect?.() ?? targetElement(target)?.getBoundingClientRect() ?? null;\n const point = rect ? { x: rect.left + rect.width / 2, y: rect.top } : { x: 0, y: 0 };\n return { start: Math.min(range.start, range.end), end: Math.max(range.start, range.end), point };\n}\n\nexport function MagicWand({\n value,\n onValueChange,\n actions,\n target,\n appearance = \"floating\",\n autoHide = true,\n rows = 6,\n placeholder,\n onAction,\n}: MagicWandProps) {\n const taRef = useRef<HTMLTextAreaElement>(null);\n const wandRef = useRef<HTMLDivElement>(null);\n const [sel, setSel] = useState<MagicWandSelection | null>(null);\n const [pos, setPos] = useState<{ x: number; y: number } | null>(null);\n const [busy, setBusy] = useState<string | null>(null);\n\n const external = target !== undefined;\n // Latest value + target for the listeners, which attach once per element.\n const latest = useRef({ value, target });\n latest.current = { value, target };\n\n const hide = useCallback(() => {\n setSel(null);\n setPos(null);\n }, []);\n\n const measureSelection = useCallback(() => {\n const ta = taRef.current;\n if (!ta) return;\n const start = ta.selectionStart ?? 0;\n const end = ta.selectionEnd ?? 0;\n if (start === end) {\n hide();\n return;\n }\n const text = ta.value.slice(start, end);\n setSel({ start, end, text });\n // The built-in wand is positioned inside this component's `relative` box.\n const point = selectionPoint(ta, start, end);\n const box = (ta.offsetParent as HTMLElement | null)?.getBoundingClientRect() ?? ta.getBoundingClientRect();\n setPos({ x: point.x - box.left, y: point.y - box.top });\n }, [hide]);\n\n const measureTarget = useCallback(() => {\n const { target: t, value: v } = latest.current;\n if (!t) return;\n const read = readTarget(t);\n if (!read) {\n hide();\n return;\n }\n setSel({ start: read.start, end: read.end, text: v.slice(read.start, read.end) });\n setPos(read.point);\n }, [hide]);\n\n // The target's element is only known after the host renders it, so it is\n // re-resolved after every render and the listeners move if it changes.\n const [targetEl, setTargetEl] = useState<HTMLElement | null>(null);\n useEffect(() => {\n const next = targetElement(target);\n if (next !== targetEl) setTargetEl(next);\n });\n\n useEffect(() => {\n if (!targetEl) return;\n const events = [\"mouseup\", \"keyup\", \"select\"] as const;\n for (const e of events) targetEl.addEventListener(e, measureTarget);\n return () => {\n for (const e of events) targetEl.removeEventListener(e, measureTarget);\n };\n }, [targetEl, measureTarget]);\n\n useEffect(() => {\n if (!autoHide) return;\n window.addEventListener(\"scroll\", hide, true);\n return () => window.removeEventListener(\"scroll\", hide, true);\n }, [autoHide, hide]);\n\n useEffect(() => {\n if (!autoHide) return;\n const onDocMouseDown = (e: MouseEvent) => {\n const node = e.target as Node;\n if (wandRef.current?.contains(node)) return;\n if (taRef.current?.contains(node)) return;\n if (targetElement(latest.current.target)?.contains(node)) return;\n hide();\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [autoHide, hide]);\n\n const handleAction = async (action: MagicWandAction) => {\n if (!sel) return;\n setBusy(action.id);\n try {\n const replacement = await action.run(sel.text, sel);\n const next = value.slice(0, sel.start) + replacement + value.slice(sel.end);\n onValueChange(next);\n onAction?.(action, sel, replacement);\n } finally {\n setBusy(null);\n hide();\n }\n };\n\n const wand =\n sel && pos ? (\n <Wand\n ref={wandRef}\n pos={pos}\n fixed={external}\n actions={actions}\n appearance={appearance}\n busy={busy}\n onAction={handleAction}\n selectionLength={sel.text.length}\n />\n ) : null;\n\n if (external) {\n return wand ? <Portal>{wand}</Portal> : null;\n }\n\n return (\n <div className=\"relative\">\n <Textarea\n ref={taRef as unknown as React.Ref<HTMLTextAreaElement>}\n value={value}\n onValueChange={onValueChange}\n onSelect={measureSelection}\n onKeyUp={measureSelection}\n onMouseUp={measureSelection}\n rows={rows}\n placeholder={placeholder}\n />\n {wand}\n </div>\n );\n}\n\nfunction Wand({\n ref,\n pos,\n fixed,\n actions,\n appearance,\n busy,\n onAction,\n selectionLength,\n}: {\n ref: React.RefObject<HTMLDivElement | null>;\n pos: { x: number; y: number };\n /** Viewport-positioned (portalled, for an external target) rather than inside the wrapper. */\n fixed: boolean;\n actions: MagicWandAction[];\n appearance: MagicWandAppearance;\n busy: string | null;\n onAction: (a: MagicWandAction) => void;\n selectionLength: number;\n}) {\n return (\n <div\n ref={ref}\n data-react-fancy-magic-wand=\"\"\n className={`${fixed ? \"fixed z-50\" : \"absolute z-20\"} -translate-x-1/2 -translate-y-full`}\n style={{ left: pos.x, top: pos.y - 6 }}\n >\n <div className=\"flex items-center gap-1 rounded-full border border-violet-300 bg-[color:var(--fancy-surface,var(--color-white))] px-1.5 py-1 shadow-lg ring-1 ring-violet-200 dark:border-violet-700 dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:ring-violet-900\">\n <span className=\"ms-1 me-0.5 inline-flex items-center gap-1 text-[10px] font-medium text-violet-700 dark:text-violet-300\">\n <span aria-hidden>✦</span>\n {appearance === \"floating\" && (\n <Badge color=\"violet\">{selectionLength} chars</Badge>\n )}\n </span>\n {actions.map((a) => (\n <Button\n key={a.id}\n size=\"sm\"\n variant=\"ghost\"\n data-react-fancy-magic-wand-action={a.id}\n onClick={() => onAction(a)}\n disabled={busy !== null}\n title={a.hint}\n >\n {busy === a.id ? \"…\" : appearance === \"pill\" ? a.label[0] : a.label}\n {appearance === \"floating\" && a.tag && (\n <span className=\"ms-1 rounded-full bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] px-1 text-[9px] font-medium text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\">\n {a.tag}\n </span>\n )}\n </Button>\n ))}\n </div>\n <div className=\"absolute left-1/2 top-full -translate-x-1/2 -translate-y-px\">\n <div className=\"h-2 w-2 rotate-45 border-b border-r border-violet-300 bg-[color:var(--fancy-surface,var(--color-white))] dark:border-violet-700 dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\" />\n </div>\n </div>\n );\n}\n\n/**\n * Caret/selection geometry: mirror the field into a hidden div and measure the\n * selected substring's bounding rect. Returns the VIEWPORT point at the top\n * centre of the selection. Not perfect for resized textareas, but works for\n * typical chat composers.\n */\nfunction selectionPoint(ta: TextField, start: number, end: number): { x: number; y: number } {\n const div = document.createElement(\"div\");\n const style = getComputedStyle(ta);\n const props = [\n \"boxSizing\",\n \"width\",\n \"height\",\n \"overflowX\",\n \"overflowY\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"lineHeight\",\n \"fontFamily\",\n \"textAlign\",\n // An RTL textarea lays its lines out from the right; without this the\n // mirror measures the caret as if it were LTR.\n \"direction\",\n \"textTransform\",\n \"textIndent\",\n \"letterSpacing\",\n \"wordSpacing\",\n \"tabSize\",\n ] as const;\n for (const p of props) (div.style as any)[p] = (style as any)[p];\n div.style.position = \"absolute\";\n div.style.top = \"-9999px\";\n div.style.left = \"-9999px\";\n div.style.whiteSpace = \"pre-wrap\";\n div.style.wordWrap = \"break-word\";\n\n const value = ta.value;\n div.textContent = value.substring(0, start);\n const startSpan = document.createElement(\"span\");\n startSpan.textContent = value.substring(start, end) || \".\";\n div.appendChild(startSpan);\n\n document.body.appendChild(div);\n const taRect = ta.getBoundingClientRect();\n const spanRect = startSpan.getBoundingClientRect();\n const divRect = div.getBoundingClientRect();\n const offsetX = spanRect.left - divRect.left;\n const offsetY = spanRect.top - divRect.top;\n document.body.removeChild(div);\n\n return {\n x: taRect.left + offsetX + spanRect.width / 2,\n y: taRect.top + offsetY - ta.scrollTop,\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkP53432AK_cjs = require('./chunk-P53432AK.cjs');
4
- var chunkQF7CD4JH_cjs = require('./chunk-QF7CD4JH.cjs');
5
- var chunkO3F6DYWR_cjs = require('./chunk-O3F6DYWR.cjs');
3
+ var chunkUIBAIWUR_cjs = require('./chunk-UIBAIWUR.cjs');
4
+ var chunkQ7XL37T3_cjs = require('./chunk-Q7XL37T3.cjs');
5
+ var chunkXG6J5MOK_cjs = require('./chunk-XG6J5MOK.cjs');
6
6
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
7
7
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
8
8
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -48,7 +48,7 @@ function CheckboxGroup({
48
48
  lg: "h-5 w-5",
49
49
  xl: "h-6 w-6"
50
50
  }[size];
51
- const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkP53432AK_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkO3F6DYWR_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
51
+ const content = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkUIBAIWUR_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: list.map(chunkXG6J5MOK_cjs.resolveOption).filter((o) => value.includes(o.value)).map((o) => o.label).join(", ") }) : /* @__PURE__ */ jsxRuntime.jsx(
52
52
  "div",
53
53
  {
54
54
  ...rest,
@@ -62,7 +62,7 @@ function CheckboxGroup({
62
62
  className
63
63
  ),
64
64
  children: list.map((option, index) => {
65
- const resolved = chunkO3F6DYWR_cjs.resolveOption(option);
65
+ const resolved = chunkXG6J5MOK_cjs.resolveOption(option);
66
66
  const optionId = `${groupId}-${index}`;
67
67
  const isChecked = value.includes(resolved.value);
68
68
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2", children: [
@@ -80,7 +80,7 @@ function CheckboxGroup({
80
80
  className: chunkZU5Q77OT_cjs.cn(
81
81
  sizeClasses,
82
82
  "cursor-pointer rounded border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-[color:var(--fancy-input,var(--color-white))] text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)]",
83
- chunkO3F6DYWR_cjs.dirtyRingClasses(dirty),
83
+ chunkXG6J5MOK_cjs.dirtyRingClasses(dirty),
84
84
  error && "border-red-500"
85
85
  )
86
86
  }
@@ -105,7 +105,7 @@ function CheckboxGroup({
105
105
  );
106
106
  if (label || error || description) {
107
107
  return /* @__PURE__ */ jsxRuntime.jsx(
108
- chunkQF7CD4JH_cjs.Field,
108
+ chunkQ7XL37T3_cjs.Field,
109
109
  {
110
110
  label,
111
111
  labelHidden,
@@ -122,5 +122,5 @@ function CheckboxGroup({
122
122
  CheckboxGroup.displayName = "CheckboxGroup";
123
123
 
124
124
  exports.CheckboxGroup = CheckboxGroup;
125
- //# sourceMappingURL=chunk-DJB3N4G3.cjs.map
126
- //# sourceMappingURL=chunk-DJB3N4G3.cjs.map
125
+ //# sourceMappingURL=chunk-AVGZ4PPC.cjs.map
126
+ //# sourceMappingURL=chunk-AVGZ4PPC.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-DJB3N4G3.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-[color:var(--fancy-input,var(--color-white))] text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/CheckboxGroup/CheckboxGroup.tsx"],"names":["useId","useFieldMode","useInlineEdit","useControllableState","jsx","DisplayValue","resolveOption","cn","jsxs","dirtyRingClasses","Field"],"mappings":"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","file":"chunk-AVGZ4PPC.cjs","sourcesContent":["import { useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses, resolveOption } from \"../inputs.utils\";\nimport type { CheckboxGroupProps } from \"./CheckboxGroup.types\";\n\nexport function CheckboxGroup<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n name,\n list,\n value: controlledValue,\n defaultValue = [],\n onValueChange,\n orientation = \"vertical\",\n mode,\n ...rest\n}: CheckboxGroupProps<V>) {\n const groupId = useId();\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onValueChange,\n );\n\n const handleToggle = (optionValue: V) => {\n const next = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n setValue(next);\n };\n\n const sizeClasses = {\n xs: \"h-3.5 w-3.5\",\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const content = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {list\n .map(resolveOption)\n .filter((o) => value.includes(o.value))\n .map((o) => o.label)\n .join(\", \")}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n data-react-fancy-checkbox-group=\"\"\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"flex gap-3\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className,\n )}\n >\n {list.map((option, index) => {\n const resolved = resolveOption(option);\n const optionId = `${groupId}-${index}`;\n const isChecked = value.includes(resolved.value);\n\n return (\n <div key={optionId} className=\"flex items-start gap-2\">\n <input\n id={optionId}\n type=\"checkbox\"\n name={name}\n value={String(resolved.value)}\n checked={isChecked}\n disabled={disabled || resolved.disabled}\n autoFocus={interactive && index === 0}\n onChange={() => handleToggle(resolved.value)}\n className={cn(\n sizeClasses,\n \"cursor-pointer rounded border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-[color:var(--fancy-input,var(--color-white))] text-blue-600 transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:ring-blue-500/40 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)]\",\n dirtyRingClasses(dirty),\n error && \"border-red-500\",\n )}\n />\n <div className=\"flex flex-col\">\n <label\n htmlFor={optionId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n (disabled || resolved.disabled) &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {resolved.label}\n </label>\n {resolved.description && (\n <span className=\"text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {resolved.description}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n}\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"]}
@@ -161,7 +161,7 @@ function ChevronIcon({
161
161
  strokeLinecap: "round",
162
162
  strokeLinejoin: "round",
163
163
  style: { transform },
164
- className,
164
+ className: cn(className, orientation === "horizontal" && "rtl:-scale-x-100"),
165
165
  "aria-hidden": "true",
166
166
  children: /* @__PURE__ */ jsx("polyline", { points: "6 4 10 8 6 12" })
167
167
  }
@@ -269,5 +269,5 @@ AccordionPanel.Trigger = AccordionPanelTrigger;
269
269
  AccordionPanel.Content = AccordionPanelContent;
270
270
 
271
271
  export { AccordionPanel, AccordionPanelContent, AccordionPanelSection, AccordionPanelTrigger, useAccordionPanel, useAccordionSection };
272
- //# sourceMappingURL=chunk-RANTYGKW.js.map
273
- //# sourceMappingURL=chunk-RANTYGKW.js.map
272
+ //# sourceMappingURL=chunk-AXW55PQG.js.map
273
+ //# sourceMappingURL=chunk-AXW55PQG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AccordionPanel/AccordionPanel.context.ts","../src/components/AccordionPanel/AccordionPanel.Section.tsx","../src/components/AccordionPanel/AccordionPanel.Trigger.tsx","../src/components/AccordionPanel/AccordionPanel.Content.tsx","../src/components/AccordionPanel/AccordionPanel.tsx"],"names":["jsx","useMemo"],"mappings":"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","file":"chunk-AXW55PQG.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { AccordionOrientation } from \"./AccordionPanel.types\";\n\n// ── Panel-level context ─────────────────────────────────────────────────\n\nexport interface AccordionPanelContextValue {\n orientation: AccordionOrientation;\n isOpen: (id: string) => boolean;\n toggle: (id: string) => void;\n open: (id: string) => void;\n close: (id: string) => void;\n /** Ordered list of all section ids registered in this panel */\n sectionIds: string[];\n registerSection: (id: string) => () => void;\n}\n\nexport const AccordionPanelContext =\n createContext<AccordionPanelContextValue | null>(null);\n\nexport function useAccordionPanel(): AccordionPanelContextValue {\n const ctx = useContext(AccordionPanelContext);\n if (!ctx) {\n throw new Error(\n \"AccordionPanel components must be used inside <AccordionPanel>\",\n );\n }\n return ctx;\n}\n\n// ── Section-level context ───────────────────────────────────────────────\n\nexport interface AccordionSectionContextValue {\n id: string;\n open: boolean;\n pinned: boolean;\n orientation: AccordionOrientation;\n toggle: () => void;\n}\n\nexport const AccordionSectionContext =\n createContext<AccordionSectionContextValue | null>(null);\n\nexport function useAccordionSection(): AccordionSectionContextValue {\n const ctx = useContext(AccordionSectionContext);\n if (!ctx) {\n throw new Error(\n \"<AccordionPanel.Trigger> must be rendered inside <AccordionPanel.Section>\",\n );\n }\n return ctx;\n}\n","import { useEffect, useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport {\n AccordionSectionContext,\n useAccordionPanel,\n} from \"./AccordionPanel.context\";\nimport type { AccordionPanelSectionProps } from \"./AccordionPanel.types\";\n\n/**\n * One collapsible section inside an AccordionPanel.\n *\n * Compose with `<AccordionPanel.Trigger>` and `<AccordionPanel.Content>`\n * children — Content renders only when open, Trigger always renders and\n * adapts its look by state. Children that are not Trigger/Content are\n * rendered as-is, regardless of state, so static decorations stay put.\n *\n * Pinned sections never collapse and don't need a Trigger.\n */\nexport function AccordionPanelSection({\n id,\n pinned = false,\n className,\n openClassName,\n closedClassName,\n unstyled,\n children,\n}: AccordionPanelSectionProps) {\n const panel = useAccordionPanel();\n const { orientation, isOpen, toggle, registerSection } = panel;\n\n useEffect(() => registerSection(id), [id, registerSection]);\n\n const open = pinned || isOpen(id);\n\n const sectionCtx = useMemo(\n () => ({\n id,\n open,\n pinned,\n orientation,\n toggle: () => toggle(id),\n }),\n [id, open, pinned, orientation, toggle],\n );\n\n return (\n <AccordionSectionContext.Provider value={sectionCtx}>\n <div\n data-react-fancy-accordion-section=\"\"\n data-state={open ? \"open\" : \"closed\"}\n data-pinned={pinned ? \"\" : undefined}\n data-orientation={orientation}\n className={cn(\n \"flex shrink-0\",\n !unstyled && \"items-center gap-1\",\n orientation === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n className,\n open ? openClassName : closedClassName,\n )}\n >\n {children}\n </div>\n </AccordionSectionContext.Provider>\n );\n}\n\nAccordionPanelSection.displayName = \"AccordionPanelSection\";\n","import { cn } from \"../../utils/cn\";\nimport { useAccordionSection } from \"./AccordionPanel.context\";\nimport type {\n AccordionPanelTriggerProps,\n SectionRenderable,\n SectionRenderState,\n} from \"./AccordionPanel.types\";\n\nfunction renderSlot(slot: SectionRenderable, state: SectionRenderState) {\n return typeof slot === \"function\" ? slot(state) : slot;\n}\n\n/**\n * Trigger for an AccordionPanel.Section.\n *\n * Has two visual roles, picked automatically from section state:\n *\n * - When the section is OPEN: renders as a thin divider on the section's\n * trailing edge. Hovering reveals an inset chevron pointing toward the\n * section so the user knows clicking will collapse it.\n *\n * - When the section is CLOSED: renders as a standalone chevron button\n * in place of the section content. Clicking re-expands the section.\n *\n * Supply `children` (node or render-prop) to fully replace the default\n * rendering. The render-prop receives `{ open, toggle, orientation, id }`.\n */\nexport function AccordionPanelTrigger({\n children,\n className,\n \"aria-label\": ariaLabel,\n}: AccordionPanelTriggerProps) {\n const { id, open, orientation, toggle } = useAccordionSection();\n const state: SectionRenderState = { id, open, orientation, toggle };\n\n // Custom render path — caller is in charge of look & feel.\n if (children !== undefined) {\n return (\n <div\n data-react-fancy-accordion-trigger=\"\"\n data-state={open ? \"open\" : \"closed\"}\n data-orientation={orientation}\n className={className}\n >\n {renderSlot(children, state)}\n </div>\n );\n }\n\n // Default rendering ----------------------------------------------------\n\n if (open) {\n // Trailing-edge divider. The visible line is 1px (rendered via the\n // ::before pseudo-element so it stays narrow); the button's actual\n // hitbox is much wider (w-3 / h-3 = 12px) so users don't have to land\n // pixel-perfect on the line. Hovering the hitbox highlights the line\n // and reveals an inset chevron signalling \"click to collapse\".\n return (\n <button\n type=\"button\"\n onClick={toggle}\n aria-label={ariaLabel ?? \"Collapse section\"}\n data-react-fancy-accordion-trigger=\"\"\n data-state=\"open\"\n data-orientation={orientation}\n className={cn(\n \"group relative flex shrink-0 items-center justify-center cursor-pointer\",\n \"text-zinc-500 dark:text-zinc-500\",\n \"hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n // Wide hitbox + thin visible line (drawn via ::before).\n orientation === \"horizontal\"\n ? \"w-3 self-stretch\"\n : \"h-3 self-stretch\",\n \"before:absolute before:bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:before:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n \"before:transition-colors group-hover:before:bg-zinc-400 dark:group-hover:before:bg-zinc-500\",\n orientation === \"horizontal\"\n ? \"before:top-0 before:bottom-0 before:w-px before:left-1/2 before:-translate-x-1/2\"\n : \"before:left-0 before:right-0 before:h-px before:top-1/2 before:-translate-y-1/2\",\n \"transition-colors\",\n className,\n )}\n >\n <ChevronIcon\n orientation={orientation}\n purpose=\"collapse\"\n className=\"relative opacity-0 group-hover:opacity-100 transition-opacity\"\n />\n </button>\n );\n }\n\n // Closed: standalone chevron button. Click to re-expand.\n return (\n <button\n type=\"button\"\n onClick={toggle}\n aria-label={ariaLabel ?? \"Expand section\"}\n data-react-fancy-accordion-trigger=\"\"\n data-state=\"closed\"\n data-orientation={orientation}\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md\",\n \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n \"hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n \"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 \"transition-colors cursor-pointer\",\n orientation === \"horizontal\" ? \"h-8 w-6 mx-0.5\" : \"w-8 h-6 my-0.5\",\n className,\n )}\n >\n <ChevronIcon orientation={orientation} purpose=\"expand\" />\n </button>\n );\n}\n\nAccordionPanelTrigger.displayName = \"AccordionPanelTrigger\";\n\n// ── Internal chevron ────────────────────────────────────────────────────\n\nfunction ChevronIcon({\n orientation,\n purpose,\n className,\n}: {\n orientation: \"horizontal\" | \"vertical\";\n /** \"expand\" → closed section, click to open. \"collapse\" → open section, click to close. */\n purpose: \"expand\" | \"collapse\";\n className?: string;\n}) {\n // For horizontal: both states use a left-pointing chevron (matches the\n // screenshot convention — closed sections show ❮, open dividers reveal\n // a ❮ on hover indicating the section will collapse leftward).\n //\n // For vertical: closed shows down ⌄ (click to expand below); open\n // divider on hover shows up ⌃ (click to collapse upward).\n const transform =\n orientation === \"horizontal\"\n ? \"rotate(180deg)\"\n : purpose === \"expand\"\n ? \"rotate(90deg)\"\n : \"rotate(270deg)\";\n\n return (\n <svg\n viewBox=\"0 0 16 16\"\n width=\"12\"\n height=\"12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{ transform }}\n // Horizontal, it points toward the inline start, which is the right in\n // RTL. The mirror composes after the rotation; vertical is symmetric.\n className={cn(className, orientation === \"horizontal\" && \"rtl:-scale-x-100\")}\n aria-hidden=\"true\"\n >\n <polyline points=\"6 4 10 8 6 12\" />\n </svg>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useAccordionSection } from \"./AccordionPanel.context\";\n\nexport interface AccordionPanelContentProps {\n children: ReactNode;\n className?: string;\n /**\n * Skip the default flex-row/flex-col + items-center + gap classes so the\n * consumer can lay out the open-state content however they want (e.g. a\n * full-height chat panel with header/scroll/input rows). The\n * `data-react-fancy-accordion-content` attribute and conditional render\n * (only when the section is open) are kept.\n */\n unstyled?: boolean;\n}\n\n/**\n * Wrapper for the open-state content of a Section. Renders its children\n * only when the parent Section is open; returns `null` otherwise.\n *\n * Use this so siblings of `<AccordionPanel.Trigger>` inside a section can\n * cleanly toggle in/out of the DOM.\n *\n * The default styling assumes an inline cluster — flex row (horizontal\n * orientation) or column (vertical), centered, with a small gap. For panel\n * use cases where the content needs full-bleed layout (chat panes, canvas\n * surfaces, etc.), pass `unstyled` and supply your own className.\n */\nexport function AccordionPanelContent({\n children,\n className,\n unstyled,\n}: AccordionPanelContentProps) {\n const { open, orientation } = useAccordionSection();\n if (!open) return null;\n\n return (\n <div\n data-react-fancy-accordion-content=\"\"\n data-orientation={orientation}\n className={cn(\n !unstyled && \"flex items-center gap-1\",\n !unstyled && (orientation === \"horizontal\" ? \"flex-row\" : \"flex-col\"),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nAccordionPanelContent.displayName = \"AccordionPanelContent\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { AccordionPanelContext } from \"./AccordionPanel.context\";\nimport { AccordionPanelSection } from \"./AccordionPanel.Section\";\nimport { AccordionPanelTrigger } from \"./AccordionPanel.Trigger\";\nimport { AccordionPanelContent } from \"./AccordionPanel.Content\";\nimport type { AccordionPanelProps } from \"./AccordionPanel.types\";\n\n/**\n * Horizontal or vertical accordion of collapsible sections.\n *\n * Use the compound parts:\n * <AccordionPanel orientation=\"horizontal\" defaultValue={[\"wishlist\"]}>\n * <AccordionPanel.Section id=\"home\" pinned>\n * <Button icon=\"home\" />\n * </AccordionPanel.Section>\n * <AccordionPanel.Section id=\"wishlist\">\n * <Button icon=\"list\">Wishlist</Button>\n * </AccordionPanel.Section>\n * </AccordionPanel>\n *\n * Each non-pinned section renders a trigger (default chevron-divider) that\n * collapses/expands. Pass a custom `trigger` prop on a Section, or use the\n * exported `AccordionPanel.Trigger` directly to compose your own.\n */\nfunction AccordionPanelRoot({\n orientation = \"horizontal\",\n value: controlledValue,\n defaultValue,\n onValueChange,\n className,\n children,\n}: AccordionPanelProps) {\n const [openIds, setOpenIds] = useControllableState<string[]>(\n controlledValue,\n defaultValue ?? [],\n onValueChange,\n );\n\n const openSet = useMemo(() => new Set(openIds), [openIds]);\n\n const isOpen = useCallback((id: string) => openSet.has(id), [openSet]);\n\n const open = useCallback(\n (id: string) => {\n setOpenIds(openSet.has(id) ? (openIds ?? []) : [...(openIds ?? []), id]);\n },\n [openSet, openIds, setOpenIds],\n );\n\n const close = useCallback(\n (id: string) => {\n setOpenIds((openIds ?? []).filter((x) => x !== id));\n },\n [openIds, setOpenIds],\n );\n\n const toggle = useCallback(\n (id: string) => {\n setOpenIds(\n openSet.has(id)\n ? (openIds ?? []).filter((x) => x !== id)\n : [...(openIds ?? []), id],\n );\n },\n [openSet, openIds, setOpenIds],\n );\n\n // Track section order for downstream consumers (e.g. trigger direction\n // heuristics that need to know neighbors).\n const [sectionIds, setSectionIds] = useState<string[]>([]);\n const orderRef = useRef<string[]>([]);\n\n const registerSection = useCallback((id: string) => {\n if (!orderRef.current.includes(id)) {\n orderRef.current = [...orderRef.current, id];\n setSectionIds(orderRef.current);\n }\n return () => {\n orderRef.current = orderRef.current.filter((x) => x !== id);\n setSectionIds(orderRef.current);\n };\n }, []);\n\n const ctx = useMemo(\n () => ({\n orientation,\n isOpen,\n toggle,\n open,\n close,\n sectionIds,\n registerSection,\n }),\n [orientation, isOpen, toggle, open, close, sectionIds, registerSection],\n );\n\n return (\n <AccordionPanelContext.Provider value={ctx}>\n <div\n data-react-fancy-accordion-panel=\"\"\n data-orientation={orientation}\n className={cn(\n \"inline-flex items-stretch\",\n orientation === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n className,\n )}\n >\n {children}\n </div>\n </AccordionPanelContext.Provider>\n );\n}\n\nAccordionPanelRoot.displayName = \"AccordionPanel\";\n\n// ── Compound exports ────────────────────────────────────────────────────\n\ntype AccordionPanelType = typeof AccordionPanelRoot & {\n Section: typeof AccordionPanelSection;\n Trigger: typeof AccordionPanelTrigger;\n Content: typeof AccordionPanelContent;\n};\n\nexport const AccordionPanel = AccordionPanelRoot as AccordionPanelType;\nAccordionPanel.Section = AccordionPanelSection;\nAccordionPanel.Trigger = AccordionPanelTrigger;\nAccordionPanel.Content = AccordionPanelContent;\n"]}
@@ -1,4 +1,5 @@
1
1
  import { useAnimation } from './chunk-3K2CEAI7.js';
2
+ import { isRtl, directionOf } from './chunk-US5R36TQ.js';
2
3
  import { Portal } from './chunk-RBCMKPBX.js';
3
4
  import { useOutsideClick } from './chunk-RGANGU7X.js';
4
5
  import { useEscapeKey } from './chunk-YX6FTJ6N.js';
@@ -26,6 +27,7 @@ function ContextMenuTrigger({
26
27
  e.preventDefault();
27
28
  ctx.position.x = e.clientX;
28
29
  ctx.position.y = e.clientY;
30
+ ctx.position.dir = directionOf(e.currentTarget);
29
31
  ctx.setOpen(true);
30
32
  },
31
33
  [ctx]
@@ -101,7 +103,7 @@ function ContextMenuSubTrigger({ children, className }) {
101
103
  "aria-haspopup": "menu",
102
104
  "aria-expanded": open,
103
105
  className: cn(
104
- "flex w-full items-center justify-between rounded-lg px-3 py-2 text-left text-sm transition-colors",
106
+ "flex w-full items-center justify-between rounded-lg px-3 py-2 text-start text-sm transition-colors",
105
107
  "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))]",
106
108
  open && "bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
107
109
  className
@@ -113,7 +115,7 @@ function ContextMenuSubTrigger({ children, className }) {
113
115
  onClick: () => setOpen(!open),
114
116
  children: [
115
117
  /* @__PURE__ */ jsx("span", { children }),
116
- /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "ml-2 opacity-50", children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" }) })
118
+ /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "ms-2 opacity-50 rtl:-scale-x-100", children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" }) })
117
119
  ]
118
120
  }
119
121
  );
@@ -129,7 +131,9 @@ function ContextMenuSubContent({ children, className }) {
129
131
  if (!open || !ref.current) return;
130
132
  const pad = 8;
131
133
  const rect = ref.current.getBoundingClientRect();
132
- setFlipLeft(rect.right > window.innerWidth - pad);
134
+ setFlipLeft(
135
+ isRtl(ref.current) ? rect.left < pad : rect.right > window.innerWidth - pad
136
+ );
133
137
  const overflow = rect.bottom - (window.innerHeight - pad);
134
138
  if (overflow > 0) {
135
139
  const shifted = Math.min(overflow, rect.top - pad);
@@ -153,7 +157,7 @@ function ContextMenuSubContent({ children, className }) {
153
157
  role: "menu",
154
158
  className: cn(
155
159
  "absolute z-50 min-w-[8rem] rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
156
- flipLeft ? "right-full mr-1" : "left-full ml-1",
160
+ flipLeft ? "end-full me-1" : "start-full ms-1",
157
161
  maxH && "overflow-y-auto",
158
162
  className
159
163
  ),
@@ -170,6 +174,7 @@ function ContextMenuContent({
170
174
  const { open, setOpen, position } = useContextMenu();
171
175
  const menuRef = useRef(null);
172
176
  const [adjusted, setAdjusted] = useState(position);
177
+ const rtl = position.dir === "rtl";
173
178
  const close = useCallback(() => setOpen(false), [setOpen]);
174
179
  useOutsideClick(menuRef, close, open);
175
180
  useEscapeKey(close, open);
@@ -184,9 +189,14 @@ function ContextMenuContent({
184
189
  const pad = 8;
185
190
  let x = position.x;
186
191
  let y = position.y;
187
- if (x + rect.width > window.innerWidth - pad) x = window.innerWidth - rect.width - pad;
192
+ if (position.dir === "rtl") {
193
+ if (x - rect.width < pad) x = rect.width + pad;
194
+ if (x > window.innerWidth - pad) x = window.innerWidth - pad;
195
+ } else {
196
+ if (x + rect.width > window.innerWidth - pad) x = window.innerWidth - rect.width - pad;
197
+ if (x < pad) x = pad;
198
+ }
188
199
  if (y + rect.height > window.innerHeight - pad) y = window.innerHeight - rect.height - pad;
189
- if (x < pad) x = pad;
190
200
  if (y < pad) y = pad;
191
201
  setAdjusted({ x, y });
192
202
  });
@@ -211,7 +221,8 @@ function ContextMenuContent({
211
221
  animClass,
212
222
  className
213
223
  ),
214
- style: { left: adjusted.x, top: adjusted.y },
224
+ dir: position.dir,
225
+ style: { left: adjusted.x, top: adjusted.y, translate: rtl ? "-100% 0" : void 0 },
215
226
  children: /* @__PURE__ */ jsx(MenuGroupProvider, { children })
216
227
  }
217
228
  ) });
@@ -234,7 +245,7 @@ function ContextMenuItem({
234
245
  disabled,
235
246
  "aria-disabled": disabled,
236
247
  className: cn(
237
- "flex w-full items-center rounded-lg px-3 py-2 text-left text-sm transition-colors",
248
+ "flex w-full items-center rounded-lg px-3 py-2 text-start text-sm transition-colors",
238
249
  danger ? "text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950" : "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))]",
239
250
  disabled && "cursor-not-allowed opacity-50",
240
251
  className
@@ -280,5 +291,5 @@ var ContextMenu = Object.assign(ContextMenuRoot, {
280
291
  });
281
292
 
282
293
  export { ContextMenu, useContextMenu };
283
- //# sourceMappingURL=chunk-NSJBVV7R.js.map
284
- //# sourceMappingURL=chunk-NSJBVV7R.js.map
294
+ //# sourceMappingURL=chunk-BPTCMI3E.js.map
295
+ //# sourceMappingURL=chunk-BPTCMI3E.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ContextMenu/ContextMenu.context.ts","../src/components/ContextMenu/ContextMenuTrigger.tsx","../src/components/ContextMenu/ContextMenuSub.tsx","../src/components/ContextMenu/ContextMenuContent.tsx","../src/components/ContextMenu/ContextMenuItem.tsx","../src/components/ContextMenu/ContextMenuSeparator.tsx","../src/components/ContextMenu/ContextMenu.tsx"],"names":["createContext","jsx","useContext","useCallback","useRef","useState","useEffect"],"mappings":"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","file":"chunk-BPTCMI3E.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ContextMenuContextValue } from \"./ContextMenu.types\";\n\nexport const ContextMenuContext =\n createContext<ContextMenuContextValue | null>(null);\n\nexport function useContextMenu(): ContextMenuContextValue {\n const ctx = useContext(ContextMenuContext);\n if (!ctx) {\n throw new Error(\n \"ContextMenu compound components must be used within <ContextMenu>\",\n );\n }\n return ctx;\n}\n","import { useCallback, type MouseEvent } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useContextMenu } from \"./ContextMenu.context\";\nimport { directionOf } from \"../../utils/direction\";\nimport type { ContextMenuTriggerProps } from \"./ContextMenu.types\";\n\nexport function ContextMenuTrigger({\n children,\n className,\n}: ContextMenuTriggerProps) {\n const ctx = useContextMenu();\n\n const handleContextMenu = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n ctx.position.x = e.clientX;\n ctx.position.y = e.clientY;\n // Read here, at the trigger: the menu is portalled to <body>, where a\n // `dir` set on a wrapper rather than on <html> would not reach it.\n ctx.position.dir = directionOf(e.currentTarget as Element);\n ctx.setOpen(true);\n },\n [ctx],\n );\n\n return (\n <div data-react-fancy-context-menu-trigger=\"\" onContextMenu={handleContextMenu} className={cn(className)}>\n {children}\n </div>\n );\n}\n\nContextMenuTrigger.displayName = \"ContextMenuTrigger\";\n","import { createContext, useCallback, useContext, useEffect, useId, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { isRtl } from \"../../utils/direction\";\nimport type { ContextMenuSubProps, ContextMenuSubTriggerProps, ContextMenuSubContentProps } from \"./ContextMenu.types\";\n\n// ---------------------------------------------------------------------------\n// Sibling coordination: parent tracks which sub is active so opening one\n// immediately closes any previously-open sibling.\n// ---------------------------------------------------------------------------\n\ninterface MenuGroupContextValue {\n activeSubId: string | null;\n setActiveSub: (id: string | null) => void;\n}\n\nconst MenuGroupContext = createContext<MenuGroupContextValue>({\n activeSubId: null,\n setActiveSub: () => {},\n});\n\n/** Wrap sibling Subs so only one is open at a time. Placed inside Content/SubContent. */\nexport function MenuGroupProvider({ children }: { children: React.ReactNode }) {\n const [activeSubId, setActiveSub] = useState<string | null>(null);\n return (\n <MenuGroupContext.Provider value={{ activeSubId, setActiveSub }}>\n {children}\n </MenuGroupContext.Provider>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Sub components\n// ---------------------------------------------------------------------------\n\ninterface SubContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n cancelClose: () => void;\n}\n\nconst ContextMenuSubContext = createContext<SubContextValue>({\n open: false,\n setOpen: () => {},\n cancelClose: () => {},\n});\n\nexport function ContextMenuSub({ children }: ContextMenuSubProps) {\n const id = useId();\n const { activeSubId, setActiveSub } = useContext(MenuGroupContext);\n const open = activeSubId === id;\n const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const activeRef = useRef(activeSubId);\n activeRef.current = activeSubId;\n\n const setOpen = useCallback((v: boolean) => {\n if (closeTimer.current) { clearTimeout(closeTimer.current); closeTimer.current = null; }\n setActiveSub(v ? id : null);\n }, [id, setActiveSub]);\n\n const scheduleClose = useCallback(() => {\n if (closeTimer.current) clearTimeout(closeTimer.current);\n closeTimer.current = setTimeout(() => {\n if (activeRef.current === id) setActiveSub(null);\n }, 150);\n }, [id, setActiveSub]);\n\n const cancelClose = useCallback(() => {\n if (closeTimer.current) { clearTimeout(closeTimer.current); closeTimer.current = null; }\n }, []);\n\n useEffect(() => () => {\n if (closeTimer.current) clearTimeout(closeTimer.current);\n }, []);\n\n return (\n <div\n className=\"relative\"\n onMouseEnter={cancelClose}\n onMouseLeave={scheduleClose}\n data-react-fancy-context-menu-sub=\"\"\n >\n <ContextMenuSubContext.Provider value={{ open, setOpen, cancelClose }}>\n {children}\n </ContextMenuSubContext.Provider>\n </div>\n );\n}\n\nContextMenuSub.displayName = \"ContextMenuSub\";\n\nexport function ContextMenuSubTrigger({ children, className }: ContextMenuSubTriggerProps) {\n const { open, setOpen, cancelClose } = useContext(ContextMenuSubContext);\n\n return (\n <button\n type=\"button\"\n data-react-fancy-context-menu-sub-trigger=\"\"\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n className={cn(\n \"flex w-full items-center justify-between rounded-lg px-3 py-2 text-start text-sm transition-colors\",\n \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] 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 open && \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n className,\n )}\n onMouseEnter={() => {\n cancelClose();\n setOpen(true);\n }}\n onClick={() => setOpen(!open)}\n >\n <span>{children}</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"ms-2 opacity-50 rtl:-scale-x-100\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n );\n}\n\nContextMenuSubTrigger.displayName = \"ContextMenuSubTrigger\";\n\nexport function ContextMenuSubContent({ children, className }: ContextMenuSubContentProps) {\n const { open } = useContext(ContextMenuSubContext);\n const ref = useRef<HTMLDivElement>(null);\n const [flipLeft, setFlipLeft] = useState(false);\n const [topOffset, setTopOffset] = useState(0);\n const [maxH, setMaxH] = useState<number | undefined>(undefined);\n\n useEffect(() => {\n if (!open || !ref.current) return;\n const pad = 8;\n const rect = ref.current.getBoundingClientRect();\n\n // Horizontal: the submenu opens toward the inline END; flip it to the\n // inline start if that edge overflows (the right in LTR, the left in RTL).\n setFlipLeft(\n isRtl(ref.current) ? rect.left < pad : rect.right > window.innerWidth - pad,\n );\n\n // Vertical: shift up if overflowing bottom, cap height if still too tall\n const overflow = rect.bottom - (window.innerHeight - pad);\n if (overflow > 0) {\n const shifted = Math.min(overflow, rect.top - pad);\n setTopOffset(-shifted);\n if (overflow > shifted) {\n setMaxH(window.innerHeight - pad * 2);\n } else {\n setMaxH(undefined);\n }\n } else {\n setTopOffset(0);\n setMaxH(undefined);\n }\n }, [open]);\n\n if (!open) return null;\n\n return (\n <div\n ref={ref}\n data-react-fancy-context-menu-sub-content=\"\"\n role=\"menu\"\n className={cn(\n \"absolute z-50 min-w-[8rem] rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n flipLeft ? \"end-full me-1\" : \"start-full ms-1\",\n maxH && \"overflow-y-auto\",\n className,\n )}\n style={{ top: topOffset, maxHeight: maxH }}\n >\n <MenuGroupProvider>\n {children}\n </MenuGroupProvider>\n </div>\n );\n}\n\nContextMenuSubContent.displayName = \"ContextMenuSubContent\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { useContextMenu } from \"./ContextMenu.context\";\nimport { useOutsideClick } from \"../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport { MenuGroupProvider } from \"./ContextMenuSub\";\nimport type { ContextMenuContentProps } from \"./ContextMenu.types\";\n\nexport function ContextMenuContent({\n children,\n className,\n}: ContextMenuContentProps) {\n const { open, setOpen, position } = useContextMenu();\n const menuRef = useRef<HTMLDivElement>(null);\n const [adjusted, setAdjusted] = useState<{ x: number; y: number }>(position);\n const rtl = position.dir === \"rtl\";\n\n const close = useCallback(() => setOpen(false), [setOpen]);\n useOutsideClick(menuRef, close, open);\n useEscapeKey(close, open);\n\n // Clamp position to viewport after mount\n useEffect(() => {\n const node = menuRef.current;\n if (!open || !node) {\n setAdjusted(position);\n return;\n }\n requestAnimationFrame(() => {\n const rect = node.getBoundingClientRect();\n const pad = 8;\n let x = position.x;\n let y = position.y;\n if (position.dir === \"rtl\") {\n // In RTL `x` is the menu's RIGHT edge (see the translate below).\n if (x - rect.width < pad) x = rect.width + pad;\n if (x > window.innerWidth - pad) x = window.innerWidth - pad;\n } else {\n if (x + rect.width > window.innerWidth - pad) x = window.innerWidth - rect.width - pad;\n if (x < pad) x = pad;\n }\n if (y + rect.height > window.innerHeight - pad) y = window.innerHeight - rect.height - pad;\n if (y < pad) y = pad;\n setAdjusted({ x, y });\n });\n }, [open, position]);\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: \"fancy-scale-in\",\n exitClass: \"fancy-fade-out\",\n });\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <div\n ref={(node) => {\n menuRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current = node;\n }}\n data-react-fancy-context-menu=\"\"\n role=\"menu\"\n className={cn(\n \"fixed z-50 min-w-[8rem] rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n animClass,\n className,\n )}\n dir={position.dir}\n // The menu opens toward the inline END of the pointer: rightward in\n // LTR, leftward in RTL. Translating by its own width anchors the RIGHT\n // edge at the pointer with no measurement, so the first frame is\n // already on the correct side.\n style={{ left: adjusted.x, top: adjusted.y, translate: rtl ? \"-100% 0\" : undefined }}\n >\n <MenuGroupProvider>\n {children}\n </MenuGroupProvider>\n </div>\n </Portal>\n );\n}\n\nContextMenuContent.displayName = \"ContextMenuContent\";\n","import { cn } from \"../../utils/cn\";\nimport { useContextMenu } from \"./ContextMenu.context\";\nimport type { ContextMenuItemProps } from \"./ContextMenu.types\";\n\nexport function ContextMenuItem({\n children,\n onClick,\n disabled = false,\n danger = false,\n className,\n}: ContextMenuItemProps) {\n const { setOpen } = useContextMenu();\n\n return (\n <button\n type=\"button\"\n data-react-fancy-context-menu-item=\"\"\n role=\"menuitem\"\n disabled={disabled}\n aria-disabled={disabled}\n className={cn(\n \"flex w-full items-center rounded-lg px-3 py-2 text-start text-sm transition-colors\",\n danger\n ? \"text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950\"\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 disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n onClick={() => {\n if (disabled) return;\n onClick?.();\n setOpen(false);\n }}\n >\n {children}\n </button>\n );\n}\n\nContextMenuItem.displayName = \"ContextMenuItem\";\n","import { cn } from \"../../utils/cn\";\nimport type { ContextMenuSeparatorProps } from \"./ContextMenu.types\";\n\nexport function ContextMenuSeparator({ className }: ContextMenuSeparatorProps) {\n return (\n <div\n data-react-fancy-context-menu-separator=\"\"\n role=\"separator\"\n className={cn(\"my-1 h-px bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\", className)}\n />\n );\n}\n\nContextMenuSeparator.displayName = \"ContextMenuSeparator\";\n","import { useMemo, useRef, useState } from \"react\";\nimport { ContextMenuContext } from \"./ContextMenu.context\";\nimport { ContextMenuTrigger } from \"./ContextMenuTrigger\";\nimport { ContextMenuContent } from \"./ContextMenuContent\";\nimport { ContextMenuItem } from \"./ContextMenuItem\";\nimport { ContextMenuSeparator } from \"./ContextMenuSeparator\";\nimport { ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent } from \"./ContextMenuSub\";\nimport type { ContextMenuProps } from \"./ContextMenu.types\";\n\nfunction ContextMenuRoot({ children }: ContextMenuProps) {\n const [open, setOpen] = useState(false);\n const positionRef = useRef({ x: 0, y: 0 });\n\n const ctx = useMemo(\n () => ({ open, setOpen, position: positionRef.current }),\n [open],\n );\n\n return (\n <ContextMenuContext.Provider value={ctx}>\n {children}\n </ContextMenuContext.Provider>\n );\n}\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Item: ContextMenuItem,\n Separator: ContextMenuSeparator,\n Sub: ContextMenuSub,\n SubTrigger: ContextMenuSubTrigger,\n SubContent: ContextMenuSubContent,\n});\n"]}
@@ -84,7 +84,7 @@ function ChevronIcon({ open }) {
84
84
  strokeWidth: "2",
85
85
  strokeLinecap: "round",
86
86
  strokeLinejoin: "round",
87
- className: chunkZU5Q77OT_cjs.cn("shrink-0 transition-transform duration-150", open && "rotate-90"),
87
+ className: chunkZU5Q77OT_cjs.cn("shrink-0 transition-transform duration-150 rtl:-scale-x-100", open && "rotate-90 rtl:-rotate-90"),
88
88
  children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "9 18 15 12 9 6" })
89
89
  }
90
90
  );
@@ -246,7 +246,7 @@ function TreeNodeImpl({ node, depth }) {
246
246
  {
247
247
  "data-react-fancy-tree-drop-indicator": "before",
248
248
  className: "pointer-events-none h-0.5 rounded-full bg-blue-500",
249
- style: { marginLeft: paddingLeft }
249
+ style: { marginInlineStart: paddingLeft }
250
250
  }
251
251
  ),
252
252
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -260,7 +260,7 @@ function TreeNodeImpl({ node, depth }) {
260
260
  onContextMenu: handleContextMenu,
261
261
  disabled: node.disabled,
262
262
  className: chunkZU5Q77OT_cjs.cn(
263
- "flex w-full items-center gap-1 rounded-md py-0.5 text-left text-[13px] transition-colors",
263
+ "flex w-full items-center gap-1 rounded-md py-0.5 text-start text-[13px] transition-colors",
264
264
  isSelected ? "bg-blue-500/15 text-blue-600 dark:text-blue-400" : "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))]",
265
265
  node.disabled && "pointer-events-none opacity-40",
266
266
  isDragging && "opacity-50",
@@ -272,7 +272,7 @@ function TreeNodeImpl({ node, depth }) {
272
272
  canDrag && (dragCursor === "grab" ? "cursor-grab active:cursor-grabbing" : "active:cursor-grabbing"),
273
273
  isDropTarget && dropPosition === "inside" && "bg-blue-500/10 ring-1 ring-blue-500/30 ring-inset"
274
274
  ),
275
- style: { paddingLeft },
275
+ style: { paddingInlineStart: paddingLeft },
276
276
  children: [
277
277
  isFolder && /* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, { open: isExpanded }),
278
278
  !isFolder && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-3.5 shrink-0" }),
@@ -286,7 +286,7 @@ function TreeNodeImpl({ node, depth }) {
286
286
  {
287
287
  "data-react-fancy-tree-drop-indicator": "after",
288
288
  className: "pointer-events-none h-0.5 rounded-full bg-blue-500",
289
- style: { marginLeft: paddingLeft }
289
+ style: { marginInlineStart: paddingLeft }
290
290
  }
291
291
  ),
292
292
  !flat && isFolder && isExpanded && node.children && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-react-fancy-tree-node-children": "", children: node.children.map((child) => /* @__PURE__ */ jsxRuntime.jsx(TreeNode, { node: child, depth: depth + 1 }, child.id)) })
@@ -502,5 +502,5 @@ var TreeNav = Object.assign(TreeNavRoot, {
502
502
 
503
503
  exports.TreeNav = TreeNav;
504
504
  exports.useTreeNav = useTreeNav;
505
- //# sourceMappingURL=chunk-25HRO7HQ.cjs.map
506
- //# sourceMappingURL=chunk-25HRO7HQ.cjs.map
505
+ //# sourceMappingURL=chunk-BYMOPR7P.cjs.map
506
+ //# sourceMappingURL=chunk-BYMOPR7P.cjs.map