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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (563) hide show
  1. package/dist/{chunk-U2CXFKRK.js → chunk-2SUZS6GZ.js} +4 -4
  2. package/dist/{chunk-U2CXFKRK.js.map → chunk-2SUZS6GZ.js.map} +1 -1
  3. package/dist/{chunk-UPYT2XM5.js → chunk-2XNMKALT.js} +3 -3
  4. package/dist/{chunk-UPYT2XM5.js.map → chunk-2XNMKALT.js.map} +1 -1
  5. package/dist/{chunk-SM4AZOEP.js → chunk-3MOBFZJM.js} +4 -4
  6. package/dist/{chunk-SM4AZOEP.js.map → chunk-3MOBFZJM.js.map} +1 -1
  7. package/dist/{chunk-TA4HCLP3.js → chunk-3R6MY3YJ.js} +4 -4
  8. package/dist/{chunk-TA4HCLP3.js.map → chunk-3R6MY3YJ.js.map} +1 -1
  9. package/dist/{chunk-EVUHEBWX.js → chunk-447INBQP.js} +3 -3
  10. package/dist/{chunk-EVUHEBWX.js.map → chunk-447INBQP.js.map} +1 -1
  11. package/dist/{chunk-F7XARQUW.js → chunk-4LZ53BAG.js} +3 -3
  12. package/dist/{chunk-F7XARQUW.js.map → chunk-4LZ53BAG.js.map} +1 -1
  13. package/dist/{chunk-CYIFWQ5Y.js → chunk-4OWRNWHW.js} +3 -3
  14. package/dist/{chunk-CYIFWQ5Y.js.map → chunk-4OWRNWHW.js.map} +1 -1
  15. package/dist/{chunk-OQCGQG47.js → chunk-4RNPI3LU.js} +3 -3
  16. package/dist/{chunk-OQCGQG47.js.map → chunk-4RNPI3LU.js.map} +1 -1
  17. package/dist/{chunk-3NHH7VPI.js → chunk-4SFBDK4E.js} +4 -4
  18. package/dist/{chunk-3NHH7VPI.js.map → chunk-4SFBDK4E.js.map} +1 -1
  19. package/dist/{chunk-B7ZLPQSO.js → chunk-4XXAIWQ4.js} +3 -3
  20. package/dist/{chunk-B7ZLPQSO.js.map → chunk-4XXAIWQ4.js.map} +1 -1
  21. package/dist/{chunk-D2V2HKLX.js → chunk-5ETVWWA5.js} +3 -3
  22. package/dist/{chunk-D2V2HKLX.js.map → chunk-5ETVWWA5.js.map} +1 -1
  23. package/dist/{chunk-U4H3XHSI.js → chunk-5GV4LDX7.js} +4 -4
  24. package/dist/{chunk-U4H3XHSI.js.map → chunk-5GV4LDX7.js.map} +1 -1
  25. package/dist/{chunk-BFBGESUI.js → chunk-5MJQ5XSR.js} +4 -4
  26. package/dist/{chunk-BFBGESUI.js.map → chunk-5MJQ5XSR.js.map} +1 -1
  27. package/dist/{chunk-GKMR5SVC.js → chunk-5QDKJMUA.js} +3 -3
  28. package/dist/{chunk-GKMR5SVC.js.map → chunk-5QDKJMUA.js.map} +1 -1
  29. package/dist/{chunk-3NFQXZHO.js → chunk-5T7EKOJ5.js} +3 -3
  30. package/dist/{chunk-3NFQXZHO.js.map → chunk-5T7EKOJ5.js.map} +1 -1
  31. package/dist/{chunk-WBE6VQOO.js → chunk-5W3T767A.js} +3 -3
  32. package/dist/{chunk-WBE6VQOO.js.map → chunk-5W3T767A.js.map} +1 -1
  33. package/dist/{chunk-F5X2BBGU.js → chunk-5YUUE5JJ.js} +3 -3
  34. package/dist/{chunk-F5X2BBGU.js.map → chunk-5YUUE5JJ.js.map} +1 -1
  35. package/dist/{chunk-IQKKPOI7.js → chunk-627ZZ6HO.js} +4 -4
  36. package/dist/{chunk-IQKKPOI7.js.map → chunk-627ZZ6HO.js.map} +1 -1
  37. package/dist/{chunk-WCMRVCIM.js → chunk-6G5QK3SU.js} +3 -3
  38. package/dist/{chunk-WCMRVCIM.js.map → chunk-6G5QK3SU.js.map} +1 -1
  39. package/dist/{chunk-SMVH56FQ.js → chunk-6QVXMYKH.js} +3 -3
  40. package/dist/{chunk-SMVH56FQ.js.map → chunk-6QVXMYKH.js.map} +1 -1
  41. package/dist/{chunk-NWVYQYKK.js → chunk-6VEQLD2P.js} +3 -3
  42. package/dist/{chunk-NWVYQYKK.js.map → chunk-6VEQLD2P.js.map} +1 -1
  43. package/dist/{chunk-S6ORCWM2.js → chunk-73DDLKBG.js} +3 -3
  44. package/dist/{chunk-S6ORCWM2.js.map → chunk-73DDLKBG.js.map} +1 -1
  45. package/dist/{chunk-E27SQ54A.js → chunk-7AR5QRRX.js} +3 -3
  46. package/dist/{chunk-E27SQ54A.js.map → chunk-7AR5QRRX.js.map} +1 -1
  47. package/dist/{chunk-3MJNJKAF.js → chunk-7IKX4AFY.js} +4 -4
  48. package/dist/{chunk-3MJNJKAF.js.map → chunk-7IKX4AFY.js.map} +1 -1
  49. package/dist/{chunk-A7YNTSVU.js → chunk-7PX3WBR3.js} +3 -3
  50. package/dist/{chunk-A7YNTSVU.js.map → chunk-7PX3WBR3.js.map} +1 -1
  51. package/dist/{chunk-LR56MGWT.js → chunk-7QEFKWUR.js} +7 -7
  52. package/dist/{chunk-LR56MGWT.js.map → chunk-7QEFKWUR.js.map} +1 -1
  53. package/dist/{chunk-JRVUEOKT.js → chunk-7TX5X4EP.js} +3 -3
  54. package/dist/{chunk-JRVUEOKT.js.map → chunk-7TX5X4EP.js.map} +1 -1
  55. package/dist/{chunk-BQMQULAC.js → chunk-7XJQYAGY.js} +4 -4
  56. package/dist/{chunk-BQMQULAC.js.map → chunk-7XJQYAGY.js.map} +1 -1
  57. package/dist/{chunk-KA7747GR.js → chunk-7Y325TBV.js} +3 -3
  58. package/dist/{chunk-KA7747GR.js.map → chunk-7Y325TBV.js.map} +1 -1
  59. package/dist/{chunk-6KMRMXR6.js → chunk-7YZ7HNXX.js} +3 -3
  60. package/dist/{chunk-6KMRMXR6.js.map → chunk-7YZ7HNXX.js.map} +1 -1
  61. package/dist/{chunk-YACIRNVP.js → chunk-AD4RW2JV.js} +3 -3
  62. package/dist/{chunk-YACIRNVP.js.map → chunk-AD4RW2JV.js.map} +1 -1
  63. package/dist/{chunk-YMYXWHDU.js → chunk-ADX6C3V7.js} +3 -3
  64. package/dist/{chunk-YMYXWHDU.js.map → chunk-ADX6C3V7.js.map} +1 -1
  65. package/dist/{chunk-WVFQKBDB.js → chunk-AJUOTABG.js} +3 -3
  66. package/dist/{chunk-WVFQKBDB.js.map → chunk-AJUOTABG.js.map} +1 -1
  67. package/dist/{chunk-G5TWK7L3.js → chunk-AP4ZM3DV.js} +3 -3
  68. package/dist/{chunk-G5TWK7L3.js.map → chunk-AP4ZM3DV.js.map} +1 -1
  69. package/dist/{chunk-2X35C55E.js → chunk-ARJAIH7Q.js} +3 -3
  70. package/dist/{chunk-2X35C55E.js.map → chunk-ARJAIH7Q.js.map} +1 -1
  71. package/dist/{chunk-YCZ6M6EF.js → chunk-BBKDABQK.js} +3 -3
  72. package/dist/{chunk-YCZ6M6EF.js.map → chunk-BBKDABQK.js.map} +1 -1
  73. package/dist/{chunk-GPW57XOW.js → chunk-BSTUCHL4.js} +4 -4
  74. package/dist/{chunk-GPW57XOW.js.map → chunk-BSTUCHL4.js.map} +1 -1
  75. package/dist/{chunk-ARYBNQNS.js → chunk-BUCXPZYE.js} +4 -4
  76. package/dist/{chunk-ARYBNQNS.js.map → chunk-BUCXPZYE.js.map} +1 -1
  77. package/dist/{chunk-ESLSPRYA.js → chunk-C2MAX4YK.js} +3 -3
  78. package/dist/{chunk-ESLSPRYA.js.map → chunk-C2MAX4YK.js.map} +1 -1
  79. package/dist/{chunk-2FJJOHHH.js → chunk-C34UNXMN.js} +3 -3
  80. package/dist/{chunk-2FJJOHHH.js.map → chunk-C34UNXMN.js.map} +1 -1
  81. package/dist/{chunk-AEHYYTFW.js → chunk-CV77MF4G.js} +3 -3
  82. package/dist/{chunk-AEHYYTFW.js.map → chunk-CV77MF4G.js.map} +1 -1
  83. package/dist/{chunk-MQ2446N7.js → chunk-DGOW65KM.js} +3 -3
  84. package/dist/{chunk-MQ2446N7.js.map → chunk-DGOW65KM.js.map} +1 -1
  85. package/dist/{chunk-NULX3RRN.js → chunk-DJHDCDU6.js} +4 -4
  86. package/dist/{chunk-NULX3RRN.js.map → chunk-DJHDCDU6.js.map} +1 -1
  87. package/dist/{chunk-USPITOG4.js → chunk-DQGBTZRX.js} +4 -4
  88. package/dist/{chunk-USPITOG4.js.map → chunk-DQGBTZRX.js.map} +1 -1
  89. package/dist/{chunk-2IFYXJ3H.js → chunk-DRIEZH7R.js} +3 -3
  90. package/dist/{chunk-2IFYXJ3H.js.map → chunk-DRIEZH7R.js.map} +1 -1
  91. package/dist/{chunk-VWW3DJKI.js → chunk-E6SAO2CY.js} +3 -3
  92. package/dist/{chunk-VWW3DJKI.js.map → chunk-E6SAO2CY.js.map} +1 -1
  93. package/dist/{chunk-5ACHKT35.js → chunk-EDSIOUUR.js} +4 -4
  94. package/dist/{chunk-5ACHKT35.js.map → chunk-EDSIOUUR.js.map} +1 -1
  95. package/dist/{chunk-G2CMEHW6.js → chunk-ELRIFGMN.js} +4 -4
  96. package/dist/{chunk-G2CMEHW6.js.map → chunk-ELRIFGMN.js.map} +1 -1
  97. package/dist/{chunk-IMUBWKZC.js → chunk-EO4NGM5W.js} +4 -4
  98. package/dist/{chunk-IMUBWKZC.js.map → chunk-EO4NGM5W.js.map} +1 -1
  99. package/dist/{chunk-AFCSDND5.js → chunk-EQ4YAADN.js} +3 -3
  100. package/dist/{chunk-AFCSDND5.js.map → chunk-EQ4YAADN.js.map} +1 -1
  101. package/dist/{chunk-AP3T3KMY.js → chunk-EZYXD2YI.js} +4 -4
  102. package/dist/{chunk-AP3T3KMY.js.map → chunk-EZYXD2YI.js.map} +1 -1
  103. package/dist/{chunk-HJ4E6YPW.js → chunk-F3ETIDS7.js} +4 -4
  104. package/dist/{chunk-HJ4E6YPW.js.map → chunk-F3ETIDS7.js.map} +1 -1
  105. package/dist/{chunk-LNY2EXOV.js → chunk-F3WDMYZ4.js} +3 -3
  106. package/dist/{chunk-LNY2EXOV.js.map → chunk-F3WDMYZ4.js.map} +1 -1
  107. package/dist/{chunk-FPCRGFNY.js → chunk-FRKB4Z2P.js} +3 -3
  108. package/dist/{chunk-FPCRGFNY.js.map → chunk-FRKB4Z2P.js.map} +1 -1
  109. package/dist/{chunk-YGLD22TU.js → chunk-FVRSXJKS.js} +3 -3
  110. package/dist/{chunk-YGLD22TU.js.map → chunk-FVRSXJKS.js.map} +1 -1
  111. package/dist/{chunk-AR7K7Y4L.js → chunk-FXFVFSG5.js} +5 -5
  112. package/dist/{chunk-AR7K7Y4L.js.map → chunk-FXFVFSG5.js.map} +1 -1
  113. package/dist/{chunk-WQI2USN7.js → chunk-GDZECJFS.js} +3 -3
  114. package/dist/{chunk-WQI2USN7.js.map → chunk-GDZECJFS.js.map} +1 -1
  115. package/dist/{chunk-7CMOCWFX.js → chunk-GLHKHYJY.js} +8 -8
  116. package/dist/{chunk-7CMOCWFX.js.map → chunk-GLHKHYJY.js.map} +1 -1
  117. package/dist/{chunk-IA24GUNV.js → chunk-GRODCJS4.js} +8 -8
  118. package/dist/{chunk-IA24GUNV.js.map → chunk-GRODCJS4.js.map} +1 -1
  119. package/dist/{chunk-JDG5A44W.js → chunk-GVNG5ME6.js} +22 -11
  120. package/dist/chunk-GVNG5ME6.js.map +1 -0
  121. package/dist/{chunk-5J5OL4IV.js → chunk-GWSM2XNV.js} +3 -3
  122. package/dist/{chunk-5J5OL4IV.js.map → chunk-GWSM2XNV.js.map} +1 -1
  123. package/dist/{chunk-2NY6DDLO.js → chunk-H32A6UPL.js} +3 -3
  124. package/dist/{chunk-2NY6DDLO.js.map → chunk-H32A6UPL.js.map} +1 -1
  125. package/dist/{chunk-HV2ZZXFN.js → chunk-HHWUROMA.js} +6 -6
  126. package/dist/{chunk-HV2ZZXFN.js.map → chunk-HHWUROMA.js.map} +1 -1
  127. package/dist/{chunk-CNRV2IGH.js → chunk-HM6TEHA6.js} +3 -3
  128. package/dist/{chunk-CNRV2IGH.js.map → chunk-HM6TEHA6.js.map} +1 -1
  129. package/dist/{chunk-6ABGMOE2.js → chunk-HNQX6ZG7.js} +4 -4
  130. package/dist/{chunk-6ABGMOE2.js.map → chunk-HNQX6ZG7.js.map} +1 -1
  131. package/dist/{chunk-HAEZLC7V.js → chunk-I5RDX6O3.js} +3 -3
  132. package/dist/{chunk-HAEZLC7V.js.map → chunk-I5RDX6O3.js.map} +1 -1
  133. package/dist/{chunk-B2OCNHUW.js → chunk-IKLFWGFS.js} +70 -52
  134. package/dist/chunk-IKLFWGFS.js.map +1 -0
  135. package/dist/{chunk-DL7D5F7B.js → chunk-IPCT4YZT.js} +3 -3
  136. package/dist/{chunk-DL7D5F7B.js.map → chunk-IPCT4YZT.js.map} +1 -1
  137. package/dist/{chunk-BIUVOZQG.js → chunk-IPDAFW4F.js} +3 -3
  138. package/dist/{chunk-BIUVOZQG.js.map → chunk-IPDAFW4F.js.map} +1 -1
  139. package/dist/{chunk-G2MAGZHQ.js → chunk-IXZBH33I.js} +3 -3
  140. package/dist/{chunk-G2MAGZHQ.js.map → chunk-IXZBH33I.js.map} +1 -1
  141. package/dist/{chunk-ZHUW6UYD.js → chunk-JDETM3FL.js} +3 -3
  142. package/dist/{chunk-ZHUW6UYD.js.map → chunk-JDETM3FL.js.map} +1 -1
  143. package/dist/{chunk-HZ47LQFJ.js → chunk-JE46MFMN.js} +6 -6
  144. package/dist/{chunk-HZ47LQFJ.js.map → chunk-JE46MFMN.js.map} +1 -1
  145. package/dist/{chunk-3JCV72FO.js → chunk-JFV7CNBP.js} +4 -4
  146. package/dist/{chunk-3JCV72FO.js.map → chunk-JFV7CNBP.js.map} +1 -1
  147. package/dist/{chunk-7RTHGI6E.js → chunk-JPRHMMY6.js} +3 -3
  148. package/dist/{chunk-7RTHGI6E.js.map → chunk-JPRHMMY6.js.map} +1 -1
  149. package/dist/{chunk-G2V7D7VC.js → chunk-JUSPLVWO.js} +5 -5
  150. package/dist/{chunk-G2V7D7VC.js.map → chunk-JUSPLVWO.js.map} +1 -1
  151. package/dist/{chunk-FRDYXDAE.js → chunk-JUZ4JQWH.js} +3 -3
  152. package/dist/{chunk-FRDYXDAE.js.map → chunk-JUZ4JQWH.js.map} +1 -1
  153. package/dist/{chunk-6SHOL6WR.js → chunk-JVTB3NTP.js} +3 -3
  154. package/dist/{chunk-6SHOL6WR.js.map → chunk-JVTB3NTP.js.map} +1 -1
  155. package/dist/{chunk-XETKCF73.js → chunk-JXEIRIU4.js} +3 -3
  156. package/dist/{chunk-XETKCF73.js.map → chunk-JXEIRIU4.js.map} +1 -1
  157. package/dist/{chunk-XKO6G5H2.js → chunk-JYYB6F5O.js} +3 -3
  158. package/dist/{chunk-XKO6G5H2.js.map → chunk-JYYB6F5O.js.map} +1 -1
  159. package/dist/{chunk-V7WEN4SD.js → chunk-JZA45LEV.js} +3 -3
  160. package/dist/{chunk-V7WEN4SD.js.map → chunk-JZA45LEV.js.map} +1 -1
  161. package/dist/{chunk-FCSYPOHF.js → chunk-K44K3EHW.js} +3 -3
  162. package/dist/{chunk-FCSYPOHF.js.map → chunk-K44K3EHW.js.map} +1 -1
  163. package/dist/{chunk-ZMUUEXVD.js → chunk-K4UCALQQ.js} +3 -3
  164. package/dist/{chunk-ZMUUEXVD.js.map → chunk-K4UCALQQ.js.map} +1 -1
  165. package/dist/{chunk-KYURFRCH.js → chunk-KBU4KJKC.js} +7 -7
  166. package/dist/{chunk-KYURFRCH.js.map → chunk-KBU4KJKC.js.map} +1 -1
  167. package/dist/{chunk-JRWQHBJC.js → chunk-KDNTSZF5.js} +4 -4
  168. package/dist/{chunk-JRWQHBJC.js.map → chunk-KDNTSZF5.js.map} +1 -1
  169. package/dist/{chunk-WZ2J4ALB.js → chunk-KHCHATTD.js} +5 -5
  170. package/dist/{chunk-WZ2J4ALB.js.map → chunk-KHCHATTD.js.map} +1 -1
  171. package/dist/{chunk-57KTYE5H.js → chunk-KHJIUHHM.js} +3 -3
  172. package/dist/{chunk-57KTYE5H.js.map → chunk-KHJIUHHM.js.map} +1 -1
  173. package/dist/{chunk-H7JHFBFD.js → chunk-KLFYTLF3.js} +4 -4
  174. package/dist/{chunk-H7JHFBFD.js.map → chunk-KLFYTLF3.js.map} +1 -1
  175. package/dist/{chunk-W3QUVCRK.js → chunk-KXJ3SEW7.js} +3 -3
  176. package/dist/{chunk-W3QUVCRK.js.map → chunk-KXJ3SEW7.js.map} +1 -1
  177. package/dist/{chunk-X5XP5QVO.js → chunk-L4OQ6BJ5.js} +6 -6
  178. package/dist/{chunk-X5XP5QVO.js.map → chunk-L4OQ6BJ5.js.map} +1 -1
  179. package/dist/{chunk-MAM6VUKD.js → chunk-LCBB3N5H.js} +3 -3
  180. package/dist/{chunk-MAM6VUKD.js.map → chunk-LCBB3N5H.js.map} +1 -1
  181. package/dist/{chunk-FLERVSKG.js → chunk-LDK6ADKM.js} +6 -6
  182. package/dist/{chunk-FLERVSKG.js.map → chunk-LDK6ADKM.js.map} +1 -1
  183. package/dist/{chunk-K4MYVFWQ.js → chunk-LP6JYJQN.js} +4 -4
  184. package/dist/{chunk-K4MYVFWQ.js.map → chunk-LP6JYJQN.js.map} +1 -1
  185. package/dist/{chunk-7VGF6ZVE.js → chunk-LRE3LJMW.js} +5 -5
  186. package/dist/{chunk-7VGF6ZVE.js.map → chunk-LRE3LJMW.js.map} +1 -1
  187. package/dist/{chunk-LQVQ7SHG.js → chunk-LSRKDZW4.js} +4 -4
  188. package/dist/{chunk-LQVQ7SHG.js.map → chunk-LSRKDZW4.js.map} +1 -1
  189. package/dist/{chunk-WBERMEN7.js → chunk-MGIGDALC.js} +3 -3
  190. package/dist/{chunk-WBERMEN7.js.map → chunk-MGIGDALC.js.map} +1 -1
  191. package/dist/{chunk-IRFAIJLV.js → chunk-MNYU5MHO.js} +7 -7
  192. package/dist/{chunk-IRFAIJLV.js.map → chunk-MNYU5MHO.js.map} +1 -1
  193. package/dist/{chunk-6GWO7JNP.js → chunk-MXBDOYQL.js} +4 -4
  194. package/dist/{chunk-6GWO7JNP.js.map → chunk-MXBDOYQL.js.map} +1 -1
  195. package/dist/{chunk-37KLBMFQ.js → chunk-N2DAVD4Y.js} +3 -3
  196. package/dist/{chunk-37KLBMFQ.js.map → chunk-N2DAVD4Y.js.map} +1 -1
  197. package/dist/{chunk-EC5YEK3C.js → chunk-N5YGAESZ.js} +5 -5
  198. package/dist/{chunk-EC5YEK3C.js.map → chunk-N5YGAESZ.js.map} +1 -1
  199. package/dist/{chunk-DSCLJ3GK.js → chunk-N7VMQWM3.js} +15 -10
  200. package/dist/chunk-N7VMQWM3.js.map +1 -0
  201. package/dist/{chunk-5KTMPLDK.js → chunk-NAI3TX52.js} +3 -3
  202. package/dist/{chunk-5KTMPLDK.js.map → chunk-NAI3TX52.js.map} +1 -1
  203. package/dist/{chunk-QHKOBGLW.js → chunk-NGX3ITG4.js} +3 -3
  204. package/dist/{chunk-QHKOBGLW.js.map → chunk-NGX3ITG4.js.map} +1 -1
  205. package/dist/{chunk-5SUD32RK.js → chunk-NHUUSXBL.js} +3 -3
  206. package/dist/{chunk-5SUD32RK.js.map → chunk-NHUUSXBL.js.map} +1 -1
  207. package/dist/{chunk-IOWHM7ZY.js → chunk-NIRTZLZL.js} +4 -4
  208. package/dist/{chunk-IOWHM7ZY.js.map → chunk-NIRTZLZL.js.map} +1 -1
  209. package/dist/{chunk-5E44I7PB.js → chunk-NLPVF34P.js} +4 -4
  210. package/dist/{chunk-5E44I7PB.js.map → chunk-NLPVF34P.js.map} +1 -1
  211. package/dist/{chunk-ZPAWUKJI.js → chunk-NNWMBVCB.js} +4 -4
  212. package/dist/{chunk-ZPAWUKJI.js.map → chunk-NNWMBVCB.js.map} +1 -1
  213. package/dist/{chunk-H4ANCFZG.js → chunk-NUA54ABI.js} +4 -4
  214. package/dist/{chunk-H4ANCFZG.js.map → chunk-NUA54ABI.js.map} +1 -1
  215. package/dist/{chunk-ZPCELVWJ.js → chunk-NY2WZ4P2.js} +4 -4
  216. package/dist/{chunk-ZPCELVWJ.js.map → chunk-NY2WZ4P2.js.map} +1 -1
  217. package/dist/{chunk-BECPEVUL.js → chunk-O6LFU3KB.js} +3 -3
  218. package/dist/{chunk-BECPEVUL.js.map → chunk-O6LFU3KB.js.map} +1 -1
  219. package/dist/{chunk-HXHB2CK5.js → chunk-OAES72MK.js} +3 -3
  220. package/dist/{chunk-HXHB2CK5.js.map → chunk-OAES72MK.js.map} +1 -1
  221. package/dist/{chunk-NGR4HFVA.js → chunk-OCH7GGZF.js} +3 -3
  222. package/dist/{chunk-NGR4HFVA.js.map → chunk-OCH7GGZF.js.map} +1 -1
  223. package/dist/{chunk-HA5YVDHW.js → chunk-ONN5XVYC.js} +3 -3
  224. package/dist/{chunk-HA5YVDHW.js.map → chunk-ONN5XVYC.js.map} +1 -1
  225. package/dist/{chunk-OG3M4CMJ.js → chunk-OWZ3MZ5C.js} +3 -3
  226. package/dist/{chunk-OG3M4CMJ.js.map → chunk-OWZ3MZ5C.js.map} +1 -1
  227. package/dist/{chunk-MK6ID2HI.js → chunk-OXO6SKJO.js} +3 -3
  228. package/dist/{chunk-MK6ID2HI.js.map → chunk-OXO6SKJO.js.map} +1 -1
  229. package/dist/{chunk-5K2SOCOX.js → chunk-P4WMDGAQ.js} +4 -4
  230. package/dist/{chunk-5K2SOCOX.js.map → chunk-P4WMDGAQ.js.map} +1 -1
  231. package/dist/{chunk-K43MPWTO.js → chunk-PBZI5XNV.js} +3 -3
  232. package/dist/{chunk-K43MPWTO.js.map → chunk-PBZI5XNV.js.map} +1 -1
  233. package/dist/{chunk-HI3T55XK.js → chunk-PEX7FCZC.js} +3 -3
  234. package/dist/{chunk-HI3T55XK.js.map → chunk-PEX7FCZC.js.map} +1 -1
  235. package/dist/{chunk-WMG2MMJF.js → chunk-PI4WGIPG.js} +3 -3
  236. package/dist/{chunk-WMG2MMJF.js.map → chunk-PI4WGIPG.js.map} +1 -1
  237. package/dist/{chunk-V7O4X3AE.js → chunk-PTXC4KPQ.js} +4 -4
  238. package/dist/{chunk-V7O4X3AE.js.map → chunk-PTXC4KPQ.js.map} +1 -1
  239. package/dist/{chunk-34WNJNPL.js → chunk-PVIIIQJI.js} +6 -6
  240. package/dist/{chunk-34WNJNPL.js.map → chunk-PVIIIQJI.js.map} +1 -1
  241. package/dist/{chunk-A4O3USMA.js → chunk-PXR6CZIL.js} +4 -4
  242. package/dist/{chunk-A4O3USMA.js.map → chunk-PXR6CZIL.js.map} +1 -1
  243. package/dist/{chunk-KDJCZXLB.js → chunk-PZSKZFVO.js} +3 -3
  244. package/dist/{chunk-KDJCZXLB.js.map → chunk-PZSKZFVO.js.map} +1 -1
  245. package/dist/{chunk-DNAGXK2C.js → chunk-Q3JCNSPU.js} +4 -4
  246. package/dist/{chunk-DNAGXK2C.js.map → chunk-Q3JCNSPU.js.map} +1 -1
  247. package/dist/{chunk-JUTPDS4E.js → chunk-QD2ZS5DU.js} +4 -4
  248. package/dist/{chunk-JUTPDS4E.js.map → chunk-QD2ZS5DU.js.map} +1 -1
  249. package/dist/{chunk-DI3AISAZ.js → chunk-QJOWG2D4.js} +5 -5
  250. package/dist/{chunk-DI3AISAZ.js.map → chunk-QJOWG2D4.js.map} +1 -1
  251. package/dist/{chunk-6F5NWXZF.js → chunk-QLYH3GCV.js} +4 -4
  252. package/dist/{chunk-6F5NWXZF.js.map → chunk-QLYH3GCV.js.map} +1 -1
  253. package/dist/{chunk-F4EX3622.js → chunk-QO6TOE45.js} +3 -3
  254. package/dist/{chunk-F4EX3622.js.map → chunk-QO6TOE45.js.map} +1 -1
  255. package/dist/{chunk-46SUPGQV.js → chunk-QWWA4FZP.js} +3 -3
  256. package/dist/{chunk-46SUPGQV.js.map → chunk-QWWA4FZP.js.map} +1 -1
  257. package/dist/{chunk-VTDSGJ4R.js → chunk-QXET2TML.js} +4 -4
  258. package/dist/{chunk-VTDSGJ4R.js.map → chunk-QXET2TML.js.map} +1 -1
  259. package/dist/{chunk-2VHARFMD.js → chunk-QZ7SGO7L.js} +3 -3
  260. package/dist/{chunk-2VHARFMD.js.map → chunk-QZ7SGO7L.js.map} +1 -1
  261. package/dist/{chunk-XORDGKZI.js → chunk-R42LSLJL.js} +6 -6
  262. package/dist/{chunk-XORDGKZI.js.map → chunk-R42LSLJL.js.map} +1 -1
  263. package/dist/{chunk-EVZ2GZU4.js → chunk-RMJVCJ6U.js} +3 -3
  264. package/dist/{chunk-EVZ2GZU4.js.map → chunk-RMJVCJ6U.js.map} +1 -1
  265. package/dist/{chunk-UYPYAOET.js → chunk-ROPW65RD.js} +3 -3
  266. package/dist/{chunk-UYPYAOET.js.map → chunk-ROPW65RD.js.map} +1 -1
  267. package/dist/{chunk-M6VBDPNQ.js → chunk-RQBYBBMP.js} +3 -3
  268. package/dist/{chunk-M6VBDPNQ.js.map → chunk-RQBYBBMP.js.map} +1 -1
  269. package/dist/chunk-RVAYDRMA.js +31 -0
  270. package/dist/chunk-RVAYDRMA.js.map +1 -0
  271. package/dist/{chunk-ARNVOHVW.js → chunk-S4P7JIQ2.js} +3 -3
  272. package/dist/{chunk-ARNVOHVW.js.map → chunk-S4P7JIQ2.js.map} +1 -1
  273. package/dist/{chunk-AKRVZ2YW.js → chunk-S6BREP2G.js} +4 -4
  274. package/dist/{chunk-AKRVZ2YW.js.map → chunk-S6BREP2G.js.map} +1 -1
  275. package/dist/{chunk-Y5GO2F6P.js → chunk-SA3IQI3Y.js} +3 -3
  276. package/dist/{chunk-Y5GO2F6P.js.map → chunk-SA3IQI3Y.js.map} +1 -1
  277. package/dist/{chunk-56TC4CPT.js → chunk-SKI25Q7O.js} +6 -6
  278. package/dist/{chunk-56TC4CPT.js.map → chunk-SKI25Q7O.js.map} +1 -1
  279. package/dist/{chunk-MLSIZ6JU.js → chunk-SSKSWSVO.js} +5 -5
  280. package/dist/{chunk-MLSIZ6JU.js.map → chunk-SSKSWSVO.js.map} +1 -1
  281. package/dist/{chunk-VV6QE3M2.js → chunk-STADVFL2.js} +5 -5
  282. package/dist/{chunk-VV6QE3M2.js.map → chunk-STADVFL2.js.map} +1 -1
  283. package/dist/{chunk-UA3OQAHJ.js → chunk-SX63UD5X.js} +3 -3
  284. package/dist/{chunk-UA3OQAHJ.js.map → chunk-SX63UD5X.js.map} +1 -1
  285. package/dist/{chunk-YZY35OHQ.js → chunk-SXSR2VRG.js} +4 -4
  286. package/dist/{chunk-YZY35OHQ.js.map → chunk-SXSR2VRG.js.map} +1 -1
  287. package/dist/{chunk-AR3OXNPL.js → chunk-TDANAN5A.js} +3 -3
  288. package/dist/{chunk-AR3OXNPL.js.map → chunk-TDANAN5A.js.map} +1 -1
  289. package/dist/{chunk-7ZJ32KRQ.js → chunk-TEVGCTUN.js} +3 -3
  290. package/dist/{chunk-7ZJ32KRQ.js.map → chunk-TEVGCTUN.js.map} +1 -1
  291. package/dist/{chunk-GAMOVEZD.js → chunk-TIPKU427.js} +3 -3
  292. package/dist/{chunk-GAMOVEZD.js.map → chunk-TIPKU427.js.map} +1 -1
  293. package/dist/{chunk-2Q4I4VDB.js → chunk-TK5WS675.js} +3 -3
  294. package/dist/{chunk-2Q4I4VDB.js.map → chunk-TK5WS675.js.map} +1 -1
  295. package/dist/{chunk-EDSDAX56.js → chunk-TNSMTINE.js} +4 -4
  296. package/dist/{chunk-EDSDAX56.js.map → chunk-TNSMTINE.js.map} +1 -1
  297. package/dist/{chunk-5TABQJDW.js → chunk-TRTVYFOF.js} +3 -3
  298. package/dist/{chunk-5TABQJDW.js.map → chunk-TRTVYFOF.js.map} +1 -1
  299. package/dist/{chunk-QBLU7J34.js → chunk-TSE3PKWQ.js} +3 -3
  300. package/dist/{chunk-QBLU7J34.js.map → chunk-TSE3PKWQ.js.map} +1 -1
  301. package/dist/{chunk-3BBOSSDG.js → chunk-U7TPJMGY.js} +4 -4
  302. package/dist/{chunk-3BBOSSDG.js.map → chunk-U7TPJMGY.js.map} +1 -1
  303. package/dist/{chunk-PGRMKSVA.js → chunk-UC5J6GWG.js} +4 -4
  304. package/dist/{chunk-PGRMKSVA.js.map → chunk-UC5J6GWG.js.map} +1 -1
  305. package/dist/{chunk-HP7LEQJR.js → chunk-UNHPLKMR.js} +3 -3
  306. package/dist/{chunk-HP7LEQJR.js.map → chunk-UNHPLKMR.js.map} +1 -1
  307. package/dist/{chunk-I7ZLEC7Y.js → chunk-UZEJ3ZVR.js} +3 -3
  308. package/dist/{chunk-I7ZLEC7Y.js.map → chunk-UZEJ3ZVR.js.map} +1 -1
  309. package/dist/{chunk-J62NPPDO.js → chunk-UZZCEQH4.js} +4 -4
  310. package/dist/{chunk-J62NPPDO.js.map → chunk-UZZCEQH4.js.map} +1 -1
  311. package/dist/{chunk-AEE5GDNA.js → chunk-V4NSLSCA.js} +4 -4
  312. package/dist/{chunk-AEE5GDNA.js.map → chunk-V4NSLSCA.js.map} +1 -1
  313. package/dist/{chunk-IZC5YFGO.js → chunk-V57DERRV.js} +14 -7
  314. package/dist/chunk-V57DERRV.js.map +1 -0
  315. package/dist/{chunk-PM344VOQ.js → chunk-VHJ6ALIE.js} +4 -4
  316. package/dist/{chunk-PM344VOQ.js.map → chunk-VHJ6ALIE.js.map} +1 -1
  317. package/dist/{chunk-N3I6GA4I.js → chunk-WG34IXUV.js} +3 -3
  318. package/dist/{chunk-N3I6GA4I.js.map → chunk-WG34IXUV.js.map} +1 -1
  319. package/dist/{chunk-45YJLE4R.js → chunk-WGKOYZRI.js} +3 -3
  320. package/dist/{chunk-45YJLE4R.js.map → chunk-WGKOYZRI.js.map} +1 -1
  321. package/dist/{chunk-6DN2UAIR.js → chunk-WGSVSZ7V.js} +3 -3
  322. package/dist/{chunk-6DN2UAIR.js.map → chunk-WGSVSZ7V.js.map} +1 -1
  323. package/dist/{chunk-X4YUWX7H.js → chunk-WK324C6D.js} +4 -4
  324. package/dist/{chunk-X4YUWX7H.js.map → chunk-WK324C6D.js.map} +1 -1
  325. package/dist/{chunk-N2WITPE2.js → chunk-WOP5OWLG.js} +3 -3
  326. package/dist/{chunk-N2WITPE2.js.map → chunk-WOP5OWLG.js.map} +1 -1
  327. package/dist/{chunk-MAM5PTRV.js → chunk-WSDWJX4Y.js} +4 -4
  328. package/dist/{chunk-MAM5PTRV.js.map → chunk-WSDWJX4Y.js.map} +1 -1
  329. package/dist/{chunk-2XJWE2XR.js → chunk-WUS45IZW.js} +4 -4
  330. package/dist/{chunk-2XJWE2XR.js.map → chunk-WUS45IZW.js.map} +1 -1
  331. package/dist/{chunk-B3BDIM4H.js → chunk-WVOZYDH3.js} +3 -3
  332. package/dist/{chunk-B3BDIM4H.js.map → chunk-WVOZYDH3.js.map} +1 -1
  333. package/dist/{chunk-HVFACGNK.js → chunk-WWK7UIKK.js} +3 -3
  334. package/dist/{chunk-HVFACGNK.js.map → chunk-WWK7UIKK.js.map} +1 -1
  335. package/dist/{chunk-NCLOPI6U.js → chunk-X2EMALTZ.js} +3 -3
  336. package/dist/{chunk-NCLOPI6U.js.map → chunk-X2EMALTZ.js.map} +1 -1
  337. package/dist/{chunk-PK5O62XD.js → chunk-X4CJFD6D.js} +3 -3
  338. package/dist/{chunk-PK5O62XD.js.map → chunk-X4CJFD6D.js.map} +1 -1
  339. package/dist/{chunk-JWXK4TMX.js → chunk-XEQGATVF.js} +3 -3
  340. package/dist/{chunk-JWXK4TMX.js.map → chunk-XEQGATVF.js.map} +1 -1
  341. package/dist/{chunk-B6KQKQ4S.js → chunk-XMUD3LG7.js} +3 -3
  342. package/dist/{chunk-B6KQKQ4S.js.map → chunk-XMUD3LG7.js.map} +1 -1
  343. package/dist/{chunk-5ZEYTBTU.js → chunk-XWBVIBN4.js} +3 -3
  344. package/dist/{chunk-5ZEYTBTU.js.map → chunk-XWBVIBN4.js.map} +1 -1
  345. package/dist/{chunk-7I6KK6QE.js → chunk-XXWCMY2G.js} +3 -3
  346. package/dist/{chunk-7I6KK6QE.js.map → chunk-XXWCMY2G.js.map} +1 -1
  347. package/dist/{chunk-LFN7UHDT.js → chunk-Y4FEW7SR.js} +3 -3
  348. package/dist/{chunk-LFN7UHDT.js.map → chunk-Y4FEW7SR.js.map} +1 -1
  349. package/dist/{chunk-PFVT27B5.js → chunk-YC5VVIZO.js} +3 -3
  350. package/dist/{chunk-PFVT27B5.js.map → chunk-YC5VVIZO.js.map} +1 -1
  351. package/dist/{chunk-OR3NPCY2.js → chunk-YMCKML6D.js} +7 -7
  352. package/dist/{chunk-OR3NPCY2.js.map → chunk-YMCKML6D.js.map} +1 -1
  353. package/dist/{chunk-TGLALXPU.js → chunk-YMQDTTO7.js} +6 -6
  354. package/dist/{chunk-TGLALXPU.js.map → chunk-YMQDTTO7.js.map} +1 -1
  355. package/dist/{chunk-ZARZYMBM.js → chunk-YNTS4GRT.js} +3 -3
  356. package/dist/{chunk-ZARZYMBM.js.map → chunk-YNTS4GRT.js.map} +1 -1
  357. package/dist/{chunk-6SZRWNPT.js → chunk-ZOHLZ4YL.js} +3 -3
  358. package/dist/{chunk-6SZRWNPT.js.map → chunk-ZOHLZ4YL.js.map} +1 -1
  359. package/dist/{chunk-VUHJTTPV.js → chunk-ZVSMLMMS.js} +3 -3
  360. package/dist/{chunk-VUHJTTPV.js.map → chunk-ZVSMLMMS.js.map} +1 -1
  361. package/dist/{chunk-VKDN66VL.js → chunk-ZXWT4KWJ.js} +3 -3
  362. package/dist/{chunk-VKDN66VL.js.map → chunk-ZXWT4KWJ.js.map} +1 -1
  363. package/dist/components/advanced/AssetManager/index.js +2 -2
  364. package/dist/components/advanced/Calendar/index.js +7 -7
  365. package/dist/components/advanced/Command/index.js +3 -3
  366. package/dist/components/advanced/DragAndDrop/index.js +2 -2
  367. package/dist/components/advanced/ErrorBoundary/index.js +2 -2
  368. package/dist/components/advanced/EventCalendar/index.js +7 -7
  369. package/dist/components/advanced/FileDropzone/index.js +2 -2
  370. package/dist/components/advanced/FilePreview/index.js +2 -2
  371. package/dist/components/advanced/FileUpload/index.js +2 -2
  372. package/dist/components/advanced/FilterBuilder/index.js +9 -9
  373. package/dist/components/advanced/MarkdownEditor/index.js +6 -6
  374. package/dist/components/advanced/ReportBuilder/index.js +7 -7
  375. package/dist/components/advanced/RichTextEditor/index.js +4 -4
  376. package/dist/components/advanced/Search/index.js +2 -2
  377. package/dist/components/advanced/SortableList/index.js +2 -2
  378. package/dist/components/advanced/VersionControl/index.js +2 -2
  379. package/dist/components/advanced/index.js +30 -30
  380. package/dist/components/data-display/Accordion/index.js +2 -2
  381. package/dist/components/data-display/AreaChart/index.js +3 -3
  382. package/dist/components/data-display/Banner/index.js +2 -2
  383. package/dist/components/data-display/BarChart/index.js +3 -3
  384. package/dist/components/data-display/BarList/index.js +2 -2
  385. package/dist/components/data-display/Callout/index.js +2 -2
  386. package/dist/components/data-display/Carousel/index.js +7 -7
  387. package/dist/components/data-display/CategoryBar/index.js +3 -3
  388. package/dist/components/data-display/Chart/index.js +2 -2
  389. package/dist/components/data-display/ChartCard/index.js +5 -5
  390. package/dist/components/data-display/ChartLegend/index.js +2 -2
  391. package/dist/components/data-display/ComboChart/index.js +3 -3
  392. package/dist/components/data-display/DashboardCard/index.js +3 -3
  393. package/dist/components/data-display/DataTable/FilterBuilder/index.js +9 -9
  394. package/dist/components/data-display/DataTable/index.js +16 -16
  395. package/dist/components/data-display/DeltaBar/index.js +3 -3
  396. package/dist/components/data-display/EmptyState/index.js +2 -2
  397. package/dist/components/data-display/FeatureItem/index.js +3 -3
  398. package/dist/components/data-display/Feed/index.js +2 -2
  399. package/dist/components/data-display/FunnelChart/index.js +3 -3
  400. package/dist/components/data-display/GaugeChart/index.js +2 -2
  401. package/dist/components/data-display/Heatmap/index.js +3 -3
  402. package/dist/components/data-display/HoverCard/index.js +2 -2
  403. package/dist/components/data-display/ImageGallery/index.js +9 -9
  404. package/dist/components/data-display/Item/index.js +3 -3
  405. package/dist/components/data-display/KPICard/index.js +8 -8
  406. package/dist/components/data-display/Lightbox/index.js +2 -2
  407. package/dist/components/data-display/LineChart/index.js +3 -3
  408. package/dist/components/data-display/List/index.js +6 -6
  409. package/dist/components/data-display/MarkerBar/index.js +3 -3
  410. package/dist/components/data-display/PieChart/index.js +3 -3
  411. package/dist/components/data-display/RadarChart/index.js +3 -3
  412. package/dist/components/data-display/RadialChart/index.js +3 -3
  413. package/dist/components/data-display/ScatterChart/index.js +3 -3
  414. package/dist/components/data-display/SingleStat/index.js +3 -3
  415. package/dist/components/data-display/Sparkline/index.js +2 -2
  416. package/dist/components/data-display/Table/index.js +2 -2
  417. package/dist/components/data-display/Timeline/index.js +2 -2
  418. package/dist/components/data-display/Tracker/index.js +3 -3
  419. package/dist/components/data-display/VirtualTable/index.js +5 -5
  420. package/dist/components/data-display/index.js +56 -56
  421. package/dist/components/feedback/Alert/index.js +2 -2
  422. package/dist/components/feedback/AlertDialog/index.js +7 -7
  423. package/dist/components/feedback/ConfirmModal/index.js +8 -8
  424. package/dist/components/feedback/Dialog/index.js +2 -2
  425. package/dist/components/feedback/ErrorPage/index.js +2 -2
  426. package/dist/components/feedback/FocusTrap/index.js +2 -2
  427. package/dist/components/feedback/Message/index.js +2 -2
  428. package/dist/components/feedback/Modal/index.js +2 -2
  429. package/dist/components/feedback/Notification/index.js +4 -4
  430. package/dist/components/feedback/Popover/index.js +2 -2
  431. package/dist/components/feedback/Tooltip/index.js +2 -2
  432. package/dist/components/feedback/UpdatesWidget/index.js +2 -2
  433. package/dist/components/feedback/index.js +18 -18
  434. package/dist/components/forms/Autocomplete/index.js +2 -2
  435. package/dist/components/forms/Checkbox/index.js +2 -2
  436. package/dist/components/forms/CheckboxGroup/index.js +3 -3
  437. package/dist/components/forms/ColorPicker/index.js +3 -3
  438. package/dist/components/forms/Combobox/index.js +2 -2
  439. package/dist/components/forms/DatePicker/index.js +10 -10
  440. package/dist/components/forms/DateRangePicker/index.js +10 -10
  441. package/dist/components/forms/EmailInput/index.js +3 -3
  442. package/dist/components/forms/ErrorMessage/index.js +2 -2
  443. package/dist/components/forms/Field/index.js +4 -4
  444. package/dist/components/forms/FloatLabel/index.js +2 -2
  445. package/dist/components/forms/Form/index.js +3 -3
  446. package/dist/components/forms/FormValidation/index.js +2 -2
  447. package/dist/components/forms/HelpText/index.js +2 -2
  448. package/dist/components/forms/IftaLabel/index.js +2 -2
  449. package/dist/components/forms/InputGroup/index.js +9 -9
  450. package/dist/components/forms/InputOTP/index.js +2 -2
  451. package/dist/components/forms/InputOTPField/index.js +6 -6
  452. package/dist/components/forms/MultiSelect/index.js +3 -3
  453. package/dist/components/forms/NativeSelect/index.js +2 -2
  454. package/dist/components/forms/NumberInput/index.js +2 -2
  455. package/dist/components/forms/PasswordInput/index.js +3 -3
  456. package/dist/components/forms/PaymentInput/index.js +2 -2
  457. package/dist/components/forms/PhoneInput/index.js +2 -2
  458. package/dist/components/forms/RadioButton/index.js +2 -2
  459. package/dist/components/forms/RadioCardGroup/index.js +2 -2
  460. package/dist/components/forms/RadioGroup/index.js +2 -2
  461. package/dist/components/forms/Rating/index.js +2 -2
  462. package/dist/components/forms/SearchInput/index.js +3 -3
  463. package/dist/components/forms/Select/index.js +2 -2
  464. package/dist/components/forms/Slider/index.js +2 -2
  465. package/dist/components/forms/SuccessMessage/index.js +2 -2
  466. package/dist/components/forms/Switch/index.js +2 -2
  467. package/dist/components/forms/TagsInput/index.js +4 -4
  468. package/dist/components/forms/TextInput/index.js +2 -2
  469. package/dist/components/forms/Textarea/index.js +2 -2
  470. package/dist/components/forms/TextareaField/index.js +6 -6
  471. package/dist/components/forms/TimePicker/index.js +4 -4
  472. package/dist/components/forms/URLInput/index.js +3 -3
  473. package/dist/components/forms/index.js +50 -50
  474. package/dist/components/index.js +183 -183
  475. package/dist/components/layout/Card/index.js +2 -2
  476. package/dist/components/layout/Collapsible/index.js +2 -2
  477. package/dist/components/layout/Container/index.js +2 -2
  478. package/dist/components/layout/Flex/index.js +2 -2
  479. package/dist/components/layout/Grid/index.js +2 -2
  480. package/dist/components/layout/Panel/index.js +3 -3
  481. package/dist/components/layout/ResizablePanels/index.js +2 -2
  482. package/dist/components/layout/ResponsiveContainer/index.js +2 -2
  483. package/dist/components/layout/ScrollArea/index.js +2 -2
  484. package/dist/components/layout/Section/index.js +2 -2
  485. package/dist/components/layout/Sheet/index.js +2 -2
  486. package/dist/components/layout/Stack/index.js +2 -2
  487. package/dist/components/layout/index.js +13 -13
  488. package/dist/components/navigation/AccountSwitch/index.js +6 -6
  489. package/dist/components/navigation/Breadcrumb/index.js +2 -2
  490. package/dist/components/navigation/ContextMenu/index.js +2 -2
  491. package/dist/components/navigation/Drawer/index.js +2 -2
  492. package/dist/components/navigation/DropdownMenu/index.js +2 -2
  493. package/dist/components/navigation/FileTree/index.js +2 -2
  494. package/dist/components/navigation/Header/index.js +2 -2
  495. package/dist/components/navigation/LogoConta/index.js +2 -2
  496. package/dist/components/navigation/Menu/index.js +3 -3
  497. package/dist/components/navigation/Menubar/index.js +2 -2
  498. package/dist/components/navigation/Navbar/index.js +2 -2
  499. package/dist/components/navigation/NavigationMenu/index.js +2 -2
  500. package/dist/components/navigation/Pagination/index.js +7 -7
  501. package/dist/components/navigation/Sidebar/index.js +11 -11
  502. package/dist/components/navigation/SkipLinks/index.js +2 -2
  503. package/dist/components/navigation/SpeedDial/index.js +3 -3
  504. package/dist/components/navigation/TabNavigation/index.js +2 -2
  505. package/dist/components/navigation/TabPanel/index.js +2 -2
  506. package/dist/components/navigation/Tabs/index.js +2 -2
  507. package/dist/components/navigation/Toolbar/index.js +2 -2
  508. package/dist/components/navigation/Topbar/index.js +2 -2
  509. package/dist/components/navigation/index.js +32 -32
  510. package/dist/components/primitives/ArrowAnimated/index.js +2 -2
  511. package/dist/components/primitives/Avatar/index.js +3 -3
  512. package/dist/components/primitives/Badge/index.js +3 -3
  513. package/dist/components/primitives/Button/index.js +6 -6
  514. package/dist/components/primitives/ButtonGroup/index.js +3 -3
  515. package/dist/components/primitives/ConfirmButton/index.js +8 -8
  516. package/dist/components/primitives/Divider/index.js +2 -2
  517. package/dist/components/primitives/FeaturedIcon/index.js +2 -2
  518. package/dist/components/primitives/FolderStack/index.js +2 -2
  519. package/dist/components/primitives/Heading/index.js +2 -2
  520. package/dist/components/primitives/Icon/index.js +2 -2
  521. package/dist/components/primitives/Image/index.js +2 -2
  522. package/dist/components/primitives/Kbd/index.js +2 -2
  523. package/dist/components/primitives/Label/index.js +2 -2
  524. package/dist/components/primitives/Link/index.js +2 -2
  525. package/dist/components/primitives/Paragraph/index.js +2 -2
  526. package/dist/components/primitives/PaymentMethodIcon/index.js +2 -2
  527. package/dist/components/primitives/ProgressBar/index.js +3 -3
  528. package/dist/components/primitives/ProgressCircle/index.js +3 -3
  529. package/dist/components/primitives/SkeletonLoader/index.js +2 -2
  530. package/dist/components/primitives/Spacer/index.js +2 -2
  531. package/dist/components/primitives/Spinner/index.js +2 -2
  532. package/dist/components/primitives/SplitButton/index.js +3 -3
  533. package/dist/components/primitives/StatusIndicator/index.js +2 -2
  534. package/dist/components/primitives/Tag/index.js +2 -2
  535. package/dist/components/primitives/Text/index.js +2 -2
  536. package/dist/components/primitives/Thumbnail/index.js +3 -3
  537. package/dist/components/primitives/Toggle/index.js +2 -2
  538. package/dist/components/primitives/index.js +32 -32
  539. package/dist/components/workflow/ApprovalFlow/index.js +8 -8
  540. package/dist/components/workflow/ApprovalStatus/index.js +2 -2
  541. package/dist/components/workflow/CommentSystem/index.js +9 -9
  542. package/dist/components/workflow/Dashboard/index.js +7 -7
  543. package/dist/components/workflow/DashboardBuilder/index.js +9 -9
  544. package/dist/components/workflow/KanbanBoard/index.js +9 -9
  545. package/dist/components/workflow/ProgressSteps/index.js +2 -2
  546. package/dist/components/workflow/ReportGenerator/index.js +9 -9
  547. package/dist/components/workflow/Stepper/index.js +2 -2
  548. package/dist/components/workflow/TaskCard/index.js +2 -2
  549. package/dist/components/workflow/TaskList/index.js +2 -2
  550. package/dist/components/workflow/TaskStatus/index.js +3 -3
  551. package/dist/components/workflow/Wizard/index.js +8 -8
  552. package/dist/components/workflow/index.js +26 -26
  553. package/dist/index.d.ts +55 -14
  554. package/dist/index.js +183 -183
  555. package/dist/lib/utils.d.ts +2 -1
  556. package/dist/lib/utils.js +1 -1
  557. package/package.json +1 -1
  558. package/dist/chunk-B2OCNHUW.js.map +0 -1
  559. package/dist/chunk-DSCLJ3GK.js.map +0 -1
  560. package/dist/chunk-HRNDJU7D.js +0 -11
  561. package/dist/chunk-HRNDJU7D.js.map +0 -1
  562. package/dist/chunk-IZC5YFGO.js.map +0 -1
  563. package/dist/chunk-JDG5A44W.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":"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","file":"chunk-56TC4CPT.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click &quot;Add Condition&quot; to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":";;;;;;;;;AAwGO,SAAS,cACd,IAAA,EACqB;AACrB,EAAA,OAAO,OAAA,IAAW,QAAQ,YAAA,IAAgB,IAAA;AAC5C;AAKO,SAAS,kBACd,IAAA,EACyB;AACzB,EAAA,OAAO,QAAA,IAAY,QAAQ,UAAA,IAAc,IAAA;AAC3C;ACnFA,IAAM,eAAA,GAAkD;AAAA;AAAA,EAEtD,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,kBAAA;AAAA,EACb,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,gBAAA;AAAA,EACX,UAAA,EAAY,aAAA;AAAA,EACZ,QAAA,EAAU,WAAA;AAAA,EACV,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY,cAAA;AAAA;AAAA,EAEZ,EAAA,EAAI,cAAA;AAAA,EACJ,GAAA,EAAK,uBAAA;AAAA,EACL,EAAA,EAAI,WAAA;AAAA,EACJ,GAAA,EAAK,oBAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA;AAAA,EAET,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,WAAA,EAAa,cAAA;AAAA;AAAA,EAEb,EAAA,EAAI,WAAA;AAAA,EACJ,KAAA,EAAO;AACT,CAAA;AAKA,IAAM,iBAAA,GAA2E;AAAA,EAC/E,IAAA,EAAM,CAAC,UAAA,EAAY,aAAA,EAAe,UAAU,WAAA,EAAa,YAAA,EAAc,UAAA,EAAY,SAAA,EAAW,YAAY,CAAA;AAAA,EAC1G,MAAA,EAAQ,CAAC,QAAA,EAAU,WAAA,EAAa,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,SAAS,CAAA;AAAA,EACnE,MAAM,CAAC,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,SAAS,aAAa,CAAA;AAAA,EAC9D,MAAA,EAAQ,CAAC,QAAA,EAAU,WAAA,EAAa,MAAM,OAAO;AAC/C,CAAA;AAKA,SAAS,UAAA,GAAqB;AAC5B,EAAA,OAAO,IAAA,CAAK,QAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAC/C;AAKA,SAAS,qBAAqB,QAAA,EAAoC;AAChE,EAAA,OAAO;AAAA,IACL,IAAI,UAAA,EAAW;AAAA,IACf,QAAQ,QAAA,IAAY,EAAA;AAAA,IACpB,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AACF;AAKA,SAAS,gBAAA,GAAgC;AACvC,EAAA,OAAO;AAAA,IACL,IAAI,UAAA,EAAW;AAAA,IACf,KAAA,EAAO,KAAA;AAAA,IACP,YAAY;AAAC,GACf;AACF;AAaA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,cAAA,GAAiB,QAAQ,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,UAAU,MAAM,CAAA;AACxE,EAAA,MAAM,qBAAqB,cAAA,GACvB,iBAAA,CAAkB,cAAA,CAAe,IAAI,IACrC,iBAAA,CAAkB,IAAA;AAEtB,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,SAAA,EAAW,YAAY,CAAA,CAAE,QAAA,CAAS,UAAU,QAAQ,CAAA;AACzE,EAAA,MAAM,mBAAmB,CAAC,SAAA,EAAW,aAAa,CAAA,CAAE,QAAA,CAAS,UAAU,QAAQ,CAAA;AAE/E,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,MAAM,YAAY,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,QAAQ,CAAA;AAC3D,IAAA,MAAM,eAAe,SAAA,GACjB,iBAAA,CAAkB,SAAA,CAAU,IAAI,IAChC,iBAAA,CAAkB,IAAA;AAEtB,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,SAAA;AAAA,MACH,MAAA,EAAQ,QAAA;AAAA,MACR,QAAA,EAAU,YAAA,CAAa,CAAC,CAAA,IAAK,QAAA;AAAA,MAC7B,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,QAAA,KAAqB;AACjD,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,SAAA;AAAA,MACH,QAAA;AAAA,MACA,KAAA,EAAO,CAAC,SAAA,EAAW,YAAY,EAAE,QAAA,CAAS,QAAQ,CAAA,GAAI,EAAA,GAAK,SAAA,CAAU,KAAA;AAAA,MACrE,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkB;AAC3C,IAAA,QAAA,CAAS,EAAE,GAAG,SAAA,EAAW,KAAA,EAAO,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,MAAA,KAAmB;AAC7C,IAAA,QAAA,CAAS,EAAE,GAAG,SAAA,EAAW,MAAA,EAAQ,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,CAAA,kBAAA,EAAqB,cAAA,EAAgB,KAAA,IAAS,eAAe,CAAA,CAAA;AAAA,MACzE,SAAA,EAAU,mCAAA;AAAA,MACV,WAAA,EAAU,kBAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MAGL,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAO,SAAA,CAAU,MAAA,EAAQ,eAAe,kBAAA,EAC9C,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,QAAA;AAAA,cACX,SAAA,EAAU,MAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cAEL,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,eAAA,EAAgB;AAAA;AAAA,WAC3C;AAAA,8BACC,aAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,wBACZ,GAAA,CAAC,UAAA,EAAA,EAAwB,KAAA,EAAO,GAAA,CAAI,IACjC,QAAA,EAAA,GAAA,CAAI,KAAA,EAAA,EADU,GAAA,CAAI,EAErB,CACD,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,QAGC,SAAA,CAAU,0BACT,IAAA,CAAC,MAAA,EAAA,EAAO,OAAO,SAAA,CAAU,QAAA,EAAU,eAAe,oBAAA,EAChD,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,UAAA;AAAA,cACX,SAAA,EAAU,MAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cAEL,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,iBAAA,EAAkB;AAAA;AAAA,WAC7C;AAAA,0BACA,GAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,kBAAA,CAAmB,GAAA,CAAI,CAAC,EAAA,qBACvB,GAAA,CAAC,UAAA,EAAA,EAAoB,KAAA,EAAO,IACzB,QAAA,EAAA,eAAA,CAAgB,EAAE,CAAA,EAAA,EADJ,EAEjB,CACD,CAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,QAID,cAAc,SAAA,CAAU,MAAA,KACvB,gBAAgB,IAAA,KAAS,QAAA,IAAY,eAAe,OAAA,mBAClD,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAO,SAAA,CAAU,KAAA;AAAA,YACjB,aAAA,EAAe,iBAAA;AAAA,YAEf,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,aAAA;AAAA,gBAAA;AAAA,kBACC,YAAA,EAAW,OAAA;AAAA,kBACX,SAAA,EAAU,MAAA;AAAA,kBACV,IAAA,EAAK,IAAA;AAAA,kBAEL,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAY,cAAA,EAAe;AAAA;AAAA,eAC1C;AAAA,8BACA,GAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,cAAA,CAAe,OAAA,CAAQ,IAAI,CAAC,MAAA,qBAC3B,GAAA,CAAC,UAAA,EAAA,EAAwB,KAAA,EAAO,MAAA,EAC7B,QAAA,EAAA,MAAA,EAAA,EADc,MAEjB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,SACF,mBAEA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,OAAA;AAAA,YACX,SAAA,EAAU,MAAA;AAAA,YACV,WAAA,EAAY,aAAA;AAAA,YACZ,IAAA,EAAK,IAAA;AAAA,YACL,IAAA,EAAM,gBAAgB,IAAA,KAAS,QAAA,GAAW,WAAW,cAAA,EAAgB,IAAA,KAAS,SAAS,MAAA,GAAS,MAAA;AAAA,YAChG,OAAO,SAAA,CAAU,KAAA;AAAA,YACjB,QAAA,EAAU,CAAC,CAAA,KAAM;AAAE,cAAA,iBAAA,CAAkB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAAG;AAAA;AAAA,SACxD,CAAA;AAAA,QAKH,gBAAA,IAAoB,SAAA,CAAU,MAAA,oBAC7B,IAAA,CAAAA,UAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,0BAC5D,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAU,MAAA;AAAA,cACV,WAAA,EAAY,aAAA;AAAA,cACZ,IAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAM,gBAAgB,IAAA,KAAS,QAAA,GAAW,WAAW,cAAA,EAAgB,IAAA,KAAS,SAAS,MAAA,GAAS,MAAA;AAAA,cAChG,KAAA,EAAO,OAAO,SAAA,CAAU,MAAA,KAAW,WAAW,SAAA,CAAU,MAAA,GAAS,OAAO,SAAA,CAAU,MAAA,KAAW,QAAA,GAAW,SAAA,CAAU,MAAA,CAAO,UAAS,GAAI,EAAA;AAAA,cACtI,QAAA,EAAU,CAAC,CAAA,KAAM;AAAE,gBAAA,kBAAA,CAAmB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cAAG;AAAA;AAAA;AACzD,SAAA,EACF,CAAA;AAAA,wBAIF,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAW,kBAAA;AAAA,YACX,SAAA,EAAU,2EAAA;AAAA,YACV,IAAA,EAAK,SAAA;AAAA,YACL,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,OAAA,EAAS,QAAA;AAAA,YAET,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACxB;AAAA;AAAA,GACF;AAEJ;AAeA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAA8B;AAC5B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,KAAA;AAAA,MACH,KAAA,EAAO,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,IAAA,GAAO;AAAA,KACvC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,CAAC,CAAA,EAAG,EAAA,IAAM,EAAA;AACxC,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,KAAA;AAAA,MACH,YAAY,CAAC,GAAG,MAAM,UAAA,EAAY,oBAAA,CAAqB,aAAa,CAAC;AAAA,KACtE,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,KAAA;AAAA,MACH,YAAY,CAAC,GAAG,KAAA,CAAM,UAAA,EAAY,kBAAkB;AAAA,KACrD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,EAAe,IAAA,KAAwC;AACpF,IAAA,MAAM,aAAA,GAAgB,CAAC,GAAG,KAAA,CAAM,UAAU,CAAA;AAC1C,IAAA,aAAA,CAAc,KAAK,CAAA,GAAI,IAAA;AACvB,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,eAAe,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAkB;AAC/C,IAAA,QAAA,CAAS;AAAA,MACP,GAAG,KAAA;AAAA,MACH,UAAA,EAAY,MAAM,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK;AAAA,KAC1D,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uBAAA;AAAA,QACA,SACI,wEAAA,GACA;AAAA,OACN;AAAA,MACA,YAAA,EAAY,CAAA,kBAAA,EAAqB,KAAA,CAAM,KAAK,CAAA,MAAA,CAAA;AAAA,MAC5C,WAAA,EAAU,cAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MAGL,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EAEb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,cAAY,KAAA,CAAM,KAAA;AAAA,cAClB,cAAA,EAAc,MAAM,KAAA,KAAU,KAAA;AAAA,cAC9B,SAAA,EAAU,sBAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,iBAAA,GAAoB,SAAA;AAAA,cACrD,OAAA,EAAS,iBAAA;AAAA,cAER,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,UAGC,CAAC,UAAU,QAAA,oBACV,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,cAAA;AAAA,cACX,SAAA,EAAU,mFAAA;AAAA,cACV,IAAA,EAAK,SAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,OAAA,EAAS,QAAA;AAAA,cAET,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC7B,SAAA,EAEJ,CAAA;AAAA,wBAGA,GAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EACZ,gBAAM,UAAA,CAAW,MAAA,KAAW,CAAA,mBAC3B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAA0D,QAAA,EAAA,qDAAA,EAEzE,CAAA,GAEA,MAAM,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAC1B,IAAA,CAAO,KAAA,CAAA,QAAA,EAAN,EAEE,QAAA,EAAA;AAAA,UAAA,KAAA,GAAQ,CAAA,oBACP,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACb,QAAA,EAAA,KAAA,CAAM,KAAA,EACT,CAAA;AAAA,4BACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EAA6C;AAAA,WAAA,EAC9D,CAAA;AAAA,UAGD,aAAA,CAAc,IAAI,CAAA,mBACjB,GAAA;AAAA,YAAC,oBAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,OAAO,KAAA,GAAQ,CAAA;AAAA,cACf,KAAA,EAAO,IAAA;AAAA,cACP,QAAA,EAAU,CAAC,OAAA,KAAY;AAAE,gBAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,cAAG,CAAA;AAAA,cAChE,UAAU,MAAM;AAAE,gBAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,cAAG;AAAA;AAAA,WAClD,GACE,iBAAA,CAAkB,IAAI,CAAA,mBACxB,GAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,SAAA,EAAW,IAAA;AAAA,cACX,QAAA,EAAU,CAAC,OAAA,KAAY;AAAE,gBAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA;AAAA,cAAG,CAAA;AAAA,cAChE,UAAU,MAAM;AAAE,gBAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,cAAG;AAAA;AAAA,WAClD,GACE;AAAA,SAAA,EAAA,EA1Be,IAAA,CAAK,EA2B1B,CACD,CAAA,EAEL,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,OAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,kBAAA;AAAA,cAET,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,QAAA,EAAS,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA,WAEnC;AAAA,0BAEA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,OAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,OAAA,EAAS,cAAA;AAAA,cAET,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,QAAA,EAAS,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAEnC,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AA2BA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAAS,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU,eAAS,KAAK,CAAA;AAE9D,EAAA,MAAM,kBAAA,GAAqB,CAAC,aAAA,KAA+B;AACzD,IAAA,cAAA,CAAe,aAAa,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,CAAW,MAAK,EAAG;AACzC,IAAA,YAAA,CAAa;AAAA,MACX,EAAA,EAAI,KAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAC1C,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,MACtB,MAAA,EAAQ,gBAAgB,MAAM;AAAA,KAC/B,CAAA;AACD,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAAyB;AACjD,IAAA,cAAA,CAAe,eAAA,CAAgB,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EAC/C,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,gBAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA;AAAA,MACpC,WAAA,EAAU,gBAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MAGH,QAAA,EAAA;AAAA,QAAA,OAAA,IAAW,OAAA,CAAQ,SAAS,CAAA,IAAM,YAAA,wBACjC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAoC,WAAA,EAAU,gBAAA,EAC1D,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,IAAI,CAAC,MAAA,qBACb,IAAA,CAAC,KAAA,EAAA,EAAoB,WAAU,yBAAA,EAC7B,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,OAAA;AAAA,gBACV,IAAA,EAAK,IAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,SAAS,MAAM;AAAE,kBAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,gBAAG,CAAA;AAAA,gBAE1C,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,aACV;AAAA,YACC,cAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAY,CAAA,cAAA,EAAiB,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,gBACxC,IAAA,EAAK,SAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,OAAA;AAAA,gBACR,SAAS,MAAM;AAAE,kBAAA,cAAA,CAAe,OAAO,EAAE,CAAA;AAAA,gBAAG,CAAA;AAAA,gBAE5C,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACxB,WAAA,EAAA,EAnBM,MAAA,CAAO,EAqBjB,CACD,CAAA;AAAA,UACA,YAAA,KACC,aAAA,mBACE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBACC,YAAA,EAAW,aAAA;AAAA,gBACX,SAAA,EAAU,UAAA;AAAA,gBACV,WAAA,EAAY,aAAA;AAAA,gBACZ,IAAA,EAAK,IAAA;AAAA,gBACL,KAAA,EAAO,UAAA;AAAA,gBACP,QAAA,EAAU,CAAC,CAAA,KAA2C;AAAE,kBAAA,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAAG,CAAA;AAAA,gBACvF,SAAA,EAAW,CAAC,CAAA,KAA6C;AACvD,kBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS,gBAAA,EAAiB;AACxC,kBAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AAAE,oBAAA,gBAAA,CAAiB,KAAK,CAAA;AAAG,oBAAA,aAAA,CAAc,EAAE,CAAA;AAAA,kBAAG;AAAA,gBACxE;AAAA;AAAA,aACF;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,CAAC,UAAA,CAAW,IAAA,EAAK;AAAA,gBAC3B,IAAA,EAAK,IAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,iBAAA;AAAA,gBACR,OAAA,EAAS,gBAAA;AAAA,gBACV,QAAA,EAAA;AAAA;AAAA,aAED;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,OAAA;AAAA,gBACR,SAAS,MAAM;AAAE,kBAAA,gBAAA,CAAiB,KAAK,CAAA;AAAG,kBAAA,aAAA,CAAc,EAAE,CAAA;AAAA,gBAAG,CAAA;AAAA,gBAC9D,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF,CAAA,mBAEA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,OAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,SAAS,MAAM;AAAE,gBAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,cAAG,CAAA;AAAA,cAEzC,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,QAAA,EAAS,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA,WAEnC;AAAA,SAAA,EAGN,CAAA,GACE,IAAA;AAAA,wBAEJ,GAAA;AAAA,UAAC,oBAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAM,IAAA;AAAA,YACN,OAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,KAAA,EAAO,MAAA;AAAA,YACP,QAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GACF;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA","file":"chunk-SKI25Q7O.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click &quot;Add Condition&quot; to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
@@ -1,6 +1,6 @@
1
- import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-V7O4X3AE.js';
2
- import { buttonVariants } from './chunk-X5XP5QVO.js';
3
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { AlertDialog, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './chunk-PTXC4KPQ.js';
2
+ import { buttonVariants } from './chunk-L4OQ6BJ5.js';
3
+ import { cn } from './chunk-RVAYDRMA.js';
4
4
  import { LoaderCircle } from 'lucide-react';
5
5
  import * as React from 'react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -200,5 +200,5 @@ function ConfirmButton({
200
200
  }
201
201
 
202
202
  export { ConfirmButton };
203
- //# sourceMappingURL=chunk-MLSIZ6JU.js.map
204
- //# sourceMappingURL=chunk-MLSIZ6JU.js.map
203
+ //# sourceMappingURL=chunk-SSKSWSVO.js.map
204
+ //# sourceMappingURL=chunk-SSKSWSVO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/ConfirmButton/ConfirmButton.tsx"],"names":[],"mappings":"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","file":"chunk-MLSIZ6JU.js","sourcesContent":["\"use client\"\n\nimport type { ConfirmButtonProps } from \"./ConfirmButton.types\"\n\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../../feedback/AlertDialog\"\nimport { buttonVariants } from \"../Button\"\n\n/**\n * ConfirmButton - A button that requires confirmation before executing an action\n *\n * Combines a Button trigger with an AlertDialog for confirmation.\n * Supports typing validation for critical actions.\n *\n * @example\n * ```tsx\n * <ConfirmButton\n * variant=\"destructive\"\n * confirmTitle=\"Delete item?\"\n * confirmDescription=\"This action cannot be undone.\"\n * onConfirm={() => handleDelete()}\n * >\n * Delete\n * </ConfirmButton>\n * ```\n */\nfunction ConfirmButton({\n // Trigger button props\n className,\n variant,\n size,\n leftIcon,\n rightIcon,\n disabled,\n children,\n\n // Dialog configuration\n confirmTitle = \"Confirm action\",\n confirmDescription,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n confirmVariant = \"default\",\n\n // Typing validation\n requireTyping,\n typingPlaceholder,\n typingLabel,\n caseSensitive = true,\n\n // States\n loading = false,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n\n // Callbacks\n onConfirm,\n onCancel,\n\n ...props\n}: ConfirmButtonProps) {\n // Internal open state (uncontrolled mode)\n const [internalOpen, setInternalOpen] = React.useState(false)\n\n // Typing input value\n const [typingValue, setTypingValue] = React.useState(\"\")\n\n // Internal loading state for async onConfirm\n const [isConfirming, setIsConfirming] = React.useState(false)\n\n // Prevent double confirmation\n const confirmingRef = React.useRef(false)\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (isControlled) {\n controlledOnOpenChange?.(value)\n } else {\n setInternalOpen(value)\n }\n },\n [isControlled, controlledOnOpenChange]\n )\n\n // Track previous open state to reset typing during render (avoids useEffect anti-pattern)\n const prevOpenRef = React.useRef(open)\n if (prevOpenRef.current !== open) {\n prevOpenRef.current = open\n if (!open) {\n setTypingValue(\"\")\n confirmingRef.current = false\n }\n }\n\n // Check if typing matches requirement\n const typingMatches = React.useMemo(() => {\n if (!requireTyping) return true\n\n if (caseSensitive) {\n return typingValue === requireTyping\n }\n return typingValue.toLowerCase() === requireTyping.toLowerCase()\n }, [requireTyping, typingValue, caseSensitive])\n\n // Combined loading state\n const isLoading = loading || isConfirming\n\n // Confirm button should be disabled when loading or typing doesn't match\n const confirmDisabled = isLoading || !typingMatches\n\n // Track if cancel was triggered by button click\n const cancelTriggeredRef = React.useRef(false)\n\n // Handle dialog open change\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n // Don't allow closing while confirming\n if (isConfirming && !newOpen) return\n\n setOpen(newOpen)\n\n // Only call onCancel if dialog is closing and cancel wasn't already triggered\n if (!newOpen && !cancelTriggeredRef.current) {\n onCancel?.()\n }\n\n // Reset the flag after processing\n cancelTriggeredRef.current = false\n },\n [setOpen, onCancel, isConfirming]\n )\n\n // Handle cancel button click\n const handleCancel = React.useCallback(() => {\n cancelTriggeredRef.current = true\n onCancel?.()\n setOpen(false)\n }, [setOpen, onCancel])\n\n // Handle confirm button click\n const handleConfirm = React.useCallback(\n async (event: React.MouseEvent) => {\n // Prevent default AlertDialog behavior (auto-close)\n event.preventDefault()\n\n // Prevent double confirmation\n if (confirmingRef.current) return\n confirmingRef.current = true\n\n setIsConfirming(true)\n\n try {\n await onConfirm()\n // Close dialog on success\n setOpen(false)\n } catch {\n // Keep dialog open on error, allow retry\n confirmingRef.current = false\n // Error is not rethrown - caller should handle errors in onConfirm\n } finally {\n setIsConfirming(false)\n }\n },\n [onConfirm, setOpen]\n )\n\n // Render trigger button content\n const renderTriggerContent = () => (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n\n return (\n <AlertDialog open={open} onOpenChange={handleOpenChange}>\n <AlertDialogTrigger asChild>\n <button\n aria-disabled={disabled ?? undefined}\n className={cn(buttonVariants({ variant, size, className }))}\n data-slot=\"confirm-button\"\n disabled={disabled}\n type=\"button\"\n {...props}\n >\n {renderTriggerContent()}\n </button>\n </AlertDialogTrigger>\n\n <AlertDialogContent data-slot=\"confirm-dialog\">\n <AlertDialogHeader data-slot=\"confirm-dialog-header\">\n <AlertDialogTitle data-slot=\"confirm-dialog-title\">\n {confirmTitle}\n </AlertDialogTitle>\n {confirmDescription ? (\n <AlertDialogDescription data-slot=\"confirm-dialog-description\">\n {confirmDescription}\n </AlertDialogDescription>\n ) : (\n <AlertDialogDescription className=\"sr-only\">\n Confirm or cancel this action.\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n\n {requireTyping && (\n <div className=\"space-y-2\" data-slot=\"confirm-dialog-content\">\n {typingLabel && (\n <label\n className=\"text-sm font-medium text-foreground\"\n htmlFor=\"confirm-typing-input\"\n >\n {typingLabel}\n </label>\n )}\n <input\n aria-describedby={\n !typingMatches ? \"confirm-typing-error\" : undefined\n }\n autoComplete=\"off\"\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n data-slot=\"confirm-dialog-input\"\n id=\"confirm-typing-input\"\n placeholder={typingPlaceholder ?? requireTyping}\n type=\"text\"\n value={typingValue}\n onChange={(e) => { setTypingValue(e.target.value); }}\n />\n {typingValue && !typingMatches && (\n <p\n aria-live=\"polite\"\n className=\"text-sm text-destructive\"\n id=\"confirm-typing-error\"\n >\n The text you entered does not match.\n </p>\n )}\n </div>\n )}\n\n <AlertDialogFooter data-slot=\"confirm-dialog-footer\">\n <AlertDialogCancel\n data-slot=\"confirm-dialog-cancel\"\n disabled={isLoading}\n onClick={handleCancel}\n >\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(\n confirmVariant === \"destructive\" &&\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\"\n )}\n aria-busy={isLoading || undefined}\n aria-disabled={confirmDisabled || undefined}\n data-slot=\"confirm-dialog-confirm\"\n disabled={confirmDisabled}\n onClick={(e) => { void handleConfirm(e); }}\n >\n {isLoading && (\n <LoaderCircle\n aria-hidden=\"true\"\n className=\"size-4 animate-spin\"\n />\n )}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmButton }\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/ConfirmButton/ConfirmButton.tsx"],"names":[],"mappings":"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","file":"chunk-SSKSWSVO.js","sourcesContent":["\"use client\"\n\nimport type { ConfirmButtonProps } from \"./ConfirmButton.types\"\n\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"../../feedback/AlertDialog\"\nimport { buttonVariants } from \"../Button\"\n\n/**\n * ConfirmButton - A button that requires confirmation before executing an action\n *\n * Combines a Button trigger with an AlertDialog for confirmation.\n * Supports typing validation for critical actions.\n *\n * @example\n * ```tsx\n * <ConfirmButton\n * variant=\"destructive\"\n * confirmTitle=\"Delete item?\"\n * confirmDescription=\"This action cannot be undone.\"\n * onConfirm={() => handleDelete()}\n * >\n * Delete\n * </ConfirmButton>\n * ```\n */\nfunction ConfirmButton({\n // Trigger button props\n className,\n variant,\n size,\n leftIcon,\n rightIcon,\n disabled,\n children,\n\n // Dialog configuration\n confirmTitle = \"Confirm action\",\n confirmDescription,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n confirmVariant = \"default\",\n\n // Typing validation\n requireTyping,\n typingPlaceholder,\n typingLabel,\n caseSensitive = true,\n\n // States\n loading = false,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n\n // Callbacks\n onConfirm,\n onCancel,\n\n ...props\n}: ConfirmButtonProps) {\n // Internal open state (uncontrolled mode)\n const [internalOpen, setInternalOpen] = React.useState(false)\n\n // Typing input value\n const [typingValue, setTypingValue] = React.useState(\"\")\n\n // Internal loading state for async onConfirm\n const [isConfirming, setIsConfirming] = React.useState(false)\n\n // Prevent double confirmation\n const confirmingRef = React.useRef(false)\n\n // Determine if controlled or uncontrolled\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : internalOpen\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (isControlled) {\n controlledOnOpenChange?.(value)\n } else {\n setInternalOpen(value)\n }\n },\n [isControlled, controlledOnOpenChange]\n )\n\n // Track previous open state to reset typing during render (avoids useEffect anti-pattern)\n const prevOpenRef = React.useRef(open)\n if (prevOpenRef.current !== open) {\n prevOpenRef.current = open\n if (!open) {\n setTypingValue(\"\")\n confirmingRef.current = false\n }\n }\n\n // Check if typing matches requirement\n const typingMatches = React.useMemo(() => {\n if (!requireTyping) return true\n\n if (caseSensitive) {\n return typingValue === requireTyping\n }\n return typingValue.toLowerCase() === requireTyping.toLowerCase()\n }, [requireTyping, typingValue, caseSensitive])\n\n // Combined loading state\n const isLoading = loading || isConfirming\n\n // Confirm button should be disabled when loading or typing doesn't match\n const confirmDisabled = isLoading || !typingMatches\n\n // Track if cancel was triggered by button click\n const cancelTriggeredRef = React.useRef(false)\n\n // Handle dialog open change\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n // Don't allow closing while confirming\n if (isConfirming && !newOpen) return\n\n setOpen(newOpen)\n\n // Only call onCancel if dialog is closing and cancel wasn't already triggered\n if (!newOpen && !cancelTriggeredRef.current) {\n onCancel?.()\n }\n\n // Reset the flag after processing\n cancelTriggeredRef.current = false\n },\n [setOpen, onCancel, isConfirming]\n )\n\n // Handle cancel button click\n const handleCancel = React.useCallback(() => {\n cancelTriggeredRef.current = true\n onCancel?.()\n setOpen(false)\n }, [setOpen, onCancel])\n\n // Handle confirm button click\n const handleConfirm = React.useCallback(\n async (event: React.MouseEvent) => {\n // Prevent default AlertDialog behavior (auto-close)\n event.preventDefault()\n\n // Prevent double confirmation\n if (confirmingRef.current) return\n confirmingRef.current = true\n\n setIsConfirming(true)\n\n try {\n await onConfirm()\n // Close dialog on success\n setOpen(false)\n } catch {\n // Keep dialog open on error, allow retry\n confirmingRef.current = false\n // Error is not rethrown - caller should handle errors in onConfirm\n } finally {\n setIsConfirming(false)\n }\n },\n [onConfirm, setOpen]\n )\n\n // Render trigger button content\n const renderTriggerContent = () => (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n\n return (\n <AlertDialog open={open} onOpenChange={handleOpenChange}>\n <AlertDialogTrigger asChild>\n <button\n aria-disabled={disabled ?? undefined}\n className={cn(buttonVariants({ variant, size, className }))}\n data-slot=\"confirm-button\"\n disabled={disabled}\n type=\"button\"\n {...props}\n >\n {renderTriggerContent()}\n </button>\n </AlertDialogTrigger>\n\n <AlertDialogContent data-slot=\"confirm-dialog\">\n <AlertDialogHeader data-slot=\"confirm-dialog-header\">\n <AlertDialogTitle data-slot=\"confirm-dialog-title\">\n {confirmTitle}\n </AlertDialogTitle>\n {confirmDescription ? (\n <AlertDialogDescription data-slot=\"confirm-dialog-description\">\n {confirmDescription}\n </AlertDialogDescription>\n ) : (\n <AlertDialogDescription className=\"sr-only\">\n Confirm or cancel this action.\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n\n {requireTyping && (\n <div className=\"space-y-2\" data-slot=\"confirm-dialog-content\">\n {typingLabel && (\n <label\n className=\"text-sm font-medium text-foreground\"\n htmlFor=\"confirm-typing-input\"\n >\n {typingLabel}\n </label>\n )}\n <input\n aria-describedby={\n !typingMatches ? \"confirm-typing-error\" : undefined\n }\n autoComplete=\"off\"\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n data-slot=\"confirm-dialog-input\"\n id=\"confirm-typing-input\"\n placeholder={typingPlaceholder ?? requireTyping}\n type=\"text\"\n value={typingValue}\n onChange={(e) => { setTypingValue(e.target.value); }}\n />\n {typingValue && !typingMatches && (\n <p\n aria-live=\"polite\"\n className=\"text-sm text-destructive\"\n id=\"confirm-typing-error\"\n >\n The text you entered does not match.\n </p>\n )}\n </div>\n )}\n\n <AlertDialogFooter data-slot=\"confirm-dialog-footer\">\n <AlertDialogCancel\n data-slot=\"confirm-dialog-cancel\"\n disabled={isLoading}\n onClick={handleCancel}\n >\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n className={cn(\n confirmVariant === \"destructive\" &&\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\"\n )}\n aria-busy={isLoading || undefined}\n aria-disabled={confirmDisabled || undefined}\n data-slot=\"confirm-dialog-confirm\"\n disabled={confirmDisabled}\n onClick={(e) => { void handleConfirm(e); }}\n >\n {isLoading && (\n <LoaderCircle\n aria-hidden=\"true\"\n className=\"size-4 animate-spin\"\n />\n )}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )\n}\n\nexport { ConfirmButton }\n"]}
@@ -1,6 +1,6 @@
1
- import { Stepper } from './chunk-WQI2USN7.js';
2
- import { Button } from './chunk-X5XP5QVO.js';
3
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { Stepper } from './chunk-GDZECJFS.js';
2
+ import { Button } from './chunk-L4OQ6BJ5.js';
3
+ import { cn } from './chunk-RVAYDRMA.js';
4
4
  import { useState, useRef, useEffect, useCallback } from 'react';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -312,5 +312,5 @@ function Wizard({
312
312
  }
313
313
 
314
314
  export { Wizard, wizardActionsVariants, wizardContentVariants, wizardStepContentVariants, wizardStepperVariants, wizardVariants };
315
- //# sourceMappingURL=chunk-VV6QE3M2.js.map
316
- //# sourceMappingURL=chunk-VV6QE3M2.js.map
315
+ //# sourceMappingURL=chunk-STADVFL2.js.map
316
+ //# sourceMappingURL=chunk-STADVFL2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/Wizard/Wizard.variants.ts","../src/components/workflow/Wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-VV6QE3M2.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Main wizard container variants\n */\nexport const wizardVariants = cva(\"flex gap-6\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"flex-col rounded-lg border border-border bg-card\",\n default: \"flex-col\",\n vertical: \"flex-row\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard content area variants\n */\nexport const wizardContentVariants = cva(\"flex-1\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"border-t border-border\",\n default: \"\",\n vertical: \"border-l border-border\",\n },\n size: {\n default: \"p-6\",\n lg: \"p-8\",\n sm: \"p-4\",\n },\n },\n})\n\n/**\n * Wizard stepper area variants\n */\nexport const wizardStepperVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"p-6 pb-0\",\n default: \"\",\n vertical: \"min-w-48\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard actions area variants\n */\nexport const wizardActionsVariants = cva(\"flex items-center gap-3\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"justify-between border-t border-border p-6\",\n default: \"justify-between\",\n vertical: \"justify-end border-t border-border pt-4\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard step content wrapper variants\n */\nexport const wizardStepContentVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n","import type { StepItem } from \"../Stepper\"\nimport type { WizardProps, WizardStep } from \"./Wizard.types\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport { Stepper } from \"../Stepper\"\nimport {\n wizardActionsVariants,\n wizardContentVariants,\n wizardStepperVariants,\n wizardVariants,\n} from \"./Wizard.variants\"\n\n/**\n * Convert WizardStep to StepItem for the Stepper component\n */\nfunction convertToStepItem(step: WizardStep, index: number, currentStep: number): StepItem {\n return {\n description: step.description,\n icon: step.icon,\n id: step.id,\n label: step.title,\n status: index < currentStep ? \"complete\" : index === currentStep ? \"active\" : \"pending\",\n }\n}\n\n/**\n * Wizard component guides users through a multi-step process.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Dados Pessoais\", content: <PersonalForm /> },\n * { id: \"2\", title: \"Endereço\", content: <AddressForm /> },\n * { id: \"3\", title: \"Conclusão\", content: <Summary /> },\n * ]\n *\n * <Wizard\n * steps={steps}\n * currentStep={0}\n * onStepChange={setStep}\n * onComplete={handleComplete}\n * />\n * ```\n */\nfunction Wizard({\n backLabel = \"Voltar\",\n canGoBack = true,\n canSkip = false,\n className,\n completeLabel = \"Completar\",\n currentStep = 0,\n isLoading = false,\n nextLabel = \"Próximo\",\n onComplete,\n onStepChange,\n onValidate,\n ref,\n showActions = true,\n showSteps = true,\n size = \"default\",\n skipLabel = \"Pular\",\n steps,\n variant = \"default\",\n ...props\n}: WizardProps) {\n const [isValidating, setIsValidating] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n const isLastStep = currentStep >= steps.length - 1\n const isFirstStep = currentStep === 0\n const currentStepData = steps[currentStep]\n\n // Convert steps for the Stepper component\n const stepperSteps: StepItem[] = steps.map((step, index) =>\n convertToStepItem(step, index, currentStep)\n )\n\n // Focus management - move focus to content when step changes\n useEffect(() => {\n if (contentRef.current) {\n contentRef.current.focus()\n }\n }, [currentStep])\n\n // Handle next step\n const handleNext = useCallback(async () => {\n if (isLoading || isValidating) return\n\n // Run step validation if provided\n if (currentStepData?.validate) {\n setIsValidating(true)\n try {\n const isValid = await currentStepData.validate()\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n // Run onValidate callback if provided\n if (onValidate) {\n setIsValidating(true)\n try {\n const isValid = await Promise.resolve(onValidate(currentStep))\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n if (isLastStep) {\n onComplete?.()\n } else {\n onStepChange?.(currentStep + 1)\n }\n }, [currentStep, currentStepData, isLastStep, isLoading, isValidating, onComplete, onStepChange, onValidate])\n\n // Handle back step\n const handleBack = useCallback(() => {\n if (isLoading || isValidating || !canGoBack || isFirstStep) return\n onStepChange?.(currentStep - 1)\n }, [canGoBack, currentStep, isFirstStep, isLoading, isValidating, onStepChange])\n\n // Handle skip step\n const handleSkip = useCallback(() => {\n if (isLoading || isValidating || !canSkip || isLastStep) return\n if (currentStepData?.optional) {\n onStepChange?.(currentStep + 1)\n }\n }, [canSkip, currentStep, currentStepData?.optional, isLastStep, isLoading, isValidating, onStepChange])\n\n // Handle step click from stepper\n const handleStepClick = useCallback(\n (stepIndex: number) => {\n if (isLoading || isValidating) return\n // Only allow clicking on completed steps or the next step\n if (stepIndex <= currentStep) {\n onStepChange?.(stepIndex)\n }\n },\n [currentStep, isLoading, isValidating, onStepChange]\n )\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n void handleNext()\n } else if (event.key === \"Escape\") {\n // Could implement cancel confirmation here\n }\n },\n [handleNext]\n )\n\n const isVertical = variant === \"vertical\"\n\n return (\n <div\n ref={ref}\n className={cn(\n wizardVariants({ size, variant }),\n isLoading && \"pointer-events-none opacity-50\",\n className\n )}\n aria-label={`Wizard: Step ${String(currentStep + 1)} of ${String(steps.length)}`}\n data-slot=\"wizard\"\n role=\"region\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Stepper */}\n {showSteps && (\n <div\n className={wizardStepperVariants({ size, variant })}\n data-slot=\"wizard-stepper\"\n >\n <Stepper\n clickable\n currentStep={currentStep}\n size={size === \"lg\" ? \"lg\" : size === \"sm\" ? \"sm\" : \"default\"}\n steps={stepperSteps}\n variant={isVertical ? \"vertical\" : \"default\"}\n onStepClick={handleStepClick}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n ref={contentRef}\n className={wizardContentVariants({ size, variant })}\n data-slot=\"wizard-content\"\n tabIndex={-1}\n >\n {/* Step content */}\n <div\n aria-label={currentStepData?.title}\n data-slot=\"wizard-step\"\n data-step={currentStep + 1}\n >\n {currentStepData?.title && (\n <h2\n className=\"mb-4 text-lg font-semibold\"\n data-slot=\"wizard-step-title\"\n >\n {currentStepData.title}\n </h2>\n )}\n <div data-slot=\"wizard-step-form\">{currentStepData?.content}</div>\n </div>\n\n {/* Actions */}\n {showActions && (\n <div\n className={cn(wizardActionsVariants({ size, variant }), \"mt-6\")}\n data-slot=\"wizard-actions\"\n >\n <div className=\"flex gap-3\">\n {/* Back button */}\n {canGoBack && !isFirstStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-back\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"outline\"\n onClick={handleBack}\n >\n {backLabel}\n </Button>\n )}\n\n {/* Skip button */}\n {canSkip && currentStepData?.optional && !isLastStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-skip\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"ghost\"\n onClick={handleSkip}\n >\n {skipLabel}\n </Button>\n )}\n </div>\n\n {/* Next/Complete button */}\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-next\"\n disabled={isLoading || isValidating}\n type=\"button\"\n onClick={() => void handleNext()}\n >\n {isLoading || isValidating ? \"Carregando...\" : isLastStep ? completeLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport { Wizard }\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/Wizard/Wizard.variants.ts","../src/components/workflow/Wizard/Wizard.tsx"],"names":[],"mappings":"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","file":"chunk-STADVFL2.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * Main wizard container variants\n */\nexport const wizardVariants = cva(\"flex gap-6\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"flex-col rounded-lg border border-border bg-card\",\n default: \"flex-col\",\n vertical: \"flex-row\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard content area variants\n */\nexport const wizardContentVariants = cva(\"flex-1\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"border-t border-border\",\n default: \"\",\n vertical: \"border-l border-border\",\n },\n size: {\n default: \"p-6\",\n lg: \"p-8\",\n sm: \"p-4\",\n },\n },\n})\n\n/**\n * Wizard stepper area variants\n */\nexport const wizardStepperVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"p-6 pb-0\",\n default: \"\",\n vertical: \"min-w-48\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard actions area variants\n */\nexport const wizardActionsVariants = cva(\"flex items-center gap-3\", {\n defaultVariants: {\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n variant: {\n card: \"justify-between border-t border-border p-6\",\n default: \"justify-between\",\n vertical: \"justify-end border-t border-border pt-4\",\n },\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n\n/**\n * Wizard step content wrapper variants\n */\nexport const wizardStepContentVariants = cva(\"\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"\",\n lg: \"\",\n sm: \"\",\n },\n },\n})\n","import type { StepItem } from \"../Stepper\"\nimport type { WizardProps, WizardStep } from \"./Wizard.types\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport { Stepper } from \"../Stepper\"\nimport {\n wizardActionsVariants,\n wizardContentVariants,\n wizardStepperVariants,\n wizardVariants,\n} from \"./Wizard.variants\"\n\n/**\n * Convert WizardStep to StepItem for the Stepper component\n */\nfunction convertToStepItem(step: WizardStep, index: number, currentStep: number): StepItem {\n return {\n description: step.description,\n icon: step.icon,\n id: step.id,\n label: step.title,\n status: index < currentStep ? \"complete\" : index === currentStep ? \"active\" : \"pending\",\n }\n}\n\n/**\n * Wizard component guides users through a multi-step process.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Dados Pessoais\", content: <PersonalForm /> },\n * { id: \"2\", title: \"Endereço\", content: <AddressForm /> },\n * { id: \"3\", title: \"Conclusão\", content: <Summary /> },\n * ]\n *\n * <Wizard\n * steps={steps}\n * currentStep={0}\n * onStepChange={setStep}\n * onComplete={handleComplete}\n * />\n * ```\n */\nfunction Wizard({\n backLabel = \"Voltar\",\n canGoBack = true,\n canSkip = false,\n className,\n completeLabel = \"Completar\",\n currentStep = 0,\n isLoading = false,\n nextLabel = \"Próximo\",\n onComplete,\n onStepChange,\n onValidate,\n ref,\n showActions = true,\n showSteps = true,\n size = \"default\",\n skipLabel = \"Pular\",\n steps,\n variant = \"default\",\n ...props\n}: WizardProps) {\n const [isValidating, setIsValidating] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n const isLastStep = currentStep >= steps.length - 1\n const isFirstStep = currentStep === 0\n const currentStepData = steps[currentStep]\n\n // Convert steps for the Stepper component\n const stepperSteps: StepItem[] = steps.map((step, index) =>\n convertToStepItem(step, index, currentStep)\n )\n\n // Focus management - move focus to content when step changes\n useEffect(() => {\n if (contentRef.current) {\n contentRef.current.focus()\n }\n }, [currentStep])\n\n // Handle next step\n const handleNext = useCallback(async () => {\n if (isLoading || isValidating) return\n\n // Run step validation if provided\n if (currentStepData?.validate) {\n setIsValidating(true)\n try {\n const isValid = await currentStepData.validate()\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n // Run onValidate callback if provided\n if (onValidate) {\n setIsValidating(true)\n try {\n const isValid = await Promise.resolve(onValidate(currentStep))\n if (!isValid) {\n setIsValidating(false)\n return\n }\n } catch {\n setIsValidating(false)\n return\n }\n setIsValidating(false)\n }\n\n if (isLastStep) {\n onComplete?.()\n } else {\n onStepChange?.(currentStep + 1)\n }\n }, [currentStep, currentStepData, isLastStep, isLoading, isValidating, onComplete, onStepChange, onValidate])\n\n // Handle back step\n const handleBack = useCallback(() => {\n if (isLoading || isValidating || !canGoBack || isFirstStep) return\n onStepChange?.(currentStep - 1)\n }, [canGoBack, currentStep, isFirstStep, isLoading, isValidating, onStepChange])\n\n // Handle skip step\n const handleSkip = useCallback(() => {\n if (isLoading || isValidating || !canSkip || isLastStep) return\n if (currentStepData?.optional) {\n onStepChange?.(currentStep + 1)\n }\n }, [canSkip, currentStep, currentStepData?.optional, isLastStep, isLoading, isValidating, onStepChange])\n\n // Handle step click from stepper\n const handleStepClick = useCallback(\n (stepIndex: number) => {\n if (isLoading || isValidating) return\n // Only allow clicking on completed steps or the next step\n if (stepIndex <= currentStep) {\n onStepChange?.(stepIndex)\n }\n },\n [currentStep, isLoading, isValidating, onStepChange]\n )\n\n // Handle keyboard navigation\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n void handleNext()\n } else if (event.key === \"Escape\") {\n // Could implement cancel confirmation here\n }\n },\n [handleNext]\n )\n\n const isVertical = variant === \"vertical\"\n\n return (\n <div\n ref={ref}\n className={cn(\n wizardVariants({ size, variant }),\n isLoading && \"pointer-events-none opacity-50\",\n className\n )}\n aria-label={`Wizard: Step ${String(currentStep + 1)} of ${String(steps.length)}`}\n data-slot=\"wizard\"\n role=\"region\"\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Stepper */}\n {showSteps && (\n <div\n className={wizardStepperVariants({ size, variant })}\n data-slot=\"wizard-stepper\"\n >\n <Stepper\n clickable\n currentStep={currentStep}\n size={size === \"lg\" ? \"lg\" : size === \"sm\" ? \"sm\" : \"default\"}\n steps={stepperSteps}\n variant={isVertical ? \"vertical\" : \"default\"}\n onStepClick={handleStepClick}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n ref={contentRef}\n className={wizardContentVariants({ size, variant })}\n data-slot=\"wizard-content\"\n tabIndex={-1}\n >\n {/* Step content */}\n <div\n aria-label={currentStepData?.title}\n data-slot=\"wizard-step\"\n data-step={currentStep + 1}\n >\n {currentStepData?.title && (\n <h2\n className=\"mb-4 text-lg font-semibold\"\n data-slot=\"wizard-step-title\"\n >\n {currentStepData.title}\n </h2>\n )}\n <div data-slot=\"wizard-step-form\">{currentStepData?.content}</div>\n </div>\n\n {/* Actions */}\n {showActions && (\n <div\n className={cn(wizardActionsVariants({ size, variant }), \"mt-6\")}\n data-slot=\"wizard-actions\"\n >\n <div className=\"flex gap-3\">\n {/* Back button */}\n {canGoBack && !isFirstStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-back\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"outline\"\n onClick={handleBack}\n >\n {backLabel}\n </Button>\n )}\n\n {/* Skip button */}\n {canSkip && currentStepData?.optional && !isLastStep && (\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-skip\"\n disabled={isLoading || isValidating}\n type=\"button\"\n variant=\"ghost\"\n onClick={handleSkip}\n >\n {skipLabel}\n </Button>\n )}\n </div>\n\n {/* Next/Complete button */}\n <Button\n aria-disabled={isLoading || isValidating}\n data-slot=\"wizard-next\"\n disabled={isLoading || isValidating}\n type=\"button\"\n onClick={() => void handleNext()}\n >\n {isLoading || isValidating ? \"Carregando...\" : isLastStep ? completeLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nexport { Wizard }\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { cn } from './chunk-RVAYDRMA.js';
2
2
  import { AlertCircleIcon } from 'lucide-react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -136,5 +136,5 @@ function ErrorMessage({
136
136
  }
137
137
 
138
138
  export { ErrorMessage, errorMessageIconVariants, errorMessageListVariants, errorMessageVariants };
139
- //# sourceMappingURL=chunk-UA3OQAHJ.js.map
140
- //# sourceMappingURL=chunk-UA3OQAHJ.js.map
139
+ //# sourceMappingURL=chunk-SX63UD5X.js.map
140
+ //# sourceMappingURL=chunk-SX63UD5X.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/ErrorMessage/ErrorMessage.variants.ts","../src/components/forms/ErrorMessage/ErrorMessage.tsx"],"names":[],"mappings":"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","file":"chunk-UA3OQAHJ.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ErrorMessage variant styles using CVA\n */\nexport const errorMessageVariants = cva(\n [\n \"text-destructive font-normal\",\n \"flex items-center gap-1.5\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n inline: \"inline-flex\",\n bordered: [\n \"flex items-start gap-2\",\n \"bg-destructive/10 border border-destructive/30\",\n \"rounded-md p-3\",\n ],\n critical: [\n \"bg-destructive text-destructive-foreground\",\n \"font-medium rounded-md p-3\",\n ],\n },\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n animated: {\n true: \"animate-shake\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n animated: false,\n },\n }\n)\n\n/**\n * ErrorMessage icon variant styles using CVA\n */\nexport const errorMessageIconVariants = cva(\"shrink-0\", {\n variants: {\n size: {\n sm: \"size-3\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/**\n * ErrorMessage list variant styles for errors array\n */\nexport const errorMessageListVariants = cva(\"flex flex-col gap-1\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n// Export variant prop types\nexport type ErrorMessageVariantProps = VariantProps<typeof errorMessageVariants>\nexport type ErrorMessageIconVariantProps = VariantProps<typeof errorMessageIconVariants>\n","import type { ErrorMessageProps } from \"./ErrorMessage.types\"\n\nimport { AlertCircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n errorMessageIconVariants,\n errorMessageListVariants,\n type ErrorMessageVariantProps,\n errorMessageVariants,\n} from \"./ErrorMessage.variants\"\n\n/**\n * Determines if icon should be shown based on variant\n */\nfunction shouldShowIcon(\n showIcon: boolean | undefined,\n variant: string | undefined\n): boolean {\n if (showIcon !== undefined) return showIcon\n // Default: show icon for inline, bordered, critical variants\n return variant === \"inline\" || variant === \"bordered\" || variant === \"critical\"\n}\n\n/**\n * ErrorMessage displays form validation errors with an icon and accessible alert role.\n *\n * @example\n * ```tsx\n * <ErrorMessage>This field is required</ErrorMessage>\n * ```\n *\n * @example\n * ```tsx\n * // With errors array (react-hook-form compatible)\n * <ErrorMessage errors={[{ message: 'Error 1' }, { message: 'Error 2' }]} />\n * ```\n *\n * @example\n * ```tsx\n * // With animation\n * <ErrorMessage animated>Attention required!</ErrorMessage>\n * ```\n *\n * @example\n * ```tsx\n * // Bordered variant\n * <ErrorMessage variant=\"bordered\">Please fix this error</ErrorMessage>\n * ```\n */\nfunction ErrorMessage({\n className,\n variant = \"default\",\n size,\n icon,\n showIcon,\n animated = false,\n errors,\n children,\n ref,\n ...props\n}: ErrorMessageProps & ErrorMessageVariantProps) {\n // Filter out undefined errors and extract messages\n const errorMessages = errors?.filter((e): e is { message?: string } => !!e?.message)\n\n // If no children and no error messages, don't render\n if (!children && (!errorMessages || errorMessages.length === 0)) {\n return null\n }\n\n const displayIcon = shouldShowIcon(showIcon, variant)\n\n // Render errors array as list\n if (errorMessages && errorMessages.length > 0) {\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n className={cn(errorMessageListVariants({ size }), className)}\n data-slot=\"error-message\"\n role=\"alert\"\n {...(props as React.ComponentProps<\"div\">)}\n >\n {errorMessages.map((error) => (\n <span\n key={error.message}\n className={cn(errorMessageVariants({ variant, size, animated }))}\n data-slot=\"error-message-item\"\n >\n {displayIcon && icon !== null && (\n <span aria-hidden=\"true\" data-slot=\"error-message-icon\">\n {icon ?? (\n <AlertCircleIcon\n className={cn(errorMessageIconVariants({ size }))}\n />\n )}\n </span>\n )}\n {error.message}\n </span>\n ))}\n </div>\n )\n }\n\n // Render single error message\n return (\n <span\n ref={ref}\n className={cn(errorMessageVariants({ variant, size, animated }), className)}\n data-slot=\"error-message\"\n role=\"alert\"\n {...props}\n >\n {displayIcon && icon !== null && (\n <span aria-hidden=\"true\" data-slot=\"error-message-icon\">\n {icon ?? (\n <AlertCircleIcon\n className={cn(errorMessageIconVariants({ size }))}\n />\n )}\n </span>\n )}\n {children}\n </span>\n )\n}\n\nexport { ErrorMessage }\n"]}
1
+ {"version":3,"sources":["../src/components/forms/ErrorMessage/ErrorMessage.variants.ts","../src/components/forms/ErrorMessage/ErrorMessage.tsx"],"names":[],"mappings":"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","file":"chunk-SX63UD5X.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ErrorMessage variant styles using CVA\n */\nexport const errorMessageVariants = cva(\n [\n \"text-destructive font-normal\",\n \"flex items-center gap-1.5\",\n ],\n {\n variants: {\n variant: {\n default: \"\",\n inline: \"inline-flex\",\n bordered: [\n \"flex items-start gap-2\",\n \"bg-destructive/10 border border-destructive/30\",\n \"rounded-md p-3\",\n ],\n critical: [\n \"bg-destructive text-destructive-foreground\",\n \"font-medium rounded-md p-3\",\n ],\n },\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n animated: {\n true: \"animate-shake\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n animated: false,\n },\n }\n)\n\n/**\n * ErrorMessage icon variant styles using CVA\n */\nexport const errorMessageIconVariants = cva(\"shrink-0\", {\n variants: {\n size: {\n sm: \"size-3\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/**\n * ErrorMessage list variant styles for errors array\n */\nexport const errorMessageListVariants = cva(\"flex flex-col gap-1\", {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n// Export variant prop types\nexport type ErrorMessageVariantProps = VariantProps<typeof errorMessageVariants>\nexport type ErrorMessageIconVariantProps = VariantProps<typeof errorMessageIconVariants>\n","import type { ErrorMessageProps } from \"./ErrorMessage.types\"\n\nimport { AlertCircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n errorMessageIconVariants,\n errorMessageListVariants,\n type ErrorMessageVariantProps,\n errorMessageVariants,\n} from \"./ErrorMessage.variants\"\n\n/**\n * Determines if icon should be shown based on variant\n */\nfunction shouldShowIcon(\n showIcon: boolean | undefined,\n variant: string | undefined\n): boolean {\n if (showIcon !== undefined) return showIcon\n // Default: show icon for inline, bordered, critical variants\n return variant === \"inline\" || variant === \"bordered\" || variant === \"critical\"\n}\n\n/**\n * ErrorMessage displays form validation errors with an icon and accessible alert role.\n *\n * @example\n * ```tsx\n * <ErrorMessage>This field is required</ErrorMessage>\n * ```\n *\n * @example\n * ```tsx\n * // With errors array (react-hook-form compatible)\n * <ErrorMessage errors={[{ message: 'Error 1' }, { message: 'Error 2' }]} />\n * ```\n *\n * @example\n * ```tsx\n * // With animation\n * <ErrorMessage animated>Attention required!</ErrorMessage>\n * ```\n *\n * @example\n * ```tsx\n * // Bordered variant\n * <ErrorMessage variant=\"bordered\">Please fix this error</ErrorMessage>\n * ```\n */\nfunction ErrorMessage({\n className,\n variant = \"default\",\n size,\n icon,\n showIcon,\n animated = false,\n errors,\n children,\n ref,\n ...props\n}: ErrorMessageProps & ErrorMessageVariantProps) {\n // Filter out undefined errors and extract messages\n const errorMessages = errors?.filter((e): e is { message?: string } => !!e?.message)\n\n // If no children and no error messages, don't render\n if (!children && (!errorMessages || errorMessages.length === 0)) {\n return null\n }\n\n const displayIcon = shouldShowIcon(showIcon, variant)\n\n // Render errors array as list\n if (errorMessages && errorMessages.length > 0) {\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n className={cn(errorMessageListVariants({ size }), className)}\n data-slot=\"error-message\"\n role=\"alert\"\n {...(props as React.ComponentProps<\"div\">)}\n >\n {errorMessages.map((error) => (\n <span\n key={error.message}\n className={cn(errorMessageVariants({ variant, size, animated }))}\n data-slot=\"error-message-item\"\n >\n {displayIcon && icon !== null && (\n <span aria-hidden=\"true\" data-slot=\"error-message-icon\">\n {icon ?? (\n <AlertCircleIcon\n className={cn(errorMessageIconVariants({ size }))}\n />\n )}\n </span>\n )}\n {error.message}\n </span>\n ))}\n </div>\n )\n }\n\n // Render single error message\n return (\n <span\n ref={ref}\n className={cn(errorMessageVariants({ variant, size, animated }), className)}\n data-slot=\"error-message\"\n role=\"alert\"\n {...props}\n >\n {displayIcon && icon !== null && (\n <span aria-hidden=\"true\" data-slot=\"error-message-icon\">\n {icon ?? (\n <AlertCircleIcon\n className={cn(errorMessageIconVariants({ size }))}\n />\n )}\n </span>\n )}\n {children}\n </span>\n )\n}\n\nexport { ErrorMessage }\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 { Plus } from 'lucide-react';
4
4
  import * as React from 'react';
5
5
  import { cva } from 'class-variance-authority';
@@ -275,5 +275,5 @@ function SpeedDial({
275
275
  }
276
276
 
277
277
  export { SpeedDial };
278
- //# sourceMappingURL=chunk-YZY35OHQ.js.map
279
- //# sourceMappingURL=chunk-YZY35OHQ.js.map
278
+ //# sourceMappingURL=chunk-SXSR2VRG.js.map
279
+ //# sourceMappingURL=chunk-SXSR2VRG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/navigation/SpeedDial/SpeedDial.variants.ts","../src/components/navigation/SpeedDial/SpeedDial.tsx"],"names":[],"mappings":"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","file":"chunk-YZY35OHQ.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * SpeedDial container variants\n */\nexport const speedDialContainerVariants = cva(\"relative inline-flex\", {\n variants: {\n direction: {\n up: \"flex-col-reverse items-center\",\n down: \"flex-col items-center\",\n left: \"flex-row-reverse items-center\",\n right: \"flex-row items-center\",\n \"up-left\": \"flex-col-reverse items-end\",\n \"up-right\": \"flex-col-reverse items-start\",\n \"down-left\": \"flex-col items-end\",\n \"down-right\": \"flex-col items-start\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n },\n})\n\n/**\n * SpeedDial main FAB button variants\n */\nexport const speedDialFabVariants = cva(\n \"inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-all duration-200 hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 z-10\",\n {\n variants: {\n size: {\n sm: \"size-12 [&_svg]:size-5\",\n default: \"size-14 [&_svg]:size-6\",\n lg: \"size-16 [&_svg]:size-7\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * SpeedDial action button variants\n */\nexport const speedDialActionVariants = cva(\n \"inline-flex items-center justify-center rounded-full bg-background text-foreground shadow-md border border-border transition-all duration-200 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"size-10 [&_svg]:size-4\",\n default: \"size-11 [&_svg]:size-5\",\n lg: \"size-12 [&_svg]:size-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * SpeedDial actions container variants\n */\nexport const speedDialActionsVariants = cva(\n \"flex transition-all duration-200\",\n {\n variants: {\n direction: {\n up: \"flex-col-reverse gap-2 pb-2\",\n down: \"flex-col gap-2 pt-2\",\n left: \"flex-row-reverse gap-2 pr-2\",\n right: \"flex-row gap-2 pl-2\",\n \"up-left\": \"flex-col-reverse gap-2 pb-2\",\n \"up-right\": \"flex-col-reverse gap-2 pb-2\",\n \"down-left\": \"flex-col gap-2 pt-2\",\n \"down-right\": \"flex-col gap-2 pt-2\",\n },\n open: {\n true: \"opacity-100 visible\",\n false: \"opacity-0 invisible pointer-events-none\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n open: false,\n },\n }\n)\n\n/**\n * SpeedDial action item wrapper (for label positioning)\n */\nexport const speedDialActionItemVariants = cva(\n \"flex items-center gap-2 transition-all duration-200\",\n {\n variants: {\n direction: {\n up: \"flex-row\",\n down: \"flex-row\",\n left: \"flex-col\",\n right: \"flex-col\",\n \"up-left\": \"flex-row-reverse\",\n \"up-right\": \"flex-row\",\n \"down-left\": \"flex-row-reverse\",\n \"down-right\": \"flex-row\",\n },\n index: {\n 0: \"transition-delay-[0ms]\",\n 1: \"transition-delay-[25ms]\",\n 2: \"transition-delay-[50ms]\",\n 3: \"transition-delay-[75ms]\",\n 4: \"transition-delay-[100ms]\",\n 5: \"transition-delay-[125ms]\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n },\n }\n)\n","\"use client\"\n\nimport type { SpeedDialProps } from \"./SpeedDial.types\"\n\nimport { Plus } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n speedDialActionItemVariants,\n speedDialActionsVariants,\n speedDialActionVariants,\n speedDialContainerVariants,\n speedDialFabVariants,\n} from \"./SpeedDial.variants\"\n\n/**\n * SpeedDial - A floating action button that expands to reveal multiple actions\n *\n * Inspired by PrimeVue's SpeedDial component. Provides quick access to\n * multiple related actions from a single FAB button.\n *\n * @example\n * ```tsx\n * <SpeedDial\n * actions={[\n * { id: \"edit\", icon: <Edit />, label: \"Edit\", onClick: handleEdit },\n * { id: \"delete\", icon: <Trash />, label: \"Delete\", onClick: handleDelete },\n * { id: \"share\", icon: <Share />, label: \"Share\", onClick: handleShare },\n * ]}\n * direction=\"up\"\n * />\n * ```\n */\nfunction SpeedDial({\n actions,\n direction = \"up\",\n icon,\n openIcon,\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n size = \"default\",\n tooltip,\n showLabels = false,\n mask = false,\n className,\n \"aria-label\": ariaLabel = \"Open actions menu\",\n ...props\n}: SpeedDialProps) {\n // Uncontrolled state\n const [internalOpen, setInternalOpen] = React.useState(false)\n\n // Use controlled or uncontrolled\n const isOpen = controlledOpen ?? internalOpen\n\n const handleToggle = React.useCallback(() => {\n if (disabled) return\n const newOpen = !isOpen\n setInternalOpen(newOpen)\n onOpenChange?.(newOpen)\n }, [disabled, isOpen, onOpenChange])\n\n const handleClose = React.useCallback(() => {\n setInternalOpen(false)\n onOpenChange?.(false)\n }, [onOpenChange])\n\n const handleActionClick = React.useCallback(\n (action: SpeedDialProps[\"actions\"][number]) => {\n if (action.disabled) return\n action.onClick?.()\n handleClose()\n },\n [handleClose]\n )\n\n // Handle escape key to close\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && isOpen) {\n handleClose()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n return () => { document.removeEventListener(\"keydown\", handleKeyDown) }\n }, [isOpen, handleClose])\n\n // Default icon with rotation when open\n const fabIcon = isOpen\n ? (openIcon ?? <Plus className=\"transition-transform duration-200 rotate-45\" />)\n : (icon ?? <Plus className=\"transition-transform duration-200\" />)\n\n // Wrap action button with tooltip if not showing labels\n const renderActionButton = (\n action: SpeedDialProps[\"actions\"][number],\n index: number\n ) => {\n const button = (\n <button\n className={cn(\n speedDialActionVariants({ size }),\n action.className\n )}\n aria-label={action.label}\n data-slot=\"speed-dial-action\"\n disabled={action.disabled}\n type=\"button\"\n onClick={() => { handleActionClick(action) }}\n >\n {action.icon}\n </button>\n )\n\n if (showLabels) {\n return (\n <div\n key={action.id}\n className={cn(\n speedDialActionItemVariants({\n direction,\n index: Math.min(index, 5) as 0 | 1 | 2 | 3 | 4 | 5,\n }),\n !isOpen && \"translate-y-2 opacity-0\",\n isOpen && \"translate-y-0 opacity-100\"\n )}\n >\n {button}\n <span\n className=\"text-sm font-medium text-foreground whitespace-nowrap bg-background px-2 py-1 rounded shadow-sm border border-border\"\n data-slot=\"speed-dial-action-label\"\n >\n {action.label}\n </span>\n </div>\n )\n }\n\n return (\n <div\n key={action.id}\n className={cn(\n speedDialActionItemVariants({\n direction,\n index: Math.min(index, 5) as 0 | 1 | 2 | 3 | 4 | 5,\n }),\n !isOpen && \"translate-y-2 opacity-0\",\n isOpen && \"translate-y-0 opacity-100\"\n )}\n >\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={direction.includes(\"left\") ? \"left\" : \"right\"}>\n {action.label}\n </TooltipContent>\n </Tooltip>\n </div>\n )\n }\n\n const fabButton = (\n <button\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n aria-label={ariaLabel}\n className={cn(speedDialFabVariants({ size }))}\n data-open={isOpen || undefined}\n data-slot=\"speed-dial-fab\"\n disabled={disabled}\n type=\"button\"\n onClick={handleToggle}\n >\n {fabIcon}\n </button>\n )\n\n return (\n <>\n {/* Mask overlay */}\n {mask && isOpen && (\n <div\n aria-hidden=\"true\"\n className=\"fixed inset-0 bg-black/20 z-40 transition-opacity duration-200\"\n data-slot=\"speed-dial-mask\"\n onClick={handleClose}\n />\n )}\n\n <div\n className={cn(\n speedDialContainerVariants({ direction }),\n mask && isOpen && \"z-50\",\n className\n )}\n data-direction={direction}\n data-open={isOpen || undefined}\n data-slot=\"speed-dial\"\n {...props}\n >\n {/* Actions */}\n <div\n className={cn(speedDialActionsVariants({ direction, open: isOpen }))}\n data-slot=\"speed-dial-actions\"\n role=\"menu\"\n >\n {actions.map((action, index) => renderActionButton(action, index))}\n </div>\n\n {/* Main FAB */}\n {tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{fabButton}</TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n ) : (\n fabButton\n )}\n </div>\n </>\n )\n}\n\nexport { SpeedDial }\n"]}
1
+ {"version":3,"sources":["../src/components/navigation/SpeedDial/SpeedDial.variants.ts","../src/components/navigation/SpeedDial/SpeedDial.tsx"],"names":[],"mappings":"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","file":"chunk-SXSR2VRG.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\n/**\n * SpeedDial container variants\n */\nexport const speedDialContainerVariants = cva(\"relative inline-flex\", {\n variants: {\n direction: {\n up: \"flex-col-reverse items-center\",\n down: \"flex-col items-center\",\n left: \"flex-row-reverse items-center\",\n right: \"flex-row items-center\",\n \"up-left\": \"flex-col-reverse items-end\",\n \"up-right\": \"flex-col-reverse items-start\",\n \"down-left\": \"flex-col items-end\",\n \"down-right\": \"flex-col items-start\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n },\n})\n\n/**\n * SpeedDial main FAB button variants\n */\nexport const speedDialFabVariants = cva(\n \"inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-all duration-200 hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 z-10\",\n {\n variants: {\n size: {\n sm: \"size-12 [&_svg]:size-5\",\n default: \"size-14 [&_svg]:size-6\",\n lg: \"size-16 [&_svg]:size-7\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * SpeedDial action button variants\n */\nexport const speedDialActionVariants = cva(\n \"inline-flex items-center justify-center rounded-full bg-background text-foreground shadow-md border border-border transition-all duration-200 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"size-10 [&_svg]:size-4\",\n default: \"size-11 [&_svg]:size-5\",\n lg: \"size-12 [&_svg]:size-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * SpeedDial actions container variants\n */\nexport const speedDialActionsVariants = cva(\n \"flex transition-all duration-200\",\n {\n variants: {\n direction: {\n up: \"flex-col-reverse gap-2 pb-2\",\n down: \"flex-col gap-2 pt-2\",\n left: \"flex-row-reverse gap-2 pr-2\",\n right: \"flex-row gap-2 pl-2\",\n \"up-left\": \"flex-col-reverse gap-2 pb-2\",\n \"up-right\": \"flex-col-reverse gap-2 pb-2\",\n \"down-left\": \"flex-col gap-2 pt-2\",\n \"down-right\": \"flex-col gap-2 pt-2\",\n },\n open: {\n true: \"opacity-100 visible\",\n false: \"opacity-0 invisible pointer-events-none\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n open: false,\n },\n }\n)\n\n/**\n * SpeedDial action item wrapper (for label positioning)\n */\nexport const speedDialActionItemVariants = cva(\n \"flex items-center gap-2 transition-all duration-200\",\n {\n variants: {\n direction: {\n up: \"flex-row\",\n down: \"flex-row\",\n left: \"flex-col\",\n right: \"flex-col\",\n \"up-left\": \"flex-row-reverse\",\n \"up-right\": \"flex-row\",\n \"down-left\": \"flex-row-reverse\",\n \"down-right\": \"flex-row\",\n },\n index: {\n 0: \"transition-delay-[0ms]\",\n 1: \"transition-delay-[25ms]\",\n 2: \"transition-delay-[50ms]\",\n 3: \"transition-delay-[75ms]\",\n 4: \"transition-delay-[100ms]\",\n 5: \"transition-delay-[125ms]\",\n },\n },\n defaultVariants: {\n direction: \"up\",\n },\n }\n)\n","\"use client\"\n\nimport type { SpeedDialProps } from \"./SpeedDial.types\"\n\nimport { Plus } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport {\n speedDialActionItemVariants,\n speedDialActionsVariants,\n speedDialActionVariants,\n speedDialContainerVariants,\n speedDialFabVariants,\n} from \"./SpeedDial.variants\"\n\n/**\n * SpeedDial - A floating action button that expands to reveal multiple actions\n *\n * Inspired by PrimeVue's SpeedDial component. Provides quick access to\n * multiple related actions from a single FAB button.\n *\n * @example\n * ```tsx\n * <SpeedDial\n * actions={[\n * { id: \"edit\", icon: <Edit />, label: \"Edit\", onClick: handleEdit },\n * { id: \"delete\", icon: <Trash />, label: \"Delete\", onClick: handleDelete },\n * { id: \"share\", icon: <Share />, label: \"Share\", onClick: handleShare },\n * ]}\n * direction=\"up\"\n * />\n * ```\n */\nfunction SpeedDial({\n actions,\n direction = \"up\",\n icon,\n openIcon,\n open: controlledOpen,\n onOpenChange,\n disabled = false,\n size = \"default\",\n tooltip,\n showLabels = false,\n mask = false,\n className,\n \"aria-label\": ariaLabel = \"Open actions menu\",\n ...props\n}: SpeedDialProps) {\n // Uncontrolled state\n const [internalOpen, setInternalOpen] = React.useState(false)\n\n // Use controlled or uncontrolled\n const isOpen = controlledOpen ?? internalOpen\n\n const handleToggle = React.useCallback(() => {\n if (disabled) return\n const newOpen = !isOpen\n setInternalOpen(newOpen)\n onOpenChange?.(newOpen)\n }, [disabled, isOpen, onOpenChange])\n\n const handleClose = React.useCallback(() => {\n setInternalOpen(false)\n onOpenChange?.(false)\n }, [onOpenChange])\n\n const handleActionClick = React.useCallback(\n (action: SpeedDialProps[\"actions\"][number]) => {\n if (action.disabled) return\n action.onClick?.()\n handleClose()\n },\n [handleClose]\n )\n\n // Handle escape key to close\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && isOpen) {\n handleClose()\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown)\n return () => { document.removeEventListener(\"keydown\", handleKeyDown) }\n }, [isOpen, handleClose])\n\n // Default icon with rotation when open\n const fabIcon = isOpen\n ? (openIcon ?? <Plus className=\"transition-transform duration-200 rotate-45\" />)\n : (icon ?? <Plus className=\"transition-transform duration-200\" />)\n\n // Wrap action button with tooltip if not showing labels\n const renderActionButton = (\n action: SpeedDialProps[\"actions\"][number],\n index: number\n ) => {\n const button = (\n <button\n className={cn(\n speedDialActionVariants({ size }),\n action.className\n )}\n aria-label={action.label}\n data-slot=\"speed-dial-action\"\n disabled={action.disabled}\n type=\"button\"\n onClick={() => { handleActionClick(action) }}\n >\n {action.icon}\n </button>\n )\n\n if (showLabels) {\n return (\n <div\n key={action.id}\n className={cn(\n speedDialActionItemVariants({\n direction,\n index: Math.min(index, 5) as 0 | 1 | 2 | 3 | 4 | 5,\n }),\n !isOpen && \"translate-y-2 opacity-0\",\n isOpen && \"translate-y-0 opacity-100\"\n )}\n >\n {button}\n <span\n className=\"text-sm font-medium text-foreground whitespace-nowrap bg-background px-2 py-1 rounded shadow-sm border border-border\"\n data-slot=\"speed-dial-action-label\"\n >\n {action.label}\n </span>\n </div>\n )\n }\n\n return (\n <div\n key={action.id}\n className={cn(\n speedDialActionItemVariants({\n direction,\n index: Math.min(index, 5) as 0 | 1 | 2 | 3 | 4 | 5,\n }),\n !isOpen && \"translate-y-2 opacity-0\",\n isOpen && \"translate-y-0 opacity-100\"\n )}\n >\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={direction.includes(\"left\") ? \"left\" : \"right\"}>\n {action.label}\n </TooltipContent>\n </Tooltip>\n </div>\n )\n }\n\n const fabButton = (\n <button\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n aria-label={ariaLabel}\n className={cn(speedDialFabVariants({ size }))}\n data-open={isOpen || undefined}\n data-slot=\"speed-dial-fab\"\n disabled={disabled}\n type=\"button\"\n onClick={handleToggle}\n >\n {fabIcon}\n </button>\n )\n\n return (\n <>\n {/* Mask overlay */}\n {mask && isOpen && (\n <div\n aria-hidden=\"true\"\n className=\"fixed inset-0 bg-black/20 z-40 transition-opacity duration-200\"\n data-slot=\"speed-dial-mask\"\n onClick={handleClose}\n />\n )}\n\n <div\n className={cn(\n speedDialContainerVariants({ direction }),\n mask && isOpen && \"z-50\",\n className\n )}\n data-direction={direction}\n data-open={isOpen || undefined}\n data-slot=\"speed-dial\"\n {...props}\n >\n {/* Actions */}\n <div\n className={cn(speedDialActionsVariants({ direction, open: isOpen }))}\n data-slot=\"speed-dial-actions\"\n role=\"menu\"\n >\n {actions.map((action, index) => renderActionButton(action, index))}\n </div>\n\n {/* Main FAB */}\n {tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{fabButton}</TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n ) : (\n fabButton\n )}\n </div>\n </>\n )\n}\n\nexport { SpeedDial }\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
 
@@ -66,5 +66,5 @@ function Icon({
66
66
  }
67
67
 
68
68
  export { Icon, iconVariants };
69
- //# sourceMappingURL=chunk-AR3OXNPL.js.map
70
- //# sourceMappingURL=chunk-AR3OXNPL.js.map
69
+ //# sourceMappingURL=chunk-TDANAN5A.js.map
70
+ //# sourceMappingURL=chunk-TDANAN5A.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/Icon/Icon.tsx"],"names":[],"mappings":";;;;AAMA,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,uDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,KAAA,EAAO,sCAAA;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,WAAA,EAAa,4CAAA;AAAA,QACb,OAAA,EAAS,wCAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,IAAA,EAAM,aAAA;AAAA,EACN,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR,UAAA,GAAa,IAAA;AAAA,EACb,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,UAAA;AAAA,EACf,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AAIZ,EAAA,MAAM,kBAAA,GAAqB,UAAA,KAAe,UAAA,GAAa,IAAA,GAAO,MAAA,CAAA;AAC9D,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,CAAC,UAAA,IAAc,YAAY,KAAA,GAAQ,MAAA,CAAA;AAEjE,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,YAAA,CAAa,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAC9B,IAAA,IAAQ,cAAA;AAAA,QACR,KAAA,IAAS,eAAA;AAAA,QACT;AAAA,OACF;AAAA,MACA,aAAA,EAAa,kBAAA;AAAA,MACb,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAM,YAAA;AAAA,MACL,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-AR3OXNPL.js","sourcesContent":["import type { IconProps } from \"./Icon.types\"\n\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst iconVariants = cva(\n \"shrink-0 transition-colors motion-reduce:animate-none\",\n {\n variants: {\n variant: {\n default: \"text-[color:var(--icon-color-default)]\",\n muted: \"text-[color:var(--icon-color-muted)]\",\n primary: \"text-[color:var(--icon-color-primary)]\",\n destructive: \"text-[color:var(--icon-color-destructive)]\",\n success: \"text-[color:var(--icon-color-success)]\",\n warning: \"text-[color:var(--icon-color-warning)]\",\n },\n size: {\n xs: \"size-[var(--icon-size-xs)]\",\n sm: \"size-[var(--icon-size-sm)]\",\n md: \"size-[var(--icon-size-md)]\",\n lg: \"size-[var(--icon-size-lg)]\",\n xl: \"size-[var(--icon-size-xl)]\",\n \"2xl\": \"size-[var(--icon-size-2xl)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Icon({\n name: IconComponent,\n variant,\n size,\n spin = false,\n pulse = false,\n decorative = true,\n className,\n \"aria-label\": ariaLabel,\n \"aria-hidden\": ariaHidden,\n role,\n ref,\n ...props\n}: IconProps) {\n // Determine accessibility attributes\n // If decorative is explicitly true, always hide from screen readers\n // If decorative is false and has aria-label, make it accessible\n const computedAriaHidden = ariaHidden ?? (decorative ? true : undefined)\n const computedRole = role ?? (!decorative && ariaLabel ? \"img\" : undefined)\n\n return (\n <IconComponent\n ref={ref}\n className={cn(\n iconVariants({ variant, size }),\n spin && \"animate-spin\",\n pulse && \"animate-pulse\",\n className\n )}\n aria-hidden={computedAriaHidden}\n aria-label={ariaLabel}\n data-slot=\"icon\"\n focusable=\"false\"\n role={computedRole}\n {...props}\n />\n )\n}\n\nexport { Icon, iconVariants }\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/Icon/Icon.tsx"],"names":[],"mappings":";;;;AAMA,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,uDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,KAAA,EAAO,sCAAA;AAAA,QACP,OAAA,EAAS,wCAAA;AAAA,QACT,WAAA,EAAa,4CAAA;AAAA,QACb,OAAA,EAAS,wCAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,EAAA,EAAI,4BAAA;AAAA,QACJ,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,IAAA,CAAK;AAAA,EACZ,IAAA,EAAM,aAAA;AAAA,EACN,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,KAAA;AAAA,EACR,UAAA,GAAa,IAAA;AAAA,EACb,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,aAAA,EAAe,UAAA;AAAA,EACf,IAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAc;AAIZ,EAAA,MAAM,kBAAA,GAAqB,UAAA,KAAe,UAAA,GAAa,IAAA,GAAO,MAAA,CAAA;AAC9D,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,CAAC,UAAA,IAAc,YAAY,KAAA,GAAQ,MAAA,CAAA;AAEjE,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,YAAA,CAAa,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,QAC9B,IAAA,IAAQ,cAAA;AAAA,QACR,KAAA,IAAS,eAAA;AAAA,QACT;AAAA,OACF;AAAA,MACA,aAAA,EAAa,kBAAA;AAAA,MACb,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAM,YAAA;AAAA,MACL,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-TDANAN5A.js","sourcesContent":["import type { IconProps } from \"./Icon.types\"\n\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst iconVariants = cva(\n \"shrink-0 transition-colors motion-reduce:animate-none\",\n {\n variants: {\n variant: {\n default: \"text-[color:var(--icon-color-default)]\",\n muted: \"text-[color:var(--icon-color-muted)]\",\n primary: \"text-[color:var(--icon-color-primary)]\",\n destructive: \"text-[color:var(--icon-color-destructive)]\",\n success: \"text-[color:var(--icon-color-success)]\",\n warning: \"text-[color:var(--icon-color-warning)]\",\n },\n size: {\n xs: \"size-[var(--icon-size-xs)]\",\n sm: \"size-[var(--icon-size-sm)]\",\n md: \"size-[var(--icon-size-md)]\",\n lg: \"size-[var(--icon-size-lg)]\",\n xl: \"size-[var(--icon-size-xl)]\",\n \"2xl\": \"size-[var(--icon-size-2xl)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nfunction Icon({\n name: IconComponent,\n variant,\n size,\n spin = false,\n pulse = false,\n decorative = true,\n className,\n \"aria-label\": ariaLabel,\n \"aria-hidden\": ariaHidden,\n role,\n ref,\n ...props\n}: IconProps) {\n // Determine accessibility attributes\n // If decorative is explicitly true, always hide from screen readers\n // If decorative is false and has aria-label, make it accessible\n const computedAriaHidden = ariaHidden ?? (decorative ? true : undefined)\n const computedRole = role ?? (!decorative && ariaLabel ? \"img\" : undefined)\n\n return (\n <IconComponent\n ref={ref}\n className={cn(\n iconVariants({ variant, size }),\n spin && \"animate-spin\",\n pulse && \"animate-pulse\",\n className\n )}\n aria-hidden={computedAriaHidden}\n aria-label={ariaLabel}\n data-slot=\"icon\"\n focusable=\"false\"\n role={computedRole}\n {...props}\n />\n )\n}\n\nexport { Icon, iconVariants }\n"]}