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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/dist/{chunk-U2CXFKRK.js → chunk-2SUZS6GZ.js} +4 -4
  2. package/dist/{chunk-U2CXFKRK.js.map → chunk-2SUZS6GZ.js.map} +1 -1
  3. package/dist/{chunk-UPYT2XM5.js → chunk-2XNMKALT.js} +3 -3
  4. package/dist/{chunk-UPYT2XM5.js.map → chunk-2XNMKALT.js.map} +1 -1
  5. package/dist/{chunk-SM4AZOEP.js → chunk-3MOBFZJM.js} +4 -4
  6. package/dist/{chunk-SM4AZOEP.js.map → chunk-3MOBFZJM.js.map} +1 -1
  7. package/dist/{chunk-ZP4HYVDG.js → chunk-3R6MY3YJ.js} +4 -4
  8. package/dist/{chunk-ZP4HYVDG.js.map → chunk-3R6MY3YJ.js.map} +1 -1
  9. package/dist/{chunk-EVUHEBWX.js → chunk-447INBQP.js} +3 -3
  10. package/dist/{chunk-EVUHEBWX.js.map → chunk-447INBQP.js.map} +1 -1
  11. package/dist/{chunk-F7XARQUW.js → chunk-4LZ53BAG.js} +3 -3
  12. package/dist/{chunk-F7XARQUW.js.map → chunk-4LZ53BAG.js.map} +1 -1
  13. package/dist/{chunk-CYIFWQ5Y.js → chunk-4OWRNWHW.js} +3 -3
  14. package/dist/{chunk-CYIFWQ5Y.js.map → chunk-4OWRNWHW.js.map} +1 -1
  15. package/dist/{chunk-OQCGQG47.js → chunk-4RNPI3LU.js} +3 -3
  16. package/dist/{chunk-OQCGQG47.js.map → chunk-4RNPI3LU.js.map} +1 -1
  17. package/dist/{chunk-N4UTBJRY.js → chunk-4SFBDK4E.js} +4 -4
  18. package/dist/{chunk-N4UTBJRY.js.map → chunk-4SFBDK4E.js.map} +1 -1
  19. package/dist/{chunk-B7ZLPQSO.js → chunk-4XXAIWQ4.js} +3 -3
  20. package/dist/{chunk-B7ZLPQSO.js.map → chunk-4XXAIWQ4.js.map} +1 -1
  21. package/dist/{chunk-D2V2HKLX.js → chunk-5ETVWWA5.js} +3 -3
  22. package/dist/{chunk-D2V2HKLX.js.map → chunk-5ETVWWA5.js.map} +1 -1
  23. package/dist/{chunk-U4H3XHSI.js → chunk-5GV4LDX7.js} +4 -4
  24. package/dist/{chunk-U4H3XHSI.js.map → chunk-5GV4LDX7.js.map} +1 -1
  25. package/dist/{chunk-BFBGESUI.js → chunk-5MJQ5XSR.js} +4 -4
  26. package/dist/{chunk-BFBGESUI.js.map → chunk-5MJQ5XSR.js.map} +1 -1
  27. package/dist/{chunk-GKMR5SVC.js → chunk-5QDKJMUA.js} +3 -3
  28. package/dist/{chunk-GKMR5SVC.js.map → chunk-5QDKJMUA.js.map} +1 -1
  29. package/dist/{chunk-3NFQXZHO.js → chunk-5T7EKOJ5.js} +3 -3
  30. package/dist/{chunk-3NFQXZHO.js.map → chunk-5T7EKOJ5.js.map} +1 -1
  31. package/dist/{chunk-WBE6VQOO.js → chunk-5W3T767A.js} +3 -3
  32. package/dist/{chunk-WBE6VQOO.js.map → chunk-5W3T767A.js.map} +1 -1
  33. package/dist/{chunk-XYYOV5GW.js → chunk-5YUUE5JJ.js} +5 -5
  34. package/dist/{chunk-XYYOV5GW.js.map → chunk-5YUUE5JJ.js.map} +1 -1
  35. package/dist/{chunk-D6TH3EGA.js → chunk-627ZZ6HO.js} +6 -6
  36. package/dist/{chunk-D6TH3EGA.js.map → chunk-627ZZ6HO.js.map} +1 -1
  37. package/dist/{chunk-OXDWUKGP.js → chunk-6G5QK3SU.js} +5 -5
  38. package/dist/chunk-6G5QK3SU.js.map +1 -0
  39. package/dist/{chunk-U74PNG4S.js → chunk-6QVXMYKH.js} +4 -4
  40. package/dist/{chunk-U74PNG4S.js.map → chunk-6QVXMYKH.js.map} +1 -1
  41. package/dist/{chunk-NWVYQYKK.js → chunk-6VEQLD2P.js} +3 -3
  42. package/dist/{chunk-NWVYQYKK.js.map → chunk-6VEQLD2P.js.map} +1 -1
  43. package/dist/{chunk-S6ORCWM2.js → chunk-73DDLKBG.js} +3 -3
  44. package/dist/{chunk-S6ORCWM2.js.map → chunk-73DDLKBG.js.map} +1 -1
  45. package/dist/{chunk-E27SQ54A.js → chunk-7AR5QRRX.js} +3 -3
  46. package/dist/{chunk-E27SQ54A.js.map → chunk-7AR5QRRX.js.map} +1 -1
  47. package/dist/{chunk-3MJNJKAF.js → chunk-7IKX4AFY.js} +4 -4
  48. package/dist/{chunk-3MJNJKAF.js.map → chunk-7IKX4AFY.js.map} +1 -1
  49. package/dist/{chunk-A7YNTSVU.js → chunk-7PX3WBR3.js} +3 -3
  50. package/dist/{chunk-A7YNTSVU.js.map → chunk-7PX3WBR3.js.map} +1 -1
  51. package/dist/{chunk-EYSTEGV5.js → chunk-7QEFKWUR.js} +10 -10
  52. package/dist/{chunk-EYSTEGV5.js.map → chunk-7QEFKWUR.js.map} +1 -1
  53. package/dist/{chunk-Z4KW5VW6.js → chunk-7TX5X4EP.js} +6 -6
  54. package/dist/{chunk-Z4KW5VW6.js.map → chunk-7TX5X4EP.js.map} +1 -1
  55. package/dist/{chunk-BQMQULAC.js → chunk-7XJQYAGY.js} +4 -4
  56. package/dist/{chunk-BQMQULAC.js.map → chunk-7XJQYAGY.js.map} +1 -1
  57. package/dist/{chunk-2ROFZG3A.js → chunk-7Y325TBV.js} +4 -4
  58. package/dist/{chunk-2ROFZG3A.js.map → chunk-7Y325TBV.js.map} +1 -1
  59. package/dist/{chunk-4RSHPKHB.js → chunk-7YZ7HNXX.js} +4 -4
  60. package/dist/{chunk-4RSHPKHB.js.map → chunk-7YZ7HNXX.js.map} +1 -1
  61. package/dist/{chunk-YACIRNVP.js → chunk-AD4RW2JV.js} +3 -3
  62. package/dist/{chunk-YACIRNVP.js.map → chunk-AD4RW2JV.js.map} +1 -1
  63. package/dist/{chunk-YMYXWHDU.js → chunk-ADX6C3V7.js} +3 -3
  64. package/dist/{chunk-YMYXWHDU.js.map → chunk-ADX6C3V7.js.map} +1 -1
  65. package/dist/{chunk-CKD4UBV6.js → chunk-AJUOTABG.js} +4 -4
  66. package/dist/{chunk-CKD4UBV6.js.map → chunk-AJUOTABG.js.map} +1 -1
  67. package/dist/{chunk-G5TWK7L3.js → chunk-AP4ZM3DV.js} +3 -3
  68. package/dist/{chunk-G5TWK7L3.js.map → chunk-AP4ZM3DV.js.map} +1 -1
  69. package/dist/{chunk-U6EOAIPK.js → chunk-ARJAIH7Q.js} +4 -4
  70. package/dist/chunk-ARJAIH7Q.js.map +1 -0
  71. package/dist/{chunk-YCZ6M6EF.js → chunk-BBKDABQK.js} +3 -3
  72. package/dist/{chunk-YCZ6M6EF.js.map → chunk-BBKDABQK.js.map} +1 -1
  73. package/dist/{chunk-GPW57XOW.js → chunk-BSTUCHL4.js} +4 -4
  74. package/dist/{chunk-GPW57XOW.js.map → chunk-BSTUCHL4.js.map} +1 -1
  75. package/dist/{chunk-WKWLKGNI.js → chunk-BUCXPZYE.js} +6 -6
  76. package/dist/chunk-BUCXPZYE.js.map +1 -0
  77. package/dist/{chunk-ESLSPRYA.js → chunk-C2MAX4YK.js} +3 -3
  78. package/dist/{chunk-ESLSPRYA.js.map → chunk-C2MAX4YK.js.map} +1 -1
  79. package/dist/{chunk-2FJJOHHH.js → chunk-C34UNXMN.js} +3 -3
  80. package/dist/{chunk-2FJJOHHH.js.map → chunk-C34UNXMN.js.map} +1 -1
  81. package/dist/{chunk-AEHYYTFW.js → chunk-CV77MF4G.js} +3 -3
  82. package/dist/{chunk-AEHYYTFW.js.map → chunk-CV77MF4G.js.map} +1 -1
  83. package/dist/{chunk-MQ2446N7.js → chunk-DGOW65KM.js} +3 -3
  84. package/dist/{chunk-MQ2446N7.js.map → chunk-DGOW65KM.js.map} +1 -1
  85. package/dist/{chunk-U2R47SPY.js → chunk-DJHDCDU6.js} +4 -4
  86. package/dist/{chunk-U2R47SPY.js.map → chunk-DJHDCDU6.js.map} +1 -1
  87. package/dist/{chunk-5GE3BQA7.js → chunk-DQGBTZRX.js} +7 -7
  88. package/dist/chunk-DQGBTZRX.js.map +1 -0
  89. package/dist/{chunk-2IFYXJ3H.js → chunk-DRIEZH7R.js} +3 -3
  90. package/dist/{chunk-2IFYXJ3H.js.map → chunk-DRIEZH7R.js.map} +1 -1
  91. package/dist/{chunk-VWW3DJKI.js → chunk-E6SAO2CY.js} +3 -3
  92. package/dist/{chunk-VWW3DJKI.js.map → chunk-E6SAO2CY.js.map} +1 -1
  93. package/dist/{chunk-NCT5WXKG.js → chunk-EDSIOUUR.js} +4 -4
  94. package/dist/{chunk-NCT5WXKG.js.map → chunk-EDSIOUUR.js.map} +1 -1
  95. package/dist/{chunk-TAZPML2P.js → chunk-ELRIFGMN.js} +4 -4
  96. package/dist/{chunk-TAZPML2P.js.map → chunk-ELRIFGMN.js.map} +1 -1
  97. package/dist/{chunk-IMUBWKZC.js → chunk-EO4NGM5W.js} +4 -4
  98. package/dist/{chunk-IMUBWKZC.js.map → chunk-EO4NGM5W.js.map} +1 -1
  99. package/dist/{chunk-AFCSDND5.js → chunk-EQ4YAADN.js} +3 -3
  100. package/dist/{chunk-AFCSDND5.js.map → chunk-EQ4YAADN.js.map} +1 -1
  101. package/dist/{chunk-VBJ26PZJ.js → chunk-EZYXD2YI.js} +4 -4
  102. package/dist/{chunk-VBJ26PZJ.js.map → chunk-EZYXD2YI.js.map} +1 -1
  103. package/dist/{chunk-HJ4E6YPW.js → chunk-F3ETIDS7.js} +4 -4
  104. package/dist/{chunk-HJ4E6YPW.js.map → chunk-F3ETIDS7.js.map} +1 -1
  105. package/dist/{chunk-LNY2EXOV.js → chunk-F3WDMYZ4.js} +3 -3
  106. package/dist/{chunk-LNY2EXOV.js.map → chunk-F3WDMYZ4.js.map} +1 -1
  107. package/dist/{chunk-FPCRGFNY.js → chunk-FRKB4Z2P.js} +3 -3
  108. package/dist/{chunk-FPCRGFNY.js.map → chunk-FRKB4Z2P.js.map} +1 -1
  109. package/dist/{chunk-VAVE4ZJF.js → chunk-FVRSXJKS.js} +4 -4
  110. package/dist/chunk-FVRSXJKS.js.map +1 -0
  111. package/dist/{chunk-X3AXEE3S.js → chunk-FXFVFSG5.js} +5 -5
  112. package/dist/{chunk-X3AXEE3S.js.map → chunk-FXFVFSG5.js.map} +1 -1
  113. package/dist/{chunk-IFHF4UES.js → chunk-GDZECJFS.js} +12 -12
  114. package/dist/chunk-GDZECJFS.js.map +1 -0
  115. package/dist/{chunk-7J5OM4ZD.js → chunk-GLHKHYJY.js} +8 -8
  116. package/dist/{chunk-7J5OM4ZD.js.map → chunk-GLHKHYJY.js.map} +1 -1
  117. package/dist/{chunk-4KOJTZVU.js → chunk-GRODCJS4.js} +29 -29
  118. package/dist/chunk-GRODCJS4.js.map +1 -0
  119. package/dist/{chunk-TNDW52VZ.js → chunk-GVNG5ME6.js} +36 -18
  120. package/dist/chunk-GVNG5ME6.js.map +1 -0
  121. package/dist/{chunk-5J5OL4IV.js → chunk-GWSM2XNV.js} +3 -3
  122. package/dist/{chunk-5J5OL4IV.js.map → chunk-GWSM2XNV.js.map} +1 -1
  123. package/dist/{chunk-2NY6DDLO.js → chunk-H32A6UPL.js} +3 -3
  124. package/dist/{chunk-2NY6DDLO.js.map → chunk-H32A6UPL.js.map} +1 -1
  125. package/dist/{chunk-W7S7GPU5.js → chunk-HHWUROMA.js} +6 -6
  126. package/dist/{chunk-W7S7GPU5.js.map → chunk-HHWUROMA.js.map} +1 -1
  127. package/dist/{chunk-CNRV2IGH.js → chunk-HM6TEHA6.js} +3 -3
  128. package/dist/{chunk-CNRV2IGH.js.map → chunk-HM6TEHA6.js.map} +1 -1
  129. package/dist/{chunk-4GVOOXYD.js → chunk-HNQX6ZG7.js} +7 -7
  130. package/dist/chunk-HNQX6ZG7.js.map +1 -0
  131. package/dist/{chunk-HAEZLC7V.js → chunk-I5RDX6O3.js} +3 -3
  132. package/dist/{chunk-HAEZLC7V.js.map → chunk-I5RDX6O3.js.map} +1 -1
  133. package/dist/{chunk-P27ERD6W.js → chunk-IKLFWGFS.js} +70 -52
  134. package/dist/chunk-IKLFWGFS.js.map +1 -0
  135. package/dist/{chunk-DL7D5F7B.js → chunk-IPCT4YZT.js} +3 -3
  136. package/dist/{chunk-DL7D5F7B.js.map → chunk-IPCT4YZT.js.map} +1 -1
  137. package/dist/{chunk-BIUVOZQG.js → chunk-IPDAFW4F.js} +3 -3
  138. package/dist/{chunk-BIUVOZQG.js.map → chunk-IPDAFW4F.js.map} +1 -1
  139. package/dist/{chunk-G2MAGZHQ.js → chunk-IXZBH33I.js} +3 -3
  140. package/dist/{chunk-G2MAGZHQ.js.map → chunk-IXZBH33I.js.map} +1 -1
  141. package/dist/{chunk-XOGMDABS.js → chunk-JDETM3FL.js} +9 -9
  142. package/dist/chunk-JDETM3FL.js.map +1 -0
  143. package/dist/{chunk-R3HUGCGR.js → chunk-JE46MFMN.js} +6 -6
  144. package/dist/{chunk-R3HUGCGR.js.map → chunk-JE46MFMN.js.map} +1 -1
  145. package/dist/{chunk-3JCV72FO.js → chunk-JFV7CNBP.js} +4 -4
  146. package/dist/{chunk-3JCV72FO.js.map → chunk-JFV7CNBP.js.map} +1 -1
  147. package/dist/{chunk-7RTHGI6E.js → chunk-JPRHMMY6.js} +3 -3
  148. package/dist/{chunk-7RTHGI6E.js.map → chunk-JPRHMMY6.js.map} +1 -1
  149. package/dist/{chunk-G2V7D7VC.js → chunk-JUSPLVWO.js} +5 -5
  150. package/dist/{chunk-G2V7D7VC.js.map → chunk-JUSPLVWO.js.map} +1 -1
  151. package/dist/{chunk-FRDYXDAE.js → chunk-JUZ4JQWH.js} +3 -3
  152. package/dist/{chunk-FRDYXDAE.js.map → chunk-JUZ4JQWH.js.map} +1 -1
  153. package/dist/{chunk-6SHOL6WR.js → chunk-JVTB3NTP.js} +3 -3
  154. package/dist/{chunk-6SHOL6WR.js.map → chunk-JVTB3NTP.js.map} +1 -1
  155. package/dist/{chunk-XETKCF73.js → chunk-JXEIRIU4.js} +3 -3
  156. package/dist/{chunk-XETKCF73.js.map → chunk-JXEIRIU4.js.map} +1 -1
  157. package/dist/{chunk-7Y2UQMX6.js → chunk-JYYB6F5O.js} +37 -37
  158. package/dist/chunk-JYYB6F5O.js.map +1 -0
  159. package/dist/{chunk-V7WEN4SD.js → chunk-JZA45LEV.js} +3 -3
  160. package/dist/{chunk-V7WEN4SD.js.map → chunk-JZA45LEV.js.map} +1 -1
  161. package/dist/{chunk-FCSYPOHF.js → chunk-K44K3EHW.js} +3 -3
  162. package/dist/{chunk-FCSYPOHF.js.map → chunk-K44K3EHW.js.map} +1 -1
  163. package/dist/{chunk-PWCMCMDN.js → chunk-K4UCALQQ.js} +4 -4
  164. package/dist/{chunk-PWCMCMDN.js.map → chunk-K4UCALQQ.js.map} +1 -1
  165. package/dist/{chunk-OBRJXVWO.js → chunk-KBU4KJKC.js} +7 -7
  166. package/dist/{chunk-OBRJXVWO.js.map → chunk-KBU4KJKC.js.map} +1 -1
  167. package/dist/{chunk-JRWQHBJC.js → chunk-KDNTSZF5.js} +4 -4
  168. package/dist/{chunk-JRWQHBJC.js.map → chunk-KDNTSZF5.js.map} +1 -1
  169. package/dist/{chunk-3NSIUZGP.js → chunk-KHCHATTD.js} +5 -5
  170. package/dist/{chunk-3NSIUZGP.js.map → chunk-KHCHATTD.js.map} +1 -1
  171. package/dist/{chunk-57KTYE5H.js → chunk-KHJIUHHM.js} +3 -3
  172. package/dist/{chunk-57KTYE5H.js.map → chunk-KHJIUHHM.js.map} +1 -1
  173. package/dist/{chunk-TQBUBD3E.js → chunk-KLFYTLF3.js} +4 -4
  174. package/dist/{chunk-TQBUBD3E.js.map → chunk-KLFYTLF3.js.map} +1 -1
  175. package/dist/{chunk-W3QUVCRK.js → chunk-KXJ3SEW7.js} +3 -3
  176. package/dist/{chunk-W3QUVCRK.js.map → chunk-KXJ3SEW7.js.map} +1 -1
  177. package/dist/{chunk-7TF5PVEU.js → chunk-L4OQ6BJ5.js} +7 -7
  178. package/dist/chunk-L4OQ6BJ5.js.map +1 -0
  179. package/dist/{chunk-3L5G7VI2.js → chunk-LCBB3N5H.js} +4 -4
  180. package/dist/chunk-LCBB3N5H.js.map +1 -0
  181. package/dist/{chunk-BS5XDYOE.js → chunk-LDK6ADKM.js} +6 -6
  182. package/dist/{chunk-BS5XDYOE.js.map → chunk-LDK6ADKM.js.map} +1 -1
  183. package/dist/{chunk-K4MYVFWQ.js → chunk-LP6JYJQN.js} +4 -4
  184. package/dist/{chunk-K4MYVFWQ.js.map → chunk-LP6JYJQN.js.map} +1 -1
  185. package/dist/{chunk-G7PBPX3K.js → chunk-LRE3LJMW.js} +5 -5
  186. package/dist/{chunk-G7PBPX3K.js.map → chunk-LRE3LJMW.js.map} +1 -1
  187. package/dist/{chunk-LQVQ7SHG.js → chunk-LSRKDZW4.js} +4 -4
  188. package/dist/{chunk-LQVQ7SHG.js.map → chunk-LSRKDZW4.js.map} +1 -1
  189. package/dist/{chunk-H5N3VPBG.js → chunk-MGIGDALC.js} +4 -4
  190. package/dist/{chunk-H5N3VPBG.js.map → chunk-MGIGDALC.js.map} +1 -1
  191. package/dist/{chunk-WXBC3D2N.js → chunk-MNYU5MHO.js} +7 -7
  192. package/dist/{chunk-WXBC3D2N.js.map → chunk-MNYU5MHO.js.map} +1 -1
  193. package/dist/{chunk-6GWO7JNP.js → chunk-MXBDOYQL.js} +4 -4
  194. package/dist/{chunk-6GWO7JNP.js.map → chunk-MXBDOYQL.js.map} +1 -1
  195. package/dist/{chunk-37KLBMFQ.js → chunk-N2DAVD4Y.js} +3 -3
  196. package/dist/{chunk-37KLBMFQ.js.map → chunk-N2DAVD4Y.js.map} +1 -1
  197. package/dist/{chunk-3KOLK3OB.js → chunk-N5YGAESZ.js} +5 -5
  198. package/dist/{chunk-3KOLK3OB.js.map → chunk-N5YGAESZ.js.map} +1 -1
  199. package/dist/{chunk-W3JVNX35.js → chunk-N7VMQWM3.js} +15 -10
  200. package/dist/chunk-N7VMQWM3.js.map +1 -0
  201. package/dist/{chunk-5KTMPLDK.js → chunk-NAI3TX52.js} +3 -3
  202. package/dist/{chunk-5KTMPLDK.js.map → chunk-NAI3TX52.js.map} +1 -1
  203. package/dist/{chunk-QHKOBGLW.js → chunk-NGX3ITG4.js} +3 -3
  204. package/dist/{chunk-QHKOBGLW.js.map → chunk-NGX3ITG4.js.map} +1 -1
  205. package/dist/{chunk-5SUD32RK.js → chunk-NHUUSXBL.js} +3 -3
  206. package/dist/{chunk-5SUD32RK.js.map → chunk-NHUUSXBL.js.map} +1 -1
  207. package/dist/{chunk-IOWHM7ZY.js → chunk-NIRTZLZL.js} +4 -4
  208. package/dist/{chunk-IOWHM7ZY.js.map → chunk-NIRTZLZL.js.map} +1 -1
  209. package/dist/{chunk-GGUWEAYD.js → chunk-NLPVF34P.js} +4 -4
  210. package/dist/{chunk-GGUWEAYD.js.map → chunk-NLPVF34P.js.map} +1 -1
  211. package/dist/{chunk-ZPAWUKJI.js → chunk-NNWMBVCB.js} +4 -4
  212. package/dist/{chunk-ZPAWUKJI.js.map → chunk-NNWMBVCB.js.map} +1 -1
  213. package/dist/{chunk-H4ANCFZG.js → chunk-NUA54ABI.js} +4 -4
  214. package/dist/{chunk-H4ANCFZG.js.map → chunk-NUA54ABI.js.map} +1 -1
  215. package/dist/{chunk-ZPCELVWJ.js → chunk-NY2WZ4P2.js} +4 -4
  216. package/dist/{chunk-ZPCELVWJ.js.map → chunk-NY2WZ4P2.js.map} +1 -1
  217. package/dist/{chunk-BECPEVUL.js → chunk-O6LFU3KB.js} +3 -3
  218. package/dist/{chunk-BECPEVUL.js.map → chunk-O6LFU3KB.js.map} +1 -1
  219. package/dist/{chunk-HXHB2CK5.js → chunk-OAES72MK.js} +3 -3
  220. package/dist/{chunk-HXHB2CK5.js.map → chunk-OAES72MK.js.map} +1 -1
  221. package/dist/{chunk-NGR4HFVA.js → chunk-OCH7GGZF.js} +3 -3
  222. package/dist/{chunk-NGR4HFVA.js.map → chunk-OCH7GGZF.js.map} +1 -1
  223. package/dist/{chunk-Y4RKKQMB.js → chunk-ONN5XVYC.js} +4 -4
  224. package/dist/chunk-ONN5XVYC.js.map +1 -0
  225. package/dist/{chunk-GL56KIFL.js → chunk-OWZ3MZ5C.js} +4 -4
  226. package/dist/{chunk-GL56KIFL.js.map → chunk-OWZ3MZ5C.js.map} +1 -1
  227. package/dist/{chunk-MK6ID2HI.js → chunk-OXO6SKJO.js} +3 -3
  228. package/dist/{chunk-MK6ID2HI.js.map → chunk-OXO6SKJO.js.map} +1 -1
  229. package/dist/{chunk-T6XRYT6Q.js → chunk-P4WMDGAQ.js} +4 -4
  230. package/dist/{chunk-T6XRYT6Q.js.map → chunk-P4WMDGAQ.js.map} +1 -1
  231. package/dist/{chunk-NXQ25PKF.js → chunk-PBZI5XNV.js} +8 -8
  232. package/dist/chunk-PBZI5XNV.js.map +1 -0
  233. package/dist/{chunk-HI3T55XK.js → chunk-PEX7FCZC.js} +3 -3
  234. package/dist/{chunk-HI3T55XK.js.map → chunk-PEX7FCZC.js.map} +1 -1
  235. package/dist/{chunk-WMG2MMJF.js → chunk-PI4WGIPG.js} +3 -3
  236. package/dist/{chunk-WMG2MMJF.js.map → chunk-PI4WGIPG.js.map} +1 -1
  237. package/dist/{chunk-P7D6S6GX.js → chunk-PTXC4KPQ.js} +39 -5
  238. package/dist/chunk-PTXC4KPQ.js.map +1 -0
  239. package/dist/{chunk-UYC7M3FM.js → chunk-PVIIIQJI.js} +6 -6
  240. package/dist/{chunk-UYC7M3FM.js.map → chunk-PVIIIQJI.js.map} +1 -1
  241. package/dist/{chunk-E2TI5V67.js → chunk-PXR6CZIL.js} +4 -4
  242. package/dist/{chunk-E2TI5V67.js.map → chunk-PXR6CZIL.js.map} +1 -1
  243. package/dist/{chunk-KDJCZXLB.js → chunk-PZSKZFVO.js} +3 -3
  244. package/dist/{chunk-KDJCZXLB.js.map → chunk-PZSKZFVO.js.map} +1 -1
  245. package/dist/{chunk-DNAGXK2C.js → chunk-Q3JCNSPU.js} +4 -4
  246. package/dist/{chunk-DNAGXK2C.js.map → chunk-Q3JCNSPU.js.map} +1 -1
  247. package/dist/{chunk-JUTPDS4E.js → chunk-QD2ZS5DU.js} +4 -4
  248. package/dist/{chunk-JUTPDS4E.js.map → chunk-QD2ZS5DU.js.map} +1 -1
  249. package/dist/{chunk-3NLWCX2F.js → chunk-QJOWG2D4.js} +5 -5
  250. package/dist/{chunk-3NLWCX2F.js.map → chunk-QJOWG2D4.js.map} +1 -1
  251. package/dist/{chunk-Q43KJP5A.js → chunk-QLYH3GCV.js} +8 -8
  252. package/dist/{chunk-Q43KJP5A.js.map → chunk-QLYH3GCV.js.map} +1 -1
  253. package/dist/{chunk-IRIIK3BU.js → chunk-QO6TOE45.js} +11 -11
  254. package/dist/chunk-QO6TOE45.js.map +1 -0
  255. package/dist/{chunk-66TBTTZO.js → chunk-QWWA4FZP.js} +15 -15
  256. package/dist/chunk-QWWA4FZP.js.map +1 -0
  257. package/dist/{chunk-2YSZPUQZ.js → chunk-QXET2TML.js} +4 -4
  258. package/dist/{chunk-2YSZPUQZ.js.map → chunk-QXET2TML.js.map} +1 -1
  259. package/dist/{chunk-2VHARFMD.js → chunk-QZ7SGO7L.js} +3 -3
  260. package/dist/{chunk-2VHARFMD.js.map → chunk-QZ7SGO7L.js.map} +1 -1
  261. package/dist/{chunk-SUU3HNOX.js → chunk-R42LSLJL.js} +6 -6
  262. package/dist/{chunk-SUU3HNOX.js.map → chunk-R42LSLJL.js.map} +1 -1
  263. package/dist/{chunk-EVZ2GZU4.js → chunk-RMJVCJ6U.js} +3 -3
  264. package/dist/{chunk-EVZ2GZU4.js.map → chunk-RMJVCJ6U.js.map} +1 -1
  265. package/dist/{chunk-XLTSCY22.js → chunk-ROPW65RD.js} +5 -5
  266. package/dist/chunk-ROPW65RD.js.map +1 -0
  267. package/dist/{chunk-6ZAMTPGN.js → chunk-RQBYBBMP.js} +4 -4
  268. package/dist/{chunk-6ZAMTPGN.js.map → chunk-RQBYBBMP.js.map} +1 -1
  269. package/dist/chunk-RVAYDRMA.js +31 -0
  270. package/dist/chunk-RVAYDRMA.js.map +1 -0
  271. package/dist/{chunk-ARNVOHVW.js → chunk-S4P7JIQ2.js} +3 -3
  272. package/dist/{chunk-ARNVOHVW.js.map → chunk-S4P7JIQ2.js.map} +1 -1
  273. package/dist/{chunk-UPK5B2FL.js → chunk-S6BREP2G.js} +7 -7
  274. package/dist/chunk-S6BREP2G.js.map +1 -0
  275. package/dist/{chunk-Y5GO2F6P.js → chunk-SA3IQI3Y.js} +3 -3
  276. package/dist/{chunk-Y5GO2F6P.js.map → chunk-SA3IQI3Y.js.map} +1 -1
  277. package/dist/{chunk-3W7FXRO5.js → chunk-SKI25Q7O.js} +6 -6
  278. package/dist/{chunk-3W7FXRO5.js.map → chunk-SKI25Q7O.js.map} +1 -1
  279. package/dist/{chunk-LLI3JFJL.js → chunk-SSKSWSVO.js} +5 -5
  280. package/dist/{chunk-LLI3JFJL.js.map → chunk-SSKSWSVO.js.map} +1 -1
  281. package/dist/{chunk-VLDAHAG6.js → chunk-STADVFL2.js} +5 -5
  282. package/dist/{chunk-VLDAHAG6.js.map → chunk-STADVFL2.js.map} +1 -1
  283. package/dist/{chunk-UA3OQAHJ.js → chunk-SX63UD5X.js} +3 -3
  284. package/dist/{chunk-UA3OQAHJ.js.map → chunk-SX63UD5X.js.map} +1 -1
  285. package/dist/{chunk-YZY35OHQ.js → chunk-SXSR2VRG.js} +4 -4
  286. package/dist/{chunk-YZY35OHQ.js.map → chunk-SXSR2VRG.js.map} +1 -1
  287. package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
  288. package/dist/chunk-T3LWBCVR.js.map +1 -0
  289. package/dist/{chunk-AR3OXNPL.js → chunk-TDANAN5A.js} +3 -3
  290. package/dist/{chunk-AR3OXNPL.js.map → chunk-TDANAN5A.js.map} +1 -1
  291. package/dist/{chunk-7ZJ32KRQ.js → chunk-TEVGCTUN.js} +3 -3
  292. package/dist/{chunk-7ZJ32KRQ.js.map → chunk-TEVGCTUN.js.map} +1 -1
  293. package/dist/{chunk-GAMOVEZD.js → chunk-TIPKU427.js} +3 -3
  294. package/dist/{chunk-GAMOVEZD.js.map → chunk-TIPKU427.js.map} +1 -1
  295. package/dist/{chunk-2Q4I4VDB.js → chunk-TK5WS675.js} +3 -3
  296. package/dist/{chunk-2Q4I4VDB.js.map → chunk-TK5WS675.js.map} +1 -1
  297. package/dist/{chunk-YUHPTV2A.js → chunk-TNSMTINE.js} +4 -4
  298. package/dist/{chunk-YUHPTV2A.js.map → chunk-TNSMTINE.js.map} +1 -1
  299. package/dist/{chunk-VT4IMHGE.js → chunk-TRTVYFOF.js} +5 -5
  300. package/dist/chunk-TRTVYFOF.js.map +1 -0
  301. package/dist/{chunk-46ESMCEQ.js → chunk-TSE3PKWQ.js} +6 -6
  302. package/dist/chunk-TSE3PKWQ.js.map +1 -0
  303. package/dist/{chunk-3BBOSSDG.js → chunk-U7TPJMGY.js} +4 -4
  304. package/dist/{chunk-3BBOSSDG.js.map → chunk-U7TPJMGY.js.map} +1 -1
  305. package/dist/{chunk-5I7AXWJU.js → chunk-UC5J6GWG.js} +5 -5
  306. package/dist/{chunk-5I7AXWJU.js.map → chunk-UC5J6GWG.js.map} +1 -1
  307. package/dist/{chunk-ZKK7L7H7.js → chunk-UNHPLKMR.js} +3 -3
  308. package/dist/{chunk-ZKK7L7H7.js.map → chunk-UNHPLKMR.js.map} +1 -1
  309. package/dist/{chunk-I7ZLEC7Y.js → chunk-UZEJ3ZVR.js} +3 -3
  310. package/dist/{chunk-I7ZLEC7Y.js.map → chunk-UZEJ3ZVR.js.map} +1 -1
  311. package/dist/{chunk-SXPBKGLT.js → chunk-UZZCEQH4.js} +4 -4
  312. package/dist/{chunk-SXPBKGLT.js.map → chunk-UZZCEQH4.js.map} +1 -1
  313. package/dist/{chunk-AEE5GDNA.js → chunk-V4NSLSCA.js} +4 -4
  314. package/dist/{chunk-AEE5GDNA.js.map → chunk-V4NSLSCA.js.map} +1 -1
  315. package/dist/{chunk-IZC5YFGO.js → chunk-V57DERRV.js} +14 -7
  316. package/dist/chunk-V57DERRV.js.map +1 -0
  317. package/dist/{chunk-VZZ3HP7G.js → chunk-VHJ6ALIE.js} +4 -4
  318. package/dist/{chunk-VZZ3HP7G.js.map → chunk-VHJ6ALIE.js.map} +1 -1
  319. package/dist/{chunk-N3I6GA4I.js → chunk-WG34IXUV.js} +3 -3
  320. package/dist/{chunk-N3I6GA4I.js.map → chunk-WG34IXUV.js.map} +1 -1
  321. package/dist/{chunk-OEXQ2MOY.js → chunk-WGKOYZRI.js} +4 -4
  322. package/dist/{chunk-OEXQ2MOY.js.map → chunk-WGKOYZRI.js.map} +1 -1
  323. package/dist/{chunk-6DN2UAIR.js → chunk-WGSVSZ7V.js} +3 -3
  324. package/dist/{chunk-6DN2UAIR.js.map → chunk-WGSVSZ7V.js.map} +1 -1
  325. package/dist/{chunk-X4YUWX7H.js → chunk-WK324C6D.js} +4 -4
  326. package/dist/{chunk-X4YUWX7H.js.map → chunk-WK324C6D.js.map} +1 -1
  327. package/dist/{chunk-N2WITPE2.js → chunk-WOP5OWLG.js} +3 -3
  328. package/dist/{chunk-N2WITPE2.js.map → chunk-WOP5OWLG.js.map} +1 -1
  329. package/dist/{chunk-JPA2VQRW.js → chunk-WSDWJX4Y.js} +4 -4
  330. package/dist/{chunk-JPA2VQRW.js.map → chunk-WSDWJX4Y.js.map} +1 -1
  331. package/dist/{chunk-2XJWE2XR.js → chunk-WUS45IZW.js} +4 -4
  332. package/dist/{chunk-2XJWE2XR.js.map → chunk-WUS45IZW.js.map} +1 -1
  333. package/dist/{chunk-B3BDIM4H.js → chunk-WVOZYDH3.js} +3 -3
  334. package/dist/{chunk-B3BDIM4H.js.map → chunk-WVOZYDH3.js.map} +1 -1
  335. package/dist/{chunk-K45MMHLA.js → chunk-WWK7UIKK.js} +5 -5
  336. package/dist/{chunk-K45MMHLA.js.map → chunk-WWK7UIKK.js.map} +1 -1
  337. package/dist/{chunk-NCLOPI6U.js → chunk-X2EMALTZ.js} +3 -3
  338. package/dist/{chunk-NCLOPI6U.js.map → chunk-X2EMALTZ.js.map} +1 -1
  339. package/dist/{chunk-PK5O62XD.js → chunk-X4CJFD6D.js} +3 -3
  340. package/dist/{chunk-PK5O62XD.js.map → chunk-X4CJFD6D.js.map} +1 -1
  341. package/dist/{chunk-JWXK4TMX.js → chunk-XEQGATVF.js} +3 -3
  342. package/dist/{chunk-JWXK4TMX.js.map → chunk-XEQGATVF.js.map} +1 -1
  343. package/dist/{chunk-B6KQKQ4S.js → chunk-XMUD3LG7.js} +3 -3
  344. package/dist/{chunk-B6KQKQ4S.js.map → chunk-XMUD3LG7.js.map} +1 -1
  345. package/dist/{chunk-5ZEYTBTU.js → chunk-XWBVIBN4.js} +3 -3
  346. package/dist/{chunk-5ZEYTBTU.js.map → chunk-XWBVIBN4.js.map} +1 -1
  347. package/dist/{chunk-7I6KK6QE.js → chunk-XXWCMY2G.js} +3 -3
  348. package/dist/{chunk-7I6KK6QE.js.map → chunk-XXWCMY2G.js.map} +1 -1
  349. package/dist/{chunk-LFN7UHDT.js → chunk-Y4FEW7SR.js} +3 -3
  350. package/dist/{chunk-LFN7UHDT.js.map → chunk-Y4FEW7SR.js.map} +1 -1
  351. package/dist/{chunk-PFVT27B5.js → chunk-YC5VVIZO.js} +3 -3
  352. package/dist/{chunk-PFVT27B5.js.map → chunk-YC5VVIZO.js.map} +1 -1
  353. package/dist/{chunk-7EGN7IGY.js → chunk-YMCKML6D.js} +7 -7
  354. package/dist/{chunk-7EGN7IGY.js.map → chunk-YMCKML6D.js.map} +1 -1
  355. package/dist/{chunk-7HT32DZG.js → chunk-YMQDTTO7.js} +6 -6
  356. package/dist/{chunk-7HT32DZG.js.map → chunk-YMQDTTO7.js.map} +1 -1
  357. package/dist/{chunk-ZARZYMBM.js → chunk-YNTS4GRT.js} +3 -3
  358. package/dist/{chunk-ZARZYMBM.js.map → chunk-YNTS4GRT.js.map} +1 -1
  359. package/dist/{chunk-6SZRWNPT.js → chunk-ZOHLZ4YL.js} +3 -3
  360. package/dist/{chunk-6SZRWNPT.js.map → chunk-ZOHLZ4YL.js.map} +1 -1
  361. package/dist/{chunk-4Y72SPNL.js → chunk-ZVSMLMMS.js} +5 -5
  362. package/dist/chunk-ZVSMLMMS.js.map +1 -0
  363. package/dist/{chunk-VKDN66VL.js → chunk-ZXWT4KWJ.js} +3 -3
  364. package/dist/{chunk-VKDN66VL.js.map → chunk-ZXWT4KWJ.js.map} +1 -1
  365. package/dist/components/advanced/AssetManager/index.js +2 -2
  366. package/dist/components/advanced/Calendar/index.js +7 -7
  367. package/dist/components/advanced/Command/index.js +3 -3
  368. package/dist/components/advanced/DragAndDrop/index.js +2 -2
  369. package/dist/components/advanced/ErrorBoundary/index.js +2 -2
  370. package/dist/components/advanced/EventCalendar/index.js +7 -7
  371. package/dist/components/advanced/FileDropzone/index.js +2 -2
  372. package/dist/components/advanced/FilePreview/index.js +2 -2
  373. package/dist/components/advanced/FileUpload/index.js +2 -2
  374. package/dist/components/advanced/FilterBuilder/index.js +10 -10
  375. package/dist/components/advanced/MarkdownEditor/index.js +6 -6
  376. package/dist/components/advanced/ReportBuilder/index.js +8 -8
  377. package/dist/components/advanced/RichTextEditor/index.js +4 -4
  378. package/dist/components/advanced/Search/index.js +2 -2
  379. package/dist/components/advanced/SortableList/index.js +2 -2
  380. package/dist/components/advanced/VersionControl/index.js +2 -2
  381. package/dist/components/advanced/index.js +31 -31
  382. package/dist/components/data-display/Accordion/index.js +2 -2
  383. package/dist/components/data-display/AreaChart/index.js +3 -3
  384. package/dist/components/data-display/Banner/index.js +2 -2
  385. package/dist/components/data-display/BarChart/index.js +3 -3
  386. package/dist/components/data-display/BarList/index.js +2 -2
  387. package/dist/components/data-display/Callout/index.js +2 -2
  388. package/dist/components/data-display/Carousel/index.js +7 -7
  389. package/dist/components/data-display/CategoryBar/index.js +3 -3
  390. package/dist/components/data-display/Chart/index.js +2 -2
  391. package/dist/components/data-display/ChartCard/index.js +5 -5
  392. package/dist/components/data-display/ChartLegend/index.js +2 -2
  393. package/dist/components/data-display/ComboChart/index.js +3 -3
  394. package/dist/components/data-display/DashboardCard/index.js +3 -3
  395. package/dist/components/data-display/DataTable/FilterBuilder/index.js +10 -10
  396. package/dist/components/data-display/DataTable/index.js +17 -17
  397. package/dist/components/data-display/DeltaBar/index.js +3 -3
  398. package/dist/components/data-display/EmptyState/index.js +2 -2
  399. package/dist/components/data-display/FeatureItem/index.js +3 -3
  400. package/dist/components/data-display/Feed/index.js +2 -2
  401. package/dist/components/data-display/FunnelChart/index.js +3 -3
  402. package/dist/components/data-display/GaugeChart/index.js +2 -2
  403. package/dist/components/data-display/Heatmap/index.js +3 -3
  404. package/dist/components/data-display/HoverCard/index.js +2 -2
  405. package/dist/components/data-display/ImageGallery/index.js +9 -9
  406. package/dist/components/data-display/Item/index.js +3 -3
  407. package/dist/components/data-display/KPICard/index.js +8 -8
  408. package/dist/components/data-display/Lightbox/index.js +2 -2
  409. package/dist/components/data-display/LineChart/index.js +3 -3
  410. package/dist/components/data-display/List/index.js +6 -6
  411. package/dist/components/data-display/MarkerBar/index.js +3 -3
  412. package/dist/components/data-display/PieChart/index.js +3 -3
  413. package/dist/components/data-display/RadarChart/index.js +3 -3
  414. package/dist/components/data-display/RadialChart/index.js +3 -3
  415. package/dist/components/data-display/ScatterChart/index.js +3 -3
  416. package/dist/components/data-display/SingleStat/index.js +3 -3
  417. package/dist/components/data-display/Sparkline/index.js +2 -2
  418. package/dist/components/data-display/Table/index.js +2 -2
  419. package/dist/components/data-display/Timeline/index.js +2 -2
  420. package/dist/components/data-display/Tracker/index.js +3 -3
  421. package/dist/components/data-display/VirtualTable/index.js +5 -5
  422. package/dist/components/data-display/index.js +57 -57
  423. package/dist/components/feedback/Alert/index.js +2 -2
  424. package/dist/components/feedback/AlertDialog/index.js +7 -7
  425. package/dist/components/feedback/ConfirmModal/index.js +8 -8
  426. package/dist/components/feedback/Dialog/index.js +2 -2
  427. package/dist/components/feedback/ErrorPage/index.js +2 -2
  428. package/dist/components/feedback/FocusTrap/index.js +2 -2
  429. package/dist/components/feedback/Message/index.js +2 -2
  430. package/dist/components/feedback/Modal/index.js +2 -2
  431. package/dist/components/feedback/Notification/index.js +4 -4
  432. package/dist/components/feedback/Popover/index.js +2 -2
  433. package/dist/components/feedback/Tooltip/index.js +2 -2
  434. package/dist/components/feedback/UpdatesWidget/index.js +2 -2
  435. package/dist/components/feedback/index.js +18 -18
  436. package/dist/components/forms/Autocomplete/index.js +2 -2
  437. package/dist/components/forms/Checkbox/index.js +2 -2
  438. package/dist/components/forms/CheckboxGroup/index.js +3 -3
  439. package/dist/components/forms/ColorPicker/index.js +3 -3
  440. package/dist/components/forms/Combobox/index.js +2 -2
  441. package/dist/components/forms/DatePicker/index.js +10 -10
  442. package/dist/components/forms/DateRangePicker/index.js +10 -10
  443. package/dist/components/forms/EmailInput/index.js +4 -4
  444. package/dist/components/forms/ErrorMessage/index.js +2 -2
  445. package/dist/components/forms/Field/index.js +4 -4
  446. package/dist/components/forms/FloatLabel/index.js +2 -2
  447. package/dist/components/forms/Form/index.js +3 -3
  448. package/dist/components/forms/FormValidation/index.js +2 -2
  449. package/dist/components/forms/HelpText/index.js +2 -2
  450. package/dist/components/forms/IftaLabel/index.js +2 -2
  451. package/dist/components/forms/InputGroup/index.js +10 -10
  452. package/dist/components/forms/InputOTP/index.js +2 -2
  453. package/dist/components/forms/InputOTPField/index.js +6 -6
  454. package/dist/components/forms/MultiSelect/index.js +3 -3
  455. package/dist/components/forms/NativeSelect/index.js +2 -2
  456. package/dist/components/forms/NumberInput/index.js +3 -3
  457. package/dist/components/forms/PasswordInput/index.js +4 -4
  458. package/dist/components/forms/PaymentInput/index.js +2 -2
  459. package/dist/components/forms/PhoneInput/index.js +2 -2
  460. package/dist/components/forms/RadioButton/index.js +2 -2
  461. package/dist/components/forms/RadioCardGroup/index.js +2 -2
  462. package/dist/components/forms/RadioGroup/index.js +2 -2
  463. package/dist/components/forms/Rating/index.js +2 -2
  464. package/dist/components/forms/SearchInput/index.js +4 -4
  465. package/dist/components/forms/Select/index.js +2 -2
  466. package/dist/components/forms/Slider/index.js +2 -2
  467. package/dist/components/forms/SuccessMessage/index.js +2 -2
  468. package/dist/components/forms/Switch/index.js +2 -2
  469. package/dist/components/forms/TagsInput/index.js +4 -4
  470. package/dist/components/forms/TextInput/index.js +3 -3
  471. package/dist/components/forms/Textarea/index.js +2 -2
  472. package/dist/components/forms/TextareaField/index.js +6 -6
  473. package/dist/components/forms/TimePicker/index.js +4 -4
  474. package/dist/components/forms/URLInput/index.js +4 -4
  475. package/dist/components/forms/index.js +51 -51
  476. package/dist/components/index.js +186 -186
  477. package/dist/components/layout/Card/index.js +2 -2
  478. package/dist/components/layout/Collapsible/index.js +2 -2
  479. package/dist/components/layout/Container/index.js +2 -2
  480. package/dist/components/layout/Flex/index.js +2 -2
  481. package/dist/components/layout/Grid/index.js +2 -2
  482. package/dist/components/layout/Panel/index.js +3 -3
  483. package/dist/components/layout/ResizablePanels/index.js +2 -2
  484. package/dist/components/layout/ResponsiveContainer/index.js +2 -2
  485. package/dist/components/layout/ScrollArea/index.js +2 -2
  486. package/dist/components/layout/Section/index.js +2 -2
  487. package/dist/components/layout/Sheet/index.js +2 -2
  488. package/dist/components/layout/Stack/index.js +2 -2
  489. package/dist/components/layout/index.js +13 -13
  490. package/dist/components/navigation/AccountSwitch/index.js +6 -6
  491. package/dist/components/navigation/Breadcrumb/index.js +2 -2
  492. package/dist/components/navigation/ContextMenu/index.js +2 -2
  493. package/dist/components/navigation/Drawer/index.js +2 -2
  494. package/dist/components/navigation/DropdownMenu/index.js +2 -2
  495. package/dist/components/navigation/FileTree/index.js +2 -2
  496. package/dist/components/navigation/Header/index.js +2 -2
  497. package/dist/components/navigation/LogoConta/index.js +2 -2
  498. package/dist/components/navigation/Menu/index.js +3 -3
  499. package/dist/components/navigation/Menubar/index.js +2 -2
  500. package/dist/components/navigation/Navbar/index.js +2 -2
  501. package/dist/components/navigation/NavigationMenu/index.js +2 -2
  502. package/dist/components/navigation/Pagination/index.js +7 -7
  503. package/dist/components/navigation/Sidebar/index.js +12 -12
  504. package/dist/components/navigation/SkipLinks/index.js +2 -2
  505. package/dist/components/navigation/SpeedDial/index.js +3 -3
  506. package/dist/components/navigation/TabNavigation/index.js +2 -2
  507. package/dist/components/navigation/TabPanel/index.js +2 -2
  508. package/dist/components/navigation/Tabs/index.js +2 -2
  509. package/dist/components/navigation/Toolbar/index.js +2 -2
  510. package/dist/components/navigation/Topbar/index.js +2 -2
  511. package/dist/components/navigation/index.js +33 -33
  512. package/dist/components/primitives/ArrowAnimated/index.js +2 -2
  513. package/dist/components/primitives/Avatar/index.js +3 -3
  514. package/dist/components/primitives/Badge/index.js +3 -3
  515. package/dist/components/primitives/Button/index.js +6 -6
  516. package/dist/components/primitives/ButtonGroup/index.js +3 -3
  517. package/dist/components/primitives/ConfirmButton/index.js +8 -8
  518. package/dist/components/primitives/Divider/index.js +2 -2
  519. package/dist/components/primitives/FeaturedIcon/index.js +2 -2
  520. package/dist/components/primitives/FolderStack/index.js +2 -2
  521. package/dist/components/primitives/Heading/index.js +2 -2
  522. package/dist/components/primitives/Icon/index.js +2 -2
  523. package/dist/components/primitives/Image/index.js +2 -2
  524. package/dist/components/primitives/Kbd/index.js +2 -2
  525. package/dist/components/primitives/Label/index.js +2 -2
  526. package/dist/components/primitives/Link/index.js +2 -2
  527. package/dist/components/primitives/Paragraph/index.js +2 -2
  528. package/dist/components/primitives/PaymentMethodIcon/index.js +2 -2
  529. package/dist/components/primitives/ProgressBar/index.js +3 -3
  530. package/dist/components/primitives/ProgressCircle/index.js +3 -3
  531. package/dist/components/primitives/SkeletonLoader/index.js +2 -2
  532. package/dist/components/primitives/Spacer/index.js +2 -2
  533. package/dist/components/primitives/Spinner/index.js +2 -2
  534. package/dist/components/primitives/SplitButton/index.js +3 -3
  535. package/dist/components/primitives/StatusIndicator/index.js +2 -2
  536. package/dist/components/primitives/Tag/index.js +2 -2
  537. package/dist/components/primitives/Text/index.js +2 -2
  538. package/dist/components/primitives/Thumbnail/index.js +3 -3
  539. package/dist/components/primitives/Toggle/index.js +2 -2
  540. package/dist/components/primitives/index.js +32 -32
  541. package/dist/components/workflow/ApprovalFlow/index.js +8 -8
  542. package/dist/components/workflow/ApprovalStatus/index.js +2 -2
  543. package/dist/components/workflow/CommentSystem/index.js +9 -9
  544. package/dist/components/workflow/Dashboard/index.js +7 -7
  545. package/dist/components/workflow/DashboardBuilder/index.js +10 -10
  546. package/dist/components/workflow/KanbanBoard/index.js +9 -9
  547. package/dist/components/workflow/ProgressSteps/index.js +2 -2
  548. package/dist/components/workflow/ReportGenerator/index.js +9 -9
  549. package/dist/components/workflow/Stepper/index.js +2 -2
  550. package/dist/components/workflow/TaskCard/index.js +2 -2
  551. package/dist/components/workflow/TaskList/index.js +2 -2
  552. package/dist/components/workflow/TaskStatus/index.js +3 -3
  553. package/dist/components/workflow/Wizard/index.js +8 -8
  554. package/dist/components/workflow/index.js +27 -27
  555. package/dist/index.d.ts +62 -14
  556. package/dist/index.js +186 -186
  557. package/dist/lib/utils.d.ts +2 -1
  558. package/dist/lib/utils.js +1 -1
  559. package/dist/styles.css +27 -703
  560. package/package.json +2 -2
  561. package/dist/chunk-3L5G7VI2.js.map +0 -1
  562. package/dist/chunk-46ESMCEQ.js.map +0 -1
  563. package/dist/chunk-4GVOOXYD.js.map +0 -1
  564. package/dist/chunk-4KOJTZVU.js.map +0 -1
  565. package/dist/chunk-4Y72SPNL.js.map +0 -1
  566. package/dist/chunk-5GE3BQA7.js.map +0 -1
  567. package/dist/chunk-66TBTTZO.js.map +0 -1
  568. package/dist/chunk-7TF5PVEU.js.map +0 -1
  569. package/dist/chunk-7Y2UQMX6.js.map +0 -1
  570. package/dist/chunk-DYDXGWH2.js.map +0 -1
  571. package/dist/chunk-HRNDJU7D.js +0 -11
  572. package/dist/chunk-HRNDJU7D.js.map +0 -1
  573. package/dist/chunk-IFHF4UES.js.map +0 -1
  574. package/dist/chunk-IRIIK3BU.js.map +0 -1
  575. package/dist/chunk-IZC5YFGO.js.map +0 -1
  576. package/dist/chunk-NXQ25PKF.js.map +0 -1
  577. package/dist/chunk-OXDWUKGP.js.map +0 -1
  578. package/dist/chunk-P27ERD6W.js.map +0 -1
  579. package/dist/chunk-P7D6S6GX.js.map +0 -1
  580. package/dist/chunk-TNDW52VZ.js.map +0 -1
  581. package/dist/chunk-U6EOAIPK.js.map +0 -1
  582. package/dist/chunk-UPK5B2FL.js.map +0 -1
  583. package/dist/chunk-VAVE4ZJF.js.map +0 -1
  584. package/dist/chunk-VT4IMHGE.js.map +0 -1
  585. package/dist/chunk-W3JVNX35.js.map +0 -1
  586. package/dist/chunk-WKWLKGNI.js.map +0 -1
  587. package/dist/chunk-XLTSCY22.js.map +0 -1
  588. package/dist/chunk-XOGMDABS.js.map +0 -1
  589. package/dist/chunk-Y4RKKQMB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/ImageGallery/ImageGallery.tsx"],"names":[],"mappings":"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","file":"chunk-3NLWCX2F.js","sourcesContent":["\"use client\"\n\nimport type {\n ImageGalleryGap,\n ImageGalleryItemProps,\n ImageGalleryLayout,\n ImageGalleryProps,\n ImageItem,\n ResponsiveColumns,\n} from \"./ImageGallery.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { AspectRatio } from \"../../primitives/AspectRatio\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"../Carousel\"\nimport { Lightbox } from \"../Lightbox\"\n\n// Gap size mapping\nconst gapClasses: Record<ImageGalleryGap, string> = {\n lg: \"gap-6\",\n md: \"gap-4\",\n sm: \"gap-2\",\n}\n\n// Static column class mappings for Tailwind v4 detection\nconst columnClasses: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n}\n\nconst smColumnClasses: Record<number, string> = {\n 1: \"sm:grid-cols-1\",\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-3\",\n 4: \"sm:grid-cols-4\",\n 5: \"sm:grid-cols-5\",\n 6: \"sm:grid-cols-6\",\n}\n\nconst mdColumnClasses: Record<number, string> = {\n 1: \"md:grid-cols-1\",\n 2: \"md:grid-cols-2\",\n 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-4\",\n 5: \"md:grid-cols-5\",\n 6: \"md:grid-cols-6\",\n}\n\nconst lgColumnClasses: Record<number, string> = {\n 1: \"lg:grid-cols-1\",\n 2: \"lg:grid-cols-2\",\n 3: \"lg:grid-cols-3\",\n 4: \"lg:grid-cols-4\",\n 5: \"lg:grid-cols-5\",\n 6: \"lg:grid-cols-6\",\n}\n\nconst xlColumnClasses: Record<number, string> = {\n 1: \"xl:grid-cols-1\",\n 2: \"xl:grid-cols-2\",\n 3: \"xl:grid-cols-3\",\n 4: \"xl:grid-cols-4\",\n 5: \"xl:grid-cols-5\",\n 6: \"xl:grid-cols-6\",\n}\n\n\n// Generate responsive column classes using static mappings\nfunction getColumnClasses(\n columns: number | ResponsiveColumns | undefined\n): string {\n if (columns === undefined) {\n return \"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\n }\n\n if (typeof columns === \"number\") {\n return columnClasses[columns] ?? \"grid-cols-4\"\n }\n\n const classes: string[] = []\n if (columns.sm) classes.push(smColumnClasses[columns.sm] ?? \"sm:grid-cols-2\")\n if (columns.md) classes.push(mdColumnClasses[columns.md] ?? \"md:grid-cols-3\")\n if (columns.lg) classes.push(lgColumnClasses[columns.lg] ?? \"lg:grid-cols-4\")\n if (columns.xl) classes.push(xlColumnClasses[columns.xl] ?? \"xl:grid-cols-4\")\n\n return classes.join(\" \") || \"grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\n}\n\n// Item variants for consistent styling\nconst imageGalleryItemVariants = cva(\n [\n \"relative overflow-hidden rounded-md\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-transform duration-200\",\n \"cursor-pointer\",\n ],\n {\n variants: {\n selected: {\n true: \"ring-2 ring-primary ring-offset-2\",\n false: \"\",\n },\n interactive: {\n true: \"hover:scale-[1.02]\",\n false: \"\",\n },\n },\n defaultVariants: {\n selected: false,\n interactive: true,\n },\n }\n)\n\n/**\n * Subscribe an end-of-list sentinel to the viewport so that scrolling it into\n * view fires `onLoadMore`. No observer is created when `onLoadMore` is omitted\n * or when IntersectionObserver is unavailable (SSR / older runtimes).\n */\nfunction useInfiniteScroll(onLoadMore?: () => void) {\n const sentinelRef = React.useRef<HTMLDivElement | null>(null)\n\n React.useEffect(() => {\n const node = sentinelRef.current\n if (!onLoadMore || !node) return\n if (typeof IntersectionObserver === \"undefined\") return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n onLoadMore()\n }\n }\n },\n { rootMargin: \"200px\" }\n )\n observer.observe(node)\n\n return () => {\n observer.disconnect()\n }\n }, [onLoadMore])\n\n return sentinelRef\n}\n\n/**\n * Individual gallery item component\n */\nfunction ImageGalleryItem({\n aspectRatio = 1,\n className,\n interactive = true,\n enableSelection = false,\n image,\n index: _index,\n isSelected = false,\n onClick,\n onImageError,\n onImageLoad,\n ...props\n}: ImageGalleryItemProps) {\n const [imageState, setImageState] = React.useState<\n \"error\" | \"loaded\" | \"loading\"\n >(\"loading\")\n\n const handleLoad = React.useCallback(() => {\n setImageState(\"loaded\")\n onImageLoad?.()\n }, [onImageLoad])\n\n const handleError = React.useCallback(() => {\n setImageState(\"error\")\n onImageError?.(new Error(`Failed to load image: ${image.src}`))\n }, [image.src, onImageError])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n },\n [onClick]\n )\n\n return (\n <button\n aria-label={\n enableSelection && isSelected\n ? `${image.alt} (selected)`\n : image.alt\n }\n className={cn(\n imageGalleryItemVariants({\n selected: isSelected,\n interactive,\n }),\n className\n )}\n aria-pressed={enableSelection ? isSelected : undefined}\n data-error={imageState === \"error\" || undefined}\n data-loading={imageState === \"loading\" || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"image-gallery-item\"\n type=\"button\"\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <AspectRatio ratio={aspectRatio}>\n {imageState === \"loading\" && (\n <div className=\"absolute inset-0 animate-pulse bg-muted\" />\n )}\n {imageState === \"error\" ? (\n <div className=\"flex h-full w-full items-center justify-center bg-muted text-muted-foreground\">\n <span className=\"text-sm\">Failed to load</span>\n </div>\n ) : (\n <img\n className={cn(\n \"h-full w-full object-cover transition-opacity duration-200\",\n imageState === \"loading\" ? \"opacity-0\" : \"opacity-100\"\n )}\n alt={image.alt}\n data-slot=\"image-gallery-image\"\n loading=\"lazy\"\n src={image.thumbnail ?? image.src}\n onError={handleError}\n onLoad={handleLoad}\n />\n )}\n </AspectRatio>\n\n {/* Selection indicator */}\n {enableSelection && isSelected && (\n <div className=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <Check className=\"h-4 w-4\" />\n </div>\n )}\n </button>\n )\n}\n\n/**\n * Grid layout component\n */\nfunction GridLayout({\n aspectRatio = 1,\n columns,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n columns?: number | ResponsiveColumns\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n // Only emit inline-style fallback for fixed numeric column counts.\n // For responsive ResponsiveColumns objects, Tailwind classes handle breakpoints —\n // inline style would override them and break responsiveness.\n const inlineGridStyle =\n typeof columns === \"number\"\n ? { gridTemplateColumns: `repeat(${String(columns)}, minmax(0, 1fr))` }\n : undefined\n\n return (\n <div\n className={cn(\"grid\", getColumnClasses(columns), gapClasses[gap])}\n data-layout=\"grid\"\n style={inlineGridStyle}\n >\n {images.map((image, index) => (\n <ImageGalleryItem\n key={image.id}\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n ))}\n </div>\n )\n}\n\n/**\n * Masonry layout component\n * Uses CSS columns for a Pinterest-style layout\n */\nfunction MasonryLayout({\n columns,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n columns?: number | ResponsiveColumns\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n const columnCount =\n typeof columns === \"number\" ? columns : columns?.lg ?? columns?.md ?? 3\n\n const gapValue = gap === \"sm\" ? \"0.5rem\" : gap === \"lg\" ? \"1.5rem\" : \"1rem\"\n\n return (\n <div\n style={{\n columnCount,\n columnGap: gapValue,\n }}\n className=\"[column-fill:balance]\"\n data-layout=\"masonry\"\n >\n {images.map((image, index) => {\n const aspectRatio =\n image.width && image.height ? image.width / image.height : 1\n\n return (\n <div\n key={image.id}\n style={{\n marginBottom: gapValue,\n }}\n className=\"mb-2 break-inside-avoid md:mb-4 lg:mb-6\"\n >\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n </div>\n )\n })}\n </div>\n )\n}\n\n/**\n * Featured layout component\n * Shows first image large with thumbnails on the side\n */\nfunction FeaturedLayout({\n aspectRatio = 1,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n const [featuredIndex, setFeaturedIndex] = React.useState(0)\n\n const handleThumbnailClick = React.useCallback(\n (image: ImageItem, originalIndex: number) => {\n setFeaturedIndex(originalIndex)\n onItemClick(image, originalIndex)\n },\n [onItemClick]\n )\n\n if (images.length === 0) return null\n\n const featuredImage = images[featuredIndex]\n if (!featuredImage) return null\n\n const thumbnails = images.filter((_, i) => i !== featuredIndex)\n\n return (\n <div\n className={cn(\"flex flex-col gap-4 md:flex-row\", gapClasses[gap])}\n data-layout=\"featured\"\n >\n {/* Main featured image */}\n <div className=\"flex-1\">\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n className=\"h-full\"\n enableSelection={enableSelection}\n image={featuredImage}\n index={featuredIndex}\n isSelected={selectedIds.includes(featuredImage.id)}\n onClick={() => {\n onItemClick(featuredImage, featuredIndex)\n }}\n onImageError={(error) => {\n onImageError?.(featuredImage, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(featuredImage)\n }}\n />\n </div>\n\n {/* Thumbnails sidebar */}\n {thumbnails.length > 0 && (\n <div\n className={cn(\n \"flex w-full flex-row md:w-24 md:flex-col lg:w-32\",\n gapClasses[gap]\n )}\n >\n {thumbnails.map((image) => {\n const originalIndex = images.findIndex((img) => img.id === image.id)\n return (\n <ImageGalleryItem\n key={image.id}\n aspectRatio={1}\n className=\"flex-1 md:flex-none\"\n enableSelection={enableSelection}\n image={image}\n index={originalIndex}\n interactive={enableSelection}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n handleThumbnailClick(image, originalIndex)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Carousel layout component\n *\n * Composes the shared Carousel primitive (drag, keyboard arrows, prev/next\n * buttons) instead of re-implementing embla. The horizontal padding leaves\n * room for the absolutely-positioned navigation buttons.\n */\nfunction CarouselLayout({\n aspectRatio = 1,\n enableSelection = false,\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n enableSelection?: boolean\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n return (\n <div\n className=\"px-[var(--carousel-button-offset)]\"\n data-layout=\"carousel\"\n >\n <Carousel className=\"w-full\" opts={{ align: \"start\", loop: false }}>\n <CarouselContent>\n {images.map((image, index) => (\n <CarouselItem\n key={image.id}\n className=\"basis-full sm:basis-1/2 md:basis-1/3 lg:basis-1/4\"\n >\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious />\n <CarouselNext />\n </Carousel>\n </div>\n )\n}\n\n/**\n * Loading skeleton for the gallery\n */\nfunction LoadingSkeleton({\n aspectRatio = 1,\n columns,\n count = 8,\n gap = \"md\",\n}: {\n aspectRatio?: number\n columns?: number | ResponsiveColumns\n count?: number\n gap?: ImageGalleryGap\n}) {\n // Generate stable keys for skeleton items\n const skeletonKeys = React.useMemo(\n () => Array.from({ length: count }, (_, i) => `skeleton-${String(i)}`),\n [count]\n )\n\n const skeletonInlineStyle =\n typeof columns === \"number\"\n ? { gridTemplateColumns: `repeat(${String(columns)}, minmax(0, 1fr))` }\n : undefined\n\n return (\n <div\n className={cn(\"grid\", getColumnClasses(columns), gapClasses[gap])}\n data-loading=\"true\"\n style={skeletonInlineStyle}\n >\n {skeletonKeys.map((key) => (\n <AspectRatio key={key} ratio={aspectRatio}>\n <div className=\"h-full w-full animate-pulse rounded-md bg-muted\" />\n </AspectRatio>\n ))}\n </div>\n )\n}\n\n/**\n * ImageGallery - A component for displaying collections of images in various layouts\n *\n * Composes the {@link Carousel} primitive for the `carousel` layout and the\n * {@link Lightbox} for full-screen viewing (`enableLightbox`). `enableLightbox`\n * and `enableSelection` are mutually exclusive — see the prop docs.\n *\n * @example\n * ```tsx\n * <ImageGallery\n * images={[\n * { id: \"1\", src: \"/photo.jpg\", alt: \"Beach sunset\" },\n * { id: \"2\", src: \"/mountain.jpg\", alt: \"Mountain view\" },\n * ]}\n * layout=\"grid\"\n * columns={{ sm: 2, md: 3, lg: 4 }}\n * gap=\"md\"\n * />\n * ```\n */\nfunction ImageGallery({\n aspectRatio = 1,\n className,\n columns,\n enableLightbox = false,\n enableSelection = false,\n gap = \"md\",\n images,\n layout = \"grid\",\n loading = false,\n maxSelection,\n onImageClick,\n onImageError,\n onImageLoad,\n onLoadMore,\n onSelectionChange,\n ref,\n selectedIds: controlledSelectedIds,\n ...props\n}: ImageGalleryProps) {\n // `enableLightbox` and `enableSelection` are mutually exclusive: a click\n // cannot both open a viewer and toggle a selection. Selection wins; the\n // lightbox is disabled and a dev-only warning flags the misuse.\n const isProd =\n // eslint-disable-next-line @typescript-eslint/dot-notation -- noPropertyAccessFromIndexSignature; bracket access on process.env is required by CI tsc.\n typeof process !== \"undefined\" && process.env[\"NODE_ENV\"] === \"production\"\n const lightboxEnabled = enableLightbox && !enableSelection\n if (enableLightbox && enableSelection && !isProd) {\n\n console.warn(\n \"<ImageGallery> received both `enableLightbox` and `enableSelection`. They are mutually exclusive; `enableSelection` takes precedence and the lightbox is disabled. Enable only one.\"\n )\n }\n\n // Internal selection state when uncontrolled\n const [internalSelectedIds, setInternalSelectedIds] = React.useState<\n string[]\n >([])\n const selectedIds = controlledSelectedIds ?? internalSelectedIds\n\n // Lightbox state — index of the image to open in the full-screen viewer\n const [lightboxOpen, setLightboxOpen] = React.useState(false)\n const [lightboxIndex, setLightboxIndex] = React.useState(0)\n\n const sentinelRef = useInfiniteScroll(onLoadMore)\n\n const handleItemClick = React.useCallback(\n (image: ImageItem, index: number) => {\n // Handle selection mode\n if (enableSelection) {\n const newSelectedIds = selectedIds.includes(image.id)\n ? selectedIds.filter((id) => id !== image.id)\n : maxSelection && selectedIds.length >= maxSelection\n ? selectedIds // Don't add if at max\n : [...selectedIds, image.id]\n\n if (controlledSelectedIds === undefined) {\n setInternalSelectedIds(newSelectedIds)\n }\n onSelectionChange?.(newSelectedIds)\n }\n\n // Open the lightbox (mutually exclusive with selection)\n if (lightboxEnabled) {\n setLightboxIndex(index)\n setLightboxOpen(true)\n }\n\n // Always call onImageClick callback\n onImageClick?.(image, index)\n },\n [\n enableSelection,\n selectedIds,\n maxSelection,\n controlledSelectedIds,\n onSelectionChange,\n lightboxEnabled,\n onImageClick,\n ]\n )\n\n // Render loading skeleton\n if (loading) {\n return (\n <div\n ref={ref}\n aria-busy=\"true\"\n aria-label=\"Image gallery loading\"\n className={cn(\"relative w-full\", className)}\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n <LoadingSkeleton\n aspectRatio={aspectRatio}\n columns={columns}\n count={8}\n gap={gap}\n />\n </div>\n )\n }\n\n // Empty state\n if (images.length === 0) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex min-h-52 items-center justify-center rounded-lg border-2 border-dashed border-muted\",\n className\n )}\n aria-label=\"Empty image gallery\"\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n <p className=\"text-muted-foreground\">No images to display</p>\n </div>\n )\n }\n\n const layoutProps = {\n aspectRatio,\n columns,\n enableSelection,\n gap,\n images,\n onImageError,\n onImageLoad,\n onItemClick: handleItemClick,\n selectedIds,\n }\n\n const layoutComponents: Record<ImageGalleryLayout, React.ReactNode> = {\n carousel: <CarouselLayout {...layoutProps} />,\n featured: <FeaturedLayout {...layoutProps} />,\n grid: <GridLayout {...layoutProps} />,\n masonry: <MasonryLayout {...layoutProps} />,\n }\n\n return (\n <div\n ref={ref}\n aria-label={`Image gallery with ${String(images.length)} images`}\n aria-roledescription=\"gallery\"\n className={cn(\"relative w-full\", className)}\n data-layout={layout}\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n {layoutComponents[layout]}\n\n {/* Infinite-scroll sentinel — observed only when onLoadMore is set */}\n {onLoadMore && (\n <div\n ref={sentinelRef}\n aria-hidden=\"true\"\n className=\"h-px w-full\"\n data-slot=\"image-gallery-sentinel\"\n />\n )}\n\n {/* Full-screen viewer — composed from the shared Lightbox primitive */}\n {lightboxEnabled && (\n <Lightbox\n images={images}\n initialIndex={lightboxIndex}\n open={lightboxOpen}\n onOpenChange={setLightboxOpen}\n />\n )}\n </div>\n )\n}\n\nexport { ImageGallery, ImageGalleryItem }\n"]}
1
+ {"version":3,"sources":["../src/components/data-display/ImageGallery/ImageGallery.tsx"],"names":[],"mappings":";;;;;;;;;AA2BA,IAAM,UAAA,GAA8C;AAAA,EAClD,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAGA,IAAM,aAAA,GAAwC;AAAA,EAC5C,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG,aAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,eAAA,GAA0C;AAAA,EAC9C,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,eAAA,GAA0C;AAAA,EAC9C,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,eAAA,GAA0C;AAAA,EAC9C,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,eAAA,GAA0C;AAAA,EAC9C,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAIA,SAAS,iBACP,OAAA,EACQ;AACR,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,OAAO,0DAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,IAAA,OAAO,aAAA,CAAc,OAAO,CAAA,IAAK,aAAA;AAAA,EACnC;AAEA,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,IAAI,OAAA,CAAQ,IAAI,OAAA,CAAQ,IAAA,CAAK,gBAAgB,OAAA,CAAQ,EAAE,KAAK,gBAAgB,CAAA;AAC5E,EAAA,IAAI,OAAA,CAAQ,IAAI,OAAA,CAAQ,IAAA,CAAK,gBAAgB,OAAA,CAAQ,EAAE,KAAK,gBAAgB,CAAA;AAC5E,EAAA,IAAI,OAAA,CAAQ,IAAI,OAAA,CAAQ,IAAA,CAAK,gBAAgB,OAAA,CAAQ,EAAE,KAAK,gBAAgB,CAAA;AAC5E,EAAA,IAAI,OAAA,CAAQ,IAAI,OAAA,CAAQ,IAAA,CAAK,gBAAgB,OAAA,CAAQ,EAAE,KAAK,gBAAgB,CAAA;AAE5E,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,IAAK,2CAAA;AAC9B;AAGA,IAAM,wBAAA,GAA2B,GAAA;AAAA,EAC/B;AAAA,IACE,qCAAA;AAAA,IACA,qGAAA;AAAA,IACA,mCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,mCAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,oBAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAOA,SAAS,kBAAkB,UAAA,EAAyB;AAClD,EAAA,MAAM,WAAA,GAAoB,aAA8B,IAAI,CAAA;AAE5D,EAAM,gBAAU,MAAM;AACpB,IAAA,MAAM,OAAO,WAAA,CAAY,OAAA;AACzB,IAAA,IAAI,CAAC,UAAA,IAAc,CAAC,IAAA,EAAM;AAC1B,IAAA,IAAI,OAAO,yBAAyB,WAAA,EAAa;AAEjD,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,OAAA,KAAY;AACX,QAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,UAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,YAAA,UAAA,EAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,EAAE,YAAY,OAAA;AAAQ,KACxB;AACA,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAErB,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,OAAO,WAAA;AACT;AAKA,SAAS,gBAAA,CAAiB;AAAA,EACxB,WAAA,GAAc,CAAA;AAAA,EACd,SAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,eAAA,GAAkB,KAAA;AAAA,EAClB,KAAA;AAAA,EACA,KAAA,EAAO,MAAA;AAAA,EACP,UAAA,GAAa,KAAA;AAAA,EACb,OAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,eAExC,SAAS,CAAA;AAEX,EAAA,MAAM,UAAA,GAAmB,kBAAY,MAAM;AACzC,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,WAAA,IAAc;AAAA,EAChB,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,WAAA,GAAoB,kBAAY,MAAM;AAC1C,IAAA,aAAA,CAAc,OAAO,CAAA;AACrB,IAAA,YAAA,GAAe,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,KAAA,CAAM,GAAA,EAAK,YAAY,CAAC,CAAA;AAE5B,EAAA,MAAM,aAAA,GAAsB,KAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,KAAA,KAA+B;AAC9B,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,OAAA,IAAU;AAAA,MACZ;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,cACE,eAAA,IAAmB,UAAA,GACf,GAAG,KAAA,CAAM,GAAG,gBACZ,KAAA,CAAM,GAAA;AAAA,MAEZ,SAAA,EAAW,EAAA;AAAA,QACT,wBAAA,CAAyB;AAAA,UACvB,QAAA,EAAU,UAAA;AAAA,UACV;AAAA,SACD,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,cAAA,EAAc,kBAAkB,UAAA,GAAa,MAAA;AAAA,MAC7C,YAAA,EAAY,eAAe,OAAA,IAAW,MAAA;AAAA,MACtC,cAAA,EAAc,eAAe,SAAA,IAAa,MAAA;AAAA,MAC1C,iBAAe,UAAA,IAAc,MAAA;AAAA,MAC7B,WAAA,EAAU,oBAAA;AAAA,MACV,IAAA,EAAK,QAAA;AAAA,MACL,OAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,WAAA,EAAA,EAAY,OAAO,WAAA,EACjB,QAAA,EAAA;AAAA,UAAA,UAAA,KAAe,SAAA,oBACd,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,UAE1D,UAAA,KAAe,OAAA,mBACd,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+EAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,gBAAA,EAAc,CAAA,EAC1C,CAAA,mBAEA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,4DAAA;AAAA,gBACA,UAAA,KAAe,YAAY,WAAA,GAAc;AAAA,eAC3C;AAAA,cACA,KAAK,KAAA,CAAM,GAAA;AAAA,cACX,WAAA,EAAU,qBAAA;AAAA,cACV,OAAA,EAAQ,MAAA;AAAA,cACR,GAAA,EAAK,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,GAAA;AAAA,cAC9B,OAAA,EAAS,WAAA;AAAA,cACT,MAAA,EAAQ;AAAA;AAAA;AACV,SAAA,EAEJ,CAAA;AAAA,QAGC,eAAA,IAAmB,UAAA,oBAClB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mHACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA,EAC7B;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAKA,SAAS,UAAA,CAAW;AAAA,EAClB,WAAA,GAAc,CAAA;AAAA,EACd,OAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,GAAA,GAAM,IAAA;AAAA,EACN,MAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAc;AAChB,CAAA,EAUG;AAID,EAAA,MAAM,eAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GACf,EAAE,mBAAA,EAAqB,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAC,CAAA,iBAAA,CAAA,EAAoB,GACpE,MAAA;AAEN,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,MAAA,EAAQ,gBAAA,CAAiB,OAAO,CAAA,EAAG,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,MAChE,aAAA,EAAY,MAAA;AAAA,MACZ,KAAA,EAAO,eAAA;AAAA,MAEN,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClB,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UAEC,WAAA;AAAA,UACA,eAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAAA,UACzC,SAAS,MAAM;AACb,YAAA,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,UAC1B,CAAA;AAAA,UACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,YAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAAA,UAC7B,CAAA;AAAA,UACA,aAAa,MAAM;AACjB,YAAA,WAAA,GAAc,KAAK,CAAA;AAAA,UACrB;AAAA,SAAA;AAAA,QAdK,KAAA,CAAM;AAAA,OAgBd;AAAA;AAAA,GACH;AAEJ;AAMA,SAAS,aAAA,CAAc;AAAA,EACrB,OAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,GAAA,GAAM,IAAA;AAAA,EACN,MAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAc;AAChB,CAAA,EASG;AACD,EAAA,MAAM,WAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GAAW,UAAU,OAAA,EAAS,EAAA,IAAM,SAAS,EAAA,IAAM,CAAA;AAExE,EAAA,MAAM,WAAW,GAAA,KAAQ,IAAA,GAAO,QAAA,GAAW,GAAA,KAAQ,OAAO,QAAA,GAAW,MAAA;AAErE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,WAAA;AAAA,QACA,SAAA,EAAW;AAAA,OACb;AAAA,MACA,SAAA,EAAU,uBAAA;AAAA,MACV,aAAA,EAAY,SAAA;AAAA,MAEX,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AAC5B,QAAA,MAAM,WAAA,GACJ,MAAM,KAAA,IAAS,KAAA,CAAM,SAAS,KAAA,CAAM,KAAA,GAAQ,MAAM,MAAA,GAAS,CAAA;AAE7D,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,YAAA,EAAc;AAAA,aAChB;AAAA,YACA,SAAA,EAAU,yCAAA;AAAA,YAEV,QAAA,kBAAA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,WAAA;AAAA,gBACA,eAAA;AAAA,gBACA,KAAA;AAAA,gBACA,KAAA;AAAA,gBACA,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAAA,gBACzC,SAAS,MAAM;AACb,kBAAA,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,gBAC1B,CAAA;AAAA,gBACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,kBAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAAA,gBAC7B,CAAA;AAAA,gBACA,aAAa,MAAM;AACjB,kBAAA,WAAA,GAAc,KAAK,CAAA;AAAA,gBACrB;AAAA;AAAA;AACF,WAAA;AAAA,UArBK,KAAA,CAAM;AAAA,SAsBb;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;AAMA,SAAS,cAAA,CAAe;AAAA,EACtB,WAAA,GAAc,CAAA;AAAA,EACd,eAAA,GAAkB,KAAA;AAAA,EAClB,GAAA,GAAM,IAAA;AAAA,EACN,MAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAc;AAChB,CAAA,EASG;AACD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU,eAAS,CAAC,CAAA;AAE1D,EAAA,MAAM,oBAAA,GAA6B,KAAA,CAAA,WAAA;AAAA,IACjC,CAAC,OAAkB,aAAA,KAA0B;AAC3C,MAAA,gBAAA,CAAiB,aAAa,CAAA;AAC9B,MAAA,WAAA,CAAY,OAAO,aAAa,CAAA;AAAA,IAClC,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEhC,EAAA,MAAM,aAAA,GAAgB,OAAO,aAAa,CAAA;AAC1C,EAAA,IAAI,CAAC,eAAe,OAAO,IAAA;AAE3B,EAAA,MAAM,aAAa,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,aAAa,CAAA;AAE9D,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,MAChE,aAAA,EAAY,UAAA;AAAA,MAGZ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EACb,QAAA,kBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,SAAA,EAAU,QAAA;AAAA,YACV,eAAA;AAAA,YACA,KAAA,EAAO,aAAA;AAAA,YACP,KAAA,EAAO,aAAA;AAAA,YACP,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,aAAA,CAAc,EAAE,CAAA;AAAA,YACjD,SAAS,MAAM;AACb,cAAA,WAAA,CAAY,eAAe,aAAa,CAAA;AAAA,YAC1C,CAAA;AAAA,YACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,cAAA,YAAA,GAAe,eAAe,KAAK,CAAA;AAAA,YACrC,CAAA;AAAA,YACA,aAAa,MAAM;AACjB,cAAA,WAAA,GAAc,aAAa,CAAA;AAAA,YAC7B;AAAA;AAAA,SACF,EACF,CAAA;AAAA,QAGC,UAAA,CAAW,SAAS,CAAA,oBACnB,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,kDAAA;AAAA,cACA,WAAW,GAAG;AAAA,aAChB;AAAA,YAEC,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU;AACzB,cAAA,MAAM,aAAA,GAAgB,OAAO,SAAA,CAAU,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,MAAM,EAAE,CAAA;AACnE,cAAA,uBACE,GAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBAEC,WAAA,EAAa,CAAA;AAAA,kBACb,SAAA,EAAU,qBAAA;AAAA,kBACV,eAAA;AAAA,kBACA,KAAA;AAAA,kBACA,KAAA,EAAO,aAAA;AAAA,kBACP,WAAA,EAAa,eAAA;AAAA,kBACb,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAAA,kBACzC,SAAS,MAAM;AACb,oBAAA,oBAAA,CAAqB,OAAO,aAAa,CAAA;AAAA,kBAC3C,CAAA;AAAA,kBACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,oBAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAAA,kBAC7B,CAAA;AAAA,kBACA,aAAa,MAAM;AACjB,oBAAA,WAAA,GAAc,KAAK,CAAA;AAAA,kBACrB;AAAA,iBAAA;AAAA,gBAhBK,KAAA,CAAM;AAAA,eAiBb;AAAA,YAEJ,CAAC;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AASA,SAAS,cAAA,CAAe;AAAA,EACtB,WAAA,GAAc,CAAA;AAAA,EACd,eAAA,GAAkB,KAAA;AAAA,EAClB,MAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAc;AAChB,CAAA,EAQG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oCAAA;AAAA,MACV,aAAA,EAAY,UAAA;AAAA,MAEZ,QAAA,kBAAA,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS,IAAA,EAAM,EAAE,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,KAAA,EAAM,EAC/D,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,qBAClB,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,mDAAA;AAAA,YAEV,QAAA,kBAAA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,WAAA;AAAA,gBACA,eAAA;AAAA,gBACA,KAAA;AAAA,gBACA,KAAA;AAAA,gBACA,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAAA,gBACzC,SAAS,MAAM;AACb,kBAAA,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,gBAC1B,CAAA;AAAA,gBACA,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,kBAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAAA,gBAC7B,CAAA;AAAA,gBACA,aAAa,MAAM;AACjB,kBAAA,WAAA,GAAc,KAAK,CAAA;AAAA,gBACrB;AAAA;AAAA;AACF,WAAA;AAAA,UAlBK,KAAA,CAAM;AAAA,SAoBd,CAAA,EACH,CAAA;AAAA,4BACC,gBAAA,EAAA,EAAiB,CAAA;AAAA,4BACjB,YAAA,EAAA,EAAa;AAAA,OAAA,EAChB;AAAA;AAAA,GACF;AAEJ;AAKA,SAAS,eAAA,CAAgB;AAAA,EACvB,WAAA,GAAc,CAAA;AAAA,EACd,OAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,GAAA,GAAM;AACR,CAAA,EAKG;AAED,EAAA,MAAM,YAAA,GAAqB,KAAA,CAAA,OAAA;AAAA,IACzB,MAAM,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,KAAA,EAAM,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,SAAA,EAAY,MAAA,CAAO,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,IACrE,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,mBAAA,GACJ,OAAO,OAAA,KAAY,QAAA,GACf,EAAE,mBAAA,EAAqB,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAC,CAAA,iBAAA,CAAA,EAAoB,GACpE,MAAA;AAEN,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,MAAA,EAAQ,gBAAA,CAAiB,OAAO,CAAA,EAAG,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,MAChE,cAAA,EAAa,MAAA;AAAA,MACb,KAAA,EAAO,mBAAA;AAAA,MAEN,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,GAAA,yBAChB,WAAA,EAAA,EAAsB,KAAA,EAAO,WAAA,EAC5B,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EAAkD,CAAA,EAAA,EADjD,GAElB,CACD;AAAA;AAAA,GACH;AAEJ;AAsBA,SAAS,YAAA,CAAa;AAAA,EACpB,WAAA,GAAc,CAAA;AAAA,EACd,SAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA,GAAiB,KAAA;AAAA,EACjB,eAAA,GAAkB,KAAA;AAAA,EAClB,GAAA,GAAM,IAAA;AAAA,EACN,MAAA;AAAA,EACA,MAAA,GAAS,MAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA,EACV,YAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,GAAA;AAAA,EACA,WAAA,EAAa,qBAAA;AAAA,EACb,GAAG;AACL,CAAA,EAAsB;AAIpB,EAAA,MAAM,MAAA;AAAA;AAAA,IAEJ,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,KAAM;AAAA,GAAA;AAChE,EAAA,MAAM,eAAA,GAAkB,kBAAkB,CAAC,eAAA;AAC3C,EAAA,IAAI,cAAA,IAAkB,eAAA,IAAmB,CAAC,MAAA,EAAQ;AAEhD,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAGA,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAU,KAAA,CAAA,QAAA,CAE1D,EAAE,CAAA;AACJ,EAAA,MAAM,cAAc,qBAAA,IAAyB,mBAAA;AAG7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU,eAAS,CAAC,CAAA;AAE1D,EAAA,MAAM,WAAA,GAAc,kBAAkB,UAAU,CAAA;AAEhD,EAAA,MAAM,eAAA,GAAwB,KAAA,CAAA,WAAA;AAAA,IAC5B,CAAC,OAAkB,KAAA,KAAkB;AAEnC,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,MAAM,cAAA,GAAiB,YAAY,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA,GAChD,WAAA,CAAY,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,KAAO,MAAM,EAAE,CAAA,GAC1C,YAAA,IAAgB,WAAA,CAAY,MAAA,IAAU,YAAA,GACpC,cACA,CAAC,GAAG,WAAA,EAAa,KAAA,CAAM,EAAE,CAAA;AAE/B,QAAA,IAAI,0BAA0B,MAAA,EAAW;AACvC,UAAA,sBAAA,CAAuB,cAAc,CAAA;AAAA,QACvC;AACA,QAAA,iBAAA,GAAoB,cAAc,CAAA;AAAA,MACpC;AAGA,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACtB;AAGA,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA;AAAA,MACE,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA,iBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AACF,GACF;AAGA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAW,uBAAA;AAAA,QACX,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,QAC1C,WAAA,EAAU,eAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,WAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP;AAAA;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,0FAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,YAAA,EAAW,qBAAA;AAAA,QACX,WAAA,EAAU,eAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA,sBAAA,EAAoB;AAAA;AAAA,KAC3D;AAAA,EAEJ;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,WAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,GAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,EAAa,eAAA;AAAA,IACb;AAAA,GACF;AAEA,EAAA,MAAM,gBAAA,GAAgE;AAAA,IACpE,QAAA,kBAAU,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,WAAA,EAAa,CAAA;AAAA,IAC3C,QAAA,kBAAU,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,WAAA,EAAa,CAAA;AAAA,IAC3C,IAAA,kBAAM,GAAA,CAAC,UAAA,EAAA,EAAY,GAAG,WAAA,EAAa,CAAA;AAAA,IACnC,OAAA,kBAAS,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,WAAA,EAAa;AAAA,GAC3C;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,YAAA,EAAY,CAAA,mBAAA,EAAsB,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA,OAAA,CAAA;AAAA,MACvD,sBAAA,EAAqB,SAAA;AAAA,MACrB,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MAC1C,aAAA,EAAa,MAAA;AAAA,MACb,WAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,gBAAA,CAAiB,MAAM,CAAA;AAAA,QAGvB,UAAA,oBACC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,WAAA;AAAA,YACL,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,aAAA;AAAA,YACV,WAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QAID,eAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,MAAA;AAAA,YACA,YAAA,EAAc,aAAA;AAAA,YACd,IAAA,EAAM,YAAA;AAAA,YACN,YAAA,EAAc;AAAA;AAAA;AAChB;AAAA;AAAA,GAEJ;AAEJ","file":"chunk-QJOWG2D4.js","sourcesContent":["\"use client\"\n\nimport type {\n ImageGalleryGap,\n ImageGalleryItemProps,\n ImageGalleryLayout,\n ImageGalleryProps,\n ImageItem,\n ResponsiveColumns,\n} from \"./ImageGallery.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { AspectRatio } from \"../../primitives/AspectRatio\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"../Carousel\"\nimport { Lightbox } from \"../Lightbox\"\n\n// Gap size mapping\nconst gapClasses: Record<ImageGalleryGap, string> = {\n lg: \"gap-6\",\n md: \"gap-4\",\n sm: \"gap-2\",\n}\n\n// Static column class mappings for Tailwind v4 detection\nconst columnClasses: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n 5: \"grid-cols-5\",\n 6: \"grid-cols-6\",\n}\n\nconst smColumnClasses: Record<number, string> = {\n 1: \"sm:grid-cols-1\",\n 2: \"sm:grid-cols-2\",\n 3: \"sm:grid-cols-3\",\n 4: \"sm:grid-cols-4\",\n 5: \"sm:grid-cols-5\",\n 6: \"sm:grid-cols-6\",\n}\n\nconst mdColumnClasses: Record<number, string> = {\n 1: \"md:grid-cols-1\",\n 2: \"md:grid-cols-2\",\n 3: \"md:grid-cols-3\",\n 4: \"md:grid-cols-4\",\n 5: \"md:grid-cols-5\",\n 6: \"md:grid-cols-6\",\n}\n\nconst lgColumnClasses: Record<number, string> = {\n 1: \"lg:grid-cols-1\",\n 2: \"lg:grid-cols-2\",\n 3: \"lg:grid-cols-3\",\n 4: \"lg:grid-cols-4\",\n 5: \"lg:grid-cols-5\",\n 6: \"lg:grid-cols-6\",\n}\n\nconst xlColumnClasses: Record<number, string> = {\n 1: \"xl:grid-cols-1\",\n 2: \"xl:grid-cols-2\",\n 3: \"xl:grid-cols-3\",\n 4: \"xl:grid-cols-4\",\n 5: \"xl:grid-cols-5\",\n 6: \"xl:grid-cols-6\",\n}\n\n\n// Generate responsive column classes using static mappings\nfunction getColumnClasses(\n columns: number | ResponsiveColumns | undefined\n): string {\n if (columns === undefined) {\n return \"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\n }\n\n if (typeof columns === \"number\") {\n return columnClasses[columns] ?? \"grid-cols-4\"\n }\n\n const classes: string[] = []\n if (columns.sm) classes.push(smColumnClasses[columns.sm] ?? \"sm:grid-cols-2\")\n if (columns.md) classes.push(mdColumnClasses[columns.md] ?? \"md:grid-cols-3\")\n if (columns.lg) classes.push(lgColumnClasses[columns.lg] ?? \"lg:grid-cols-4\")\n if (columns.xl) classes.push(xlColumnClasses[columns.xl] ?? \"xl:grid-cols-4\")\n\n return classes.join(\" \") || \"grid-cols-2 md:grid-cols-3 lg:grid-cols-4\"\n}\n\n// Item variants for consistent styling\nconst imageGalleryItemVariants = cva(\n [\n \"relative overflow-hidden rounded-md\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-transform duration-200\",\n \"cursor-pointer\",\n ],\n {\n variants: {\n selected: {\n true: \"ring-2 ring-primary ring-offset-2\",\n false: \"\",\n },\n interactive: {\n true: \"hover:scale-[1.02]\",\n false: \"\",\n },\n },\n defaultVariants: {\n selected: false,\n interactive: true,\n },\n }\n)\n\n/**\n * Subscribe an end-of-list sentinel to the viewport so that scrolling it into\n * view fires `onLoadMore`. No observer is created when `onLoadMore` is omitted\n * or when IntersectionObserver is unavailable (SSR / older runtimes).\n */\nfunction useInfiniteScroll(onLoadMore?: () => void) {\n const sentinelRef = React.useRef<HTMLDivElement | null>(null)\n\n React.useEffect(() => {\n const node = sentinelRef.current\n if (!onLoadMore || !node) return\n if (typeof IntersectionObserver === \"undefined\") return\n\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n onLoadMore()\n }\n }\n },\n { rootMargin: \"200px\" }\n )\n observer.observe(node)\n\n return () => {\n observer.disconnect()\n }\n }, [onLoadMore])\n\n return sentinelRef\n}\n\n/**\n * Individual gallery item component\n */\nfunction ImageGalleryItem({\n aspectRatio = 1,\n className,\n interactive = true,\n enableSelection = false,\n image,\n index: _index,\n isSelected = false,\n onClick,\n onImageError,\n onImageLoad,\n ...props\n}: ImageGalleryItemProps) {\n const [imageState, setImageState] = React.useState<\n \"error\" | \"loaded\" | \"loading\"\n >(\"loading\")\n\n const handleLoad = React.useCallback(() => {\n setImageState(\"loaded\")\n onImageLoad?.()\n }, [onImageLoad])\n\n const handleError = React.useCallback(() => {\n setImageState(\"error\")\n onImageError?.(new Error(`Failed to load image: ${image.src}`))\n }, [image.src, onImageError])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n },\n [onClick]\n )\n\n return (\n <button\n aria-label={\n enableSelection && isSelected\n ? `${image.alt} (selected)`\n : image.alt\n }\n className={cn(\n imageGalleryItemVariants({\n selected: isSelected,\n interactive,\n }),\n className\n )}\n aria-pressed={enableSelection ? isSelected : undefined}\n data-error={imageState === \"error\" || undefined}\n data-loading={imageState === \"loading\" || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"image-gallery-item\"\n type=\"button\"\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <AspectRatio ratio={aspectRatio}>\n {imageState === \"loading\" && (\n <div className=\"absolute inset-0 animate-pulse bg-muted\" />\n )}\n {imageState === \"error\" ? (\n <div className=\"flex h-full w-full items-center justify-center bg-muted text-muted-foreground\">\n <span className=\"text-sm\">Failed to load</span>\n </div>\n ) : (\n <img\n className={cn(\n \"h-full w-full object-cover transition-opacity duration-200\",\n imageState === \"loading\" ? \"opacity-0\" : \"opacity-100\"\n )}\n alt={image.alt}\n data-slot=\"image-gallery-image\"\n loading=\"lazy\"\n src={image.thumbnail ?? image.src}\n onError={handleError}\n onLoad={handleLoad}\n />\n )}\n </AspectRatio>\n\n {/* Selection indicator */}\n {enableSelection && isSelected && (\n <div className=\"absolute right-2 top-2 flex h-6 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground\">\n <Check className=\"h-4 w-4\" />\n </div>\n )}\n </button>\n )\n}\n\n/**\n * Grid layout component\n */\nfunction GridLayout({\n aspectRatio = 1,\n columns,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n columns?: number | ResponsiveColumns\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n // Only emit inline-style fallback for fixed numeric column counts.\n // For responsive ResponsiveColumns objects, Tailwind classes handle breakpoints —\n // inline style would override them and break responsiveness.\n const inlineGridStyle =\n typeof columns === \"number\"\n ? { gridTemplateColumns: `repeat(${String(columns)}, minmax(0, 1fr))` }\n : undefined\n\n return (\n <div\n className={cn(\"grid\", getColumnClasses(columns), gapClasses[gap])}\n data-layout=\"grid\"\n style={inlineGridStyle}\n >\n {images.map((image, index) => (\n <ImageGalleryItem\n key={image.id}\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n ))}\n </div>\n )\n}\n\n/**\n * Masonry layout component\n * Uses CSS columns for a Pinterest-style layout\n */\nfunction MasonryLayout({\n columns,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n columns?: number | ResponsiveColumns\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n const columnCount =\n typeof columns === \"number\" ? columns : columns?.lg ?? columns?.md ?? 3\n\n const gapValue = gap === \"sm\" ? \"0.5rem\" : gap === \"lg\" ? \"1.5rem\" : \"1rem\"\n\n return (\n <div\n style={{\n columnCount,\n columnGap: gapValue,\n }}\n className=\"[column-fill:balance]\"\n data-layout=\"masonry\"\n >\n {images.map((image, index) => {\n const aspectRatio =\n image.width && image.height ? image.width / image.height : 1\n\n return (\n <div\n key={image.id}\n style={{\n marginBottom: gapValue,\n }}\n className=\"mb-2 break-inside-avoid md:mb-4 lg:mb-6\"\n >\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n </div>\n )\n })}\n </div>\n )\n}\n\n/**\n * Featured layout component\n * Shows first image large with thumbnails on the side\n */\nfunction FeaturedLayout({\n aspectRatio = 1,\n enableSelection = false,\n gap = \"md\",\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n enableSelection?: boolean\n gap?: ImageGalleryGap\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n const [featuredIndex, setFeaturedIndex] = React.useState(0)\n\n const handleThumbnailClick = React.useCallback(\n (image: ImageItem, originalIndex: number) => {\n setFeaturedIndex(originalIndex)\n onItemClick(image, originalIndex)\n },\n [onItemClick]\n )\n\n if (images.length === 0) return null\n\n const featuredImage = images[featuredIndex]\n if (!featuredImage) return null\n\n const thumbnails = images.filter((_, i) => i !== featuredIndex)\n\n return (\n <div\n className={cn(\"flex flex-col gap-4 md:flex-row\", gapClasses[gap])}\n data-layout=\"featured\"\n >\n {/* Main featured image */}\n <div className=\"flex-1\">\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n className=\"h-full\"\n enableSelection={enableSelection}\n image={featuredImage}\n index={featuredIndex}\n isSelected={selectedIds.includes(featuredImage.id)}\n onClick={() => {\n onItemClick(featuredImage, featuredIndex)\n }}\n onImageError={(error) => {\n onImageError?.(featuredImage, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(featuredImage)\n }}\n />\n </div>\n\n {/* Thumbnails sidebar */}\n {thumbnails.length > 0 && (\n <div\n className={cn(\n \"flex w-full flex-row md:w-24 md:flex-col lg:w-32\",\n gapClasses[gap]\n )}\n >\n {thumbnails.map((image) => {\n const originalIndex = images.findIndex((img) => img.id === image.id)\n return (\n <ImageGalleryItem\n key={image.id}\n aspectRatio={1}\n className=\"flex-1 md:flex-none\"\n enableSelection={enableSelection}\n image={image}\n index={originalIndex}\n interactive={enableSelection}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n handleThumbnailClick(image, originalIndex)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n )\n })}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Carousel layout component\n *\n * Composes the shared Carousel primitive (drag, keyboard arrows, prev/next\n * buttons) instead of re-implementing embla. The horizontal padding leaves\n * room for the absolutely-positioned navigation buttons.\n */\nfunction CarouselLayout({\n aspectRatio = 1,\n enableSelection = false,\n images,\n onImageError,\n onImageLoad,\n onItemClick,\n selectedIds = [],\n}: {\n aspectRatio?: number\n enableSelection?: boolean\n images: ImageItem[]\n onImageError?: (image: ImageItem, error: Error) => void\n onImageLoad?: (image: ImageItem) => void\n onItemClick: (image: ImageItem, index: number) => void\n selectedIds?: string[]\n}) {\n return (\n <div\n className=\"px-[var(--carousel-button-offset)]\"\n data-layout=\"carousel\"\n >\n <Carousel className=\"w-full\" opts={{ align: \"start\", loop: false }}>\n <CarouselContent>\n {images.map((image, index) => (\n <CarouselItem\n key={image.id}\n className=\"basis-full sm:basis-1/2 md:basis-1/3 lg:basis-1/4\"\n >\n <ImageGalleryItem\n aspectRatio={aspectRatio}\n enableSelection={enableSelection}\n image={image}\n index={index}\n isSelected={selectedIds.includes(image.id)}\n onClick={() => {\n onItemClick(image, index)\n }}\n onImageError={(error) => {\n onImageError?.(image, error)\n }}\n onImageLoad={() => {\n onImageLoad?.(image)\n }}\n />\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious />\n <CarouselNext />\n </Carousel>\n </div>\n )\n}\n\n/**\n * Loading skeleton for the gallery\n */\nfunction LoadingSkeleton({\n aspectRatio = 1,\n columns,\n count = 8,\n gap = \"md\",\n}: {\n aspectRatio?: number\n columns?: number | ResponsiveColumns\n count?: number\n gap?: ImageGalleryGap\n}) {\n // Generate stable keys for skeleton items\n const skeletonKeys = React.useMemo(\n () => Array.from({ length: count }, (_, i) => `skeleton-${String(i)}`),\n [count]\n )\n\n const skeletonInlineStyle =\n typeof columns === \"number\"\n ? { gridTemplateColumns: `repeat(${String(columns)}, minmax(0, 1fr))` }\n : undefined\n\n return (\n <div\n className={cn(\"grid\", getColumnClasses(columns), gapClasses[gap])}\n data-loading=\"true\"\n style={skeletonInlineStyle}\n >\n {skeletonKeys.map((key) => (\n <AspectRatio key={key} ratio={aspectRatio}>\n <div className=\"h-full w-full animate-pulse rounded-md bg-muted\" />\n </AspectRatio>\n ))}\n </div>\n )\n}\n\n/**\n * ImageGallery - A component for displaying collections of images in various layouts\n *\n * Composes the {@link Carousel} primitive for the `carousel` layout and the\n * {@link Lightbox} for full-screen viewing (`enableLightbox`). `enableLightbox`\n * and `enableSelection` are mutually exclusive — see the prop docs.\n *\n * @example\n * ```tsx\n * <ImageGallery\n * images={[\n * { id: \"1\", src: \"/photo.jpg\", alt: \"Beach sunset\" },\n * { id: \"2\", src: \"/mountain.jpg\", alt: \"Mountain view\" },\n * ]}\n * layout=\"grid\"\n * columns={{ sm: 2, md: 3, lg: 4 }}\n * gap=\"md\"\n * />\n * ```\n */\nfunction ImageGallery({\n aspectRatio = 1,\n className,\n columns,\n enableLightbox = false,\n enableSelection = false,\n gap = \"md\",\n images,\n layout = \"grid\",\n loading = false,\n maxSelection,\n onImageClick,\n onImageError,\n onImageLoad,\n onLoadMore,\n onSelectionChange,\n ref,\n selectedIds: controlledSelectedIds,\n ...props\n}: ImageGalleryProps) {\n // `enableLightbox` and `enableSelection` are mutually exclusive: a click\n // cannot both open a viewer and toggle a selection. Selection wins; the\n // lightbox is disabled and a dev-only warning flags the misuse.\n const isProd =\n // eslint-disable-next-line @typescript-eslint/dot-notation -- noPropertyAccessFromIndexSignature; bracket access on process.env is required by CI tsc.\n typeof process !== \"undefined\" && process.env[\"NODE_ENV\"] === \"production\"\n const lightboxEnabled = enableLightbox && !enableSelection\n if (enableLightbox && enableSelection && !isProd) {\n\n console.warn(\n \"<ImageGallery> received both `enableLightbox` and `enableSelection`. They are mutually exclusive; `enableSelection` takes precedence and the lightbox is disabled. Enable only one.\"\n )\n }\n\n // Internal selection state when uncontrolled\n const [internalSelectedIds, setInternalSelectedIds] = React.useState<\n string[]\n >([])\n const selectedIds = controlledSelectedIds ?? internalSelectedIds\n\n // Lightbox state — index of the image to open in the full-screen viewer\n const [lightboxOpen, setLightboxOpen] = React.useState(false)\n const [lightboxIndex, setLightboxIndex] = React.useState(0)\n\n const sentinelRef = useInfiniteScroll(onLoadMore)\n\n const handleItemClick = React.useCallback(\n (image: ImageItem, index: number) => {\n // Handle selection mode\n if (enableSelection) {\n const newSelectedIds = selectedIds.includes(image.id)\n ? selectedIds.filter((id) => id !== image.id)\n : maxSelection && selectedIds.length >= maxSelection\n ? selectedIds // Don't add if at max\n : [...selectedIds, image.id]\n\n if (controlledSelectedIds === undefined) {\n setInternalSelectedIds(newSelectedIds)\n }\n onSelectionChange?.(newSelectedIds)\n }\n\n // Open the lightbox (mutually exclusive with selection)\n if (lightboxEnabled) {\n setLightboxIndex(index)\n setLightboxOpen(true)\n }\n\n // Always call onImageClick callback\n onImageClick?.(image, index)\n },\n [\n enableSelection,\n selectedIds,\n maxSelection,\n controlledSelectedIds,\n onSelectionChange,\n lightboxEnabled,\n onImageClick,\n ]\n )\n\n // Render loading skeleton\n if (loading) {\n return (\n <div\n ref={ref}\n aria-busy=\"true\"\n aria-label=\"Image gallery loading\"\n className={cn(\"relative w-full\", className)}\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n <LoadingSkeleton\n aspectRatio={aspectRatio}\n columns={columns}\n count={8}\n gap={gap}\n />\n </div>\n )\n }\n\n // Empty state\n if (images.length === 0) {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex min-h-52 items-center justify-center rounded-lg border-2 border-dashed border-muted\",\n className\n )}\n aria-label=\"Empty image gallery\"\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n <p className=\"text-muted-foreground\">No images to display</p>\n </div>\n )\n }\n\n const layoutProps = {\n aspectRatio,\n columns,\n enableSelection,\n gap,\n images,\n onImageError,\n onImageLoad,\n onItemClick: handleItemClick,\n selectedIds,\n }\n\n const layoutComponents: Record<ImageGalleryLayout, React.ReactNode> = {\n carousel: <CarouselLayout {...layoutProps} />,\n featured: <FeaturedLayout {...layoutProps} />,\n grid: <GridLayout {...layoutProps} />,\n masonry: <MasonryLayout {...layoutProps} />,\n }\n\n return (\n <div\n ref={ref}\n aria-label={`Image gallery with ${String(images.length)} images`}\n aria-roledescription=\"gallery\"\n className={cn(\"relative w-full\", className)}\n data-layout={layout}\n data-slot=\"image-gallery\"\n role=\"group\"\n {...props}\n >\n {layoutComponents[layout]}\n\n {/* Infinite-scroll sentinel — observed only when onLoadMore is set */}\n {onLoadMore && (\n <div\n ref={sentinelRef}\n aria-hidden=\"true\"\n className=\"h-px w-full\"\n data-slot=\"image-gallery-sentinel\"\n />\n )}\n\n {/* Full-screen viewer — composed from the shared Lightbox primitive */}\n {lightboxEnabled && (\n <Lightbox\n images={images}\n initialIndex={lightboxIndex}\n open={lightboxOpen}\n onOpenChange={setLightboxOpen}\n />\n )}\n </div>\n )\n}\n\nexport { ImageGallery, ImageGalleryItem }\n"]}
@@ -1,5 +1,5 @@
1
- import { Image } from './chunk-IRIIK3BU.js';
2
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { Image } from './chunk-QO6TOE45.js';
2
+ import { cn } from './chunk-RVAYDRMA.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { Check } from 'lucide-react';
5
5
  import * as React from 'react';
@@ -131,7 +131,7 @@ function ThumbnailTag({
131
131
  "span",
132
132
  {
133
133
  className: cn(
134
- "absolute font-bold uppercase tracking-[0.04em] px-1.5 py-0.5 rounded text-[10px] leading-tight",
134
+ "absolute font-bold uppercase tracking-[0.04em] px-1.5 py-0.5 rounded text-[length:var(--thumbnail-label-font-size)] leading-tight",
135
135
  "bg-white/[0.88] text-neutral-900 dark:bg-black/[0.65] dark:text-neutral-50",
136
136
  position === "bottom-left" && "bottom-1.5 left-1.5",
137
137
  position === "bottom-right" && "bottom-1.5 right-1.5",
@@ -182,7 +182,7 @@ function ThumbnailBadge({
182
182
  "span",
183
183
  {
184
184
  className: cn(
185
- "absolute z-[2] text-[9px] font-extrabold uppercase tracking-[0.06em]",
185
+ "absolute z-[2] text-[length:var(--thumbnail-badge-font-size)] font-extrabold uppercase tracking-[0.06em]",
186
186
  "px-1.5 py-0.5 rounded-xs",
187
187
  "bg-[color:var(--brand-primary-500,theme(colors.emerald.400))] text-[color:var(--brand-primary-950,theme(colors.emerald.950))]",
188
188
  position === "top-left" && "top-2 left-8",
@@ -206,7 +206,7 @@ function ThumbnailCheckbox({
206
206
  "button",
207
207
  {
208
208
  className: cn(
209
- "absolute z-[2] grid place-items-center w-[18px] h-[18px] rounded-sm cursor-pointer transition-[opacity,background-color,border-color]",
209
+ "absolute z-[2] grid place-items-center size-[var(--thumbnail-select-size)] rounded-sm cursor-pointer transition-[opacity,background-color,border-color]",
210
210
  "border bg-white/[0.92] border-neutral-300",
211
211
  position === "top-left" && "top-2 left-2",
212
212
  position === "top-right" && "top-2 right-2",
@@ -245,7 +245,7 @@ function ThumbnailPin({
245
245
  "button",
246
246
  {
247
247
  className: cn(
248
- "absolute z-[2] grid place-items-center w-[22px] h-[22px] rounded-full cursor-pointer transition-opacity",
248
+ "absolute z-[2] grid place-items-center size-[var(--thumbnail-action-size)] rounded-full cursor-pointer transition-opacity",
249
249
  position === "top-left" && "top-1.5 left-1.5",
250
250
  position === "top-right" && "top-1.5 right-1.5",
251
251
  pinned ? "opacity-100 bg-white/95 text-[#eab308] dark:bg-black/55" : "opacity-0 bg-white/[0.82] text-neutral-500 dark:bg-black/45 dark:text-neutral-300 group-hover/thumbnail:opacity-100",
@@ -290,5 +290,5 @@ Thumbnail.Checkbox = ThumbnailCheckbox;
290
290
  Thumbnail.Pin = ThumbnailPin;
291
291
 
292
292
  export { Thumbnail, ThumbnailBadge, ThumbnailCheckbox, ThumbnailPin, ThumbnailPlayOverlay, ThumbnailTag, thumbnailVariants };
293
- //# sourceMappingURL=chunk-Q43KJP5A.js.map
294
- //# sourceMappingURL=chunk-Q43KJP5A.js.map
293
+ //# sourceMappingURL=chunk-QLYH3GCV.js.map
294
+ //# sourceMappingURL=chunk-QLYH3GCV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/primitives/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"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","file":"chunk-Q43KJP5A.js","sourcesContent":["\"use client\"\n\nimport type { Badge } from \"../Badge\"\nimport type { ThumbnailProps } from \"./Thumbnail.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Image } from \"../Image\"\n\nconst thumbnailVariants = cva(\n \"relative inline-block overflow-hidden bg-[color:var(--thumbnail-root-bg)]\",\n {\n variants: {\n size: {\n xs: \"w-[var(--thumbnail-size-xs-width)]\",\n sm: \"w-[var(--thumbnail-size-sm-width)]\",\n default: \"w-[var(--thumbnail-size-default-width)]\",\n lg: \"w-[var(--thumbnail-size-lg-width)]\",\n xl: \"w-[var(--thumbnail-size-xl-width)]\",\n },\n aspectRatio: {\n square: \"aspect-square\",\n video: \"aspect-video\",\n wide: \"aspect-[4/3]\",\n },\n rounded: {\n none: \"rounded-[var(--thumbnail-rounded-none)]\",\n sm: \"rounded-[var(--thumbnail-rounded-sm)]\",\n default: \"rounded-[var(--thumbnail-rounded-default)]\",\n lg: \"rounded-[var(--thumbnail-rounded-lg)]\",\n full: \"rounded-[var(--thumbnail-rounded-full)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n aspectRatio: \"square\",\n rounded: \"default\",\n },\n }\n)\n\n/**\n * Thumbnail - A small preview component with `image` (loads src) or `tint` (colored tile) modes.\n *\n * Features:\n * - Two modes: `image` (legacy — loads `src`) and `tint` (renders a colored tile)\n * - Multiple size variants (xs, sm, default, lg, xl)\n * - Aspect ratio control (square, video, wide)\n * - Fallback content on error\n * - Placeholder during loading\n * - Click/select behavior for galleries\n * - Selected and disabled states\n * - Sub-components for overlays: Thumbnail.Tag, Thumbnail.PlayOverlay, Thumbnail.Badge, Thumbnail.Checkbox, Thumbnail.Pin\n *\n * @example\n * // Image mode (legacy, backward compatible)\n * <Thumbnail src=\"/photo.jpg\" alt=\"Photo preview\" />\n *\n * @example\n * // Tint mode for asset-type preview\n * <Thumbnail mode=\"tint\" tint=\"rgb(249 115 22 / 0.16)\">\n * <Thumbnail.Tag>JPG</Thumbnail.Tag>\n * <Thumbnail.PlayOverlay duration=\"0:15\" />\n * </Thumbnail>\n *\n * @example\n * // Selectable + pinnable card thumb\n * <Thumbnail mode=\"image\" src=\"...\" alt=\"hero\">\n * <Thumbnail.Tag>JPG</Thumbnail.Tag>\n * <Thumbnail.Checkbox checked={isSel} onChange={toggle} />\n * <Thumbnail.Pin pinned={isPinned} onToggle={togglePin} />\n * <Thumbnail.Badge color=\"success\">novo</Thumbnail.Badge>\n * </Thumbnail>\n */\nfunction Thumbnail({\n src,\n alt,\n size = \"default\",\n aspectRatio = \"square\",\n rounded = \"default\",\n mode = \"image\",\n tint,\n fallback,\n placeholder,\n onClick,\n selected = false,\n disabled = false,\n className,\n children,\n ...props\n}: ThumbnailProps) {\n const handleClick = React.useCallback(() => {\n if (!disabled && onClick) {\n onClick()\n }\n }, [disabled, onClick])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (disabled || !onClick) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick()\n }\n },\n [disabled, onClick]\n )\n\n const isInteractive = !!onClick\n\n return (\n <div\n className={cn(\n thumbnailVariants({ size, aspectRatio, rounded }),\n \"group/thumbnail\",\n // Interactive styles\n isInteractive && !disabled && \"cursor-pointer\",\n // Focus styles for interactive\n isInteractive && \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n // Selected state\n selected && \"ring-2 ring-primary ring-offset-2\",\n // Disabled state\n disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n className\n )}\n aria-disabled={isInteractive && disabled ? true : undefined}\n aria-pressed={isInteractive ? selected : undefined}\n data-mode={mode}\n data-pinned={undefined}\n data-selected={selected || undefined}\n data-slot=\"thumbnail\"\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? (disabled ? -1 : 0) : undefined}\n onClick={isInteractive ? handleClick : undefined}\n onKeyDown={isInteractive ? handleKeyDown : undefined}\n {...props}\n >\n {mode === \"image\" ? (\n <Image\n alt={alt ?? \"\"}\n className=\"size-full\"\n data-slot=\"thumbnail-image\"\n fallback={fallback}\n objectFit=\"cover\"\n placeholder={placeholder}\n src={src ?? \"\"}\n />\n ) : (\n <span\n aria-hidden=\"true\"\n className=\"absolute inset-0\"\n data-slot=\"thumbnail-tint\"\n style={{ backgroundColor: tint }}\n />\n )}\n {children}\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-components — overlays.\n * Each is absolute-positioned inside the Thumbnail container.\n * Hover-revealed affordances rely on the parent's group-hover state\n * via group-hover/group-data attributes (we set data-slot=\"thumbnail\"\n * as the parent group anchor).\n * ─────────────────────────────────────────────────────────────*/\n\ninterface ThumbnailTagProps extends React.ComponentProps<\"span\"> {\n position?: \"bottom-left\" | \"bottom-right\"\n}\n\nfunction ThumbnailTag({\n position = \"bottom-right\",\n className,\n ...props\n}: ThumbnailTagProps) {\n return (\n <span\n className={cn(\n \"absolute font-bold uppercase tracking-[0.04em] px-1.5 py-0.5 rounded text-[10px] leading-tight\",\n \"bg-white/[0.88] text-neutral-900 dark:bg-black/[0.65] dark:text-neutral-50\",\n position === \"bottom-left\" && \"bottom-1.5 left-1.5\",\n position === \"bottom-right\" && \"bottom-1.5 right-1.5\",\n className,\n )}\n data-position={position}\n data-slot=\"thumbnail-tag\"\n {...props}\n />\n )\n}\n\ninterface ThumbnailPlayOverlayProps {\n className?: string\n duration?: string\n size?: \"default\" | \"lg\" | \"sm\"\n}\n\nfunction ThumbnailPlayOverlay({\n duration,\n size = \"default\",\n className,\n}: ThumbnailPlayOverlayProps) {\n const iconSize = size === \"sm\" ? 24 : size === \"lg\" ? 48 : 36\n return (\n <>\n <span\n className={cn(\n \"absolute inset-0 grid place-items-center text-white/90 pointer-events-none\",\n \"[filter:drop-shadow(0_1px_2px_rgb(0_0_0/0.35))]\",\n className,\n )}\n aria-hidden=\"true\"\n data-slot=\"thumbnail-play-overlay\"\n >\n <svg fill=\"currentColor\" height={iconSize} viewBox=\"0 0 24 24\" width={iconSize}>\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n </span>\n {duration && (\n <span\n className=\"absolute bottom-1.5 left-1.5 px-1.5 py-0.5 rounded text-[10.5px] tabular-nums font-mono bg-black/55 text-white/95\"\n data-slot=\"thumbnail-duration\"\n >\n {duration}\n </span>\n )}\n </>\n )\n}\n\ninterface ThumbnailBadgeProps extends React.ComponentProps<typeof Badge> {\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailBadge({\n position = \"top-left\",\n className,\n ...props\n}: ThumbnailBadgeProps) {\n // Use prototype's \"thumb-new\" exact styling when no `color` is overridden —\n // 9px font, 800 weight, uppercase, mint-on-mint-dark. Consumers can override\n // via `color` prop to get standard Badge variants.\n return (\n <span\n className={cn(\n \"absolute z-[2] text-[9px] font-extrabold uppercase tracking-[0.06em]\",\n \"px-1.5 py-0.5 rounded-xs\",\n \"bg-[color:var(--brand-primary-500,theme(colors.emerald.400))] text-[color:var(--brand-primary-950,theme(colors.emerald.950))]\",\n position === \"top-left\" && \"top-2 left-8\",\n position === \"top-right\" && \"top-2 right-2\",\n className,\n )}\n data-position={position}\n data-slot=\"thumbnail-badge\"\n {...(props as React.HTMLAttributes<HTMLSpanElement>)}\n />\n )\n}\n\ninterface ThumbnailCheckboxProps {\n \"aria-label\"?: string\n checked: boolean\n className?: string\n onChange: (\n checked: boolean,\n event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>,\n ) => void\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailCheckbox({\n checked,\n onChange,\n position = \"top-left\",\n className,\n \"aria-label\": ariaLabel = \"Selecionar\",\n}: ThumbnailCheckboxProps) {\n return (\n <button\n className={cn(\n \"absolute z-[2] grid place-items-center w-[18px] h-[18px] rounded-sm cursor-pointer transition-[opacity,background-color,border-color]\",\n \"border bg-white/[0.92] border-neutral-300\",\n position === \"top-left\" && \"top-2 left-2\",\n position === \"top-right\" && \"top-2 right-2\",\n // Hover-revealed when not checked; sticky visible when checked\n checked\n ? \"opacity-100 bg-[color:var(--brand-primary-500)] border-[color:var(--brand-primary-500)] text-[color:var(--brand-primary-900)]\"\n : \"opacity-0 text-transparent group-hover/thumbnail:opacity-100\",\n className,\n )}\n aria-label={ariaLabel}\n aria-pressed={checked}\n data-checked={checked || undefined}\n data-slot=\"thumbnail-checkbox\"\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onChange(!checked, e)\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onChange(!checked, e)\n }\n }}\n >\n <Check size={11} strokeWidth={3} />\n </button>\n )\n}\n\ninterface ThumbnailPinProps {\n \"aria-label\"?: string\n className?: string\n onToggle: (\n pinned: boolean,\n event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>,\n ) => void\n pinned: boolean\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailPin({\n pinned,\n onToggle,\n position = \"top-right\",\n className,\n \"aria-label\": ariaLabel = \"Fixar\",\n}: ThumbnailPinProps) {\n return (\n <button\n className={cn(\n \"absolute z-[2] grid place-items-center w-[22px] h-[22px] rounded-full cursor-pointer transition-opacity\",\n position === \"top-left\" && \"top-1.5 left-1.5\",\n position === \"top-right\" && \"top-1.5 right-1.5\",\n pinned\n ? \"opacity-100 bg-white/95 text-[#eab308] dark:bg-black/55\"\n : \"opacity-0 bg-white/[0.82] text-neutral-500 dark:bg-black/45 dark:text-neutral-300 group-hover/thumbnail:opacity-100\",\n className,\n )}\n aria-label={ariaLabel}\n aria-pressed={pinned}\n data-pinned={pinned || undefined}\n data-slot=\"thumbnail-pin\"\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onToggle(!pinned, e)\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onToggle(!pinned, e)\n }\n }}\n >\n <svg\n fill={pinned ? \"currentColor\" : \"none\"}\n height=\"11\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.6\"\n viewBox=\"0 0 16 16\"\n width=\"11\"\n >\n <path d=\"m8 1.5 1.95 4.18 4.55.5-3.4 3.13.94 4.5L8 11.5l-4.04 2.31.94-4.5L1.5 6.18l4.55-.5z\" />\n </svg>\n </button>\n )\n}\n\n// Attach sub-components for compound API: Thumbnail.Tag etc.\n// We also keep them as named exports so users can import directly.\nThumbnail.Tag = ThumbnailTag\nThumbnail.PlayOverlay = ThumbnailPlayOverlay\nThumbnail.Badge = ThumbnailBadge\nThumbnail.Checkbox = ThumbnailCheckbox\nThumbnail.Pin = ThumbnailPin\n\nexport {\n Thumbnail,\n ThumbnailBadge,\n ThumbnailCheckbox,\n ThumbnailPin,\n ThumbnailPlayOverlay,\n ThumbnailTag,\n thumbnailVariants,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/primitives/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"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","file":"chunk-QLYH3GCV.js","sourcesContent":["\"use client\"\n\nimport type { Badge } from \"../Badge\"\nimport type { ThumbnailProps } from \"./Thumbnail.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Check } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Image } from \"../Image\"\n\nconst thumbnailVariants = cva(\n \"relative inline-block overflow-hidden bg-[color:var(--thumbnail-root-bg)]\",\n {\n variants: {\n size: {\n xs: \"w-[var(--thumbnail-size-xs-width)]\",\n sm: \"w-[var(--thumbnail-size-sm-width)]\",\n default: \"w-[var(--thumbnail-size-default-width)]\",\n lg: \"w-[var(--thumbnail-size-lg-width)]\",\n xl: \"w-[var(--thumbnail-size-xl-width)]\",\n },\n aspectRatio: {\n square: \"aspect-square\",\n video: \"aspect-video\",\n wide: \"aspect-[4/3]\",\n },\n rounded: {\n none: \"rounded-[var(--thumbnail-rounded-none)]\",\n sm: \"rounded-[var(--thumbnail-rounded-sm)]\",\n default: \"rounded-[var(--thumbnail-rounded-default)]\",\n lg: \"rounded-[var(--thumbnail-rounded-lg)]\",\n full: \"rounded-[var(--thumbnail-rounded-full)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n aspectRatio: \"square\",\n rounded: \"default\",\n },\n }\n)\n\n/**\n * Thumbnail - A small preview component with `image` (loads src) or `tint` (colored tile) modes.\n *\n * Features:\n * - Two modes: `image` (legacy — loads `src`) and `tint` (renders a colored tile)\n * - Multiple size variants (xs, sm, default, lg, xl)\n * - Aspect ratio control (square, video, wide)\n * - Fallback content on error\n * - Placeholder during loading\n * - Click/select behavior for galleries\n * - Selected and disabled states\n * - Sub-components for overlays: Thumbnail.Tag, Thumbnail.PlayOverlay, Thumbnail.Badge, Thumbnail.Checkbox, Thumbnail.Pin\n *\n * @example\n * // Image mode (legacy, backward compatible)\n * <Thumbnail src=\"/photo.jpg\" alt=\"Photo preview\" />\n *\n * @example\n * // Tint mode for asset-type preview\n * <Thumbnail mode=\"tint\" tint=\"rgb(249 115 22 / 0.16)\">\n * <Thumbnail.Tag>JPG</Thumbnail.Tag>\n * <Thumbnail.PlayOverlay duration=\"0:15\" />\n * </Thumbnail>\n *\n * @example\n * // Selectable + pinnable card thumb\n * <Thumbnail mode=\"image\" src=\"...\" alt=\"hero\">\n * <Thumbnail.Tag>JPG</Thumbnail.Tag>\n * <Thumbnail.Checkbox checked={isSel} onChange={toggle} />\n * <Thumbnail.Pin pinned={isPinned} onToggle={togglePin} />\n * <Thumbnail.Badge color=\"success\">novo</Thumbnail.Badge>\n * </Thumbnail>\n */\nfunction Thumbnail({\n src,\n alt,\n size = \"default\",\n aspectRatio = \"square\",\n rounded = \"default\",\n mode = \"image\",\n tint,\n fallback,\n placeholder,\n onClick,\n selected = false,\n disabled = false,\n className,\n children,\n ...props\n}: ThumbnailProps) {\n const handleClick = React.useCallback(() => {\n if (!disabled && onClick) {\n onClick()\n }\n }, [disabled, onClick])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (disabled || !onClick) return\n\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick()\n }\n },\n [disabled, onClick]\n )\n\n const isInteractive = !!onClick\n\n return (\n <div\n className={cn(\n thumbnailVariants({ size, aspectRatio, rounded }),\n \"group/thumbnail\",\n // Interactive styles\n isInteractive && !disabled && \"cursor-pointer\",\n // Focus styles for interactive\n isInteractive && \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n // Selected state\n selected && \"ring-2 ring-primary ring-offset-2\",\n // Disabled state\n disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n className\n )}\n aria-disabled={isInteractive && disabled ? true : undefined}\n aria-pressed={isInteractive ? selected : undefined}\n data-mode={mode}\n data-pinned={undefined}\n data-selected={selected || undefined}\n data-slot=\"thumbnail\"\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? (disabled ? -1 : 0) : undefined}\n onClick={isInteractive ? handleClick : undefined}\n onKeyDown={isInteractive ? handleKeyDown : undefined}\n {...props}\n >\n {mode === \"image\" ? (\n <Image\n alt={alt ?? \"\"}\n className=\"size-full\"\n data-slot=\"thumbnail-image\"\n fallback={fallback}\n objectFit=\"cover\"\n placeholder={placeholder}\n src={src ?? \"\"}\n />\n ) : (\n <span\n aria-hidden=\"true\"\n className=\"absolute inset-0\"\n data-slot=\"thumbnail-tint\"\n style={{ backgroundColor: tint }}\n />\n )}\n {children}\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-components — overlays.\n * Each is absolute-positioned inside the Thumbnail container.\n * Hover-revealed affordances rely on the parent's group-hover state\n * via group-hover/group-data attributes (we set data-slot=\"thumbnail\"\n * as the parent group anchor).\n * ─────────────────────────────────────────────────────────────*/\n\ninterface ThumbnailTagProps extends React.ComponentProps<\"span\"> {\n position?: \"bottom-left\" | \"bottom-right\"\n}\n\nfunction ThumbnailTag({\n position = \"bottom-right\",\n className,\n ...props\n}: ThumbnailTagProps) {\n return (\n <span\n className={cn(\n \"absolute font-bold uppercase tracking-[0.04em] px-1.5 py-0.5 rounded text-[length:var(--thumbnail-label-font-size)] leading-tight\",\n \"bg-white/[0.88] text-neutral-900 dark:bg-black/[0.65] dark:text-neutral-50\",\n position === \"bottom-left\" && \"bottom-1.5 left-1.5\",\n position === \"bottom-right\" && \"bottom-1.5 right-1.5\",\n className,\n )}\n data-position={position}\n data-slot=\"thumbnail-tag\"\n {...props}\n />\n )\n}\n\ninterface ThumbnailPlayOverlayProps {\n className?: string\n duration?: string\n size?: \"default\" | \"lg\" | \"sm\"\n}\n\nfunction ThumbnailPlayOverlay({\n duration,\n size = \"default\",\n className,\n}: ThumbnailPlayOverlayProps) {\n const iconSize = size === \"sm\" ? 24 : size === \"lg\" ? 48 : 36\n return (\n <>\n <span\n className={cn(\n \"absolute inset-0 grid place-items-center text-white/90 pointer-events-none\",\n \"[filter:drop-shadow(0_1px_2px_rgb(0_0_0/0.35))]\",\n className,\n )}\n aria-hidden=\"true\"\n data-slot=\"thumbnail-play-overlay\"\n >\n <svg fill=\"currentColor\" height={iconSize} viewBox=\"0 0 24 24\" width={iconSize}>\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n </span>\n {duration && (\n <span\n className=\"absolute bottom-1.5 left-1.5 px-1.5 py-0.5 rounded text-[10.5px] tabular-nums font-mono bg-black/55 text-white/95\"\n data-slot=\"thumbnail-duration\"\n >\n {duration}\n </span>\n )}\n </>\n )\n}\n\ninterface ThumbnailBadgeProps extends React.ComponentProps<typeof Badge> {\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailBadge({\n position = \"top-left\",\n className,\n ...props\n}: ThumbnailBadgeProps) {\n // Use prototype's \"thumb-new\" exact styling when no `color` is overridden —\n // 9px font, 800 weight, uppercase, mint-on-mint-dark. Consumers can override\n // via `color` prop to get standard Badge variants.\n return (\n <span\n className={cn(\n \"absolute z-[2] text-[length:var(--thumbnail-badge-font-size)] font-extrabold uppercase tracking-[0.06em]\",\n \"px-1.5 py-0.5 rounded-xs\",\n \"bg-[color:var(--brand-primary-500,theme(colors.emerald.400))] text-[color:var(--brand-primary-950,theme(colors.emerald.950))]\",\n position === \"top-left\" && \"top-2 left-8\",\n position === \"top-right\" && \"top-2 right-2\",\n className,\n )}\n data-position={position}\n data-slot=\"thumbnail-badge\"\n {...(props as React.HTMLAttributes<HTMLSpanElement>)}\n />\n )\n}\n\ninterface ThumbnailCheckboxProps {\n \"aria-label\"?: string\n checked: boolean\n className?: string\n onChange: (\n checked: boolean,\n event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>,\n ) => void\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailCheckbox({\n checked,\n onChange,\n position = \"top-left\",\n className,\n \"aria-label\": ariaLabel = \"Selecionar\",\n}: ThumbnailCheckboxProps) {\n return (\n <button\n className={cn(\n \"absolute z-[2] grid place-items-center size-[var(--thumbnail-select-size)] rounded-sm cursor-pointer transition-[opacity,background-color,border-color]\",\n \"border bg-white/[0.92] border-neutral-300\",\n position === \"top-left\" && \"top-2 left-2\",\n position === \"top-right\" && \"top-2 right-2\",\n // Hover-revealed when not checked; sticky visible when checked\n checked\n ? \"opacity-100 bg-[color:var(--brand-primary-500)] border-[color:var(--brand-primary-500)] text-[color:var(--brand-primary-900)]\"\n : \"opacity-0 text-transparent group-hover/thumbnail:opacity-100\",\n className,\n )}\n aria-label={ariaLabel}\n aria-pressed={checked}\n data-checked={checked || undefined}\n data-slot=\"thumbnail-checkbox\"\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onChange(!checked, e)\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onChange(!checked, e)\n }\n }}\n >\n <Check size={11} strokeWidth={3} />\n </button>\n )\n}\n\ninterface ThumbnailPinProps {\n \"aria-label\"?: string\n className?: string\n onToggle: (\n pinned: boolean,\n event: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>,\n ) => void\n pinned: boolean\n position?: \"top-left\" | \"top-right\"\n}\n\nfunction ThumbnailPin({\n pinned,\n onToggle,\n position = \"top-right\",\n className,\n \"aria-label\": ariaLabel = \"Fixar\",\n}: ThumbnailPinProps) {\n return (\n <button\n className={cn(\n \"absolute z-[2] grid place-items-center size-[var(--thumbnail-action-size)] rounded-full cursor-pointer transition-opacity\",\n position === \"top-left\" && \"top-1.5 left-1.5\",\n position === \"top-right\" && \"top-1.5 right-1.5\",\n pinned\n ? \"opacity-100 bg-white/95 text-[#eab308] dark:bg-black/55\"\n : \"opacity-0 bg-white/[0.82] text-neutral-500 dark:bg-black/45 dark:text-neutral-300 group-hover/thumbnail:opacity-100\",\n className,\n )}\n aria-label={ariaLabel}\n aria-pressed={pinned}\n data-pinned={pinned || undefined}\n data-slot=\"thumbnail-pin\"\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n onToggle(!pinned, e)\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n e.stopPropagation()\n onToggle(!pinned, e)\n }\n }}\n >\n <svg\n fill={pinned ? \"currentColor\" : \"none\"}\n height=\"11\"\n stroke=\"currentColor\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.6\"\n viewBox=\"0 0 16 16\"\n width=\"11\"\n >\n <path d=\"m8 1.5 1.95 4.18 4.55.5-3.4 3.13.94 4.5L8 11.5l-4.04 2.31.94-4.5L1.5 6.18l4.55-.5z\" />\n </svg>\n </button>\n )\n}\n\n// Attach sub-components for compound API: Thumbnail.Tag etc.\n// We also keep them as named exports so users can import directly.\nThumbnail.Tag = ThumbnailTag\nThumbnail.PlayOverlay = ThumbnailPlayOverlay\nThumbnail.Badge = ThumbnailBadge\nThumbnail.Checkbox = ThumbnailCheckbox\nThumbnail.Pin = ThumbnailPin\n\nexport {\n Thumbnail,\n ThumbnailBadge,\n ThumbnailCheckbox,\n ThumbnailPin,\n ThumbnailPlayOverlay,\n ThumbnailTag,\n thumbnailVariants,\n}\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 * as React from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -8,17 +8,17 @@ var imageVariants = cva(
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default: "",
12
- rounded: "rounded-md",
13
- circle: "rounded-full",
11
+ default: "rounded-[var(--image-rounded-default)]",
12
+ rounded: "rounded-[var(--image-rounded-rounded)]",
13
+ circle: "rounded-[var(--image-rounded-circle)]",
14
14
  square: "aspect-square"
15
15
  },
16
16
  size: {
17
- xs: "size-8",
18
- sm: "size-12",
19
- md: "size-16",
20
- lg: "size-24",
21
- xl: "size-32",
17
+ xs: "size-[var(--image-size-xs)]",
18
+ sm: "size-[var(--image-size-sm)]",
19
+ md: "size-[var(--image-size-md)]",
20
+ lg: "size-[var(--image-size-lg)]",
21
+ xl: "size-[var(--image-size-xl)]",
22
22
  full: "w-full"
23
23
  }
24
24
  },
@@ -211,5 +211,5 @@ function ImageInner({
211
211
  }
212
212
 
213
213
  export { Image, imageVariants };
214
- //# sourceMappingURL=chunk-IRIIK3BU.js.map
215
- //# sourceMappingURL=chunk-IRIIK3BU.js.map
214
+ //# sourceMappingURL=chunk-QO6TOE45.js.map
215
+ //# sourceMappingURL=chunk-QO6TOE45.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/Image/Image.tsx"],"names":[],"mappings":"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","file":"chunk-QO6TOE45.js","sourcesContent":["\"use client\"\n\nimport type { ImageProps } from \"./Image.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst imageVariants = cva(\n \"transition-opacity duration-300 motion-reduce:transition-none\",\n {\n variants: {\n variant: {\n default: \"rounded-[var(--image-rounded-default)]\",\n rounded: \"rounded-[var(--image-rounded-rounded)]\",\n circle: \"rounded-[var(--image-rounded-circle)]\",\n square: \"aspect-square\",\n },\n size: {\n xs: \"size-[var(--image-size-xs)]\",\n sm: \"size-[var(--image-size-sm)]\",\n md: \"size-[var(--image-size-md)]\",\n lg: \"size-[var(--image-size-lg)]\",\n xl: \"size-[var(--image-size-xl)]\",\n full: \"w-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"full\",\n },\n }\n)\n\n/**\n * Image - A component for displaying images with lazy loading, fallback, and aspect ratio support.\n *\n * Features:\n * - Lazy loading by default\n * - Fallback content on error\n * - Placeholder during loading\n * - Aspect ratio control\n * - Object-fit and position options\n *\n * @example\n * // Basic usage\n * <Image src=\"/photo.jpg\" alt=\"Description\" />\n *\n * @example\n * // With fallback and placeholder\n * <Image\n * src=\"/photo.jpg\"\n * alt=\"Product\"\n * fallback={<div>Failed to load</div>}\n * placeholder={<div className=\"animate-pulse bg-muted\" />}\n * />\n */\nfunction Image(props: ImageProps) {\n const imageKey = props.src\n return <ImageInner key={imageKey} {...props} />\n}\n\nfunction ImageInner({\n src,\n alt,\n variant,\n size,\n fallback,\n placeholder,\n aspectRatio = \"auto\",\n objectFit = \"cover\",\n objectPosition = \"center\",\n loading = \"lazy\",\n className,\n onLoad,\n onError,\n ref,\n style,\n ...props\n}: ImageProps) {\n const [isLoading, setIsLoading] = React.useState(true)\n const [hasError, setHasError] = React.useState(false)\n const normalizedSrc = src.trim()\n const isMissingSrc = normalizedSrc.length === 0\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setIsLoading(false)\n setHasError(false)\n onLoad?.(event)\n },\n [onLoad]\n )\n\n const handleError = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement>) => {\n setIsLoading(false)\n setHasError(true)\n onError?.(event)\n },\n [onError]\n )\n\n // Compute aspect ratio style\n const aspectRatioStyle = React.useMemo(() => {\n if (aspectRatio === \"auto\") return\n if (aspectRatio === \"square\") return // handled by class\n if (aspectRatio === \"video\") return // handled by class\n if (aspectRatio === \"portrait\") return { aspectRatio: \"3/4\" }\n if (typeof aspectRatio === \"number\") {\n return { aspectRatio: String(aspectRatio) }\n }\n return\n }, [aspectRatio])\n\n // Compute object-fit class\n const objectFitClass = React.useMemo(() => {\n switch (objectFit) {\n case \"cover\":\n return \"object-cover\"\n case \"contain\":\n return \"object-contain\"\n case \"fill\":\n return \"object-fill\"\n case \"none\":\n return \"object-none\"\n default:\n return \"object-cover\"\n }\n }, [objectFit])\n\n // Compute object-position class or style\n const objectPositionClass = React.useMemo(() => {\n switch (objectPosition) {\n case \"center\":\n return \"object-center\"\n case \"top\":\n return \"object-top\"\n case \"bottom\":\n return \"object-bottom\"\n case \"left\":\n return \"object-left\"\n case \"right\":\n return \"object-right\"\n default:\n return\n }\n }, [objectPosition])\n\n const objectPositionStyle = React.useMemo(() => {\n if (!objectPositionClass && objectPosition !== \"center\") {\n return { objectPosition }\n }\n return\n }, [objectPosition, objectPositionClass])\n\n // Compute aspect ratio classes\n const aspectRatioClass = React.useMemo(() => {\n if (aspectRatio === \"square\") return \"aspect-square\"\n if (aspectRatio === \"video\") return \"aspect-video\"\n return\n }, [aspectRatio])\n\n // Merge styles (must be before any early return to respect hooks rules)\n const mergedStyle = React.useMemo(() => {\n if (!aspectRatioStyle && !style) return\n return { ...aspectRatioStyle, ...style }\n }, [aspectRatioStyle, style])\n\n // Show fallback for missing/errored images when content is provided.\n if ((hasError || isMissingSrc) && fallback) {\n return (\n <div\n className={cn(\n imageVariants({ variant, size }),\n aspectRatioClass,\n \"flex items-center justify-center bg-muted\",\n className\n )}\n data-slot=\"image-fallback\"\n style={mergedStyle}\n >\n {fallback}\n </div>\n )\n }\n\n if (isMissingSrc) {\n return (\n <div\n className={cn(\n \"relative inline-block overflow-hidden\",\n imageVariants({ variant, size }),\n aspectRatioClass,\n \"bg-muted\",\n className\n )}\n data-slot=\"image-empty\"\n style={mergedStyle}\n />\n )\n }\n\n return (\n <div\n className={cn(\n \"relative inline-block overflow-hidden\",\n imageVariants({ variant, size }),\n aspectRatioClass,\n className\n )}\n style={mergedStyle}\n >\n {/* Placeholder shown while loading */}\n {isLoading && placeholder && (\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 flex items-center justify-center\"\n data-slot=\"image-skeleton\"\n >\n {placeholder}\n </div>\n )}\n\n {/* Default skeleton if no placeholder provided */}\n {isLoading && !placeholder && (\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 animate-pulse bg-[color:var(--image-skeleton-bg)] motion-reduce:animate-none\"\n data-slot=\"image-skeleton\"\n />\n )}\n\n {/* The actual image */}\n <img\n ref={ref}\n className={cn(\n \"size-full transition-opacity duration-300 motion-reduce:transition-none\",\n objectFitClass,\n objectPositionClass,\n isLoading ? \"opacity-0\" : \"opacity-100\"\n )}\n alt={alt}\n data-slot=\"image\"\n loading={loading}\n src={normalizedSrc}\n style={objectPositionStyle}\n onError={handleError}\n onLoad={handleLoad}\n {...props}\n />\n </div>\n )\n}\n\nexport { Image, imageVariants }\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, jsxs } from 'react/jsx-runtime';
4
4
 
@@ -39,19 +39,19 @@ var statusIndicatorVariants = cva("shrink-0", {
39
39
  { shape: "dot", size: "xl", className: "size-[var(--status-indicator-dot-size-xl)]" },
40
40
  { shape: "dot", size: "2xl", className: "size-[var(--status-indicator-dot-size-2xl)]" },
41
41
  // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)
42
- { shape: SHAPE_BAR_V, size: "xs", className: `${FULL_H} w-px` },
43
- { shape: SHAPE_BAR_V, size: "sm", className: `${FULL_H} w-[2px]` },
44
- { shape: SHAPE_BAR_V, size: "default", className: `${FULL_H} w-[2px]` },
45
- { shape: SHAPE_BAR_V, size: "lg", className: `${FULL_H} w-[3px]` },
46
- { shape: SHAPE_BAR_V, size: "xl", className: `${FULL_H} w-[4px]` },
47
- { shape: SHAPE_BAR_V, size: "2xl", className: `${FULL_H} w-[6px]` },
42
+ { shape: SHAPE_BAR_V, size: "xs", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-xs)]` },
43
+ { shape: SHAPE_BAR_V, size: "sm", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-sm)]` },
44
+ { shape: SHAPE_BAR_V, size: "default", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-default)]` },
45
+ { shape: SHAPE_BAR_V, size: "lg", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-lg)]` },
46
+ { shape: SHAPE_BAR_V, size: "xl", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-xl)]` },
47
+ { shape: SHAPE_BAR_V, size: "2xl", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-2xl)]` },
48
48
  // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)
49
- { shape: SHAPE_BAR_H, size: "xs", className: `${FULL_W} h-px` },
50
- { shape: SHAPE_BAR_H, size: "sm", className: `${FULL_W} h-[2px]` },
51
- { shape: SHAPE_BAR_H, size: "default", className: `${FULL_W} h-[2px]` },
52
- { shape: SHAPE_BAR_H, size: "lg", className: `${FULL_W} h-[3px]` },
53
- { shape: SHAPE_BAR_H, size: "xl", className: `${FULL_W} h-[4px]` },
54
- { shape: SHAPE_BAR_H, size: "2xl", className: `${FULL_W} h-[6px]` }
49
+ { shape: SHAPE_BAR_H, size: "xs", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-xs)]` },
50
+ { shape: SHAPE_BAR_H, size: "sm", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-sm)]` },
51
+ { shape: SHAPE_BAR_H, size: "default", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-default)]` },
52
+ { shape: SHAPE_BAR_H, size: "lg", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-lg)]` },
53
+ { shape: SHAPE_BAR_H, size: "xl", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-xl)]` },
54
+ { shape: SHAPE_BAR_H, size: "2xl", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-2xl)]` }
55
55
  ],
56
56
  defaultVariants: {
57
57
  variant: "neutral",
@@ -167,5 +167,5 @@ function StatusIndicator({
167
167
  }
168
168
 
169
169
  export { StatusIndicator, statusIndicatorVariants };
170
- //# sourceMappingURL=chunk-66TBTTZO.js.map
171
- //# sourceMappingURL=chunk-66TBTTZO.js.map
170
+ //# sourceMappingURL=chunk-QWWA4FZP.js.map
171
+ //# sourceMappingURL=chunk-QWWA4FZP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/StatusIndicator/StatusIndicator.variants.ts","../src/components/primitives/StatusIndicator/StatusIndicator.tsx"],"names":[],"mappings":"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","file":"chunk-QWWA4FZP.js","sourcesContent":["// StatusIndicator/StatusIndicator.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n// Extracted to satisfy sonarjs/no-duplicate-string — each appears multiple times in compoundVariants.\nconst FULL_H = \"h-full\"\nconst FULL_W = \"w-full\"\nconst SHAPE_BAR_V = \"bar-vertical\" as const\nconst SHAPE_BAR_H = \"bar-horizontal\" as const\n\n/**\n * StatusIndicator style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const statusIndicatorVariants = cva(\"shrink-0\", {\n variants: {\n variant: {\n success: \"bg-[color:var(--status-indicator-dot-color-success)]\",\n warning: \"bg-[color:var(--status-indicator-dot-color-warning)]\",\n error: \"bg-[color:var(--status-indicator-dot-color-error)]\",\n destructive: \"bg-[color:var(--status-indicator-dot-color-destructive)]\",\n info: \"bg-[color:var(--status-indicator-dot-color-info)]\",\n neutral: \"bg-[color:var(--status-indicator-dot-color-neutral)]\",\n },\n shape: {\n dot: \"rounded-[var(--status-indicator-root-border-radius)]\",\n \"bar-vertical\": \"rounded-xs\",\n \"bar-horizontal\": \"rounded-xs\",\n },\n size: {\n xs: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n xl: \"\",\n \"2xl\": \"\",\n },\n },\n compoundVariants: [\n // Dot — uses size for both dimensions\n { shape: \"dot\", size: \"xs\", className: \"size-[var(--status-indicator-dot-size-xs)]\" },\n { shape: \"dot\", size: \"sm\", className: \"size-[var(--status-indicator-dot-size-sm)]\" },\n { shape: \"dot\", size: \"default\", className: \"size-[var(--status-indicator-dot-size-default)]\" },\n { shape: \"dot\", size: \"lg\", className: \"size-[var(--status-indicator-dot-size-lg)]\" },\n { shape: \"dot\", size: \"xl\", className: \"size-[var(--status-indicator-dot-size-xl)]\" },\n { shape: \"dot\", size: \"2xl\", className: \"size-[var(--status-indicator-dot-size-2xl)]\" },\n // Bar-vertical — width is secondary dim (size controls it); height 100% (FULL_H constant below)\n { shape: SHAPE_BAR_V, size: \"xs\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-xs)]` },\n { shape: SHAPE_BAR_V, size: \"sm\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-sm)]` },\n { shape: SHAPE_BAR_V, size: \"default\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-default)]` },\n { shape: SHAPE_BAR_V, size: \"lg\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-lg)]` },\n { shape: SHAPE_BAR_V, size: \"xl\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-xl)]` },\n { shape: SHAPE_BAR_V, size: \"2xl\", className: `${FULL_H} w-[var(--status-indicator-bar-thickness-2xl)]` },\n // Bar-horizontal — height is secondary dim; width 100% (FULL_W constant below)\n { shape: SHAPE_BAR_H, size: \"xs\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-xs)]` },\n { shape: SHAPE_BAR_H, size: \"sm\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-sm)]` },\n { shape: SHAPE_BAR_H, size: \"default\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-default)]` },\n { shape: SHAPE_BAR_H, size: \"lg\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-lg)]` },\n { shape: SHAPE_BAR_H, size: \"xl\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-xl)]` },\n { shape: SHAPE_BAR_H, size: \"2xl\", className: `${FULL_W} h-[var(--status-indicator-bar-thickness-2xl)]` },\n ],\n defaultVariants: {\n variant: \"neutral\",\n shape: \"dot\",\n size: \"default\",\n },\n})\n\n// Export variant prop types\nexport type StatusIndicatorVariantProps = VariantProps<typeof statusIndicatorVariants>\n","\"use client\"\n\nimport type { StatusIndicatorProps } from \"./StatusIndicator.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n\nfunction StatusIndicator({\n className,\n variant,\n shape = \"dot\",\n size,\n pulse = false,\n label,\n labelPosition = \"right\",\n \"aria-label\": ariaLabel,\n ...props\n}: StatusIndicatorProps) {\n // Generate accessible label based on variant if not provided\n const defaultAriaLabel = `Status: ${variant ?? \"neutral\"}`\n const accessibleLabel = ariaLabel ?? (label ? undefined : defaultAriaLabel)\n\n // Bar shapes ignore `label` — they're purely visual (warning in dev when misused).\n const isBar = shape === \"bar-vertical\" || shape === \"bar-horizontal\"\n \n // `typeof process` guard is required so the library runs in browser bundlers (Vite, etc.) where `process` is not defined globally — without it, the dev-only warning branch throws `ReferenceError: process is not defined`.\n let isProd = false\n if (typeof process !== \"undefined\") {\n const { NODE_ENV } = process.env\n isProd = NODE_ENV === \"production\"\n }\n if (isBar && label && !isProd) {\n \n console.warn(\n `<StatusIndicator shape=\"${shape}\"> ignores the \\`label\\` prop. Use shape=\"dot\" to combine with label, or move the label to surrounding context.`,\n )\n }\n\n // Bar shape — render the bar alone (no label, no inline-flex wrapper).\n if (isBar) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape, size }),\n pulse && \"animate-pulse\",\n className,\n )}\n aria-label={accessibleLabel}\n data-shape={shape}\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n />\n )\n }\n\n // If no label, render just the dot\n if (!label) {\n return (\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className=\"sr-only\"\n data-slot=\"status-indicator-dot\"\n >\n {variant ?? \"neutral\"}\n </span>\n </span>\n )\n }\n\n // With label, render inline-flex container\n return (\n <span\n className={cn(\n \"inline-flex shrink-0 items-center gap-[var(--status-indicator-label-gap)]\",\n labelPosition === \"left\" && \"flex-row-reverse\",\n className\n )}\n aria-label={accessibleLabel}\n data-shape=\"dot\"\n data-slot=\"status-indicator\"\n data-variant={variant ?? \"neutral\"}\n role=\"status\"\n {...props}\n >\n <span\n className={cn(\n statusIndicatorVariants({ variant, shape: \"dot\", size }),\n pulse && \"animate-pulse\"\n )}\n aria-hidden=\"true\"\n data-slot=\"status-indicator-dot\"\n />\n <span\n className=\"text-[length:var(--status-indicator-label-font-size)] leading-normal text-[color:var(--status-indicator-label-color)]\"\n data-slot=\"status-indicator-label\"\n >\n {label}\n </span>\n </span>\n )\n}\n\nexport { StatusIndicator }\nexport { statusIndicatorVariants } from \"./StatusIndicator.variants\"\n"]}
@@ -1,5 +1,5 @@
1
- import { Button } from './chunk-7TF5PVEU.js';
2
- import { cn } from './chunk-HRNDJU7D.js';
1
+ import { Button } from './chunk-L4OQ6BJ5.js';
2
+ import { cn } from './chunk-RVAYDRMA.js';
3
3
  import useEmblaCarousel from 'embla-carousel-react';
4
4
  import { ArrowLeft, ArrowRight } from 'lucide-react';
5
5
  import * as React from 'react';
@@ -293,5 +293,5 @@ function CarouselNext({
293
293
  }
294
294
 
295
295
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious };
296
- //# sourceMappingURL=chunk-2YSZPUQZ.js.map
297
- //# sourceMappingURL=chunk-2YSZPUQZ.js.map
296
+ //# sourceMappingURL=chunk-QXET2TML.js.map
297
+ //# sourceMappingURL=chunk-QXET2TML.js.map