@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/CommentSystem/CommentSystem.types.ts","../src/components/workflow/CommentSystem/CommentSystem.variants.ts","../src/components/workflow/CommentSystem/CommentSystem.tsx"],"names":[],"mappings":"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","file":"chunk-R3HUGCGR.js","sourcesContent":["import type { commentSystemVariants } from \"./CommentSystem.variants\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * User data structure for comment system\n */\nexport interface CommentUser {\n /** Avatar URL (optional) */\n avatar?: string\n /** Email address (optional) */\n email?: string\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Role or title (optional) */\n role?: string\n}\n\n/**\n * Attachment data structure\n */\nexport interface CommentAttachment {\n /** Unique identifier */\n id: string\n /** File name */\n name: string\n /** File size in bytes (optional) */\n size?: number\n /** Thumbnail URL for images (optional) */\n thumbnail?: string\n /** Type of attachment */\n type: \"file\" | \"image\" | \"link\"\n /** File URL */\n url: string\n}\n\n/**\n * Reaction on a comment\n */\nexport interface CommentReaction {\n /** Number of users who reacted */\n count: number\n /** Emoji character */\n emoji: string\n /** Whether current user has reacted */\n hasReacted?: boolean\n /** IDs of users who reacted */\n users: string[]\n}\n\n/**\n * Available reaction configuration\n */\nexport interface Reaction {\n /** Emoji character */\n emoji: string\n /** Display label */\n label: string\n /** Shortcode identifier */\n shortcode: string\n}\n\n/**\n * Comment data structure\n */\nexport interface Comment {\n /** Attachments on this comment (optional) */\n attachments?: CommentAttachment[]\n /** Author of the comment */\n author: CommentUser\n /** Comment content (supports basic markdown) */\n content: string\n /** When the comment was created */\n createdAt: Date\n /** Unique identifier */\n id: string\n /** Whether the comment has been deleted (soft delete) */\n isDeleted?: boolean\n /** Whether the comment has been edited */\n isEdited?: boolean\n /** Whether the comment is pinned */\n isPinned?: boolean\n /** User IDs mentioned in this comment (optional) */\n mentions?: string[]\n /** Parent comment ID for replies (optional) */\n parentId?: string\n /** Reactions on this comment (optional) */\n reactions?: CommentReaction[]\n /** Nested replies (optional) */\n replies?: Comment[]\n /** When the comment was last updated (optional) */\n updatedAt?: Date\n}\n\n/**\n * Default reactions available in the system\n */\nexport const defaultReactions: Reaction[] = [\n { emoji: \"👍\", label: \"Curtir\", shortcode: \"thumbsup\" },\n { emoji: \"❤️\", label: \"Amei\", shortcode: \"heart\" },\n { emoji: \"😄\", label: \"Haha\", shortcode: \"smile\" },\n { emoji: \"🎉\", label: \"Celebrar\", shortcode: \"tada\" },\n { emoji: \"🤔\", label: \"Pensativo\", shortcode: \"thinking\" },\n { emoji: \"👀\", label: \"Olhando\", shortcode: \"eyes\" },\n]\n\n/**\n * Payload for onSubmit event\n */\nexport interface CommentSubmitPayload {\n /** Attachments (when allowAttachments is true) */\n attachments?: CommentAttachment[]\n /** Comment content */\n content: string\n /** User IDs mentioned in the comment */\n mentions: string[]\n /** Parent comment ID if replying */\n parentId?: string\n}\n\n/**\n * Payload for onEdit event\n */\nexport interface CommentEditPayload {\n /** New content */\n content: string\n /** ID of the comment being edited */\n id: string\n}\n\n/**\n * Payload for onDelete event\n */\nexport interface CommentDeletePayload {\n /** ID of the comment being deleted */\n id: string\n}\n\n/**\n * Payload for onReact event\n */\nexport interface CommentReactPayload {\n /** ID of the comment being reacted to */\n commentId: string\n /** Reaction emoji or shortcode */\n reaction: string\n}\n\n/**\n * Payload for onMention event\n */\nexport interface CommentMentionPayload {\n /** ID of the user being mentioned */\n userId: string\n}\n\n/**\n * Payload for onLoadMore event\n */\nexport interface CommentLoadMorePayload {\n /** Load comments before this ID (for pagination) */\n before?: string\n}\n\n/**\n * Props for CommentSystem component\n */\nexport interface CommentSystemProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\">,\n VariantProps<typeof commentSystemVariants> {\n /** Allow file attachments @default false */\n allowAttachments?: boolean\n /** Allow deleting own comments @default true */\n allowDeleting?: boolean\n /** Allow editing own comments @default true */\n allowEditing?: boolean\n /** Allow @mentions @default true */\n allowMentions?: boolean\n /** Allow reactions on comments @default true */\n allowReactions?: boolean\n /** Allow replies to comments @default true */\n allowReplies?: boolean\n /** Array of comments to display */\n comments: Comment[]\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Currently logged in user (required for posting) */\n currentUser?: CommentUser\n /** Error state message */\n error?: string\n /** Loading state */\n isLoading?: boolean\n /** Maximum thread depth @default 3 */\n maxDepth?: number\n /** Users available for @mention */\n mentionableUsers?: CommentUser[]\n /** Called when a comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when a comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when more comments should be loaded */\n onLoadMore?: (payload: CommentLoadMorePayload) => void\n /** Called when a user is mentioned */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when a reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when a new comment is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Placeholder text for input */\n placeholder?: string\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode (no input, no actions) @default false */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentItem component\n */\nexport interface CommentItemProps\n extends Omit<React.ComponentProps<\"article\">, \"children\"> {\n /** Allow deleting */\n allowDeleting?: boolean\n /** Allow editing */\n allowEditing?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Allow reactions */\n allowReactions?: boolean\n /** Allow replies */\n allowReplies?: boolean\n /** The comment to display */\n comment: Comment\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Current user for permission checks */\n currentUser?: CommentUser\n /** Current depth in thread */\n depth?: number\n /** Layout style */\n layout?: \"chat\" | \"list\" | \"timeline\"\n /** Maximum thread depth */\n maxDepth?: number\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when reply is submitted */\n onReply?: (payload: CommentSubmitPayload) => void\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentInput component\n */\nexport interface CommentInputProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\"> {\n /** Allow attachments */\n allowAttachments?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Cancel button label (for editing/replying) */\n cancelLabel?: string\n /** Initial content (for editing) */\n initialContent?: string\n /** Whether in edit mode */\n isEditing?: boolean\n /** Whether currently submitting */\n isSubmitting?: boolean\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when cancel is clicked */\n onCancel?: () => void\n /** Called when a mention is triggered */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when form is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Parent comment ID if replying */\n parentId?: string\n /** Placeholder text */\n placeholder?: string\n /** Show cancel button */\n showCancel?: boolean\n /** Submit button label */\n submitLabel?: string\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CommentSystem container variants\n */\nexport const commentSystemVariants = cva(\n \"relative w-full transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"\",\n threaded: \"\",\n inline: \"border rounded-lg shadow-sm\",\n compact: \"\",\n },\n layout: {\n list: \"flex flex-col gap-4\",\n chat: \"flex flex-col gap-2\",\n timeline: \"flex flex-col\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n layout: \"list\",\n },\n }\n)\n\n/**\n * CommentItem variants\n */\nexport const commentItemVariants = cva(\n \"relative transition-all duration-200\",\n {\n variants: {\n layout: {\n list: \"rounded-lg border bg-card p-4\",\n chat: \"rounded-2xl px-4 py-2 max-w-[85%]\",\n timeline: \"relative pl-8 pb-6 border-l-2 border-muted-foreground/20 ml-4\",\n },\n isOwn: {\n true: \"\",\n false: \"\",\n },\n isPinned: {\n true: \"ring-1 ring-primary/30 bg-primary/5\",\n false: \"\",\n },\n isDeleted: {\n true: \"opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n layout: \"chat\",\n isOwn: true,\n className: \"ml-auto bg-primary text-primary-foreground\",\n },\n {\n layout: \"chat\",\n isOwn: false,\n className: \"mr-auto bg-muted\",\n },\n ],\n defaultVariants: {\n layout: \"list\",\n isOwn: false,\n isPinned: false,\n isDeleted: false,\n },\n }\n)\n\n/**\n * Comment header variants (author info and timestamp)\n */\nexport const commentHeaderVariants = cva(\n \"flex items-center gap-3\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"\",\n timeline: \"\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment content variants\n */\nexport const commentContentVariants = cva(\n \"text-sm\",\n {\n variants: {\n layout: {\n list: \"mt-2\",\n chat: \"\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment actions (reply, edit, delete, react)\n */\nexport const commentActionsVariants = cva(\n \"flex items-center gap-2 text-xs\",\n {\n variants: {\n layout: {\n list: \"mt-3 pt-3 border-t border-muted\",\n chat: \"mt-1\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Reply thread container variants\n */\nexport const commentRepliesVariants = cva(\n \"relative\",\n {\n variants: {\n layout: {\n list: \"pl-8 mt-4 space-y-4\",\n chat: \"pl-6 mt-2 space-y-2\",\n timeline: \"pl-4 mt-2 space-y-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Thread line connector\n */\nexport const commentThreadLineVariants = cva(\n \"absolute left-4 top-0 bottom-0 w-0.5 bg-muted-foreground/20\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"left-3\",\n timeline: \"left-0\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Mention highlight in content\n */\nexport const commentMentionVariants = cva(\n \"inline-flex items-center rounded px-1 font-medium cursor-pointer hover:underline\",\n {\n variants: {\n style: {\n default: \"bg-primary/10 text-primary\",\n subtle: \"text-primary\",\n },\n },\n defaultVariants: {\n style: \"default\",\n },\n }\n)\n\n/**\n * Reaction badge variants\n */\nexport const commentReactionVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors\",\n {\n variants: {\n hasReacted: {\n true: \"bg-primary/10 border-primary/30 text-primary\",\n false: \"bg-muted border-transparent text-muted-foreground hover:bg-muted-foreground/10\",\n },\n },\n defaultVariants: {\n hasReacted: false,\n },\n }\n)\n\n/**\n * Comment input container\n */\nexport const commentInputContainerVariants = cva(\n \"relative rounded-md border bg-background transition-all duration-200\",\n {\n variants: {\n isFocused: {\n true: \"ring-2 ring-ring ring-offset-2\",\n false: \"\",\n },\n isSubmitting: {\n true: \"opacity-70 pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n isFocused: false,\n isSubmitting: false,\n },\n }\n)\n\n/**\n * Mention suggestions popover\n */\nexport const mentionSuggestionsVariants = cva(\n \"absolute z-50 min-w-52 overflow-hidden rounded-md border bg-popover p-1 shadow-md\",\n {\n variants: {\n position: {\n above: \"bottom-full mb-1\",\n below: \"top-full mt-1\",\n },\n },\n defaultVariants: {\n position: \"below\",\n },\n }\n)\n\n/**\n * Mention suggestion item\n */\nexport const mentionSuggestionItemVariants = cva(\n \"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer transition-colors\",\n {\n variants: {\n isSelected: {\n true: \"bg-accent text-accent-foreground\",\n false: \"hover:bg-accent hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n isSelected: false,\n },\n }\n)\n\n/**\n * Empty state variants\n */\nexport const commentEmptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center p-8\",\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * Timeline marker for timeline layout\n */\nexport const commentTimelineMarkerVariants = cva(\n \"absolute -left-2 top-0 flex h-4 w-4 items-center justify-center rounded-full border-2 bg-background\",\n {\n variants: {\n status: {\n default: \"border-muted-foreground/50\",\n active: \"border-primary bg-primary\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type CommentSystemVariantProps = VariantProps<typeof commentSystemVariants>\nexport type CommentItemVariantProps = VariantProps<typeof commentItemVariants>\nexport type CommentReactionVariantProps = VariantProps<typeof commentReactionVariants>\nexport type CommentInputContainerVariantProps = VariantProps<typeof commentInputContainerVariants>\nexport type MentionSuggestionsVariantProps = VariantProps<typeof mentionSuggestionsVariants>\nexport type MentionSuggestionItemVariantProps = VariantProps<typeof mentionSuggestionItemVariants>\n","import type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n} from \"./CommentSystem.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n CornerDownRight,\n Edit2,\n MessageCircle,\n MoreHorizontal,\n Paperclip,\n Send,\n Smile,\n Trash2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Textarea } from \"../../forms/Textarea\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport { defaultReactions } from \"./CommentSystem.types\"\nimport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n commentInputContainerVariants,\n commentItemVariants,\n commentMentionVariants,\n commentReactionVariants,\n commentRepliesVariants,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n} from \"./CommentSystem.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Format relative time\n */\nfunction formatRelativeTime(date: Date): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffSecs = Math.floor(diffMs / 1000)\n const diffMins = Math.floor(diffSecs / 60)\n const diffHours = Math.floor(diffMins / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSecs < 60) return \"agora\"\n if (diffMins < 60) return `${String(diffMins)}m atrás`\n if (diffHours < 24) return `${String(diffHours)}h atrás`\n if (diffDays < 7) return `${String(diffDays)}d atrás`\n\n return date.toLocaleDateString()\n}\n\n/**\n * Parse content and highlight mentions\n */\nfunction parseContent(\n content: string,\n mentionableUsers?: CommentUser[],\n onMentionClick?: (userId: string) => void\n): ReactNode {\n if (!content) return null\n\n // Pattern to match @mentions\n const mentionPattern = /@(\\w+)/g\n const parts: ReactNode[] = []\n let lastIndex = 0\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n // Add text before the mention\n if (match.index > lastIndex) {\n parts.push(content.slice(lastIndex, match.index))\n }\n\n const mentionName = match[1]\n const user = mentionableUsers?.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === mentionName?.toLowerCase()\n )\n\n parts.push(\n <span\n key={match.index}\n className={commentMentionVariants()}\n role=\"button\"\n tabIndex={0}\n onClick={() => { if (user) { onMentionClick?.(user.id); } }}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && user) {\n onMentionClick?.(user.id);\n }\n }}\n >\n @{mentionName}\n </span>\n )\n\n lastIndex = match.index + match[0].length\n }\n\n // Add remaining text\n if (lastIndex < content.length) {\n parts.push(content.slice(lastIndex))\n }\n\n return parts.length > 0 ? parts : content\n}\n\n/**\n * CommentInput component for writing new comments or editing\n */\nfunction CommentInput({\n placeholder = \"Escreva um comentário...\",\n allowMentions = true,\n allowAttachments = false,\n mentionableUsers = [],\n parentId,\n initialContent = \"\",\n submitLabel = \"Enviar\",\n cancelLabel = \"Cancelar\",\n isEditing = false,\n isSubmitting = false,\n showCancel = false,\n onSubmit,\n onCancel,\n onMention,\n className,\n ...props\n}: CommentInputProps) {\n const inputId = useId()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const [content, setContent] = useState(initialContent)\n const [isFocused, setIsFocused] = useState(false)\n const [showMentions, setShowMentions] = useState(false)\n const [mentionSearch, setMentionSearch] = useState(\"\")\n const [selectedMentionIndex, setSelectedMentionIndex] = useState(0)\n\n const filteredUsers = useMemo(() => {\n if (!mentionSearch) return mentionableUsers.slice(0, 5)\n return mentionableUsers\n .filter((u) => u.name.toLowerCase().includes(mentionSearch.toLowerCase()))\n .slice(0, 5)\n }, [mentionableUsers, mentionSearch])\n\n const handleSubmit = useCallback(() => {\n if (!content.trim() || isSubmitting) return\n\n // Extract mentions from content\n const mentionPattern = /@(\\w+)/g\n const mentions: string[] = []\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n const matchName = match[1] ?? \"\"\n const user = mentionableUsers.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === matchName.toLowerCase()\n )\n if (user && !mentions.includes(user.id)) {\n mentions.push(user.id)\n }\n }\n\n onSubmit?.({\n content: content.trim(),\n parentId,\n mentions,\n })\n\n if (!isEditing) {\n setContent(\"\")\n }\n }, [content, isSubmitting, isEditing, parentId, mentionableUsers, onSubmit])\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (showMentions) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) =>\n Math.min(prev + 1, filteredUsers.length - 1)\n )\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n const selectedUser = filteredUsers[selectedMentionIndex]\n if (selectedUser) {\n insertMention(selectedUser)\n }\n } else if (e.key === \"Escape\") {\n setShowMentions(false)\n }\n } else if (e.key === \"Enter\" && (e.ctrlKey || e.metaKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }\n\n const handleChange = (value: string) => {\n setContent(value)\n\n if (allowMentions) {\n // Check for @ trigger\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = value.slice(0, cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n setShowMentions(true)\n setMentionSearch(atMatch[1] ?? \"\")\n setSelectedMentionIndex(0)\n } else {\n setShowMentions(false)\n setMentionSearch(\"\")\n }\n }\n }\n\n const insertMention = (user: CommentUser) => {\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = content.slice(0, cursorPos)\n const textAfterCursor = content.slice(cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n const newTextBefore = textBeforeCursor.slice(0, atMatch.index)\n const mention = `@${user.name.replaceAll(/\\s+/g, \"\")} `\n setContent(newTextBefore + mention + textAfterCursor)\n setShowMentions(false)\n setMentionSearch(\"\")\n onMention?.({ userId: user.id })\n\n // Focus back on textarea\n setTimeout(() => {\n textareaRef.current?.focus()\n const newCursorPos = newTextBefore.length + mention.length\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos)\n }, 0)\n }\n }\n\n return (\n <div\n className={cn(\n commentInputContainerVariants({ isFocused, isSubmitting }),\n className\n )}\n data-slot=\"comment-input\"\n {...props}\n >\n <div className=\"relative\">\n <Textarea\n ref={textareaRef}\n aria-describedby={`${inputId}-help`}\n aria-label={isEditing ? \"Editar comentário\" : \"Novo comentário\"}\n className=\"min-h-20 resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n disabled={isSubmitting}\n id={inputId}\n placeholder={placeholder}\n value={content}\n onBlur={() => { setIsFocused(false); }}\n onChange={(e) => { handleChange(e.target.value); }}\n onFocus={() => { setIsFocused(true); }}\n onKeyDown={handleKeyDown}\n />\n\n {/* Mention suggestions */}\n {showMentions && filteredUsers.length > 0 && (\n <div\n className={mentionSuggestionsVariants({ position: \"below\" })}\n data-slot=\"comment-mention-suggestions\"\n role=\"listbox\"\n >\n {filteredUsers.map((user, index) => (\n <button\n key={user.id}\n className={mentionSuggestionItemVariants({\n isSelected: index === selectedMentionIndex,\n })}\n aria-selected={index === selectedMentionIndex}\n role=\"option\"\n type=\"button\"\n onClick={() => { insertMention(user); }}\n >\n <Avatar size=\"xs\">\n {user.avatar ? (\n <AvatarImage alt={user.name} src={user.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n <span>{user.name}</span>\n {user.role && (\n <span className=\"text-muted-foreground text-xs\">\n {user.role}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between border-t p-2\">\n <div className=\"flex items-center gap-1\">\n {allowMentions && (\n <Button\n aria-label=\"Mencionar alguém\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n const newContent = content + \"@\"\n setContent(newContent)\n handleChange(newContent)\n textareaRef.current?.focus()\n }}\n >\n <span className=\"text-sm font-medium\">@</span>\n </Button>\n )}\n {allowAttachments && (\n <Button\n aria-label=\"Anexar arquivo\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n aria-label=\"Adicionar emoji\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Smile className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showCancel && (\n <Button\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n )}\n <Button\n disabled={!content.trim() || isSubmitting}\n size=\"sm\"\n type=\"button\"\n onClick={handleSubmit}\n >\n <Send className=\"mr-1 h-4 w-4\" />\n {submitLabel}\n </Button>\n </div>\n </div>\n\n <span className=\"sr-only\" id={`${inputId}-help`}>\n Pressione Ctrl+Enter para enviar. Use @ para mencionar alguém.\n </span>\n </div>\n )\n}\n\n/**\n * CommentReactions component displays and manages reactions\n */\nfunction CommentReactions({\n commentId,\n reactions = [],\n availableReactions = defaultReactions,\n readOnly = false,\n onReact,\n}: {\n availableReactions?: Reaction[]\n commentId: string\n onReact?: (payload: CommentReactPayload) => void\n reactions?: { count: number; emoji: string; hasReacted?: boolean; users: string[] }[]\n readOnly?: boolean\n}) {\n const [showPicker, setShowPicker] = useState(false)\n\n const handleReact = (emoji: string) => {\n onReact?.({ commentId, reaction: emoji })\n setShowPicker(false)\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-1\" data-slot=\"comment-reactions\">\n {reactions.map((reaction) => (\n <button\n key={reaction.emoji}\n className={commentReactionVariants({\n hasReacted: reaction.hasReacted,\n })}\n disabled={readOnly}\n title={`${String(reaction.count)} ${reaction.count === 1 ? \"pessoa\" : \"pessoas\"}`}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n <span>{reaction.emoji}</span>\n <span>{reaction.count}</span>\n </button>\n ))}\n\n {!readOnly && (\n <div className=\"relative\">\n <button\n className=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground\"\n title=\"Adicionar reação\"\n type=\"button\"\n onClick={() => { setShowPicker(!showPicker); }}\n >\n <Smile className=\"h-3 w-3\" />\n </button>\n\n {showPicker && (\n <div\n className=\"absolute bottom-full left-0 z-50 mb-1 flex gap-1 rounded-lg border bg-popover p-2 shadow-lg\"\n role=\"listbox\"\n >\n {availableReactions.map((reaction) => (\n <button\n key={reaction.shortcode}\n className=\"rounded p-1 text-lg transition-colors hover:bg-accent\"\n role=\"option\"\n title={reaction.label}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n {reaction.emoji}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * CommentItem component renders a single comment\n */\nfunction CommentItem({\n comment,\n confirmDelete,\n currentUser,\n depth = 0,\n maxDepth = 3,\n layout = \"list\",\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n reactions = defaultReactions,\n mentionableUsers = [],\n readOnly = false,\n onReply,\n onEdit,\n onDelete,\n onReact,\n className,\n ...props\n}: CommentItemProps) {\n const commentId = useId()\n const [isReplying, setIsReplying] = useState(false)\n const [isEditing, setIsEditing] = useState(false)\n const [showActions, setShowActions] = useState(false)\n\n const isOwn = currentUser?.id === comment.author.id\n const canReply = allowReplies && depth < maxDepth && !readOnly\n const canEdit = allowEditing && isOwn && !readOnly && !comment.isDeleted\n const canDelete = allowDeleting && isOwn && !readOnly && !comment.isDeleted\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onReply?.({ ...payload, parentId: comment.id })\n setIsReplying(false)\n }\n\n const handleEdit = (payload: CommentSubmitPayload) => {\n onEdit?.({ id: comment.id, content: payload.content })\n setIsEditing(false)\n }\n\n const handleDelete = () => {\n const shouldDelete = confirmDelete\n ? confirmDelete(comment)\n : window.confirm(\"Tem certeza que deseja excluir este comentário?\")\n\n if (shouldDelete) {\n onDelete?.({ id: comment.id })\n }\n }\n\n if (comment.isDeleted) {\n return (\n <article\n data-deleted\n aria-label=\"Comentário excluído\"\n className={cn(commentItemVariants({ layout, isDeleted: true }), className)}\n data-slot=\"comment-item\"\n {...props}\n >\n <p className=\"text-sm italic text-muted-foreground\">\n Este comentário foi excluído.\n </p>\n </article>\n )\n }\n\n return (\n <article\n className={cn(\n commentItemVariants({ layout, isOwn, isPinned: comment.isPinned }),\n className\n )}\n aria-describedby={`${commentId}-content`}\n aria-label={`Comentário de ${comment.author.name}`}\n data-slot=\"comment-item\"\n {...props}\n >\n {/* Timeline marker */}\n {layout === \"timeline\" && (\n <div\n className={commentTimelineMarkerVariants({ status: \"default\" })}\n data-slot=\"comment-timeline-marker\"\n />\n )}\n\n {/* Header */}\n <div className={commentHeaderVariants({ layout })} data-slot=\"comment-header\">\n {layout !== \"chat\" && (\n <Avatar size=\"sm\">\n {comment.author.avatar ? (\n <AvatarImage alt={comment.author.name} src={comment.author.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {comment.author.name}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(comment.createdAt)}\n </span>\n {comment.isEdited && (\n <span className=\"text-xs text-muted-foreground\">(editado)</span>\n )}\n {comment.isPinned && (\n <span className=\"text-xs font-medium text-primary\">Fixado</span>\n )}\n </div>\n\n {(canEdit || canDelete) && (\n <div className=\"relative\">\n <Button\n aria-expanded={showActions}\n aria-haspopup=\"true\"\n aria-label=\"Mais ações\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setShowActions(!showActions); }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n\n {showActions && (\n <div\n className=\"absolute right-0 top-full z-10 mt-1 min-w-28 rounded-md border bg-popover p-1 shadow-md\"\n role=\"menu\"\n >\n {canEdit && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n setIsEditing(true)\n setShowActions(false)\n }}\n >\n <Edit2 className=\"h-3.5 w-3.5\" />\n Editar\n </button>\n )}\n {canDelete && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-destructive hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n handleDelete()\n setShowActions(false)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n Excluir\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {isEditing ? (\n <div className=\"mt-2\">\n <CommentInput\n isEditing\n showCancel\n allowMentions={allowMentions}\n cancelLabel=\"Cancelar\"\n initialContent={comment.content}\n mentionableUsers={mentionableUsers}\n placeholder=\"Editar comentário...\"\n submitLabel=\"Salvar\"\n onCancel={() => { setIsEditing(false); }}\n onSubmit={handleEdit}\n />\n </div>\n ) : (\n <div\n className={commentContentVariants({ layout })}\n data-slot=\"comment-content\"\n id={`${commentId}-content`}\n >\n <p className=\"whitespace-pre-wrap\">\n {parseContent(comment.content, mentionableUsers)}\n </p>\n </div>\n )}\n\n {/* Attachments */}\n {comment.attachments && comment.attachments.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-2\" data-slot=\"comment-attachments\">\n {comment.attachments.map((attachment) => (\n <a\n key={attachment.id}\n className=\"flex items-center gap-1 rounded border bg-muted/50 px-2 py-1 text-xs hover:bg-muted\"\n href={attachment.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <Paperclip className=\"h-3 w-3\" />\n {attachment.name}\n </a>\n ))}\n </div>\n )}\n\n {/* Reactions */}\n {allowReactions && (\n <div className=\"mt-2\">\n <CommentReactions\n availableReactions={reactions}\n commentId={comment.id}\n reactions={comment.reactions}\n readOnly={readOnly}\n onReact={onReact}\n />\n </div>\n )}\n\n {/* Actions */}\n <div className={commentActionsVariants({ layout })} data-slot=\"comment-actions\">\n {canReply && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setIsReplying(!isReplying); }}\n >\n <CornerDownRight className=\"mr-1 h-3 w-3\" />\n Responder\n </Button>\n )}\n </div>\n\n {/* Reply input */}\n {isReplying && (\n <div className=\"mt-3\">\n <CommentInput\n showCancel\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n parentId={comment.id}\n placeholder={`Responder a ${comment.author.name}...`}\n onCancel={() => { setIsReplying(false); }}\n onSubmit={handleReply}\n />\n </div>\n )}\n\n {/* Replies */}\n {comment.replies && comment.replies.length > 0 && (\n <div\n className={cn(\n commentRepliesVariants({ layout }),\n \"relative\"\n )}\n data-slot=\"comment-replies\"\n >\n {layout === \"list\" && (\n <div className={commentThreadLineVariants({ layout })} />\n )}\n {comment.replies.map((reply) => (\n <CommentItem\n key={reply.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={reply}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n depth={depth + 1}\n layout={layout}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={onReply}\n />\n ))}\n </div>\n )}\n </article>\n )\n}\n\n/**\n * CommentSystem displays and manages a complete comment system\n * with threading, mentions, reactions, and moderation support.\n *\n * @example\n * ```tsx\n * const comments = [\n * {\n * id: '1',\n * content: 'Great work!',\n * author: { id: '1', name: 'John Doe' },\n * createdAt: new Date()\n * }\n * ]\n *\n * <CommentSystem\n * comments={comments}\n * currentUser={{ id: '2', name: 'Jane Doe' }}\n * onSubmit={({ content }) => console.log('New comment:', content)}\n * />\n * ```\n */\nfunction CommentSystem({\n comments,\n variant = \"default\",\n layout = \"list\",\n confirmDelete,\n currentUser,\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n allowAttachments = false,\n maxDepth = 3,\n mentionableUsers = [],\n reactions = defaultReactions,\n placeholder = \"Escreva um comentário...\",\n readOnly = false,\n isLoading = false,\n error,\n onSubmit,\n onEdit,\n onDelete,\n onReact,\n onMention,\n onLoadMore,\n className,\n \"aria-label\": ariaLabel = \"Sistema de comentários\",\n ...props\n}: CommentSystemProps) {\n const systemId = useId()\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onSubmit?.(payload)\n }\n\n const hasComments = comments.length > 0\n const showInput = !readOnly && currentUser\n\n // Loading state\n if (isLoading) {\n return (\n <div\n data-loading\n aria-busy=\"true\"\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"flex flex-col gap-4\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"animate-pulse rounded-lg border bg-card p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 rounded bg-muted\" />\n <div className=\"h-3 w-16 rounded bg-muted\" />\n </div>\n </div>\n <div className=\"mt-3 space-y-2\">\n <div className=\"h-4 w-full rounded bg-muted\" />\n <div className=\"h-4 w-3/4 rounded bg-muted\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n // Error state\n if (error) {\n return (\n <div\n data-error\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"rounded-lg border border-destructive/50 bg-destructive/5 p-4 text-center\">\n <X className=\"mx-auto h-8 w-8 text-destructive\" />\n <p className=\"mt-2 text-sm text-destructive\">{error}</p>\n <Button\n className=\"mt-3\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => onLoadMore?.({})}\n >\n Tentar novamente\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n data-variant={variant}\n id={systemId}\n {...props}\n >\n {/* Input for new comments */}\n {showInput && (\n <div className=\"mb-4\" data-slot=\"comment-system-input\">\n <CommentInput\n allowAttachments={allowAttachments}\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n placeholder={placeholder}\n onMention={onMention}\n onSubmit={onSubmit}\n />\n </div>\n )}\n\n {/* Comments list */}\n {hasComments ? (\n <div data-slot=\"comment-system-list\" role=\"feed\">\n {comments.map((comment) => (\n <CommentItem\n key={comment.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={comment}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n layout={layout ?? \"list\"}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={handleReply}\n />\n ))}\n </div>\n ) : (\n <div\n className={commentEmptyStateVariants({\n variant: variant === \"compact\" ? \"compact\" : \"default\",\n })}\n data-slot=\"comment-system-empty\"\n >\n <MessageCircle className=\"h-12 w-12 text-muted-foreground/50\" />\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Nenhum comentário ainda.\n </p>\n {!readOnly && currentUser && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Seja o primeiro a comentar!\n </p>\n )}\n </div>\n )}\n\n {/* Load more button */}\n {onLoadMore && hasComments && (\n <div className=\"mt-4 text-center\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n onLoadMore({ before: comments[comments.length - 1]?.id })\n }}\n >\n Carregar mais comentários\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n CommentInput,\n commentInputContainerVariants,\n CommentItem,\n commentItemVariants,\n commentMentionVariants,\n CommentReactions,\n commentReactionVariants,\n commentRepliesVariants,\n CommentSystem,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n defaultReactions,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n}\n\nexport type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/CommentSystem/CommentSystem.types.ts","../src/components/workflow/CommentSystem/CommentSystem.variants.ts","../src/components/workflow/CommentSystem/CommentSystem.tsx"],"names":[],"mappings":"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","file":"chunk-JE46MFMN.js","sourcesContent":["import type { commentSystemVariants } from \"./CommentSystem.variants\"\nimport type { VariantProps } from \"class-variance-authority\"\n\n/**\n * User data structure for comment system\n */\nexport interface CommentUser {\n /** Avatar URL (optional) */\n avatar?: string\n /** Email address (optional) */\n email?: string\n /** Unique identifier */\n id: string\n /** Display name */\n name: string\n /** Role or title (optional) */\n role?: string\n}\n\n/**\n * Attachment data structure\n */\nexport interface CommentAttachment {\n /** Unique identifier */\n id: string\n /** File name */\n name: string\n /** File size in bytes (optional) */\n size?: number\n /** Thumbnail URL for images (optional) */\n thumbnail?: string\n /** Type of attachment */\n type: \"file\" | \"image\" | \"link\"\n /** File URL */\n url: string\n}\n\n/**\n * Reaction on a comment\n */\nexport interface CommentReaction {\n /** Number of users who reacted */\n count: number\n /** Emoji character */\n emoji: string\n /** Whether current user has reacted */\n hasReacted?: boolean\n /** IDs of users who reacted */\n users: string[]\n}\n\n/**\n * Available reaction configuration\n */\nexport interface Reaction {\n /** Emoji character */\n emoji: string\n /** Display label */\n label: string\n /** Shortcode identifier */\n shortcode: string\n}\n\n/**\n * Comment data structure\n */\nexport interface Comment {\n /** Attachments on this comment (optional) */\n attachments?: CommentAttachment[]\n /** Author of the comment */\n author: CommentUser\n /** Comment content (supports basic markdown) */\n content: string\n /** When the comment was created */\n createdAt: Date\n /** Unique identifier */\n id: string\n /** Whether the comment has been deleted (soft delete) */\n isDeleted?: boolean\n /** Whether the comment has been edited */\n isEdited?: boolean\n /** Whether the comment is pinned */\n isPinned?: boolean\n /** User IDs mentioned in this comment (optional) */\n mentions?: string[]\n /** Parent comment ID for replies (optional) */\n parentId?: string\n /** Reactions on this comment (optional) */\n reactions?: CommentReaction[]\n /** Nested replies (optional) */\n replies?: Comment[]\n /** When the comment was last updated (optional) */\n updatedAt?: Date\n}\n\n/**\n * Default reactions available in the system\n */\nexport const defaultReactions: Reaction[] = [\n { emoji: \"👍\", label: \"Curtir\", shortcode: \"thumbsup\" },\n { emoji: \"❤️\", label: \"Amei\", shortcode: \"heart\" },\n { emoji: \"😄\", label: \"Haha\", shortcode: \"smile\" },\n { emoji: \"🎉\", label: \"Celebrar\", shortcode: \"tada\" },\n { emoji: \"🤔\", label: \"Pensativo\", shortcode: \"thinking\" },\n { emoji: \"👀\", label: \"Olhando\", shortcode: \"eyes\" },\n]\n\n/**\n * Payload for onSubmit event\n */\nexport interface CommentSubmitPayload {\n /** Attachments (when allowAttachments is true) */\n attachments?: CommentAttachment[]\n /** Comment content */\n content: string\n /** User IDs mentioned in the comment */\n mentions: string[]\n /** Parent comment ID if replying */\n parentId?: string\n}\n\n/**\n * Payload for onEdit event\n */\nexport interface CommentEditPayload {\n /** New content */\n content: string\n /** ID of the comment being edited */\n id: string\n}\n\n/**\n * Payload for onDelete event\n */\nexport interface CommentDeletePayload {\n /** ID of the comment being deleted */\n id: string\n}\n\n/**\n * Payload for onReact event\n */\nexport interface CommentReactPayload {\n /** ID of the comment being reacted to */\n commentId: string\n /** Reaction emoji or shortcode */\n reaction: string\n}\n\n/**\n * Payload for onMention event\n */\nexport interface CommentMentionPayload {\n /** ID of the user being mentioned */\n userId: string\n}\n\n/**\n * Payload for onLoadMore event\n */\nexport interface CommentLoadMorePayload {\n /** Load comments before this ID (for pagination) */\n before?: string\n}\n\n/**\n * Props for CommentSystem component\n */\nexport interface CommentSystemProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\">,\n VariantProps<typeof commentSystemVariants> {\n /** Allow file attachments @default false */\n allowAttachments?: boolean\n /** Allow deleting own comments @default true */\n allowDeleting?: boolean\n /** Allow editing own comments @default true */\n allowEditing?: boolean\n /** Allow @mentions @default true */\n allowMentions?: boolean\n /** Allow reactions on comments @default true */\n allowReactions?: boolean\n /** Allow replies to comments @default true */\n allowReplies?: boolean\n /** Array of comments to display */\n comments: Comment[]\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Currently logged in user (required for posting) */\n currentUser?: CommentUser\n /** Error state message */\n error?: string\n /** Loading state */\n isLoading?: boolean\n /** Maximum thread depth @default 3 */\n maxDepth?: number\n /** Users available for @mention */\n mentionableUsers?: CommentUser[]\n /** Called when a comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when a comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when more comments should be loaded */\n onLoadMore?: (payload: CommentLoadMorePayload) => void\n /** Called when a user is mentioned */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when a reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when a new comment is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Placeholder text for input */\n placeholder?: string\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode (no input, no actions) @default false */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentItem component\n */\nexport interface CommentItemProps\n extends Omit<React.ComponentProps<\"article\">, \"children\"> {\n /** Allow deleting */\n allowDeleting?: boolean\n /** Allow editing */\n allowEditing?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Allow reactions */\n allowReactions?: boolean\n /** Allow replies */\n allowReplies?: boolean\n /** The comment to display */\n comment: Comment\n /** Optional confirmation handler before deleting a comment */\n confirmDelete?: (comment: Comment) => boolean\n /** Current user for permission checks */\n currentUser?: CommentUser\n /** Current depth in thread */\n depth?: number\n /** Layout style */\n layout?: \"chat\" | \"list\" | \"timeline\"\n /** Maximum thread depth */\n maxDepth?: number\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when comment is deleted */\n onDelete?: (payload: CommentDeletePayload) => void\n /** Called when comment is edited */\n onEdit?: (payload: CommentEditPayload) => void\n /** Called when reaction is added/removed */\n onReact?: (payload: CommentReactPayload) => void\n /** Called when reply is submitted */\n onReply?: (payload: CommentSubmitPayload) => void\n /** Available reactions */\n reactions?: Reaction[]\n /** Read-only mode */\n readOnly?: boolean\n}\n\n/**\n * Props for CommentInput component\n */\nexport interface CommentInputProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"onSubmit\"> {\n /** Allow attachments */\n allowAttachments?: boolean\n /** Allow mentions */\n allowMentions?: boolean\n /** Cancel button label (for editing/replying) */\n cancelLabel?: string\n /** Initial content (for editing) */\n initialContent?: string\n /** Whether in edit mode */\n isEditing?: boolean\n /** Whether currently submitting */\n isSubmitting?: boolean\n /** Mentionable users */\n mentionableUsers?: CommentUser[]\n /** Called when cancel is clicked */\n onCancel?: () => void\n /** Called when a mention is triggered */\n onMention?: (payload: CommentMentionPayload) => void\n /** Called when form is submitted */\n onSubmit?: (payload: CommentSubmitPayload) => void\n /** Parent comment ID if replying */\n parentId?: string\n /** Placeholder text */\n placeholder?: string\n /** Show cancel button */\n showCancel?: boolean\n /** Submit button label */\n submitLabel?: string\n}\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * CommentSystem container variants\n */\nexport const commentSystemVariants = cva(\n \"relative w-full transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"\",\n threaded: \"\",\n inline: \"border rounded-lg shadow-sm\",\n compact: \"\",\n },\n layout: {\n list: \"flex flex-col gap-4\",\n chat: \"flex flex-col gap-2\",\n timeline: \"flex flex-col\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n layout: \"list\",\n },\n }\n)\n\n/**\n * CommentItem variants\n */\nexport const commentItemVariants = cva(\n \"relative transition-all duration-200\",\n {\n variants: {\n layout: {\n list: \"rounded-lg border bg-card p-4\",\n chat: \"rounded-2xl px-4 py-2 max-w-[85%]\",\n timeline: \"relative pl-8 pb-6 border-l-2 border-muted-foreground/20 ml-4\",\n },\n isOwn: {\n true: \"\",\n false: \"\",\n },\n isPinned: {\n true: \"ring-1 ring-primary/30 bg-primary/5\",\n false: \"\",\n },\n isDeleted: {\n true: \"opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n layout: \"chat\",\n isOwn: true,\n className: \"ml-auto bg-primary text-primary-foreground\",\n },\n {\n layout: \"chat\",\n isOwn: false,\n className: \"mr-auto bg-muted\",\n },\n ],\n defaultVariants: {\n layout: \"list\",\n isOwn: false,\n isPinned: false,\n isDeleted: false,\n },\n }\n)\n\n/**\n * Comment header variants (author info and timestamp)\n */\nexport const commentHeaderVariants = cva(\n \"flex items-center gap-3\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"\",\n timeline: \"\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment content variants\n */\nexport const commentContentVariants = cva(\n \"text-sm\",\n {\n variants: {\n layout: {\n list: \"mt-2\",\n chat: \"\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Comment actions (reply, edit, delete, react)\n */\nexport const commentActionsVariants = cva(\n \"flex items-center gap-2 text-xs\",\n {\n variants: {\n layout: {\n list: \"mt-3 pt-3 border-t border-muted\",\n chat: \"mt-1\",\n timeline: \"mt-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Reply thread container variants\n */\nexport const commentRepliesVariants = cva(\n \"relative\",\n {\n variants: {\n layout: {\n list: \"pl-8 mt-4 space-y-4\",\n chat: \"pl-6 mt-2 space-y-2\",\n timeline: \"pl-4 mt-2 space-y-2\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Thread line connector\n */\nexport const commentThreadLineVariants = cva(\n \"absolute left-4 top-0 bottom-0 w-0.5 bg-muted-foreground/20\",\n {\n variants: {\n layout: {\n list: \"\",\n chat: \"left-3\",\n timeline: \"left-0\",\n },\n },\n defaultVariants: {\n layout: \"list\",\n },\n }\n)\n\n/**\n * Mention highlight in content\n */\nexport const commentMentionVariants = cva(\n \"inline-flex items-center rounded px-1 font-medium cursor-pointer hover:underline\",\n {\n variants: {\n style: {\n default: \"bg-primary/10 text-primary\",\n subtle: \"text-primary\",\n },\n },\n defaultVariants: {\n style: \"default\",\n },\n }\n)\n\n/**\n * Reaction badge variants\n */\nexport const commentReactionVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs cursor-pointer transition-colors\",\n {\n variants: {\n hasReacted: {\n true: \"bg-primary/10 border-primary/30 text-primary\",\n false: \"bg-muted border-transparent text-muted-foreground hover:bg-muted-foreground/10\",\n },\n },\n defaultVariants: {\n hasReacted: false,\n },\n }\n)\n\n/**\n * Comment input container\n */\nexport const commentInputContainerVariants = cva(\n \"relative rounded-md border bg-background transition-all duration-200\",\n {\n variants: {\n isFocused: {\n true: \"ring-2 ring-ring ring-offset-2\",\n false: \"\",\n },\n isSubmitting: {\n true: \"opacity-70 pointer-events-none\",\n false: \"\",\n },\n },\n defaultVariants: {\n isFocused: false,\n isSubmitting: false,\n },\n }\n)\n\n/**\n * Mention suggestions popover\n */\nexport const mentionSuggestionsVariants = cva(\n \"absolute z-50 min-w-52 overflow-hidden rounded-md border bg-popover p-1 shadow-md\",\n {\n variants: {\n position: {\n above: \"bottom-full mb-1\",\n below: \"top-full mt-1\",\n },\n },\n defaultVariants: {\n position: \"below\",\n },\n }\n)\n\n/**\n * Mention suggestion item\n */\nexport const mentionSuggestionItemVariants = cva(\n \"flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm cursor-pointer transition-colors\",\n {\n variants: {\n isSelected: {\n true: \"bg-accent text-accent-foreground\",\n false: \"hover:bg-accent hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n isSelected: false,\n },\n }\n)\n\n/**\n * Empty state variants\n */\nexport const commentEmptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center p-8\",\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * Timeline marker for timeline layout\n */\nexport const commentTimelineMarkerVariants = cva(\n \"absolute -left-2 top-0 flex h-4 w-4 items-center justify-center rounded-full border-2 bg-background\",\n {\n variants: {\n status: {\n default: \"border-muted-foreground/50\",\n active: \"border-primary bg-primary\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type CommentSystemVariantProps = VariantProps<typeof commentSystemVariants>\nexport type CommentItemVariantProps = VariantProps<typeof commentItemVariants>\nexport type CommentReactionVariantProps = VariantProps<typeof commentReactionVariants>\nexport type CommentInputContainerVariantProps = VariantProps<typeof commentInputContainerVariants>\nexport type MentionSuggestionsVariantProps = VariantProps<typeof mentionSuggestionsVariants>\nexport type MentionSuggestionItemVariantProps = VariantProps<typeof mentionSuggestionItemVariants>\n","import type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n} from \"./CommentSystem.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n CornerDownRight,\n Edit2,\n MessageCircle,\n MoreHorizontal,\n Paperclip,\n Send,\n Smile,\n Trash2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Textarea } from \"../../forms/Textarea\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport { defaultReactions } from \"./CommentSystem.types\"\nimport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n commentInputContainerVariants,\n commentItemVariants,\n commentMentionVariants,\n commentReactionVariants,\n commentRepliesVariants,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n} from \"./CommentSystem.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Format relative time\n */\nfunction formatRelativeTime(date: Date): string {\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffSecs = Math.floor(diffMs / 1000)\n const diffMins = Math.floor(diffSecs / 60)\n const diffHours = Math.floor(diffMins / 60)\n const diffDays = Math.floor(diffHours / 24)\n\n if (diffSecs < 60) return \"agora\"\n if (diffMins < 60) return `${String(diffMins)}m atrás`\n if (diffHours < 24) return `${String(diffHours)}h atrás`\n if (diffDays < 7) return `${String(diffDays)}d atrás`\n\n return date.toLocaleDateString()\n}\n\n/**\n * Parse content and highlight mentions\n */\nfunction parseContent(\n content: string,\n mentionableUsers?: CommentUser[],\n onMentionClick?: (userId: string) => void\n): ReactNode {\n if (!content) return null\n\n // Pattern to match @mentions\n const mentionPattern = /@(\\w+)/g\n const parts: ReactNode[] = []\n let lastIndex = 0\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n // Add text before the mention\n if (match.index > lastIndex) {\n parts.push(content.slice(lastIndex, match.index))\n }\n\n const mentionName = match[1]\n const user = mentionableUsers?.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === mentionName?.toLowerCase()\n )\n\n parts.push(\n <span\n key={match.index}\n className={commentMentionVariants()}\n role=\"button\"\n tabIndex={0}\n onClick={() => { if (user) { onMentionClick?.(user.id); } }}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && user) {\n onMentionClick?.(user.id);\n }\n }}\n >\n @{mentionName}\n </span>\n )\n\n lastIndex = match.index + match[0].length\n }\n\n // Add remaining text\n if (lastIndex < content.length) {\n parts.push(content.slice(lastIndex))\n }\n\n return parts.length > 0 ? parts : content\n}\n\n/**\n * CommentInput component for writing new comments or editing\n */\nfunction CommentInput({\n placeholder = \"Escreva um comentário...\",\n allowMentions = true,\n allowAttachments = false,\n mentionableUsers = [],\n parentId,\n initialContent = \"\",\n submitLabel = \"Enviar\",\n cancelLabel = \"Cancelar\",\n isEditing = false,\n isSubmitting = false,\n showCancel = false,\n onSubmit,\n onCancel,\n onMention,\n className,\n ...props\n}: CommentInputProps) {\n const inputId = useId()\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const [content, setContent] = useState(initialContent)\n const [isFocused, setIsFocused] = useState(false)\n const [showMentions, setShowMentions] = useState(false)\n const [mentionSearch, setMentionSearch] = useState(\"\")\n const [selectedMentionIndex, setSelectedMentionIndex] = useState(0)\n\n const filteredUsers = useMemo(() => {\n if (!mentionSearch) return mentionableUsers.slice(0, 5)\n return mentionableUsers\n .filter((u) => u.name.toLowerCase().includes(mentionSearch.toLowerCase()))\n .slice(0, 5)\n }, [mentionableUsers, mentionSearch])\n\n const handleSubmit = useCallback(() => {\n if (!content.trim() || isSubmitting) return\n\n // Extract mentions from content\n const mentionPattern = /@(\\w+)/g\n const mentions: string[] = []\n let match\n\n while ((match = mentionPattern.exec(content)) !== null) {\n const matchName = match[1] ?? \"\"\n const user = mentionableUsers.find(\n (u) => u.name.toLowerCase().replaceAll(/\\s+/g, \"\") === matchName.toLowerCase()\n )\n if (user && !mentions.includes(user.id)) {\n mentions.push(user.id)\n }\n }\n\n onSubmit?.({\n content: content.trim(),\n parentId,\n mentions,\n })\n\n if (!isEditing) {\n setContent(\"\")\n }\n }, [content, isSubmitting, isEditing, parentId, mentionableUsers, onSubmit])\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (showMentions) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) =>\n Math.min(prev + 1, filteredUsers.length - 1)\n )\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setSelectedMentionIndex((prev) => Math.max(prev - 1, 0))\n } else if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault()\n const selectedUser = filteredUsers[selectedMentionIndex]\n if (selectedUser) {\n insertMention(selectedUser)\n }\n } else if (e.key === \"Escape\") {\n setShowMentions(false)\n }\n } else if (e.key === \"Enter\" && (e.ctrlKey || e.metaKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }\n\n const handleChange = (value: string) => {\n setContent(value)\n\n if (allowMentions) {\n // Check for @ trigger\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = value.slice(0, cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n setShowMentions(true)\n setMentionSearch(atMatch[1] ?? \"\")\n setSelectedMentionIndex(0)\n } else {\n setShowMentions(false)\n setMentionSearch(\"\")\n }\n }\n }\n\n const insertMention = (user: CommentUser) => {\n const cursorPos = textareaRef.current?.selectionStart ?? 0\n const textBeforeCursor = content.slice(0, cursorPos)\n const textAfterCursor = content.slice(cursorPos)\n const atMatch = /@(\\w*)$/.exec(textBeforeCursor)\n\n if (atMatch) {\n const newTextBefore = textBeforeCursor.slice(0, atMatch.index)\n const mention = `@${user.name.replaceAll(/\\s+/g, \"\")} `\n setContent(newTextBefore + mention + textAfterCursor)\n setShowMentions(false)\n setMentionSearch(\"\")\n onMention?.({ userId: user.id })\n\n // Focus back on textarea\n setTimeout(() => {\n textareaRef.current?.focus()\n const newCursorPos = newTextBefore.length + mention.length\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos)\n }, 0)\n }\n }\n\n return (\n <div\n className={cn(\n commentInputContainerVariants({ isFocused, isSubmitting }),\n className\n )}\n data-slot=\"comment-input\"\n {...props}\n >\n <div className=\"relative\">\n <Textarea\n ref={textareaRef}\n aria-describedby={`${inputId}-help`}\n aria-label={isEditing ? \"Editar comentário\" : \"Novo comentário\"}\n className=\"min-h-20 resize-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n disabled={isSubmitting}\n id={inputId}\n placeholder={placeholder}\n value={content}\n onBlur={() => { setIsFocused(false); }}\n onChange={(e) => { handleChange(e.target.value); }}\n onFocus={() => { setIsFocused(true); }}\n onKeyDown={handleKeyDown}\n />\n\n {/* Mention suggestions */}\n {showMentions && filteredUsers.length > 0 && (\n <div\n className={mentionSuggestionsVariants({ position: \"below\" })}\n data-slot=\"comment-mention-suggestions\"\n role=\"listbox\"\n >\n {filteredUsers.map((user, index) => (\n <button\n key={user.id}\n className={mentionSuggestionItemVariants({\n isSelected: index === selectedMentionIndex,\n })}\n aria-selected={index === selectedMentionIndex}\n role=\"option\"\n type=\"button\"\n onClick={() => { insertMention(user); }}\n >\n <Avatar size=\"xs\">\n {user.avatar ? (\n <AvatarImage alt={user.name} src={user.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n <span>{user.name}</span>\n {user.role && (\n <span className=\"text-muted-foreground text-xs\">\n {user.role}\n </span>\n )}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between border-t p-2\">\n <div className=\"flex items-center gap-1\">\n {allowMentions && (\n <Button\n aria-label=\"Mencionar alguém\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n const newContent = content + \"@\"\n setContent(newContent)\n handleChange(newContent)\n textareaRef.current?.focus()\n }}\n >\n <span className=\"text-sm font-medium\">@</span>\n </Button>\n )}\n {allowAttachments && (\n <Button\n aria-label=\"Anexar arquivo\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n aria-label=\"Adicionar emoji\"\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Smile className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showCancel && (\n <Button\n disabled={isSubmitting}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n )}\n <Button\n disabled={!content.trim() || isSubmitting}\n size=\"sm\"\n type=\"button\"\n onClick={handleSubmit}\n >\n <Send className=\"mr-1 h-4 w-4\" />\n {submitLabel}\n </Button>\n </div>\n </div>\n\n <span className=\"sr-only\" id={`${inputId}-help`}>\n Pressione Ctrl+Enter para enviar. Use @ para mencionar alguém.\n </span>\n </div>\n )\n}\n\n/**\n * CommentReactions component displays and manages reactions\n */\nfunction CommentReactions({\n commentId,\n reactions = [],\n availableReactions = defaultReactions,\n readOnly = false,\n onReact,\n}: {\n availableReactions?: Reaction[]\n commentId: string\n onReact?: (payload: CommentReactPayload) => void\n reactions?: { count: number; emoji: string; hasReacted?: boolean; users: string[] }[]\n readOnly?: boolean\n}) {\n const [showPicker, setShowPicker] = useState(false)\n\n const handleReact = (emoji: string) => {\n onReact?.({ commentId, reaction: emoji })\n setShowPicker(false)\n }\n\n return (\n <div className=\"flex flex-wrap items-center gap-1\" data-slot=\"comment-reactions\">\n {reactions.map((reaction) => (\n <button\n key={reaction.emoji}\n className={commentReactionVariants({\n hasReacted: reaction.hasReacted,\n })}\n disabled={readOnly}\n title={`${String(reaction.count)} ${reaction.count === 1 ? \"pessoa\" : \"pessoas\"}`}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n <span>{reaction.emoji}</span>\n <span>{reaction.count}</span>\n </button>\n ))}\n\n {!readOnly && (\n <div className=\"relative\">\n <button\n className=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-dashed border-muted-foreground/30 text-muted-foreground transition-colors hover:border-muted-foreground hover:text-foreground\"\n title=\"Adicionar reação\"\n type=\"button\"\n onClick={() => { setShowPicker(!showPicker); }}\n >\n <Smile className=\"h-3 w-3\" />\n </button>\n\n {showPicker && (\n <div\n className=\"absolute bottom-full left-0 z-50 mb-1 flex gap-1 rounded-lg border bg-popover p-2 shadow-lg\"\n role=\"listbox\"\n >\n {availableReactions.map((reaction) => (\n <button\n key={reaction.shortcode}\n className=\"rounded p-1 text-lg transition-colors hover:bg-accent\"\n role=\"option\"\n title={reaction.label}\n type=\"button\"\n onClick={() => { handleReact(reaction.emoji); }}\n >\n {reaction.emoji}\n </button>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * CommentItem component renders a single comment\n */\nfunction CommentItem({\n comment,\n confirmDelete,\n currentUser,\n depth = 0,\n maxDepth = 3,\n layout = \"list\",\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n reactions = defaultReactions,\n mentionableUsers = [],\n readOnly = false,\n onReply,\n onEdit,\n onDelete,\n onReact,\n className,\n ...props\n}: CommentItemProps) {\n const commentId = useId()\n const [isReplying, setIsReplying] = useState(false)\n const [isEditing, setIsEditing] = useState(false)\n const [showActions, setShowActions] = useState(false)\n\n const isOwn = currentUser?.id === comment.author.id\n const canReply = allowReplies && depth < maxDepth && !readOnly\n const canEdit = allowEditing && isOwn && !readOnly && !comment.isDeleted\n const canDelete = allowDeleting && isOwn && !readOnly && !comment.isDeleted\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onReply?.({ ...payload, parentId: comment.id })\n setIsReplying(false)\n }\n\n const handleEdit = (payload: CommentSubmitPayload) => {\n onEdit?.({ id: comment.id, content: payload.content })\n setIsEditing(false)\n }\n\n const handleDelete = () => {\n const shouldDelete = confirmDelete\n ? confirmDelete(comment)\n : window.confirm(\"Tem certeza que deseja excluir este comentário?\")\n\n if (shouldDelete) {\n onDelete?.({ id: comment.id })\n }\n }\n\n if (comment.isDeleted) {\n return (\n <article\n data-deleted\n aria-label=\"Comentário excluído\"\n className={cn(commentItemVariants({ layout, isDeleted: true }), className)}\n data-slot=\"comment-item\"\n {...props}\n >\n <p className=\"text-sm italic text-muted-foreground\">\n Este comentário foi excluído.\n </p>\n </article>\n )\n }\n\n return (\n <article\n className={cn(\n commentItemVariants({ layout, isOwn, isPinned: comment.isPinned }),\n className\n )}\n aria-describedby={`${commentId}-content`}\n aria-label={`Comentário de ${comment.author.name}`}\n data-slot=\"comment-item\"\n {...props}\n >\n {/* Timeline marker */}\n {layout === \"timeline\" && (\n <div\n className={commentTimelineMarkerVariants({ status: \"default\" })}\n data-slot=\"comment-timeline-marker\"\n />\n )}\n\n {/* Header */}\n <div className={commentHeaderVariants({ layout })} data-slot=\"comment-header\">\n {layout !== \"chat\" && (\n <Avatar size=\"sm\">\n {comment.author.avatar ? (\n <AvatarImage alt={comment.author.name} src={comment.author.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(comment.author.name)}</AvatarFallback>\n </Avatar>\n )}\n\n <div className=\"flex flex-1 items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {comment.author.name}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {formatRelativeTime(comment.createdAt)}\n </span>\n {comment.isEdited && (\n <span className=\"text-xs text-muted-foreground\">(editado)</span>\n )}\n {comment.isPinned && (\n <span className=\"text-xs font-medium text-primary\">Fixado</span>\n )}\n </div>\n\n {(canEdit || canDelete) && (\n <div className=\"relative\">\n <Button\n aria-expanded={showActions}\n aria-haspopup=\"true\"\n aria-label=\"Mais ações\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setShowActions(!showActions); }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n\n {showActions && (\n <div\n className=\"absolute right-0 top-full z-10 mt-1 min-w-28 rounded-md border bg-popover p-1 shadow-md\"\n role=\"menu\"\n >\n {canEdit && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n setIsEditing(true)\n setShowActions(false)\n }}\n >\n <Edit2 className=\"h-3.5 w-3.5\" />\n Editar\n </button>\n )}\n {canDelete && (\n <button\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-destructive hover:bg-accent\"\n role=\"menuitem\"\n type=\"button\"\n onClick={() => {\n handleDelete()\n setShowActions(false)\n }}\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n Excluir\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Content */}\n {isEditing ? (\n <div className=\"mt-2\">\n <CommentInput\n isEditing\n showCancel\n allowMentions={allowMentions}\n cancelLabel=\"Cancelar\"\n initialContent={comment.content}\n mentionableUsers={mentionableUsers}\n placeholder=\"Editar comentário...\"\n submitLabel=\"Salvar\"\n onCancel={() => { setIsEditing(false); }}\n onSubmit={handleEdit}\n />\n </div>\n ) : (\n <div\n className={commentContentVariants({ layout })}\n data-slot=\"comment-content\"\n id={`${commentId}-content`}\n >\n <p className=\"whitespace-pre-wrap\">\n {parseContent(comment.content, mentionableUsers)}\n </p>\n </div>\n )}\n\n {/* Attachments */}\n {comment.attachments && comment.attachments.length > 0 && (\n <div className=\"mt-2 flex flex-wrap gap-2\" data-slot=\"comment-attachments\">\n {comment.attachments.map((attachment) => (\n <a\n key={attachment.id}\n className=\"flex items-center gap-1 rounded border bg-muted/50 px-2 py-1 text-xs hover:bg-muted\"\n href={attachment.url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <Paperclip className=\"h-3 w-3\" />\n {attachment.name}\n </a>\n ))}\n </div>\n )}\n\n {/* Reactions */}\n {allowReactions && (\n <div className=\"mt-2\">\n <CommentReactions\n availableReactions={reactions}\n commentId={comment.id}\n reactions={comment.reactions}\n readOnly={readOnly}\n onReact={onReact}\n />\n </div>\n )}\n\n {/* Actions */}\n <div className={commentActionsVariants({ layout })} data-slot=\"comment-actions\">\n {canReply && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => { setIsReplying(!isReplying); }}\n >\n <CornerDownRight className=\"mr-1 h-3 w-3\" />\n Responder\n </Button>\n )}\n </div>\n\n {/* Reply input */}\n {isReplying && (\n <div className=\"mt-3\">\n <CommentInput\n showCancel\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n parentId={comment.id}\n placeholder={`Responder a ${comment.author.name}...`}\n onCancel={() => { setIsReplying(false); }}\n onSubmit={handleReply}\n />\n </div>\n )}\n\n {/* Replies */}\n {comment.replies && comment.replies.length > 0 && (\n <div\n className={cn(\n commentRepliesVariants({ layout }),\n \"relative\"\n )}\n data-slot=\"comment-replies\"\n >\n {layout === \"list\" && (\n <div className={commentThreadLineVariants({ layout })} />\n )}\n {comment.replies.map((reply) => (\n <CommentItem\n key={reply.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={reply}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n depth={depth + 1}\n layout={layout}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={onReply}\n />\n ))}\n </div>\n )}\n </article>\n )\n}\n\n/**\n * CommentSystem displays and manages a complete comment system\n * with threading, mentions, reactions, and moderation support.\n *\n * @example\n * ```tsx\n * const comments = [\n * {\n * id: '1',\n * content: 'Great work!',\n * author: { id: '1', name: 'John Doe' },\n * createdAt: new Date()\n * }\n * ]\n *\n * <CommentSystem\n * comments={comments}\n * currentUser={{ id: '2', name: 'Jane Doe' }}\n * onSubmit={({ content }) => console.log('New comment:', content)}\n * />\n * ```\n */\nfunction CommentSystem({\n comments,\n variant = \"default\",\n layout = \"list\",\n confirmDelete,\n currentUser,\n allowReplies = true,\n allowReactions = true,\n allowEditing = true,\n allowDeleting = true,\n allowMentions = true,\n allowAttachments = false,\n maxDepth = 3,\n mentionableUsers = [],\n reactions = defaultReactions,\n placeholder = \"Escreva um comentário...\",\n readOnly = false,\n isLoading = false,\n error,\n onSubmit,\n onEdit,\n onDelete,\n onReact,\n onMention,\n onLoadMore,\n className,\n \"aria-label\": ariaLabel = \"Sistema de comentários\",\n ...props\n}: CommentSystemProps) {\n const systemId = useId()\n\n const handleReply = (payload: CommentSubmitPayload) => {\n onSubmit?.(payload)\n }\n\n const hasComments = comments.length > 0\n const showInput = !readOnly && currentUser\n\n // Loading state\n if (isLoading) {\n return (\n <div\n data-loading\n aria-busy=\"true\"\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"flex flex-col gap-4\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"animate-pulse rounded-lg border bg-card p-4\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 rounded bg-muted\" />\n <div className=\"h-3 w-16 rounded bg-muted\" />\n </div>\n </div>\n <div className=\"mt-3 space-y-2\">\n <div className=\"h-4 w-full rounded bg-muted\" />\n <div className=\"h-4 w-3/4 rounded bg-muted\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n // Error state\n if (error) {\n return (\n <div\n data-error\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n {...props}\n >\n <div className=\"rounded-lg border border-destructive/50 bg-destructive/5 p-4 text-center\">\n <X className=\"mx-auto h-8 w-8 text-destructive\" />\n <p className=\"mt-2 text-sm text-destructive\">{error}</p>\n <Button\n className=\"mt-3\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => onLoadMore?.({})}\n >\n Tentar novamente\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(commentSystemVariants({ variant, layout }), className)}\n data-slot=\"comment-system\"\n data-variant={variant}\n id={systemId}\n {...props}\n >\n {/* Input for new comments */}\n {showInput && (\n <div className=\"mb-4\" data-slot=\"comment-system-input\">\n <CommentInput\n allowAttachments={allowAttachments}\n allowMentions={allowMentions}\n mentionableUsers={mentionableUsers}\n placeholder={placeholder}\n onMention={onMention}\n onSubmit={onSubmit}\n />\n </div>\n )}\n\n {/* Comments list */}\n {hasComments ? (\n <div data-slot=\"comment-system-list\" role=\"feed\">\n {comments.map((comment) => (\n <CommentItem\n key={comment.id}\n allowDeleting={allowDeleting}\n allowEditing={allowEditing}\n allowMentions={allowMentions}\n allowReactions={allowReactions}\n allowReplies={allowReplies}\n comment={comment}\n confirmDelete={confirmDelete}\n currentUser={currentUser}\n layout={layout ?? \"list\"}\n maxDepth={maxDepth}\n mentionableUsers={mentionableUsers}\n reactions={reactions}\n readOnly={readOnly}\n onDelete={onDelete}\n onEdit={onEdit}\n onReact={onReact}\n onReply={handleReply}\n />\n ))}\n </div>\n ) : (\n <div\n className={commentEmptyStateVariants({\n variant: variant === \"compact\" ? \"compact\" : \"default\",\n })}\n data-slot=\"comment-system-empty\"\n >\n <MessageCircle className=\"h-12 w-12 text-muted-foreground/50\" />\n <p className=\"mt-2 text-sm text-muted-foreground\">\n Nenhum comentário ainda.\n </p>\n {!readOnly && currentUser && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Seja o primeiro a comentar!\n </p>\n )}\n </div>\n )}\n\n {/* Load more button */}\n {onLoadMore && hasComments && (\n <div className=\"mt-4 text-center\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n onLoadMore({ before: comments[comments.length - 1]?.id })\n }}\n >\n Carregar mais comentários\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport {\n commentActionsVariants,\n commentContentVariants,\n commentEmptyStateVariants,\n commentHeaderVariants,\n CommentInput,\n commentInputContainerVariants,\n CommentItem,\n commentItemVariants,\n commentMentionVariants,\n CommentReactions,\n commentReactionVariants,\n commentRepliesVariants,\n CommentSystem,\n commentSystemVariants,\n commentThreadLineVariants,\n commentTimelineMarkerVariants,\n defaultReactions,\n mentionSuggestionItemVariants,\n mentionSuggestionsVariants,\n}\n\nexport type {\n Comment,\n CommentAttachment,\n CommentDeletePayload,\n CommentEditPayload,\n CommentInputProps,\n CommentItemProps,\n CommentMentionPayload,\n CommentReaction,\n CommentReactPayload,\n CommentSubmitPayload,\n CommentSystemProps,\n CommentUser,\n Reaction,\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
2
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-TEVGCTUN.js';
2
+ import { cn } from './chunk-RVAYDRMA.js';
3
3
  import * as ProgressPrimitive from '@radix-ui/react-progress';
4
4
  import * as React from 'react';
5
5
  import { cva } from 'class-variance-authority';
@@ -284,5 +284,5 @@ function ProgressBar({
284
284
  }
285
285
 
286
286
  export { ProgressBar, progressBarIndicatorVariants, progressBarLabelVariants, progressBarTooltipVariants, progressBarVariants };
287
- //# sourceMappingURL=chunk-3JCV72FO.js.map
288
- //# sourceMappingURL=chunk-3JCV72FO.js.map
287
+ //# sourceMappingURL=chunk-JFV7CNBP.js.map
288
+ //# sourceMappingURL=chunk-JFV7CNBP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/ProgressBar/ProgressBar.variants.ts","../src/components/primitives/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":";;;;;;;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC,kFAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,MAIR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI,wCAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,oDAAA;AAAA,QACT,OAAA,EAAS,oDAAA;AAAA,QACT,SAAA,EAAW,sDAAA;AAAA,QACX,IAAA,EAAM,iDAAA;AAAA,QACN,OAAA,EAAS,oDAAA;AAAA,QACT,OAAA,EAAS,oDAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,4BAAA,GAA+B,GAAA;AAAA,EAC1C,+IAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,MAIR,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,mDAAA;AAAA,QACT,OAAA,EAAS,mDAAA;AAAA,QACT,SAAA,EAAW,qDAAA;AAAA,QACX,IAAA,EAAM,gDAAA;AAAA,QACN,OAAA,EAAS,mDAAA;AAAA,QACT,OAAA,EAAS,mDAAA;AAAA,QACT,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC,6KAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,MAIR,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,gIAAA;AAAA,QACP,MAAA,EAAQ,wHAAA;AAAA,QACR,cAAA,EAAgB,gFAAA;AAAA,QAChB,iBAAA,EAAmB;AAAA;AACrB,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU;AAAA;AACZ;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC;AAAA,IACE,0DAAA;AAAA,IACA,2DAAA;AAAA,IACA,sCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA,MAIR,QAAA,EAAU;AAAA,QACR,GAAA,EAAK,QAAA;AAAA,QACL,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU;AAAA;AACZ;AAEJ;AC/FA,IAAM,qBAAqB,CAAC,KAAA,KAA0B,CAAA,EAAG,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CAAA;AAKtE,SAAS,gBAAA,CAAiB;AAAA,EACxB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,kBAAA;AAAA,EACd;AACF,CAAA,EAA0B;AAExB,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAA,GAAiB,YAAY,KAAK,CAAA;AAGxC,EAAA,IAAI,QAAA,KAAa,cAAA,IAAkB,QAAA,KAAa,iBAAA,EAAmB;AACjE,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,0BAAA,CAA2B;AAAA,YACzB,QAAA,EAAU,QAAA,KAAa,cAAA,GAAiB,KAAA,GAAQ;AAAA,WACjD;AAAA,SACH;AAAA,QACA,WAAA,EAAU,sBAAA;AAAA,QACV,OAAO,EAAE,IAAA,EAAM,GAAG,MAAA,CAAO,eAAe,CAAC,CAAA,CAAA,CAAA,EAAI;AAAA,QAE5C,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAGA,EAAA,IAAI,aAAa,QAAA,EAAU;AACzB,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,wBAAA,CAAyB,EAAE,UAAU,QAAA,EAAU,GAAG,OAAO,CAAA;AAAA,QACvE,WAAA,EAAU,oBAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAGA,EAAA,IAAI,aAAa,MAAA,EAAQ;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,wBAAA,CAAyB,EAAE,QAAA,EAAU,QAAQ,CAAA;AAAA,QACxD,WAAA,EAAU,oBAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAGA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,wBAAA,CAAyB,EAAE,QAAA,EAAU,SAAS,CAAA;AAAA,MACzD,WAAA,EAAU,oBAAA;AAAA,MAET,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAyBA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ,MAAA;AAAA,EACR,WAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,OAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqB;AAEnB,EAAA,MAAM,eAAA,GAAkB,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,SAChD,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,IAAI,CAAA,EAAI,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA,GAC9C,CAAA;AAEJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAU,KAAA,CAAA,QAAA,CAAS,CAAC,OAAO,CAAA;AACzD,EAAA,MAAM,WAAA,GAAoB,aAAuB,IAAI,CAAA;AAGrD,EAAA,MAAM,cAAc,GAAA,IAAO,WAAA;AAG3B,EAAM,gBAAU,MAAM;AAEpB,IAAA,IAAI,CAAC,WAAW,SAAA,EAAW;AACzB,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,OAAA,GAAU,OAAO,WAAA,KAAgB,UAAA,GAAa,OAAO,WAAA,CAAY,OAAA;AACvE,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,OAAA,KAAY;AACX,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAA,IAAI,OAAO,cAAA,EAAgB;AAEzB,UAAA,qBAAA,CAAsB,MAAM;AAC1B,YAAA,YAAA,CAAa,IAAI,CAAA;AAAA,UACnB,CAAC,CAAA;AAED,UAAA,QAAA,CAAS,UAAA,EAAW;AAAA,QACtB;AAAA,MACF,CAAA;AAAA,MACA,EAAE,WAAW,GAAA;AAAI,KACnB;AAEA,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AAExB,IAAA,OAAO,MAAM;AAAE,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IAAG,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,OAAA,EAAS,SAAA,EAAW,WAAW,CAAC,CAAA;AAGpC,EAAA,MAAM,eAAA,GAAkB,aAAa,KAAA,KAAU,MAAA;AAG/C,EAAA,MAAM,cAAA,GAAiB,YAAY,eAAA,GAAkB,CAAA;AAGrD,EAAA,MAAM,eAAA,GAAkB,CAAC,OAAA,KAAgC;AACvD,IAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,IAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,sBACA,GAAA,CAAC,kBACE,QAAA,EAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,WAAA,mBACJ,IAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,GAAA,EAAK,WAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,mBAAA,CAAoB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,GAAA;AAAA,MACA,KAAA,EAAO,KAAA,IAAS,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA,EAAG,GAAG,CAAA,GAAI,IAAA;AAAA,MAC1D,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAmB,iBAAA,CAAA,SAAA;AAAA,UAAlB;AAAA,YACC,WAAW,EAAA,CAAG,4BAAA,CAA6B,EAAE,KAAA,EAAO,CAAC,CAAA;AAAA,YACrD,WAAA,EAAU,wBAAA;AAAA,YACV,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,YAAA,EAAe,OAAO,GAAA,GAAM,cAAc,CAAC,CAAA,EAAA,CAAA;AAAK;AAAA,SACtE;AAAA,QAAA,CAEE,KAAA,KAAU,cAAA,IAAkB,KAAA,KAAU,iBAAA,KAAsB,eAAA,oBAC5D,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,QAAA,EAAU,KAAA;AAAA,YACV,eAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAIF,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,OAAO,eAAA;AAAA,sBACL,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,aAAU,wBAAA,EAC1C,QAAA,EAAA;AAAA,QAAA,WAAA;AAAA,QACA,eAAA,oBACC,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,QAAA,EAAU,KAAA;AAAA,YACV,eAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EAEJ;AAAA,KACF;AAAA,EACF;AAGA,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,OAAO,eAAA;AAAA,sBACL,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,WAAA;AAAA,QACA,eAAA,oBACC,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,QAAA,EAAU,KAAA;AAAA,YACV,eAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EAEJ;AAAA,KACF;AAAA,EACF;AAGA,EAAA,IAAI,KAAA,KAAU,cAAA,IAAkB,KAAA,KAAU,iBAAA,EAAmB;AAC3D,IAAA,OAAO,eAAA;AAAA,0BACJ,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EAAW,WAAA,EAAU,0BACjC,QAAA,EAAA,WAAA,EACH;AAAA,KACF;AAAA,EACF;AAGA,EAAA,OAAO,gBAAgB,WAAW,CAAA;AACpC","file":"chunk-3JCV72FO.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ProgressBar root (track) variants\n */\nexport const progressBarVariants = cva(\n \"relative w-full overflow-hidden rounded-[var(--progress-bar-root-border-radius)]\",\n {\n variants: {\n /**\n * Size variant for the progress bar height\n */\n size: {\n xs: \"h-[var(--progress-bar-size-xs-height)]\",\n sm: \"h-[var(--progress-bar-size-sm-height)]\",\n md: \"h-[var(--progress-bar-size-md-height)]\",\n lg: \"h-[var(--progress-bar-size-lg-height)]\",\n xl: \"h-[var(--progress-bar-size-xl-height)]\",\n },\n /**\n * Color variant for the progress bar\n * Affects both track and indicator colors\n */\n color: {\n default: \"bg-[color:var(--progress-bar-track-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-track-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-track-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-track-color-info)]\",\n success: \"bg-[color:var(--progress-bar-track-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-track-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-track-color-error)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n },\n }\n)\n\n/**\n * ProgressBar indicator (fill) variants\n */\nexport const progressBarIndicatorVariants = cva(\n \"h-full w-full flex-1 rounded-[var(--progress-bar-indicator-border-radius)] transition-all duration-700 ease-out motion-reduce:transition-none\",\n {\n variants: {\n /**\n * Color variant for the indicator fill\n */\n color: {\n default: \"bg-[color:var(--progress-bar-fill-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-fill-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-fill-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-fill-color-info)]\",\n success: \"bg-[color:var(--progress-bar-fill-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-fill-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-fill-color-error)]\",\n },\n },\n defaultVariants: {\n color: \"default\",\n },\n }\n)\n\n/**\n * Label container variants for different positions\n */\nexport const progressBarLabelVariants = cva(\n \"text-[length:var(--progress-bar-label-text-font-size)] font-[var(--progress-bar-label-text-font-weight)] [font-variant-numeric:var(--progress-bar-label-text-tabular-nums)]\",\n {\n variants: {\n /**\n * Label position relative to the progress bar\n */\n position: {\n none: \"sr-only\",\n right: \"ml-[var(--progress-bar-label-position-right-margin-left)] shrink-0 text-[color:var(--progress-bar-label-position-right-color)]\",\n bottom: \"mt-[var(--progress-bar-label-position-bottom-margin-top)] text-[color:var(--progress-bar-label-position-bottom-color)]\",\n \"top-floating\": \"absolute -top-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n \"bottom-floating\": \"absolute -bottom-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n },\n },\n defaultVariants: {\n position: \"none\",\n },\n }\n)\n\n/**\n * Floating tooltip variants (for top-floating and bottom-floating)\n */\nexport const progressBarTooltipVariants = cva(\n [\n \"absolute z-10 px-2 py-1 text-xs font-medium tabular-nums\",\n \"rounded-md border bg-background text-foreground shadow-sm\",\n \"transition-all duration-150 ease-out\",\n \"-translate-x-1/2\",\n ],\n {\n variants: {\n /**\n * Tooltip position\n */\n position: {\n top: \"-top-9\",\n bottom: \"-bottom-9\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n","\"use client\"\n\nimport type { ProgressBarLabelProps, ProgressBarProps } from \"./ProgressBar.types\"\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n progressBarIndicatorVariants,\n progressBarLabelVariants,\n progressBarTooltipVariants,\n progressBarVariants,\n} from \"./ProgressBar.variants\"\n\n/**\n * Default format function for progress value\n */\nconst defaultFormatValue = (value: number): string => `${String(value)}%`\n\n/**\n * Internal component for rendering the progress label\n */\nfunction ProgressBarLabel({\n value,\n position,\n formatValue = defaultFormatValue,\n progressPercent,\n}: ProgressBarLabelProps) {\n // Don't render anything for indeterminate state or none position\n if (value === null || value === undefined) {\n return null\n }\n\n const formattedValue = formatValue(value)\n\n // Floating tooltip that follows the progress\n if (position === \"top-floating\" || position === \"bottom-floating\") {\n return (\n <span\n className={cn(\n progressBarTooltipVariants({\n position: position === \"top-floating\" ? \"top\" : \"bottom\",\n })\n )}\n data-slot=\"progress-bar-tooltip\"\n style={{ left: `${String(progressPercent)}%` }}\n >\n {formattedValue}\n </span>\n )\n }\n\n // Bottom label\n if (position === \"bottom\") {\n return (\n <span\n className={cn(progressBarLabelVariants({ position: \"bottom\" }), \"block\")}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Hidden label for screen readers\n if (position === \"none\") {\n return (\n <span\n className={progressBarLabelVariants({ position: \"none\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Right label (inline)\n return (\n <span\n className={progressBarLabelVariants({ position: \"right\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n}\n\n/**\n * ProgressBar component for displaying task completion status.\n *\n * Built on Radix UI Progress primitive with support for:\n * - Multiple color variants (default, primary, secondary, info, success, warning, error)\n * - Multiple size variants (xs, sm, md, lg, xl)\n * - Label positions (none, right, bottom, top-floating, bottom-floating)\n * - Floating tooltips that follow the progress indicator\n * - Custom value formatting\n * - Indeterminate state\n *\n * @example\n * ```tsx\n * // Basic usage with default green fill\n * <ProgressBar value={50} />\n *\n * // With floating tooltip\n * <ProgressBar value={75} label=\"top-floating\" />\n *\n * // With color and size variants\n * <ProgressBar value={30} color=\"error\" size=\"lg\" />\n * ```\n */\nfunction ProgressBar({\n className,\n value,\n max = 100,\n size,\n color,\n label = \"none\",\n formatValue,\n showValue,\n animate = true,\n tooltip,\n ref,\n ...props\n}: ProgressBarProps) {\n // Calculate percentage based on value and max\n const progressPercent = value !== null && value !== undefined\n ? Math.min(100, Math.max(0, (value / max) * 100))\n : 0\n // Initialize visibility based on animate prop - if not animating, show immediately\n const [isVisible, setIsVisible] = React.useState(!animate)\n const internalRef = React.useRef<HTMLDivElement>(null)\n\n // Merge internal ref with forwarded ref\n const progressRef = ref ?? internalRef\n\n // Use IntersectionObserver to trigger animation only when in viewport\n React.useEffect(() => {\n // Skip if not animating or already visible\n if (!animate || isVisible) {\n return\n }\n\n // Get the element from the ref\n const element = typeof progressRef === \"function\" ? null : progressRef.current\n if (!element) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0]\n if (entry?.isIntersecting) {\n // Small delay to ensure smooth animation start\n requestAnimationFrame(() => {\n setIsVisible(true)\n })\n // Once animated, no need to observe anymore\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n\n observer.observe(element)\n\n return () => { observer.disconnect(); }\n }, [animate, isVisible, progressRef])\n\n // Determine if we should show value based on label position\n const shouldShowValue = showValue ?? label !== \"none\"\n\n // Calculate the transform value - start at 0 if not visible yet (for animation)\n const displayPercent = isVisible ? progressPercent : 0\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 const progressBar = (\n <ProgressPrimitive.Root\n ref={progressRef}\n className={cn(\n progressBarVariants({ size, color }),\n className\n )}\n data-slot=\"progress-bar\"\n max={max}\n value={value != null ? Math.min(Math.max(0, value), max) : null}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(progressBarIndicatorVariants({ color }))}\n data-slot=\"progress-bar-indicator\"\n style={{ transform: `translateX(-${String(100 - displayPercent)}%)` }}\n />\n {/* Floating labels are positioned inside the root for proper positioning */}\n {(label === \"top-floating\" || label === \"bottom-floating\") && shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </ProgressPrimitive.Root>\n )\n\n // Right label needs flex wrapper\n if (label === \"right\") {\n return wrapWithTooltip(\n <div className=\"flex items-center\" data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Bottom label needs column wrapper\n if (label === \"bottom\") {\n return wrapWithTooltip(\n <div data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Floating labels need relative wrapper for absolute positioning\n if (label === \"top-floating\" || label === \"bottom-floating\") {\n return wrapWithTooltip(\n <div className=\"relative\" data-slot=\"progress-bar-container\">\n {progressBar}\n </div>\n )\n }\n\n // No wrapper needed for none label\n return wrapWithTooltip(progressBar)\n}\n\nexport { ProgressBar }\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/ProgressBar/ProgressBar.variants.ts","../src/components/primitives/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"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","file":"chunk-JFV7CNBP.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * ProgressBar root (track) variants\n */\nexport const progressBarVariants = cva(\n \"relative w-full overflow-hidden rounded-[var(--progress-bar-root-border-radius)]\",\n {\n variants: {\n /**\n * Size variant for the progress bar height\n */\n size: {\n xs: \"h-[var(--progress-bar-size-xs-height)]\",\n sm: \"h-[var(--progress-bar-size-sm-height)]\",\n md: \"h-[var(--progress-bar-size-md-height)]\",\n lg: \"h-[var(--progress-bar-size-lg-height)]\",\n xl: \"h-[var(--progress-bar-size-xl-height)]\",\n },\n /**\n * Color variant for the progress bar\n * Affects both track and indicator colors\n */\n color: {\n default: \"bg-[color:var(--progress-bar-track-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-track-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-track-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-track-color-info)]\",\n success: \"bg-[color:var(--progress-bar-track-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-track-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-track-color-error)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n },\n }\n)\n\n/**\n * ProgressBar indicator (fill) variants\n */\nexport const progressBarIndicatorVariants = cva(\n \"h-full w-full flex-1 rounded-[var(--progress-bar-indicator-border-radius)] transition-all duration-700 ease-out motion-reduce:transition-none\",\n {\n variants: {\n /**\n * Color variant for the indicator fill\n */\n color: {\n default: \"bg-[color:var(--progress-bar-fill-color-default)]\",\n primary: \"bg-[color:var(--progress-bar-fill-color-primary)]\",\n secondary: \"bg-[color:var(--progress-bar-fill-color-secondary)]\",\n info: \"bg-[color:var(--progress-bar-fill-color-info)]\",\n success: \"bg-[color:var(--progress-bar-fill-color-success)]\",\n warning: \"bg-[color:var(--progress-bar-fill-color-warning)]\",\n error: \"bg-[color:var(--progress-bar-fill-color-error)]\",\n },\n },\n defaultVariants: {\n color: \"default\",\n },\n }\n)\n\n/**\n * Label container variants for different positions\n */\nexport const progressBarLabelVariants = cva(\n \"text-[length:var(--progress-bar-label-text-font-size)] font-[var(--progress-bar-label-text-font-weight)] [font-variant-numeric:var(--progress-bar-label-text-tabular-nums)]\",\n {\n variants: {\n /**\n * Label position relative to the progress bar\n */\n position: {\n none: \"sr-only\",\n right: \"ml-[var(--progress-bar-label-position-right-margin-left)] shrink-0 text-[color:var(--progress-bar-label-position-right-color)]\",\n bottom: \"mt-[var(--progress-bar-label-position-bottom-margin-top)] text-[color:var(--progress-bar-label-position-bottom-color)]\",\n \"top-floating\": \"absolute -top-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n \"bottom-floating\": \"absolute -bottom-8 text-[color:var(--progress-bar-label-position-floating-color)]\",\n },\n },\n defaultVariants: {\n position: \"none\",\n },\n }\n)\n\n/**\n * Floating tooltip variants (for top-floating and bottom-floating)\n */\nexport const progressBarTooltipVariants = cva(\n [\n \"absolute z-10 px-2 py-1 text-xs font-medium tabular-nums\",\n \"rounded-md border bg-background text-foreground shadow-sm\",\n \"transition-all duration-150 ease-out\",\n \"-translate-x-1/2\",\n ],\n {\n variants: {\n /**\n * Tooltip position\n */\n position: {\n top: \"-top-9\",\n bottom: \"-bottom-9\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n","\"use client\"\n\nimport type { ProgressBarLabelProps, ProgressBarProps } from \"./ProgressBar.types\"\n\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n progressBarIndicatorVariants,\n progressBarLabelVariants,\n progressBarTooltipVariants,\n progressBarVariants,\n} from \"./ProgressBar.variants\"\n\n/**\n * Default format function for progress value\n */\nconst defaultFormatValue = (value: number): string => `${String(value)}%`\n\n/**\n * Internal component for rendering the progress label\n */\nfunction ProgressBarLabel({\n value,\n position,\n formatValue = defaultFormatValue,\n progressPercent,\n}: ProgressBarLabelProps) {\n // Don't render anything for indeterminate state or none position\n if (value === null || value === undefined) {\n return null\n }\n\n const formattedValue = formatValue(value)\n\n // Floating tooltip that follows the progress\n if (position === \"top-floating\" || position === \"bottom-floating\") {\n return (\n <span\n className={cn(\n progressBarTooltipVariants({\n position: position === \"top-floating\" ? \"top\" : \"bottom\",\n })\n )}\n data-slot=\"progress-bar-tooltip\"\n style={{ left: `${String(progressPercent)}%` }}\n >\n {formattedValue}\n </span>\n )\n }\n\n // Bottom label\n if (position === \"bottom\") {\n return (\n <span\n className={cn(progressBarLabelVariants({ position: \"bottom\" }), \"block\")}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Hidden label for screen readers\n if (position === \"none\") {\n return (\n <span\n className={progressBarLabelVariants({ position: \"none\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n }\n\n // Right label (inline)\n return (\n <span\n className={progressBarLabelVariants({ position: \"right\" })}\n data-slot=\"progress-bar-label\"\n >\n {formattedValue}\n </span>\n )\n}\n\n/**\n * ProgressBar component for displaying task completion status.\n *\n * Built on Radix UI Progress primitive with support for:\n * - Multiple color variants (default, primary, secondary, info, success, warning, error)\n * - Multiple size variants (xs, sm, md, lg, xl)\n * - Label positions (none, right, bottom, top-floating, bottom-floating)\n * - Floating tooltips that follow the progress indicator\n * - Custom value formatting\n * - Indeterminate state\n *\n * @example\n * ```tsx\n * // Basic usage with default green fill\n * <ProgressBar value={50} />\n *\n * // With floating tooltip\n * <ProgressBar value={75} label=\"top-floating\" />\n *\n * // With color and size variants\n * <ProgressBar value={30} color=\"error\" size=\"lg\" />\n * ```\n */\nfunction ProgressBar({\n className,\n value,\n max = 100,\n size,\n color,\n label = \"none\",\n formatValue,\n showValue,\n animate = true,\n tooltip,\n ref,\n ...props\n}: ProgressBarProps) {\n // Calculate percentage based on value and max\n const progressPercent = value !== null && value !== undefined\n ? Math.min(100, Math.max(0, (value / max) * 100))\n : 0\n // Initialize visibility based on animate prop - if not animating, show immediately\n const [isVisible, setIsVisible] = React.useState(!animate)\n const internalRef = React.useRef<HTMLDivElement>(null)\n\n // Merge internal ref with forwarded ref\n const progressRef = ref ?? internalRef\n\n // Use IntersectionObserver to trigger animation only when in viewport\n React.useEffect(() => {\n // Skip if not animating or already visible\n if (!animate || isVisible) {\n return\n }\n\n // Get the element from the ref\n const element = typeof progressRef === \"function\" ? null : progressRef.current\n if (!element) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0]\n if (entry?.isIntersecting) {\n // Small delay to ensure smooth animation start\n requestAnimationFrame(() => {\n setIsVisible(true)\n })\n // Once animated, no need to observe anymore\n observer.disconnect()\n }\n },\n { threshold: 0.1 }\n )\n\n observer.observe(element)\n\n return () => { observer.disconnect(); }\n }, [animate, isVisible, progressRef])\n\n // Determine if we should show value based on label position\n const shouldShowValue = showValue ?? label !== \"none\"\n\n // Calculate the transform value - start at 0 if not visible yet (for animation)\n const displayPercent = isVisible ? progressPercent : 0\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 const progressBar = (\n <ProgressPrimitive.Root\n ref={progressRef}\n className={cn(\n progressBarVariants({ size, color }),\n className\n )}\n data-slot=\"progress-bar\"\n max={max}\n value={value != null ? Math.min(Math.max(0, value), max) : null}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(progressBarIndicatorVariants({ color }))}\n data-slot=\"progress-bar-indicator\"\n style={{ transform: `translateX(-${String(100 - displayPercent)}%)` }}\n />\n {/* Floating labels are positioned inside the root for proper positioning */}\n {(label === \"top-floating\" || label === \"bottom-floating\") && shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </ProgressPrimitive.Root>\n )\n\n // Right label needs flex wrapper\n if (label === \"right\") {\n return wrapWithTooltip(\n <div className=\"flex items-center\" data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Bottom label needs column wrapper\n if (label === \"bottom\") {\n return wrapWithTooltip(\n <div data-slot=\"progress-bar-container\">\n {progressBar}\n {shouldShowValue && (\n <ProgressBarLabel\n formatValue={formatValue}\n position={label}\n progressPercent={progressPercent}\n value={value}\n />\n )}\n </div>\n )\n }\n\n // Floating labels need relative wrapper for absolute positioning\n if (label === \"top-floating\" || label === \"bottom-floating\") {\n return wrapWithTooltip(\n <div className=\"relative\" data-slot=\"progress-bar-container\">\n {progressBar}\n </div>\n )\n }\n\n // No wrapper needed for none label\n return wrapWithTooltip(progressBar)\n}\n\nexport { ProgressBar }\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import { cva } from 'class-variance-authority';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
@@ -150,5 +150,5 @@ function SkipLinksList({
150
150
  }
151
151
 
152
152
  export { SkipLink, SkipLinksList, skipLinkVariants, skipLinksListInnerVariants, skipLinksListItemVariants, skipLinksListVariants };
153
- //# sourceMappingURL=chunk-7RTHGI6E.js.map
154
- //# sourceMappingURL=chunk-7RTHGI6E.js.map
153
+ //# sourceMappingURL=chunk-JPRHMMY6.js.map
154
+ //# sourceMappingURL=chunk-JPRHMMY6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/navigation/SkipLinks/SkipLinks.variants.ts","../src/components/navigation/SkipLinks/SkipLinks.tsx"],"names":[],"mappings":"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","file":"chunk-7RTHGI6E.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * SkipLink variant styles\n */\nexport const skipLinkVariants = cva(\n [\n // Base styles\n // Skip links must sit above all chrome (modals, overlays, toasts) so use the\n // top of the z scale (--z-toast = 700).\n \"absolute z-[var(--z-toast)]\",\n \"px-4 py-3 text-sm font-medium\",\n \"rounded-md shadow-lg\",\n // Transition\n \"transition-all duration-200\",\n // Focus styles\n \"focus:outline-none focus:ring-2 focus:ring-offset-2\",\n // Hidden by default, visible on focus\n \"-top-full focus:top-4\",\n ],\n {\n variants: {\n position: {\n \"top-left\": \"left-4\",\n \"top-center\": \"left-1/2 -translate-x-1/2\",\n \"top-right\": \"right-4\",\n },\n variant: {\n default: \"bg-background text-foreground border border-border focus:ring-ring\",\n primary: \"bg-primary text-primary-foreground focus:ring-primary\",\n },\n alwaysVisible: {\n true: \"top-4\",\n false: \"\",\n },\n },\n defaultVariants: {\n position: \"top-left\",\n variant: \"default\",\n alwaysVisible: false,\n },\n }\n)\n\n/**\n * SkipLinksList container variant styles\n */\nexport const skipLinksListVariants = cva([\n // Skip links must sit above all chrome (modals, overlays, toasts) so use the\n // top of the z scale (--z-toast = 700).\n \"fixed z-[var(--z-toast)]\",\n])\n\n/**\n * SkipLinksList inner container variant styles\n */\nexport const skipLinksListInnerVariants = cva(\n [\n // Base styles\n \"absolute\",\n \"flex flex-col gap-4\",\n \"p-2 rounded-lg shadow-lg\",\n \"bg-background border border-border\",\n // Transition\n \"transition-all duration-200\",\n // Hidden by default\n \"-top-full opacity-0 pointer-events-none\",\n // Visible when has focus within\n \"focus-within:top-4 focus-within:opacity-100 focus-within:pointer-events-auto\",\n ],\n {\n variants: {\n position: {\n \"top-left\": \"left-4\",\n \"top-center\": \"left-1/2 -translate-x-1/2\",\n \"top-right\": \"right-4\",\n },\n },\n defaultVariants: {\n position: \"top-left\",\n },\n }\n)\n\n/**\n * SkipLinksList item variant styles\n */\nexport const skipLinksListItemVariants = cva(\n [\n \"block px-3 py-1.5 text-sm font-medium rounded\",\n \"text-foreground hover:bg-accent\",\n \"focus:outline-none focus:bg-accent focus:ring-2 focus:ring-ring\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n primary: \"hover:bg-primary/10 focus:bg-primary/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n SkipLinkProps,\n SkipLinksListProps,\n} from \"./SkipLinks.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n skipLinksListInnerVariants,\n skipLinksListItemVariants,\n skipLinksListVariants,\n skipLinkVariants,\n} from \"./SkipLinks.variants\"\n\n/**\n * SkipLink - An accessibility link that allows users to skip repetitive navigation.\n *\n * Should be the first focusable element on the page. Hidden by default,\n * becomes visible when focused.\n *\n * @example\n * <SkipLink targetId=\"main-content\">\n * Skip to main content\n * </SkipLink>\n *\n * <main id=\"main-content\" tabIndex={-1}>\n * Content here\n * </main>\n */\nfunction SkipLink({\n className,\n targetId,\n children = \"Skip to main content\",\n alwaysVisible = false,\n position = \"top-left\",\n variant = \"default\",\n ...props\n}: SkipLinkProps) {\n return (\n <a\n className={cn(\n skipLinkVariants({ position, variant, alwaysVisible }),\n className\n )}\n data-slot=\"skip-link\"\n href={`#${targetId}`}\n {...props}\n >\n {children}\n </a>\n )\n}\n\n/**\n * SkipLinksList - Multiple skip links for complex layouts.\n *\n * Renders a navigation container with multiple skip links.\n * Container becomes visible when any link receives focus.\n *\n * @example\n * <SkipLinksList\n * links={[\n * { targetId: \"main-content\", label: \"Skip to main content\" },\n * { targetId: \"navigation\", label: \"Skip to navigation\" },\n * { targetId: \"footer\", label: \"Skip to footer\" },\n * ]}\n * />\n */\nfunction SkipLinksList({\n className,\n links,\n position = \"top-left\",\n variant = \"default\",\n ...props\n}: SkipLinksListProps) {\n return (\n <nav\n aria-label=\"Skip links\"\n className={cn(skipLinksListVariants(), className)}\n data-slot=\"skip-links-list\"\n {...props}\n >\n <div\n className={skipLinksListInnerVariants({ position })}\n data-slot=\"skip-links-list-inner\"\n >\n {links.map((link) => (\n <a\n key={link.targetId}\n className={skipLinksListItemVariants({ variant })}\n data-slot=\"skip-links-list-item\"\n href={`#${link.targetId}`}\n >\n {link.label}\n </a>\n ))}\n </div>\n </nav>\n )\n}\n\nexport { SkipLink, SkipLinksList }\n"]}
1
+ {"version":3,"sources":["../src/components/navigation/SkipLinks/SkipLinks.variants.ts","../src/components/navigation/SkipLinks/SkipLinks.tsx"],"names":[],"mappings":"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","file":"chunk-JPRHMMY6.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * SkipLink variant styles\n */\nexport const skipLinkVariants = cva(\n [\n // Base styles\n // Skip links must sit above all chrome (modals, overlays, toasts) so use the\n // top of the z scale (--z-toast = 700).\n \"absolute z-[var(--z-toast)]\",\n \"px-4 py-3 text-sm font-medium\",\n \"rounded-md shadow-lg\",\n // Transition\n \"transition-all duration-200\",\n // Focus styles\n \"focus:outline-none focus:ring-2 focus:ring-offset-2\",\n // Hidden by default, visible on focus\n \"-top-full focus:top-4\",\n ],\n {\n variants: {\n position: {\n \"top-left\": \"left-4\",\n \"top-center\": \"left-1/2 -translate-x-1/2\",\n \"top-right\": \"right-4\",\n },\n variant: {\n default: \"bg-background text-foreground border border-border focus:ring-ring\",\n primary: \"bg-primary text-primary-foreground focus:ring-primary\",\n },\n alwaysVisible: {\n true: \"top-4\",\n false: \"\",\n },\n },\n defaultVariants: {\n position: \"top-left\",\n variant: \"default\",\n alwaysVisible: false,\n },\n }\n)\n\n/**\n * SkipLinksList container variant styles\n */\nexport const skipLinksListVariants = cva([\n // Skip links must sit above all chrome (modals, overlays, toasts) so use the\n // top of the z scale (--z-toast = 700).\n \"fixed z-[var(--z-toast)]\",\n])\n\n/**\n * SkipLinksList inner container variant styles\n */\nexport const skipLinksListInnerVariants = cva(\n [\n // Base styles\n \"absolute\",\n \"flex flex-col gap-4\",\n \"p-2 rounded-lg shadow-lg\",\n \"bg-background border border-border\",\n // Transition\n \"transition-all duration-200\",\n // Hidden by default\n \"-top-full opacity-0 pointer-events-none\",\n // Visible when has focus within\n \"focus-within:top-4 focus-within:opacity-100 focus-within:pointer-events-auto\",\n ],\n {\n variants: {\n position: {\n \"top-left\": \"left-4\",\n \"top-center\": \"left-1/2 -translate-x-1/2\",\n \"top-right\": \"right-4\",\n },\n },\n defaultVariants: {\n position: \"top-left\",\n },\n }\n)\n\n/**\n * SkipLinksList item variant styles\n */\nexport const skipLinksListItemVariants = cva(\n [\n \"block px-3 py-1.5 text-sm font-medium rounded\",\n \"text-foreground hover:bg-accent\",\n \"focus:outline-none focus:bg-accent focus:ring-2 focus:ring-ring\",\n \"transition-colors\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n primary: \"hover:bg-primary/10 focus:bg-primary/10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n","\"use client\"\n\nimport type {\n SkipLinkProps,\n SkipLinksListProps,\n} from \"./SkipLinks.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n skipLinksListInnerVariants,\n skipLinksListItemVariants,\n skipLinksListVariants,\n skipLinkVariants,\n} from \"./SkipLinks.variants\"\n\n/**\n * SkipLink - An accessibility link that allows users to skip repetitive navigation.\n *\n * Should be the first focusable element on the page. Hidden by default,\n * becomes visible when focused.\n *\n * @example\n * <SkipLink targetId=\"main-content\">\n * Skip to main content\n * </SkipLink>\n *\n * <main id=\"main-content\" tabIndex={-1}>\n * Content here\n * </main>\n */\nfunction SkipLink({\n className,\n targetId,\n children = \"Skip to main content\",\n alwaysVisible = false,\n position = \"top-left\",\n variant = \"default\",\n ...props\n}: SkipLinkProps) {\n return (\n <a\n className={cn(\n skipLinkVariants({ position, variant, alwaysVisible }),\n className\n )}\n data-slot=\"skip-link\"\n href={`#${targetId}`}\n {...props}\n >\n {children}\n </a>\n )\n}\n\n/**\n * SkipLinksList - Multiple skip links for complex layouts.\n *\n * Renders a navigation container with multiple skip links.\n * Container becomes visible when any link receives focus.\n *\n * @example\n * <SkipLinksList\n * links={[\n * { targetId: \"main-content\", label: \"Skip to main content\" },\n * { targetId: \"navigation\", label: \"Skip to navigation\" },\n * { targetId: \"footer\", label: \"Skip to footer\" },\n * ]}\n * />\n */\nfunction SkipLinksList({\n className,\n links,\n position = \"top-left\",\n variant = \"default\",\n ...props\n}: SkipLinksListProps) {\n return (\n <nav\n aria-label=\"Skip links\"\n className={cn(skipLinksListVariants(), className)}\n data-slot=\"skip-links-list\"\n {...props}\n >\n <div\n className={skipLinksListInnerVariants({ position })}\n data-slot=\"skip-links-list-inner\"\n >\n {links.map((link) => (\n <a\n key={link.targetId}\n className={skipLinksListItemVariants({ variant })}\n data-slot=\"skip-links-list-item\"\n href={`#${link.targetId}`}\n >\n {link.label}\n </a>\n ))}\n </div>\n </nav>\n )\n}\n\nexport { SkipLink, SkipLinksList }\n"]}
@@ -1,6 +1,6 @@
1
- import { ScrollArea } from './chunk-CNRV2IGH.js';
2
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-AFCSDND5.js';
3
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { ScrollArea } from './chunk-HM6TEHA6.js';
2
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-EQ4YAADN.js';
3
+ import { cn } from './chunk-RVAYDRMA.js';
4
4
  import { ClockIcon } from 'lucide-react';
5
5
  import * as React from 'react';
6
6
  import { cva } from 'class-variance-authority';
@@ -367,5 +367,5 @@ function TimePicker({
367
367
  }
368
368
 
369
369
  export { TimePicker, timeItemVariants, timePickerTriggerVariants, timeScrollListVariants };
370
- //# sourceMappingURL=chunk-G2V7D7VC.js.map
371
- //# sourceMappingURL=chunk-G2V7D7VC.js.map
370
+ //# sourceMappingURL=chunk-JUSPLVWO.js.map
371
+ //# sourceMappingURL=chunk-JUSPLVWO.js.map