@etus/ui 0.4.0-beta.17 → 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 (589) 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-ZP4HYVDG.js → chunk-3R6MY3YJ.js} +4 -4
  8. package/dist/{chunk-ZP4HYVDG.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-N4UTBJRY.js → chunk-4SFBDK4E.js} +4 -4
  18. package/dist/{chunk-N4UTBJRY.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-XYYOV5GW.js → chunk-5YUUE5JJ.js} +5 -5
  34. package/dist/{chunk-XYYOV5GW.js.map → chunk-5YUUE5JJ.js.map} +1 -1
  35. package/dist/{chunk-D6TH3EGA.js → chunk-627ZZ6HO.js} +6 -6
  36. package/dist/{chunk-D6TH3EGA.js.map → chunk-627ZZ6HO.js.map} +1 -1
  37. package/dist/{chunk-OXDWUKGP.js → chunk-6G5QK3SU.js} +5 -5
  38. package/dist/chunk-6G5QK3SU.js.map +1 -0
  39. package/dist/{chunk-U74PNG4S.js → chunk-6QVXMYKH.js} +4 -4
  40. package/dist/{chunk-U74PNG4S.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-EYSTEGV5.js → chunk-7QEFKWUR.js} +10 -10
  52. package/dist/{chunk-EYSTEGV5.js.map → chunk-7QEFKWUR.js.map} +1 -1
  53. package/dist/{chunk-Z4KW5VW6.js → chunk-7TX5X4EP.js} +6 -6
  54. package/dist/{chunk-Z4KW5VW6.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-2ROFZG3A.js → chunk-7Y325TBV.js} +4 -4
  58. package/dist/{chunk-2ROFZG3A.js.map → chunk-7Y325TBV.js.map} +1 -1
  59. package/dist/{chunk-4RSHPKHB.js → chunk-7YZ7HNXX.js} +4 -4
  60. package/dist/{chunk-4RSHPKHB.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-CKD4UBV6.js → chunk-AJUOTABG.js} +4 -4
  66. package/dist/{chunk-CKD4UBV6.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-U6EOAIPK.js → chunk-ARJAIH7Q.js} +4 -4
  70. package/dist/chunk-ARJAIH7Q.js.map +1 -0
  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-WKWLKGNI.js → chunk-BUCXPZYE.js} +6 -6
  76. package/dist/chunk-BUCXPZYE.js.map +1 -0
  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-U2R47SPY.js → chunk-DJHDCDU6.js} +4 -4
  86. package/dist/{chunk-U2R47SPY.js.map → chunk-DJHDCDU6.js.map} +1 -1
  87. package/dist/{chunk-5GE3BQA7.js → chunk-DQGBTZRX.js} +7 -7
  88. package/dist/chunk-DQGBTZRX.js.map +1 -0
  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-NCT5WXKG.js → chunk-EDSIOUUR.js} +4 -4
  94. package/dist/{chunk-NCT5WXKG.js.map → chunk-EDSIOUUR.js.map} +1 -1
  95. package/dist/{chunk-TAZPML2P.js → chunk-ELRIFGMN.js} +4 -4
  96. package/dist/{chunk-TAZPML2P.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-VBJ26PZJ.js → chunk-EZYXD2YI.js} +4 -4
  102. package/dist/{chunk-VBJ26PZJ.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-VAVE4ZJF.js → chunk-FVRSXJKS.js} +4 -4
  110. package/dist/chunk-FVRSXJKS.js.map +1 -0
  111. package/dist/{chunk-X3AXEE3S.js → chunk-FXFVFSG5.js} +5 -5
  112. package/dist/{chunk-X3AXEE3S.js.map → chunk-FXFVFSG5.js.map} +1 -1
  113. package/dist/{chunk-IFHF4UES.js → chunk-GDZECJFS.js} +12 -12
  114. package/dist/chunk-GDZECJFS.js.map +1 -0
  115. package/dist/{chunk-7J5OM4ZD.js → chunk-GLHKHYJY.js} +8 -8
  116. package/dist/{chunk-7J5OM4ZD.js.map → chunk-GLHKHYJY.js.map} +1 -1
  117. package/dist/{chunk-4KOJTZVU.js → chunk-GRODCJS4.js} +29 -29
  118. package/dist/chunk-GRODCJS4.js.map +1 -0
  119. package/dist/{chunk-TNDW52VZ.js → chunk-GVNG5ME6.js} +36 -18
  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-W7S7GPU5.js → chunk-HHWUROMA.js} +6 -6
  126. package/dist/{chunk-W7S7GPU5.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-4GVOOXYD.js → chunk-HNQX6ZG7.js} +7 -7
  130. package/dist/chunk-HNQX6ZG7.js.map +1 -0
  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-P27ERD6W.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-XOGMDABS.js → chunk-JDETM3FL.js} +9 -9
  142. package/dist/chunk-JDETM3FL.js.map +1 -0
  143. package/dist/{chunk-R3HUGCGR.js → chunk-JE46MFMN.js} +6 -6
  144. package/dist/{chunk-R3HUGCGR.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-7Y2UQMX6.js → chunk-JYYB6F5O.js} +37 -37
  158. package/dist/chunk-JYYB6F5O.js.map +1 -0
  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-PWCMCMDN.js → chunk-K4UCALQQ.js} +4 -4
  164. package/dist/{chunk-PWCMCMDN.js.map → chunk-K4UCALQQ.js.map} +1 -1
  165. package/dist/{chunk-OBRJXVWO.js → chunk-KBU4KJKC.js} +7 -7
  166. package/dist/{chunk-OBRJXVWO.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-3NSIUZGP.js → chunk-KHCHATTD.js} +5 -5
  170. package/dist/{chunk-3NSIUZGP.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-TQBUBD3E.js → chunk-KLFYTLF3.js} +4 -4
  174. package/dist/{chunk-TQBUBD3E.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-7TF5PVEU.js → chunk-L4OQ6BJ5.js} +7 -7
  178. package/dist/chunk-L4OQ6BJ5.js.map +1 -0
  179. package/dist/{chunk-3L5G7VI2.js → chunk-LCBB3N5H.js} +4 -4
  180. package/dist/chunk-LCBB3N5H.js.map +1 -0
  181. package/dist/{chunk-BS5XDYOE.js → chunk-LDK6ADKM.js} +6 -6
  182. package/dist/{chunk-BS5XDYOE.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-G7PBPX3K.js → chunk-LRE3LJMW.js} +5 -5
  186. package/dist/{chunk-G7PBPX3K.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-H5N3VPBG.js → chunk-MGIGDALC.js} +4 -4
  190. package/dist/{chunk-H5N3VPBG.js.map → chunk-MGIGDALC.js.map} +1 -1
  191. package/dist/{chunk-WXBC3D2N.js → chunk-MNYU5MHO.js} +7 -7
  192. package/dist/{chunk-WXBC3D2N.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-3KOLK3OB.js → chunk-N5YGAESZ.js} +5 -5
  198. package/dist/{chunk-3KOLK3OB.js.map → chunk-N5YGAESZ.js.map} +1 -1
  199. package/dist/{chunk-W3JVNX35.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-GGUWEAYD.js → chunk-NLPVF34P.js} +4 -4
  210. package/dist/{chunk-GGUWEAYD.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-Y4RKKQMB.js → chunk-ONN5XVYC.js} +4 -4
  224. package/dist/chunk-ONN5XVYC.js.map +1 -0
  225. package/dist/{chunk-GL56KIFL.js → chunk-OWZ3MZ5C.js} +4 -4
  226. package/dist/{chunk-GL56KIFL.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-T6XRYT6Q.js → chunk-P4WMDGAQ.js} +4 -4
  230. package/dist/{chunk-T6XRYT6Q.js.map → chunk-P4WMDGAQ.js.map} +1 -1
  231. package/dist/{chunk-NXQ25PKF.js → chunk-PBZI5XNV.js} +8 -8
  232. package/dist/chunk-PBZI5XNV.js.map +1 -0
  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-P7D6S6GX.js → chunk-PTXC4KPQ.js} +39 -5
  238. package/dist/chunk-PTXC4KPQ.js.map +1 -0
  239. package/dist/{chunk-UYC7M3FM.js → chunk-PVIIIQJI.js} +6 -6
  240. package/dist/{chunk-UYC7M3FM.js.map → chunk-PVIIIQJI.js.map} +1 -1
  241. package/dist/{chunk-E2TI5V67.js → chunk-PXR6CZIL.js} +4 -4
  242. package/dist/{chunk-E2TI5V67.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-3NLWCX2F.js → chunk-QJOWG2D4.js} +5 -5
  250. package/dist/{chunk-3NLWCX2F.js.map → chunk-QJOWG2D4.js.map} +1 -1
  251. package/dist/{chunk-Q43KJP5A.js → chunk-QLYH3GCV.js} +8 -8
  252. package/dist/{chunk-Q43KJP5A.js.map → chunk-QLYH3GCV.js.map} +1 -1
  253. package/dist/{chunk-IRIIK3BU.js → chunk-QO6TOE45.js} +11 -11
  254. package/dist/chunk-QO6TOE45.js.map +1 -0
  255. package/dist/{chunk-66TBTTZO.js → chunk-QWWA4FZP.js} +15 -15
  256. package/dist/chunk-QWWA4FZP.js.map +1 -0
  257. package/dist/{chunk-2YSZPUQZ.js → chunk-QXET2TML.js} +4 -4
  258. package/dist/{chunk-2YSZPUQZ.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-SUU3HNOX.js → chunk-R42LSLJL.js} +6 -6
  262. package/dist/{chunk-SUU3HNOX.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-XLTSCY22.js → chunk-ROPW65RD.js} +5 -5
  266. package/dist/chunk-ROPW65RD.js.map +1 -0
  267. package/dist/{chunk-6ZAMTPGN.js → chunk-RQBYBBMP.js} +4 -4
  268. package/dist/{chunk-6ZAMTPGN.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-UPK5B2FL.js → chunk-S6BREP2G.js} +7 -7
  274. package/dist/chunk-S6BREP2G.js.map +1 -0
  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-3W7FXRO5.js → chunk-SKI25Q7O.js} +6 -6
  278. package/dist/{chunk-3W7FXRO5.js.map → chunk-SKI25Q7O.js.map} +1 -1
  279. package/dist/{chunk-LLI3JFJL.js → chunk-SSKSWSVO.js} +5 -5
  280. package/dist/{chunk-LLI3JFJL.js.map → chunk-SSKSWSVO.js.map} +1 -1
  281. package/dist/{chunk-VLDAHAG6.js → chunk-STADVFL2.js} +5 -5
  282. package/dist/{chunk-VLDAHAG6.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-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
  288. package/dist/chunk-T3LWBCVR.js.map +1 -0
  289. package/dist/{chunk-AR3OXNPL.js → chunk-TDANAN5A.js} +3 -3
  290. package/dist/{chunk-AR3OXNPL.js.map → chunk-TDANAN5A.js.map} +1 -1
  291. package/dist/{chunk-7ZJ32KRQ.js → chunk-TEVGCTUN.js} +3 -3
  292. package/dist/{chunk-7ZJ32KRQ.js.map → chunk-TEVGCTUN.js.map} +1 -1
  293. package/dist/{chunk-GAMOVEZD.js → chunk-TIPKU427.js} +3 -3
  294. package/dist/{chunk-GAMOVEZD.js.map → chunk-TIPKU427.js.map} +1 -1
  295. package/dist/{chunk-2Q4I4VDB.js → chunk-TK5WS675.js} +3 -3
  296. package/dist/{chunk-2Q4I4VDB.js.map → chunk-TK5WS675.js.map} +1 -1
  297. package/dist/{chunk-YUHPTV2A.js → chunk-TNSMTINE.js} +4 -4
  298. package/dist/{chunk-YUHPTV2A.js.map → chunk-TNSMTINE.js.map} +1 -1
  299. package/dist/{chunk-VT4IMHGE.js → chunk-TRTVYFOF.js} +5 -5
  300. package/dist/chunk-TRTVYFOF.js.map +1 -0
  301. package/dist/{chunk-46ESMCEQ.js → chunk-TSE3PKWQ.js} +6 -6
  302. package/dist/chunk-TSE3PKWQ.js.map +1 -0
  303. package/dist/{chunk-3BBOSSDG.js → chunk-U7TPJMGY.js} +4 -4
  304. package/dist/{chunk-3BBOSSDG.js.map → chunk-U7TPJMGY.js.map} +1 -1
  305. package/dist/{chunk-5I7AXWJU.js → chunk-UC5J6GWG.js} +5 -5
  306. package/dist/{chunk-5I7AXWJU.js.map → chunk-UC5J6GWG.js.map} +1 -1
  307. package/dist/{chunk-ZKK7L7H7.js → chunk-UNHPLKMR.js} +3 -3
  308. package/dist/{chunk-ZKK7L7H7.js.map → chunk-UNHPLKMR.js.map} +1 -1
  309. package/dist/{chunk-I7ZLEC7Y.js → chunk-UZEJ3ZVR.js} +3 -3
  310. package/dist/{chunk-I7ZLEC7Y.js.map → chunk-UZEJ3ZVR.js.map} +1 -1
  311. package/dist/{chunk-SXPBKGLT.js → chunk-UZZCEQH4.js} +4 -4
  312. package/dist/{chunk-SXPBKGLT.js.map → chunk-UZZCEQH4.js.map} +1 -1
  313. package/dist/{chunk-AEE5GDNA.js → chunk-V4NSLSCA.js} +4 -4
  314. package/dist/{chunk-AEE5GDNA.js.map → chunk-V4NSLSCA.js.map} +1 -1
  315. package/dist/{chunk-IZC5YFGO.js → chunk-V57DERRV.js} +14 -7
  316. package/dist/chunk-V57DERRV.js.map +1 -0
  317. package/dist/{chunk-VZZ3HP7G.js → chunk-VHJ6ALIE.js} +4 -4
  318. package/dist/{chunk-VZZ3HP7G.js.map → chunk-VHJ6ALIE.js.map} +1 -1
  319. package/dist/{chunk-N3I6GA4I.js → chunk-WG34IXUV.js} +3 -3
  320. package/dist/{chunk-N3I6GA4I.js.map → chunk-WG34IXUV.js.map} +1 -1
  321. package/dist/{chunk-OEXQ2MOY.js → chunk-WGKOYZRI.js} +4 -4
  322. package/dist/{chunk-OEXQ2MOY.js.map → chunk-WGKOYZRI.js.map} +1 -1
  323. package/dist/{chunk-6DN2UAIR.js → chunk-WGSVSZ7V.js} +3 -3
  324. package/dist/{chunk-6DN2UAIR.js.map → chunk-WGSVSZ7V.js.map} +1 -1
  325. package/dist/{chunk-X4YUWX7H.js → chunk-WK324C6D.js} +4 -4
  326. package/dist/{chunk-X4YUWX7H.js.map → chunk-WK324C6D.js.map} +1 -1
  327. package/dist/{chunk-N2WITPE2.js → chunk-WOP5OWLG.js} +3 -3
  328. package/dist/{chunk-N2WITPE2.js.map → chunk-WOP5OWLG.js.map} +1 -1
  329. package/dist/{chunk-JPA2VQRW.js → chunk-WSDWJX4Y.js} +4 -4
  330. package/dist/{chunk-JPA2VQRW.js.map → chunk-WSDWJX4Y.js.map} +1 -1
  331. package/dist/{chunk-2XJWE2XR.js → chunk-WUS45IZW.js} +4 -4
  332. package/dist/{chunk-2XJWE2XR.js.map → chunk-WUS45IZW.js.map} +1 -1
  333. package/dist/{chunk-B3BDIM4H.js → chunk-WVOZYDH3.js} +3 -3
  334. package/dist/{chunk-B3BDIM4H.js.map → chunk-WVOZYDH3.js.map} +1 -1
  335. package/dist/{chunk-K45MMHLA.js → chunk-WWK7UIKK.js} +5 -5
  336. package/dist/{chunk-K45MMHLA.js.map → chunk-WWK7UIKK.js.map} +1 -1
  337. package/dist/{chunk-NCLOPI6U.js → chunk-X2EMALTZ.js} +3 -3
  338. package/dist/{chunk-NCLOPI6U.js.map → chunk-X2EMALTZ.js.map} +1 -1
  339. package/dist/{chunk-PK5O62XD.js → chunk-X4CJFD6D.js} +3 -3
  340. package/dist/{chunk-PK5O62XD.js.map → chunk-X4CJFD6D.js.map} +1 -1
  341. package/dist/{chunk-JWXK4TMX.js → chunk-XEQGATVF.js} +3 -3
  342. package/dist/{chunk-JWXK4TMX.js.map → chunk-XEQGATVF.js.map} +1 -1
  343. package/dist/{chunk-B6KQKQ4S.js → chunk-XMUD3LG7.js} +3 -3
  344. package/dist/{chunk-B6KQKQ4S.js.map → chunk-XMUD3LG7.js.map} +1 -1
  345. package/dist/{chunk-5ZEYTBTU.js → chunk-XWBVIBN4.js} +3 -3
  346. package/dist/{chunk-5ZEYTBTU.js.map → chunk-XWBVIBN4.js.map} +1 -1
  347. package/dist/{chunk-7I6KK6QE.js → chunk-XXWCMY2G.js} +3 -3
  348. package/dist/{chunk-7I6KK6QE.js.map → chunk-XXWCMY2G.js.map} +1 -1
  349. package/dist/{chunk-LFN7UHDT.js → chunk-Y4FEW7SR.js} +3 -3
  350. package/dist/{chunk-LFN7UHDT.js.map → chunk-Y4FEW7SR.js.map} +1 -1
  351. package/dist/{chunk-PFVT27B5.js → chunk-YC5VVIZO.js} +3 -3
  352. package/dist/{chunk-PFVT27B5.js.map → chunk-YC5VVIZO.js.map} +1 -1
  353. package/dist/{chunk-7EGN7IGY.js → chunk-YMCKML6D.js} +7 -7
  354. package/dist/{chunk-7EGN7IGY.js.map → chunk-YMCKML6D.js.map} +1 -1
  355. package/dist/{chunk-7HT32DZG.js → chunk-YMQDTTO7.js} +6 -6
  356. package/dist/{chunk-7HT32DZG.js.map → chunk-YMQDTTO7.js.map} +1 -1
  357. package/dist/{chunk-ZARZYMBM.js → chunk-YNTS4GRT.js} +3 -3
  358. package/dist/{chunk-ZARZYMBM.js.map → chunk-YNTS4GRT.js.map} +1 -1
  359. package/dist/{chunk-6SZRWNPT.js → chunk-ZOHLZ4YL.js} +3 -3
  360. package/dist/{chunk-6SZRWNPT.js.map → chunk-ZOHLZ4YL.js.map} +1 -1
  361. package/dist/{chunk-4Y72SPNL.js → chunk-ZVSMLMMS.js} +5 -5
  362. package/dist/chunk-ZVSMLMMS.js.map +1 -0
  363. package/dist/{chunk-VKDN66VL.js → chunk-ZXWT4KWJ.js} +3 -3
  364. package/dist/{chunk-VKDN66VL.js.map → chunk-ZXWT4KWJ.js.map} +1 -1
  365. package/dist/components/advanced/AssetManager/index.js +2 -2
  366. package/dist/components/advanced/Calendar/index.js +7 -7
  367. package/dist/components/advanced/Command/index.js +3 -3
  368. package/dist/components/advanced/DragAndDrop/index.js +2 -2
  369. package/dist/components/advanced/ErrorBoundary/index.js +2 -2
  370. package/dist/components/advanced/EventCalendar/index.js +7 -7
  371. package/dist/components/advanced/FileDropzone/index.js +2 -2
  372. package/dist/components/advanced/FilePreview/index.js +2 -2
  373. package/dist/components/advanced/FileUpload/index.js +2 -2
  374. package/dist/components/advanced/FilterBuilder/index.js +10 -10
  375. package/dist/components/advanced/MarkdownEditor/index.js +6 -6
  376. package/dist/components/advanced/ReportBuilder/index.js +8 -8
  377. package/dist/components/advanced/RichTextEditor/index.js +4 -4
  378. package/dist/components/advanced/Search/index.js +2 -2
  379. package/dist/components/advanced/SortableList/index.js +2 -2
  380. package/dist/components/advanced/VersionControl/index.js +2 -2
  381. package/dist/components/advanced/index.js +31 -31
  382. package/dist/components/data-display/Accordion/index.js +2 -2
  383. package/dist/components/data-display/AreaChart/index.js +3 -3
  384. package/dist/components/data-display/Banner/index.js +2 -2
  385. package/dist/components/data-display/BarChart/index.js +3 -3
  386. package/dist/components/data-display/BarList/index.js +2 -2
  387. package/dist/components/data-display/Callout/index.js +2 -2
  388. package/dist/components/data-display/Carousel/index.js +7 -7
  389. package/dist/components/data-display/CategoryBar/index.js +3 -3
  390. package/dist/components/data-display/Chart/index.js +2 -2
  391. package/dist/components/data-display/ChartCard/index.js +5 -5
  392. package/dist/components/data-display/ChartLegend/index.js +2 -2
  393. package/dist/components/data-display/ComboChart/index.js +3 -3
  394. package/dist/components/data-display/DashboardCard/index.js +3 -3
  395. package/dist/components/data-display/DataTable/FilterBuilder/index.js +10 -10
  396. package/dist/components/data-display/DataTable/index.js +17 -17
  397. package/dist/components/data-display/DeltaBar/index.js +3 -3
  398. package/dist/components/data-display/EmptyState/index.js +2 -2
  399. package/dist/components/data-display/FeatureItem/index.js +3 -3
  400. package/dist/components/data-display/Feed/index.js +2 -2
  401. package/dist/components/data-display/FunnelChart/index.js +3 -3
  402. package/dist/components/data-display/GaugeChart/index.js +2 -2
  403. package/dist/components/data-display/Heatmap/index.js +3 -3
  404. package/dist/components/data-display/HoverCard/index.js +2 -2
  405. package/dist/components/data-display/ImageGallery/index.js +9 -9
  406. package/dist/components/data-display/Item/index.js +3 -3
  407. package/dist/components/data-display/KPICard/index.js +8 -8
  408. package/dist/components/data-display/Lightbox/index.js +2 -2
  409. package/dist/components/data-display/LineChart/index.js +3 -3
  410. package/dist/components/data-display/List/index.js +6 -6
  411. package/dist/components/data-display/MarkerBar/index.js +3 -3
  412. package/dist/components/data-display/PieChart/index.js +3 -3
  413. package/dist/components/data-display/RadarChart/index.js +3 -3
  414. package/dist/components/data-display/RadialChart/index.js +3 -3
  415. package/dist/components/data-display/ScatterChart/index.js +3 -3
  416. package/dist/components/data-display/SingleStat/index.js +3 -3
  417. package/dist/components/data-display/Sparkline/index.js +2 -2
  418. package/dist/components/data-display/Table/index.js +2 -2
  419. package/dist/components/data-display/Timeline/index.js +2 -2
  420. package/dist/components/data-display/Tracker/index.js +3 -3
  421. package/dist/components/data-display/VirtualTable/index.js +5 -5
  422. package/dist/components/data-display/index.js +57 -57
  423. package/dist/components/feedback/Alert/index.js +2 -2
  424. package/dist/components/feedback/AlertDialog/index.js +7 -7
  425. package/dist/components/feedback/ConfirmModal/index.js +8 -8
  426. package/dist/components/feedback/Dialog/index.js +2 -2
  427. package/dist/components/feedback/ErrorPage/index.js +2 -2
  428. package/dist/components/feedback/FocusTrap/index.js +2 -2
  429. package/dist/components/feedback/Message/index.js +2 -2
  430. package/dist/components/feedback/Modal/index.js +2 -2
  431. package/dist/components/feedback/Notification/index.js +4 -4
  432. package/dist/components/feedback/Popover/index.js +2 -2
  433. package/dist/components/feedback/Tooltip/index.js +2 -2
  434. package/dist/components/feedback/UpdatesWidget/index.js +2 -2
  435. package/dist/components/feedback/index.js +18 -18
  436. package/dist/components/forms/Autocomplete/index.js +2 -2
  437. package/dist/components/forms/Checkbox/index.js +2 -2
  438. package/dist/components/forms/CheckboxGroup/index.js +3 -3
  439. package/dist/components/forms/ColorPicker/index.js +3 -3
  440. package/dist/components/forms/Combobox/index.js +2 -2
  441. package/dist/components/forms/DatePicker/index.js +10 -10
  442. package/dist/components/forms/DateRangePicker/index.js +10 -10
  443. package/dist/components/forms/EmailInput/index.js +4 -4
  444. package/dist/components/forms/ErrorMessage/index.js +2 -2
  445. package/dist/components/forms/Field/index.js +4 -4
  446. package/dist/components/forms/FloatLabel/index.js +2 -2
  447. package/dist/components/forms/Form/index.js +3 -3
  448. package/dist/components/forms/FormValidation/index.js +2 -2
  449. package/dist/components/forms/HelpText/index.js +2 -2
  450. package/dist/components/forms/IftaLabel/index.js +2 -2
  451. package/dist/components/forms/InputGroup/index.js +10 -10
  452. package/dist/components/forms/InputOTP/index.js +2 -2
  453. package/dist/components/forms/InputOTPField/index.js +6 -6
  454. package/dist/components/forms/MultiSelect/index.js +3 -3
  455. package/dist/components/forms/NativeSelect/index.js +2 -2
  456. package/dist/components/forms/NumberInput/index.js +3 -3
  457. package/dist/components/forms/PasswordInput/index.js +4 -4
  458. package/dist/components/forms/PaymentInput/index.js +2 -2
  459. package/dist/components/forms/PhoneInput/index.js +2 -2
  460. package/dist/components/forms/RadioButton/index.js +2 -2
  461. package/dist/components/forms/RadioCardGroup/index.js +2 -2
  462. package/dist/components/forms/RadioGroup/index.js +2 -2
  463. package/dist/components/forms/Rating/index.js +2 -2
  464. package/dist/components/forms/SearchInput/index.js +4 -4
  465. package/dist/components/forms/Select/index.js +2 -2
  466. package/dist/components/forms/Slider/index.js +2 -2
  467. package/dist/components/forms/SuccessMessage/index.js +2 -2
  468. package/dist/components/forms/Switch/index.js +2 -2
  469. package/dist/components/forms/TagsInput/index.js +4 -4
  470. package/dist/components/forms/TextInput/index.js +3 -3
  471. package/dist/components/forms/Textarea/index.js +2 -2
  472. package/dist/components/forms/TextareaField/index.js +6 -6
  473. package/dist/components/forms/TimePicker/index.js +4 -4
  474. package/dist/components/forms/URLInput/index.js +4 -4
  475. package/dist/components/forms/index.js +51 -51
  476. package/dist/components/index.js +186 -186
  477. package/dist/components/layout/Card/index.js +2 -2
  478. package/dist/components/layout/Collapsible/index.js +2 -2
  479. package/dist/components/layout/Container/index.js +2 -2
  480. package/dist/components/layout/Flex/index.js +2 -2
  481. package/dist/components/layout/Grid/index.js +2 -2
  482. package/dist/components/layout/Panel/index.js +3 -3
  483. package/dist/components/layout/ResizablePanels/index.js +2 -2
  484. package/dist/components/layout/ResponsiveContainer/index.js +2 -2
  485. package/dist/components/layout/ScrollArea/index.js +2 -2
  486. package/dist/components/layout/Section/index.js +2 -2
  487. package/dist/components/layout/Sheet/index.js +2 -2
  488. package/dist/components/layout/Stack/index.js +2 -2
  489. package/dist/components/layout/index.js +13 -13
  490. package/dist/components/navigation/AccountSwitch/index.js +6 -6
  491. package/dist/components/navigation/Breadcrumb/index.js +2 -2
  492. package/dist/components/navigation/ContextMenu/index.js +2 -2
  493. package/dist/components/navigation/Drawer/index.js +2 -2
  494. package/dist/components/navigation/DropdownMenu/index.js +2 -2
  495. package/dist/components/navigation/FileTree/index.js +2 -2
  496. package/dist/components/navigation/Header/index.js +2 -2
  497. package/dist/components/navigation/LogoConta/index.js +2 -2
  498. package/dist/components/navigation/Menu/index.js +3 -3
  499. package/dist/components/navigation/Menubar/index.js +2 -2
  500. package/dist/components/navigation/Navbar/index.js +2 -2
  501. package/dist/components/navigation/NavigationMenu/index.js +2 -2
  502. package/dist/components/navigation/Pagination/index.js +7 -7
  503. package/dist/components/navigation/Sidebar/index.js +12 -12
  504. package/dist/components/navigation/SkipLinks/index.js +2 -2
  505. package/dist/components/navigation/SpeedDial/index.js +3 -3
  506. package/dist/components/navigation/TabNavigation/index.js +2 -2
  507. package/dist/components/navigation/TabPanel/index.js +2 -2
  508. package/dist/components/navigation/Tabs/index.js +2 -2
  509. package/dist/components/navigation/Toolbar/index.js +2 -2
  510. package/dist/components/navigation/Topbar/index.js +2 -2
  511. package/dist/components/navigation/index.js +33 -33
  512. package/dist/components/primitives/ArrowAnimated/index.js +2 -2
  513. package/dist/components/primitives/Avatar/index.js +3 -3
  514. package/dist/components/primitives/Badge/index.js +3 -3
  515. package/dist/components/primitives/Button/index.js +6 -6
  516. package/dist/components/primitives/ButtonGroup/index.js +3 -3
  517. package/dist/components/primitives/ConfirmButton/index.js +8 -8
  518. package/dist/components/primitives/Divider/index.js +2 -2
  519. package/dist/components/primitives/FeaturedIcon/index.js +2 -2
  520. package/dist/components/primitives/FolderStack/index.js +2 -2
  521. package/dist/components/primitives/Heading/index.js +2 -2
  522. package/dist/components/primitives/Icon/index.js +2 -2
  523. package/dist/components/primitives/Image/index.js +2 -2
  524. package/dist/components/primitives/Kbd/index.js +2 -2
  525. package/dist/components/primitives/Label/index.js +2 -2
  526. package/dist/components/primitives/Link/index.js +2 -2
  527. package/dist/components/primitives/Paragraph/index.js +2 -2
  528. package/dist/components/primitives/PaymentMethodIcon/index.js +2 -2
  529. package/dist/components/primitives/ProgressBar/index.js +3 -3
  530. package/dist/components/primitives/ProgressCircle/index.js +3 -3
  531. package/dist/components/primitives/SkeletonLoader/index.js +2 -2
  532. package/dist/components/primitives/Spacer/index.js +2 -2
  533. package/dist/components/primitives/Spinner/index.js +2 -2
  534. package/dist/components/primitives/SplitButton/index.js +3 -3
  535. package/dist/components/primitives/StatusIndicator/index.js +2 -2
  536. package/dist/components/primitives/Tag/index.js +2 -2
  537. package/dist/components/primitives/Text/index.js +2 -2
  538. package/dist/components/primitives/Thumbnail/index.js +3 -3
  539. package/dist/components/primitives/Toggle/index.js +2 -2
  540. package/dist/components/primitives/index.js +32 -32
  541. package/dist/components/workflow/ApprovalFlow/index.js +8 -8
  542. package/dist/components/workflow/ApprovalStatus/index.js +2 -2
  543. package/dist/components/workflow/CommentSystem/index.js +9 -9
  544. package/dist/components/workflow/Dashboard/index.js +7 -7
  545. package/dist/components/workflow/DashboardBuilder/index.js +10 -10
  546. package/dist/components/workflow/KanbanBoard/index.js +9 -9
  547. package/dist/components/workflow/ProgressSteps/index.js +2 -2
  548. package/dist/components/workflow/ReportGenerator/index.js +9 -9
  549. package/dist/components/workflow/Stepper/index.js +2 -2
  550. package/dist/components/workflow/TaskCard/index.js +2 -2
  551. package/dist/components/workflow/TaskList/index.js +2 -2
  552. package/dist/components/workflow/TaskStatus/index.js +3 -3
  553. package/dist/components/workflow/Wizard/index.js +8 -8
  554. package/dist/components/workflow/index.js +27 -27
  555. package/dist/index.d.ts +62 -14
  556. package/dist/index.js +186 -186
  557. package/dist/lib/utils.d.ts +2 -1
  558. package/dist/lib/utils.js +1 -1
  559. package/dist/styles.css +27 -703
  560. package/package.json +2 -2
  561. package/dist/chunk-3L5G7VI2.js.map +0 -1
  562. package/dist/chunk-46ESMCEQ.js.map +0 -1
  563. package/dist/chunk-4GVOOXYD.js.map +0 -1
  564. package/dist/chunk-4KOJTZVU.js.map +0 -1
  565. package/dist/chunk-4Y72SPNL.js.map +0 -1
  566. package/dist/chunk-5GE3BQA7.js.map +0 -1
  567. package/dist/chunk-66TBTTZO.js.map +0 -1
  568. package/dist/chunk-7TF5PVEU.js.map +0 -1
  569. package/dist/chunk-7Y2UQMX6.js.map +0 -1
  570. package/dist/chunk-DYDXGWH2.js.map +0 -1
  571. package/dist/chunk-HRNDJU7D.js +0 -11
  572. package/dist/chunk-HRNDJU7D.js.map +0 -1
  573. package/dist/chunk-IFHF4UES.js.map +0 -1
  574. package/dist/chunk-IRIIK3BU.js.map +0 -1
  575. package/dist/chunk-IZC5YFGO.js.map +0 -1
  576. package/dist/chunk-NXQ25PKF.js.map +0 -1
  577. package/dist/chunk-OXDWUKGP.js.map +0 -1
  578. package/dist/chunk-P27ERD6W.js.map +0 -1
  579. package/dist/chunk-P7D6S6GX.js.map +0 -1
  580. package/dist/chunk-TNDW52VZ.js.map +0 -1
  581. package/dist/chunk-U6EOAIPK.js.map +0 -1
  582. package/dist/chunk-UPK5B2FL.js.map +0 -1
  583. package/dist/chunk-VAVE4ZJF.js.map +0 -1
  584. package/dist/chunk-VT4IMHGE.js.map +0 -1
  585. package/dist/chunk-W3JVNX35.js.map +0 -1
  586. package/dist/chunk-WKWLKGNI.js.map +0 -1
  587. package/dist/chunk-XLTSCY22.js.map +0 -1
  588. package/dist/chunk-XOGMDABS.js.map +0 -1
  589. package/dist/chunk-Y4RKKQMB.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etus/ui",
3
- "version": "0.4.0-beta.17",
3
+ "version": "0.4.0-beta.19",
4
4
  "description": "Seven Design System - UI components for ETUS applications",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -113,7 +113,7 @@
113
113
  "sonner": "^2.0.7",
114
114
  "tailwind-merge": "^3.6.0",
115
115
  "vaul": "^1.1.2",
116
- "@etus/tokens": "^0.4.0-beta.13"
116
+ "@etus/tokens": "^0.4.0-beta.14"
117
117
  },
118
118
  "devDependencies": {
119
119
  "@storybook/react-vite": "^10.4.6",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Divider/Divider.variants.ts","../src/components/primitives/Divider/Divider.tsx"],"names":[],"mappings":"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","file":"chunk-3L5G7VI2.js","sourcesContent":["// Divider/Divider.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CVA variants for the divider line\n */\nexport const dividerLineVariants = cva(\"shrink-0\", {\n variants: {\n orientation: {\n horizontal: \"h-[var(--divider-thickness)] w-full\",\n vertical: \"h-full w-[var(--divider-thickness)]\",\n },\n visualStyle: {\n \"single-line\": \"\",\n \"dual-line\": \"shadow-[0_2px_0_0_var(--divider-color-dual)]\",\n \"background-fill\": \"\",\n },\n lineType: {\n solid: \"bg-[color:var(--divider-color-default)]\",\n dashed:\n \"bg-transparent border-0 border-dashed border-[color:var(--divider-color-default)]\",\n dotted:\n \"bg-transparent border-0 border-dotted border-[color:var(--divider-color-default)]\",\n },\n },\n compoundVariants: [\n // Dashed/dotted horizontal needs border-t\n {\n orientation: \"horizontal\",\n lineType: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"horizontal\",\n lineType: \"dotted\",\n className: \"border-t h-0\",\n },\n // Dashed/dotted vertical needs border-l\n {\n orientation: \"vertical\",\n lineType: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"vertical\",\n lineType: \"dotted\",\n className: \"border-l w-0\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n visualStyle: \"single-line\",\n lineType: \"solid\",\n },\n})\n\n/**\n * CVA variants for the content container\n */\nexport const dividerContentVariants = cva(\n \"flex items-center text-sm text-[color:var(--divider-content-text-default)]\",\n {\n variants: {\n type: {\n line: \"\",\n heading: \"text-base font-semibold text-[color:var(--divider-content-text-heading)]\",\n text: \"text-sm text-[color:var(--divider-content-text-default)]\",\n button: \"\",\n \"button-icon\": \"\",\n \"button-group\": \"gap-2\",\n \"button-group-icon\": \"gap-1\",\n },\n visualStyle: {\n \"single-line\": \"px-3\",\n \"dual-line\": \"px-3\",\n \"background-fill\": \"rounded-md bg-[color:var(--divider-content-bg-fill)] px-3 py-1.5\",\n },\n },\n defaultVariants: {\n type: \"text\",\n visualStyle: \"single-line\",\n },\n }\n)\n\n/**\n * CVA variants for the wrapper\n */\nexport const dividerWrapperVariants = cva(\"flex items-center\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full flex-col\",\n },\n labelPosition: {\n left: \"\",\n center: \"\",\n right: \"\",\n },\n },\n compoundVariants: [\n // Horizontal label positions\n {\n orientation: \"horizontal\",\n labelPosition: \"left\",\n className: \"justify-start\",\n },\n {\n orientation: \"horizontal\",\n labelPosition: \"center\",\n className: \"justify-center\",\n },\n {\n orientation: \"horizontal\",\n labelPosition: \"right\",\n className: \"justify-end\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n labelPosition: \"center\",\n },\n})\n\nexport type DividerLineVariantProps = VariantProps<typeof dividerLineVariants>\nexport type DividerContentVariantProps = VariantProps<typeof dividerContentVariants>\nexport type DividerWrapperVariantProps = VariantProps<typeof dividerWrapperVariants>\n","\"use client\"\n\nimport type { DividerProps } from \"./Divider.types\"\n\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n dividerContentVariants,\n dividerLineVariants,\n dividerWrapperVariants,\n} from \"./Divider.variants\"\n\n/**\n * Divider - A visual separator with optional content\n *\n * Based on Figma Content Divider design. Supports multiple types and styles:\n * - Types: line, heading, text, button, button-icon, button-group, button-group-icon\n * - Styles: single-line, dual-line, background-fill\n * - Label positions: left, center, right\n *\n * @example\n * ```tsx\n * // Simple line divider (backwards compatible)\n * <Divider />\n *\n * // Content divider with text\n * <Divider type=\"text\">or</Divider>\n *\n * // Heading divider\n * <Divider type=\"heading\" visualStyle=\"dual-line\">Section Title</Divider>\n *\n * // Button group divider\n * <Divider type=\"button-group\" visualStyle=\"background-fill\">\n * <Button variant=\"ghost\" size=\"sm\">Option 1</Button>\n * <Button variant=\"ghost\" size=\"sm\">Option 2</Button>\n * </Divider>\n * ```\n */\nfunction Divider({\n className,\n orientation = \"horizontal\",\n decorative = true,\n type = \"line\",\n visualStyle = \"single-line\",\n lineType = \"solid\",\n labelPosition = \"center\",\n children,\n ...props\n}: DividerProps) {\n // Simple line divider (no children) - backwards compatible\n if (!children || type === \"line\") {\n return (\n <SeparatorPrimitive.Root\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n className\n )}\n data-line-type={lineType}\n data-slot=\"divider\"\n decorative={decorative}\n orientation={orientation}\n {...props}\n />\n )\n }\n\n // Content divider with children\n // Determine line flex based on label position\n const getLineFlexClasses = (position: \"after\" | \"before\") => {\n if (labelPosition === \"left\") {\n return position === \"before\" ? \"shrink-0 basis-8\" : \"grow\"\n }\n if (labelPosition === \"right\") {\n return position === \"before\" ? \"grow\" : \"shrink-0 basis-8\"\n }\n return \"grow\" // center - both grow equally\n }\n\n return (\n <div\n className={cn(\n dividerWrapperVariants({ orientation, labelPosition }),\n className\n )}\n aria-orientation={orientation}\n data-line-type={lineType}\n data-slot=\"divider\"\n data-type={type}\n data-visual-style={visualStyle}\n role={decorative ? \"none\" : \"separator\"}\n {...props}\n >\n {/* Line before content */}\n <SeparatorPrimitive.Root\n decorative\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n getLineFlexClasses(\"before\")\n )}\n data-slot=\"divider-line\"\n orientation={orientation}\n />\n\n {/* Content */}\n <div\n className={cn(dividerContentVariants({ type, visualStyle }))}\n data-slot=\"divider-content\"\n >\n {children}\n </div>\n\n {/* Line after content */}\n <SeparatorPrimitive.Root\n decorative\n className={cn(\n dividerLineVariants({ orientation, visualStyle, lineType }),\n getLineFlexClasses(\"after\")\n )}\n data-slot=\"divider-line\"\n orientation={orientation}\n />\n </div>\n )\n}\n\nexport { Divider, dividerContentVariants, dividerLineVariants, dividerWrapperVariants }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/UpdatesWidget/UpdatesWidget.tsx"],"names":[],"mappings":"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","file":"chunk-46ESMCEQ.js","sourcesContent":["\"use client\"\n\nimport type { UpdatesWidgetProps } from \"./UpdatesWidget.types\"\n\nimport { Inbox, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst toneClass: Record<string, string> = {\n success: \"bg-[color:var(--primary-subtle)] text-[color:var(--primary-subtle-foreground)]\",\n info: \"bg-[color:var(--info-subtle)] text-[color:var(--info)]\",\n warning: \"bg-[color:var(--warning-subtle)] text-[color:var(--warning-subtle-foreground)]\",\n destructive: \"bg-[color:var(--destructive-subtle)] text-[color:var(--destructive-subtle-foreground)]\",\n}\n\nfunction UpdatesWidget({\n className,\n items,\n emptyState,\n menu,\n title,\n ...props\n}: UpdatesWidgetProps) {\n const hasItems = items.length > 0\n\n return (\n <div\n className={cn(\n \"w-[313px] flex flex-col gap-3 p-4 bg-card border border-border rounded-[var(--radius-md)] shadow-sm\",\n className\n )}\n data-slot=\"updates-widget\"\n {...props}\n >\n {(title !== undefined || menu !== undefined) && (\n <header className=\"flex items-center justify-between gap-2\">\n <div className=\"text-sm font-medium text-foreground\">{title ?? \"Updates\"}</div>\n {menu === undefined ? (\n <button\n aria-label=\"More options\"\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n data-slot=\"updates-widget-menu\"\n type=\"button\"\n >\n <MoreHorizontal aria-hidden=\"true\" className=\"size-4\" />\n </button>\n ) : (\n menu\n )}\n </header>\n )}\n {hasItems ? (\n <ul className=\"flex flex-col gap-3 list-none m-0 p-0\" data-slot=\"updates-widget-list\">\n {items.map((item) => (\n <li key={item.id} className=\"flex items-start gap-3\" data-slot=\"updates-widget-item\">\n <span\n className={cn(\n \"inline-grid place-items-center size-6 rounded-full shrink-0 [&_svg]:size-3.5\",\n toneClass[item.tone] ?? toneClass[\"info\"]\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs leading-4 text-foreground\">{item.text}</div>\n {item.when && (\n <div className=\"text-[10px] leading-3 text-muted-foreground mt-0.5\">\n {item.when}\n </div>\n )}\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <div\n className=\"flex flex-col items-center justify-center gap-2 py-6 text-center\"\n data-slot=\"updates-widget-empty\"\n >\n {emptyState ?? (\n <>\n <span className=\"inline-grid place-items-center size-9 rounded-full bg-muted text-muted-foreground\">\n <Inbox aria-hidden=\"true\" className=\"size-5\" />\n </span>\n <div>\n <div className=\"text-xs font-medium text-foreground\">Sem updates</div>\n <div className=\"text-[10px] text-muted-foreground\">Você está em dia</div>\n </div>\n </>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { UpdatesWidget }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Badge/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-4GVOOXYD.js","sourcesContent":["import type { BadgeAvatarProps, BadgeColor, BadgeProps } from \"./Badge.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\n\n/* eslint-disable sonarjs/no-duplicate-string -- Badge variants require repeated color class patterns */\n\n// Legacy variant mapping for backwards compatibility\nconst legacyVariantMap: Record<string, { color: string; type: string; }> = {\n default: { type: \"pill-color\", color: \"primary\" },\n secondary: { type: \"pill-color\", color: \"muted\" },\n destructive: { type: \"pill-color\", color: \"destructive\" },\n outline: { type: \"pill-outline\", color: \"muted\" },\n}\n\n// Dot color mapping\nconst dotColorMap: Record<string, string> = {\n primary: \"bg-primary-foreground\",\n secondary: \"bg-secondary-foreground\",\n destructive: \"bg-white\",\n warning: \"bg-warning-foreground\",\n success: \"bg-success-foreground\",\n info: \"bg-white\",\n tip: \"bg-white\",\n muted: \"bg-muted-foreground\",\n}\n\n// Dismiss button color mapping\nconst dismissColorMap: Record<string, string> = {\n primary: \"text-primary-foreground hover:bg-primary-foreground/20\",\n secondary: \"text-secondary-foreground hover:bg-secondary-foreground/20\",\n destructive: \"text-white hover:bg-white/20\",\n warning: \"text-warning-foreground hover:bg-warning-foreground/20\",\n success: \"text-success-foreground hover:bg-success-foreground/20\",\n info: \"text-white hover:bg-white/20\",\n tip: \"text-white hover:bg-white/20\",\n muted: \"text-muted-foreground hover:bg-muted-foreground/20\",\n}\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center font-medium w-fit whitespace-nowrap shrink-0 gap-1.5 transition-[color,background-color,box-shadow,filter] overflow-hidden border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[disabled=true]:opacity-50 data-[disabled=true]:pointer-events-none\",\n {\n variants: {\n type: {\n \"pill-color\": \"rounded-[var(--badge-radius-pill)] border-transparent\",\n \"pill-outline\": \"rounded-[var(--badge-radius-pill)] bg-transparent\",\n \"badge-color\": \"rounded-[var(--badge-radius-default)] border-transparent\",\n \"badge-outline\": \"rounded-[var(--badge-radius-default)] bg-transparent\",\n \"badge-modern\": \"rounded-[var(--badge-radius-default)] border-transparent border-l-[3px] pr-2.5 pl-2 shadow-xs\",\n },\n color: {\n primary: \"\",\n secondary: \"\",\n destructive: \"\",\n warning: \"\",\n success: \"\",\n info: \"\",\n tip: \"\",\n muted: \"\",\n },\n size: {\n sm: \"h-[var(--badge-size-sm-h)] px-[var(--badge-size-sm-px)] text-[length:var(--badge-size-sm-text)] [&_svg]:size-3\",\n default: \"h-[var(--badge-size-md-h)] px-[var(--badge-size-md-px)] text-[length:var(--badge-size-md-text)] [&_svg]:size-3.5\",\n lg: \"h-[var(--badge-size-lg-h)] px-[var(--badge-size-lg-px)] text-[length:var(--badge-size-lg-text)] [&_svg]:size-4\",\n },\n },\n compoundVariants: [\n // ========================================\n // PILL-COLOR VARIANTS\n // ========================================\n { type: \"pill-color\", color: \"primary\", className: \"bg-[color:var(--badge-color-primary-bg)] text-[color:var(--badge-color-primary-fg)]\" },\n { type: \"pill-color\", color: \"secondary\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n { type: \"pill-color\", color: \"destructive\", className: \"bg-[color:var(--badge-color-destructive-bg)] text-[color:var(--badge-color-destructive-fg)]\" },\n { type: \"pill-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"pill-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"pill-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"pill-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"pill-color\", color: \"muted\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n\n // ========================================\n // PILL-OUTLINE VARIANTS\n // ========================================\n { type: \"pill-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"pill-outline\", color: \"secondary\", className: \"border-secondary text-secondary\" },\n { type: \"pill-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"pill-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"pill-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"pill-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"pill-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"pill-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n\n // ========================================\n // BADGE-COLOR VARIANTS\n // ========================================\n { type: \"badge-color\", color: \"primary\", className: \"bg-primary text-primary-foreground\" },\n { type: \"badge-color\", color: \"secondary\", className: \"bg-[color:var(--badge-color-secondary-bg)] text-[color:var(--badge-color-secondary-fg)]\" },\n { type: \"badge-color\", color: \"destructive\", className: \"bg-destructive text-white\" },\n { type: \"badge-color\", color: \"warning\", className: \"bg-[color:var(--badge-color-warning-bg)] text-[color:var(--badge-color-warning-fg)]\" },\n { type: \"badge-color\", color: \"success\", className: \"bg-[color:var(--badge-color-success-bg)] text-[color:var(--badge-color-success-fg)]\" },\n { type: \"badge-color\", color: \"info\", className: \"bg-info text-info-foreground\" },\n { type: \"badge-color\", color: \"tip\", className: \"bg-tip text-white\" },\n { type: \"badge-color\", color: \"muted\", className: \"bg-muted text-muted-foreground\" },\n\n // ========================================\n // BADGE-OUTLINE VARIANTS\n // ========================================\n { type: \"badge-outline\", color: \"primary\", className: \"border-primary text-primary\" },\n { type: \"badge-outline\", color: \"secondary\", className: \"border-secondary text-secondary\" },\n { type: \"badge-outline\", color: \"destructive\", className: \"border-destructive text-destructive\" },\n { type: \"badge-outline\", color: \"warning\", className: \"border-warning text-warning\" },\n { type: \"badge-outline\", color: \"success\", className: \"border-success text-success\" },\n { type: \"badge-outline\", color: \"info\", className: \"border-info text-info\" },\n { type: \"badge-outline\", color: \"tip\", className: \"border-tip text-tip\" },\n { type: \"badge-outline\", color: \"muted\", className: \"border-border text-muted-foreground\" },\n\n // ========================================\n // BADGE-MODERN VARIANTS (with left accent)\n // ========================================\n { type: \"badge-modern\", color: \"primary\", className: \"bg-primary/10 text-primary border-l-primary\" },\n { type: \"badge-modern\", color: \"secondary\", className: \"bg-secondary/10 text-secondary border-l-secondary\" },\n { type: \"badge-modern\", color: \"destructive\", className: \"bg-destructive/10 text-destructive border-l-destructive\" },\n { type: \"badge-modern\", color: \"warning\", className: \"bg-warning/10 text-warning border-l-warning\" },\n { type: \"badge-modern\", color: \"success\", className: \"bg-success/10 text-success border-l-success\" },\n { type: \"badge-modern\", color: \"info\", className: \"bg-info/10 text-info border-l-info\" },\n { type: \"badge-modern\", color: \"tip\", className: \"bg-tip/10 text-tip border-l-tip\" },\n { type: \"badge-modern\", color: \"muted\", className: \"bg-muted text-muted-foreground border-l-muted-foreground\" },\n ],\n defaultVariants: {\n type: \"pill-color\",\n color: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Internal dot component\nfunction BadgeDot({ color }: { color: BadgeColor }) {\n return (\n <span\n className={cn(\"size-1.5 rounded-full shrink-0\", dotColorMap[color] ?? dotColorMap[\"primary\"])}\n data-slot=\"badge-dot\"\n />\n )\n}\n\n// Internal dismiss button component\nfunction BadgeDismiss({ onClick, color, type, dismissLabel = \"Dismiss\" }: { color: BadgeColor; dismissLabel?: string; onClick: () => void; type: string; }) {\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n onClick()\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onClick()\n }\n }\n\n // Adapt shape based on badge type: rounded for pills, square for badges\n const isPill = type === \"pill-color\" || type === \"pill-outline\"\n const shapeClass = isPill ? \"rounded-full\" : \"rounded-sm\"\n\n return (\n <button\n className={cn(\n \"size-4 -mr-1 inline-flex items-center justify-center shrink-0 transition-colors cursor-pointer\",\n shapeClass,\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n dismissColorMap[color] ?? dismissColorMap[\"primary\"]\n )}\n aria-label={dismissLabel}\n data-slot=\"badge-dismiss\"\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <X className=\"size-3\" />\n </button>\n )\n}\n\n// Internal avatar component for badge\nfunction BadgeAvatar({ src, fallback, alt }: BadgeAvatarProps) {\n const [imageError, setImageError] = React.useState(false)\n\n // Get initials from fallback text\n const initials = fallback\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n\n return (\n <span\n className=\"size-4 -ml-1 rounded-full shrink-0 inline-flex items-center justify-center overflow-hidden bg-muted text-xs font-medium\"\n data-slot=\"badge-avatar\"\n >\n {src && !imageError ? (\n <img\n alt={alt ?? fallback}\n className=\"size-full object-cover\"\n src={src}\n onError={() => { setImageError(true); }}\n />\n ) : (\n <span aria-label={alt ?? fallback}>{initials}</span>\n )}\n </span>\n )\n}\n\n// Internal country flag component\nfunction BadgeCountry({ code }: { code: string }) {\n // Convert country code to flag emoji using regional indicator symbols\n const countryToFlag = (countryCode: string) => {\n // eslint-disable-next-line unicorn/prefer-spread -- Array.from handles Unicode correctly for country codes\n const codePoints = Array.from(countryCode.toUpperCase()).map(\n (char) => 127397 + char.charCodeAt(0)\n )\n return String.fromCodePoint(...codePoints)\n }\n\n return (\n <span\n aria-label={`Flag of ${code}`}\n className=\"text-base -ml-0.5 shrink-0 leading-none\"\n data-slot=\"badge-country\"\n role=\"img\"\n >\n {countryToFlag(code)}\n </span>\n )\n}\n\nfunction Badge({\n className,\n type,\n color,\n size,\n disabled,\n dot,\n icon,\n leadingIcon,\n trailingIcon,\n country,\n avatar,\n iconOnly,\n onDismiss,\n dismissLabel,\n interactive,\n tooltip,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- Intentionally supporting legacy variant for backwards compatibility\n variant,\n asChild = false,\n children,\n onClick,\n ...props\n}: BadgeProps) {\n // Resolve legacy variant to new props (new props take precedence)\n const legacyMapping = variant ? legacyVariantMap[variant] : null\n const resolvedType = (type ?? legacyMapping?.type ?? \"pill-color\") as VariantProps<typeof badgeVariants>[\"type\"]\n const resolvedColor = (color ?? legacyMapping?.color ?? \"primary\") as BadgeColor\n\n // Icon-only badges are square with no horizontal padding\n const iconOnlyClass = iconOnly\n ? \"px-0 aspect-square\"\n : \"\"\n\n const badgeClassName = cn(\n badgeVariants({ type: resolvedType, color: resolvedColor, size }),\n iconOnlyClass,\n Boolean(interactive ?? onClick) && \"cursor-pointer hover:brightness-90\",\n className\n )\n\n // Disabled is a real state (not just a Figma style): toggle data-disabled + aria-disabled\n const stateAttrs = {\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? true : undefined,\n }\n\n // When asChild is true, use Slot which requires exactly one child\n // dot and onDismiss features are not supported with asChild\n if (asChild) {\n return (\n <Slot className={badgeClassName} data-slot=\"badge\" {...stateAttrs} {...props}>\n {children}\n </Slot>\n )\n }\n\n // Resolve leading content\n const resolvedLeadingIcon = leadingIcon ?? icon\n\n // Render leading content (avatar, country, dot, or leading icon)\n const renderLeading = () => {\n if (avatar) return <BadgeAvatar {...avatar} />\n if (country) return <BadgeCountry code={country} />\n if (dot) return <BadgeDot color={resolvedColor} />\n if (resolvedLeadingIcon) return <span className=\"shrink-0\" data-slot=\"badge-leading-icon\">{resolvedLeadingIcon}</span>\n return null\n }\n\n // Render trailing content (trailing icon or dismiss)\n const renderTrailing = () => {\n if (onDismiss) return <BadgeDismiss color={resolvedColor} dismissLabel={dismissLabel} type={resolvedType ?? \"pill-color\"} onClick={onDismiss} />\n if (trailingIcon) return <span className=\"shrink-0\" data-slot=\"badge-trailing-icon\">{trailingIcon}</span>\n return null\n }\n\n // Helper to wrap element with tooltip if tooltip prop is provided\n const wrapWithTooltip = (element: React.ReactElement) => {\n if (!tooltip) return element\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {element}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n // Icon-only variant: render only the icon, no children or other elements\n if (iconOnly) {\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n <span className=\"shrink-0\" data-slot=\"badge-icon-only\">{iconOnly}</span>\n </span>\n )\n }\n\n return wrapWithTooltip(\n <span\n className={badgeClassName}\n data-slot=\"badge\"\n onClick={onClick}\n {...stateAttrs}\n {...props}\n >\n {renderLeading()}\n {children}\n {renderTrailing()}\n </span>\n )\n}\n\n/* eslint-enable sonarjs/no-duplicate-string */\n\nexport { Badge, badgeVariants }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/advanced/ReportBuilder/ReportBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-4KOJTZVU.js","sourcesContent":["\"use client\"\n\n// ReportBuilder — a faithful copy of Google Ad Manager's report builder bar:\n// a dimensions+metrics chip strip with an inline typeahead field, a sentence-\n// chip filter row (\"Source (src) is any of a, b\") with an inline \"Add filter\"\n// field, and the \"All dimensions and metrics\" View-all dialog (draft + Apply).\n//\n// Interaction contract (observed on the live GAM builder, 2026-06-09):\n// • Chips are inert — only their delete × reacts. The ONLY dropdown opener is\n// the inline text field; typing filters; checkboxes toggle without closing.\n// • \"Add filter\" is an inline field too: focusing lists the filter fields,\n// typing filters them, picking one opens that field's editor popup\n// (title + ✕, operator, value chips + type-to-search, blue Apply).\n// • \"View all\" opens a near-fullscreen dialog where selections are a DRAFT —\n// only Apply commits, Cancel discards.\n//\n// Visuals measured from the live GAM DOM: chips 24px + 1px #dadce0 border at\n// 12px radius, labels 13px/500 #5f6368, field glyphs 16px (#4285f4 dimension,\n// #34a853 \"123\" metric), popups 8px radius with Material's two-layer shadow,\n// internal dividers #e0e0e0, placeholders #757575, blue accents #1a73e8 /\n// #1967d2 / #e8f0fe.\n\nimport type {\n ReportBuilderField,\n ReportBuilderFieldKind,\n ReportBuilderFilter,\n ReportBuilderFilterField,\n ReportBuilderProps,\n} from \"./ReportBuilder.types\"\n\nimport { Filter, Search, Shapes, Table, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Dialog, DialogContent, DialogTitle } from \"../../feedback/Dialog\"\nimport { Popover, PopoverAnchor, PopoverContent } from \"../../feedback/Popover\"\nimport { Checkbox } from \"../../forms/Checkbox\"\nimport { NumberInput } from \"../../forms/NumberInput\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../forms/Select\"\n\nconst NUMBER_OPS = [\n { v: \">=\", l: \"≥\" },\n { v: \"<=\", l: \"≤\" },\n { v: \">\", l: \">\" },\n { v: \"<\", l: \"<\" },\n { v: \"=\", l: \"=\" },\n { v: \"between\", l: \"between\" },\n] as const\n\n/** GAM's blue Material checkbox — 18px, 2px #757575 border, checked #1a73e8. */\nconst GAM_CHECKBOX =\n \"size-[18px] rounded-xs border-2 border-[color:var(--report-builder-fg-subtle)] data-[state=checked]:border-[color:var(--report-builder-accent)] data-[state=checked]:bg-[color:var(--report-builder-accent)] data-[state=checked]:text-[color:var(--report-builder-on-accent)]\"\n\n/** GAM popup container — 8px radius, no border, Material two-layer shadow. */\nconst GAM_POPUP =\n \"rounded-lg border-0 p-0 [--report-builder-popup-shadow:0_1px_2px_0_var(--report-builder-shadow),0_2px_6px_2px_var(--report-builder-shadow-subtle)] shadow-[var(--report-builder-popup-shadow)]\"\n\nconst numFmt = (n: null | number | undefined) =>\n n == null ? \"\" : n.toLocaleString(\"en-US\")\n\n/** \"a, b, c\" up to 3 values, then \"+N\". */\nfunction listFmt(vals: string[]): string {\n const head = vals.slice(0, 3).join(\", \")\n return vals.length > 3 ? `${head} +${String(vals.length - 3)}` : head\n}\n\n/** Editor prefill for a filter field, from an existing filter if any. */\nfunction editorStateFor(existing?: ReportBuilderFilter) {\n return {\n a: existing?.a != null ? String(existing.a) : \"\",\n b: existing?.b != null ? String(existing.b) : \"\",\n op:\n existing && existing.op !== \"anyOf\" && existing.op !== \"contains\"\n ? existing.op\n : \">=\",\n text: existing?.text ?? \"\",\n vals: existing?.values ?? [],\n }\n}\n\n/** GAM shows custom keys as \"Label (key)\"; natives (label == key) plain. */\nfunction fieldLabel(label: string, key: string): string {\n return label.toLowerCase() === key.toLowerCase() ? label : `${label} (${key})`\n}\n\n/** Material \"123\" metric glyph, rendered as bold text like GAM's icon. */\nfunction MetricGlyph() {\n return (\n <span className=\"flex h-4 w-[22px] items-center justify-center text-[12px] font-bold leading-none tracking-tighter text-[color:var(--report-builder-positive)]\">\n 123\n </span>\n )\n}\n\n/** Material \"category\" dimension glyph — 16px, #4285f4. Lucide Shapes ≈ category. */\nfunction DimGlyph() {\n return <Shapes className=\"shrink-0 text-[color:var(--report-builder-accent-bright)]\" size={16} />\n}\n\nfunction KindGlyph({ kind }: { kind: ReportBuilderFieldKind }) {\n return kind === \"metric\" ? <MetricGlyph /> : <DimGlyph />\n}\n\n/** material-chip, measured: 24px tall (+1px border), 12px radius, #dadce0\n * outline, white bg, 12px left pad, 13px/500 #5f6368 label, 32×24 delete\n * button. `active` = GAM's blue editing highlight. */\nfunction GamChip({\n icon,\n children,\n active,\n onClick,\n onRemove,\n}: {\n active?: boolean\n children: React.ReactNode\n icon?: React.ReactNode\n onClick?: () => void\n onRemove?: () => void\n}) {\n return (\n <span\n className={cn(\n \"inline-flex h-[26px] items-center rounded-xl border pl-3 text-[13px] font-medium\",\n active\n ? \"border-[color:var(--report-builder-accent-border)] bg-[color:var(--report-builder-accent-bg)] text-[color:var(--report-builder-accent-hover)]\"\n : \"border-[color:var(--report-builder-border)] bg-[color:var(--report-builder-surface)] text-[color:var(--report-builder-fg-muted)]\",\n !onRemove && \"pr-3\",\n onClick && \"cursor-pointer\",\n onClick && !active && \"hover:bg-[color:var(--report-builder-surface-subtle)]\"\n )}\n onClick={onClick}\n >\n {icon && <span className=\"mr-2 flex items-center\">{icon}</span>}\n <span className=\"whitespace-nowrap\">{children}</span>\n {onRemove && (\n <button\n className={cn(\n \"flex h-6 w-8 items-center justify-center\",\n active ? \"text-[color:var(--report-builder-accent-hover)]\" : \"text-[color:var(--report-builder-fg-muted)] hover:text-[color:var(--report-builder-fg-secondary)]\"\n )}\n aria-label=\"Remove\"\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n >\n <X size={18} />\n </button>\n )}\n </span>\n )\n}\n\n// ---------------------------------------------------------------------------\n// \"All dimensions and metrics\" dialog (GAM's View-all modal)\n// ---------------------------------------------------------------------------\n\nfunction AllFieldsDialog({\n onOpenChange,\n fields,\n dimensions,\n metrics,\n onSelectionChange,\n}: {\n dimensions: string[]\n fields: ReportBuilderField[]\n metrics: string[]\n onOpenChange: (o: boolean) => void\n onSelectionChange: ReportBuilderProps[\"onSelectionChange\"]\n}) {\n // The dialog is mounted fresh on every open (see FieldsBar), so the draft\n // is simply seeded from props at mount time — no re-seeding effect needed.\n const [draftDims, setDraftDims] = React.useState<string[]>(dimensions)\n const [draftMets, setDraftMets] = React.useState<string[]>(metrics)\n const [display, setDisplay] = React.useState<\"all\" | \"dimensions\" | \"metrics\">(\"all\")\n const [category, setCategory] = React.useState<\"dimensions\" | \"metrics\" | \"popular\">(\n \"popular\"\n )\n const [search, setSearch] = React.useState(\"\")\n const [hovered, setHovered] = React.useState<null | string>(null)\n\n function toggleDraft(kind: ReportBuilderFieldKind, key: string) {\n const [cur, set] =\n kind === \"dimension\"\n ? ([draftDims, setDraftDims] as const)\n : ([draftMets, setDraftMets] as const)\n set(cur.includes(key) ? cur.filter((k) => k !== key) : [...cur, key])\n }\n\n function apply() {\n onSelectionChange(\"dimensions\", draftDims)\n onSelectionChange(\"metrics\", draftMets)\n onOpenChange(false)\n }\n\n const match = (l: string) => l.toLowerCase().includes(search.trim().toLowerCase())\n const items = fields.filter((f) => {\n if (!match(f.label)) return false\n if (display === \"dimensions\" && f.kind !== \"dimension\") return false\n if (display === \"metrics\" && f.kind !== \"metric\") return false\n if (category === \"dimensions\" && f.kind !== \"dimension\") return false\n if (category === \"metrics\" && f.kind !== \"metric\") return false\n return true\n })\n const selected = [\n ...draftDims.map((k) => fields.find((f) => f.kind === \"dimension\" && f.key === k)),\n ...draftMets.map((k) => fields.find((f) => f.kind === \"metric\" && f.key === k)),\n ].filter((f): f is ReportBuilderField => !!f)\n\n const CATS = [\n { k: \"popular\", l: \"Popular\" },\n { k: \"dimensions\", l: \"Dimensions\" },\n { k: \"metrics\", l: \"Metrics\" },\n ] as const\n const DISPLAYS = [\n { k: \"all\", l: \"All\" },\n { k: \"dimensions\", l: \"Dimensions\" },\n { k: \"metrics\", l: \"Metrics\" },\n ] as const\n\n return (\n <Dialog open onOpenChange={onOpenChange}>\n <DialogContent\n className=\"left-0 top-0 flex h-screen max-h-screen w-[min(1500px,96vw)] max-w-none translate-x-0 translate-y-0 flex-col gap-0 rounded-none border-0 bg-[color:var(--report-builder-surface)] p-0 text-[color:var(--report-builder-fg)]\"\n showCloseButton={false}\n >\n {/* header: ✕ + title + Display toggles */}\n <div className=\"flex shrink-0 items-center gap-4 px-4 py-3\">\n <button\n aria-label=\"Close\"\n className=\"rounded-full p-1.5 text-[color:var(--report-builder-fg-muted)] hover:bg-[color:var(--report-builder-surface-hover)]\"\n type=\"button\"\n onClick={() => {\n onOpenChange(false)\n }}\n >\n <X size={20} />\n </button>\n <DialogTitle className=\"text-xl font-normal text-[color:var(--report-builder-fg)]\">\n All dimensions and metrics\n </DialogTitle>\n <div className=\"flex-1\" />\n <span className=\"text-sm text-[color:var(--report-builder-fg-muted)]\">Display</span>\n <div className=\"flex gap-2\">\n {DISPLAYS.map((d) => (\n <button\n key={d.k}\n className={cn(\n \"h-8 rounded px-3 text-sm font-medium\",\n display === d.k\n ? \"bg-[color:var(--report-builder-accent-bg)] text-[color:var(--report-builder-accent-hover)]\"\n : \"border border-[color:var(--report-builder-border)] text-[color:var(--report-builder-fg-secondary)] hover:bg-[color:var(--report-builder-surface-subtle)]\"\n )}\n type=\"button\"\n onClick={() => {\n setDisplay(d.k)\n }}\n >\n {display === d.k ? \"✓ \" : \"\"}\n {d.l}\n </button>\n ))}\n </div>\n </div>\n {/* search */}\n <div className=\"flex shrink-0 items-center gap-3 border-y border-[color:var(--report-builder-border-strong)] px-4 py-2.5\">\n <Search className=\"text-[color:var(--report-builder-fg-muted)]\" size={18} />\n <input\n autoFocus\n className=\"w-full bg-transparent text-sm text-[color:var(--report-builder-fg)] outline-none placeholder:text-[color:var(--report-builder-fg-subtle)]\"\n placeholder=\"Search\"\n value={search}\n onChange={(e) => {\n setSearch(e.target.value)\n }}\n />\n </div>\n {/* body: categories | list | selected | description */}\n <div className=\"flex min-h-0 flex-1\">\n <div className=\"w-56 shrink-0 overflow-auto border-r border-[color:var(--report-builder-border-strong)] py-1\">\n {CATS.map((c) => (\n <button\n key={c.k}\n className={cn(\n \"flex h-9 w-full items-center px-4 text-left text-sm\",\n category === c.k\n ? \"bg-[color:var(--report-builder-surface-hover)] text-[color:var(--report-builder-fg)]\"\n : \"text-[color:var(--report-builder-fg-secondary)] hover:bg-[color:var(--report-builder-surface-subtle)]\"\n )}\n type=\"button\"\n onClick={() => {\n setCategory(c.k)\n }}\n >\n {c.l}\n </button>\n ))}\n </div>\n <div className=\"min-w-0 flex-[1.4] overflow-auto py-1\">\n {items.map((f) => {\n const sel =\n f.kind === \"dimension\"\n ? draftDims.includes(f.key)\n : draftMets.includes(f.key)\n return (\n <label\n key={`${f.kind}:${f.key}`}\n className=\"flex h-9 cursor-pointer items-center gap-3 px-4 text-[15px] text-[color:var(--report-builder-fg-strong)] hover:bg-[color:var(--report-builder-surface-muted)]\"\n onMouseEnter={() => {\n setHovered(`${f.kind}:${f.key}`)\n }}\n onMouseLeave={() => {\n setHovered(null)\n }}\n // Mirror hover on keyboard focus so the description pane is\n // reachable without a mouse (WCAG 2.1 AA). Focus bubbles from\n // the inner checkbox to this label.\n onFocus={() => {\n setHovered(`${f.kind}:${f.key}`)\n }}\n onBlur={() => {\n setHovered(null)\n }}\n >\n <Checkbox\n checked={sel}\n className={GAM_CHECKBOX}\n onCheckedChange={() => {\n toggleDraft(f.kind, f.key)\n }}\n />\n <span className=\"flex items-center gap-2\">\n <KindGlyph kind={f.kind} />\n {f.label}\n </span>\n </label>\n )\n })}\n {items.length === 0 && (\n <div className=\"px-4 py-3 text-sm text-[color:var(--report-builder-fg-subtle)]\">No matches</div>\n )}\n </div>\n <div className=\"w-96 shrink-0 overflow-auto border-l border-[color:var(--report-builder-border-strong)]\">\n <div className=\"flex items-center justify-between px-4 py-3\">\n <span className=\"text-sm font-medium text-[color:var(--report-builder-fg)]\">\n {selected.length} Selected\n </span>\n <button\n className=\"text-sm font-medium text-[color:var(--report-builder-accent-hover)] hover:underline\"\n type=\"button\"\n onClick={() => {\n setDraftDims([])\n setDraftMets([])\n }}\n >\n Clear all\n </button>\n </div>\n {selected.map((f) => (\n <div key={`${f.kind}:${f.key}`} className=\"px-4 py-1.5\">\n <div className=\"text-xs text-[color:var(--report-builder-fg-muted)]\">\n {f.kind === \"dimension\" ? \"Dimensions\" : \"Metrics\"}\n </div>\n <div className=\"flex items-center gap-2\">\n <KindGlyph kind={f.kind} />\n <span className=\"flex-1 text-sm text-[color:var(--report-builder-fg)]\">{f.label}</span>\n <button\n aria-label={`Remove ${f.label}`}\n className=\"rounded-full p-1 text-[color:var(--report-builder-fg-muted)] hover:bg-[color:var(--report-builder-surface-hover)]\"\n type=\"button\"\n onClick={() => {\n toggleDraft(f.kind, f.key)\n }}\n >\n <X size={16} />\n </button>\n </div>\n </div>\n ))}\n </div>\n <div className=\"w-80 shrink-0 overflow-auto border-l border-[color:var(--report-builder-border-strong)] p-4 text-sm text-[color:var(--report-builder-fg)]\">\n {hovered\n ? (fields.find((f) => `${f.kind}:${f.key}` === hovered)?.description ??\n fields.find((f) => `${f.kind}:${f.key}` === hovered)?.label)\n : \"Hover over a dimension or metric to see a description\"}\n </div>\n </div>\n {/* footer: Apply / Cancel */}\n <div className=\"flex shrink-0 items-center gap-4 border-t border-[color:var(--report-builder-border-strong)] px-4 py-3\">\n <button\n className=\"rounded bg-[color:var(--report-builder-accent)] px-6 py-2 text-sm font-medium text-[color:var(--report-builder-on-accent)] hover:bg-[color:var(--report-builder-accent-hover)] disabled:cursor-not-allowed disabled:opacity-50\"\n disabled={draftDims.length === 0 || draftMets.length === 0}\n type=\"button\"\n onClick={apply}\n >\n Apply\n </button>\n <button\n className=\"rounded px-2 py-2 text-sm font-medium text-[color:var(--report-builder-accent-hover)] hover:bg-[color:var(--report-builder-accent-bg-subtle)]\"\n type=\"button\"\n onClick={() => {\n onOpenChange(false)\n }}\n >\n Cancel\n </button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Dimensions + metrics chip strip\n// ---------------------------------------------------------------------------\n\nfunction FieldsBar({\n fields,\n dimensions,\n metrics,\n onSelectionChange,\n}: Pick<\n ReportBuilderProps,\n \"dimensions\" | \"fields\" | \"metrics\" | \"onSelectionChange\"\n>) {\n const [open, setOpen] = React.useState(false)\n const [viewAllOpen, setViewAllOpen] = React.useState(false)\n const [search, setSearch] = React.useState(\"\")\n const [hovered, setHovered] = React.useState<null | string>(null)\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const byKey = (kind: ReportBuilderFieldKind, key: string) =>\n fields.find((f) => f.kind === kind && f.key === key)\n\n function toggle(kind: ReportBuilderFieldKind, key: string) {\n const plural = kind === \"dimension\" ? \"dimensions\" : \"metrics\"\n const cur = kind === \"dimension\" ? dimensions : metrics\n if (cur.includes(key)) {\n if (cur.length === 1) return // keep at least one of each\n onSelectionChange(plural, cur.filter((k) => k !== key))\n } else {\n onSelectionChange(plural, [...cur, key])\n }\n }\n\n const match = (l: string) => l.toLowerCase().includes(search.trim().toLowerCase())\n const items = fields.filter((f) => match(f.label))\n\n return (\n <div className=\"flex items-start border-b border-[color:var(--report-builder-border)] bg-[color:var(--report-builder-surface)] py-3\">\n <Popover\n open={open}\n onOpenChange={(o) => {\n setOpen(o)\n if (!o) {\n setSearch(\"\")\n setHovered(null)\n }\n }}\n >\n {/* anchor spans icon + strip so the dropdown is as wide as the strip */}\n <PopoverAnchor asChild>\n <div className=\"flex min-w-0 flex-1 items-start\">\n <div className=\"flex shrink-0 items-center px-3\">\n <Table className=\"text-[color:var(--report-builder-fg)]\" size={24} strokeWidth={1.5} />\n </div>\n <div className=\"min-w-0 flex-1\">\n {/* chips are NOT a click target (GAM: only their × reacts) */}\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-1\">\n {dimensions.map((k) => (\n <GamChip\n key={`d:${k}`}\n icon={<DimGlyph />}\n onRemove={\n dimensions.length > 1 ? () => { toggle(\"dimension\", k); } : undefined\n }\n >\n {byKey(\"dimension\", k)?.label ?? k}\n </GamChip>\n ))}\n {metrics.map((k) => (\n <GamChip\n key={`m:${k}`}\n icon={<MetricGlyph />}\n onRemove={metrics.length > 1 ? () => { toggle(\"metric\", k); } : undefined}\n >\n {byKey(\"metric\", k)?.label ?? k}\n </GamChip>\n ))}\n </div>\n {/* the inline search field — the ONLY opener, like GAM's combobox */}\n <input\n ref={inputRef}\n className=\"mt-2 w-full max-w-md bg-transparent text-sm text-[color:var(--report-builder-fg)] outline-none placeholder:text-[color:var(--report-builder-fg-subtle)]\"\n placeholder=\"Select dimensions and metrics\"\n value={search}\n onChange={(e) => {\n setSearch(e.target.value)\n if (!open) setOpen(true)\n }}\n onFocus={() => {\n setOpen(true)\n }}\n />\n </div>\n </div>\n </PopoverAnchor>\n {/* GAM dropdown: strip-wide, two panes (list | description), View all footer */}\n <PopoverContent\n align=\"start\"\n className={GAM_POPUP}\n sideOffset={4}\n style={{ width: \"var(--radix-popper-anchor-width)\" }}\n onInteractOutside={(e) => {\n if (e.target === inputRef.current) e.preventDefault()\n }}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n }}\n >\n <div className=\"flex\">\n <div className=\"max-h-[340px] flex-[1.6] overflow-auto py-1\">\n {!search.trim() && (\n <div className=\"px-4 pb-1 pt-2 text-xs font-normal text-[color:var(--report-builder-fg-subtle)]\">\n Popular\n </div>\n )}\n {items.map((f) => {\n const sel =\n f.kind === \"dimension\"\n ? dimensions.includes(f.key)\n : metrics.includes(f.key)\n return (\n <label\n key={`${f.kind}:${f.key}`}\n className=\"flex h-8 cursor-pointer items-center gap-3 px-4 text-[15px] text-[color:var(--report-builder-fg-strong)] hover:bg-[color:var(--report-builder-surface-muted)]\"\n onMouseEnter={() => {\n setHovered(`${f.kind}:${f.key}`)\n }}\n onMouseLeave={() => {\n setHovered(null)\n }}\n // Mirror hover on keyboard focus so the description pane is\n // reachable without a mouse (WCAG 2.1 AA). Focus bubbles\n // from the inner checkbox to this label.\n onFocus={() => {\n setHovered(`${f.kind}:${f.key}`)\n }}\n onBlur={() => {\n setHovered(null)\n }}\n >\n <Checkbox\n checked={sel}\n className={GAM_CHECKBOX}\n onCheckedChange={() => {\n toggle(f.kind, f.key)\n }}\n />\n <span className=\"flex items-center gap-2\">\n <KindGlyph kind={f.kind} />\n {f.label}\n </span>\n </label>\n )\n })}\n {items.length === 0 && (\n <div className=\"px-4 py-2 text-sm text-[color:var(--report-builder-fg-subtle)]\">No matches</div>\n )}\n </div>\n <div className=\"min-h-[200px] flex-1 border-l border-[color:var(--report-builder-border-strong)] p-4 text-sm text-[color:var(--report-builder-fg)]\">\n {hovered\n ? (fields.find((f) => `${f.kind}:${f.key}` === hovered)?.description ??\n fields.find((f) => `${f.kind}:${f.key}` === hovered)?.label)\n : \"Hover over a dimension or metric to see a description\"}\n </div>\n </div>\n <div className=\"border-t border-[color:var(--report-builder-border-strong)] px-4 py-2.5\">\n <button\n aria-label=\"View all fields\"\n className=\"text-sm font-medium text-[color:var(--report-builder-accent-hover)] hover:underline\"\n type=\"button\"\n onClick={() => {\n setOpen(false)\n setViewAllOpen(true)\n }}\n >\n View all\n </button>\n </div>\n </PopoverContent>\n </Popover>\n <div className=\"flex shrink-0 items-center self-stretch border-l border-[color:var(--report-builder-border)] px-4\">\n <button\n aria-label=\"View all dimensions and metrics\"\n className=\"text-sm font-medium text-[color:var(--report-builder-accent-hover)] hover:underline\"\n type=\"button\"\n onClick={() => {\n setViewAllOpen(true)\n }}\n >\n View all\n </button>\n </div>\n {viewAllOpen && (\n <AllFieldsDialog\n dimensions={dimensions}\n fields={fields}\n metrics={metrics}\n onOpenChange={setViewAllOpen}\n onSelectionChange={onSelectionChange}\n />\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Filter chips row\n// ---------------------------------------------------------------------------\n\nfunction filterChipLabel(f: ReportBuilderFilter, ff?: ReportBuilderFilterField): string {\n const label = ff ? fieldLabel(ff.label, ff.key) : f.field\n if (f.op === \"anyOf\") return `${label} is any of ${listFmt(f.values ?? [])}`\n if (f.op === \"contains\") return `${label} contains \"${f.text ?? \"\"}\"`\n if (f.op === \"between\") return `${ff?.label ?? f.field} between ${numFmt(f.a)} and ${numFmt(f.b)}`\n const op = NUMBER_OPS.find((o) => o.v === f.op)?.l ?? f.op\n return `${ff?.label ?? f.field} ${op} ${numFmt(f.a)}`\n}\n\n/** Build the filter entry from editor state.\n * Returns the entry, `null` for an empty editor (→ remove the filter), or\n * `\"invalid\"` for unparsable numeric input (→ keep the editor open). */\nfunction buildFilterEntry(\n ff: ReportBuilderFilterField,\n s: { a: string; b: string; op: string; text: string; vals: string[] }\n): \"invalid\" | null | ReportBuilderFilter {\n if (ff.type === \"enum\") {\n return s.vals.length ? { field: ff.key, op: \"anyOf\", values: s.vals } : null\n }\n if (ff.type === \"text\") {\n const t = s.text.trim()\n return t ? { field: ff.key, op: \"contains\", text: t } : null\n }\n const na = Number.parseFloat(s.a)\n if (Number.isNaN(na)) return \"invalid\"\n const nb = s.op === \"between\" ? Number.parseFloat(s.b) : null\n if (nb != null && Number.isNaN(nb)) return \"invalid\"\n return { a: na, b: nb, field: ff.key, op: s.op as ReportBuilderFilter[\"op\"] }\n}\n\nfunction FiltersBar({\n filterFields,\n filters,\n onFiltersChange,\n}: {\n filterFields: ReportBuilderFilterField[]\n filters: ReportBuilderFilter[]\n onFiltersChange: (filters: ReportBuilderFilter[]) => void\n}) {\n const [open, setOpen] = React.useState(false)\n const [fieldKey, setFieldKey] = React.useState<null | string>(null) // null = field list\n const [editIdx, setEditIdx] = React.useState<null | number>(null)\n const [vals, setVals] = React.useState<string[]>([])\n const [text, setText] = React.useState(\"\")\n const [op, setOp] = React.useState<string>(\">=\")\n const [a, setA] = React.useState(\"\")\n const [b, setB] = React.useState(\"\")\n const [fsearch, setFsearch] = React.useState(\"\") // field-list typeahead\n const [vsearch, setVsearch] = React.useState(\"\") // value typeahead in editor\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const fieldOf = (key: string) => filterFields.find((f) => f.key === key)\n\n function reset() {\n setFieldKey(null)\n setEditIdx(null)\n setVals([])\n setText(\"\")\n setOp(\">=\")\n setA(\"\")\n setB(\"\")\n setFsearch(\"\")\n setVsearch(\"\")\n }\n\n function openEditor(key: string, idx?: number) {\n const ff = fieldOf(key)\n if (!ff) return\n // enum/text fields keep one filter per field — editing replaces it\n const existingIdx =\n idx ?? (ff.type === \"number\" ? -1 : filters.findIndex((x) => x.field === key))\n const seed = editorStateFor(existingIdx >= 0 ? filters[existingIdx] : undefined)\n setFieldKey(key)\n setEditIdx(existingIdx >= 0 ? existingIdx : null)\n setVsearch(\"\")\n setVals(seed.vals)\n setText(seed.text)\n setOp(seed.op)\n setA(seed.a)\n setB(seed.b)\n setOpen(true)\n }\n\n function apply() {\n const ff = fieldKey ? fieldOf(fieldKey) : null\n if (!ff) return\n const entry = buildFilterEntry(ff, { a, b, op, text, vals })\n if (entry === \"invalid\") return\n const next = [...filters]\n if (editIdx != null) {\n if (entry) next[editIdx] = entry\n else next.splice(editIdx, 1)\n } else if (entry) {\n next.push(entry)\n }\n onFiltersChange(next)\n setOpen(false)\n reset()\n }\n\n const editorField = fieldKey ? fieldOf(fieldKey) : null\n const valueOptions = editorField?.options ?? []\n const valueSuggestions = valueOptions.filter(\n (v) => !vals.includes(v) && v.toLowerCase().includes(vsearch.trim().toLowerCase())\n )\n const fieldMatches = (l: string) =>\n l.toLowerCase().includes(fsearch.trim().toLowerCase())\n\n return (\n <div className=\"flex min-h-12 items-center bg-[color:var(--report-builder-surface)] py-2\">\n <div className=\"flex shrink-0 items-center px-3\">\n <Filter className=\"text-[color:var(--report-builder-accent)]\" fill=\"currentColor\" size={20} strokeWidth={0} />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1\">\n {filters.map((f, i) => (\n <GamChip\n // Content-based key, not the array index: number fields allow\n // duplicate filters on the same field, so an index key mis-keys\n // survivors on removal/reorder. The chip label is unique per filter.\n key={`${f.field}:${filterChipLabel(f, fieldOf(f.field))}`}\n active={open && editIdx === i}\n onClick={() => {\n openEditor(f.field, i)\n }}\n onRemove={() => {\n onFiltersChange(filters.filter((_, j) => j !== i))\n }}\n >\n {filterChipLabel(f, fieldOf(f.field))}\n </GamChip>\n ))}\n {/* \"Add filter\" inline field — the opener, like GAM's combobox */}\n <Popover\n open={open}\n onOpenChange={(o) => {\n setOpen(o)\n if (!o) reset()\n }}\n >\n <PopoverAnchor asChild>\n <input\n ref={inputRef}\n className=\"w-28 bg-transparent px-2 py-1 text-sm text-[color:var(--report-builder-fg)] outline-none placeholder:text-[color:var(--report-builder-fg-subtle)]\"\n placeholder=\"Add filter\"\n value={fsearch}\n onChange={(e) => {\n setFsearch(e.target.value)\n if (!open) setOpen(true)\n }}\n onFocus={() => {\n if (fieldKey === null) setOpen(true)\n }}\n />\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n className={cn(fieldKey === null ? \"w-72\" : \"w-[26rem]\", GAM_POPUP)}\n onInteractOutside={(e) => {\n if (e.target === inputRef.current) e.preventDefault()\n }}\n onOpenAutoFocus={(e) => {\n e.preventDefault()\n }}\n >\n {fieldKey === null ? (\n // step 1 — field list (filtered by the inline field's text)\n <div className=\"max-h-80 overflow-auto py-1\">\n {filterFields\n .filter((f) => fieldMatches(f.label))\n .map((f) => (\n <button\n key={f.key}\n className=\"flex h-8 w-full items-center gap-2 px-4 text-left text-[15px] text-[color:var(--report-builder-fg-strong)] hover:bg-[color:var(--report-builder-surface-muted)]\"\n type=\"button\"\n onClick={() => {\n openEditor(f.key)\n }}\n >\n <KindGlyph kind={f.glyph ?? \"dimension\"} />\n {f.label}\n </button>\n ))}\n </div>\n ) : (\n // step 2 — GAM editor popup: title + ✕, operator, values, Apply\n <div>\n <div className=\"flex items-center justify-between px-3 pb-1 pt-3\">\n <span className=\"text-base text-[color:var(--report-builder-fg)]\">\n {editorField ? fieldLabel(editorField.label, editorField.key) : fieldKey}\n </span>\n <button\n aria-label=\"Close\"\n className=\"rounded-full p-1 text-[color:var(--report-builder-fg-muted)] hover:bg-[color:var(--report-builder-surface-hover)]\"\n type=\"button\"\n onClick={() => {\n setOpen(false)\n reset()\n }}\n >\n <X size={18} />\n </button>\n </div>\n {editorField?.type === \"text\" ? (\n <div className=\"px-3 py-2\">\n <div className=\"mb-2 rounded border border-[color:var(--report-builder-border)] px-3 py-2 text-[13px] text-[color:var(--report-builder-fg-muted)]\">\n contains\n </div>\n <input\n autoFocus\n className=\"w-full border-b border-[color:var(--report-builder-border)] bg-transparent py-1 text-sm text-[color:var(--report-builder-fg)] outline-none placeholder:text-[color:var(--report-builder-fg-subtle)] focus:border-[color:var(--report-builder-accent)]\"\n placeholder=\"Type to search\"\n value={text}\n onChange={(e) => {\n setText(e.target.value)\n }}\n />\n </div>\n ) : editorField?.type === \"number\" ? (\n <div className=\"flex items-center gap-2 px-3 py-2\">\n <Select value={op} onValueChange={setOp}>\n <SelectTrigger className=\"w-24\" size=\"sm\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {NUMBER_OPS.map((o) => (\n <SelectItem key={o.v} value={o.v}>\n {o.l}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <NumberInput\n placeholder=\"value\"\n value={a}\n onChange={(e) => {\n setA(e.target.value)\n }}\n />\n {op === \"between\" && (\n <NumberInput\n placeholder=\"to\"\n value={b}\n onChange={(e) => {\n setB(e.target.value)\n }}\n />\n )}\n </div>\n ) : (\n <div className=\"px-3 py-2\">\n {/* operator box (enum fields are \"is any of\") */}\n <div className=\"mb-2 rounded border border-[color:var(--report-builder-border)] px-3 py-2 text-[13px] text-[color:var(--report-builder-fg-muted)]\">\n is any of\n </div>\n {/* selected values as chips, like GAM */}\n {vals.length > 0 && (\n <div className=\"mb-1 flex flex-wrap gap-x-2 gap-y-1\">\n {vals.map((v) => (\n <GamChip\n key={v}\n onRemove={() => {\n setVals((p) => p.filter((x) => x !== v))\n }}\n >\n {v}\n </GamChip>\n ))}\n </div>\n )}\n <input\n autoFocus\n className=\"w-full border-b border-[color:var(--report-builder-border)] bg-transparent py-1 text-sm text-[color:var(--report-builder-fg)] outline-none placeholder:text-[color:var(--report-builder-fg-subtle)] focus:border-[color:var(--report-builder-accent)]\"\n placeholder=\"Type to search\"\n value={vsearch}\n onChange={(e) => {\n setVsearch(e.target.value)\n }}\n // Keyboard parity with GAM: Enter adds the first\n // suggestion, so the enum editor is operable without a\n // mouse (WCAG 2.1 AA).\n onKeyDown={(e) => {\n const first = valueSuggestions[0]\n if (e.key === \"Enter\" && first) {\n e.preventDefault()\n setVals((p) => [...p, first])\n setVsearch(\"\")\n }\n }}\n />\n <div className=\"mt-1 max-h-44 overflow-auto\">\n {valueSuggestions.map((v) => (\n <button\n key={v}\n className=\"flex h-8 w-full items-center px-2 text-left text-sm text-[color:var(--report-builder-fg-strong)] hover:bg-[color:var(--report-builder-surface-muted)]\"\n type=\"button\"\n onClick={() => {\n setVals((p) => [...p, v])\n setVsearch(\"\")\n }}\n >\n {v}\n </button>\n ))}\n </div>\n </div>\n )}\n {/* GAM's blue \"Apply\" text button */}\n <div className=\"flex justify-end px-3 pb-2 pt-1\">\n <button\n className=\"rounded px-2 py-1 text-sm font-medium text-[color:var(--report-builder-accent-hover)] hover:bg-[color:var(--report-builder-accent-bg-subtle)]\"\n type=\"button\"\n onClick={apply}\n >\n Apply\n </button>\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n {filters.length > 0 && (\n <button\n aria-label=\"Clear all filters\"\n className=\"mx-2 flex shrink-0 items-center rounded-full p-2 text-[color:var(--report-builder-fg-muted)] hover:bg-[color:var(--report-builder-surface-hover)]\"\n type=\"button\"\n onClick={() => {\n onFiltersChange([])\n }}\n >\n <X size={20} />\n </button>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// ReportBuilder — the bordered card with both bars\n// ---------------------------------------------------------------------------\n\n/**\n * ReportBuilder - GAM-style report builder bar\n *\n * A faithful copy of Google Ad Manager's report builder: a dimensions+metrics\n * chip strip with inline typeahead, a sentence-chip filter row with an inline\n * \"Add filter\" field and per-field editors, and the \"All dimensions and\n * metrics\" View-all dialog with draft + Apply.\n *\n * @example\n * ```tsx\n * <ReportBuilder\n * fields={[\n * { key: \"date\", label: \"Date\", kind: \"dimension\" },\n * { key: \"rev\", label: \"Revenue\", kind: \"metric\" },\n * ]}\n * dimensions={[\"date\"]}\n * metrics={[\"rev\"]}\n * onSelectionChange={(kind, keys) => { ... }}\n * filterFields={[\n * { key: \"src\", label: \"Source\", type: \"enum\", options: [\"google\", \"facebook\"] },\n * { key: \"rev\", label: \"Revenue\", type: \"number\", glyph: \"metric\" },\n * ]}\n * filters={filters}\n * onFiltersChange={setFilters}\n * />\n * ```\n */\nexport function ReportBuilder({\n fields,\n dimensions,\n metrics,\n onSelectionChange,\n filterFields,\n filters = [],\n onFiltersChange,\n className,\n ...props\n}: ReportBuilderProps) {\n return (\n <div\n className={cn(\"flex flex-col border border-[color:var(--report-builder-border)] bg-[color:var(--report-builder-surface)]\", className)}\n data-slot=\"report-builder\"\n {...props}\n >\n <FieldsBar\n dimensions={dimensions}\n fields={fields}\n metrics={metrics}\n onSelectionChange={onSelectionChange}\n />\n {filterFields && filterFields.length > 0 && onFiltersChange && (\n <FiltersBar\n filterFields={filterFields}\n filters={filters}\n onFiltersChange={onFiltersChange}\n />\n )}\n </div>\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/ContextMenu/ContextMenu.variants.ts","../src/components/navigation/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-4Y72SPNL.js","sourcesContent":["// ContextMenu/ContextMenu.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Shared animation and transition styles for menu content\n */\nconst menuContentBase = [\n \"bg-popover text-popover-foreground\",\n \"z-[var(--context-menu-content-z-index)] min-w-[var(--context-menu-content-min-width)] overflow-hidden rounded-[var(--context-menu-content-radius)] border-[var(--context-menu-content-border-width)] p-[var(--context-menu-content-padding)]\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n]\n\n/**\n * Shared base styles for interactive menu items\n */\nconst menuItemBase = [\n \"relative flex cursor-default items-center rounded-[var(--context-menu-item-radius)] text-[length:var(--context-menu-item-text-size)] outline-hidden select-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-[var(--context-menu-item-icon-size)]\",\n]\n\n/**\n * ContextMenuSubTrigger variant styles\n */\nexport const contextMenuSubTriggerVariants = cva(\n [\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] gap-[var(--context-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * ContextMenuSubContent variant styles\n */\nexport const contextMenuSubContentVariants = cva([\n ...menuContentBase,\n \"shadow-lg\",\n \"origin-(--radix-context-menu-content-transform-origin)\",\n])\n\n/**\n * ContextMenuContent variant styles\n */\nexport const contextMenuContentVariants = cva([\n ...menuContentBase,\n \"shadow-md\",\n \"max-h-(--radix-context-menu-content-available-height)\",\n \"origin-(--radix-context-menu-content-transform-origin)\",\n \"overflow-x-hidden overflow-y-auto\",\n])\n\n/**\n * ContextMenuItem variant styles\n */\nexport const contextMenuItemVariants = cva(\n [\n ...menuItemBase,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] gap-[var(--context-menu-item-gap)]\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n variant: {\n default: \"focus:bg-accent focus:text-accent-foreground\",\n destructive: [\n \"text-destructive\",\n \"focus:bg-destructive/10 dark:focus:bg-destructive/20\",\n \"focus:text-destructive\",\n \"*:[svg]:!text-destructive\",\n ],\n },\n },\n defaultVariants: {\n inset: false,\n variant: \"default\",\n },\n }\n)\n\n/**\n * ContextMenuCheckboxItem variant styles\n */\nexport const contextMenuCheckboxItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--context-menu-item-padding-y)] pr-[var(--context-menu-item-padding-x)] pl-[var(--context-menu-item-inset-padding-left)] gap-[var(--context-menu-item-gap)]\",\n])\n\n/**\n * ContextMenuRadioItem variant styles\n */\nexport const contextMenuRadioItemVariants = cva([\n ...menuItemBase,\n \"focus:bg-accent focus:text-accent-foreground\",\n \"py-[var(--context-menu-item-padding-y)] pr-[var(--context-menu-item-padding-x)] pl-[var(--context-menu-item-inset-padding-left)] gap-[var(--context-menu-item-gap)]\",\n])\n\n/**\n * ContextMenuLabel variant styles\n */\nexport const contextMenuLabelVariants = cva(\n [\"text-foreground px-[var(--context-menu-item-padding-x)] py-[var(--context-menu-item-padding-y)] text-[length:var(--context-menu-item-text-size)] font-medium\"],\n {\n variants: {\n inset: {\n true: \"pl-[var(--context-menu-item-inset-padding-left)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * ContextMenuSeparator variant styles\n */\nexport const contextMenuSeparatorVariants = cva([\"bg-border -mx-[var(--context-menu-separator-margin-x)] my-[var(--context-menu-separator-margin-y)] h-[var(--context-menu-separator-height)]\"])\n\n/**\n * ContextMenuShortcut variant styles\n */\nexport const contextMenuShortcutVariants = cva([\n \"text-muted-foreground ml-auto text-[length:var(--context-menu-shortcut-text-size)] tracking-widest\",\n])\n\n/**\n * Item indicator wrapper styles\n */\nexport const contextMenuIndicatorWrapperVariants = cva([\n \"pointer-events-none absolute left-[var(--context-menu-indicator-left)] flex size-[var(--context-menu-indicator-size)] items-center justify-center\",\n])\n\nexport type ContextMenuSubTriggerVariantProps = VariantProps<\n typeof contextMenuSubTriggerVariants\n>\nexport type ContextMenuItemVariantProps = VariantProps<\n typeof contextMenuItemVariants\n>\nexport type ContextMenuLabelVariantProps = VariantProps<\n typeof contextMenuLabelVariants\n>\n","\"use client\"\n\nimport type {\n ContextMenuCheckboxItemProps,\n ContextMenuContentProps,\n ContextMenuGroupProps,\n ContextMenuItemProps,\n ContextMenuLabelProps,\n ContextMenuPortalProps,\n ContextMenuProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuSeparatorProps,\n ContextMenuShortcutProps,\n ContextMenuSubContentProps,\n ContextMenuSubProps,\n ContextMenuSubTriggerProps,\n ContextMenuTriggerProps,\n} from \"./ContextMenu.types\"\n\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n contextMenuCheckboxItemVariants,\n contextMenuContentVariants,\n contextMenuIndicatorWrapperVariants,\n contextMenuItemVariants,\n contextMenuLabelVariants,\n contextMenuRadioItemVariants,\n contextMenuSeparatorVariants,\n contextMenuShortcutVariants,\n contextMenuSubContentVariants,\n contextMenuSubTriggerVariants,\n} from \"./ContextMenu.variants\"\n\n/**\n * ContextMenu - Root component for context menus.\n *\n * Displays a menu when the user right-clicks on the trigger element.\n *\n * @example\n * <ContextMenu>\n * <ContextMenuTrigger>Right click me</ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuItem>Profile</ContextMenuItem>\n * <ContextMenuItem>Settings</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n */\nfunction ContextMenu({ ...props }: ContextMenuProps) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\n/**\n * ContextMenuTrigger - Element that triggers the context menu on right-click.\n */\nfunction ContextMenuTrigger({ ...props }: ContextMenuTriggerProps) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n )\n}\n\n/**\n * ContextMenuGroup - Groups related menu items.\n */\nfunction ContextMenuGroup({ ...props }: ContextMenuGroupProps) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\n/**\n * ContextMenuPortal - Renders content in a portal.\n */\nfunction ContextMenuPortal({ ...props }: ContextMenuPortalProps) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n )\n}\n\n/**\n * ContextMenuSub - Container for nested submenus.\n */\nfunction ContextMenuSub({ ...props }: ContextMenuSubProps) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\n/**\n * ContextMenuRadioGroup - Groups radio items for single selection.\n */\nfunction ContextMenuRadioGroup({ ...props }: ContextMenuRadioGroupProps) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuSubTrigger - Triggers a nested submenu.\n */\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: ContextMenuSubTriggerProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n className={cn(contextMenuSubTriggerVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"context-menu-sub-trigger\"\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\n/**\n * ContextMenuSubContent - Content container for submenus.\n */\nfunction ContextMenuSubContent({\n className,\n ...props\n}: ContextMenuSubContentProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(contextMenuSubContentVariants(), className)}\n data-slot=\"context-menu-sub-content\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuContent - Main content container for the menu.\n *\n * Automatically wraps content in a Portal.\n */\nfunction ContextMenuContent({\n className,\n ...props\n}: ContextMenuContentProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(contextMenuContentVariants(), className)}\n data-slot=\"context-menu-content\"\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\n/**\n * ContextMenuItem - Individual menu item.\n *\n * @example\n * // Default item\n * <ContextMenuItem>Edit</ContextMenuItem>\n *\n * @example\n * // Destructive variant\n * <ContextMenuItem variant=\"destructive\">Delete</ContextMenuItem>\n */\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: ContextMenuItemProps) {\n return (\n <ContextMenuPrimitive.Item\n className={cn(contextMenuItemVariants({ inset, variant }), className)}\n data-inset={inset}\n data-slot=\"context-menu-item\"\n data-variant={variant}\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuCheckboxItem - Menu item with a checkbox.\n */\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: ContextMenuCheckboxItemProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n checked={checked ?? false}\n className={cn(contextMenuCheckboxItemVariants(), className)}\n data-slot=\"context-menu-checkbox-item\"\n {...props}\n >\n <span className={cn(contextMenuIndicatorWrapperVariants())}>\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\n/**\n * ContextMenuRadioItem - Menu item for radio selection.\n */\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: ContextMenuRadioItemProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(contextMenuRadioItemVariants(), className)}\n data-slot=\"context-menu-radio-item\"\n {...props}\n >\n <span className={cn(contextMenuIndicatorWrapperVariants())}>\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\n/**\n * ContextMenuLabel - Non-interactive label for grouping items.\n */\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: ContextMenuLabelProps) {\n return (\n <ContextMenuPrimitive.Label\n className={cn(contextMenuLabelVariants({ inset }), className)}\n data-inset={inset}\n data-slot=\"context-menu-label\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuSeparator - Visual separator between menu sections.\n */\nfunction ContextMenuSeparator({\n className,\n ...props\n}: ContextMenuSeparatorProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn(contextMenuSeparatorVariants(), className)}\n data-slot=\"context-menu-separator\"\n {...props}\n />\n )\n}\n\n/**\n * ContextMenuShortcut - Displays keyboard shortcut hint.\n */\nfunction ContextMenuShortcut({\n className,\n ...props\n}: ContextMenuShortcutProps) {\n return (\n <span\n className={cn(contextMenuShortcutVariants(), className)}\n data-slot=\"context-menu-shortcut\"\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/Menu/Menu.variants.ts","../src/components/navigation/Menu/Menu.tsx"],"names":[],"mappings":"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","file":"chunk-5GE3BQA7.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Menu root variant styles\n */\nexport const menuVariants = cva(\n [\n \"flex p-[var(--menu-root-padding)]\",\n // Floating chrome (DES-1281): Menu owns the popover casing — bg/border/shadow/radius —\n // so consumers no longer wrap it in a `rounded-md border bg-popover shadow-md` div.\n \"rounded-[var(--menu-content-radius)] border border-[color:var(--menu-content-border)] bg-[color:var(--menu-content-bg)] shadow-[var(--menu-content-shadow)]\",\n ],\n {\n variants: {\n orientation: {\n vertical: \"flex-col\",\n horizontal: \"flex-row\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\n/**\n * MenuItem variant styles\n */\nexport const menuItemVariants = cva(\n [\n // Base styles\n \"relative flex w-full cursor-pointer select-none items-center gap-[var(--menu-item-gap)]\",\n \"rounded-[var(--menu-item-radius)] px-[var(--menu-item-padding-x)] py-[var(--menu-item-padding-y)] text-[length:var(--menu-item-text-size)] outline-none\",\n // Focus styles\n \"focus:bg-accent focus:text-accent-foreground\",\n // Hover styles\n \"hover:bg-accent hover:text-accent-foreground\",\n // Transition\n \"transition-colors\",\n // Disabled styles\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n // SVG styles\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"text-destructive focus:bg-destructive/10 focus:text-destructive hover:bg-destructive/10 hover:text-destructive\",\n },\n inset: {\n true: \"pl-8\",\n false: \"\",\n },\n selected: {\n true: \"bg-accent/50\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inset: false,\n selected: false,\n },\n }\n)\n\n/**\n * MenuGroup variant styles\n */\nexport const menuGroupVariants = cva([\n \"flex flex-col gap-1\",\n])\n\n/**\n * MenuLabel variant styles\n */\nexport const menuLabelVariants = cva(\n [\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground\",\n \"uppercase tracking-wider\",\n ],\n {\n variants: {\n inset: {\n true: \"pl-8\",\n false: \"\",\n },\n },\n defaultVariants: {\n inset: false,\n },\n }\n)\n\n/**\n * MenuSeparator variant styles\n */\nexport const menuSeparatorVariants = cva([\n \"-mx-1 my-1 h-px bg-border\",\n])\n\n/**\n * MenuShortcut variant styles\n */\nexport const menuShortcutVariants = cva([\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n])\n","\"use client\"\n\nimport type {\n MenuGroupProps,\n MenuItemProps,\n MenuLabelProps,\n MenuProps,\n MenuSeparatorProps,\n MenuShortcutProps,\n} from \"./Menu.types\"\nimport type { KeyboardEvent } from \"react\";\n\nimport { useCallback, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { ScrollArea } from \"../../layout/ScrollArea\"\nimport {\n menuGroupVariants,\n menuItemVariants,\n menuLabelVariants,\n menuSeparatorVariants,\n menuShortcutVariants,\n menuVariants,\n} from \"./Menu.variants\"\n\n/**\n * Menu - A navigable list of options with keyboard support.\n *\n * Base component for creating custom menus with full accessibility.\n *\n * @example\n * <Menu>\n * <MenuItem onSelect={() => console.log(\"Edit\")}>Edit</MenuItem>\n * <MenuItem onSelect={() => console.log(\"Copy\")}>Copy</MenuItem>\n * <MenuSeparator />\n * <MenuItem variant=\"destructive\">Delete</MenuItem>\n * </Menu>\n */\nfunction Menu({\n className,\n orientation = \"vertical\",\n maxHeight,\n children,\n ...props\n}: MenuProps) {\n const menuRef = useRef<HTMLDivElement>(null)\n\n /* eslint-disable sonarjs/cognitive-complexity -- Keyboard navigation requires handling multiple key cases */\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const menu = menuRef.current\n if (!menu) return\n\n const items = [...menu.querySelectorAll('[role=\"menuitem\"]:not([data-disabled])')] as HTMLElement[]\n\n if (items.length === 0) return\n\n const currentIndex = items.findIndex((item) => item === document.activeElement)\n\n let nextIndex: null | number = null\n\n switch (event.key) {\n case \"ArrowDown\":\n if (orientation === \"vertical\") {\n event.preventDefault()\n nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n }\n break\n case \"ArrowUp\":\n if (orientation === \"vertical\") {\n event.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n }\n break\n case \"ArrowRight\":\n if (orientation === \"horizontal\") {\n event.preventDefault()\n nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0\n }\n break\n case \"ArrowLeft\":\n if (orientation === \"horizontal\") {\n event.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1\n }\n break\n case \"Home\":\n event.preventDefault()\n nextIndex = 0\n break\n case \"End\":\n event.preventDefault()\n nextIndex = items.length - 1\n break\n }\n\n if (nextIndex !== null) {\n const nextItem = items[nextIndex]\n if (nextItem) {\n nextItem.focus()\n }\n }\n },\n [orientation]\n )\n /* eslint-enable sonarjs/cognitive-complexity */\n\n return (\n <div\n ref={menuRef}\n className={cn(menuVariants({ orientation }), className)}\n data-slot=\"menu\"\n role=\"menu\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {maxHeight == null ? (\n children\n ) : (\n <ScrollArea className=\"w-full\" style={{ maxHeight }}>\n {children}\n </ScrollArea>\n )}\n </div>\n )\n}\n\n/**\n * MenuItem - Individual menu item with optional variants.\n */\nfunction MenuItem({\n className,\n variant = \"default\",\n inset = false,\n selected = false,\n onSelect,\n disabled = false,\n children,\n onClick,\n onKeyDown,\n ...props\n}: MenuItemProps) {\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return\n onClick?.(event)\n onSelect?.()\n },\n [disabled, onClick, onSelect]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event)\n if (disabled) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onSelect?.()\n }\n },\n [disabled, onKeyDown, onSelect]\n )\n\n return (\n <button\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n className={cn(menuItemVariants({ variant, inset, selected }), className)}\n data-disabled={disabled || undefined}\n data-slot=\"menu-item\"\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n type=\"button\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </button>\n )\n}\n\n/**\n * MenuGroup - Groups related menu items together.\n */\nfunction MenuGroup({\n className,\n label,\n children,\n ...props\n}: MenuGroupProps) {\n return (\n <div\n aria-label={label}\n className={cn(menuGroupVariants(), className)}\n data-slot=\"menu-group\"\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * MenuLabel - Label for a group of menu items.\n */\nfunction MenuLabel({\n className,\n inset = false,\n children,\n ...props\n}: MenuLabelProps) {\n return (\n <div\n className={cn(menuLabelVariants({ inset }), className)}\n data-slot=\"menu-label\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\n/**\n * MenuSeparator - Visual divider between menu items.\n */\nfunction MenuSeparator({ className, ...props }: MenuSeparatorProps) {\n return (\n <div\n className={cn(menuSeparatorVariants(), className)}\n data-slot=\"menu-separator\"\n role=\"separator\"\n {...props}\n />\n )\n}\n\n/**\n * MenuShortcut - Displays keyboard shortcut hint.\n */\nfunction MenuShortcut({ className, children, ...props }: MenuShortcutProps) {\n return (\n <span\n className={cn(menuShortcutVariants(), className)}\n data-slot=\"menu-shortcut\"\n {...props}\n >\n {children}\n </span>\n )\n}\n\nexport { Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, MenuShortcut }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/StatusIndicator/StatusIndicator.variants.ts","../src/components/primitives/StatusIndicator/StatusIndicator.tsx"],"names":[],"mappings":"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","file":"chunk-66TBTTZO.js","sourcesContent":["// StatusIndicator/StatusIndicator.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n// Extracted to satisfy sonarjs/no-duplicate-string — each appears multiple times in compoundVariants.\nconst FULL_H = \"h-full\"\nconst FULL_W = \"w-full\"\nconst SHAPE_BAR_V = \"bar-vertical\" as const\nconst SHAPE_BAR_H = \"bar-horizontal\" as const\n\n/**\n * StatusIndicator style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const statusIndicatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n success: \"bg-[color:var(--status-indicator-dot-color-success)]\",\n warning: \"bg-[color:var(--status-indicator-dot-color-warning)]\",\n error: \"bg-[color:var(--status-indicator-dot-color-error)]\",\n destructive: \"bg-[color:var(--status-indicator-dot-color-destructive)]\",\n info: \"bg-[color:var(--status-indicator-dot-color-info)]\",\n neutral: \"bg-[color:var(--status-indicator-dot-color-neutral)]\",\n },\n shape: {\n dot: \"rounded-[var(--status-indicator-root-border-radius)]\",\n \"bar-vertical\": \"rounded-xs\",\n \"bar-horizontal\": \"rounded-xs\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n xl: \"\",\n \"2xl\": \"\",\n },\n },\n compoundVariants: [\n // Dot — uses size for both dimensions\n { shape: \"dot\", size: \"xs\", className: \"size-[var(--status-indicator-dot-size-xs)]\" },\n { shape: \"dot\", size: \"sm\", className: \"size-[var(--status-indicator-dot-size-sm)]\" },\n { shape: \"dot\", size: \"default\", className: \"size-[var(--status-indicator-dot-size-default)]\" },\n { shape: \"dot\", size: \"lg\", className: \"size-[var(--status-indicator-dot-size-lg)]\" },\n { shape: \"dot\", size: \"xl\", className: \"size-[var(--status-indicator-dot-size-xl)]\" },\n { shape: \"dot\", size: \"2xl\", className: \"size-[var(--status-indicator-dot-size-2xl)]\" },\n // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)\n { shape: SHAPE_BAR_V, size: \"xs\", className: `${FULL_H} w-px` },\n { shape: SHAPE_BAR_V, size: \"sm\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"default\", className: `${FULL_H} w-[2px]` },\n { shape: SHAPE_BAR_V, size: \"lg\", className: `${FULL_H} w-[3px]` },\n { shape: SHAPE_BAR_V, size: \"xl\", className: `${FULL_H} w-[4px]` },\n { shape: SHAPE_BAR_V, size: \"2xl\", className: `${FULL_H} w-[6px]` },\n // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)\n { shape: SHAPE_BAR_H, size: \"xs\", className: `${FULL_W} h-px` },\n { shape: SHAPE_BAR_H, size: \"sm\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"default\", className: `${FULL_W} h-[2px]` },\n { shape: SHAPE_BAR_H, size: \"lg\", className: `${FULL_W} h-[3px]` },\n { shape: SHAPE_BAR_H, size: \"xl\", className: `${FULL_W} h-[4px]` },\n { shape: SHAPE_BAR_H, size: \"2xl\", className: `${FULL_W} h-[6px]` },\n ],\n defaultVariants: {\n variant: \"neutral\",\n shape: \"dot\",\n size: \"default\",\n },\n})\n\n// Export variant prop types\nexport type StatusIndicatorVariantProps = VariantProps<typeof statusIndicatorVariants>\n","\"use client\"\n\nimport type { StatusIndicatorProps } from \"./StatusIndicator.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n\nfunction StatusIndicator({\n className,\n variant,\n shape = \"dot\",\n size,\n pulse = false,\n label,\n labelPosition = \"right\",\n \"aria-label\": ariaLabel,\n ...props\n}: StatusIndicatorProps) {\n // Generate accessible label based on variant if not provided\n const defaultAriaLabel = `Status: ${variant ?? \"neutral\"}`\n const accessibleLabel = ariaLabel ?? (label ? undefined : defaultAriaLabel)\n\n // Bar shapes ignore `label` — they're purely visual (warning in dev when misused).\n const isBar = shape === \"bar-vertical\" || shape === \"bar-horizontal\"\n \n // `typeof process` guard is required so the library runs in browser bundlers (Vite, etc.) where `process` is not defined globally — without it, the dev-only warning branch throws `ReferenceError: process is not defined`.\n let isProd = false\n if (typeof process !== \"undefined\") {\n const { NODE_ENV } = process.env\n isProd = NODE_ENV === \"production\"\n }\n if (isBar && label && !isProd) {\n \n console.warn(\n `<StatusIndicator shape=\"${shape}\"> ignores the \\`label\\` prop. Use shape=\"dot\" to combine with label, or move the label to surrounding context.`,\n )\n }\n\n // Bar shape — render the bar alone (no label, no inline-flex wrapper).\n if (isBar) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape, size }),\n pulse && \"animate-pulse\",\n className,\n )}\n aria-label={accessibleLabel}\n data-shape={shape}\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n />\n )\n }\n\n // If no label, render just the dot\n if (!label) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className=\"sr-only\"\n data-slot=\"status-indicator-dot\"\n >\n {variant ?? \"neutral\"}\n </span>\n </span>\n )\n }\n\n // With label, render inline-flex container\n return (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-[var(--status-indicator-label-gap)]\",\n labelPosition === \"left\" && \"flex-row-reverse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\"\n )}\n aria-hidden=\"true\"\n data-slot=\"status-indicator-dot\"\n />\n <span\n className=\"text-[length:var(--status-indicator-label-font-size)] leading-normal text-[color:var(--status-indicator-label-color)]\"\n data-slot=\"status-indicator-label\"\n >\n {label}\n </span>\n </span>\n )\n}\n\nexport { StatusIndicator }\nexport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-7TF5PVEU.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-secondary)] hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-ghost)] hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-[color:var(--button-success-bg-default)] text-[color:var(--button-success-fg-default)] hover:bg-[color:var(--button-success-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-[color:var(--button-warning-bg-default)] text-[color:var(--button-warning-fg-default)] hover:bg-[color:var(--button-warning-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\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 </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\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 </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/FileTree/FileTree.variants.ts","../src/components/navigation/FileTree/FileTree.tsx"],"names":[],"mappings":"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","file":"chunk-7Y2UQMX6.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\nexport const fileTreeShellVariants = cva(\n [\n \"flex flex-col h-full select-none\",\n \"bg-[color:var(--filetree-shell-bg,var(--sidebar))]\",\n \"text-[color:var(--filetree-shell-fg,var(--sidebar-foreground))]\",\n \"border-r border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"font-mono\",\n notion: \"font-sans\",\n outline: \"font-sans\",\n },\n size: {\n sm: \"w-[var(--filetree-shell-width-sm,240px)]\",\n default: \"w-[var(--filetree-shell-width-default,296px)]\",\n lg: \"w-[var(--filetree-shell-width-lg,320px)]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n size: \"default\",\n },\n },\n)\n\nexport const fileTreeRowVariants = cva(\n [\n \"relative flex items-center cursor-pointer\",\n \"transition-colors duration-100\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n \"data-[active=true]:bg-[color:var(--filetree-row-active-bg,var(--brand-primary-100,var(--accent)))] data-[active=true]:text-[color:var(--filetree-row-active-fg,var(--brand-primary-900,var(--accent-foreground)))]\",\n \"hover:bg-[color:var(--filetree-row-hover-bg,var(--muted))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"h-[var(--filetree-row-h-ide,24px)] rounded-sm pr-2 text-[12.5px]\",\n notion: \"h-[var(--filetree-row-h-notion,30px)] rounded-md pr-1.5 pl-1 text-[13.5px]\",\n outline: \"h-[var(--filetree-row-h-outline,28px)] rounded-sm px-2.5 text-[13px]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n },\n },\n)\n","\"use client\"\n\nimport type {\n FileTreeNode,\n FileTreeProps,\n FileTreeRowContext,\n} from \"./FileTree.types\"\n\nimport { ChevronRight, FileIcon, FolderIcon, FolderOpenIcon, GitBranchIcon, SearchIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n fileTreeRowVariants,\n fileTreeShellVariants,\n} from \"./FileTree.variants\"\n\n/* ─────────────────────────────────────────────────────────────\n * Context — shares variant/state/handlers with sub-components.\n * ─────────────────────────────────────────────────────────────*/\n\ninterface FileTreeContextValue {\n data: FileTreeNode\n expanded: Record<string, boolean>\n focusedPath: string | undefined\n getNodeProps?: FileTreeProps[\"getNodeProps\"]\n keyboardNav: boolean\n renderLeading?: FileTreeProps[\"renderLeading\"]\n renderRow?: FileTreeProps[\"renderRow\"]\n renderTrailing?: FileTreeProps[\"renderTrailing\"]\n searchOnChange?: (value: string) => void\n searchPlaceholder?: string\n searchValue: string\n select: (path: string, node: FileTreeNode) => void\n selectedPath: string | undefined\n setFocused: (path: string | undefined) => void\n size: \"default\" | \"lg\" | \"sm\"\n toggle: (path: string) => void\n variant: \"ide\" | \"notion\" | \"outline\"\n}\n\nconst FileTreeContext = React.createContext<FileTreeContextValue | null>(null)\n\nfunction useFileTree(): FileTreeContextValue {\n const ctx = React.use(FileTreeContext)\n if (!ctx) throw new Error(\"FileTree sub-components must be used inside <FileTree>.\")\n return ctx\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Utilities\n * ─────────────────────────────────────────────────────────────*/\n\nfunction collectInitialExpanded(node: FileTreeNode, acc: Record<string, boolean> = {}): Record<string, boolean> {\n if (node.kind === \"folder\" && node.open) acc[node.path] = true\n node.children?.forEach((c) => collectInitialExpanded(c, acc))\n return acc\n}\n\nfunction collectInitialActive(node: FileTreeNode): string | undefined {\n if (node.active) return node.path\n if (node.children) {\n for (const c of node.children) {\n const r = collectInitialActive(c)\n if (r) return r\n }\n }\n return undefined\n}\n\n/** Flat list of currently-visible nodes (respects expanded state). Used for keyboard nav. */\nfunction visibleNodes(root: FileTreeNode, expanded: Record<string, boolean>): { depth: number; node: FileTreeNode; }[] {\n const out: { depth: number; node: FileTreeNode; }[] = []\n function walk(n: FileTreeNode, depth: number) {\n if (n !== root) out.push({ node: n, depth })\n if (n.kind === \"folder\" && (n === root || expanded[n.path])) {\n n.children?.forEach((c) => { walk(c, n === root ? 0 : depth + 1); })\n }\n }\n walk(root, -1)\n return out\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-components (Header, Toolbar, Body, Footer)\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTreeHeader({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-2.5 px-3.5 pt-3.5 pb-3 border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n className,\n )}\n data-slot=\"filetree-header\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeProjectBadge({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"grid place-items-center shrink-0 size-7 rounded-md\",\n \"bg-[color:var(--brand-primary-500,var(--primary))] text-[color:var(--brand-primary-900,var(--primary-foreground))]\",\n \"text-[12px] font-bold tracking-[-0.02em]\",\n className,\n )}\n data-slot=\"filetree-project-badge\"\n {...props}\n />\n )\n}\n\nfunction FileTreeProjectMeta({ name, sub }: { name: string; sub?: string }) {\n return (\n <div className=\"flex flex-col min-w-0 flex-1 leading-tight\" data-slot=\"filetree-project-meta\">\n <span className=\"text-[13px] font-semibold truncate\" data-slot=\"filetree-project-name\">\n {name}\n </span>\n {sub && (\n <span className=\"text-[11px] text-[color:var(--muted-foreground)] truncate\" data-slot=\"filetree-project-sub\">\n {sub}\n </span>\n )}\n </div>\n )\n}\n\nfunction FileTreeToolbar({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\"flex items-center gap-1.5 px-3 py-2.5\", className)}\n data-slot=\"filetree-toolbar\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeSearch({\n shortcut,\n placeholder,\n value,\n onChange,\n}: {\n onChange?: (value: string) => void\n placeholder?: string\n shortcut?: string\n value?: string\n}) {\n const ctx = React.use(FileTreeContext)\n // Use context's search props as fallback when this Search component doesn't get explicit ones.\n const ph = placeholder ?? ctx?.searchPlaceholder ?? \"Buscar arquivo…\"\n const val = value ?? ctx?.searchValue ?? \"\"\n const handle = onChange ?? ctx?.searchOnChange\n return (\n <label\n className={cn(\n \"flex items-center gap-1.5 flex-1 min-w-0 h-7 px-2 rounded-md\",\n \"bg-[color:var(--muted)] border border-transparent text-[color:var(--muted-foreground)] text-[12px]\",\n \"transition-[border-color,background-color] duration-100\",\n \"focus-within:border-[color:var(--ring)] focus-within:bg-[color:var(--background)]\",\n )}\n data-slot=\"filetree-search\"\n >\n <SearchIcon size={14} />\n <input\n className=\"flex-1 min-w-0 bg-transparent border-0 outline-none text-[color:var(--foreground)] placeholder:text-[color:var(--muted-foreground)]\"\n placeholder={ph}\n type=\"text\"\n value={val}\n onChange={(e) => handle?.(e.target.value)}\n />\n {shortcut && (\n <kbd className=\"font-mono text-[10px] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs\">\n {shortcut}\n </kbd>\n )}\n </label>\n )\n}\n\nfunction FileTreeAction({\n icon,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & { icon?: React.ReactNode }) {\n return (\n <button\n className={cn(\n \"grid place-items-center shrink-0 size-7 rounded-md\",\n \"bg-transparent text-[color:var(--muted-foreground)] cursor-pointer\",\n \"transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n className,\n )}\n data-slot=\"filetree-action\"\n type=\"button\"\n {...props}\n >\n {icon ?? children}\n </button>\n )\n}\n\nfunction FileTreeBody({ className, ...props }: React.ComponentProps<\"div\">) {\n const ctx = useFileTree()\n return (\n <div\n aria-label=\"File tree\"\n className={cn(\"flex-1 min-h-0 overflow-y-auto px-1.5 pt-1 pb-3\", className)}\n data-slot=\"filetree-body\"\n data-variant={ctx.variant}\n role=\"tree\"\n {...props}\n >\n {ctx.data.children?.map((child) => (\n <FileTreeNodeRenderer key={child.path} depth={0} node={child} />\n ))}\n </div>\n )\n}\n\nfunction FileTreeFooter({\n branch,\n indicator = \"dot\",\n children,\n}: {\n branch?: string\n children?: React.ReactNode\n indicator?: \"dot\" | \"none\"\n}) {\n if (!branch && !children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2.5 border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n \"text-[12px] text-[color:var(--muted-foreground)]\",\n )}\n data-slot=\"filetree-footer\"\n >\n {branch && (\n <span className=\"inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-medium font-mono text-[11.5px]\">\n <GitBranchIcon size={12} />\n {branch}\n </span>\n )}\n {children}\n {indicator === \"dot\" && (\n <span\n className={cn(\n \"ml-auto size-1.5 rounded-full\",\n \"bg-[color:var(--primary)]\",\n \"ring-[3px] ring-[color:var(--primary)]/20\",\n )}\n data-slot=\"filetree-footer-indicator\"\n />\n )}\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Row renderer — recursive\n * ─────────────────────────────────────────────────────────────*/\n\n// eslint-disable-next-line sonarjs/cognitive-complexity -- tree node renderer composes 3 variants (ide/notion/outline) + keyboard handler; splitting hurts readability more than it helps\nfunction FileTreeNodeRenderer({ node, depth }: { depth: number; node: FileTreeNode; }) {\n const ctx = useFileTree()\n const isFolder = node.kind === \"folder\"\n const isExpanded = !!ctx.expanded[node.path]\n const isActive = ctx.selectedPath === node.path\n const isFocused = ctx.focusedPath === node.path\n\n const rowContext: FileTreeRowContext = {\n depth,\n isExpanded,\n isActive,\n isFolder,\n isFocused,\n toggle: () => { ctx.toggle(node.path); },\n select: () => { ctx.select(node.path, node); },\n }\n\n // Indent rendering depends on variant. IDE/Notion use guide-lines; outline is pure indent.\n const indentPx = ctx.variant === \"notion\" ? depth * 18 : ctx.variant === \"outline\" ? depth * 16 : depth * 14\n\n const handleClick = () => {\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity -- WAI-ARIA tree keyboard pattern requires 9 distinct key branches; refactoring obscures the spec mapping\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!ctx.keyboardNav) return\n const flat = visibleNodes(ctx.data, ctx.expanded)\n const idx = flat.findIndex((f) => f.node.path === node.path)\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n const next = flat[idx + 1]\n if (next) ctx.setFocused(next.node.path)\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n const prev = flat[idx - 1]\n if (prev) ctx.setFocused(prev.node.path)\n } else if (e.key === \"ArrowRight\" && isFolder) {\n e.preventDefault()\n if (!isExpanded) ctx.toggle(node.path)\n else {\n const next = flat[idx + 1]\n if (next && next.depth > depth) ctx.setFocused(next.node.path)\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n if (isFolder && isExpanded) {\n ctx.toggle(node.path)\n } else {\n // move to parent (find previous shallower)\n for (let i = idx - 1; i >= 0; i--) {\n const f = flat[i]\n if (f && f.depth < depth) { ctx.setFocused(f.node.path); break }\n }\n }\n } else if (e.key === \"Home\") {\n e.preventDefault()\n if (flat[0]) ctx.setFocused(flat[0].node.path)\n } else if (e.key === \"End\") {\n e.preventDefault()\n const last = flat.at(-1)\n if (last) ctx.setFocused(last.node.path)\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n }\n\n // Compute leading + trailing via render-props OR defaults\n const leading = ctx.renderLeading\n ? ctx.renderLeading(node, rowContext)\n : isFolder\n ? <span className=\"grid place-items-center shrink-0 w-[18px] text-[color:var(--brand-primary-600,var(--primary))]\">\n {isExpanded ? <FolderOpenIcon size={14} /> : <FolderIcon size={14} />}\n </span>\n : <span className=\"grid place-items-center shrink-0 w-[18px] text-[color:var(--muted-foreground)]\">\n <FileIcon size={14} />\n </span>\n\n const trailing = ctx.renderTrailing?.(node, rowContext)\n\n // ── Variant: outline (no chevron, no folder icon, marker only)\n if (ctx.variant === \"outline\") {\n const isL0 = isFolder && depth === 0\n const rowEl = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {isFolder && !isL0 && (\n <span className={cn(\"inline-block w-[10px] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[12px] transition-transform\", isExpanded && \"rotate-90\")}>\n ›\n </span>\n )}\n <span className={cn(\n \"flex-1 overflow-hidden text-ellipsis whitespace-nowrap\",\n isL0 && \"text-[11px] font-bold uppercase tracking-[0.08em] text-[color:var(--muted-foreground)]\",\n !isL0 && isFolder && \"font-semibold tracking-[-0.005em] text-[color:var(--foreground)]\",\n )}>\n {node.name}\n </span>\n {!isFolder && (\n <span className={cn(\"size-[7px] rounded-full shrink-0\", node.modified ? \"bg-[color:var(--brand-primary-500,var(--primary))]\" : \"bg-[color:var(--muted)]\")} />\n )}\n {trailing}\n </>\n )\n return (\n <>\n <div\n className={cn(\n fileTreeRowVariants({ variant: \"outline\" }),\n isL0 && \"h-[30px] mt-3 first:mt-0\",\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-l0={isL0 || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={{ paddingLeft: `${String(10 + indentPx)}px` }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {rowEl}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n }\n\n // ── Variant: ide / notion (chevron + icon + name + trailing)\n const chevron = isFolder ? (\n <span\n className={cn(\n \"grid place-items-center shrink-0 w-4 text-[color:var(--muted-foreground)] transition-transform\",\n ctx.variant === \"notion\" && \"w-5 h-[22px] rounded-sm opacity-0 group-hover/ftrow:opacity-100\",\n isExpanded && \"rotate-90\",\n )}\n >\n <ChevronRight size={12} />\n </span>\n ) : (\n <span aria-hidden=\"true\" className={cn(\"inline-block shrink-0 w-4 h-6\", ctx.variant === \"notion\" && \"w-5 h-[22px]\")} />\n )\n\n const indentEls = ctx.variant === \"ide\"\n ? Array.from({ length: depth }, (_, i) => (\n <span\n key={i}\n aria-hidden=\"true\"\n className=\"relative shrink-0 w-[14px] self-stretch\"\n >\n <span className=\"absolute left-2 top-0 bottom-0 w-px bg-[color:var(--neutral-200)] dark:bg-[color:var(--neutral-800)]\" />\n </span>\n ))\n : null\n\n const row = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {indentEls}\n {chevron}\n {leading}\n <span className=\"pl-1.5 overflow-hidden text-ellipsis whitespace-nowrap flex-1\">\n {node.name}\n </span>\n {trailing}\n {node.modified && !isFolder && (\n <span className=\"ml-1 text-[color:var(--brand-primary-600,var(--primary))] font-bold\">●</span>\n )}\n </>\n )\n\n return (\n <>\n <div\n className={cn(\n \"group/ftrow\",\n fileTreeRowVariants({ variant: ctx.variant }),\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={ctx.variant === \"notion\" ? { paddingLeft: `${String(4 + indentPx)}px` } : undefined}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {row}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Root — FileTree\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTree({\n data,\n variant = \"ide\",\n size = \"default\",\n expanded: expandedProp,\n defaultExpanded,\n selectedPath: selectedPathProp,\n defaultSelectedPath,\n onToggle,\n onSelect,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n searchValue: searchValueProp,\n onSearchChange,\n searchPlaceholder,\n keyboardNav = true,\n className,\n children,\n ...props\n}: FileTreeProps) {\n const isExpandedControlled = expandedProp !== undefined\n const isSelectedControlled = selectedPathProp !== undefined\n const isSearchControlled = searchValueProp !== undefined\n\n const [internalExpanded, setInternalExpanded] = React.useState<Record<string, boolean>>(\n () => defaultExpanded ?? collectInitialExpanded(data),\n )\n const [internalSelected, setInternalSelected] = React.useState<string | undefined>(\n () => defaultSelectedPath ?? collectInitialActive(data),\n )\n const [internalSearch, setInternalSearch] = React.useState<string>(\"\")\n // Initial focus: prefer selectedPath (controlled or default), else first visible node.\n // Computed at mount via useState initializer to avoid the \"initialize state in effect\" anti-pattern.\n const [focusedPath, setFocusedPath] = React.useState<string | undefined>(() => {\n const initial = defaultSelectedPath ?? selectedPathProp ?? collectInitialActive(data)\n if (initial) return initial\n const initialExpanded = defaultExpanded ?? collectInitialExpanded(data)\n return visibleNodes(data, initialExpanded)[0]?.node.path\n })\n\n const expanded = isExpandedControlled ? expandedProp : internalExpanded\n const selectedPath = isSelectedControlled ? selectedPathProp : internalSelected\n const searchValue = isSearchControlled ? searchValueProp : internalSearch\n\n const toggle = React.useCallback(\n (path: string) => {\n const next = !expanded[path]\n if (!isExpandedControlled) {\n setInternalExpanded((prev) => ({ ...prev, [path]: next }))\n }\n onToggle?.(path, next, { path, next, timestamp: Date.now() })\n },\n [expanded, isExpandedControlled, onToggle],\n )\n\n const select = React.useCallback(\n (path: string, node: FileTreeNode) => {\n if (!isSelectedControlled) setInternalSelected(path)\n setFocusedPath(path)\n onSelect?.(path, { path, node, timestamp: Date.now() })\n },\n [isSelectedControlled, onSelect],\n )\n\n const searchOnChange = React.useCallback(\n (v: string) => {\n if (!isSearchControlled) setInternalSearch(v)\n onSearchChange?.(v)\n },\n [isSearchControlled, onSearchChange],\n )\n\n const ctxValue: FileTreeContextValue = {\n variant,\n size,\n expanded,\n selectedPath,\n focusedPath,\n toggle,\n select,\n setFocused: setFocusedPath,\n data,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n keyboardNav,\n searchValue,\n searchOnChange,\n searchPlaceholder,\n }\n\n return (\n <FileTreeContext value={ctxValue}>\n <div\n className={cn(fileTreeShellVariants({ variant, size }), className)}\n data-size={size}\n data-slot=\"filetree\"\n data-variant={variant}\n {...props}\n >\n {children ?? (\n <>\n <FileTreeBody />\n </>\n )}\n </div>\n </FileTreeContext>\n )\n}\n\n// Attach sub-components\nFileTree.Header = FileTreeHeader\nFileTree.ProjectBadge = FileTreeProjectBadge\nFileTree.ProjectMeta = FileTreeProjectMeta\nFileTree.Toolbar = FileTreeToolbar\nFileTree.Search = FileTreeSearch\nFileTree.Action = FileTreeAction\nFileTree.Body = FileTreeBody\nFileTree.Footer = FileTreeFooter\n\nexport {\n FileTree,\n FileTreeAction,\n FileTreeBody,\n FileTreeFooter,\n FileTreeHeader,\n FileTreeProjectBadge,\n FileTreeProjectMeta,\n fileTreeRowVariants,\n FileTreeSearch,\n fileTreeShellVariants,\n FileTreeToolbar,\n}\n"]}