@etus/ui 0.4.0-beta.18 → 0.4.0-beta.19

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 (563) hide show
  1. package/dist/{chunk-U2CXFKRK.js → chunk-2SUZS6GZ.js} +4 -4
  2. package/dist/{chunk-U2CXFKRK.js.map → chunk-2SUZS6GZ.js.map} +1 -1
  3. package/dist/{chunk-UPYT2XM5.js → chunk-2XNMKALT.js} +3 -3
  4. package/dist/{chunk-UPYT2XM5.js.map → chunk-2XNMKALT.js.map} +1 -1
  5. package/dist/{chunk-SM4AZOEP.js → chunk-3MOBFZJM.js} +4 -4
  6. package/dist/{chunk-SM4AZOEP.js.map → chunk-3MOBFZJM.js.map} +1 -1
  7. package/dist/{chunk-TA4HCLP3.js → chunk-3R6MY3YJ.js} +4 -4
  8. package/dist/{chunk-TA4HCLP3.js.map → chunk-3R6MY3YJ.js.map} +1 -1
  9. package/dist/{chunk-EVUHEBWX.js → chunk-447INBQP.js} +3 -3
  10. package/dist/{chunk-EVUHEBWX.js.map → chunk-447INBQP.js.map} +1 -1
  11. package/dist/{chunk-F7XARQUW.js → chunk-4LZ53BAG.js} +3 -3
  12. package/dist/{chunk-F7XARQUW.js.map → chunk-4LZ53BAG.js.map} +1 -1
  13. package/dist/{chunk-CYIFWQ5Y.js → chunk-4OWRNWHW.js} +3 -3
  14. package/dist/{chunk-CYIFWQ5Y.js.map → chunk-4OWRNWHW.js.map} +1 -1
  15. package/dist/{chunk-OQCGQG47.js → chunk-4RNPI3LU.js} +3 -3
  16. package/dist/{chunk-OQCGQG47.js.map → chunk-4RNPI3LU.js.map} +1 -1
  17. package/dist/{chunk-3NHH7VPI.js → chunk-4SFBDK4E.js} +4 -4
  18. package/dist/{chunk-3NHH7VPI.js.map → chunk-4SFBDK4E.js.map} +1 -1
  19. package/dist/{chunk-B7ZLPQSO.js → chunk-4XXAIWQ4.js} +3 -3
  20. package/dist/{chunk-B7ZLPQSO.js.map → chunk-4XXAIWQ4.js.map} +1 -1
  21. package/dist/{chunk-D2V2HKLX.js → chunk-5ETVWWA5.js} +3 -3
  22. package/dist/{chunk-D2V2HKLX.js.map → chunk-5ETVWWA5.js.map} +1 -1
  23. package/dist/{chunk-U4H3XHSI.js → chunk-5GV4LDX7.js} +4 -4
  24. package/dist/{chunk-U4H3XHSI.js.map → chunk-5GV4LDX7.js.map} +1 -1
  25. package/dist/{chunk-BFBGESUI.js → chunk-5MJQ5XSR.js} +4 -4
  26. package/dist/{chunk-BFBGESUI.js.map → chunk-5MJQ5XSR.js.map} +1 -1
  27. package/dist/{chunk-GKMR5SVC.js → chunk-5QDKJMUA.js} +3 -3
  28. package/dist/{chunk-GKMR5SVC.js.map → chunk-5QDKJMUA.js.map} +1 -1
  29. package/dist/{chunk-3NFQXZHO.js → chunk-5T7EKOJ5.js} +3 -3
  30. package/dist/{chunk-3NFQXZHO.js.map → chunk-5T7EKOJ5.js.map} +1 -1
  31. package/dist/{chunk-WBE6VQOO.js → chunk-5W3T767A.js} +3 -3
  32. package/dist/{chunk-WBE6VQOO.js.map → chunk-5W3T767A.js.map} +1 -1
  33. package/dist/{chunk-F5X2BBGU.js → chunk-5YUUE5JJ.js} +3 -3
  34. package/dist/{chunk-F5X2BBGU.js.map → chunk-5YUUE5JJ.js.map} +1 -1
  35. package/dist/{chunk-IQKKPOI7.js → chunk-627ZZ6HO.js} +4 -4
  36. package/dist/{chunk-IQKKPOI7.js.map → chunk-627ZZ6HO.js.map} +1 -1
  37. package/dist/{chunk-WCMRVCIM.js → chunk-6G5QK3SU.js} +3 -3
  38. package/dist/{chunk-WCMRVCIM.js.map → chunk-6G5QK3SU.js.map} +1 -1
  39. package/dist/{chunk-SMVH56FQ.js → chunk-6QVXMYKH.js} +3 -3
  40. package/dist/{chunk-SMVH56FQ.js.map → chunk-6QVXMYKH.js.map} +1 -1
  41. package/dist/{chunk-NWVYQYKK.js → chunk-6VEQLD2P.js} +3 -3
  42. package/dist/{chunk-NWVYQYKK.js.map → chunk-6VEQLD2P.js.map} +1 -1
  43. package/dist/{chunk-S6ORCWM2.js → chunk-73DDLKBG.js} +3 -3
  44. package/dist/{chunk-S6ORCWM2.js.map → chunk-73DDLKBG.js.map} +1 -1
  45. package/dist/{chunk-E27SQ54A.js → chunk-7AR5QRRX.js} +3 -3
  46. package/dist/{chunk-E27SQ54A.js.map → chunk-7AR5QRRX.js.map} +1 -1
  47. package/dist/{chunk-3MJNJKAF.js → chunk-7IKX4AFY.js} +4 -4
  48. package/dist/{chunk-3MJNJKAF.js.map → chunk-7IKX4AFY.js.map} +1 -1
  49. package/dist/{chunk-A7YNTSVU.js → chunk-7PX3WBR3.js} +3 -3
  50. package/dist/{chunk-A7YNTSVU.js.map → chunk-7PX3WBR3.js.map} +1 -1
  51. package/dist/{chunk-LR56MGWT.js → chunk-7QEFKWUR.js} +7 -7
  52. package/dist/{chunk-LR56MGWT.js.map → chunk-7QEFKWUR.js.map} +1 -1
  53. package/dist/{chunk-JRVUEOKT.js → chunk-7TX5X4EP.js} +3 -3
  54. package/dist/{chunk-JRVUEOKT.js.map → chunk-7TX5X4EP.js.map} +1 -1
  55. package/dist/{chunk-BQMQULAC.js → chunk-7XJQYAGY.js} +4 -4
  56. package/dist/{chunk-BQMQULAC.js.map → chunk-7XJQYAGY.js.map} +1 -1
  57. package/dist/{chunk-KA7747GR.js → chunk-7Y325TBV.js} +3 -3
  58. package/dist/{chunk-KA7747GR.js.map → chunk-7Y325TBV.js.map} +1 -1
  59. package/dist/{chunk-6KMRMXR6.js → chunk-7YZ7HNXX.js} +3 -3
  60. package/dist/{chunk-6KMRMXR6.js.map → chunk-7YZ7HNXX.js.map} +1 -1
  61. package/dist/{chunk-YACIRNVP.js → chunk-AD4RW2JV.js} +3 -3
  62. package/dist/{chunk-YACIRNVP.js.map → chunk-AD4RW2JV.js.map} +1 -1
  63. package/dist/{chunk-YMYXWHDU.js → chunk-ADX6C3V7.js} +3 -3
  64. package/dist/{chunk-YMYXWHDU.js.map → chunk-ADX6C3V7.js.map} +1 -1
  65. package/dist/{chunk-WVFQKBDB.js → chunk-AJUOTABG.js} +3 -3
  66. package/dist/{chunk-WVFQKBDB.js.map → chunk-AJUOTABG.js.map} +1 -1
  67. package/dist/{chunk-G5TWK7L3.js → chunk-AP4ZM3DV.js} +3 -3
  68. package/dist/{chunk-G5TWK7L3.js.map → chunk-AP4ZM3DV.js.map} +1 -1
  69. package/dist/{chunk-2X35C55E.js → chunk-ARJAIH7Q.js} +3 -3
  70. package/dist/{chunk-2X35C55E.js.map → chunk-ARJAIH7Q.js.map} +1 -1
  71. package/dist/{chunk-YCZ6M6EF.js → chunk-BBKDABQK.js} +3 -3
  72. package/dist/{chunk-YCZ6M6EF.js.map → chunk-BBKDABQK.js.map} +1 -1
  73. package/dist/{chunk-GPW57XOW.js → chunk-BSTUCHL4.js} +4 -4
  74. package/dist/{chunk-GPW57XOW.js.map → chunk-BSTUCHL4.js.map} +1 -1
  75. package/dist/{chunk-ARYBNQNS.js → chunk-BUCXPZYE.js} +4 -4
  76. package/dist/{chunk-ARYBNQNS.js.map → chunk-BUCXPZYE.js.map} +1 -1
  77. package/dist/{chunk-ESLSPRYA.js → chunk-C2MAX4YK.js} +3 -3
  78. package/dist/{chunk-ESLSPRYA.js.map → chunk-C2MAX4YK.js.map} +1 -1
  79. package/dist/{chunk-2FJJOHHH.js → chunk-C34UNXMN.js} +3 -3
  80. package/dist/{chunk-2FJJOHHH.js.map → chunk-C34UNXMN.js.map} +1 -1
  81. package/dist/{chunk-AEHYYTFW.js → chunk-CV77MF4G.js} +3 -3
  82. package/dist/{chunk-AEHYYTFW.js.map → chunk-CV77MF4G.js.map} +1 -1
  83. package/dist/{chunk-MQ2446N7.js → chunk-DGOW65KM.js} +3 -3
  84. package/dist/{chunk-MQ2446N7.js.map → chunk-DGOW65KM.js.map} +1 -1
  85. package/dist/{chunk-NULX3RRN.js → chunk-DJHDCDU6.js} +4 -4
  86. package/dist/{chunk-NULX3RRN.js.map → chunk-DJHDCDU6.js.map} +1 -1
  87. package/dist/{chunk-USPITOG4.js → chunk-DQGBTZRX.js} +4 -4
  88. package/dist/{chunk-USPITOG4.js.map → chunk-DQGBTZRX.js.map} +1 -1
  89. package/dist/{chunk-2IFYXJ3H.js → chunk-DRIEZH7R.js} +3 -3
  90. package/dist/{chunk-2IFYXJ3H.js.map → chunk-DRIEZH7R.js.map} +1 -1
  91. package/dist/{chunk-VWW3DJKI.js → chunk-E6SAO2CY.js} +3 -3
  92. package/dist/{chunk-VWW3DJKI.js.map → chunk-E6SAO2CY.js.map} +1 -1
  93. package/dist/{chunk-5ACHKT35.js → chunk-EDSIOUUR.js} +4 -4
  94. package/dist/{chunk-5ACHKT35.js.map → chunk-EDSIOUUR.js.map} +1 -1
  95. package/dist/{chunk-G2CMEHW6.js → chunk-ELRIFGMN.js} +4 -4
  96. package/dist/{chunk-G2CMEHW6.js.map → chunk-ELRIFGMN.js.map} +1 -1
  97. package/dist/{chunk-IMUBWKZC.js → chunk-EO4NGM5W.js} +4 -4
  98. package/dist/{chunk-IMUBWKZC.js.map → chunk-EO4NGM5W.js.map} +1 -1
  99. package/dist/{chunk-AFCSDND5.js → chunk-EQ4YAADN.js} +3 -3
  100. package/dist/{chunk-AFCSDND5.js.map → chunk-EQ4YAADN.js.map} +1 -1
  101. package/dist/{chunk-AP3T3KMY.js → chunk-EZYXD2YI.js} +4 -4
  102. package/dist/{chunk-AP3T3KMY.js.map → chunk-EZYXD2YI.js.map} +1 -1
  103. package/dist/{chunk-HJ4E6YPW.js → chunk-F3ETIDS7.js} +4 -4
  104. package/dist/{chunk-HJ4E6YPW.js.map → chunk-F3ETIDS7.js.map} +1 -1
  105. package/dist/{chunk-LNY2EXOV.js → chunk-F3WDMYZ4.js} +3 -3
  106. package/dist/{chunk-LNY2EXOV.js.map → chunk-F3WDMYZ4.js.map} +1 -1
  107. package/dist/{chunk-FPCRGFNY.js → chunk-FRKB4Z2P.js} +3 -3
  108. package/dist/{chunk-FPCRGFNY.js.map → chunk-FRKB4Z2P.js.map} +1 -1
  109. package/dist/{chunk-YGLD22TU.js → chunk-FVRSXJKS.js} +3 -3
  110. package/dist/{chunk-YGLD22TU.js.map → chunk-FVRSXJKS.js.map} +1 -1
  111. package/dist/{chunk-AR7K7Y4L.js → chunk-FXFVFSG5.js} +5 -5
  112. package/dist/{chunk-AR7K7Y4L.js.map → chunk-FXFVFSG5.js.map} +1 -1
  113. package/dist/{chunk-WQI2USN7.js → chunk-GDZECJFS.js} +3 -3
  114. package/dist/{chunk-WQI2USN7.js.map → chunk-GDZECJFS.js.map} +1 -1
  115. package/dist/{chunk-7CMOCWFX.js → chunk-GLHKHYJY.js} +8 -8
  116. package/dist/{chunk-7CMOCWFX.js.map → chunk-GLHKHYJY.js.map} +1 -1
  117. package/dist/{chunk-IA24GUNV.js → chunk-GRODCJS4.js} +8 -8
  118. package/dist/{chunk-IA24GUNV.js.map → chunk-GRODCJS4.js.map} +1 -1
  119. package/dist/{chunk-JDG5A44W.js → chunk-GVNG5ME6.js} +22 -11
  120. package/dist/chunk-GVNG5ME6.js.map +1 -0
  121. package/dist/{chunk-5J5OL4IV.js → chunk-GWSM2XNV.js} +3 -3
  122. package/dist/{chunk-5J5OL4IV.js.map → chunk-GWSM2XNV.js.map} +1 -1
  123. package/dist/{chunk-2NY6DDLO.js → chunk-H32A6UPL.js} +3 -3
  124. package/dist/{chunk-2NY6DDLO.js.map → chunk-H32A6UPL.js.map} +1 -1
  125. package/dist/{chunk-HV2ZZXFN.js → chunk-HHWUROMA.js} +6 -6
  126. package/dist/{chunk-HV2ZZXFN.js.map → chunk-HHWUROMA.js.map} +1 -1
  127. package/dist/{chunk-CNRV2IGH.js → chunk-HM6TEHA6.js} +3 -3
  128. package/dist/{chunk-CNRV2IGH.js.map → chunk-HM6TEHA6.js.map} +1 -1
  129. package/dist/{chunk-6ABGMOE2.js → chunk-HNQX6ZG7.js} +4 -4
  130. package/dist/{chunk-6ABGMOE2.js.map → chunk-HNQX6ZG7.js.map} +1 -1
  131. package/dist/{chunk-HAEZLC7V.js → chunk-I5RDX6O3.js} +3 -3
  132. package/dist/{chunk-HAEZLC7V.js.map → chunk-I5RDX6O3.js.map} +1 -1
  133. package/dist/{chunk-B2OCNHUW.js → chunk-IKLFWGFS.js} +70 -52
  134. package/dist/chunk-IKLFWGFS.js.map +1 -0
  135. package/dist/{chunk-DL7D5F7B.js → chunk-IPCT4YZT.js} +3 -3
  136. package/dist/{chunk-DL7D5F7B.js.map → chunk-IPCT4YZT.js.map} +1 -1
  137. package/dist/{chunk-BIUVOZQG.js → chunk-IPDAFW4F.js} +3 -3
  138. package/dist/{chunk-BIUVOZQG.js.map → chunk-IPDAFW4F.js.map} +1 -1
  139. package/dist/{chunk-G2MAGZHQ.js → chunk-IXZBH33I.js} +3 -3
  140. package/dist/{chunk-G2MAGZHQ.js.map → chunk-IXZBH33I.js.map} +1 -1
  141. package/dist/{chunk-ZHUW6UYD.js → chunk-JDETM3FL.js} +3 -3
  142. package/dist/{chunk-ZHUW6UYD.js.map → chunk-JDETM3FL.js.map} +1 -1
  143. package/dist/{chunk-HZ47LQFJ.js → chunk-JE46MFMN.js} +6 -6
  144. package/dist/{chunk-HZ47LQFJ.js.map → chunk-JE46MFMN.js.map} +1 -1
  145. package/dist/{chunk-3JCV72FO.js → chunk-JFV7CNBP.js} +4 -4
  146. package/dist/{chunk-3JCV72FO.js.map → chunk-JFV7CNBP.js.map} +1 -1
  147. package/dist/{chunk-7RTHGI6E.js → chunk-JPRHMMY6.js} +3 -3
  148. package/dist/{chunk-7RTHGI6E.js.map → chunk-JPRHMMY6.js.map} +1 -1
  149. package/dist/{chunk-G2V7D7VC.js → chunk-JUSPLVWO.js} +5 -5
  150. package/dist/{chunk-G2V7D7VC.js.map → chunk-JUSPLVWO.js.map} +1 -1
  151. package/dist/{chunk-FRDYXDAE.js → chunk-JUZ4JQWH.js} +3 -3
  152. package/dist/{chunk-FRDYXDAE.js.map → chunk-JUZ4JQWH.js.map} +1 -1
  153. package/dist/{chunk-6SHOL6WR.js → chunk-JVTB3NTP.js} +3 -3
  154. package/dist/{chunk-6SHOL6WR.js.map → chunk-JVTB3NTP.js.map} +1 -1
  155. package/dist/{chunk-XETKCF73.js → chunk-JXEIRIU4.js} +3 -3
  156. package/dist/{chunk-XETKCF73.js.map → chunk-JXEIRIU4.js.map} +1 -1
  157. package/dist/{chunk-XKO6G5H2.js → chunk-JYYB6F5O.js} +3 -3
  158. package/dist/{chunk-XKO6G5H2.js.map → chunk-JYYB6F5O.js.map} +1 -1
  159. package/dist/{chunk-V7WEN4SD.js → chunk-JZA45LEV.js} +3 -3
  160. package/dist/{chunk-V7WEN4SD.js.map → chunk-JZA45LEV.js.map} +1 -1
  161. package/dist/{chunk-FCSYPOHF.js → chunk-K44K3EHW.js} +3 -3
  162. package/dist/{chunk-FCSYPOHF.js.map → chunk-K44K3EHW.js.map} +1 -1
  163. package/dist/{chunk-ZMUUEXVD.js → chunk-K4UCALQQ.js} +3 -3
  164. package/dist/{chunk-ZMUUEXVD.js.map → chunk-K4UCALQQ.js.map} +1 -1
  165. package/dist/{chunk-KYURFRCH.js → chunk-KBU4KJKC.js} +7 -7
  166. package/dist/{chunk-KYURFRCH.js.map → chunk-KBU4KJKC.js.map} +1 -1
  167. package/dist/{chunk-JRWQHBJC.js → chunk-KDNTSZF5.js} +4 -4
  168. package/dist/{chunk-JRWQHBJC.js.map → chunk-KDNTSZF5.js.map} +1 -1
  169. package/dist/{chunk-WZ2J4ALB.js → chunk-KHCHATTD.js} +5 -5
  170. package/dist/{chunk-WZ2J4ALB.js.map → chunk-KHCHATTD.js.map} +1 -1
  171. package/dist/{chunk-57KTYE5H.js → chunk-KHJIUHHM.js} +3 -3
  172. package/dist/{chunk-57KTYE5H.js.map → chunk-KHJIUHHM.js.map} +1 -1
  173. package/dist/{chunk-H7JHFBFD.js → chunk-KLFYTLF3.js} +4 -4
  174. package/dist/{chunk-H7JHFBFD.js.map → chunk-KLFYTLF3.js.map} +1 -1
  175. package/dist/{chunk-W3QUVCRK.js → chunk-KXJ3SEW7.js} +3 -3
  176. package/dist/{chunk-W3QUVCRK.js.map → chunk-KXJ3SEW7.js.map} +1 -1
  177. package/dist/{chunk-X5XP5QVO.js → chunk-L4OQ6BJ5.js} +6 -6
  178. package/dist/{chunk-X5XP5QVO.js.map → chunk-L4OQ6BJ5.js.map} +1 -1
  179. package/dist/{chunk-MAM6VUKD.js → chunk-LCBB3N5H.js} +3 -3
  180. package/dist/{chunk-MAM6VUKD.js.map → chunk-LCBB3N5H.js.map} +1 -1
  181. package/dist/{chunk-FLERVSKG.js → chunk-LDK6ADKM.js} +6 -6
  182. package/dist/{chunk-FLERVSKG.js.map → chunk-LDK6ADKM.js.map} +1 -1
  183. package/dist/{chunk-K4MYVFWQ.js → chunk-LP6JYJQN.js} +4 -4
  184. package/dist/{chunk-K4MYVFWQ.js.map → chunk-LP6JYJQN.js.map} +1 -1
  185. package/dist/{chunk-7VGF6ZVE.js → chunk-LRE3LJMW.js} +5 -5
  186. package/dist/{chunk-7VGF6ZVE.js.map → chunk-LRE3LJMW.js.map} +1 -1
  187. package/dist/{chunk-LQVQ7SHG.js → chunk-LSRKDZW4.js} +4 -4
  188. package/dist/{chunk-LQVQ7SHG.js.map → chunk-LSRKDZW4.js.map} +1 -1
  189. package/dist/{chunk-WBERMEN7.js → chunk-MGIGDALC.js} +3 -3
  190. package/dist/{chunk-WBERMEN7.js.map → chunk-MGIGDALC.js.map} +1 -1
  191. package/dist/{chunk-IRFAIJLV.js → chunk-MNYU5MHO.js} +7 -7
  192. package/dist/{chunk-IRFAIJLV.js.map → chunk-MNYU5MHO.js.map} +1 -1
  193. package/dist/{chunk-6GWO7JNP.js → chunk-MXBDOYQL.js} +4 -4
  194. package/dist/{chunk-6GWO7JNP.js.map → chunk-MXBDOYQL.js.map} +1 -1
  195. package/dist/{chunk-37KLBMFQ.js → chunk-N2DAVD4Y.js} +3 -3
  196. package/dist/{chunk-37KLBMFQ.js.map → chunk-N2DAVD4Y.js.map} +1 -1
  197. package/dist/{chunk-EC5YEK3C.js → chunk-N5YGAESZ.js} +5 -5
  198. package/dist/{chunk-EC5YEK3C.js.map → chunk-N5YGAESZ.js.map} +1 -1
  199. package/dist/{chunk-DSCLJ3GK.js → chunk-N7VMQWM3.js} +15 -10
  200. package/dist/chunk-N7VMQWM3.js.map +1 -0
  201. package/dist/{chunk-5KTMPLDK.js → chunk-NAI3TX52.js} +3 -3
  202. package/dist/{chunk-5KTMPLDK.js.map → chunk-NAI3TX52.js.map} +1 -1
  203. package/dist/{chunk-QHKOBGLW.js → chunk-NGX3ITG4.js} +3 -3
  204. package/dist/{chunk-QHKOBGLW.js.map → chunk-NGX3ITG4.js.map} +1 -1
  205. package/dist/{chunk-5SUD32RK.js → chunk-NHUUSXBL.js} +3 -3
  206. package/dist/{chunk-5SUD32RK.js.map → chunk-NHUUSXBL.js.map} +1 -1
  207. package/dist/{chunk-IOWHM7ZY.js → chunk-NIRTZLZL.js} +4 -4
  208. package/dist/{chunk-IOWHM7ZY.js.map → chunk-NIRTZLZL.js.map} +1 -1
  209. package/dist/{chunk-5E44I7PB.js → chunk-NLPVF34P.js} +4 -4
  210. package/dist/{chunk-5E44I7PB.js.map → chunk-NLPVF34P.js.map} +1 -1
  211. package/dist/{chunk-ZPAWUKJI.js → chunk-NNWMBVCB.js} +4 -4
  212. package/dist/{chunk-ZPAWUKJI.js.map → chunk-NNWMBVCB.js.map} +1 -1
  213. package/dist/{chunk-H4ANCFZG.js → chunk-NUA54ABI.js} +4 -4
  214. package/dist/{chunk-H4ANCFZG.js.map → chunk-NUA54ABI.js.map} +1 -1
  215. package/dist/{chunk-ZPCELVWJ.js → chunk-NY2WZ4P2.js} +4 -4
  216. package/dist/{chunk-ZPCELVWJ.js.map → chunk-NY2WZ4P2.js.map} +1 -1
  217. package/dist/{chunk-BECPEVUL.js → chunk-O6LFU3KB.js} +3 -3
  218. package/dist/{chunk-BECPEVUL.js.map → chunk-O6LFU3KB.js.map} +1 -1
  219. package/dist/{chunk-HXHB2CK5.js → chunk-OAES72MK.js} +3 -3
  220. package/dist/{chunk-HXHB2CK5.js.map → chunk-OAES72MK.js.map} +1 -1
  221. package/dist/{chunk-NGR4HFVA.js → chunk-OCH7GGZF.js} +3 -3
  222. package/dist/{chunk-NGR4HFVA.js.map → chunk-OCH7GGZF.js.map} +1 -1
  223. package/dist/{chunk-HA5YVDHW.js → chunk-ONN5XVYC.js} +3 -3
  224. package/dist/{chunk-HA5YVDHW.js.map → chunk-ONN5XVYC.js.map} +1 -1
  225. package/dist/{chunk-OG3M4CMJ.js → chunk-OWZ3MZ5C.js} +3 -3
  226. package/dist/{chunk-OG3M4CMJ.js.map → chunk-OWZ3MZ5C.js.map} +1 -1
  227. package/dist/{chunk-MK6ID2HI.js → chunk-OXO6SKJO.js} +3 -3
  228. package/dist/{chunk-MK6ID2HI.js.map → chunk-OXO6SKJO.js.map} +1 -1
  229. package/dist/{chunk-5K2SOCOX.js → chunk-P4WMDGAQ.js} +4 -4
  230. package/dist/{chunk-5K2SOCOX.js.map → chunk-P4WMDGAQ.js.map} +1 -1
  231. package/dist/{chunk-K43MPWTO.js → chunk-PBZI5XNV.js} +3 -3
  232. package/dist/{chunk-K43MPWTO.js.map → chunk-PBZI5XNV.js.map} +1 -1
  233. package/dist/{chunk-HI3T55XK.js → chunk-PEX7FCZC.js} +3 -3
  234. package/dist/{chunk-HI3T55XK.js.map → chunk-PEX7FCZC.js.map} +1 -1
  235. package/dist/{chunk-WMG2MMJF.js → chunk-PI4WGIPG.js} +3 -3
  236. package/dist/{chunk-WMG2MMJF.js.map → chunk-PI4WGIPG.js.map} +1 -1
  237. package/dist/{chunk-V7O4X3AE.js → chunk-PTXC4KPQ.js} +4 -4
  238. package/dist/{chunk-V7O4X3AE.js.map → chunk-PTXC4KPQ.js.map} +1 -1
  239. package/dist/{chunk-34WNJNPL.js → chunk-PVIIIQJI.js} +6 -6
  240. package/dist/{chunk-34WNJNPL.js.map → chunk-PVIIIQJI.js.map} +1 -1
  241. package/dist/{chunk-A4O3USMA.js → chunk-PXR6CZIL.js} +4 -4
  242. package/dist/{chunk-A4O3USMA.js.map → chunk-PXR6CZIL.js.map} +1 -1
  243. package/dist/{chunk-KDJCZXLB.js → chunk-PZSKZFVO.js} +3 -3
  244. package/dist/{chunk-KDJCZXLB.js.map → chunk-PZSKZFVO.js.map} +1 -1
  245. package/dist/{chunk-DNAGXK2C.js → chunk-Q3JCNSPU.js} +4 -4
  246. package/dist/{chunk-DNAGXK2C.js.map → chunk-Q3JCNSPU.js.map} +1 -1
  247. package/dist/{chunk-JUTPDS4E.js → chunk-QD2ZS5DU.js} +4 -4
  248. package/dist/{chunk-JUTPDS4E.js.map → chunk-QD2ZS5DU.js.map} +1 -1
  249. package/dist/{chunk-DI3AISAZ.js → chunk-QJOWG2D4.js} +5 -5
  250. package/dist/{chunk-DI3AISAZ.js.map → chunk-QJOWG2D4.js.map} +1 -1
  251. package/dist/{chunk-6F5NWXZF.js → chunk-QLYH3GCV.js} +4 -4
  252. package/dist/{chunk-6F5NWXZF.js.map → chunk-QLYH3GCV.js.map} +1 -1
  253. package/dist/{chunk-F4EX3622.js → chunk-QO6TOE45.js} +3 -3
  254. package/dist/{chunk-F4EX3622.js.map → chunk-QO6TOE45.js.map} +1 -1
  255. package/dist/{chunk-46SUPGQV.js → chunk-QWWA4FZP.js} +3 -3
  256. package/dist/{chunk-46SUPGQV.js.map → chunk-QWWA4FZP.js.map} +1 -1
  257. package/dist/{chunk-VTDSGJ4R.js → chunk-QXET2TML.js} +4 -4
  258. package/dist/{chunk-VTDSGJ4R.js.map → chunk-QXET2TML.js.map} +1 -1
  259. package/dist/{chunk-2VHARFMD.js → chunk-QZ7SGO7L.js} +3 -3
  260. package/dist/{chunk-2VHARFMD.js.map → chunk-QZ7SGO7L.js.map} +1 -1
  261. package/dist/{chunk-XORDGKZI.js → chunk-R42LSLJL.js} +6 -6
  262. package/dist/{chunk-XORDGKZI.js.map → chunk-R42LSLJL.js.map} +1 -1
  263. package/dist/{chunk-EVZ2GZU4.js → chunk-RMJVCJ6U.js} +3 -3
  264. package/dist/{chunk-EVZ2GZU4.js.map → chunk-RMJVCJ6U.js.map} +1 -1
  265. package/dist/{chunk-UYPYAOET.js → chunk-ROPW65RD.js} +3 -3
  266. package/dist/{chunk-UYPYAOET.js.map → chunk-ROPW65RD.js.map} +1 -1
  267. package/dist/{chunk-M6VBDPNQ.js → chunk-RQBYBBMP.js} +3 -3
  268. package/dist/{chunk-M6VBDPNQ.js.map → chunk-RQBYBBMP.js.map} +1 -1
  269. package/dist/chunk-RVAYDRMA.js +31 -0
  270. package/dist/chunk-RVAYDRMA.js.map +1 -0
  271. package/dist/{chunk-ARNVOHVW.js → chunk-S4P7JIQ2.js} +3 -3
  272. package/dist/{chunk-ARNVOHVW.js.map → chunk-S4P7JIQ2.js.map} +1 -1
  273. package/dist/{chunk-AKRVZ2YW.js → chunk-S6BREP2G.js} +4 -4
  274. package/dist/{chunk-AKRVZ2YW.js.map → chunk-S6BREP2G.js.map} +1 -1
  275. package/dist/{chunk-Y5GO2F6P.js → chunk-SA3IQI3Y.js} +3 -3
  276. package/dist/{chunk-Y5GO2F6P.js.map → chunk-SA3IQI3Y.js.map} +1 -1
  277. package/dist/{chunk-56TC4CPT.js → chunk-SKI25Q7O.js} +6 -6
  278. package/dist/{chunk-56TC4CPT.js.map → chunk-SKI25Q7O.js.map} +1 -1
  279. package/dist/{chunk-MLSIZ6JU.js → chunk-SSKSWSVO.js} +5 -5
  280. package/dist/{chunk-MLSIZ6JU.js.map → chunk-SSKSWSVO.js.map} +1 -1
  281. package/dist/{chunk-VV6QE3M2.js → chunk-STADVFL2.js} +5 -5
  282. package/dist/{chunk-VV6QE3M2.js.map → chunk-STADVFL2.js.map} +1 -1
  283. package/dist/{chunk-UA3OQAHJ.js → chunk-SX63UD5X.js} +3 -3
  284. package/dist/{chunk-UA3OQAHJ.js.map → chunk-SX63UD5X.js.map} +1 -1
  285. package/dist/{chunk-YZY35OHQ.js → chunk-SXSR2VRG.js} +4 -4
  286. package/dist/{chunk-YZY35OHQ.js.map → chunk-SXSR2VRG.js.map} +1 -1
  287. package/dist/{chunk-AR3OXNPL.js → chunk-TDANAN5A.js} +3 -3
  288. package/dist/{chunk-AR3OXNPL.js.map → chunk-TDANAN5A.js.map} +1 -1
  289. package/dist/{chunk-7ZJ32KRQ.js → chunk-TEVGCTUN.js} +3 -3
  290. package/dist/{chunk-7ZJ32KRQ.js.map → chunk-TEVGCTUN.js.map} +1 -1
  291. package/dist/{chunk-GAMOVEZD.js → chunk-TIPKU427.js} +3 -3
  292. package/dist/{chunk-GAMOVEZD.js.map → chunk-TIPKU427.js.map} +1 -1
  293. package/dist/{chunk-2Q4I4VDB.js → chunk-TK5WS675.js} +3 -3
  294. package/dist/{chunk-2Q4I4VDB.js.map → chunk-TK5WS675.js.map} +1 -1
  295. package/dist/{chunk-EDSDAX56.js → chunk-TNSMTINE.js} +4 -4
  296. package/dist/{chunk-EDSDAX56.js.map → chunk-TNSMTINE.js.map} +1 -1
  297. package/dist/{chunk-5TABQJDW.js → chunk-TRTVYFOF.js} +3 -3
  298. package/dist/{chunk-5TABQJDW.js.map → chunk-TRTVYFOF.js.map} +1 -1
  299. package/dist/{chunk-QBLU7J34.js → chunk-TSE3PKWQ.js} +3 -3
  300. package/dist/{chunk-QBLU7J34.js.map → chunk-TSE3PKWQ.js.map} +1 -1
  301. package/dist/{chunk-3BBOSSDG.js → chunk-U7TPJMGY.js} +4 -4
  302. package/dist/{chunk-3BBOSSDG.js.map → chunk-U7TPJMGY.js.map} +1 -1
  303. package/dist/{chunk-PGRMKSVA.js → chunk-UC5J6GWG.js} +4 -4
  304. package/dist/{chunk-PGRMKSVA.js.map → chunk-UC5J6GWG.js.map} +1 -1
  305. package/dist/{chunk-HP7LEQJR.js → chunk-UNHPLKMR.js} +3 -3
  306. package/dist/{chunk-HP7LEQJR.js.map → chunk-UNHPLKMR.js.map} +1 -1
  307. package/dist/{chunk-I7ZLEC7Y.js → chunk-UZEJ3ZVR.js} +3 -3
  308. package/dist/{chunk-I7ZLEC7Y.js.map → chunk-UZEJ3ZVR.js.map} +1 -1
  309. package/dist/{chunk-J62NPPDO.js → chunk-UZZCEQH4.js} +4 -4
  310. package/dist/{chunk-J62NPPDO.js.map → chunk-UZZCEQH4.js.map} +1 -1
  311. package/dist/{chunk-AEE5GDNA.js → chunk-V4NSLSCA.js} +4 -4
  312. package/dist/{chunk-AEE5GDNA.js.map → chunk-V4NSLSCA.js.map} +1 -1
  313. package/dist/{chunk-IZC5YFGO.js → chunk-V57DERRV.js} +14 -7
  314. package/dist/chunk-V57DERRV.js.map +1 -0
  315. package/dist/{chunk-PM344VOQ.js → chunk-VHJ6ALIE.js} +4 -4
  316. package/dist/{chunk-PM344VOQ.js.map → chunk-VHJ6ALIE.js.map} +1 -1
  317. package/dist/{chunk-N3I6GA4I.js → chunk-WG34IXUV.js} +3 -3
  318. package/dist/{chunk-N3I6GA4I.js.map → chunk-WG34IXUV.js.map} +1 -1
  319. package/dist/{chunk-45YJLE4R.js → chunk-WGKOYZRI.js} +3 -3
  320. package/dist/{chunk-45YJLE4R.js.map → chunk-WGKOYZRI.js.map} +1 -1
  321. package/dist/{chunk-6DN2UAIR.js → chunk-WGSVSZ7V.js} +3 -3
  322. package/dist/{chunk-6DN2UAIR.js.map → chunk-WGSVSZ7V.js.map} +1 -1
  323. package/dist/{chunk-X4YUWX7H.js → chunk-WK324C6D.js} +4 -4
  324. package/dist/{chunk-X4YUWX7H.js.map → chunk-WK324C6D.js.map} +1 -1
  325. package/dist/{chunk-N2WITPE2.js → chunk-WOP5OWLG.js} +3 -3
  326. package/dist/{chunk-N2WITPE2.js.map → chunk-WOP5OWLG.js.map} +1 -1
  327. package/dist/{chunk-MAM5PTRV.js → chunk-WSDWJX4Y.js} +4 -4
  328. package/dist/{chunk-MAM5PTRV.js.map → chunk-WSDWJX4Y.js.map} +1 -1
  329. package/dist/{chunk-2XJWE2XR.js → chunk-WUS45IZW.js} +4 -4
  330. package/dist/{chunk-2XJWE2XR.js.map → chunk-WUS45IZW.js.map} +1 -1
  331. package/dist/{chunk-B3BDIM4H.js → chunk-WVOZYDH3.js} +3 -3
  332. package/dist/{chunk-B3BDIM4H.js.map → chunk-WVOZYDH3.js.map} +1 -1
  333. package/dist/{chunk-HVFACGNK.js → chunk-WWK7UIKK.js} +3 -3
  334. package/dist/{chunk-HVFACGNK.js.map → chunk-WWK7UIKK.js.map} +1 -1
  335. package/dist/{chunk-NCLOPI6U.js → chunk-X2EMALTZ.js} +3 -3
  336. package/dist/{chunk-NCLOPI6U.js.map → chunk-X2EMALTZ.js.map} +1 -1
  337. package/dist/{chunk-PK5O62XD.js → chunk-X4CJFD6D.js} +3 -3
  338. package/dist/{chunk-PK5O62XD.js.map → chunk-X4CJFD6D.js.map} +1 -1
  339. package/dist/{chunk-JWXK4TMX.js → chunk-XEQGATVF.js} +3 -3
  340. package/dist/{chunk-JWXK4TMX.js.map → chunk-XEQGATVF.js.map} +1 -1
  341. package/dist/{chunk-B6KQKQ4S.js → chunk-XMUD3LG7.js} +3 -3
  342. package/dist/{chunk-B6KQKQ4S.js.map → chunk-XMUD3LG7.js.map} +1 -1
  343. package/dist/{chunk-5ZEYTBTU.js → chunk-XWBVIBN4.js} +3 -3
  344. package/dist/{chunk-5ZEYTBTU.js.map → chunk-XWBVIBN4.js.map} +1 -1
  345. package/dist/{chunk-7I6KK6QE.js → chunk-XXWCMY2G.js} +3 -3
  346. package/dist/{chunk-7I6KK6QE.js.map → chunk-XXWCMY2G.js.map} +1 -1
  347. package/dist/{chunk-LFN7UHDT.js → chunk-Y4FEW7SR.js} +3 -3
  348. package/dist/{chunk-LFN7UHDT.js.map → chunk-Y4FEW7SR.js.map} +1 -1
  349. package/dist/{chunk-PFVT27B5.js → chunk-YC5VVIZO.js} +3 -3
  350. package/dist/{chunk-PFVT27B5.js.map → chunk-YC5VVIZO.js.map} +1 -1
  351. package/dist/{chunk-OR3NPCY2.js → chunk-YMCKML6D.js} +7 -7
  352. package/dist/{chunk-OR3NPCY2.js.map → chunk-YMCKML6D.js.map} +1 -1
  353. package/dist/{chunk-TGLALXPU.js → chunk-YMQDTTO7.js} +6 -6
  354. package/dist/{chunk-TGLALXPU.js.map → chunk-YMQDTTO7.js.map} +1 -1
  355. package/dist/{chunk-ZARZYMBM.js → chunk-YNTS4GRT.js} +3 -3
  356. package/dist/{chunk-ZARZYMBM.js.map → chunk-YNTS4GRT.js.map} +1 -1
  357. package/dist/{chunk-6SZRWNPT.js → chunk-ZOHLZ4YL.js} +3 -3
  358. package/dist/{chunk-6SZRWNPT.js.map → chunk-ZOHLZ4YL.js.map} +1 -1
  359. package/dist/{chunk-VUHJTTPV.js → chunk-ZVSMLMMS.js} +3 -3
  360. package/dist/{chunk-VUHJTTPV.js.map → chunk-ZVSMLMMS.js.map} +1 -1
  361. package/dist/{chunk-VKDN66VL.js → chunk-ZXWT4KWJ.js} +3 -3
  362. package/dist/{chunk-VKDN66VL.js.map → chunk-ZXWT4KWJ.js.map} +1 -1
  363. package/dist/components/advanced/AssetManager/index.js +2 -2
  364. package/dist/components/advanced/Calendar/index.js +7 -7
  365. package/dist/components/advanced/Command/index.js +3 -3
  366. package/dist/components/advanced/DragAndDrop/index.js +2 -2
  367. package/dist/components/advanced/ErrorBoundary/index.js +2 -2
  368. package/dist/components/advanced/EventCalendar/index.js +7 -7
  369. package/dist/components/advanced/FileDropzone/index.js +2 -2
  370. package/dist/components/advanced/FilePreview/index.js +2 -2
  371. package/dist/components/advanced/FileUpload/index.js +2 -2
  372. package/dist/components/advanced/FilterBuilder/index.js +9 -9
  373. package/dist/components/advanced/MarkdownEditor/index.js +6 -6
  374. package/dist/components/advanced/ReportBuilder/index.js +7 -7
  375. package/dist/components/advanced/RichTextEditor/index.js +4 -4
  376. package/dist/components/advanced/Search/index.js +2 -2
  377. package/dist/components/advanced/SortableList/index.js +2 -2
  378. package/dist/components/advanced/VersionControl/index.js +2 -2
  379. package/dist/components/advanced/index.js +30 -30
  380. package/dist/components/data-display/Accordion/index.js +2 -2
  381. package/dist/components/data-display/AreaChart/index.js +3 -3
  382. package/dist/components/data-display/Banner/index.js +2 -2
  383. package/dist/components/data-display/BarChart/index.js +3 -3
  384. package/dist/components/data-display/BarList/index.js +2 -2
  385. package/dist/components/data-display/Callout/index.js +2 -2
  386. package/dist/components/data-display/Carousel/index.js +7 -7
  387. package/dist/components/data-display/CategoryBar/index.js +3 -3
  388. package/dist/components/data-display/Chart/index.js +2 -2
  389. package/dist/components/data-display/ChartCard/index.js +5 -5
  390. package/dist/components/data-display/ChartLegend/index.js +2 -2
  391. package/dist/components/data-display/ComboChart/index.js +3 -3
  392. package/dist/components/data-display/DashboardCard/index.js +3 -3
  393. package/dist/components/data-display/DataTable/FilterBuilder/index.js +9 -9
  394. package/dist/components/data-display/DataTable/index.js +16 -16
  395. package/dist/components/data-display/DeltaBar/index.js +3 -3
  396. package/dist/components/data-display/EmptyState/index.js +2 -2
  397. package/dist/components/data-display/FeatureItem/index.js +3 -3
  398. package/dist/components/data-display/Feed/index.js +2 -2
  399. package/dist/components/data-display/FunnelChart/index.js +3 -3
  400. package/dist/components/data-display/GaugeChart/index.js +2 -2
  401. package/dist/components/data-display/Heatmap/index.js +3 -3
  402. package/dist/components/data-display/HoverCard/index.js +2 -2
  403. package/dist/components/data-display/ImageGallery/index.js +9 -9
  404. package/dist/components/data-display/Item/index.js +3 -3
  405. package/dist/components/data-display/KPICard/index.js +8 -8
  406. package/dist/components/data-display/Lightbox/index.js +2 -2
  407. package/dist/components/data-display/LineChart/index.js +3 -3
  408. package/dist/components/data-display/List/index.js +6 -6
  409. package/dist/components/data-display/MarkerBar/index.js +3 -3
  410. package/dist/components/data-display/PieChart/index.js +3 -3
  411. package/dist/components/data-display/RadarChart/index.js +3 -3
  412. package/dist/components/data-display/RadialChart/index.js +3 -3
  413. package/dist/components/data-display/ScatterChart/index.js +3 -3
  414. package/dist/components/data-display/SingleStat/index.js +3 -3
  415. package/dist/components/data-display/Sparkline/index.js +2 -2
  416. package/dist/components/data-display/Table/index.js +2 -2
  417. package/dist/components/data-display/Timeline/index.js +2 -2
  418. package/dist/components/data-display/Tracker/index.js +3 -3
  419. package/dist/components/data-display/VirtualTable/index.js +5 -5
  420. package/dist/components/data-display/index.js +56 -56
  421. package/dist/components/feedback/Alert/index.js +2 -2
  422. package/dist/components/feedback/AlertDialog/index.js +7 -7
  423. package/dist/components/feedback/ConfirmModal/index.js +8 -8
  424. package/dist/components/feedback/Dialog/index.js +2 -2
  425. package/dist/components/feedback/ErrorPage/index.js +2 -2
  426. package/dist/components/feedback/FocusTrap/index.js +2 -2
  427. package/dist/components/feedback/Message/index.js +2 -2
  428. package/dist/components/feedback/Modal/index.js +2 -2
  429. package/dist/components/feedback/Notification/index.js +4 -4
  430. package/dist/components/feedback/Popover/index.js +2 -2
  431. package/dist/components/feedback/Tooltip/index.js +2 -2
  432. package/dist/components/feedback/UpdatesWidget/index.js +2 -2
  433. package/dist/components/feedback/index.js +18 -18
  434. package/dist/components/forms/Autocomplete/index.js +2 -2
  435. package/dist/components/forms/Checkbox/index.js +2 -2
  436. package/dist/components/forms/CheckboxGroup/index.js +3 -3
  437. package/dist/components/forms/ColorPicker/index.js +3 -3
  438. package/dist/components/forms/Combobox/index.js +2 -2
  439. package/dist/components/forms/DatePicker/index.js +10 -10
  440. package/dist/components/forms/DateRangePicker/index.js +10 -10
  441. package/dist/components/forms/EmailInput/index.js +3 -3
  442. package/dist/components/forms/ErrorMessage/index.js +2 -2
  443. package/dist/components/forms/Field/index.js +4 -4
  444. package/dist/components/forms/FloatLabel/index.js +2 -2
  445. package/dist/components/forms/Form/index.js +3 -3
  446. package/dist/components/forms/FormValidation/index.js +2 -2
  447. package/dist/components/forms/HelpText/index.js +2 -2
  448. package/dist/components/forms/IftaLabel/index.js +2 -2
  449. package/dist/components/forms/InputGroup/index.js +9 -9
  450. package/dist/components/forms/InputOTP/index.js +2 -2
  451. package/dist/components/forms/InputOTPField/index.js +6 -6
  452. package/dist/components/forms/MultiSelect/index.js +3 -3
  453. package/dist/components/forms/NativeSelect/index.js +2 -2
  454. package/dist/components/forms/NumberInput/index.js +2 -2
  455. package/dist/components/forms/PasswordInput/index.js +3 -3
  456. package/dist/components/forms/PaymentInput/index.js +2 -2
  457. package/dist/components/forms/PhoneInput/index.js +2 -2
  458. package/dist/components/forms/RadioButton/index.js +2 -2
  459. package/dist/components/forms/RadioCardGroup/index.js +2 -2
  460. package/dist/components/forms/RadioGroup/index.js +2 -2
  461. package/dist/components/forms/Rating/index.js +2 -2
  462. package/dist/components/forms/SearchInput/index.js +3 -3
  463. package/dist/components/forms/Select/index.js +2 -2
  464. package/dist/components/forms/Slider/index.js +2 -2
  465. package/dist/components/forms/SuccessMessage/index.js +2 -2
  466. package/dist/components/forms/Switch/index.js +2 -2
  467. package/dist/components/forms/TagsInput/index.js +4 -4
  468. package/dist/components/forms/TextInput/index.js +2 -2
  469. package/dist/components/forms/Textarea/index.js +2 -2
  470. package/dist/components/forms/TextareaField/index.js +6 -6
  471. package/dist/components/forms/TimePicker/index.js +4 -4
  472. package/dist/components/forms/URLInput/index.js +3 -3
  473. package/dist/components/forms/index.js +50 -50
  474. package/dist/components/index.js +183 -183
  475. package/dist/components/layout/Card/index.js +2 -2
  476. package/dist/components/layout/Collapsible/index.js +2 -2
  477. package/dist/components/layout/Container/index.js +2 -2
  478. package/dist/components/layout/Flex/index.js +2 -2
  479. package/dist/components/layout/Grid/index.js +2 -2
  480. package/dist/components/layout/Panel/index.js +3 -3
  481. package/dist/components/layout/ResizablePanels/index.js +2 -2
  482. package/dist/components/layout/ResponsiveContainer/index.js +2 -2
  483. package/dist/components/layout/ScrollArea/index.js +2 -2
  484. package/dist/components/layout/Section/index.js +2 -2
  485. package/dist/components/layout/Sheet/index.js +2 -2
  486. package/dist/components/layout/Stack/index.js +2 -2
  487. package/dist/components/layout/index.js +13 -13
  488. package/dist/components/navigation/AccountSwitch/index.js +6 -6
  489. package/dist/components/navigation/Breadcrumb/index.js +2 -2
  490. package/dist/components/navigation/ContextMenu/index.js +2 -2
  491. package/dist/components/navigation/Drawer/index.js +2 -2
  492. package/dist/components/navigation/DropdownMenu/index.js +2 -2
  493. package/dist/components/navigation/FileTree/index.js +2 -2
  494. package/dist/components/navigation/Header/index.js +2 -2
  495. package/dist/components/navigation/LogoConta/index.js +2 -2
  496. package/dist/components/navigation/Menu/index.js +3 -3
  497. package/dist/components/navigation/Menubar/index.js +2 -2
  498. package/dist/components/navigation/Navbar/index.js +2 -2
  499. package/dist/components/navigation/NavigationMenu/index.js +2 -2
  500. package/dist/components/navigation/Pagination/index.js +7 -7
  501. package/dist/components/navigation/Sidebar/index.js +11 -11
  502. package/dist/components/navigation/SkipLinks/index.js +2 -2
  503. package/dist/components/navigation/SpeedDial/index.js +3 -3
  504. package/dist/components/navigation/TabNavigation/index.js +2 -2
  505. package/dist/components/navigation/TabPanel/index.js +2 -2
  506. package/dist/components/navigation/Tabs/index.js +2 -2
  507. package/dist/components/navigation/Toolbar/index.js +2 -2
  508. package/dist/components/navigation/Topbar/index.js +2 -2
  509. package/dist/components/navigation/index.js +32 -32
  510. package/dist/components/primitives/ArrowAnimated/index.js +2 -2
  511. package/dist/components/primitives/Avatar/index.js +3 -3
  512. package/dist/components/primitives/Badge/index.js +3 -3
  513. package/dist/components/primitives/Button/index.js +6 -6
  514. package/dist/components/primitives/ButtonGroup/index.js +3 -3
  515. package/dist/components/primitives/ConfirmButton/index.js +8 -8
  516. package/dist/components/primitives/Divider/index.js +2 -2
  517. package/dist/components/primitives/FeaturedIcon/index.js +2 -2
  518. package/dist/components/primitives/FolderStack/index.js +2 -2
  519. package/dist/components/primitives/Heading/index.js +2 -2
  520. package/dist/components/primitives/Icon/index.js +2 -2
  521. package/dist/components/primitives/Image/index.js +2 -2
  522. package/dist/components/primitives/Kbd/index.js +2 -2
  523. package/dist/components/primitives/Label/index.js +2 -2
  524. package/dist/components/primitives/Link/index.js +2 -2
  525. package/dist/components/primitives/Paragraph/index.js +2 -2
  526. package/dist/components/primitives/PaymentMethodIcon/index.js +2 -2
  527. package/dist/components/primitives/ProgressBar/index.js +3 -3
  528. package/dist/components/primitives/ProgressCircle/index.js +3 -3
  529. package/dist/components/primitives/SkeletonLoader/index.js +2 -2
  530. package/dist/components/primitives/Spacer/index.js +2 -2
  531. package/dist/components/primitives/Spinner/index.js +2 -2
  532. package/dist/components/primitives/SplitButton/index.js +3 -3
  533. package/dist/components/primitives/StatusIndicator/index.js +2 -2
  534. package/dist/components/primitives/Tag/index.js +2 -2
  535. package/dist/components/primitives/Text/index.js +2 -2
  536. package/dist/components/primitives/Thumbnail/index.js +3 -3
  537. package/dist/components/primitives/Toggle/index.js +2 -2
  538. package/dist/components/primitives/index.js +32 -32
  539. package/dist/components/workflow/ApprovalFlow/index.js +8 -8
  540. package/dist/components/workflow/ApprovalStatus/index.js +2 -2
  541. package/dist/components/workflow/CommentSystem/index.js +9 -9
  542. package/dist/components/workflow/Dashboard/index.js +7 -7
  543. package/dist/components/workflow/DashboardBuilder/index.js +9 -9
  544. package/dist/components/workflow/KanbanBoard/index.js +9 -9
  545. package/dist/components/workflow/ProgressSteps/index.js +2 -2
  546. package/dist/components/workflow/ReportGenerator/index.js +9 -9
  547. package/dist/components/workflow/Stepper/index.js +2 -2
  548. package/dist/components/workflow/TaskCard/index.js +2 -2
  549. package/dist/components/workflow/TaskList/index.js +2 -2
  550. package/dist/components/workflow/TaskStatus/index.js +3 -3
  551. package/dist/components/workflow/Wizard/index.js +8 -8
  552. package/dist/components/workflow/index.js +26 -26
  553. package/dist/index.d.ts +55 -14
  554. package/dist/index.js +183 -183
  555. package/dist/lib/utils.d.ts +2 -1
  556. package/dist/lib/utils.js +1 -1
  557. package/package.json +1 -1
  558. package/dist/chunk-B2OCNHUW.js.map +0 -1
  559. package/dist/chunk-DSCLJ3GK.js.map +0 -1
  560. package/dist/chunk-HRNDJU7D.js +0 -11
  561. package/dist/chunk-HRNDJU7D.js.map +0 -1
  562. package/dist/chunk-IZC5YFGO.js.map +0 -1
  563. package/dist/chunk-JDG5A44W.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/advanced/FileUpload/FileUpload.variants.ts","../src/components/advanced/FileUpload/FileUpload.tsx"],"names":[],"mappings":"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","file":"chunk-B6KQKQ4S.js","sourcesContent":["// FileUpload/FileUpload.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * FileUpload root container variants\n */\nexport const fileUploadVariants = cva(\n // Base styles\n [\"relative\", \"w-full\"],\n {\n variants: {\n variant: {\n button: \"\",\n dropzone: [\n \"border-2 border-dashed border-input\",\n \"rounded-lg\",\n \"transition-colors duration-200\",\n \"hover:border-primary/50\",\n \"data-[dragging=true]:border-primary data-[dragging=true]:bg-primary/5\",\n ],\n avatar: [\n \"inline-flex\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"overflow-hidden\",\n ],\n inline: [\"flex items-center gap-2\"],\n },\n },\n defaultVariants: {\n variant: \"button\",\n },\n }\n)\n\n/**\n * FileUpload trigger button variants\n */\nexport const fileUploadTriggerVariants = cva(\n // Base styles\n [\n \"inline-flex items-center justify-center gap-2\",\n \"rounded-md font-medium\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n ],\n {\n variants: {\n variant: {\n default: [\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n ],\n secondary: [\n \"bg-secondary text-secondary-foreground\",\n \"hover:bg-secondary/80\",\n ],\n outline: [\n \"border border-input bg-background\",\n \"hover:bg-accent hover:text-accent-foreground\",\n ],\n ghost: [\"hover:bg-accent hover:text-accent-foreground\"],\n },\n size: {\n sm: \"h-8 px-3 text-xs\",\n md: \"h-10 px-4 text-sm\",\n lg: \"h-12 px-6 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\n/**\n * FileUpload dropzone area variants\n */\nexport const fileUploadDropzoneVariants = cva(\n // Base styles\n [\n \"flex flex-col items-center justify-center\",\n \"p-8\",\n \"cursor-pointer\",\n \"transition-colors duration-200\",\n ],\n {\n variants: {\n isDragging: {\n true: \"bg-primary/5\",\n false: \"\",\n },\n disabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n isDragging: false,\n disabled: false,\n },\n }\n)\n\n/**\n * FileUpload preview item variants\n */\nexport const fileUploadPreviewVariants = cva(\n // Base styles\n [\n \"relative\",\n \"flex items-center gap-3\",\n \"p-3\",\n \"rounded-md\",\n \"bg-muted/50\",\n \"border border-border\",\n ],\n {\n variants: {\n status: {\n pending: \"\",\n uploading: \"\",\n success: \"border-success/50 bg-success/5\",\n error: \"border-destructive/50 bg-destructive/5\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n },\n }\n)\n\n/**\n * FileUpload avatar preview variants\n */\nexport const fileUploadAvatarVariants = cva(\n // Base styles\n [\n \"relative\",\n \"rounded-full\",\n \"overflow-hidden\",\n \"bg-muted\",\n \"flex items-center justify-center\",\n ],\n {\n variants: {\n size: {\n sm: \"size-16\",\n md: \"size-24\",\n lg: \"size-32\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * FileUpload progress bar variants\n */\nexport const fileUploadProgressVariants = cva(\n // Base styles\n [\"h-1 w-full overflow-hidden rounded-full bg-muted\"],\n {\n variants: {\n status: {\n pending: \"\",\n uploading: \"\",\n success: \"\",\n error: \"\",\n },\n },\n }\n)\n\n/**\n * FileUpload progress bar fill variants\n */\nexport const fileUploadProgressFillVariants = cva(\n // Base styles\n [\"h-full transition-all duration-300 ease-out\"],\n {\n variants: {\n status: {\n pending: \"bg-muted-foreground\",\n uploading: \"bg-primary\",\n success: \"bg-success\",\n error: \"bg-destructive\",\n },\n },\n defaultVariants: {\n status: \"uploading\",\n },\n }\n)\n\n// Export variant types\nexport type FileUploadVariantProps = VariantProps<typeof fileUploadVariants>\nexport type FileUploadTriggerVariantProps = VariantProps<\n typeof fileUploadTriggerVariants\n>\nexport type FileUploadDropzoneVariantProps = VariantProps<\n typeof fileUploadDropzoneVariants\n>\nexport type FileUploadPreviewVariantProps = VariantProps<\n typeof fileUploadPreviewVariants\n>\nexport type FileUploadAvatarVariantProps = VariantProps<\n typeof fileUploadAvatarVariants\n>\nexport type FileUploadProgressVariantProps = VariantProps<\n typeof fileUploadProgressVariants\n>\n","\"use client\"\n\nimport type {\n FileUploadContextValue,\n FileUploadDropzoneProps,\n FileUploadListProps,\n FileUploadPreviewProps,\n FileUploadProgressProps,\n FileUploadProps,\n FileUploadTriggerProps,\n FileValidationError,\n UploadProgress,\n} from \"./FileUpload.types\"\n\nimport {\n AlertCircleIcon,\n CheckCircle2Icon,\n FileIcon,\n Loader2Icon,\n UploadCloudIcon,\n XIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n fileUploadAvatarVariants,\n fileUploadDropzoneVariants,\n fileUploadPreviewVariants,\n fileUploadProgressFillVariants,\n fileUploadProgressVariants,\n fileUploadTriggerVariants,\n fileUploadVariants,\n} from \"./FileUpload.variants\"\n\n// ============================================\n// CONTEXT\n// ============================================\n\nconst FileUploadContext = React.createContext<FileUploadContextValue | null>(\n null\n)\n\nfunction useFileUploadContext() {\n const context = React.use(FileUploadContext)\n if (!context) {\n throw new Error(\n \"FileUpload compound components must be used within a FileUpload component\"\n )\n }\n return context\n}\n\n// ============================================\n// UTILITIES\n// ============================================\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 B\"\n const k = 1024\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\"]\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return `${String(Number.parseFloat((bytes / Math.pow(k, i)).toFixed(1)))} ${sizes[i] ?? \"\"}`\n}\n\nfunction getFileTypeIcon(file: File) {\n if (file.type.startsWith(\"image/\")) {\n return null // Will show preview\n }\n return <FileIcon className=\"size-8 text-muted-foreground\" />\n}\n\nfunction validateFiles(\n files: File[],\n options: {\n accept?: string\n currentCount?: number\n maxFiles?: number\n maxSize?: number\n }\n): { errors: FileValidationError[]; validFiles: File[] } {\n const errors: FileValidationError[] = []\n const validFiles: File[] = []\n\n const { accept, maxFiles, maxSize, currentCount = 0 } = options\n\n // Parse accept string into list of valid types\n const acceptedTypes = accept\n ? accept.split(\",\").map((t) => t.trim().toLowerCase())\n : null\n\n for (const file of files) {\n let isValid = true\n\n // Check file type\n if (acceptedTypes) {\n const fileType = file.type.toLowerCase()\n const fileExt = `.${file.name.split(\".\").pop()?.toLowerCase() ?? \"\"}`\n\n const typeMatch = acceptedTypes.some((accepted) => {\n if (accepted.startsWith(\".\")) {\n return fileExt === accepted\n }\n if (accepted.endsWith(\"/*\")) {\n const baseType = accepted.replace(\"/*\", \"\")\n return fileType.startsWith(baseType)\n }\n return fileType === accepted\n })\n\n if (!typeMatch) {\n errors.push({\n file,\n message: `File type not accepted. Accepted: ${accept ?? \"\"}`,\n type: \"type\",\n })\n isValid = false\n }\n }\n\n // Check file size\n if (maxSize && file.size > maxSize) {\n errors.push({\n file,\n message: `File too large. Maximum size: ${formatFileSize(maxSize)}`,\n type: \"size\",\n })\n isValid = false\n }\n\n // Check file count\n if (maxFiles && currentCount + validFiles.length >= maxFiles) {\n errors.push({\n file,\n message: `Maximum ${String(maxFiles)} file(s) allowed`,\n type: \"count\",\n })\n isValid = false\n }\n\n if (isValid) {\n validFiles.push(file)\n }\n }\n\n return { errors, validFiles }\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * FileUpload - Complete file upload component with multiple variants\n *\n * @example\n * ```tsx\n * // Basic button upload\n * <FileUpload accept=\"image/*\" onChange={(files) => console.log(files)}>\n * <FileUploadTrigger>Upload File</FileUploadTrigger>\n * </FileUpload>\n *\n * // Dropzone variant\n * <FileUpload variant=\"dropzone\" multiple onUpload={uploadFn}>\n * <FileUploadDropzone>\n * <p>Drag files here or click to upload</p>\n * </FileUploadDropzone>\n * <FileUploadList />\n * </FileUpload>\n * ```\n */\nfunction FileUpload({\n accept,\n autoUpload = false,\n children,\n className,\n disabled = false,\n maxFiles = 1,\n maxSize,\n multiple = false,\n onChange,\n onComplete,\n onError,\n onProgress,\n onRemove,\n onUpload,\n required = false,\n showPreview = true,\n value,\n variant = \"button\",\n ...props\n}: FileUploadProps) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n const [internalFiles, setInternalFiles] = React.useState<File[]>([])\n const [isDragging, setIsDragging] = React.useState(false)\n const [progress, setProgress] = React.useState<UploadProgress[]>([])\n const [status, setStatus] = React.useState<\n \"error\" | \"idle\" | \"success\" | \"uploading\"\n >(\"idle\")\n\n // Use controlled or uncontrolled mode\n const files = value ?? internalFiles\n const isControlled = value !== undefined\n const setFilesInternal = React.useCallback(\n (newFiles: File[]) => {\n if (!isControlled) {\n setInternalFiles(newFiles)\n }\n },\n [isControlled]\n )\n\n const openFilePicker = React.useCallback(() => {\n if (!disabled) {\n inputRef.current?.click()\n }\n }, [disabled])\n\n const handleUpload = React.useCallback(\n async (filesToUpload: File[]) => {\n if (!onUpload) return\n\n setStatus(\"uploading\")\n\n // Update progress to uploading\n setProgress((prev) =>\n prev.map((p) =>\n filesToUpload.includes(p.file)\n ? { ...p, progress: 0, status: \"uploading\" as const }\n : p\n )\n )\n onProgress?.(progress)\n\n try {\n const results = await onUpload(filesToUpload)\n\n // Update progress to success/error based on results\n setProgress((prev) =>\n prev.map((p) => {\n const result = results.find((r) => r.file === p.file)\n if (!result) return p\n return {\n ...p,\n error: result.error,\n progress: 100,\n status: result.error ? (\"error\" as const) : (\"success\" as const),\n }\n })\n )\n\n const hasErrors = results.some((r) => r.error)\n setStatus(hasErrors ? \"error\" : \"success\")\n onComplete?.(results)\n } catch (error) {\n setStatus(\"error\")\n setProgress((prev) =>\n prev.map((p) =>\n filesToUpload.includes(p.file)\n ? {\n ...p,\n error: error instanceof Error ? error.message : \"Upload failed\",\n status: \"error\" as const,\n }\n : p\n )\n )\n onError?.(error instanceof Error ? error : new Error(\"Upload failed\"))\n }\n },\n [onUpload, onProgress, onComplete, onError, progress]\n )\n\n const selectFiles = React.useCallback(\n (newFiles: File[] | FileList) => {\n if (disabled) return\n\n const fileArray = [...newFiles]\n const { errors, validFiles } = validateFiles(fileArray, {\n accept,\n currentCount: multiple ? files.length : 0,\n maxFiles: multiple ? maxFiles : 1,\n maxSize,\n })\n\n // Report validation errors\n if (errors.length > 0 && onError) {\n const error = new Error(errors.map((e) => e.message).join(\"; \"))\n onError(error)\n }\n\n if (validFiles.length === 0) return\n\n // Update files\n const updatedFiles = multiple ? [...files, ...validFiles] : validFiles\n setFilesInternal(updatedFiles)\n onChange?.(updatedFiles)\n\n // Initialize progress\n const initialProgress: UploadProgress[] = validFiles.map((file) => ({\n error: undefined,\n file,\n progress: 0,\n status: \"pending\" as const,\n }))\n setProgress((prev) =>\n multiple ? [...prev, ...initialProgress] : initialProgress\n )\n\n // Auto upload if enabled\n if (autoUpload && onUpload) {\n void handleUpload(validFiles)\n }\n },\n [\n disabled,\n accept,\n maxSize,\n maxFiles,\n multiple,\n files,\n onChange,\n autoUpload,\n onUpload,\n onError,\n setFilesInternal,\n handleUpload,\n ]\n )\n\n const removeFile = React.useCallback(\n (file: File, index: number) => {\n const fileToRemove = files[index]\n if (!fileToRemove || fileToRemove !== file) return\n\n const updatedFiles = files.filter((_, i) => i !== index)\n setFilesInternal(updatedFiles)\n onChange?.(updatedFiles)\n onRemove?.(fileToRemove, index)\n\n // Remove from progress\n setProgress((prev) => prev.filter((p) => p.file !== fileToRemove))\n },\n [files, onChange, onRemove, setFilesInternal]\n )\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newFiles = event.target.files\n if (newFiles) {\n selectFiles(newFiles)\n }\n // Reset input value to allow selecting the same file again\n event.target.value = \"\"\n },\n [selectFiles]\n )\n\n const handleDragOver = React.useCallback(\n (event: React.DragEvent) => {\n event.preventDefault()\n if (!disabled) {\n setIsDragging(true)\n }\n },\n [disabled]\n )\n\n const handleDragLeave = React.useCallback((event: React.DragEvent) => {\n event.preventDefault()\n setIsDragging(false)\n }, [])\n\n const handleDrop = React.useCallback(\n (event: React.DragEvent) => {\n event.preventDefault()\n setIsDragging(false)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- dataTransfer.files can be null\n if (!disabled && event.dataTransfer.files) {\n selectFiles(event.dataTransfer.files)\n }\n },\n [disabled, selectFiles]\n )\n\n const contextValue: FileUploadContextValue = {\n accept,\n disabled,\n files,\n isDragging,\n maxFiles,\n maxSize,\n multiple,\n openFilePicker,\n progress,\n removeFile,\n selectFiles,\n status,\n }\n\n return (\n <FileUploadContext value={contextValue}>\n <div\n className={cn(fileUploadVariants({ variant }), className)}\n data-dragging={isDragging}\n data-slot=\"file-upload\"\n data-status={status}\n data-variant={variant}\n onDragLeave={variant === \"dropzone\" ? handleDragLeave : undefined}\n onDragOver={variant === \"dropzone\" ? handleDragOver : undefined}\n onDrop={variant === \"dropzone\" ? handleDrop : undefined}\n {...props}\n >\n <input\n ref={inputRef}\n accept={accept}\n aria-hidden=\"true\"\n className=\"sr-only\"\n data-slot=\"file-upload-input\"\n disabled={disabled}\n multiple={multiple}\n required={required}\n tabIndex={-1}\n type=\"file\"\n onChange={handleInputChange}\n />\n {children}\n {showPreview && files.length > 0 && variant !== \"avatar\" && (\n <FileUploadList\n className=\"mt-4\"\n files={files}\n progress={progress}\n onRemove={removeFile}\n />\n )}\n </div>\n </FileUploadContext>\n )\n}\n\n// ============================================\n// TRIGGER COMPONENT\n// ============================================\n\n/**\n * FileUploadTrigger - Button to trigger file selection\n */\nfunction FileUploadTrigger({\n children,\n className,\n disabled: disabledProp,\n ...props\n}: FileUploadTriggerProps) {\n const { disabled: contextDisabled, openFilePicker } = useFileUploadContext()\n const disabled = disabledProp ?? contextDisabled\n\n return (\n <button\n className={cn(fileUploadTriggerVariants(), className)}\n data-slot=\"file-upload-trigger\"\n disabled={disabled}\n type=\"button\"\n onClick={openFilePicker}\n {...props}\n >\n {children ?? (\n <>\n <UploadCloudIcon className=\"size-4\" />\n <span>Choose File</span>\n </>\n )}\n </button>\n )\n}\n\n// ============================================\n// DROPZONE COMPONENT\n// ============================================\n\n/**\n * FileUploadDropzone - Drag and drop area for file selection\n */\nfunction FileUploadDropzone({\n children,\n className,\n disabled: disabledProp,\n ...props\n}: FileUploadDropzoneProps) {\n const {\n accept,\n disabled: contextDisabled,\n isDragging,\n maxSize,\n multiple,\n openFilePicker,\n } = useFileUploadContext()\n const disabled = disabledProp ?? contextDisabled\n\n return (\n <div\n className={cn(\n fileUploadDropzoneVariants({ disabled, isDragging }),\n className\n )}\n data-dragging={isDragging}\n data-slot=\"file-upload-dropzone\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={disabled ? undefined : openFilePicker}\n onKeyDown={(e) => {\n if (!disabled && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n openFilePicker()\n }\n }}\n {...props}\n >\n {children ?? (\n <>\n <UploadCloudIcon className=\"mx-auto size-12 text-muted-foreground\" />\n <p className=\"mt-2 text-sm font-medium\">\n {isDragging\n ? \"Drop files here\"\n : \"Drag files here or click to upload\"}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {accept && `Accepted: ${accept}`}\n {accept && maxSize && \" • \"}\n {maxSize && `Max size: ${formatFileSize(maxSize)}`}\n {(accept ?? maxSize) && multiple && \" • \"}\n {multiple && \"Multiple files allowed\"}\n </p>\n </>\n )}\n </div>\n )\n}\n\n// ============================================\n// AVATAR PREVIEW COMPONENT\n// ============================================\n\n/**\n * FileUploadAvatar - Circular preview for avatar uploads\n */\nfunction FileUploadAvatar({\n children,\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"lg\" | \"md\" | \"sm\" }) {\n const { disabled, files, openFilePicker, status } = useFileUploadContext()\n const file = files[0]\n const [preview, setPreview] = React.useState<null | string>(null)\n\n // Object URL lifecycle requires useEffect for cleanup\n /* eslint-disable @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n React.useEffect(() => {\n if (file?.type.startsWith(\"image/\")) {\n const url = URL.createObjectURL(file)\n setPreview(url)\n return () => {\n URL.revokeObjectURL(url)\n }\n }\n setPreview(null)\n return\n }, [file])\n /* eslint-enable @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n return (\n <div\n className={cn(\n fileUploadAvatarVariants({ size }),\n \"group cursor-pointer\",\n className\n )}\n data-slot=\"file-upload-avatar\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={disabled ? undefined : openFilePicker}\n onKeyDown={(e) => {\n if (!disabled && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n openFilePicker()\n }\n }}\n {...props}\n >\n {preview ? (\n <img\n alt=\"Avatar preview\"\n className=\"size-full object-cover\"\n src={preview}\n />\n ) : (\n children ?? <UploadCloudIcon className=\"size-8 text-muted-foreground\" />\n )}\n <div className=\"absolute inset-0 flex items-center justify-center rounded-full bg-black/50 opacity-0 transition-opacity group-hover:opacity-100\">\n {status === \"uploading\" ? (\n <Loader2Icon className=\"size-6 animate-spin text-white\" />\n ) : (\n <UploadCloudIcon className=\"size-6 text-white\" />\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// FILE LIST COMPONENT\n// ============================================\n\n/**\n * FileUploadList - List of selected files with previews\n */\nfunction FileUploadList({\n className,\n files: filesProp,\n onRemove: onRemoveProp,\n progress: progressProp,\n ...props\n}: FileUploadListProps) {\n const context = React.use(FileUploadContext)\n\n // Use props if provided, otherwise use context\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- context can be null when used outside provider\n const files = filesProp ?? context?.files ?? []\n \n const progress = progressProp ?? context?.progress ?? []\n const onRemove = onRemoveProp ?? context?.removeFile\n\n if (files.length === 0) return null\n\n return (\n <div\n className={cn(\"flex flex-col gap-2\", className)}\n data-slot=\"file-upload-list\"\n {...props}\n >\n {files.map((file, index) => {\n const fileProgress = progress.find((p) => p.file === file)\n return (\n <FileUploadPreview\n key={`${file.name}-${String(file.size)}-${String(index)}`}\n file={file}\n index={index}\n progress={fileProgress}\n onRemove={onRemove}\n />\n )\n })}\n </div>\n )\n}\n\n// ============================================\n// PREVIEW COMPONENT\n// ============================================\n\n/**\n * FileUploadPreview - Single file preview with progress and remove button\n */\nfunction FileUploadPreview({\n className,\n file,\n index,\n onRemove,\n progress,\n ...props\n}: FileUploadPreviewProps) {\n const [preview, setPreview] = React.useState<null | string>(null)\n\n // Object URL lifecycle requires useEffect for cleanup\n /* eslint-disable react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change */\n React.useEffect(() => {\n if (file.type.startsWith(\"image/\")) {\n const url = URL.createObjectURL(file)\n setPreview(url)\n return () => {\n URL.revokeObjectURL(url)\n }\n }\n setPreview(null)\n return\n }, [file])\n /* eslint-enable react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change */\n\n const status = progress?.status ?? \"pending\"\n\n return (\n <div\n className={cn(fileUploadPreviewVariants({ status }), className)}\n data-slot=\"file-upload-preview\"\n data-status={status}\n {...props}\n >\n {/* Thumbnail */}\n <div className=\"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded bg-muted\">\n {preview ? (\n <img\n alt={file.name}\n className=\"size-full object-cover\"\n src={preview}\n />\n ) : (\n getFileTypeIcon(file)\n )}\n </div>\n\n {/* File Info */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium\">{file.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {formatFileSize(file.size)}\n {progress?.error && (\n <span className=\"ml-2 text-destructive\">{progress.error}</span>\n )}\n </p>\n\n {/* Progress Bar */}\n {progress && status === \"uploading\" && (\n <FileUploadProgressBar file={file} progress={progress} />\n )}\n </div>\n\n {/* Status Icon */}\n <div className=\"shrink-0\">\n {status === \"uploading\" && (\n <Loader2Icon className=\"size-4 animate-spin text-muted-foreground\" />\n )}\n {status === \"success\" && (\n <CheckCircle2Icon className=\"size-4 text-success\" />\n )}\n {status === \"error\" && (\n <AlertCircleIcon className=\"size-4 text-destructive\" />\n )}\n </div>\n\n {/* Remove Button */}\n {onRemove && status !== \"uploading\" && (\n <button\n aria-label={`Remove ${file.name}`}\n className=\"shrink-0 rounded-sm p-1 opacity-50 hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n type=\"button\"\n onClick={() => { onRemove(file, index); }}\n >\n <XIcon className=\"size-4\" />\n </button>\n )}\n </div>\n )\n}\n\n// ============================================\n// PROGRESS BAR COMPONENT\n// ============================================\n\n/**\n * FileUploadProgressBar - Progress indicator for file upload\n */\nfunction FileUploadProgressBar({\n className,\n file,\n progress,\n ...props\n}: FileUploadProgressProps) {\n return (\n <div\n aria-label={`Uploading ${file.name}`}\n aria-valuemax={100}\n aria-valuemin={0}\n aria-valuenow={progress.progress}\n className={cn(fileUploadProgressVariants(), \"mt-2\", className)}\n data-slot=\"file-upload-progress\"\n role=\"progressbar\"\n {...props}\n >\n <div\n className={cn(fileUploadProgressFillVariants({ status: progress.status }))}\n style={{ width: `${String(progress.progress)}%` }}\n />\n </div>\n )\n}\n\n// ============================================\n// INLINE VARIANT\n// ============================================\n\n/**\n * FileUploadInline - Inline variant with input and button\n */\nfunction FileUploadInline({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { disabled, files, openFilePicker } = useFileUploadContext()\n\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"file-upload-inline\"\n {...props}\n >\n <div className=\"flex-1 truncate rounded-md border border-input bg-background px-3 py-2 text-sm\">\n {files.length > 0\n ? files.map((f) => f.name).join(\", \")\n : \"No file selected\"}\n </div>\n {children ?? (\n <button\n className={cn(fileUploadTriggerVariants({ variant: \"outline\" }))}\n disabled={disabled}\n type=\"button\"\n onClick={openFilePicker}\n >\n Browse\n </button>\n )}\n </div>\n )\n}\n\nFileUpload.displayName = \"FileUpload\"\nFileUploadTrigger.displayName = \"FileUploadTrigger\"\nFileUploadDropzone.displayName = \"FileUploadDropzone\"\nFileUploadAvatar.displayName = \"FileUploadAvatar\"\nFileUploadList.displayName = \"FileUploadList\"\nFileUploadPreview.displayName = \"FileUploadPreview\"\nFileUploadProgressBar.displayName = \"FileUploadProgressBar\"\nFileUploadInline.displayName = \"FileUploadInline\"\n\nexport {\n FileUpload,\n FileUploadAvatar,\n FileUploadDropzone,\n FileUploadInline,\n FileUploadList,\n FileUploadPreview,\n FileUploadProgressBar,\n FileUploadTrigger,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/advanced/FileUpload/FileUpload.variants.ts","../src/components/advanced/FileUpload/FileUpload.tsx"],"names":[],"mappings":";;;;;;AAMO,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA,EAEhC,CAAC,YAAY,QAAQ,CAAA;AAAA,EACrB;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,QAAA,EAAU;AAAA,UACR,qCAAA;AAAA,UACA,YAAA;AAAA,UACA,gCAAA;AAAA,UACA,yBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,aAAA;AAAA,UACA,gBAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,MAAA,EAAQ,CAAC,yBAAyB;AAAA;AACpC,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA;AAAA,EAEvC;AAAA,IACE,+CAAA;AAAA,IACA,wBAAA;AAAA,IACA,gCAAA;AAAA,IACA,qGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA,UACP,oCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,SAAA,EAAW;AAAA,UACT,wCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,OAAA,EAAS;AAAA,UACP,mCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,CAAC,8CAA8C;AAAA,OACxD;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA;AAAA,EAExC;AAAA,IACE,2CAAA;AAAA,IACA,KAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,cAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,+BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,UAAA,EAAY,KAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAA;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA;AAAA,EAEvC;AAAA,IACE,UAAA;AAAA,IACA,yBAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,QACX,OAAA,EAAS,gCAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ,CAAA;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA;AAAA,EAEtC;AAAA,IACE,UAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA;AAAA,EAExC,CAAC,kDAAkD,CAAA;AAAA,EACnD;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,QACX,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT;AACF;AAEJ,CAAA;AAKO,IAAM,8BAAA,GAAiC,GAAA;AAAA;AAAA,EAE5C,CAAC,6CAA6C,CAAA;AAAA,EAC9C;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,qBAAA;AAAA,QACT,SAAA,EAAW,YAAA;AAAA,QACX,OAAA,EAAS,YAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ,CAAA;AC9JA,IAAM,iBAAA,GAA0B,KAAA,CAAA,aAAA;AAAA,EAC9B;AACF,CAAA;AAEA,SAAS,oBAAA,GAAuB;AAC9B,EAAA,MAAM,OAAA,GAAgB,UAAI,iBAAiB,CAAA;AAC3C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAMA,SAAS,eAAe,KAAA,EAAuB;AAC7C,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,KAAA;AACxB,EAAA,MAAM,CAAA,GAAI,IAAA;AACV,EAAA,MAAM,KAAA,GAAQ,CAAC,GAAA,EAAK,IAAA,EAAM,MAAM,IAAI,CAAA;AACpC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAClD,EAAA,OAAO,GAAG,MAAA,CAAO,MAAA,CAAO,YAAY,KAAA,GAAQ,IAAA,CAAK,IAAI,CAAA,EAAG,CAAC,GAAG,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAA,CAAM,CAAC,KAAK,EAAE,CAAA,CAAA;AAC5F;AAEA,SAAS,gBAAgB,IAAA,EAAY;AACnC,EAAA,IAAI,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,8BAAA,EAA+B,CAAA;AAC5D;AAEA,SAAS,aAAA,CACP,OACA,OAAA,EAMuD;AACvD,EAAA,MAAM,SAAgC,EAAC;AACvC,EAAA,MAAM,aAAqB,EAAC;AAE5B,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,YAAA,GAAe,GAAE,GAAI,OAAA;AAGxD,EAAA,MAAM,aAAA,GAAgB,MAAA,GAClB,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAK,CAAE,WAAA,EAAa,CAAA,GACnD,IAAA;AAEJ,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,OAAA,GAAU,IAAA;AAGd,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY;AACvC,MAAA,MAAM,OAAA,GAAU,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,EAAI,EAAG,WAAA,EAAY,IAAK,EAAE,CAAA,CAAA;AAEnE,MAAA,MAAM,SAAA,GAAY,aAAA,CAAc,IAAA,CAAK,CAAC,QAAA,KAAa;AACjD,QAAA,IAAI,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAC5B,UAAA,OAAO,OAAA,KAAY,QAAA;AAAA,QACrB;AACA,QAAA,IAAI,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAG;AAC3B,UAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAC1C,UAAA,OAAO,QAAA,CAAS,WAAW,QAAQ,CAAA;AAAA,QACrC;AACA,QAAA,OAAO,QAAA,KAAa,QAAA;AAAA,MACtB,CAAC,CAAA;AAED,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,IAAA;AAAA,UACA,OAAA,EAAS,CAAA,kCAAA,EAAqC,MAAA,IAAU,EAAE,CAAA,CAAA;AAAA,UAC1D,IAAA,EAAM;AAAA,SACP,CAAA;AACD,QAAA,OAAA,GAAU,KAAA;AAAA,MACZ;AAAA,IACF;AAGA,IAAA,IAAI,OAAA,IAAW,IAAA,CAAK,IAAA,GAAO,OAAA,EAAS;AAClC,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA;AAAA,QACA,OAAA,EAAS,CAAA,8BAAA,EAAiC,cAAA,CAAe,OAAO,CAAC,CAAA,CAAA;AAAA,QACjE,IAAA,EAAM;AAAA,OACP,CAAA;AACD,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAGA,IAAA,IAAI,QAAA,IAAY,YAAA,GAAe,UAAA,CAAW,MAAA,IAAU,QAAA,EAAU;AAC5D,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA;AAAA,QACA,OAAA,EAAS,CAAA,QAAA,EAAW,MAAA,CAAO,QAAQ,CAAC,CAAA,gBAAA,CAAA;AAAA,QACpC,IAAA,EAAM;AAAA,OACP,CAAA;AACD,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,IACtB;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,QAAQ,UAAA,EAAW;AAC9B;AAyBA,SAAS,UAAA,CAAW;AAAA,EAClB,MAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,CAAA;AAAA,EACX,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,KAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,QAAA,GAAiB,aAAyB,IAAI,CAAA;AACpD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU,KAAA,CAAA,QAAA,CAAiB,EAAE,CAAA;AACnE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAAS,KAAK,CAAA;AACxD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAU,KAAA,CAAA,QAAA,CAA2B,EAAE,CAAA;AACnE,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,eAEhC,MAAM,CAAA;AAGR,EAAA,MAAM,QAAQ,KAAA,IAAS,aAAA;AACvB,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,gBAAA,GAAyB,KAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,QAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,cAAA,GAAuB,kBAAY,MAAM;AAC7C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,YAAA,GAAqB,KAAA,CAAA,WAAA;AAAA,IACzB,OAAO,aAAA,KAA0B;AAC/B,MAAA,IAAI,CAAC,QAAA,EAAU;AAEf,MAAA,SAAA,CAAU,WAAW,CAAA;AAGrB,MAAA,WAAA;AAAA,QAAY,CAAC,SACX,IAAA,CAAK,GAAA;AAAA,UAAI,CAAC,CAAA,KACR,aAAA,CAAc,QAAA,CAAS,EAAE,IAAI,CAAA,GACzB,EAAE,GAAG,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,MAAA,EAAQ,aAAqB,GAClD;AAAA;AACN,OACF;AACA,MAAA,UAAA,GAAa,QAAQ,CAAA;AAErB,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS,aAAa,CAAA;AAG5C,QAAA,WAAA;AAAA,UAAY,CAAC,IAAA,KACX,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACd,YAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,EAAE,IAAI,CAAA;AACpD,YAAA,IAAI,CAAC,QAAQ,OAAO,CAAA;AACpB,YAAA,OAAO;AAAA,cACL,GAAG,CAAA;AAAA,cACH,OAAO,MAAA,CAAO,KAAA;AAAA,cACd,QAAA,EAAU,GAAA;AAAA,cACV,MAAA,EAAQ,MAAA,CAAO,KAAA,GAAS,OAAA,GAAqB;AAAA,aAC/C;AAAA,UACF,CAAC;AAAA,SACH;AAEA,QAAA,MAAM,YAAY,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC7C,QAAA,SAAA,CAAU,SAAA,GAAY,UAAU,SAAS,CAAA;AACzC,QAAA,UAAA,GAAa,OAAO,CAAA;AAAA,MACtB,SAAS,KAAA,EAAO;AACd,QAAA,SAAA,CAAU,OAAO,CAAA;AACjB,QAAA,WAAA;AAAA,UAAY,CAAC,SACX,IAAA,CAAK,GAAA;AAAA,YAAI,CAAC,CAAA,KACR,aAAA,CAAc,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,GACzB;AAAA,cACE,GAAG,CAAA;AAAA,cACH,KAAA,EAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,eAAA;AAAA,cAChD,MAAA,EAAQ;AAAA,aACV,GACA;AAAA;AACN,SACF;AACA,QAAA,OAAA,GAAU,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,MACvE;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,UAAA,EAAY,UAAA,EAAY,SAAS,QAAQ;AAAA,GACtD;AAEA,EAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,WAAA;AAAA,IACxB,CAAC,QAAA,KAAgC;AAC/B,MAAA,IAAI,QAAA,EAAU;AAEd,MAAA,MAAM,SAAA,GAAY,CAAC,GAAG,QAAQ,CAAA;AAC9B,MAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,cAAc,SAAA,EAAW;AAAA,QACtD,MAAA;AAAA,QACA,YAAA,EAAc,QAAA,GAAW,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA,QACxC,QAAA,EAAU,WAAW,QAAA,GAAW,CAAA;AAAA,QAChC;AAAA,OACD,CAAA;AAGD,MAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,OAAA,EAAS;AAChC,QAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAC/D,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAEA,MAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAG7B,MAAA,MAAM,eAAe,QAAA,GAAW,CAAC,GAAG,KAAA,EAAO,GAAG,UAAU,CAAA,GAAI,UAAA;AAC5D,MAAA,gBAAA,CAAiB,YAAY,CAAA;AAC7B,MAAA,QAAA,GAAW,YAAY,CAAA;AAGvB,MAAA,MAAM,eAAA,GAAoC,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,QAClE,KAAA,EAAO,MAAA;AAAA,QACP,IAAA;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACV,CAAE,CAAA;AACF,MAAA,WAAA;AAAA,QAAY,CAAC,SACX,QAAA,GAAW,CAAC,GAAG,IAAA,EAAM,GAAG,eAAe,CAAA,GAAI;AAAA,OAC7C;AAGA,MAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,QAAA,KAAK,aAAa,UAAU,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,QAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,UAAA,GAAmB,KAAA,CAAA,WAAA;AAAA,IACvB,CAAC,MAAY,KAAA,KAAkB;AAC7B,MAAA,MAAM,YAAA,GAAe,MAAM,KAAK,CAAA;AAChC,MAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,KAAiB,IAAA,EAAM;AAE5C,MAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AACvD,MAAA,gBAAA,CAAiB,YAAY,CAAA;AAC7B,MAAA,QAAA,GAAW,YAAY,CAAA;AACvB,MAAA,QAAA,GAAW,cAAc,KAAK,CAAA;AAG9B,MAAA,WAAA,CAAY,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,YAAY,CAAC,CAAA;AAAA,IACnE,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,gBAAgB;AAAA,GAC9C;AAEA,EAAA,MAAM,iBAAA,GAA0B,KAAA,CAAA,WAAA;AAAA,IAC9B,CAAC,KAAA,KAA+C;AAC9C,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA;AAC9B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,WAAA,CAAY,QAAQ,CAAA;AAAA,MACtB;AAEA,MAAA,KAAA,CAAM,OAAO,KAAA,GAAQ,EAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,cAAA,GAAuB,KAAA,CAAA,WAAA;AAAA,IAC3B,CAAC,KAAA,KAA2B;AAC1B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,aAAA,CAAc,IAAI,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,eAAA,GAAwB,KAAA,CAAA,WAAA,CAAY,CAAC,KAAA,KAA2B;AACpE,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAmB,KAAA,CAAA,WAAA;AAAA,IACvB,CAAC,KAAA,KAA2B;AAC1B,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,aAAA,CAAc,KAAK,CAAA;AAGnB,MAAA,IAAI,CAAC,QAAA,IAAY,KAAA,CAAM,YAAA,CAAa,KAAA,EAAO;AACzC,QAAA,WAAA,CAAY,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,MACtC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,WAAW;AAAA,GACxB;AAEA,EAAA,MAAM,YAAA,GAAuC;AAAA,IAC3C,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,iBAAA,EAAA,EAAkB,KAAA,EAAO,YAAA,EACxB,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MACxD,eAAA,EAAe,UAAA;AAAA,MACf,WAAA,EAAU,aAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACb,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAa,OAAA,KAAY,UAAA,GAAa,eAAA,GAAkB,MAAA;AAAA,MACxD,UAAA,EAAY,OAAA,KAAY,UAAA,GAAa,cAAA,GAAiB,MAAA;AAAA,MACtD,MAAA,EAAQ,OAAA,KAAY,UAAA,GAAa,UAAA,GAAa,MAAA;AAAA,MAC7C,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,MAAA;AAAA,YACA,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,SAAA;AAAA,YACV,WAAA,EAAU,mBAAA;AAAA,YACV,QAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA,EAAU,EAAA;AAAA,YACV,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,QAAA;AAAA,QACA,WAAA,IAAe,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,YAAY,QAAA,oBAC9C,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,MAAA;AAAA,YACV,KAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AASA,SAAS,iBAAA,CAAkB;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAiB,cAAA,KAAmB,oBAAA,EAAqB;AAC3E,EAAA,MAAM,WAAW,YAAA,IAAgB,eAAA;AAEjC,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA0B,EAAG,SAAS,CAAA;AAAA,MACpD,WAAA,EAAU,qBAAA;AAAA,MACV,QAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,cAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEH,sCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,WAAU,QAAA,EAAS,CAAA;AAAA,wBACpC,GAAA,CAAC,UAAK,QAAA,EAAA,aAAA,EAAW;AAAA,OAAA,EACnB;AAAA;AAAA,GAEJ;AAEJ;AASA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,QAAA,EAAU,eAAA;AAAA,IACV,UAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,oBAAA,EAAqB;AACzB,EAAA,MAAM,WAAW,YAAA,IAAgB,eAAA;AAEjC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,0BAAA,CAA2B,EAAE,QAAA,EAAU,UAAA,EAAY,CAAA;AAAA,QACnD;AAAA,OACF;AAAA,MACA,eAAA,EAAe,UAAA;AAAA,MACf,WAAA,EAAU,sBAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,MAC1B,OAAA,EAAS,WAAW,MAAA,GAAY,cAAA;AAAA,MAChC,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAC,QAAA,KAAa,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACrD,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,cAAA,EAAe;AAAA,QACjB;AAAA,MACF,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,sCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,WAAU,uCAAA,EAAwC,CAAA;AAAA,4BAClE,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EACV,QAAA,EAAA,UAAA,GACG,oBACA,oCAAA,EACN,CAAA;AAAA,wBACA,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oCAAA,EACV,QAAA,EAAA;AAAA,UAAA,MAAA,IAAU,aAAa,MAAM,CAAA,CAAA;AAAA,UAC7B,UAAU,OAAA,IAAW,UAAA;AAAA,UACrB,OAAA,IAAW,CAAA,UAAA,EAAa,cAAA,CAAe,OAAO,CAAC,CAAA,CAAA;AAAA,UAAA,CAC9C,MAAA,IAAU,YAAY,QAAA,IAAY,UAAA;AAAA,UACnC,QAAA,IAAY;AAAA,SAAA,EACf;AAAA,OAAA,EACF;AAAA;AAAA,GAEJ;AAEJ;AASA,SAAS,gBAAA,CAAiB;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAgE;AAC9D,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,cAAA,EAAgB,MAAA,KAAW,oBAAA,EAAqB;AACzE,EAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAwB,IAAI,CAAA;AAIhE,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,IAAA,EAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AACnC,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,MAAA,UAAA,CAAW,GAAG,CAAA;AACd,MAAA,OAAO,MAAM;AACX,QAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wBAAA,CAAyB,EAAE,IAAA,EAAM,CAAA;AAAA,QACjC,sBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,oBAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,MAC1B,OAAA,EAAS,WAAW,MAAA,GAAY,cAAA;AAAA,MAChC,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAC,QAAA,KAAa,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACrD,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,cAAA,EAAe;AAAA,QACjB;AAAA,MACF,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,mBACC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAI,gBAAA;AAAA,YACJ,SAAA,EAAU,wBAAA;AAAA,YACV,GAAA,EAAK;AAAA;AAAA,SACP,GAEA,QAAA,oBAAY,GAAA,CAAC,eAAA,EAAA,EAAgB,WAAU,8BAAA,EAA+B,CAAA;AAAA,wBAExE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iIAAA,EACZ,qBAAW,WAAA,mBACV,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,kCAAiC,CAAA,mBAExD,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,qBAAoB,CAAA,EAEnD;AAAA;AAAA;AAAA,GACF;AAEJ;AASA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,OAAA,GAAgB,UAAI,iBAAiB,CAAA;AAI3C,EAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,OAAA,EAAS,KAAA,IAAS,EAAC;AAE9C,EAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,OAAA,EAAS,QAAA,IAAY,EAAC;AACvD,EAAA,MAAM,QAAA,GAAW,gBAAgB,OAAA,EAAS,UAAA;AAE1C,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC9C,WAAA,EAAU,kBAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,QAAA,MAAM,eAAe,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AACzD,QAAA,uBACE,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YAEC,IAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA,EAAU,YAAA;AAAA,YACV;AAAA,WAAA;AAAA,UAJK,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAKzD;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AASA,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAwB,IAAI,CAAA;AAIhE,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAClC,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,MAAA,UAAA,CAAW,GAAG,CAAA;AACd,MAAA,OAAO,MAAM;AACX,QAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,MACzB,CAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAA,MAAM,MAAA,GAAS,UAAU,MAAA,IAAU,SAAA;AAEnC,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,yBAAA,CAA0B,EAAE,MAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,MAC9D,WAAA,EAAU,qBAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACZ,GAAG,KAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EACZ,QAAA,EAAA,OAAA,mBACC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAK,IAAA,CAAK,IAAA;AAAA,YACV,SAAA,EAAU,wBAAA;AAAA,YACV,GAAA,EAAK;AAAA;AAAA,SACP,GAEA,eAAA,CAAgB,IAAI,CAAA,EAExB,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,0BACvD,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACV,QAAA,EAAA;AAAA,YAAA,cAAA,CAAe,KAAK,IAAI,CAAA;AAAA,YACxB,UAAU,KAAA,oBACT,GAAA,CAAC,UAAK,SAAA,EAAU,uBAAA,EAAyB,mBAAS,KAAA,EAAM;AAAA,WAAA,EAE5D,CAAA;AAAA,UAGC,YAAY,MAAA,KAAW,WAAA,oBACtB,GAAA,CAAC,qBAAA,EAAA,EAAsB,MAAY,QAAA,EAAoB;AAAA,SAAA,EAE3D,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACZ,QAAA,EAAA;AAAA,UAAA,MAAA,KAAW,WAAA,oBACV,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,2CAAA,EAA4C,CAAA;AAAA,UAEpE,MAAA,KAAW,SAAA,oBACV,GAAA,CAAC,gBAAA,EAAA,EAAiB,WAAU,qBAAA,EAAsB,CAAA;AAAA,UAEnD,MAAA,KAAW,OAAA,oBACV,GAAA,CAAC,eAAA,EAAA,EAAgB,WAAU,yBAAA,EAA0B;AAAA,SAAA,EAEzD,CAAA;AAAA,QAGC,QAAA,IAAY,WAAW,WAAA,oBACtB,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAY,CAAA,OAAA,EAAU,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,YAC/B,SAAA,EAAU,8HAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,SAAS,MAAM;AAAE,cAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,YAAG,CAAA;AAAA,YAExC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC5B;AAAA;AAAA,GAEJ;AAEJ;AASA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,SAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,MAClC,eAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAe,CAAA;AAAA,MACf,iBAAe,QAAA,CAAS,QAAA;AAAA,MACxB,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA2B,EAAG,QAAQ,SAAS,CAAA;AAAA,MAC7D,WAAA,EAAU,sBAAA;AAAA,MACV,IAAA,EAAK,aAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,8BAAA,CAA+B,EAAE,QAAQ,QAAA,CAAS,MAAA,EAAQ,CAAC,CAAA;AAAA,UACzE,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,OAAO,QAAA,CAAS,QAAQ,CAAC,CAAA,CAAA,CAAA;AAAI;AAAA;AAClD;AAAA,GACF;AAEJ;AASA,SAAS,gBAAA,CAAiB;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,cAAA,KAAmB,oBAAA,EAAqB;AAEjE,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MAClD,WAAA,EAAU,oBAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,gFAAA,EACZ,QAAA,EAAA,KAAA,CAAM,MAAA,GAAS,IACZ,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,IAClC,kBAAA,EACN,CAAA;AAAA,QACC,QAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAW,EAAA,CAAG,yBAAA,CAA0B,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,YAC/D,QAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACV,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,GAEJ;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AACzB,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAChC,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AACjC,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAC/B,cAAA,CAAe,WAAA,GAAc,gBAAA;AAC7B,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAChC,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AACpC,gBAAA,CAAiB,WAAA,GAAc,kBAAA","file":"chunk-XMUD3LG7.js","sourcesContent":["// FileUpload/FileUpload.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * FileUpload root container variants\n */\nexport const fileUploadVariants = cva(\n // Base styles\n [\"relative\", \"w-full\"],\n {\n variants: {\n variant: {\n button: \"\",\n dropzone: [\n \"border-2 border-dashed border-input\",\n \"rounded-lg\",\n \"transition-colors duration-200\",\n \"hover:border-primary/50\",\n \"data-[dragging=true]:border-primary data-[dragging=true]:bg-primary/5\",\n ],\n avatar: [\n \"inline-flex\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"overflow-hidden\",\n ],\n inline: [\"flex items-center gap-2\"],\n },\n },\n defaultVariants: {\n variant: \"button\",\n },\n }\n)\n\n/**\n * FileUpload trigger button variants\n */\nexport const fileUploadTriggerVariants = cva(\n // Base styles\n [\n \"inline-flex items-center justify-center gap-2\",\n \"rounded-md font-medium\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n ],\n {\n variants: {\n variant: {\n default: [\n \"bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n ],\n secondary: [\n \"bg-secondary text-secondary-foreground\",\n \"hover:bg-secondary/80\",\n ],\n outline: [\n \"border border-input bg-background\",\n \"hover:bg-accent hover:text-accent-foreground\",\n ],\n ghost: [\"hover:bg-accent hover:text-accent-foreground\"],\n },\n size: {\n sm: \"h-8 px-3 text-xs\",\n md: \"h-10 px-4 text-sm\",\n lg: \"h-12 px-6 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\n/**\n * FileUpload dropzone area variants\n */\nexport const fileUploadDropzoneVariants = cva(\n // Base styles\n [\n \"flex flex-col items-center justify-center\",\n \"p-8\",\n \"cursor-pointer\",\n \"transition-colors duration-200\",\n ],\n {\n variants: {\n isDragging: {\n true: \"bg-primary/5\",\n false: \"\",\n },\n disabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n isDragging: false,\n disabled: false,\n },\n }\n)\n\n/**\n * FileUpload preview item variants\n */\nexport const fileUploadPreviewVariants = cva(\n // Base styles\n [\n \"relative\",\n \"flex items-center gap-3\",\n \"p-3\",\n \"rounded-md\",\n \"bg-muted/50\",\n \"border border-border\",\n ],\n {\n variants: {\n status: {\n pending: \"\",\n uploading: \"\",\n success: \"border-success/50 bg-success/5\",\n error: \"border-destructive/50 bg-destructive/5\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n },\n }\n)\n\n/**\n * FileUpload avatar preview variants\n */\nexport const fileUploadAvatarVariants = cva(\n // Base styles\n [\n \"relative\",\n \"rounded-full\",\n \"overflow-hidden\",\n \"bg-muted\",\n \"flex items-center justify-center\",\n ],\n {\n variants: {\n size: {\n sm: \"size-16\",\n md: \"size-24\",\n lg: \"size-32\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * FileUpload progress bar variants\n */\nexport const fileUploadProgressVariants = cva(\n // Base styles\n [\"h-1 w-full overflow-hidden rounded-full bg-muted\"],\n {\n variants: {\n status: {\n pending: \"\",\n uploading: \"\",\n success: \"\",\n error: \"\",\n },\n },\n }\n)\n\n/**\n * FileUpload progress bar fill variants\n */\nexport const fileUploadProgressFillVariants = cva(\n // Base styles\n [\"h-full transition-all duration-300 ease-out\"],\n {\n variants: {\n status: {\n pending: \"bg-muted-foreground\",\n uploading: \"bg-primary\",\n success: \"bg-success\",\n error: \"bg-destructive\",\n },\n },\n defaultVariants: {\n status: \"uploading\",\n },\n }\n)\n\n// Export variant types\nexport type FileUploadVariantProps = VariantProps<typeof fileUploadVariants>\nexport type FileUploadTriggerVariantProps = VariantProps<\n typeof fileUploadTriggerVariants\n>\nexport type FileUploadDropzoneVariantProps = VariantProps<\n typeof fileUploadDropzoneVariants\n>\nexport type FileUploadPreviewVariantProps = VariantProps<\n typeof fileUploadPreviewVariants\n>\nexport type FileUploadAvatarVariantProps = VariantProps<\n typeof fileUploadAvatarVariants\n>\nexport type FileUploadProgressVariantProps = VariantProps<\n typeof fileUploadProgressVariants\n>\n","\"use client\"\n\nimport type {\n FileUploadContextValue,\n FileUploadDropzoneProps,\n FileUploadListProps,\n FileUploadPreviewProps,\n FileUploadProgressProps,\n FileUploadProps,\n FileUploadTriggerProps,\n FileValidationError,\n UploadProgress,\n} from \"./FileUpload.types\"\n\nimport {\n AlertCircleIcon,\n CheckCircle2Icon,\n FileIcon,\n Loader2Icon,\n UploadCloudIcon,\n XIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n fileUploadAvatarVariants,\n fileUploadDropzoneVariants,\n fileUploadPreviewVariants,\n fileUploadProgressFillVariants,\n fileUploadProgressVariants,\n fileUploadTriggerVariants,\n fileUploadVariants,\n} from \"./FileUpload.variants\"\n\n// ============================================\n// CONTEXT\n// ============================================\n\nconst FileUploadContext = React.createContext<FileUploadContextValue | null>(\n null\n)\n\nfunction useFileUploadContext() {\n const context = React.use(FileUploadContext)\n if (!context) {\n throw new Error(\n \"FileUpload compound components must be used within a FileUpload component\"\n )\n }\n return context\n}\n\n// ============================================\n// UTILITIES\n// ============================================\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 B\"\n const k = 1024\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\"]\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return `${String(Number.parseFloat((bytes / Math.pow(k, i)).toFixed(1)))} ${sizes[i] ?? \"\"}`\n}\n\nfunction getFileTypeIcon(file: File) {\n if (file.type.startsWith(\"image/\")) {\n return null // Will show preview\n }\n return <FileIcon className=\"size-8 text-muted-foreground\" />\n}\n\nfunction validateFiles(\n files: File[],\n options: {\n accept?: string\n currentCount?: number\n maxFiles?: number\n maxSize?: number\n }\n): { errors: FileValidationError[]; validFiles: File[] } {\n const errors: FileValidationError[] = []\n const validFiles: File[] = []\n\n const { accept, maxFiles, maxSize, currentCount = 0 } = options\n\n // Parse accept string into list of valid types\n const acceptedTypes = accept\n ? accept.split(\",\").map((t) => t.trim().toLowerCase())\n : null\n\n for (const file of files) {\n let isValid = true\n\n // Check file type\n if (acceptedTypes) {\n const fileType = file.type.toLowerCase()\n const fileExt = `.${file.name.split(\".\").pop()?.toLowerCase() ?? \"\"}`\n\n const typeMatch = acceptedTypes.some((accepted) => {\n if (accepted.startsWith(\".\")) {\n return fileExt === accepted\n }\n if (accepted.endsWith(\"/*\")) {\n const baseType = accepted.replace(\"/*\", \"\")\n return fileType.startsWith(baseType)\n }\n return fileType === accepted\n })\n\n if (!typeMatch) {\n errors.push({\n file,\n message: `File type not accepted. Accepted: ${accept ?? \"\"}`,\n type: \"type\",\n })\n isValid = false\n }\n }\n\n // Check file size\n if (maxSize && file.size > maxSize) {\n errors.push({\n file,\n message: `File too large. Maximum size: ${formatFileSize(maxSize)}`,\n type: \"size\",\n })\n isValid = false\n }\n\n // Check file count\n if (maxFiles && currentCount + validFiles.length >= maxFiles) {\n errors.push({\n file,\n message: `Maximum ${String(maxFiles)} file(s) allowed`,\n type: \"count\",\n })\n isValid = false\n }\n\n if (isValid) {\n validFiles.push(file)\n }\n }\n\n return { errors, validFiles }\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * FileUpload - Complete file upload component with multiple variants\n *\n * @example\n * ```tsx\n * // Basic button upload\n * <FileUpload accept=\"image/*\" onChange={(files) => console.log(files)}>\n * <FileUploadTrigger>Upload File</FileUploadTrigger>\n * </FileUpload>\n *\n * // Dropzone variant\n * <FileUpload variant=\"dropzone\" multiple onUpload={uploadFn}>\n * <FileUploadDropzone>\n * <p>Drag files here or click to upload</p>\n * </FileUploadDropzone>\n * <FileUploadList />\n * </FileUpload>\n * ```\n */\nfunction FileUpload({\n accept,\n autoUpload = false,\n children,\n className,\n disabled = false,\n maxFiles = 1,\n maxSize,\n multiple = false,\n onChange,\n onComplete,\n onError,\n onProgress,\n onRemove,\n onUpload,\n required = false,\n showPreview = true,\n value,\n variant = \"button\",\n ...props\n}: FileUploadProps) {\n const inputRef = React.useRef<HTMLInputElement>(null)\n const [internalFiles, setInternalFiles] = React.useState<File[]>([])\n const [isDragging, setIsDragging] = React.useState(false)\n const [progress, setProgress] = React.useState<UploadProgress[]>([])\n const [status, setStatus] = React.useState<\n \"error\" | \"idle\" | \"success\" | \"uploading\"\n >(\"idle\")\n\n // Use controlled or uncontrolled mode\n const files = value ?? internalFiles\n const isControlled = value !== undefined\n const setFilesInternal = React.useCallback(\n (newFiles: File[]) => {\n if (!isControlled) {\n setInternalFiles(newFiles)\n }\n },\n [isControlled]\n )\n\n const openFilePicker = React.useCallback(() => {\n if (!disabled) {\n inputRef.current?.click()\n }\n }, [disabled])\n\n const handleUpload = React.useCallback(\n async (filesToUpload: File[]) => {\n if (!onUpload) return\n\n setStatus(\"uploading\")\n\n // Update progress to uploading\n setProgress((prev) =>\n prev.map((p) =>\n filesToUpload.includes(p.file)\n ? { ...p, progress: 0, status: \"uploading\" as const }\n : p\n )\n )\n onProgress?.(progress)\n\n try {\n const results = await onUpload(filesToUpload)\n\n // Update progress to success/error based on results\n setProgress((prev) =>\n prev.map((p) => {\n const result = results.find((r) => r.file === p.file)\n if (!result) return p\n return {\n ...p,\n error: result.error,\n progress: 100,\n status: result.error ? (\"error\" as const) : (\"success\" as const),\n }\n })\n )\n\n const hasErrors = results.some((r) => r.error)\n setStatus(hasErrors ? \"error\" : \"success\")\n onComplete?.(results)\n } catch (error) {\n setStatus(\"error\")\n setProgress((prev) =>\n prev.map((p) =>\n filesToUpload.includes(p.file)\n ? {\n ...p,\n error: error instanceof Error ? error.message : \"Upload failed\",\n status: \"error\" as const,\n }\n : p\n )\n )\n onError?.(error instanceof Error ? error : new Error(\"Upload failed\"))\n }\n },\n [onUpload, onProgress, onComplete, onError, progress]\n )\n\n const selectFiles = React.useCallback(\n (newFiles: File[] | FileList) => {\n if (disabled) return\n\n const fileArray = [...newFiles]\n const { errors, validFiles } = validateFiles(fileArray, {\n accept,\n currentCount: multiple ? files.length : 0,\n maxFiles: multiple ? maxFiles : 1,\n maxSize,\n })\n\n // Report validation errors\n if (errors.length > 0 && onError) {\n const error = new Error(errors.map((e) => e.message).join(\"; \"))\n onError(error)\n }\n\n if (validFiles.length === 0) return\n\n // Update files\n const updatedFiles = multiple ? [...files, ...validFiles] : validFiles\n setFilesInternal(updatedFiles)\n onChange?.(updatedFiles)\n\n // Initialize progress\n const initialProgress: UploadProgress[] = validFiles.map((file) => ({\n error: undefined,\n file,\n progress: 0,\n status: \"pending\" as const,\n }))\n setProgress((prev) =>\n multiple ? [...prev, ...initialProgress] : initialProgress\n )\n\n // Auto upload if enabled\n if (autoUpload && onUpload) {\n void handleUpload(validFiles)\n }\n },\n [\n disabled,\n accept,\n maxSize,\n maxFiles,\n multiple,\n files,\n onChange,\n autoUpload,\n onUpload,\n onError,\n setFilesInternal,\n handleUpload,\n ]\n )\n\n const removeFile = React.useCallback(\n (file: File, index: number) => {\n const fileToRemove = files[index]\n if (!fileToRemove || fileToRemove !== file) return\n\n const updatedFiles = files.filter((_, i) => i !== index)\n setFilesInternal(updatedFiles)\n onChange?.(updatedFiles)\n onRemove?.(fileToRemove, index)\n\n // Remove from progress\n setProgress((prev) => prev.filter((p) => p.file !== fileToRemove))\n },\n [files, onChange, onRemove, setFilesInternal]\n )\n\n const handleInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newFiles = event.target.files\n if (newFiles) {\n selectFiles(newFiles)\n }\n // Reset input value to allow selecting the same file again\n event.target.value = \"\"\n },\n [selectFiles]\n )\n\n const handleDragOver = React.useCallback(\n (event: React.DragEvent) => {\n event.preventDefault()\n if (!disabled) {\n setIsDragging(true)\n }\n },\n [disabled]\n )\n\n const handleDragLeave = React.useCallback((event: React.DragEvent) => {\n event.preventDefault()\n setIsDragging(false)\n }, [])\n\n const handleDrop = React.useCallback(\n (event: React.DragEvent) => {\n event.preventDefault()\n setIsDragging(false)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- dataTransfer.files can be null\n if (!disabled && event.dataTransfer.files) {\n selectFiles(event.dataTransfer.files)\n }\n },\n [disabled, selectFiles]\n )\n\n const contextValue: FileUploadContextValue = {\n accept,\n disabled,\n files,\n isDragging,\n maxFiles,\n maxSize,\n multiple,\n openFilePicker,\n progress,\n removeFile,\n selectFiles,\n status,\n }\n\n return (\n <FileUploadContext value={contextValue}>\n <div\n className={cn(fileUploadVariants({ variant }), className)}\n data-dragging={isDragging}\n data-slot=\"file-upload\"\n data-status={status}\n data-variant={variant}\n onDragLeave={variant === \"dropzone\" ? handleDragLeave : undefined}\n onDragOver={variant === \"dropzone\" ? handleDragOver : undefined}\n onDrop={variant === \"dropzone\" ? handleDrop : undefined}\n {...props}\n >\n <input\n ref={inputRef}\n accept={accept}\n aria-hidden=\"true\"\n className=\"sr-only\"\n data-slot=\"file-upload-input\"\n disabled={disabled}\n multiple={multiple}\n required={required}\n tabIndex={-1}\n type=\"file\"\n onChange={handleInputChange}\n />\n {children}\n {showPreview && files.length > 0 && variant !== \"avatar\" && (\n <FileUploadList\n className=\"mt-4\"\n files={files}\n progress={progress}\n onRemove={removeFile}\n />\n )}\n </div>\n </FileUploadContext>\n )\n}\n\n// ============================================\n// TRIGGER COMPONENT\n// ============================================\n\n/**\n * FileUploadTrigger - Button to trigger file selection\n */\nfunction FileUploadTrigger({\n children,\n className,\n disabled: disabledProp,\n ...props\n}: FileUploadTriggerProps) {\n const { disabled: contextDisabled, openFilePicker } = useFileUploadContext()\n const disabled = disabledProp ?? contextDisabled\n\n return (\n <button\n className={cn(fileUploadTriggerVariants(), className)}\n data-slot=\"file-upload-trigger\"\n disabled={disabled}\n type=\"button\"\n onClick={openFilePicker}\n {...props}\n >\n {children ?? (\n <>\n <UploadCloudIcon className=\"size-4\" />\n <span>Choose File</span>\n </>\n )}\n </button>\n )\n}\n\n// ============================================\n// DROPZONE COMPONENT\n// ============================================\n\n/**\n * FileUploadDropzone - Drag and drop area for file selection\n */\nfunction FileUploadDropzone({\n children,\n className,\n disabled: disabledProp,\n ...props\n}: FileUploadDropzoneProps) {\n const {\n accept,\n disabled: contextDisabled,\n isDragging,\n maxSize,\n multiple,\n openFilePicker,\n } = useFileUploadContext()\n const disabled = disabledProp ?? contextDisabled\n\n return (\n <div\n className={cn(\n fileUploadDropzoneVariants({ disabled, isDragging }),\n className\n )}\n data-dragging={isDragging}\n data-slot=\"file-upload-dropzone\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={disabled ? undefined : openFilePicker}\n onKeyDown={(e) => {\n if (!disabled && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n openFilePicker()\n }\n }}\n {...props}\n >\n {children ?? (\n <>\n <UploadCloudIcon className=\"mx-auto size-12 text-muted-foreground\" />\n <p className=\"mt-2 text-sm font-medium\">\n {isDragging\n ? \"Drop files here\"\n : \"Drag files here or click to upload\"}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {accept && `Accepted: ${accept}`}\n {accept && maxSize && \" • \"}\n {maxSize && `Max size: ${formatFileSize(maxSize)}`}\n {(accept ?? maxSize) && multiple && \" • \"}\n {multiple && \"Multiple files allowed\"}\n </p>\n </>\n )}\n </div>\n )\n}\n\n// ============================================\n// AVATAR PREVIEW COMPONENT\n// ============================================\n\n/**\n * FileUploadAvatar - Circular preview for avatar uploads\n */\nfunction FileUploadAvatar({\n children,\n className,\n size = \"md\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"lg\" | \"md\" | \"sm\" }) {\n const { disabled, files, openFilePicker, status } = useFileUploadContext()\n const file = files[0]\n const [preview, setPreview] = React.useState<null | string>(null)\n\n // Object URL lifecycle requires useEffect for cleanup\n /* eslint-disable @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n React.useEffect(() => {\n if (file?.type.startsWith(\"image/\")) {\n const url = URL.createObjectURL(file)\n setPreview(url)\n return () => {\n URL.revokeObjectURL(url)\n }\n }\n setPreview(null)\n return\n }, [file])\n /* eslint-enable @eslint-react/hooks-extra/no-direct-set-state-in-use-effect */\n\n return (\n <div\n className={cn(\n fileUploadAvatarVariants({ size }),\n \"group cursor-pointer\",\n className\n )}\n data-slot=\"file-upload-avatar\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={disabled ? undefined : openFilePicker}\n onKeyDown={(e) => {\n if (!disabled && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n openFilePicker()\n }\n }}\n {...props}\n >\n {preview ? (\n <img\n alt=\"Avatar preview\"\n className=\"size-full object-cover\"\n src={preview}\n />\n ) : (\n children ?? <UploadCloudIcon className=\"size-8 text-muted-foreground\" />\n )}\n <div className=\"absolute inset-0 flex items-center justify-center rounded-full bg-black/50 opacity-0 transition-opacity group-hover:opacity-100\">\n {status === \"uploading\" ? (\n <Loader2Icon className=\"size-6 animate-spin text-white\" />\n ) : (\n <UploadCloudIcon className=\"size-6 text-white\" />\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// FILE LIST COMPONENT\n// ============================================\n\n/**\n * FileUploadList - List of selected files with previews\n */\nfunction FileUploadList({\n className,\n files: filesProp,\n onRemove: onRemoveProp,\n progress: progressProp,\n ...props\n}: FileUploadListProps) {\n const context = React.use(FileUploadContext)\n\n // Use props if provided, otherwise use context\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- context can be null when used outside provider\n const files = filesProp ?? context?.files ?? []\n \n const progress = progressProp ?? context?.progress ?? []\n const onRemove = onRemoveProp ?? context?.removeFile\n\n if (files.length === 0) return null\n\n return (\n <div\n className={cn(\"flex flex-col gap-2\", className)}\n data-slot=\"file-upload-list\"\n {...props}\n >\n {files.map((file, index) => {\n const fileProgress = progress.find((p) => p.file === file)\n return (\n <FileUploadPreview\n key={`${file.name}-${String(file.size)}-${String(index)}`}\n file={file}\n index={index}\n progress={fileProgress}\n onRemove={onRemove}\n />\n )\n })}\n </div>\n )\n}\n\n// ============================================\n// PREVIEW COMPONENT\n// ============================================\n\n/**\n * FileUploadPreview - Single file preview with progress and remove button\n */\nfunction FileUploadPreview({\n className,\n file,\n index,\n onRemove,\n progress,\n ...props\n}: FileUploadPreviewProps) {\n const [preview, setPreview] = React.useState<null | string>(null)\n\n // Object URL lifecycle requires useEffect for cleanup\n /* eslint-disable react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change */\n React.useEffect(() => {\n if (file.type.startsWith(\"image/\")) {\n const url = URL.createObjectURL(file)\n setPreview(url)\n return () => {\n URL.revokeObjectURL(url)\n }\n }\n setPreview(null)\n return\n }, [file])\n /* eslint-enable react-you-might-not-need-an-effect/no-derived-state, @eslint-react/hooks-extra/no-direct-set-state-in-use-effect, react-you-might-not-need-an-effect/no-adjust-state-on-prop-change */\n\n const status = progress?.status ?? \"pending\"\n\n return (\n <div\n className={cn(fileUploadPreviewVariants({ status }), className)}\n data-slot=\"file-upload-preview\"\n data-status={status}\n {...props}\n >\n {/* Thumbnail */}\n <div className=\"flex size-10 shrink-0 items-center justify-center overflow-hidden rounded bg-muted\">\n {preview ? (\n <img\n alt={file.name}\n className=\"size-full object-cover\"\n src={preview}\n />\n ) : (\n getFileTypeIcon(file)\n )}\n </div>\n\n {/* File Info */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium\">{file.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {formatFileSize(file.size)}\n {progress?.error && (\n <span className=\"ml-2 text-destructive\">{progress.error}</span>\n )}\n </p>\n\n {/* Progress Bar */}\n {progress && status === \"uploading\" && (\n <FileUploadProgressBar file={file} progress={progress} />\n )}\n </div>\n\n {/* Status Icon */}\n <div className=\"shrink-0\">\n {status === \"uploading\" && (\n <Loader2Icon className=\"size-4 animate-spin text-muted-foreground\" />\n )}\n {status === \"success\" && (\n <CheckCircle2Icon className=\"size-4 text-success\" />\n )}\n {status === \"error\" && (\n <AlertCircleIcon className=\"size-4 text-destructive\" />\n )}\n </div>\n\n {/* Remove Button */}\n {onRemove && status !== \"uploading\" && (\n <button\n aria-label={`Remove ${file.name}`}\n className=\"shrink-0 rounded-sm p-1 opacity-50 hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n type=\"button\"\n onClick={() => { onRemove(file, index); }}\n >\n <XIcon className=\"size-4\" />\n </button>\n )}\n </div>\n )\n}\n\n// ============================================\n// PROGRESS BAR COMPONENT\n// ============================================\n\n/**\n * FileUploadProgressBar - Progress indicator for file upload\n */\nfunction FileUploadProgressBar({\n className,\n file,\n progress,\n ...props\n}: FileUploadProgressProps) {\n return (\n <div\n aria-label={`Uploading ${file.name}`}\n aria-valuemax={100}\n aria-valuemin={0}\n aria-valuenow={progress.progress}\n className={cn(fileUploadProgressVariants(), \"mt-2\", className)}\n data-slot=\"file-upload-progress\"\n role=\"progressbar\"\n {...props}\n >\n <div\n className={cn(fileUploadProgressFillVariants({ status: progress.status }))}\n style={{ width: `${String(progress.progress)}%` }}\n />\n </div>\n )\n}\n\n// ============================================\n// INLINE VARIANT\n// ============================================\n\n/**\n * FileUploadInline - Inline variant with input and button\n */\nfunction FileUploadInline({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { disabled, files, openFilePicker } = useFileUploadContext()\n\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n data-slot=\"file-upload-inline\"\n {...props}\n >\n <div className=\"flex-1 truncate rounded-md border border-input bg-background px-3 py-2 text-sm\">\n {files.length > 0\n ? files.map((f) => f.name).join(\", \")\n : \"No file selected\"}\n </div>\n {children ?? (\n <button\n className={cn(fileUploadTriggerVariants({ variant: \"outline\" }))}\n disabled={disabled}\n type=\"button\"\n onClick={openFilePicker}\n >\n Browse\n </button>\n )}\n </div>\n )\n}\n\nFileUpload.displayName = \"FileUpload\"\nFileUploadTrigger.displayName = \"FileUploadTrigger\"\nFileUploadDropzone.displayName = \"FileUploadDropzone\"\nFileUploadAvatar.displayName = \"FileUploadAvatar\"\nFileUploadList.displayName = \"FileUploadList\"\nFileUploadPreview.displayName = \"FileUploadPreview\"\nFileUploadProgressBar.displayName = \"FileUploadProgressBar\"\nFileUploadInline.displayName = \"FileUploadInline\"\n\nexport {\n FileUpload,\n FileUploadAvatar,\n FileUploadDropzone,\n FileUploadInline,\n FileUploadList,\n FileUploadPreview,\n FileUploadProgressBar,\n FileUploadTrigger,\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import { XCircle, Clock, Loader2, Timer, ArrowUpCircle, Edit3, AlertCircle, CheckCircle2 } from 'lucide-react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -284,5 +284,5 @@ function ApprovalStatus({
284
284
  }
285
285
 
286
286
  export { ApprovalStatus, approvalStatusVariants, statusConfig };
287
- //# sourceMappingURL=chunk-5ZEYTBTU.js.map
288
- //# sourceMappingURL=chunk-5ZEYTBTU.js.map
287
+ //# sourceMappingURL=chunk-XWBVIBN4.js.map
288
+ //# sourceMappingURL=chunk-XWBVIBN4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/ApprovalStatus/ApprovalStatus.variants.ts","../src/components/workflow/ApprovalStatus/ApprovalStatus.tsx"],"names":[],"mappings":";;;;;AAKO,IAAM,sBAAA,GAAyB,GAAA;AAAA,EACpC,qEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,+BAAA;AAAA,QACJ,EAAA,EAAI,mCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,cAAA;AAAA,QACT,OAAA,EAAS,cAAA;AAAA,QACT,QAAA,EAAU,wDAAA;AAAA,QACV,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX;AAEJ;AAKO,IAAM,iBAAA,GAA4C;AAAA,EACvD,OAAA,EAAS,6EAAA;AAAA,EACT,SAAA,EAAW,iFAAA;AAAA,EACX,QAAA,EAAU,+EAAA;AAAA,EACV,QAAA,EAAU,+EAAA;AAAA,EACV,iBAAA,EAAmB,iGAAA;AAAA,EACnB,SAAA,EAAW,iFAAA;AAAA,EACX,OAAA,EAAS,6EAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAKO,IAAM,iBAAA,GAA4C;AAAA,EACvD,OAAA,EAAS,sCAAA;AAAA,EACT,SAAA,EAAW,wCAAA;AAAA,EACX,QAAA,EAAU,uCAAA;AAAA,EACV,QAAA,EAAU,uCAAA;AAAA,EACV,iBAAA,EAAmB,gDAAA;AAAA,EACnB,SAAA,EAAW,wCAAA;AAAA,EACX,OAAA,EAAS,sCAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAKO,IAAM,eAAA,GAAkB,eAAA;AC9B/B,IAAM,YAAA,GAGF;AAAA,EACF,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,YAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,WAAA;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,8BAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,aAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,eAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,KAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS;AAAA;AAEb;AAKA,SAAS,gBAAgB,IAAA,EAAoB;AAC3C,EAAA,OAAO,IAAA,CAAK,mBAAmB,OAAA,EAAS;AAAA,IACtC,GAAA,EAAK,SAAA;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,OAAA;AAAA,IACP,IAAA,EAAM;AAAA,GACP,CAAA;AACH;AAKA,SAAS,YAAY,IAAA,EAAsB;AACzC,EAAA,OAAO,KACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AACf;AAKA,IAAM,WAAA,GAAkD;AAAA,EACtD,EAAA,EAAI,QAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAiBA,SAAS,cAAA,CAAe;AAAA,EACtB,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,IAAA,GAAO,IAAA;AAAA,EACP,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,MAAA,GAAS,aAAa,MAAM,CAAA;AAClC,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AAGjC,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,CAAA,QAAA,EAAW,OAAO,KAAK,CAAA,CAAA;AAAA,IACvB,QAAA,GAAW,CAAA,IAAA,EAAO,QAAA,CAAS,IAAI,CAAA,CAAA,GAAK,EAAA;AAAA,IACpC,SAAA,GAAY,CAAA,GAAA,EAAM,eAAA,CAAgB,SAAS,CAAC,CAAA,CAAA,GAAK;AAAA,GACnD,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAGX,EAAA,MAAM,aAAA,GAAgB,QAAA,KAAa,MAAA,KAAW,SAAA,IAAa,MAAA,KAAW,WAAA,CAAA;AAGtE,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,UACxC,kBAAkB,MAAM,CAAA;AAAA,UACxB,aAAA,IAAiB,eAAA;AAAA,UACjB,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,WAAA,EAAU,iBAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,OAAO,MAAA,CAAO,KAAA;AAAA,QACb,GAAG,KAAA;AAAA,QAEH,sCAAY,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAW,QAAA,EAAU;AAAA;AAAA,KAC7D;AAAA,EAEJ;AAGA,EAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,UACxC;AAAA,SACF;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,WAAA,EAAU,QAAA;AAAA,QACV,WAAA,EAAU,iBAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAGJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,mCAAA;AAAA,gBACA,kBAAkB,MAAM,CAAA;AAAA,gBACxB,aAAA,IAAiB;AAAA;AACnB;AAAA,WACF;AAAA,0BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EAEb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EACZ,QAAA,EAAA;AAAA,cAAA,QAAA,oBACC,GAAA,CAAC,QAAK,aAAA,EAAY,MAAA,EAAO,WAAW,EAAA,CAAG,QAAA,EAAU,uBAAuB,CAAA,EAAG,CAAA;AAAA,cAE5E,6BACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,iBAAO,KAAA,EAAM;AAAA,aAAA,EAEhD,CAAA;AAAA,YAGC,QAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,MAAA,EAAA,EAAM,mBAAS,IAAA,EAAK,CAAA;AAAA,cACpB,QAAA,CAAS,wBACR,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,QAAA,EAAA,MAAA,EAAC,CAAA;AAAA,gCAC5C,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,QAAA,CAAS,IAAA,EAAK;AAAA,eAAA,EACvB;AAAA,aAAA,EAEJ,CAAA;AAAA,YAID,SAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,+BAAA;AAAA,gBACV,QAAA,EAAU,UAAU,WAAA,EAAY;AAAA,gBAE/B,0BAAgB,SAAS;AAAA;AAAA,aAC5B;AAAA,YAID,OAAA,oBACC,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA4C,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cACrD,OAAA;AAAA,cAAQ;AAAA,aAAA,EACZ;AAAA,WAAA,EAEJ;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,UACxC,2BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,WAAA,EAAU,QAAA;AAAA,QACV,WAAA,EAAU,iBAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAGJ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACb,QAAA,kBAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,6EAAA;AAAA,gBACA,kBAAkB,MAAM,CAAA;AAAA,gBACxB,aAAA,IAAiB;AAAA,eACnB;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,QAAA,oBAAY,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAU,QAAA,EAAS,CAAA;AAAA,gBACxD,aAAa,MAAA,CAAO;AAAA;AAAA;AAAA,WACvB,EACF,CAAA;AAAA,UAGC,QAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAEb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4GAAA,EACZ,QAAA,EAAA,QAAA,CAAS,MAAA,mBACR,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAK,QAAA,CAAS,IAAA;AAAA,gBACd,SAAA,EAAU,wBAAA;AAAA,gBACV,KAAK,QAAA,CAAS;AAAA;AAAA,gCAGhB,GAAA,CAAC,MAAA,EAAA,EAAM,sBAAY,QAAA,CAAS,IAAI,GAAE,CAAA,EAEtC,CAAA;AAAA,4BAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EAAgC,QAAA,EAAA,QAAA,CAAS,IAAA,EAAK,CAAA;AAAA,cAC7D,SAAS,IAAA,oBACR,GAAA,CAAC,UAAK,SAAA,EAAU,wCAAA,EACb,mBAAS,IAAA,EACZ;AAAA,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA;AAAA,UAID,SAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,+BAAA;AAAA,cACV,QAAA,EAAU,UAAU,WAAA,EAAY;AAAA,cAE/B,0BAAgB,SAAS;AAAA;AAAA,WAC5B;AAAA,UAID,OAAA,oBACC,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mEAAA,EAAoE,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAC7E,OAAA;AAAA,YAAQ;AAAA,WAAA,EACZ;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAAA,QACxC,kBAAkB,MAAM,CAAA;AAAA,QACxB,aAAA,IAAiB,eAAA;AAAA,QACjB;AAAA,OACF;AAAA,MACA,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAU,QAAA;AAAA,MACV,WAAA,EAAU,iBAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAY,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,WAAW,QAAA,EAAU,CAAA;AAAA,QAC1D,SAAA,oBAAa,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM;AAAA;AAAA;AAAA,GACpC;AAEJ","file":"chunk-5ZEYTBTU.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ApprovalStatus variant styles using CVA\n */\nexport const approvalStatusVariants = cva(\n \"inline-flex items-center font-medium transition-colors duration-150\",\n {\n variants: {\n size: {\n sm: \"h-5 text-xs gap-1 px-2 py-0.5\",\n md: \"h-6 text-sm gap-1.5 px-2.5 py-0.5\",\n lg: \"h-8 text-base gap-2 px-3 py-1\",\n },\n variant: {\n default: \"rounded-full\",\n compact: \"rounded-full\",\n detailed: \"rounded-lg flex-col items-start gap-1 h-auto px-3 py-2\",\n timeline: \"rounded-none flex-row items-start gap-2 h-auto px-0 py-0 bg-transparent\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * Status-specific color styles using semantic tokens\n */\nexport const statusColorStyles: Record<string, string> = {\n pending: \"bg-[color:var(--status-pending-bg)] text-[color:var(--status-pending-text)]\",\n in_review: \"bg-[color:var(--status-in-review-bg)] text-[color:var(--status-in-review-text)]\",\n approved: \"bg-[color:var(--status-approved-bg)] text-[color:var(--status-approved-text)]\",\n rejected: \"bg-[color:var(--status-rejected-bg)] text-[color:var(--status-rejected-text)]\",\n changes_requested: \"bg-[color:var(--status-changes-requested-bg)] text-[color:var(--status-changes-requested-text)]\",\n escalated: \"bg-[color:var(--status-escalated-bg)] text-[color:var(--status-escalated-text)]\",\n expired: \"bg-[color:var(--status-expired-bg)] text-[color:var(--status-expired-text)]\",\n cancelled: \"bg-[color:var(--status-cancelled-bg)] text-[color:var(--status-cancelled-text)]\",\n}\n\n/**\n * Timeline variant status dot colors using semantic tokens\n */\nexport const timelineDotStyles: Record<string, string> = {\n pending: \"bg-[color:var(--status-pending-dot)]\",\n in_review: \"bg-[color:var(--status-in-review-dot)]\",\n approved: \"bg-[color:var(--status-approved-dot)]\",\n rejected: \"bg-[color:var(--status-rejected-dot)]\",\n changes_requested: \"bg-[color:var(--status-changes-requested-dot)]\",\n escalated: \"bg-[color:var(--status-escalated-dot)]\",\n expired: \"bg-[color:var(--status-expired-dot)]\",\n cancelled: \"bg-[color:var(--status-cancelled-dot)]\",\n}\n\n/**\n * Animation styles for pending states\n */\nexport const animationStyles = \"animate-pulse\"\n","import type {\n ApprovalStatusProps,\n ApprovalStatusType,\n StatusConfig,\n} from \"./ApprovalStatus.types\"\nimport type { ComponentType, SVGProps } from \"react\"\n\nimport {\n AlertCircle,\n ArrowUpCircle,\n CheckCircle2,\n Clock,\n Edit3,\n Loader2,\n Timer,\n XCircle,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n animationStyles,\n approvalStatusVariants,\n statusColorStyles,\n timelineDotStyles,\n} from \"./ApprovalStatus.variants\"\n\n/**\n * Status configuration with icons and labels\n */\nconst statusConfig: Record<\n ApprovalStatusType,\n StatusConfig & { icon: ComponentType<SVGProps<SVGSVGElement>> }\n> = {\n approved: {\n icon: CheckCircle2,\n label: \"Aprovado\",\n labelEn: \"Approved\",\n },\n cancelled: {\n icon: AlertCircle,\n label: \"Cancelado\",\n labelEn: \"Cancelled\",\n },\n changes_requested: {\n icon: Edit3,\n label: \"Alterações Solicitadas\",\n labelEn: \"Changes Requested\",\n },\n escalated: {\n icon: ArrowUpCircle,\n label: \"Escalado\",\n labelEn: \"Escalated\",\n },\n expired: {\n icon: Timer,\n label: \"Expirado\",\n labelEn: \"Expired\",\n },\n in_review: {\n icon: Loader2,\n label: \"Em Análise\",\n labelEn: \"In Review\",\n },\n pending: {\n icon: Clock,\n label: \"Pendente\",\n labelEn: \"Pending\",\n },\n rejected: {\n icon: XCircle,\n label: \"Rejeitado\",\n labelEn: \"Rejected\",\n },\n}\n\n/**\n * Format timestamp to localized string\n */\nfunction formatTimestamp(date: Date): string {\n return date.toLocaleDateString(\"pt-BR\", {\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n })\n}\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Icon sizes per component size\n */\nconst iconSizeMap: Record<\"lg\" | \"md\" | \"sm\", string> = {\n lg: \"size-4\",\n md: \"size-3.5\",\n sm: \"size-3\",\n}\n\n/**\n * ApprovalStatus displays the current state of an approval workflow\n *\n * @example\n * ```tsx\n * <ApprovalStatus status=\"approved\" />\n * <ApprovalStatus status=\"pending\" animated />\n * <ApprovalStatus\n * status=\"approved\"\n * variant=\"detailed\"\n * approver={{ id: \"1\", name: \"Maria Silva\", role: \"Manager\" }}\n * timestamp={new Date()}\n * />\n * ```\n */\nfunction ApprovalStatus({\n animated = false,\n approver,\n className,\n comment,\n showIcon = true,\n showLabel = true,\n size = \"md\",\n status,\n timestamp,\n variant = \"default\",\n ...props\n}: ApprovalStatusProps) {\n const config = statusConfig[status]\n const Icon = config.icon\n const iconSize = iconSizeMap[size]\n\n // Build aria-label for accessibility\n const ariaLabel = [\n `Status: ${config.label}`,\n approver ? `por ${approver.name}` : \"\",\n timestamp ? `em ${formatTimestamp(timestamp)}` : \"\",\n ]\n .filter(Boolean)\n .join(\" \")\n\n // Animation class for pending states\n const shouldAnimate = animated && (status === \"pending\" || status === \"in_review\")\n\n // Compact variant: icon only with tooltip\n if (variant === \"compact\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n statusColorStyles[status],\n shouldAnimate && animationStyles,\n \"justify-center\",\n className\n )}\n aria-label={ariaLabel}\n data-slot=\"approval-status\"\n role=\"status\"\n title={config.label}\n {...props}\n >\n {showIcon && <Icon aria-hidden=\"true\" className={iconSize} />}\n </div>\n )\n }\n\n // Timeline variant: vertical timeline style\n if (variant === \"timeline\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {/* Timeline dot */}\n <div\n className={cn(\n \"mt-1 size-3 shrink-0 rounded-full\",\n timelineDotStyles[status],\n shouldAnimate && animationStyles\n )}\n />\n\n {/* Content */}\n <div className=\"flex flex-col gap-0.5\">\n {/* Status with icon */}\n <div className=\"flex items-center gap-1.5\">\n {showIcon && (\n <Icon aria-hidden=\"true\" className={cn(iconSize, \"text-muted-foreground\")} />\n )}\n {showLabel && (\n <span className=\"font-medium\">{config.label}</span>\n )}\n </div>\n\n {/* Approver info */}\n {approver && (\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\">\n <span>{approver.name}</span>\n {approver.role && (\n <>\n <span className=\"text-muted-foreground/50\">·</span>\n <span>{approver.role}</span>\n </>\n )}\n </div>\n )}\n\n {/* Timestamp */}\n {timestamp && (\n <time\n className=\"text-xs text-muted-foreground\"\n dateTime={timestamp.toISOString()}\n >\n {formatTimestamp(timestamp)}\n </time>\n )}\n\n {/* Comment */}\n {comment && (\n <p className=\"mt-1 text-sm text-muted-foreground italic\">\n \"{comment}\"\n </p>\n )}\n </div>\n </div>\n )\n }\n\n // Detailed variant: status with approver and timestamp\n if (variant === \"detailed\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n \"bg-card border rounded-lg\",\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {/* Status badge row */}\n <div className=\"flex items-center gap-1.5 w-full\">\n <span\n className={cn(\n \"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium\",\n statusColorStyles[status],\n shouldAnimate && animationStyles\n )}\n >\n {showIcon && <Icon aria-hidden=\"true\" className=\"size-3\" />}\n {showLabel && config.label}\n </span>\n </div>\n\n {/* Approver info */}\n {approver && (\n <div className=\"flex items-center gap-2 w-full\">\n {/* Avatar */}\n <div className=\"size-6 shrink-0 rounded-full bg-muted flex items-center justify-center text-xs font-medium overflow-hidden\">\n {approver.avatar ? (\n <img\n alt={approver.name}\n className=\"size-full object-cover\"\n src={approver.avatar}\n />\n ) : (\n <span>{getInitials(approver.name)}</span>\n )}\n </div>\n\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-medium truncate\">{approver.name}</span>\n {approver.role && (\n <span className=\"text-xs text-muted-foreground truncate\">\n {approver.role}\n </span>\n )}\n </div>\n </div>\n )}\n\n {/* Timestamp */}\n {timestamp && (\n <time\n className=\"text-xs text-muted-foreground\"\n dateTime={timestamp.toISOString()}\n >\n {formatTimestamp(timestamp)}\n </time>\n )}\n\n {/* Comment */}\n {comment && (\n <p className=\"text-sm text-muted-foreground italic border-l-2 border-muted pl-2\">\n \"{comment}\"\n </p>\n )}\n </div>\n )\n }\n\n // Default variant: simple badge\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n statusColorStyles[status],\n shouldAnimate && animationStyles,\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {showIcon && <Icon aria-hidden=\"true\" className={iconSize} />}\n {showLabel && <span>{config.label}</span>}\n </div>\n )\n}\n\nexport { ApprovalStatus, approvalStatusVariants, statusConfig }\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/ApprovalStatus/ApprovalStatus.variants.ts","../src/components/workflow/ApprovalStatus/ApprovalStatus.tsx"],"names":[],"mappings":"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","file":"chunk-XWBVIBN4.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ApprovalStatus variant styles using CVA\n */\nexport const approvalStatusVariants = cva(\n \"inline-flex items-center font-medium transition-colors duration-150\",\n {\n variants: {\n size: {\n sm: \"h-5 text-xs gap-1 px-2 py-0.5\",\n md: \"h-6 text-sm gap-1.5 px-2.5 py-0.5\",\n lg: \"h-8 text-base gap-2 px-3 py-1\",\n },\n variant: {\n default: \"rounded-full\",\n compact: \"rounded-full\",\n detailed: \"rounded-lg flex-col items-start gap-1 h-auto px-3 py-2\",\n timeline: \"rounded-none flex-row items-start gap-2 h-auto px-0 py-0 bg-transparent\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * Status-specific color styles using semantic tokens\n */\nexport const statusColorStyles: Record<string, string> = {\n pending: \"bg-[color:var(--status-pending-bg)] text-[color:var(--status-pending-text)]\",\n in_review: \"bg-[color:var(--status-in-review-bg)] text-[color:var(--status-in-review-text)]\",\n approved: \"bg-[color:var(--status-approved-bg)] text-[color:var(--status-approved-text)]\",\n rejected: \"bg-[color:var(--status-rejected-bg)] text-[color:var(--status-rejected-text)]\",\n changes_requested: \"bg-[color:var(--status-changes-requested-bg)] text-[color:var(--status-changes-requested-text)]\",\n escalated: \"bg-[color:var(--status-escalated-bg)] text-[color:var(--status-escalated-text)]\",\n expired: \"bg-[color:var(--status-expired-bg)] text-[color:var(--status-expired-text)]\",\n cancelled: \"bg-[color:var(--status-cancelled-bg)] text-[color:var(--status-cancelled-text)]\",\n}\n\n/**\n * Timeline variant status dot colors using semantic tokens\n */\nexport const timelineDotStyles: Record<string, string> = {\n pending: \"bg-[color:var(--status-pending-dot)]\",\n in_review: \"bg-[color:var(--status-in-review-dot)]\",\n approved: \"bg-[color:var(--status-approved-dot)]\",\n rejected: \"bg-[color:var(--status-rejected-dot)]\",\n changes_requested: \"bg-[color:var(--status-changes-requested-dot)]\",\n escalated: \"bg-[color:var(--status-escalated-dot)]\",\n expired: \"bg-[color:var(--status-expired-dot)]\",\n cancelled: \"bg-[color:var(--status-cancelled-dot)]\",\n}\n\n/**\n * Animation styles for pending states\n */\nexport const animationStyles = \"animate-pulse\"\n","import type {\n ApprovalStatusProps,\n ApprovalStatusType,\n StatusConfig,\n} from \"./ApprovalStatus.types\"\nimport type { ComponentType, SVGProps } from \"react\"\n\nimport {\n AlertCircle,\n ArrowUpCircle,\n CheckCircle2,\n Clock,\n Edit3,\n Loader2,\n Timer,\n XCircle,\n} from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n animationStyles,\n approvalStatusVariants,\n statusColorStyles,\n timelineDotStyles,\n} from \"./ApprovalStatus.variants\"\n\n/**\n * Status configuration with icons and labels\n */\nconst statusConfig: Record<\n ApprovalStatusType,\n StatusConfig & { icon: ComponentType<SVGProps<SVGSVGElement>> }\n> = {\n approved: {\n icon: CheckCircle2,\n label: \"Aprovado\",\n labelEn: \"Approved\",\n },\n cancelled: {\n icon: AlertCircle,\n label: \"Cancelado\",\n labelEn: \"Cancelled\",\n },\n changes_requested: {\n icon: Edit3,\n label: \"Alterações Solicitadas\",\n labelEn: \"Changes Requested\",\n },\n escalated: {\n icon: ArrowUpCircle,\n label: \"Escalado\",\n labelEn: \"Escalated\",\n },\n expired: {\n icon: Timer,\n label: \"Expirado\",\n labelEn: \"Expired\",\n },\n in_review: {\n icon: Loader2,\n label: \"Em Análise\",\n labelEn: \"In Review\",\n },\n pending: {\n icon: Clock,\n label: \"Pendente\",\n labelEn: \"Pending\",\n },\n rejected: {\n icon: XCircle,\n label: \"Rejeitado\",\n labelEn: \"Rejected\",\n },\n}\n\n/**\n * Format timestamp to localized string\n */\nfunction formatTimestamp(date: Date): string {\n return date.toLocaleDateString(\"pt-BR\", {\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n })\n}\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Icon sizes per component size\n */\nconst iconSizeMap: Record<\"lg\" | \"md\" | \"sm\", string> = {\n lg: \"size-4\",\n md: \"size-3.5\",\n sm: \"size-3\",\n}\n\n/**\n * ApprovalStatus displays the current state of an approval workflow\n *\n * @example\n * ```tsx\n * <ApprovalStatus status=\"approved\" />\n * <ApprovalStatus status=\"pending\" animated />\n * <ApprovalStatus\n * status=\"approved\"\n * variant=\"detailed\"\n * approver={{ id: \"1\", name: \"Maria Silva\", role: \"Manager\" }}\n * timestamp={new Date()}\n * />\n * ```\n */\nfunction ApprovalStatus({\n animated = false,\n approver,\n className,\n comment,\n showIcon = true,\n showLabel = true,\n size = \"md\",\n status,\n timestamp,\n variant = \"default\",\n ...props\n}: ApprovalStatusProps) {\n const config = statusConfig[status]\n const Icon = config.icon\n const iconSize = iconSizeMap[size]\n\n // Build aria-label for accessibility\n const ariaLabel = [\n `Status: ${config.label}`,\n approver ? `por ${approver.name}` : \"\",\n timestamp ? `em ${formatTimestamp(timestamp)}` : \"\",\n ]\n .filter(Boolean)\n .join(\" \")\n\n // Animation class for pending states\n const shouldAnimate = animated && (status === \"pending\" || status === \"in_review\")\n\n // Compact variant: icon only with tooltip\n if (variant === \"compact\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n statusColorStyles[status],\n shouldAnimate && animationStyles,\n \"justify-center\",\n className\n )}\n aria-label={ariaLabel}\n data-slot=\"approval-status\"\n role=\"status\"\n title={config.label}\n {...props}\n >\n {showIcon && <Icon aria-hidden=\"true\" className={iconSize} />}\n </div>\n )\n }\n\n // Timeline variant: vertical timeline style\n if (variant === \"timeline\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {/* Timeline dot */}\n <div\n className={cn(\n \"mt-1 size-3 shrink-0 rounded-full\",\n timelineDotStyles[status],\n shouldAnimate && animationStyles\n )}\n />\n\n {/* Content */}\n <div className=\"flex flex-col gap-0.5\">\n {/* Status with icon */}\n <div className=\"flex items-center gap-1.5\">\n {showIcon && (\n <Icon aria-hidden=\"true\" className={cn(iconSize, \"text-muted-foreground\")} />\n )}\n {showLabel && (\n <span className=\"font-medium\">{config.label}</span>\n )}\n </div>\n\n {/* Approver info */}\n {approver && (\n <div className=\"flex items-center gap-1.5 text-sm text-muted-foreground\">\n <span>{approver.name}</span>\n {approver.role && (\n <>\n <span className=\"text-muted-foreground/50\">·</span>\n <span>{approver.role}</span>\n </>\n )}\n </div>\n )}\n\n {/* Timestamp */}\n {timestamp && (\n <time\n className=\"text-xs text-muted-foreground\"\n dateTime={timestamp.toISOString()}\n >\n {formatTimestamp(timestamp)}\n </time>\n )}\n\n {/* Comment */}\n {comment && (\n <p className=\"mt-1 text-sm text-muted-foreground italic\">\n \"{comment}\"\n </p>\n )}\n </div>\n </div>\n )\n }\n\n // Detailed variant: status with approver and timestamp\n if (variant === \"detailed\") {\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n \"bg-card border rounded-lg\",\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {/* Status badge row */}\n <div className=\"flex items-center gap-1.5 w-full\">\n <span\n className={cn(\n \"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium\",\n statusColorStyles[status],\n shouldAnimate && animationStyles\n )}\n >\n {showIcon && <Icon aria-hidden=\"true\" className=\"size-3\" />}\n {showLabel && config.label}\n </span>\n </div>\n\n {/* Approver info */}\n {approver && (\n <div className=\"flex items-center gap-2 w-full\">\n {/* Avatar */}\n <div className=\"size-6 shrink-0 rounded-full bg-muted flex items-center justify-center text-xs font-medium overflow-hidden\">\n {approver.avatar ? (\n <img\n alt={approver.name}\n className=\"size-full object-cover\"\n src={approver.avatar}\n />\n ) : (\n <span>{getInitials(approver.name)}</span>\n )}\n </div>\n\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-medium truncate\">{approver.name}</span>\n {approver.role && (\n <span className=\"text-xs text-muted-foreground truncate\">\n {approver.role}\n </span>\n )}\n </div>\n </div>\n )}\n\n {/* Timestamp */}\n {timestamp && (\n <time\n className=\"text-xs text-muted-foreground\"\n dateTime={timestamp.toISOString()}\n >\n {formatTimestamp(timestamp)}\n </time>\n )}\n\n {/* Comment */}\n {comment && (\n <p className=\"text-sm text-muted-foreground italic border-l-2 border-muted pl-2\">\n \"{comment}\"\n </p>\n )}\n </div>\n )\n }\n\n // Default variant: simple badge\n return (\n <div\n className={cn(\n approvalStatusVariants({ size, variant }),\n statusColorStyles[status],\n shouldAnimate && animationStyles,\n className\n )}\n aria-label={ariaLabel}\n aria-live=\"polite\"\n data-slot=\"approval-status\"\n role=\"status\"\n {...props}\n >\n {showIcon && <Icon aria-hidden=\"true\" className={iconSize} />}\n {showLabel && <span>{config.label}</span>}\n </div>\n )\n}\n\nexport { ApprovalStatus, approvalStatusVariants, statusConfig }\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import * as React from 'react';
3
3
  import * as RechartsPrimitive from 'recharts';
4
4
  import { cva } from 'class-variance-authority';
@@ -407,5 +407,5 @@ function getPayloadConfigFromPayload(config, payload, key) {
407
407
  }
408
408
 
409
409
  export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
410
- //# sourceMappingURL=chunk-7I6KK6QE.js.map
411
- //# sourceMappingURL=chunk-7I6KK6QE.js.map
410
+ //# sourceMappingURL=chunk-XXWCMY2G.js.map
411
+ //# sourceMappingURL=chunk-XXWCMY2G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/Chart/Chart.variants.ts","../src/components/data-display/Chart/Chart.tsx"],"names":["config","filteredPayload"],"mappings":";;;;;;AAeO,IAAM,sBAAA,GAAyB,GAAA;AAAA;AAAA,EAEpC;AAAA,IACE,8DAAA;AAAA,IACA,mEAAA;AAAA,IACA,2DAAA;AAAA,IACA,wDAAA;AAAA,IACA,uDAAA;AAAA,IACA,4DAAA;AAAA,IACA,4DAAA;AAAA,IACA,sDAAA;AAAA,IACA,qDAAA;AAAA,IACA,oCAAA;AAAA,IACA,qCAAA;AAAA,IACA,wDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,EAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,MAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAKO,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA,EAElC,wWAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,GAAA,EAAK,EAAA;AAAA,QACL,IAAA,EAAM,EAAA;AAAA,QACN,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAKO,IAAM,6BAAA,GAAgC,GAAA;AAAA;AAAA,EAE3C,6DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,GAAA,EAAK,wCAAA;AAAA,QACL,IAAA,EAAM,uCAAA;AAAA,QACN,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA;AAAA,EAEjC,gEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA,QACR,GAAA,EAAK,kCAAA;AAAA,QACL,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAA;AC1FA,SAAS,eAAe,IAAA,EAAwD;AAC9E,EAAA,MAAM,UAAU,IAAA,CAAK,OAAA;AACrB,EAAA,MAAM,OAAO,OAAA,EAAS,IAAA;AACtB,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,MAAA;AAC3C;AAGA,IAAM,MAAA,GAAS,EAAE,KAAA,EAAO,EAAA,EAAI,MAAM,OAAA,EAAQ;AAc1C,IAAM,YAAA,GAAqB,oBAAwC,IAAI,CAAA;AAEvE,SAAS,QAAA,GAAW;AAClB,EAAA,MAAM,OAAA,GAAgB,UAAI,YAAY,CAAA;AAEtC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,EAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EAKG;AACD,EAAA,MAAM,WAAiB,KAAA,CAAA,KAAA,EAAM;AAC7B,EAAA,MAAM,UAAU,CAAA,MAAA,EAAS,EAAA,IAAM,SAAS,UAAA,CAAW,GAAA,EAAK,EAAE,CAAC,CAAA,CAAA;AAY3D,EAAA,MAAM,UAAA,GAAmB,aAAuB,IAAI,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAS,KAAK,CAAA;AAClD,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,KAAK,UAAA,CAAW,OAAA;AACtB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,WAAW,IAAI,cAAA,CAAe,CAAC,CAAC,KAAK,CAAA,KAAM;AAC/C,MAAA,IAAI,CAAC,KAAA,EAAO;AACZ,MAAA,IAAI,MAAM,WAAA,CAAY,KAAA,GAAQ,KAAK,KAAA,CAAM,WAAA,CAAY,SAAS,CAAA,EAAG;AAC/D,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM;AAAE,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IAAE,CAAA;AAAA,EACvC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,EAAE,QAAO,EAC5B,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA,EAAuB;AAAA,QACvB;AAAA,OACF;AAAA,MACA,YAAA,EAAY,OAAA;AAAA,MACZ,WAAA,EAAU,OAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAgB,EAAA,EAAI,OAAA,EAAS,CAAA;AAAA,QACxC,OAAA,oBACC,GAAA,CAAmB,iBAAA,CAAA,mBAAA,EAAlB,EAAsC,MAAA,EAAO,MAAA,EAAO,SAAA,EAAW,CAAA,EAAG,QAAA,EAAU,CAAA,EAAG,KAAA,EAAM,MAAA,EACnF,QAAA,EACH;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEA,IAAM,UAAA,GAAa,CAAC,EAAE,EAAA,EAAI,QAAO,KAA4C;AAC3E,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA;AAAA,IACzC,CAAC,GAAGA,OAAM,CAAA,KAAMA,OAAAA,CAAO,SAASA,OAAAA,CAAO;AAAA,GACzC;AAEA,EAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MAEC,uBAAA,EAAyB;AAAA,QACvB,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAC1B,GAAA;AAAA,UACC,CAAC,CAAC,KAAA,EAAO,MAAM,CAAA,KAAM;AAAA,EAC/B,MAAM,gBAAgB,EAAE,CAAA;AAAA,EACxB,YACC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,UAAU,CAAA,KAAM;AAC1B,YAAA,MAAM,KAAA,GACJ,UAAA,CAAW,KAAA,GAAQ,KAAsC,KACzD,UAAA,CAAW,KAAA;AACb,YAAA,OAAO,KAAA,GAAQ,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA,GAAM,IAAA;AAAA,UACjD,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAC;AAAA;AAAA;AAAA,SAGH,CACC,KAAK,IAAI;AAAA;AACd;AAAA,GACF;AAEJ;AAEA,IAAM,YAAA,GAAiC,iBAAA,CAAA;AAiBvC,SAAS,mBAAA,CAAoB;AAAA,EAC3B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA,GAAY,KAAA;AAAA,EACZ,aAAA,GAAgB,KAAA;AAAA,EAChB,KAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAE5B,EAAA,MAAM,YAAA,GAAqB,cAAQ,MAAM;AACvC,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,EAAS,MAAA,EAAQ;AACjC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,CAAC,IAAI,CAAA,GAAI,OAAA;AACf,IAAA,MAAM,MAAM,MAAA,CAAO,QAAA,IAAY,MAAM,OAAA,IAAW,IAAA,EAAM,QAAQ,OAAO,CAAA;AACrE,IAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAChE,IAAA,MAAM,KAAA,GACJ,CAAC,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,GAC1B,MAAA,CAAO,KAAK,CAAA,EAAG,KAAA,IAAS,KAAA,GACxB,UAAA,EAAY,KAAA;AAElB,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,cAAc,CAAA,EAC7C,QAAA,EAAA,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA,EAChC,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,2BAAQ,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,aAAA,EAAe,cAAc,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,EACnE,CAAA,EAAG;AAAA,IACD,KAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS,MAAA,EAAQ;AAC/B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,KAAW,CAAA,IAAK,SAAA,KAAc,KAAA;AAExD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qBAAqB,EAAE,SAAA,EAAW,SAAA,GAAY,QAAA,GAAW,WAAW,CAAA;AAAA,QACpE;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,CAAC,YAAY,YAAA,GAAe,IAAA;AAAA,wBAC7B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EAEZ,kBACE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,MAAM,CAAA,CACrC,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACpB,UAAA,MAAM,MAAM,MAAA,CAAO,OAAA,IAAW,KAAK,IAAA,IAAQ,IAAA,CAAK,WAAW,OAAO,CAAA;AAClE,UAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAChE,UAAA,MAAM,cAAA,GAAiB,KAAA,IAAS,cAAA,CAAe,IAAI,KAAK,IAAA,CAAK,KAAA;AAC7D,UAAA,MAAM,OAAA,GAAU,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,IAAA,IAAQ,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAE5E,UAAA,uBACE,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT,qGAAA;AAAA,gBACA,cAAc,KAAA,IAAS;AAAA,eACzB;AAAA,cAEC,uBAAa,IAAA,CAAK,KAAA,KAAU,UAAa,IAAA,CAAK,IAAA,GAC7C,UAAU,IAAA,CAAK,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,EAAM,OAAO,IAAA,CAAK,OAAO,oBAElE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,UAAA,EAAY,uBACX,GAAA,CAAC,UAAA,CAAW,MAAX,EAAgB,CAAA,GAEjB,CAAC,aAAA,oBACC,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,6BAAA,CAA8B;AAAA,wBAC5B,SAAA,EAAW,YAAY,QAAA,GAAW;AAAA,uBACnC,CAAA;AAAA,sBACD;AAAA,wBACE,QAAA,EAAU,aAAa,SAAA,KAAc;AAAA;AACvC,qBACF;AAAA,oBACA,KAAA,EACE;AAAA,sBACE,YAAA,EAAc,cAAA;AAAA,sBACd,gBAAA,EAAkB;AAAA;AACpB;AAAA,iBAEJ;AAAA,gCAGJ,IAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,0CAAA;AAAA,sBACA,YAAY,WAAA,GAAc;AAAA,qBAC5B;AAAA,oBAEA,QAAA,EAAA;AAAA,sCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,cAAA,EACZ,QAAA,EAAA;AAAA,wBAAA,SAAA,GAAY,YAAA,GAAe,IAAA;AAAA,4CAC3B,MAAA,EAAA,EAAK,SAAA,EAAU,yBACb,QAAA,EAAA,UAAA,EAAY,KAAA,IAAS,KAAK,IAAA,EAC7B;AAAA,uBAAA,EACF,CAAA;AAAA,sBACC,IAAA,CAAK,yBACJ,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oDAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,cAAA,EAAe,EAC7B;AAAA;AAAA;AAAA;AAEJ,eAAA,EACF;AAAA,aAAA;AAAA,YAlDG;AAAA,WAoDP;AAAA,QAEJ,CAAC,CAAA,EACL;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,WAAA,GAAgC,iBAAA,CAAA;AA0BtC,SAAS,kBAAA,CAAmB;AAAA,EAC1B,YAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAC5B,EAAA,MAAM,SAAA,GAAkB,aAAuB,IAAI,CAAA;AACnD,EAAA,MAAM,WAAA,GAAoB,KAAA,CAAA,MAAA,CAAkC,EAAE,CAAA;AAG9D,EAAA,MAAM,YAAA,GAAqB,KAAA,CAAA,WAAA;AAAA,IACzB,CAAC,OAAA,KAAoB;AACnB,MAAA,IAAI,CAAC,cAAc,OAAO,IAAA;AAC1B,MAAA,OAAO,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAGA,EAAA,MAAM,aAAA,GAAsB,KAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,CAAA,EAAwB,KAAA,EAAe,OAAA,EAAiB,QAAA,KAAsB;AAC7E,MAAA,MAAMC,gBAAAA,GAAkB,SAAS,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,IAAA,KAAS,MAAM,CAAA,IAAK,EAAC;AAC5E,MAAA,MAAM,YAAYA,gBAAAA,CAAgB,MAAA;AAElC,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,aAAA,GAAgB,SAAS,QAAQ,CAAA;AACjC,UAAA;AAAA,QACF,KAAK,YAAA;AAAA,QACL,KAAK,WAAA,EAAa;AAChB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,SAAA,GAAA,CAAa,QAAQ,CAAA,IAAK,SAAA;AAChC,UAAA,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAM;AACtC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,WAAA;AAAA,QACL,KAAK,SAAA,EAAW;AACd,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,SAAA,GAAA,CAAa,KAAA,GAAQ,CAAA,GAAI,SAAA,IAAa,SAAA;AAC5C,UAAA,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA,EAAG,KAAA,EAAM;AACtC,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAA,EAAM;AAC9B,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,WAAA,CAAY,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA,EAAG,KAAA,EAAM;AAC1C,UAAA;AAAA;AACJ,IACF,CAAA;AAAA,IACA,CAAC,SAAS,aAAa;AAAA,GACzB;AAEA,EAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,QAAQ,aAAa,CAAA;AAC3C,EAAA,MAAM,kBAAkB,OAAA,CAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,MAAM,CAAA;AAErE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,oBAAoB,EAAE,QAAA,EAAU,kBAAkB,KAAA,GAAQ,KAAA,GAAQ,UAAU,CAAA;AAAA,QAC5E,YAAA,IAAgB,iBAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACA,YAAA,EAAY,gBAAgB,sBAAA,GAAyB,MAAA;AAAA,MACrD,IAAA,EAAM,gBAAgB,SAAA,GAAY,MAAA;AAAA,MAEjC,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAClC,QAAA,MAAM,GAAA,GAAM,OAAA,IAAW,IAAA,CAAK,OAAA,IAAW,OAAA;AACvC,QAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAChE,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,KAAA,IAAS,GAAA;AAC9C,QAAA,MAAM,QAAA,GAAW,aAAa,OAAO,CAAA;AACrC,QAAA,MAAM,UAAU,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAE3C,QAAA,uBACE,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,GAAA,EAAK,CAAC,EAAA,KAAO;AAAE,cAAA,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA,GAAI,EAAA;AAAA,YAAG,CAAA;AAAA,YAC/C,SAAA,EAAW,EAAA;AAAA,cACT,iFAAA;AAAA,cACA,aAAA,IAAiB,+CAAA;AAAA,cACjB,aAAA,IAAiB,CAAC,QAAA,IAAY;AAAA,aAChC;AAAA,YACA,cAAA,EAAc,gBAAgB,QAAA,GAAW,MAAA;AAAA,YACzC,IAAA,EAAM,gBAAgB,QAAA,GAAW,MAAA;AAAA,YACjC,QAAA,EAAU,gBAAgB,CAAA,GAAI,MAAA;AAAA,YAC9B,SACE,aAAA,GACI,MAAM,aAAA,GAAgB,OAAA,EAAS,QAAQ,CAAA,GACvC,MAAA;AAAA,YAEN,SAAA,EACE,aAAA,GACI,CAAC,CAAA,KAAM;AAAE,cAAA,aAAA,CAAc,CAAA,EAAG,KAAA,EAAO,OAAA,EAAS,QAAQ,CAAA;AAAA,YAAG,CAAA,GACrD,MAAA;AAAA,YAGL,QAAA,EAAA;AAAA,cAAA,UAAA,EAAY,QAAQ,CAAC,QAAA,uBACnB,UAAA,CAAW,IAAA,EAAX,EAAgB,CAAA,mBAEjB,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,+CAAA;AAAA,oBACA,CAAC,QAAA,IAAY;AAAA,mBACf;AAAA,kBACA,KAAA,EAAO;AAAA,oBACL,eAAA,EAAiB,QAAA,GAAW,IAAA,CAAK,KAAA,GAAQ;AAAA;AAC3C;AAAA,eACF;AAAA,8BAEF,GAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,CAAC,QAAA,IAAY,uBAAuB,CAAA,EACrD,QAAA,EAAA,UAAA,EAAY,KAAA,EACf;AAAA;AAAA,WAAA;AAAA,UApCK;AAAA,SAqCP;AAAA,MAEJ,CAAC;AAAA;AAAA,GACL;AAEJ;AAGA,SAAS,2BAAA,CACP,MAAA,EACA,OAAA,EACA,GAAA,EACA;AACA,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,IAAA,EAAM;AACnD,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,cAAA,GACJ,SAAA,IAAa,OAAA,IACb,OAAO,OAAA,CAAQ,OAAA,KAAY,QAAA,IAC3B,OAAA,CAAQ,OAAA,KAAY,IAAA,GAChB,OAAA,CAAQ,OAAA,GACR,MAAA;AAEN,EAAA,IAAI,cAAA,GAAyB,GAAA;AAE7B,EAAA,IACE,OAAO,OAAA,IACP,OAAO,OAAA,CAAQ,GAA2B,MAAM,QAAA,EAChD;AACA,IAAA,cAAA,GAAiB,QAAQ,GAA2B,CAAA;AAAA,EACtD,CAAA,MAAA,IACE,kBACA,GAAA,IAAO,cAAA,IACP,OAAO,cAAA,CAAe,GAAkC,MAAM,QAAA,EAC9D;AACA,IAAA,cAAA,GAAiB,eACf,GACF,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,kBAAkB,MAAA,GACrB,MAAA,CAAO,cAAc,CAAA,GACrB,OAAO,GAAG,CAAA;AAChB","file":"chunk-7I6KK6QE.js","sourcesContent":["// Chart/Chart.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Chart container style variants using CVA\n *\n * Controls the overall chart wrapper appearance.\n *\n * @see https://cva.style/docs\n */\n// NB: `#ccc` and `#fff` literals below are *attribute selectors* matching\n// Recharts' hardcoded default SVG output, not our styling values. They\n// must stay literal because Recharts emits those exact strings; we override\n// them to our theme tokens via the `stroke-*`/`fill-*` Tailwind classes\n// that follow. Not a token-hygiene violation.\nexport const chartContainerVariants = cva(\n // Base styles (always applied) - Recharts-specific styling\n [\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-radial-bar-background-sector]:fill-muted\",\n \"[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"flex min-h-px min-w-px w-full justify-center text-xs\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-layer]:outline-hidden\",\n \"[&_.recharts-sector]:outline-hidden\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-surface]:outline-hidden\",\n ].join(\" \"),\n {\n variants: {\n aspectRatio: {\n auto: \"\",\n video: \"aspect-video\",\n square: \"aspect-square\",\n wide: \"aspect-[21/9]\",\n },\n },\n defaultVariants: {\n aspectRatio: \"auto\",\n },\n }\n)\n\n/**\n * Chart tooltip style variants\n */\nexport const chartTooltipVariants = cva(\n // Base styles (always applied)\n \"bg-[color:var(--chart-tooltip-bg)] border-[color:var(--chart-tooltip-border)] grid min-w-[var(--chart-tooltip-min-width)] items-start gap-[var(--chart-tooltip-gap)] rounded-[var(--chart-tooltip-radius)] border px-[var(--chart-tooltip-padding-x)] py-[var(--chart-tooltip-padding-y)] text-[length:var(--chart-tooltip-text)] shadow-[var(--chart-tooltip-shadow)]\",\n {\n variants: {\n indicator: {\n dot: \"\",\n line: \"\",\n dashed: \"\",\n },\n },\n defaultVariants: {\n indicator: \"dot\",\n },\n }\n)\n\n/**\n * Chart tooltip indicator style variants\n */\nexport const chartTooltipIndicatorVariants = cva(\n // Base styles (always applied)\n \"shrink-0 rounded-sm border-(--color-border) bg-(--color-bg)\",\n {\n variants: {\n indicator: {\n dot: \"size-[var(--chart-indicator-dot-size)]\",\n line: \"w-[var(--chart-indicator-line-width)]\",\n dashed: \"w-0 border-[1.5px] border-dashed bg-transparent\",\n },\n },\n defaultVariants: {\n indicator: \"dot\",\n },\n }\n)\n\n/**\n * Chart legend style variants\n */\nexport const chartLegendVariants = cva(\n // Base styles (always applied)\n \"flex items-center justify-center gap-[var(--chart-legend-gap)]\",\n {\n variants: {\n position: {\n top: \"pb-[var(--chart-legend-padding)]\",\n bottom: \"pt-[var(--chart-legend-padding)]\",\n },\n },\n defaultVariants: {\n position: \"bottom\",\n },\n }\n)\n\n// Export variant prop types\nexport type ChartContainerVariantProps = VariantProps<typeof chartContainerVariants>\nexport type ChartTooltipVariantProps = VariantProps<typeof chartTooltipVariants>\nexport type ChartTooltipIndicatorVariantProps = VariantProps<typeof chartTooltipIndicatorVariants>\nexport type ChartLegendVariantProps = VariantProps<typeof chartLegendVariants>\n","import type { NameType, Payload, ValueType } from \"recharts/types/component/DefaultTooltipContent\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n chartContainerVariants,\n chartLegendVariants,\n chartTooltipIndicatorVariants,\n chartTooltipVariants,\n} from \"./Chart.variants\"\n\n// Helper to safely access fill from payload\nfunction getPayloadFill(item: Payload<ValueType, NameType>): string | undefined {\n const payload = item.payload as undefined | { fill?: unknown }\n const fill = payload?.fill\n return typeof fill === \"string\" ? fill : undefined\n}\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = Record<string, {\n icon?: React.ComponentType\n label?: React.ReactNode\n } & (\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n | { color?: string; theme?: never }\n )>\n\ninterface ChartContextProps {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.use(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n config: ChartConfig\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id ?? uniqueId.replaceAll(':', \"\")}`\n\n // Gate ResponsiveContainer until the wrapper has a measured size.\n // Recharts emits a noisy \"width(-1) and height(-1)\" warning when it mounts\n // inside a parent that hasn't been laid out yet (hidden tabs, off-screen\n // demos, suspended subtrees). Deferring the mount until ResizeObserver\n // reports a real size silences the warning without changing visual output.\n //\n // Threshold is 8px (not just `> 0`) because the base `chartContainerVariants`\n // ships `min-h-px min-w-px` (1px floors), which would otherwise fire the\n // gate too early — Recharts then mounts inside a 1×1 box and emits the\n // warning anyway before remeasuring.\n const wrapperRef = React.useRef<HTMLDivElement>(null)\n const [hasSize, setHasSize] = React.useState(false)\n React.useEffect(() => {\n const el = wrapperRef.current\n if (!el) return\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return\n if (entry.contentRect.width > 8 && entry.contentRect.height > 8) {\n setHasSize(true)\n }\n })\n observer.observe(el)\n return () => { observer.disconnect() }\n }, [])\n\n return (\n <ChartContext value={{ config }}>\n <div\n ref={wrapperRef}\n className={cn(\n chartContainerVariants(),\n className\n )}\n data-chart={chartId}\n data-slot=\"chart\"\n {...props}\n >\n <ChartStyle config={config} id={chartId} />\n {hasSize && (\n <RechartsPrimitive.ResponsiveContainer height=\"100%\" minHeight={1} minWidth={1} width=\"100%\">\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n )}\n </div>\n </ChartContext>\n )\n}\n\nconst ChartStyle = ({ id, config }: { config: ChartConfig; id: string; }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n // eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml -- Safe: CSS variables from config, no user input\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\ninterface ChartTooltipContentProps extends React.ComponentProps<\"div\"> {\n active?: boolean\n color?: string\n formatter?: (value: unknown, name: string, item: Payload<ValueType, NameType>, index: number, payload: unknown) => React.ReactNode\n hideIndicator?: boolean\n hideLabel?: boolean\n indicator?: \"dashed\" | \"dot\" | \"line\"\n label?: string\n labelClassName?: string\n labelFormatter?: (label: unknown, payload: Payload<ValueType, NameType>[]) => React.ReactNode\n labelKey?: string\n nameKey?: string\n payload?: Payload<ValueType, NameType>[]\n}\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = String(labelKey ?? item?.dataKey ?? item?.name ?? \"value\")\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label ?? label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n chartTooltipVariants({ indicator: nestLabel ? \"dashed\" : indicator }),\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n { }\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = String(nameKey ?? item.name ?? item.dataKey ?? \"value\")\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color ?? getPayloadFill(item) ?? item.color\n const itemKey = `${String(item.dataKey ?? item.name ?? key)}-${String(index)}`\n\n return (\n <div\n key={itemKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item.value !== undefined && item.name ? (\n formatter(item.value, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n chartTooltipIndicatorVariants({\n indicator: nestLabel ? \"dashed\" : indicator,\n }),\n {\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\ninterface LegendPayloadItem {\n color?: string\n dataKey?: string\n type?: string\n value?: string\n}\n\ninterface ChartLegendContentProps extends React.ComponentProps<\"div\"> {\n /** Currently active/selected legend items (for controlled filtering) */\n activeLegend?: string[]\n /** Enable slider/scroll for legends with many items */\n enableSlider?: boolean\n /** Hide the icon/indicator next to legend items */\n hideIcon?: boolean\n /** Key to use for legend item names */\n nameKey?: string\n /** Callback when a legend item is clicked (for interactive filtering) */\n onLegendClick?: (dataKey: string, isActive: boolean) => void\n /** Legend payload from Recharts */\n payload?: LegendPayloadItem[]\n /** Vertical alignment of the legend */\n verticalAlign?: \"bottom\" | \"middle\" | \"top\"\n}\n\nfunction ChartLegendContent({\n activeLegend,\n className,\n enableSlider = false,\n hideIcon = false,\n nameKey,\n onLegendClick,\n payload,\n verticalAlign = \"bottom\",\n}: ChartLegendContentProps) {\n const { config } = useChart()\n const scrollRef = React.useRef<HTMLDivElement>(null)\n const itemListRef = React.useRef<(HTMLDivElement | null)[]>([])\n\n // Determine if an item is active (for interactive filtering)\n const isItemActive = React.useCallback(\n (dataKey: string) => {\n if (!activeLegend) return true // All active if not controlled\n return activeLegend.includes(dataKey)\n },\n [activeLegend]\n )\n\n // Handle keyboard navigation between legend items\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent, index: number, dataKey: string, isActive: boolean) => {\n const filteredPayload = payload?.filter((item) => item.type !== \"none\") ?? []\n const itemCount = filteredPayload.length\n\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault()\n onLegendClick?.(dataKey, isActive)\n break\n case \"ArrowRight\":\n case \"ArrowDown\": {\n e.preventDefault()\n const nextIndex = (index + 1) % itemCount\n itemListRef.current[nextIndex]?.focus()\n break\n }\n case \"ArrowLeft\":\n case \"ArrowUp\": {\n e.preventDefault()\n const prevIndex = (index - 1 + itemCount) % itemCount\n itemListRef.current[prevIndex]?.focus()\n break\n }\n case \"Home\":\n e.preventDefault()\n itemListRef.current[0]?.focus()\n break\n case \"End\":\n e.preventDefault()\n itemListRef.current[itemCount - 1]?.focus()\n break\n }\n },\n [payload, onLegendClick]\n )\n\n if (!payload?.length) {\n return null\n }\n\n const isInteractive = Boolean(onLegendClick)\n const filteredPayload = payload.filter((item) => item.type !== \"none\")\n\n return (\n <div\n ref={scrollRef}\n className={cn(\n chartLegendVariants({ position: verticalAlign === \"top\" ? \"top\" : \"bottom\" }),\n enableSlider && \"overflow-x-auto\",\n className\n )}\n aria-label={isInteractive ? \"Chart legend filters\" : undefined}\n role={isInteractive ? \"toolbar\" : undefined}\n >\n {filteredPayload.map((item, index) => {\n const key = nameKey ?? item.dataKey ?? \"value\"\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const dataKey = item.dataKey ?? item.value ?? key\n const isActive = isItemActive(dataKey)\n const itemKey = `${dataKey}-${String(index)}`\n\n return (\n <div\n key={itemKey}\n ref={(el) => { itemListRef.current[index] = el }}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n isInteractive && \"cursor-pointer select-none transition-opacity\",\n isInteractive && !isActive && \"opacity-40\"\n )}\n aria-pressed={isInteractive ? isActive : undefined}\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onClick={\n isInteractive\n ? () => onLegendClick?.(dataKey, isActive)\n : undefined\n }\n onKeyDown={\n isInteractive\n ? (e) => { handleKeyDown(e, index, dataKey, isActive); }\n : undefined\n }\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className={cn(\n \"h-2 w-2 shrink-0 rounded-sm transition-colors\",\n !isActive && \"bg-muted\"\n )}\n style={{\n backgroundColor: isActive ? item.color : undefined,\n }}\n />\n )}\n <span className={cn(!isActive && \"text-muted-foreground\")}>\n {itemConfig?.label}\n </span>\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key]\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n}\n\nexport type { ChartTooltipContentProps }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/Chart/Chart.variants.ts","../src/components/data-display/Chart/Chart.tsx"],"names":["config","filteredPayload"],"mappings":"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","file":"chunk-XXWCMY2G.js","sourcesContent":["// Chart/Chart.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Chart container style variants using CVA\n *\n * Controls the overall chart wrapper appearance.\n *\n * @see https://cva.style/docs\n */\n// NB: `#ccc` and `#fff` literals below are *attribute selectors* matching\n// Recharts' hardcoded default SVG output, not our styling values. They\n// must stay literal because Recharts emits those exact strings; we override\n// them to our theme tokens via the `stroke-*`/`fill-*` Tailwind classes\n// that follow. Not a token-hygiene violation.\nexport const chartContainerVariants = cva(\n // Base styles (always applied) - Recharts-specific styling\n [\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground\",\n \"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50\",\n \"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border\",\n \"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border\",\n \"[&_.recharts-radial-bar-background-sector]:fill-muted\",\n \"[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted\",\n \"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border\",\n \"flex min-h-px min-w-px w-full justify-center text-xs\",\n \"[&_.recharts-dot[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-layer]:outline-hidden\",\n \"[&_.recharts-sector]:outline-hidden\",\n \"[&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n \"[&_.recharts-surface]:outline-hidden\",\n ].join(\" \"),\n {\n variants: {\n aspectRatio: {\n auto: \"\",\n video: \"aspect-video\",\n square: \"aspect-square\",\n wide: \"aspect-[21/9]\",\n },\n },\n defaultVariants: {\n aspectRatio: \"auto\",\n },\n }\n)\n\n/**\n * Chart tooltip style variants\n */\nexport const chartTooltipVariants = cva(\n // Base styles (always applied)\n \"bg-[color:var(--chart-tooltip-bg)] border-[color:var(--chart-tooltip-border)] grid min-w-[var(--chart-tooltip-min-width)] items-start gap-[var(--chart-tooltip-gap)] rounded-[var(--chart-tooltip-radius)] border px-[var(--chart-tooltip-padding-x)] py-[var(--chart-tooltip-padding-y)] text-[length:var(--chart-tooltip-text)] shadow-[var(--chart-tooltip-shadow)]\",\n {\n variants: {\n indicator: {\n dot: \"\",\n line: \"\",\n dashed: \"\",\n },\n },\n defaultVariants: {\n indicator: \"dot\",\n },\n }\n)\n\n/**\n * Chart tooltip indicator style variants\n */\nexport const chartTooltipIndicatorVariants = cva(\n // Base styles (always applied)\n \"shrink-0 rounded-sm border-(--color-border) bg-(--color-bg)\",\n {\n variants: {\n indicator: {\n dot: \"size-[var(--chart-indicator-dot-size)]\",\n line: \"w-[var(--chart-indicator-line-width)]\",\n dashed: \"w-0 border-[1.5px] border-dashed bg-transparent\",\n },\n },\n defaultVariants: {\n indicator: \"dot\",\n },\n }\n)\n\n/**\n * Chart legend style variants\n */\nexport const chartLegendVariants = cva(\n // Base styles (always applied)\n \"flex items-center justify-center gap-[var(--chart-legend-gap)]\",\n {\n variants: {\n position: {\n top: \"pb-[var(--chart-legend-padding)]\",\n bottom: \"pt-[var(--chart-legend-padding)]\",\n },\n },\n defaultVariants: {\n position: \"bottom\",\n },\n }\n)\n\n// Export variant prop types\nexport type ChartContainerVariantProps = VariantProps<typeof chartContainerVariants>\nexport type ChartTooltipVariantProps = VariantProps<typeof chartTooltipVariants>\nexport type ChartTooltipIndicatorVariantProps = VariantProps<typeof chartTooltipIndicatorVariants>\nexport type ChartLegendVariantProps = VariantProps<typeof chartLegendVariants>\n","import type { NameType, Payload, ValueType } from \"recharts/types/component/DefaultTooltipContent\"\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n chartContainerVariants,\n chartLegendVariants,\n chartTooltipIndicatorVariants,\n chartTooltipVariants,\n} from \"./Chart.variants\"\n\n// Helper to safely access fill from payload\nfunction getPayloadFill(item: Payload<ValueType, NameType>): string | undefined {\n const payload = item.payload as undefined | { fill?: unknown }\n const fill = payload?.fill\n return typeof fill === \"string\" ? fill : undefined\n}\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = Record<string, {\n icon?: React.ComponentType\n label?: React.ReactNode\n } & (\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n | { color?: string; theme?: never }\n )>\n\ninterface ChartContextProps {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.use(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n config: ChartConfig\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id ?? uniqueId.replaceAll(':', \"\")}`\n\n // Gate ResponsiveContainer until the wrapper has a measured size.\n // Recharts emits a noisy \"width(-1) and height(-1)\" warning when it mounts\n // inside a parent that hasn't been laid out yet (hidden tabs, off-screen\n // demos, suspended subtrees). Deferring the mount until ResizeObserver\n // reports a real size silences the warning without changing visual output.\n //\n // Threshold is 8px (not just `> 0`) because the base `chartContainerVariants`\n // ships `min-h-px min-w-px` (1px floors), which would otherwise fire the\n // gate too early — Recharts then mounts inside a 1×1 box and emits the\n // warning anyway before remeasuring.\n const wrapperRef = React.useRef<HTMLDivElement>(null)\n const [hasSize, setHasSize] = React.useState(false)\n React.useEffect(() => {\n const el = wrapperRef.current\n if (!el) return\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return\n if (entry.contentRect.width > 8 && entry.contentRect.height > 8) {\n setHasSize(true)\n }\n })\n observer.observe(el)\n return () => { observer.disconnect() }\n }, [])\n\n return (\n <ChartContext value={{ config }}>\n <div\n ref={wrapperRef}\n className={cn(\n chartContainerVariants(),\n className\n )}\n data-chart={chartId}\n data-slot=\"chart\"\n {...props}\n >\n <ChartStyle config={config} id={chartId} />\n {hasSize && (\n <RechartsPrimitive.ResponsiveContainer height=\"100%\" minHeight={1} minWidth={1} width=\"100%\">\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n )}\n </div>\n </ChartContext>\n )\n}\n\nconst ChartStyle = ({ id, config }: { config: ChartConfig; id: string; }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n // eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml -- Safe: CSS variables from config, no user input\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\ninterface ChartTooltipContentProps extends React.ComponentProps<\"div\"> {\n active?: boolean\n color?: string\n formatter?: (value: unknown, name: string, item: Payload<ValueType, NameType>, index: number, payload: unknown) => React.ReactNode\n hideIndicator?: boolean\n hideLabel?: boolean\n indicator?: \"dashed\" | \"dot\" | \"line\"\n label?: string\n labelClassName?: string\n labelFormatter?: (label: unknown, payload: Payload<ValueType, NameType>[]) => React.ReactNode\n labelKey?: string\n nameKey?: string\n payload?: Payload<ValueType, NameType>[]\n}\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: ChartTooltipContentProps) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = String(labelKey ?? item?.dataKey ?? item?.name ?? \"value\")\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label]?.label ?? label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n chartTooltipVariants({ indicator: nestLabel ? \"dashed\" : indicator }),\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n { }\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = String(nameKey ?? item.name ?? item.dataKey ?? \"value\")\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color ?? getPayloadFill(item) ?? item.color\n const itemKey = `${String(item.dataKey ?? item.name ?? key)}-${String(index)}`\n\n return (\n <div\n key={itemKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item.value !== undefined && item.name ? (\n formatter(item.value, String(item.name), item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n chartTooltipIndicatorVariants({\n indicator: nestLabel ? \"dashed\" : indicator,\n }),\n {\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\ninterface LegendPayloadItem {\n color?: string\n dataKey?: string\n type?: string\n value?: string\n}\n\ninterface ChartLegendContentProps extends React.ComponentProps<\"div\"> {\n /** Currently active/selected legend items (for controlled filtering) */\n activeLegend?: string[]\n /** Enable slider/scroll for legends with many items */\n enableSlider?: boolean\n /** Hide the icon/indicator next to legend items */\n hideIcon?: boolean\n /** Key to use for legend item names */\n nameKey?: string\n /** Callback when a legend item is clicked (for interactive filtering) */\n onLegendClick?: (dataKey: string, isActive: boolean) => void\n /** Legend payload from Recharts */\n payload?: LegendPayloadItem[]\n /** Vertical alignment of the legend */\n verticalAlign?: \"bottom\" | \"middle\" | \"top\"\n}\n\nfunction ChartLegendContent({\n activeLegend,\n className,\n enableSlider = false,\n hideIcon = false,\n nameKey,\n onLegendClick,\n payload,\n verticalAlign = \"bottom\",\n}: ChartLegendContentProps) {\n const { config } = useChart()\n const scrollRef = React.useRef<HTMLDivElement>(null)\n const itemListRef = React.useRef<(HTMLDivElement | null)[]>([])\n\n // Determine if an item is active (for interactive filtering)\n const isItemActive = React.useCallback(\n (dataKey: string) => {\n if (!activeLegend) return true // All active if not controlled\n return activeLegend.includes(dataKey)\n },\n [activeLegend]\n )\n\n // Handle keyboard navigation between legend items\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent, index: number, dataKey: string, isActive: boolean) => {\n const filteredPayload = payload?.filter((item) => item.type !== \"none\") ?? []\n const itemCount = filteredPayload.length\n\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault()\n onLegendClick?.(dataKey, isActive)\n break\n case \"ArrowRight\":\n case \"ArrowDown\": {\n e.preventDefault()\n const nextIndex = (index + 1) % itemCount\n itemListRef.current[nextIndex]?.focus()\n break\n }\n case \"ArrowLeft\":\n case \"ArrowUp\": {\n e.preventDefault()\n const prevIndex = (index - 1 + itemCount) % itemCount\n itemListRef.current[prevIndex]?.focus()\n break\n }\n case \"Home\":\n e.preventDefault()\n itemListRef.current[0]?.focus()\n break\n case \"End\":\n e.preventDefault()\n itemListRef.current[itemCount - 1]?.focus()\n break\n }\n },\n [payload, onLegendClick]\n )\n\n if (!payload?.length) {\n return null\n }\n\n const isInteractive = Boolean(onLegendClick)\n const filteredPayload = payload.filter((item) => item.type !== \"none\")\n\n return (\n <div\n ref={scrollRef}\n className={cn(\n chartLegendVariants({ position: verticalAlign === \"top\" ? \"top\" : \"bottom\" }),\n enableSlider && \"overflow-x-auto\",\n className\n )}\n aria-label={isInteractive ? \"Chart legend filters\" : undefined}\n role={isInteractive ? \"toolbar\" : undefined}\n >\n {filteredPayload.map((item, index) => {\n const key = nameKey ?? item.dataKey ?? \"value\"\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const dataKey = item.dataKey ?? item.value ?? key\n const isActive = isItemActive(dataKey)\n const itemKey = `${dataKey}-${String(index)}`\n\n return (\n <div\n key={itemKey}\n ref={(el) => { itemListRef.current[index] = el }}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n isInteractive && \"cursor-pointer select-none transition-opacity\",\n isInteractive && !isActive && \"opacity-40\"\n )}\n aria-pressed={isInteractive ? isActive : undefined}\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onClick={\n isInteractive\n ? () => onLegendClick?.(dataKey, isActive)\n : undefined\n }\n onKeyDown={\n isInteractive\n ? (e) => { handleKeyDown(e, index, dataKey, isActive); }\n : undefined\n }\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className={cn(\n \"h-2 w-2 shrink-0 rounded-sm transition-colors\",\n !isActive && \"bg-muted\"\n )}\n style={{\n backgroundColor: isActive ? item.color : undefined,\n }}\n />\n )}\n <span className={cn(!isActive && \"text-muted-foreground\")}>\n {itemConfig?.label}\n </span>\n </div>\n )\n })}\n </div>\n )\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key]\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n}\n\nexport type { ChartTooltipContentProps }\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import { Slot } from '@radix-ui/react-slot';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { ExternalLink } from 'lucide-react';
@@ -118,5 +118,5 @@ function Link({
118
118
  }
119
119
 
120
120
  export { Link, linkVariants };
121
- //# sourceMappingURL=chunk-LFN7UHDT.js.map
122
- //# sourceMappingURL=chunk-LFN7UHDT.js.map
121
+ //# sourceMappingURL=chunk-Y4FEW7SR.js.map
122
+ //# sourceMappingURL=chunk-Y4FEW7SR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/Link/Link.tsx"],"names":[],"mappings":"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","file":"chunk-LFN7UHDT.js","sourcesContent":["import type { LinkEventPayload, LinkProps } from \"./Link.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { ExternalLink } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 transition-colors outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"text-[color:var(--link-color-default)]\",\n muted: \"text-[color:var(--link-color-muted)]\",\n subtle: \"text-[color:var(--link-color-subtle)]\",\n nav: \"text-[color:var(--link-color-nav)] hover:text-[color:var(--link-color-nav-hover)]\",\n inline: \"text-[color:var(--link-color-default)] underline underline-offset-4\",\n unstyled: \"\",\n },\n size: {\n xs: \"text-[length:var(--link-text-xs)]\",\n sm: \"text-[length:var(--link-text-sm)]\",\n default: \"text-[length:var(--link-text-default)]\",\n lg: \"text-[length:var(--link-text-lg)]\",\n inherit: \"\",\n },\n underline: {\n always: \"underline underline-offset-4\",\n hover: \"hover:underline underline-offset-4\",\n none: \"no-underline hover:no-underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"inherit\",\n underline: \"hover\",\n },\n compoundVariants: [\n // inline variant always has underline, override underline prop\n {\n variant: \"inline\",\n className: \"underline underline-offset-4\",\n },\n // nav variant never has underline, override underline prop\n {\n variant: \"nav\",\n className: \"no-underline hover:no-underline\",\n },\n ],\n }\n)\n\nfunction Link({\n className,\n variant,\n size,\n underline,\n asChild = false,\n external = false,\n leftIcon,\n rightIcon,\n showExternalIcon = true,\n children,\n onClick,\n href,\n rel,\n \"data-id\": dataId,\n ...props\n}: LinkProps) {\n const Comp = asChild ? Slot : \"a\"\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): LinkEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isExternal: external,\n ...(href ? { href } : {}),\n }), [dataId, external, href])\n\n // Wrapped click handler that emits LinkEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event, createPayload())\n },\n [onClick, createPayload]\n )\n\n // Determine if we should show the external icon\n const shouldShowExternalIcon = external && showExternalIcon && !rightIcon\n\n // Render content with icons\n const renderContent = () => {\n // If asChild, we pass children directly (Slot handles composition)\n if (asChild) {\n return children\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n {shouldShowExternalIcon && (\n <>\n <span className=\"sr-only\">(opens in new tab)</span>\n <ExternalLink\n aria-hidden=\"true\"\n className=\"size-3\"\n data-slot=\"external-icon\"\n />\n </>\n )}\n </>\n )\n }\n\n return (\n <Comp\n className={cn(linkVariants({ variant, size, underline }), className)}\n data-id={dataId}\n data-slot=\"link\"\n href={href}\n rel={external ? \"noopener noreferrer\" : rel}\n target={external ? \"_blank\" : undefined}\n onClick={handleClick}\n {...props}\n >\n {renderContent()}\n </Comp>\n )\n}\n\nexport { Link, linkVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/Link/Link.tsx"],"names":[],"mappings":"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","file":"chunk-Y4FEW7SR.js","sourcesContent":["import type { LinkEventPayload, LinkProps } from \"./Link.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { ExternalLink } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 transition-colors outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"text-[color:var(--link-color-default)]\",\n muted: \"text-[color:var(--link-color-muted)]\",\n subtle: \"text-[color:var(--link-color-subtle)]\",\n nav: \"text-[color:var(--link-color-nav)] hover:text-[color:var(--link-color-nav-hover)]\",\n inline: \"text-[color:var(--link-color-default)] underline underline-offset-4\",\n unstyled: \"\",\n },\n size: {\n xs: \"text-[length:var(--link-text-xs)]\",\n sm: \"text-[length:var(--link-text-sm)]\",\n default: \"text-[length:var(--link-text-default)]\",\n lg: \"text-[length:var(--link-text-lg)]\",\n inherit: \"\",\n },\n underline: {\n always: \"underline underline-offset-4\",\n hover: \"hover:underline underline-offset-4\",\n none: \"no-underline hover:no-underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"inherit\",\n underline: \"hover\",\n },\n compoundVariants: [\n // inline variant always has underline, override underline prop\n {\n variant: \"inline\",\n className: \"underline underline-offset-4\",\n },\n // nav variant never has underline, override underline prop\n {\n variant: \"nav\",\n className: \"no-underline hover:no-underline\",\n },\n ],\n }\n)\n\nfunction Link({\n className,\n variant,\n size,\n underline,\n asChild = false,\n external = false,\n leftIcon,\n rightIcon,\n showExternalIcon = true,\n children,\n onClick,\n href,\n rel,\n \"data-id\": dataId,\n ...props\n}: LinkProps) {\n const Comp = asChild ? Slot : \"a\"\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): LinkEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isExternal: external,\n ...(href ? { href } : {}),\n }), [dataId, external, href])\n\n // Wrapped click handler that emits LinkEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event, createPayload())\n },\n [onClick, createPayload]\n )\n\n // Determine if we should show the external icon\n const shouldShowExternalIcon = external && showExternalIcon && !rightIcon\n\n // Render content with icons\n const renderContent = () => {\n // If asChild, we pass children directly (Slot handles composition)\n if (asChild) {\n return children\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n {shouldShowExternalIcon && (\n <>\n <span className=\"sr-only\">(opens in new tab)</span>\n <ExternalLink\n aria-hidden=\"true\"\n className=\"size-3\"\n data-slot=\"external-icon\"\n />\n </>\n )}\n </>\n )\n }\n\n return (\n <Comp\n className={cn(linkVariants({ variant, size, underline }), className)}\n data-id={dataId}\n data-slot=\"link\"\n href={href}\n rel={external ? \"noopener noreferrer\" : rel}\n target={external ? \"_blank\" : undefined}\n onClick={handleClick}\n {...props}\n >\n {renderContent()}\n </Comp>\n )\n}\n\nexport { Link, linkVariants }\n"]}