@misael703/ui 1.48.0 → 1.49.0

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 (144) hide show
  1. package/dist/{chunk-CKYOOJGR.mjs → chunk-23U5TMYH.mjs} +3 -3
  2. package/dist/{chunk-CKYOOJGR.mjs.map → chunk-23U5TMYH.mjs.map} +1 -1
  3. package/dist/{chunk-Z54MFDON.mjs → chunk-2KBQSARY.mjs} +4 -4
  4. package/dist/{chunk-Z54MFDON.mjs.map → chunk-2KBQSARY.mjs.map} +1 -1
  5. package/dist/{chunk-ECLG6BQ6.mjs → chunk-4IJTH556.mjs} +3 -3
  6. package/dist/{chunk-ECLG6BQ6.mjs.map → chunk-4IJTH556.mjs.map} +1 -1
  7. package/dist/{chunk-4FPZQCWI.mjs → chunk-4P2MAERZ.mjs} +4 -4
  8. package/dist/{chunk-4FPZQCWI.mjs.map → chunk-4P2MAERZ.mjs.map} +1 -1
  9. package/dist/{chunk-B7KVAKHG.mjs → chunk-5AC43UHU.mjs} +4 -4
  10. package/dist/{chunk-B7KVAKHG.mjs.map → chunk-5AC43UHU.mjs.map} +1 -1
  11. package/dist/{chunk-FXXYC73W.mjs → chunk-5BACX5CP.mjs} +4 -4
  12. package/dist/{chunk-FXXYC73W.mjs.map → chunk-5BACX5CP.mjs.map} +1 -1
  13. package/dist/{chunk-5RG53WIK.js → chunk-5DFEMKK5.js} +10 -10
  14. package/dist/{chunk-5RG53WIK.js.map → chunk-5DFEMKK5.js.map} +1 -1
  15. package/dist/{chunk-QFXRHPBU.mjs → chunk-5FIUO3RY.mjs} +3 -3
  16. package/dist/{chunk-QFXRHPBU.mjs.map → chunk-5FIUO3RY.mjs.map} +1 -1
  17. package/dist/{chunk-FPDVVACE.mjs → chunk-64X5LNXF.mjs} +4 -4
  18. package/dist/{chunk-FPDVVACE.mjs.map → chunk-64X5LNXF.mjs.map} +1 -1
  19. package/dist/{chunk-V6YCJSYT.js → chunk-66QZFBTI.js} +10 -10
  20. package/dist/{chunk-V6YCJSYT.js.map → chunk-66QZFBTI.js.map} +1 -1
  21. package/dist/{chunk-M7BOLJLW.mjs → chunk-6NLW2VHE.mjs} +4 -4
  22. package/dist/{chunk-M7BOLJLW.mjs.map → chunk-6NLW2VHE.mjs.map} +1 -1
  23. package/dist/{chunk-PNG74DNV.js → chunk-7SMQLCIU.js} +8 -8
  24. package/dist/{chunk-PNG74DNV.js.map → chunk-7SMQLCIU.js.map} +1 -1
  25. package/dist/{chunk-5VRVKCOW.js → chunk-7SRJ4UVY.js} +5 -5
  26. package/dist/{chunk-5VRVKCOW.js.map → chunk-7SRJ4UVY.js.map} +1 -1
  27. package/dist/{chunk-7EBAE24K.mjs → chunk-A2U72HLY.mjs} +5 -5
  28. package/dist/{chunk-7EBAE24K.mjs.map → chunk-A2U72HLY.mjs.map} +1 -1
  29. package/dist/{chunk-YRR6BOGQ.js → chunk-AJNQDMWF.js} +4 -4
  30. package/dist/{chunk-YRR6BOGQ.js.map → chunk-AJNQDMWF.js.map} +1 -1
  31. package/dist/{chunk-TCTMCVHJ.mjs → chunk-BY4VPPA4.mjs} +3 -3
  32. package/dist/{chunk-TCTMCVHJ.mjs.map → chunk-BY4VPPA4.mjs.map} +1 -1
  33. package/dist/{chunk-NYZXNKMS.js → chunk-DHWGICRP.js} +9 -9
  34. package/dist/{chunk-NYZXNKMS.js.map → chunk-DHWGICRP.js.map} +1 -1
  35. package/dist/{chunk-OZEYZNU6.js → chunk-DQMKMRE4.js} +6 -6
  36. package/dist/{chunk-OZEYZNU6.js.map → chunk-DQMKMRE4.js.map} +1 -1
  37. package/dist/{chunk-HNVTREZD.mjs → chunk-GNRWMXHN.mjs} +48 -7
  38. package/dist/chunk-GNRWMXHN.mjs.map +1 -0
  39. package/dist/{chunk-WWAUCHWD.mjs → chunk-HCOJH3W3.mjs} +3 -2
  40. package/dist/chunk-HCOJH3W3.mjs.map +1 -0
  41. package/dist/{chunk-QHH6MT2S.js → chunk-JSKNG7Y2.js} +13 -13
  42. package/dist/{chunk-QHH6MT2S.js.map → chunk-JSKNG7Y2.js.map} +1 -1
  43. package/dist/{chunk-V6VOF4DT.js → chunk-KAQJWVXS.js} +7 -7
  44. package/dist/{chunk-V6VOF4DT.js.map → chunk-KAQJWVXS.js.map} +1 -1
  45. package/dist/{chunk-PPFIVMB7.mjs → chunk-KKJDF3EL.mjs} +4 -4
  46. package/dist/{chunk-PPFIVMB7.mjs.map → chunk-KKJDF3EL.mjs.map} +1 -1
  47. package/dist/{chunk-IRKLU5NI.js → chunk-KTK5EPQP.js} +7 -7
  48. package/dist/{chunk-IRKLU5NI.js.map → chunk-KTK5EPQP.js.map} +1 -1
  49. package/dist/{chunk-KW76HGQL.js → chunk-LL7PZ6Q3.js} +54 -12
  50. package/dist/chunk-LL7PZ6Q3.js.map +1 -0
  51. package/dist/{chunk-ZX5SLGGV.mjs → chunk-LT52N2KJ.mjs} +4 -4
  52. package/dist/{chunk-ZX5SLGGV.mjs.map → chunk-LT52N2KJ.mjs.map} +1 -1
  53. package/dist/{chunk-CN4WRFCH.js → chunk-LWEX5XQF.js} +6 -6
  54. package/dist/{chunk-CN4WRFCH.js.map → chunk-LWEX5XQF.js.map} +1 -1
  55. package/dist/{chunk-H7MLCJ27.mjs → chunk-MM7MT37Y.mjs} +2 -2
  56. package/dist/chunk-MM7MT37Y.mjs.map +1 -0
  57. package/dist/{chunk-7EHLO6NI.js → chunk-NZNTB5OI.js} +2 -2
  58. package/dist/chunk-NZNTB5OI.js.map +1 -0
  59. package/dist/{chunk-QBT62V5L.js → chunk-OP2XWWSV.js} +4 -4
  60. package/dist/{chunk-QBT62V5L.js.map → chunk-OP2XWWSV.js.map} +1 -1
  61. package/dist/{chunk-CSALA64D.mjs → chunk-PGTOBPHI.mjs} +3 -3
  62. package/dist/{chunk-CSALA64D.mjs.map → chunk-PGTOBPHI.mjs.map} +1 -1
  63. package/dist/{chunk-PBA3F3M7.mjs → chunk-QK3COHER.mjs} +3 -3
  64. package/dist/{chunk-PBA3F3M7.mjs.map → chunk-QK3COHER.mjs.map} +1 -1
  65. package/dist/{chunk-UCEPFTZV.js → chunk-QTSZWDZR.js} +5 -5
  66. package/dist/{chunk-UCEPFTZV.js.map → chunk-QTSZWDZR.js.map} +1 -1
  67. package/dist/{chunk-YHRTDEEI.mjs → chunk-RS74LVAT.mjs} +4 -4
  68. package/dist/{chunk-YHRTDEEI.mjs.map → chunk-RS74LVAT.mjs.map} +1 -1
  69. package/dist/{chunk-VKVWIEDG.mjs → chunk-SRSVD5AT.mjs} +4 -4
  70. package/dist/{chunk-VKVWIEDG.mjs.map → chunk-SRSVD5AT.mjs.map} +1 -1
  71. package/dist/{chunk-7MGAHY2M.js → chunk-SVXJ2IPG.js} +8 -8
  72. package/dist/{chunk-7MGAHY2M.js.map → chunk-SVXJ2IPG.js.map} +1 -1
  73. package/dist/{chunk-7IHOZOXC.mjs → chunk-TMSEACN2.mjs} +4 -4
  74. package/dist/{chunk-7IHOZOXC.mjs.map → chunk-TMSEACN2.mjs.map} +1 -1
  75. package/dist/{chunk-JLIAKJCK.js → chunk-VREEDSRE.js} +4 -4
  76. package/dist/{chunk-JLIAKJCK.js.map → chunk-VREEDSRE.js.map} +1 -1
  77. package/dist/{chunk-WRQWJDO2.js → chunk-VZV24VNK.js} +6 -6
  78. package/dist/{chunk-WRQWJDO2.js.map → chunk-VZV24VNK.js.map} +1 -1
  79. package/dist/{chunk-U2Z6DGHD.js → chunk-WXODIWH7.js} +3 -2
  80. package/dist/chunk-WXODIWH7.js.map +1 -0
  81. package/dist/{chunk-3SOVR6JL.js → chunk-XLKTIQTD.js} +8 -8
  82. package/dist/{chunk-3SOVR6JL.js.map → chunk-XLKTIQTD.js.map} +1 -1
  83. package/dist/{chunk-RO5ZFFUR.js → chunk-YWRVGG7Q.js} +6 -6
  84. package/dist/{chunk-RO5ZFFUR.js.map → chunk-YWRVGG7Q.js.map} +1 -1
  85. package/dist/components/AdvancedPickers.js +7 -7
  86. package/dist/components/AdvancedPickers.mjs +3 -3
  87. package/dist/components/AppShell.js +4 -4
  88. package/dist/components/AppShell.mjs +2 -2
  89. package/dist/components/Comments.js +6 -6
  90. package/dist/components/Comments.mjs +3 -3
  91. package/dist/components/Commerce.js +15 -15
  92. package/dist/components/Commerce.mjs +4 -4
  93. package/dist/components/DataTable.d.mts +35 -2
  94. package/dist/components/DataTable.d.ts +35 -2
  95. package/dist/components/DataTable.js +20 -10
  96. package/dist/components/DataTable.mjs +10 -4
  97. package/dist/components/Display.js +13 -13
  98. package/dist/components/Display.mjs +2 -2
  99. package/dist/components/Display3.js +8 -8
  100. package/dist/components/Display3.mjs +2 -2
  101. package/dist/components/Editing.js +8 -8
  102. package/dist/components/Editing.mjs +3 -3
  103. package/dist/components/Filters.js +9 -9
  104. package/dist/components/Filters.mjs +3 -3
  105. package/dist/components/Gallery.js +5 -5
  106. package/dist/components/Gallery.mjs +3 -3
  107. package/dist/components/Inputs.js +7 -7
  108. package/dist/components/Inputs.mjs +3 -3
  109. package/dist/components/InputsExtra.js +12 -12
  110. package/dist/components/InputsExtra.mjs +3 -3
  111. package/dist/components/Notifications.js +4 -4
  112. package/dist/components/Notifications.mjs +3 -3
  113. package/dist/components/Overlay.js +4 -4
  114. package/dist/components/Overlay.mjs +2 -2
  115. package/dist/components/Permissions.js +4 -4
  116. package/dist/components/Permissions.mjs +3 -3
  117. package/dist/components/Pickers.js +8 -8
  118. package/dist/components/Pickers.mjs +3 -3
  119. package/dist/components/TimeAgo.js +6 -6
  120. package/dist/components/TimeAgo.mjs +4 -4
  121. package/dist/components/Toast.js +4 -4
  122. package/dist/components/Toast.mjs +2 -2
  123. package/dist/index.d.mts +2 -2
  124. package/dist/index.d.ts +2 -2
  125. package/dist/index.js +121 -117
  126. package/dist/index.mjs +23 -23
  127. package/dist/locale/index.d.mts +2 -2
  128. package/dist/locale/index.d.ts +2 -2
  129. package/dist/locale/index.js +6 -6
  130. package/dist/locale/index.mjs +2 -2
  131. package/dist/{messages-K0Cw7IAD.d.ts → messages-CT40Sck2.d.mts} +2 -0
  132. package/dist/{messages-K0Cw7IAD.d.mts → messages-CT40Sck2.d.ts} +2 -0
  133. package/dist/styles.css +1 -1
  134. package/dist/utils/smartTime.d.mts +1 -1
  135. package/dist/utils/smartTime.d.ts +1 -1
  136. package/dist/utils/smartTime.js +6 -6
  137. package/dist/utils/smartTime.mjs +2 -2
  138. package/package.json +1 -1
  139. package/dist/chunk-7EHLO6NI.js.map +0 -1
  140. package/dist/chunk-H7MLCJ27.mjs.map +0 -1
  141. package/dist/chunk-HNVTREZD.mjs.map +0 -1
  142. package/dist/chunk-KW76HGQL.js.map +0 -1
  143. package/dist/chunk-U2Z6DGHD.js.map +0 -1
  144. package/dist/chunk-WWAUCHWD.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/locale/es.ts","../src/locale/LocaleProvider.tsx"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAM,UAAA,GAA4B;AAAA;AAAA,EAEvC,cAAA,EAAgB,QAAA;AAAA,EAChB,eAAA,EAAiB,UAAA;AAAA,EACjB,gBAAA,EAAkB,WAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,QAAA;AAAA,EACf,cAAA,EAAgB,UAAA;AAAA,EAChB,gBAAA,EAAkB,UAAA;AAAA,EAClB,eAAA,EAAiB,cAAA;AAAA,EACjB,kBAAA,EAAoB,gBAAA;AAAA;AAAA,EAGpB,aAAA,EAAe,QAAA;AAAA,EACf,cAAA,EAAgB,QAAA;AAAA,EAChB,aAAA,EAAe,QAAA;AAAA;AAAA,EAGf,aAAA,EAAe,WAAA;AAAA,EACf,iBAAA,EAAmB,kBAAA;AAAA,EACnB,iBAAA,EAAmB,qBAAA;AAAA,EACnB,iBAAA,EAAmB,aAAA;AAAA,EACnB,iBAAA,EAAmB,6BAAA;AAAA,EACnB,oBAAA,EAAsB,SAAA;AAAA,EACtB,eAAA,EAAiB,UAAA;AAAA;AAAA,EAGjB,kBAAA,EAAoB,yBAAA;AAAA,EACpB,qBAAA,EAAuB,YAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA;AAAA,EAGvB,aAAA,EAAe,OAAA;AAAA,EACf,cAAA,EAAgB,QAAA;AAAA,EAChB,gBAAA,EAAkB,cAAA;AAAA,EAClB,eAAA,EAAiB,YAAA;AAAA,EACjB,eAAA,EAAiB,KAAA;AAAA,EACjB,mBAAA,EAAqB,MAAA;AAAA,EACrB,kBAAA,EAAoB,WAAA;AAAA,EACpB,uBAAA,EAAyB,CAAC,KAAA,EAAO,KAAA,EAAO,OAAO,QAAA,EAAO,KAAA,EAAO,OAAO,QAAK,CAAA;AAAA,EACzE,qBAAA,EAAuB,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA;AAAA,EAG1G,sBAAA,EAAwB,gBAAA;AAAA,EACxB,4BAAA,EAA8B,iBAAA;AAAA,EAC9B,qBAAA,EAAuB,0BAAA;AAAA,EACvB,qBAAA,EAAuB,gBAAA;AAAA,EACvB,qBAAA,EAAuB,gBAAA;AAAA,EACvB,2BAAA,EAA6B,6BAAA;AAAA,EAC7B,qBAAA,EAAuB,SAAA;AAAA;AAAA,EAGvB,eAAA,EAAiB,SAAA;AAAA,EACjB,eAAA,EAAiB,SAAA;AAAA,EACjB,qBAAA,EAAuB,kBAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,gBAAA,EAAkB,aAAA;AAAA,EAClB,qBAAA,EAAuB,kBAAA;AAAA,EACvB,sBAAA,EAAwB,mBAAA;AAAA;AAAA,EAGxB,oBAAA,EAAsB,aAAA;AAAA,EACtB,mBAAA,EAAqB,WAAA;AAAA,EACrB,yBAAA,EAA2B,uBAAA;AAAA,EAC3B,yBAAA,EAA2B,sBAAA;AAAA,EAC3B,gBAAA,EAAkB,UAAA;AAAA,EAClB,eAAA,EAAiB,QAAA;AAAA,EACjB,YAAA,EAAc,SAAA;AAAA,EACd,YAAA,EAAc,OAAA;AAAA,EACd,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAc,YAAA;AAAA;AAAA,EAGd,qBAAA,EAAuB,cAAA;AAAA,EACvB,uBAAA,EAAyB,cAAA;AAAA,EACzB,oBAAA,EAAsB,WAAA;AAAA,EACtB,uBAAA,EAAyB,sBAAA;AAAA;AAAA,EAGzB,sBAAA,EAAwB,6BAAA;AAAA,EACxB,eAAA,EAAiB,QAAA;AAAA,EACjB,sBAAA,EAAwB,cAAA;AAAA,EACxB,uBAAA,EAAyB,mBAAA;AAAA,EACzB,mBAAA,EAAqB,uBAAA;AAAA,EACrB,oBAAA,EAAsB,iBAAA;AAAA,EACtB,sBAAA,EAAwB,kBAAA;AAAA;AAAA,EAGxB,oBAAA,EAAsB,YAAA;AAAA,EACtB,gBAAA,EAAkB,iBAAA;AAAA,EAClB,cAAA,EAAgB,iBAAA;AAAA,EAChB,cAAA,EAAgB,kBAAA;AAAA,EAChB,eAAA,EAAiB,QAAA;AAAA,EACjB,qBAAA,EAAuB,YAAA;AAAA;AAAA,EAGvB,aAAA,EAAe,eAAA;AAAA,EACf,iBAAA,EAAmB,UAAA;AAAA,EACnB,aAAA,EAAe,QAAA;AAAA;AAAA,EAGf,oBAAA,EAAsB,cAAA;AAAA,EACtB,oBAAA,EAAsB,eAAA;AAAA,EACtB,iBAAA,EAAmB,UAAA;AAAA,EACnB,mBAAA,EAAqB,UAAA;AAAA,EACrB,mBAAA,EAAqB,CAAC,KAAA,EAAO,KAAA,EAAO,UAAO,KAAA,EAAO,KAAA,EAAO,UAAO,KAAK,CAAA;AAAA,EACrE,iBAAA,EAAmB;AAAA,IACjB,OAAA;AAAA,IAAS,SAAA;AAAA,IAAW,OAAA;AAAA,IAAS,OAAA;AAAA,IAAS,MAAA;AAAA,IAAQ,OAAA;AAAA,IAC9C,OAAA;AAAA,IAAS,QAAA;AAAA,IAAU,YAAA;AAAA,IAAc,SAAA;AAAA,IAAW,WAAA;AAAA,IAAa;AAAA,GAC3D;AAAA;AAAA,EAGA,qBAAA,EAAuB,kBAAA;AAAA,EACvB,uBAAA,EAAyB,sBAAA;AAAA,EACzB,oBAAA,EAAsB,mBAAA;AAAA,EACtB,uBAAA,EAAyB,uBAAA;AAAA,EACzB,uBAAA,EAAyB,oBAAA;AAAA,EACzB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,iBAAA,EAAmB,kBAAA;AAAA,EACnB,mBAAA,EAAqB,oBAAA;AAAA,EACrB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,oBAAA,EAAsB,mBAAA;AAAA,EACtB,sBAAA,EAAwB,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAAA,EAC1D,iBAAA,EAAmB,gBAAA;AAAA,EACnB,kBAAA,EAAoB,8BAAA;AAAA;AAAA,EAGpB,kBAAA,EAAoB,eAAA;AAAA,EACpB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,iBAAA,EAAmB,qBAAA;AAAA,EACnB,kBAAA,EAAoB,6BAAA;AAAA,EACpB,wBAAA,EAA0B,qBAAA;AAAA,EAC1B,uBAAA,EAAyB,WAAA;AAAA,EACzB,uBAAA,EAAyB,UAAA;AAAA;AAAA,EAGzB,mBAAA,EAAqB,UAAA;AAAA,EACrB,sBAAA,EAAwB,oBAAA;AAAA,EACxB,sBAAA,EAAwB,mBAAA;AAAA,EACxB,yBAAA,EAA2B,kBAAA;AAAA,EAC3B,qBAAA,EAAuB,eAAA;AAAA,EACvB,sBAAA,EAAwB,qBAAA;AAAA,EACxB,yBAAA,EAA2B,qBAAA;AAAA,EAC3B,sBAAA,EAAwB,SAAA;AAAA,EACxB,oBAAA,EAAsB,UAAA;AAAA,EACtB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,mBAAA,EAAqB,UAAA;AAAA,EACrB,mBAAA,EAAqB,YAAA;AAAA,EACrB,2BAAA,EAA6B,uBAAA;AAAA,EAC7B,uBAAA,EAAyB,uBAAA;AAAA,EACzB,2BAAA,EAA6B,6BAAA;AAAA,EAC7B,yBAAA,EAA2B,WAAA;AAAA,EAC3B,yBAAA,EAA2B,uBAAA;AAAA;AAAA,EAG3B,kBAAA,EAAoB,cAAA;AAAA,EACpB,uBAAA,EAAyB;AAC3B;AC5JA,IAAM,aAAA,GAAsBA,+BAAoC,IAAI,CAAA;AAW7D,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,QAAA,EAAS,EAAwB;AAC1E,EAAA,MAAM,MAAA,GAAeA,gBAAA,CAAA,OAAA;AAAA,IACnB,MAAO,QAAA,GAAW,EAAE,GAAG,UAAA,EAAY,GAAG,UAAS,GAAI,UAAA;AAAA,IACnD,CAAC,QAAQ;AAAA,GACX;AACA,EAAA,sCAAQ,aAAA,CAAc,QAAA,EAAd,EAAuB,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AAC1D;AAOO,SAAS,SAAA,GAA2B;AACzC,EAAA,OAAaA,gBAAA,CAAA,UAAA,CAAW,aAAa,CAAA,IAAK,UAAA;AAC5C","file":"chunk-WXODIWH7.js","sourcesContent":["import type { UiKitMessages } from './messages';\n\nexport const esMessages: UiKitMessages = {\n // Generic actions\n 'common.close': 'Cerrar',\n 'common.cancel': 'Cancelar',\n 'common.confirm': 'Confirmar',\n 'common.apply': 'Aplicar',\n 'common.clear': 'Limpiar',\n 'common.edit': 'Editar',\n 'common.empty': 'Vacío',\n 'common.loading': 'Cargando',\n 'common.search': 'Buscar…',\n 'common.noResults': 'Sin resultados',\n\n // Overlay\n 'modal.close': 'Cerrar',\n 'drawer.close': 'Cerrar',\n 'toast.close': 'Cerrar',\n\n // DataTable\n 'table.empty': 'Sin datos',\n 'table.selectAll': 'Seleccionar todo',\n 'table.selectRow': 'Seleccionar {label}',\n 'table.rowAction': 'Ver {label}',\n 'table.expandRow': 'Expandir detalle de {label}',\n 'table.expandColumn': 'Detalle',\n 'table.columns': 'Columnas',\n\n // AppShell\n 'appshell.mainNav': 'Navegación principal',\n 'appshell.breadcrumb': 'Breadcrumb',\n 'appshell.toggleMenu': 'Abrir menú',\n\n // TimeAgo\n 'timeAgo.now': 'ahora',\n 'timeAgo.soon': 'pronto',\n 'timeAgo.minAgo': 'hace {n} min',\n 'timeAgo.minIn': 'en {n} min',\n 'timeAgo.today': 'hoy',\n 'timeAgo.yesterday': 'ayer',\n 'timeAgo.tomorrow': 'mañana',\n 'timeAgo.weekdaysShort': ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],\n 'timeAgo.monthsShort': ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],\n\n // Notifications\n 'notifications.button': 'Notificaciones',\n 'notifications.unreadSuffix': ' ({n} sin leer)',\n 'notifications.empty': 'No tienes notificaciones',\n 'notifications.panel': 'Notificaciones',\n 'notifications.title': 'Notificaciones',\n 'notifications.markAllRead': 'Marcar todas como leídas',\n 'notifications.clear': 'Limpiar',\n\n // Filters\n 'filters.panel': 'Filtros',\n 'filters.clear': 'Limpiar',\n 'filters.bulkActions': 'Acciones en lote',\n 'filters.deselectAll': 'Deseleccionar todo',\n 'filters.sortBy': 'Ordenar por',\n 'filters.selectedOne': '{n} seleccionado',\n 'filters.selectedMany': '{n} seleccionados',\n\n // Editing\n 'transfer.available': 'Disponibles',\n 'transfer.assigned': 'Asignados',\n 'transfer.assignSelected': 'Asignar seleccionados',\n 'transfer.removeSelected': 'Quitar seleccionados',\n 'transfer.empty': 'Vacío',\n 'descList.edit': 'Editar',\n 'diff.label': 'Cambios',\n 'diff.field': 'Campo',\n 'diff.before': 'Antes',\n 'diff.after': 'Después',\n\n // Permissions\n 'permissions.markAll': 'Marcar todos',\n 'permissions.unmarkAll': 'Quitar todos',\n 'permissions.action': 'Acción',\n 'permissions.cellLabel': '{action} para {role}',\n\n // Comments\n 'comments.placeholder': 'Escribe un comentario…',\n 'comments.send': 'Enviar',\n 'comments.internalTag': 'Nota interna',\n 'comments.internalOnly': 'Solo nota interna',\n 'attachments.empty': 'Sin archivos adjuntos',\n 'attachments.remove': 'Eliminar {name}',\n 'attachments.download': 'Descargar {name}',\n\n // Gallery\n 'gallery.thumbnails': 'Miniaturas',\n 'gallery.viewer': 'Visor de imagen',\n 'gallery.prev': 'Imagen anterior',\n 'gallery.next': 'Imagen siguiente',\n 'gallery.close': 'Cerrar',\n 'gallery.imageNumber': 'Imagen {n}',\n\n // Display\n 'alert.close': 'Cerrar alerta',\n 'spinner.loading': 'Cargando',\n 'chip.remove': 'Quitar',\n\n // Display3 — Calendar\n 'calendar.prevMonth': 'Mes anterior',\n 'calendar.nextMonth': 'Mes siguiente',\n 'calendar.expand': 'Expandir',\n 'calendar.collapse': 'Colapsar',\n 'calendar.weekdays': ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'],\n 'calendar.months': [\n 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',\n 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre',\n ],\n\n // Pickers\n 'picker.openCalendar': 'Abrir calendario',\n 'picker.clearSelection': 'Limpiar selección',\n 'picker.selectRange': 'Seleccionar rango',\n 'picker.searchCommands': 'Buscar comandos…',\n 'picker.commandPalette': 'Paleta de comandos',\n 'picker.prevYear': 'Año anterior',\n 'picker.nextYear': 'Año siguiente',\n 'picker.prevDecade': 'Década anterior',\n 'picker.nextDecade': 'Década siguiente',\n 'picker.selectYear': 'Selecciona el año',\n 'picker.selectMonth': 'Selecciona el mes',\n 'picker.weekdaysShort': ['L', 'M', 'M', 'J', 'V', 'S', 'D'],\n 'combobox.remove': 'Quitar {label}',\n 'fileUpload.title': 'Arrastra archivos o haz clic',\n\n // Inputs\n 'pagination.label': 'Paginación',\n 'pagination.prev': 'Página anterior',\n 'pagination.next': 'Página siguiente',\n 'pagination.range': '{from}–{to} de {total}',\n 'pagination.rowsPerPage': 'Filas por página',\n 'numberInput.decrement': 'Disminuir',\n 'numberInput.increment': 'Aumentar',\n\n // Commerce\n 'commerce.quantity': 'Cantidad',\n 'commerce.decreaseQty': 'Disminuir cantidad',\n 'commerce.increaseQty': 'Aumentar cantidad',\n 'commerce.removeFromCart': 'Quitar del carro',\n 'commerce.removeItem': 'Quitar {name}',\n 'commerce.addFavorite': 'Agregar a favoritos',\n 'commerce.removeFavorite': 'Quitar de favoritos',\n 'commerce.applyCoupon': 'Aplicar',\n 'commerce.cartTitle': 'Tu carro',\n 'commerce.cartEmpty': 'Tu carro está vacío',\n 'commerce.subtotal': 'Subtotal',\n 'commerce.checkout': 'Ir a pagar',\n 'commerce.promoPlaceholder': 'Código promocional',\n 'commerce.promoInvalid': 'Código inválido',\n 'commerce.shippingAchieved': '¡Tienes envío gratis!',\n 'commerce.shippingPrefix': 'Te falta ',\n 'commerce.shippingSuffix': ' para envío gratis',\n\n // Tags input\n 'tagsInput.remove': 'Quitar {tag}',\n 'tagsInput.placeholder': 'Escribe y Enter…',\n};\n","'use client';\nimport * as React from 'react';\nimport type { UiKitMessages } from './messages';\nimport { esMessages } from './es';\n\nconst LocaleContext = React.createContext<UiKitMessages | null>(null);\n\nexport interface LocaleProviderProps {\n /**\n * Partial dict of overrides. Missing keys fall back to `esMessages`,\n * so consumers can translate just a few strings without re-declaring all.\n */\n messages?: Partial<UiKitMessages>;\n children: React.ReactNode;\n}\n\nexport function LocaleProvider({ messages, children }: LocaleProviderProps) {\n const merged = React.useMemo<UiKitMessages>(\n () => (messages ? { ...esMessages, ...messages } : esMessages),\n [messages]\n );\n return <LocaleContext.Provider value={merged}>{children}</LocaleContext.Provider>;\n}\n\n/**\n * Returns the active messages dict. Falls back to `esMessages` when no\n * `<LocaleProvider>` is present in the tree, so components remain usable\n * standalone.\n */\nexport function useLocale(): UiKitMessages {\n return React.useContext(LocaleContext) ?? esMessages;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk7EHLO6NI_js = require('./chunk-7EHLO6NI.js');
5
- var chunkU2Z6DGHD_js = require('./chunk-U2Z6DGHD.js');
4
+ var chunkNZNTB5OI_js = require('./chunk-NZNTB5OI.js');
5
+ var chunkWXODIWH7_js = require('./chunk-WXODIWH7.js');
6
6
  var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
7
7
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
8
8
  var React = require('react');
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
29
29
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
30
 
31
31
  function FilterPanel({ title, onClearAll, activeCount, className, children, ...rest }) {
32
- const t = chunkU2Z6DGHD_js.useLocale();
32
+ const t = chunkWXODIWH7_js.useLocale();
33
33
  const heading = title ?? t["filters.panel"];
34
34
  return /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: chunkPASF6T4H_js.cx("filter-panel", className), "aria-label": t["filters.panel"], ...rest, children: [
35
35
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "filter-panel__head", children: [
@@ -62,9 +62,9 @@ function FilterSection({ title, defaultOpen = true, children, className, ...rest
62
62
  ] });
63
63
  }
64
64
  function BulkActionBar({ selectedCount, label, onClear, className, children, ...rest }) {
65
- const t = chunkU2Z6DGHD_js.useLocale();
65
+ const t = chunkWXODIWH7_js.useLocale();
66
66
  if (selectedCount <= 0) return null;
67
- const countText = chunk7EHLO6NI_js.format(
67
+ const countText = chunkNZNTB5OI_js.format(
68
68
  selectedCount === 1 ? t["filters.selectedOne"] : t["filters.selectedMany"],
69
69
  { n: selectedCount }
70
70
  );
@@ -84,7 +84,7 @@ function SortDropdown({
84
84
  className,
85
85
  id
86
86
  }) {
87
- const t = chunkU2Z6DGHD_js.useLocale();
87
+ const t = chunkWXODIWH7_js.useLocale();
88
88
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkPASF6T4H_js.cx("sort-dropdown", className), children: [
89
89
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sort-dropdown__label", children: label ?? t["filters.sortBy"] }),
90
90
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -147,5 +147,5 @@ exports.FilterField = FilterField;
147
147
  exports.FilterPanel = FilterPanel;
148
148
  exports.FilterSection = FilterSection;
149
149
  exports.SortDropdown = SortDropdown;
150
- //# sourceMappingURL=chunk-3SOVR6JL.js.map
151
- //# sourceMappingURL=chunk-3SOVR6JL.js.map
150
+ //# sourceMappingURL=chunk-XLKTIQTD.js.map
151
+ //# sourceMappingURL=chunk-XLKTIQTD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Filters.tsx"],"names":["useLocale","jsxs","cx","jsx","React","ChevronUp","ChevronDown","format","X"],"mappings":"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","file":"chunk-3SOVR6JL.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronDown, ChevronUp, X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\n// ---------- FilterPanel -------------------------------------------------\nexport interface FilterPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n onClearAll?: () => void;\n activeCount?: number;\n}\n\nexport function FilterPanel({ title, onClearAll, activeCount, className, children, ...rest }: FilterPanelProps) {\n const t = useLocale();\n const heading = title ?? t['filters.panel'];\n return (\n <aside className={cx('filter-panel', className)} aria-label={t['filters.panel']} {...rest}>\n <div className=\"filter-panel__head\">\n <span className=\"filter-panel__title\">\n {heading}\n {typeof activeCount === 'number' && activeCount > 0 && (\n <span className=\"filter-panel__count\">{activeCount}</span>\n )}\n </span>\n {onClearAll && activeCount !== undefined && activeCount > 0 && (\n <button type=\"button\" className=\"filter-panel__clear\" onClick={onClearAll}>\n {t['filters.clear']}\n </button>\n )}\n </div>\n <div className=\"filter-panel__body\">{children}</div>\n </aside>\n );\n}\n\nexport interface FilterSectionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title: React.ReactNode;\n defaultOpen?: boolean;\n}\n\nexport function FilterSection({ title, defaultOpen = true, children, className, ...rest }: FilterSectionProps) {\n const [open, setOpen] = React.useState(defaultOpen);\n return (\n <div className={cx('filter-section', className)} {...rest}>\n <button\n type=\"button\"\n className=\"filter-section__head\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <span>{title}</span>\n {open ? <ChevronUp size={14} /> : <ChevronDown size={14} />}\n </button>\n {open && <div className=\"filter-section__body\">{children}</div>}\n </div>\n );\n}\n\n// ---------- BulkActionBar ----------------------------------------------\nexport interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Cantidad de items seleccionados. La barra se oculta si es 0. */\n selectedCount: number;\n /** Texto opcional, default: \"{N} seleccionado(s)\". */\n label?: React.ReactNode;\n onClear?: () => void;\n}\n\nexport function BulkActionBar({ selectedCount, label, onClear, className, children, ...rest }: BulkActionBarProps) {\n const t = useLocale();\n if (selectedCount <= 0) return null;\n const countText = format(\n selectedCount === 1 ? t['filters.selectedOne'] : t['filters.selectedMany'],\n { n: selectedCount }\n );\n return (\n <div className={cx('bulk-bar', className)} role=\"region\" aria-label={t['filters.bulkActions']} {...rest}>\n <div className=\"bulk-bar__count\">\n {label ?? countText}\n {onClear && (\n <button type=\"button\" className=\"bulk-bar__clear\" aria-label={t['filters.deselectAll']} onClick={onClear}>\n <X size={14} />\n </button>\n )}\n </div>\n <div className=\"bulk-bar__actions\">{children}</div>\n </div>\n );\n}\n\n// ---------- SortDropdown -----------------------------------------------\nexport interface SortOption<T = string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface SortDropdownProps<T = string> {\n value: T;\n options: SortOption<T>[];\n onChange: (value: T) => void;\n label?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function SortDropdown<T extends string = string>({\n value, options, onChange, label, className, id,\n}: SortDropdownProps<T>) {\n const t = useLocale();\n return (\n <label className={cx('sort-dropdown', className)}>\n <span className=\"sort-dropdown__label\">{label ?? t['filters.sortBy']}</span>\n <select\n id={id}\n className=\"sort-dropdown__select select\"\n value={value}\n onChange={(e) => onChange(e.target.value as T)}\n >\n {options.map((o) => (\n <option key={String(o.value)} value={String(o.value)}>\n {typeof o.label === 'string' ? o.label : String(o.value)}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\n// ---------- FilterBar / FilterField ------------------------------------\n// Horizontal, dense filter row (the bar ON TOP of a table) — the counterpart\n// to FilterPanel's vertical facet sidebar. Without this, consumers hand-roll\n// a flex cluster: heterogeneous control heights + the kit's loud brand label\n// register make a 7-field row wrap and look ragged. FilterBar owns the grid,\n// applies `.fields--dense` (36px controls, kit-owned), and FilterField uses a\n// deliberately quiet label register — without mutating the global `--tt-label`\n// brand token, so forms elsewhere are untouched.\n\nexport interface FilterBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Right-aligned slot for row-level actions (e.g. clear-all, export). */\n actions?: React.ReactNode;\n /** Min column width (px) before the responsive grid wraps. Default 160. */\n minColWidth?: number;\n /**\n * Fixed column count instead of width-driven auto-fit. Use for a\n * deterministic N-up row rather than wrapping by available width.\n */\n columns?: number;\n}\n\nexport function FilterBar({\n actions, minColWidth = 160, columns, className, children, style, ...rest\n}: FilterBarProps): React.JSX.Element {\n const gridVars = {\n ...(columns ? { '--filter-cols': String(columns) } : { '--filter-col-min': `${minColWidth}px` }),\n ...style,\n } as React.CSSProperties;\n return (\n <div\n className={cx('filter-bar', 'fields--dense', columns ? 'filter-bar--fixed-cols' : undefined, className)}\n style={gridVars}\n {...rest}\n >\n <div className=\"filter-bar__fields\">{children}</div>\n {actions != null && <div className=\"filter-bar__actions\">{actions}</div>}\n </div>\n );\n}\n\nexport interface FilterFieldProps {\n label: React.ReactNode;\n /** Override the auto-generated id (when the control sets its own id). */\n htmlFor?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FilterField({\n label, htmlFor, children, className,\n}: FilterFieldProps): React.JSX.Element {\n const reactId = React.useId();\n // Effective id, in priority order: explicit htmlFor → the control's own id\n // → a generated one. Used for BOTH the label's `for` and the control, so a\n // consumer-set id stays authoritative and the label still points at it.\n const childId = React.isValidElement(children)\n ? (children.props as { id?: string }).id\n : undefined;\n const id = htmlFor ?? childId ?? reactId;\n const child = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement<{ id?: string }>, { id })\n : children;\n return (\n <div className={cx('filter-field', className)}>\n <label htmlFor={id} className=\"filter-field__label\">{label}</label>\n {child}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Filters.tsx"],"names":["useLocale","jsxs","cx","jsx","React","ChevronUp","ChevronDown","format","X"],"mappings":"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","file":"chunk-XLKTIQTD.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronDown, ChevronUp, X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\n// ---------- FilterPanel -------------------------------------------------\nexport interface FilterPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n onClearAll?: () => void;\n activeCount?: number;\n}\n\nexport function FilterPanel({ title, onClearAll, activeCount, className, children, ...rest }: FilterPanelProps) {\n const t = useLocale();\n const heading = title ?? t['filters.panel'];\n return (\n <aside className={cx('filter-panel', className)} aria-label={t['filters.panel']} {...rest}>\n <div className=\"filter-panel__head\">\n <span className=\"filter-panel__title\">\n {heading}\n {typeof activeCount === 'number' && activeCount > 0 && (\n <span className=\"filter-panel__count\">{activeCount}</span>\n )}\n </span>\n {onClearAll && activeCount !== undefined && activeCount > 0 && (\n <button type=\"button\" className=\"filter-panel__clear\" onClick={onClearAll}>\n {t['filters.clear']}\n </button>\n )}\n </div>\n <div className=\"filter-panel__body\">{children}</div>\n </aside>\n );\n}\n\nexport interface FilterSectionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title: React.ReactNode;\n defaultOpen?: boolean;\n}\n\nexport function FilterSection({ title, defaultOpen = true, children, className, ...rest }: FilterSectionProps) {\n const [open, setOpen] = React.useState(defaultOpen);\n return (\n <div className={cx('filter-section', className)} {...rest}>\n <button\n type=\"button\"\n className=\"filter-section__head\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <span>{title}</span>\n {open ? <ChevronUp size={14} /> : <ChevronDown size={14} />}\n </button>\n {open && <div className=\"filter-section__body\">{children}</div>}\n </div>\n );\n}\n\n// ---------- BulkActionBar ----------------------------------------------\nexport interface BulkActionBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Cantidad de items seleccionados. La barra se oculta si es 0. */\n selectedCount: number;\n /** Texto opcional, default: \"{N} seleccionado(s)\". */\n label?: React.ReactNode;\n onClear?: () => void;\n}\n\nexport function BulkActionBar({ selectedCount, label, onClear, className, children, ...rest }: BulkActionBarProps) {\n const t = useLocale();\n if (selectedCount <= 0) return null;\n const countText = format(\n selectedCount === 1 ? t['filters.selectedOne'] : t['filters.selectedMany'],\n { n: selectedCount }\n );\n return (\n <div className={cx('bulk-bar', className)} role=\"region\" aria-label={t['filters.bulkActions']} {...rest}>\n <div className=\"bulk-bar__count\">\n {label ?? countText}\n {onClear && (\n <button type=\"button\" className=\"bulk-bar__clear\" aria-label={t['filters.deselectAll']} onClick={onClear}>\n <X size={14} />\n </button>\n )}\n </div>\n <div className=\"bulk-bar__actions\">{children}</div>\n </div>\n );\n}\n\n// ---------- SortDropdown -----------------------------------------------\nexport interface SortOption<T = string> {\n value: T;\n label: React.ReactNode;\n}\n\nexport interface SortDropdownProps<T = string> {\n value: T;\n options: SortOption<T>[];\n onChange: (value: T) => void;\n label?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function SortDropdown<T extends string = string>({\n value, options, onChange, label, className, id,\n}: SortDropdownProps<T>) {\n const t = useLocale();\n return (\n <label className={cx('sort-dropdown', className)}>\n <span className=\"sort-dropdown__label\">{label ?? t['filters.sortBy']}</span>\n <select\n id={id}\n className=\"sort-dropdown__select select\"\n value={value}\n onChange={(e) => onChange(e.target.value as T)}\n >\n {options.map((o) => (\n <option key={String(o.value)} value={String(o.value)}>\n {typeof o.label === 'string' ? o.label : String(o.value)}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\n// ---------- FilterBar / FilterField ------------------------------------\n// Horizontal, dense filter row (the bar ON TOP of a table) — the counterpart\n// to FilterPanel's vertical facet sidebar. Without this, consumers hand-roll\n// a flex cluster: heterogeneous control heights + the kit's loud brand label\n// register make a 7-field row wrap and look ragged. FilterBar owns the grid,\n// applies `.fields--dense` (36px controls, kit-owned), and FilterField uses a\n// deliberately quiet label register — without mutating the global `--tt-label`\n// brand token, so forms elsewhere are untouched.\n\nexport interface FilterBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Right-aligned slot for row-level actions (e.g. clear-all, export). */\n actions?: React.ReactNode;\n /** Min column width (px) before the responsive grid wraps. Default 160. */\n minColWidth?: number;\n /**\n * Fixed column count instead of width-driven auto-fit. Use for a\n * deterministic N-up row rather than wrapping by available width.\n */\n columns?: number;\n}\n\nexport function FilterBar({\n actions, minColWidth = 160, columns, className, children, style, ...rest\n}: FilterBarProps): React.JSX.Element {\n const gridVars = {\n ...(columns ? { '--filter-cols': String(columns) } : { '--filter-col-min': `${minColWidth}px` }),\n ...style,\n } as React.CSSProperties;\n return (\n <div\n className={cx('filter-bar', 'fields--dense', columns ? 'filter-bar--fixed-cols' : undefined, className)}\n style={gridVars}\n {...rest}\n >\n <div className=\"filter-bar__fields\">{children}</div>\n {actions != null && <div className=\"filter-bar__actions\">{actions}</div>}\n </div>\n );\n}\n\nexport interface FilterFieldProps {\n label: React.ReactNode;\n /** Override the auto-generated id (when the control sets its own id). */\n htmlFor?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FilterField({\n label, htmlFor, children, className,\n}: FilterFieldProps): React.JSX.Element {\n const reactId = React.useId();\n // Effective id, in priority order: explicit htmlFor → the control's own id\n // → a generated one. Used for BOTH the label's `for` and the control, so a\n // consumer-set id stays authoritative and the label still points at it.\n const childId = React.isValidElement(children)\n ? (children.props as { id?: string }).id\n : undefined;\n const id = htmlFor ?? childId ?? reactId;\n const child = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement<{ id?: string }>, { id })\n : children;\n return (\n <div className={cx('filter-field', className)}>\n <label htmlFor={id} className=\"filter-field__label\">{label}</label>\n {child}\n </div>\n );\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk7EHLO6NI_js = require('./chunk-7EHLO6NI.js');
5
- var chunkU2Z6DGHD_js = require('./chunk-U2Z6DGHD.js');
4
+ var chunkNZNTB5OI_js = require('./chunk-NZNTB5OI.js');
5
+ var chunkWXODIWH7_js = require('./chunk-WXODIWH7.js');
6
6
  var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
7
7
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
8
8
  var React = require('react');
@@ -38,7 +38,7 @@ function NotificationCenter({
38
38
  }) {
39
39
  const [open, setOpen] = React__namespace.useState(false);
40
40
  const ref = React__namespace.useRef(null);
41
- const t = chunkU2Z6DGHD_js.useLocale();
41
+ const t = chunkWXODIWH7_js.useLocale();
42
42
  const unread = notifications.filter((n) => !n.read).length;
43
43
  const empty = emptyMessage ?? t["notifications.empty"];
44
44
  React__namespace.useEffect(() => {
@@ -68,7 +68,7 @@ function NotificationCenter({
68
68
  {
69
69
  type: "button",
70
70
  className: "notif__trigger",
71
- "aria-label": `${t["notifications.button"]}${unread > 0 ? chunk7EHLO6NI_js.format(t["notifications.unreadSuffix"], { n: unread }) : ""}`,
71
+ "aria-label": `${t["notifications.button"]}${unread > 0 ? chunkNZNTB5OI_js.format(t["notifications.unreadSuffix"], { n: unread }) : ""}`,
72
72
  "aria-haspopup": "dialog",
73
73
  "aria-expanded": open,
74
74
  onClick: () => setOpen((o) => !o),
@@ -113,5 +113,5 @@ function NotificationCenter({
113
113
  }
114
114
 
115
115
  exports.NotificationCenter = NotificationCenter;
116
- //# sourceMappingURL=chunk-RO5ZFFUR.js.map
117
- //# sourceMappingURL=chunk-RO5ZFFUR.js.map
116
+ //# sourceMappingURL=chunk-YWRVGG7Q.js.map
117
+ //# sourceMappingURL=chunk-YWRVGG7Q.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Notifications.tsx"],"names":["React","useLocale","jsxs","format","jsx","Bell","cx"],"mappings":"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","file":"chunk-RO5ZFFUR.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Bell } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\nexport type NotificationTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface NotificationItem {\n id: string;\n title: React.ReactNode;\n description?: React.ReactNode;\n tone?: NotificationTone;\n timestamp?: React.ReactNode;\n read?: boolean;\n onClick?: () => void;\n}\n\nexport interface NotificationCenterProps {\n notifications: NotificationItem[];\n onMarkAllRead?: () => void;\n onClearAll?: () => void;\n emptyMessage?: React.ReactNode;\n /** Custom trigger element. Si se pasa, reemplaza el botón con bell. */\n trigger?: React.ReactElement;\n className?: string;\n}\n\nexport function NotificationCenter({\n notifications, onMarkAllRead, onClearAll,\n emptyMessage,\n trigger, className,\n}: NotificationCenterProps) {\n const [open, setOpen] = React.useState(false);\n const ref = React.useRef<HTMLDivElement>(null);\n const t = useLocale();\n const unread = notifications.filter((n) => !n.read).length;\n const empty = emptyMessage ?? t['notifications.empty'];\n\n React.useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') setOpen(false); };\n document.addEventListener('mousedown', onClick);\n document.addEventListener('keydown', onKey);\n return () => {\n document.removeEventListener('mousedown', onClick);\n document.removeEventListener('keydown', onKey);\n };\n }, [open]);\n\n const triggerEl = trigger ? React.cloneElement(trigger, {\n onClick: (e: React.MouseEvent) => {\n trigger.props.onClick?.(e);\n setOpen((o) => !o);\n },\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n }) : (\n <button\n type=\"button\"\n className=\"notif__trigger\"\n aria-label={`${t['notifications.button']}${unread > 0 ? format(t['notifications.unreadSuffix'], { n: unread }) : ''}`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <Bell size={20} />\n {unread > 0 && <span className=\"notif__badge\" aria-hidden=\"true\">{unread > 99 ? '99+' : unread}</span>}\n </button>\n );\n\n return (\n <div ref={ref} className={cx('notif', className)}>\n {triggerEl}\n {open && (\n <div className=\"notif__panel\" role=\"dialog\" aria-label={t['notifications.panel']}>\n <div className=\"notif__head\">\n <span className=\"notif__title\">{t['notifications.title']}</span>\n {notifications.length > 0 && (\n <div className=\"notif__head-actions\">\n {onMarkAllRead && unread > 0 && (\n <button type=\"button\" className=\"notif__action\" onClick={onMarkAllRead}>\n {t['notifications.markAllRead']}\n </button>\n )}\n {onClearAll && (\n <button type=\"button\" className=\"notif__action\" onClick={onClearAll}>\n {t['notifications.clear']}\n </button>\n )}\n </div>\n )}\n </div>\n <div className=\"notif__list\">\n {notifications.length === 0 ? (\n <div className=\"notif__empty\">{empty}</div>\n ) : (\n notifications.map((n) => (\n <button\n key={n.id}\n type=\"button\"\n className={cx('notif__item', !n.read && 'is-unread')}\n onClick={() => { n.onClick?.(); setOpen(false); }}\n >\n <span className={cx('notif__dot', `notif__dot--${n.tone ?? 'info'}`)} aria-hidden=\"true\" />\n <div className=\"notif__body\">\n <div className=\"notif__item-title\">{n.title}</div>\n {n.description && <div className=\"notif__item-desc\">{n.description}</div>}\n {n.timestamp && <div className=\"notif__time\">{n.timestamp}</div>}\n </div>\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Notifications.tsx"],"names":["React","useLocale","jsxs","format","jsx","Bell","cx"],"mappings":"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","file":"chunk-YWRVGG7Q.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Bell } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\nexport type NotificationTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface NotificationItem {\n id: string;\n title: React.ReactNode;\n description?: React.ReactNode;\n tone?: NotificationTone;\n timestamp?: React.ReactNode;\n read?: boolean;\n onClick?: () => void;\n}\n\nexport interface NotificationCenterProps {\n notifications: NotificationItem[];\n onMarkAllRead?: () => void;\n onClearAll?: () => void;\n emptyMessage?: React.ReactNode;\n /** Custom trigger element. Si se pasa, reemplaza el botón con bell. */\n trigger?: React.ReactElement;\n className?: string;\n}\n\nexport function NotificationCenter({\n notifications, onMarkAllRead, onClearAll,\n emptyMessage,\n trigger, className,\n}: NotificationCenterProps) {\n const [open, setOpen] = React.useState(false);\n const ref = React.useRef<HTMLDivElement>(null);\n const t = useLocale();\n const unread = notifications.filter((n) => !n.read).length;\n const empty = emptyMessage ?? t['notifications.empty'];\n\n React.useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') setOpen(false); };\n document.addEventListener('mousedown', onClick);\n document.addEventListener('keydown', onKey);\n return () => {\n document.removeEventListener('mousedown', onClick);\n document.removeEventListener('keydown', onKey);\n };\n }, [open]);\n\n const triggerEl = trigger ? React.cloneElement(trigger, {\n onClick: (e: React.MouseEvent) => {\n trigger.props.onClick?.(e);\n setOpen((o) => !o);\n },\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n }) : (\n <button\n type=\"button\"\n className=\"notif__trigger\"\n aria-label={`${t['notifications.button']}${unread > 0 ? format(t['notifications.unreadSuffix'], { n: unread }) : ''}`}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <Bell size={20} />\n {unread > 0 && <span className=\"notif__badge\" aria-hidden=\"true\">{unread > 99 ? '99+' : unread}</span>}\n </button>\n );\n\n return (\n <div ref={ref} className={cx('notif', className)}>\n {triggerEl}\n {open && (\n <div className=\"notif__panel\" role=\"dialog\" aria-label={t['notifications.panel']}>\n <div className=\"notif__head\">\n <span className=\"notif__title\">{t['notifications.title']}</span>\n {notifications.length > 0 && (\n <div className=\"notif__head-actions\">\n {onMarkAllRead && unread > 0 && (\n <button type=\"button\" className=\"notif__action\" onClick={onMarkAllRead}>\n {t['notifications.markAllRead']}\n </button>\n )}\n {onClearAll && (\n <button type=\"button\" className=\"notif__action\" onClick={onClearAll}>\n {t['notifications.clear']}\n </button>\n )}\n </div>\n )}\n </div>\n <div className=\"notif__list\">\n {notifications.length === 0 ? (\n <div className=\"notif__empty\">{empty}</div>\n ) : (\n notifications.map((n) => (\n <button\n key={n.id}\n type=\"button\"\n className={cx('notif__item', !n.read && 'is-unread')}\n onClick={() => { n.onClick?.(); setOpen(false); }}\n >\n <span className={cx('notif__dot', `notif__dot--${n.tone ?? 'info'}`)} aria-hidden=\"true\" />\n <div className=\"notif__body\">\n <div className=\"notif__item-title\">{n.title}</div>\n {n.description && <div className=\"notif__item-desc\">{n.description}</div>}\n {n.timestamp && <div className=\"notif__time\">{n.timestamp}</div>}\n </div>\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkPNG74DNV_js = require('../chunk-PNG74DNV.js');
4
+ var chunk7SMQLCIU_js = require('../chunk-7SMQLCIU.js');
5
5
  require('../chunk-MVJITG75.js');
6
- require('../chunk-7EHLO6NI.js');
6
+ require('../chunk-NZNTB5OI.js');
7
7
  require('../chunk-WAGWB35Q.js');
8
8
  require('../chunk-3PXYCXDW.js');
9
- require('../chunk-U2Z6DGHD.js');
9
+ require('../chunk-WXODIWH7.js');
10
10
  require('../chunk-XMLBKK7X.js');
11
11
  require('../chunk-CRKYET66.js');
12
12
  require('../chunk-C4AKMVDZ.js');
@@ -16,19 +16,19 @@ require('../chunk-PASF6T4H.js');
16
16
 
17
17
  Object.defineProperty(exports, "CommandPalette", {
18
18
  enumerable: true,
19
- get: function () { return chunkPNG74DNV_js.CommandPalette; }
19
+ get: function () { return chunk7SMQLCIU_js.CommandPalette; }
20
20
  });
21
21
  Object.defineProperty(exports, "DateRangePicker", {
22
22
  enumerable: true,
23
- get: function () { return chunkPNG74DNV_js.DateRangePicker; }
23
+ get: function () { return chunk7SMQLCIU_js.DateRangePicker; }
24
24
  });
25
25
  Object.defineProperty(exports, "MultiCombobox", {
26
26
  enumerable: true,
27
- get: function () { return chunkPNG74DNV_js.MultiCombobox; }
27
+ get: function () { return chunk7SMQLCIU_js.MultiCombobox; }
28
28
  });
29
29
  Object.defineProperty(exports, "useCommandPalette", {
30
30
  enumerable: true,
31
- get: function () { return chunkPNG74DNV_js.useCommandPalette; }
31
+ get: function () { return chunk7SMQLCIU_js.useCommandPalette; }
32
32
  });
33
33
  //# sourceMappingURL=AdvancedPickers.js.map
34
34
  //# sourceMappingURL=AdvancedPickers.js.map
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from '../chunk-Z54MFDON.mjs';
2
+ export { CommandPalette, DateRangePicker, MultiCombobox, useCommandPalette } from '../chunk-2KBQSARY.mjs';
3
3
  import '../chunk-4QHE5H36.mjs';
4
- import '../chunk-H7MLCJ27.mjs';
4
+ import '../chunk-MM7MT37Y.mjs';
5
5
  import '../chunk-FKBQYQQD.mjs';
6
6
  import '../chunk-5GEWIK4T.mjs';
7
- import '../chunk-WWAUCHWD.mjs';
7
+ import '../chunk-HCOJH3W3.mjs';
8
8
  import '../chunk-6P2TKRTL.mjs';
9
9
  import '../chunk-5XT2LX3I.mjs';
10
10
  import '../chunk-BJGMROKL.mjs';
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkUCEPFTZV_js = require('../chunk-UCEPFTZV.js');
4
+ var chunkQTSZWDZR_js = require('../chunk-QTSZWDZR.js');
5
5
  require('../chunk-2KZ4NI3X.js');
6
6
  require('../chunk-D2H4VZVL.js');
7
7
  require('../chunk-FL4ZCWUF.js');
8
8
  require('../chunk-NPXEZCTA.js');
9
9
  require('../chunk-55P5FA5Q.js');
10
- require('../chunk-U2Z6DGHD.js');
10
+ require('../chunk-WXODIWH7.js');
11
11
  require('../chunk-XMLBKK7X.js');
12
12
  require('../chunk-CRKYET66.js');
13
13
  require('../chunk-C4AKMVDZ.js');
@@ -17,11 +17,11 @@ require('../chunk-PASF6T4H.js');
17
17
 
18
18
  Object.defineProperty(exports, "AppShell", {
19
19
  enumerable: true,
20
- get: function () { return chunkUCEPFTZV_js.AppShell; }
20
+ get: function () { return chunkQTSZWDZR_js.AppShell; }
21
21
  });
22
22
  Object.defineProperty(exports, "PageHeader", {
23
23
  enumerable: true,
24
- get: function () { return chunkUCEPFTZV_js.PageHeader; }
24
+ get: function () { return chunkQTSZWDZR_js.PageHeader; }
25
25
  });
26
26
  //# sourceMappingURL=AppShell.js.map
27
27
  //# sourceMappingURL=AppShell.js.map
@@ -1,11 +1,11 @@
1
1
  'use client';
2
- export { AppShell, PageHeader } from '../chunk-CSALA64D.mjs';
2
+ export { AppShell, PageHeader } from '../chunk-PGTOBPHI.mjs';
3
3
  import '../chunk-QQE3XOEM.mjs';
4
4
  import '../chunk-R5DCDEB5.mjs';
5
5
  import '../chunk-U3JH4T3A.mjs';
6
6
  import '../chunk-6W7ZGWNA.mjs';
7
7
  import '../chunk-XOV4D6J3.mjs';
8
- import '../chunk-WWAUCHWD.mjs';
8
+ import '../chunk-HCOJH3W3.mjs';
9
9
  import '../chunk-6P2TKRTL.mjs';
10
10
  import '../chunk-5XT2LX3I.mjs';
11
11
  import '../chunk-BJGMROKL.mjs';
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk7MGAHY2M_js = require('../chunk-7MGAHY2M.js');
4
+ var chunkSVXJ2IPG_js = require('../chunk-SVXJ2IPG.js');
5
5
  require('../chunk-AGMDYCGG.js');
6
- require('../chunk-7EHLO6NI.js');
6
+ require('../chunk-NZNTB5OI.js');
7
7
  require('../chunk-WAGWB35Q.js');
8
- require('../chunk-U2Z6DGHD.js');
8
+ require('../chunk-WXODIWH7.js');
9
9
  require('../chunk-XMLBKK7X.js');
10
10
  require('../chunk-CRKYET66.js');
11
11
  require('../chunk-C4AKMVDZ.js');
@@ -15,15 +15,15 @@ require('../chunk-PASF6T4H.js');
15
15
 
16
16
  Object.defineProperty(exports, "AttachmentList", {
17
17
  enumerable: true,
18
- get: function () { return chunk7MGAHY2M_js.AttachmentList; }
18
+ get: function () { return chunkSVXJ2IPG_js.AttachmentList; }
19
19
  });
20
20
  Object.defineProperty(exports, "CommentThread", {
21
21
  enumerable: true,
22
- get: function () { return chunk7MGAHY2M_js.CommentThread; }
22
+ get: function () { return chunkSVXJ2IPG_js.CommentThread; }
23
23
  });
24
24
  Object.defineProperty(exports, "_internal", {
25
25
  enumerable: true,
26
- get: function () { return chunk7MGAHY2M_js._internal; }
26
+ get: function () { return chunkSVXJ2IPG_js._internal; }
27
27
  });
28
28
  //# sourceMappingURL=Comments.js.map
29
29
  //# sourceMappingURL=Comments.js.map
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- export { AttachmentList, CommentThread, _internal } from '../chunk-FXXYC73W.mjs';
2
+ export { AttachmentList, CommentThread, _internal } from '../chunk-5BACX5CP.mjs';
3
3
  import '../chunk-DH3IXJRJ.mjs';
4
- import '../chunk-H7MLCJ27.mjs';
4
+ import '../chunk-MM7MT37Y.mjs';
5
5
  import '../chunk-FKBQYQQD.mjs';
6
- import '../chunk-WWAUCHWD.mjs';
6
+ import '../chunk-HCOJH3W3.mjs';
7
7
  import '../chunk-6P2TKRTL.mjs';
8
8
  import '../chunk-5XT2LX3I.mjs';
9
9
  import '../chunk-BJGMROKL.mjs';
@@ -1,16 +1,16 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkQHH6MT2S_js = require('../chunk-QHH6MT2S.js');
5
- require('../chunk-5VRVKCOW.js');
6
- require('../chunk-7EHLO6NI.js');
4
+ var chunkJSKNG7Y2_js = require('../chunk-JSKNG7Y2.js');
5
+ require('../chunk-7SRJ4UVY.js');
6
+ require('../chunk-NZNTB5OI.js');
7
7
  require('../chunk-3PXYCXDW.js');
8
8
  require('../chunk-2KZ4NI3X.js');
9
9
  require('../chunk-D2H4VZVL.js');
10
10
  require('../chunk-FL4ZCWUF.js');
11
11
  require('../chunk-NPXEZCTA.js');
12
12
  require('../chunk-55P5FA5Q.js');
13
- require('../chunk-U2Z6DGHD.js');
13
+ require('../chunk-WXODIWH7.js');
14
14
  require('../chunk-XMLBKK7X.js');
15
15
  require('../chunk-CRKYET66.js');
16
16
  require('../chunk-C4AKMVDZ.js');
@@ -20,47 +20,47 @@ require('../chunk-PASF6T4H.js');
20
20
 
21
21
  Object.defineProperty(exports, "AddressForm", {
22
22
  enumerable: true,
23
- get: function () { return chunkQHH6MT2S_js.AddressForm; }
23
+ get: function () { return chunkJSKNG7Y2_js.AddressForm; }
24
24
  });
25
25
  Object.defineProperty(exports, "CartDrawer", {
26
26
  enumerable: true,
27
- get: function () { return chunkQHH6MT2S_js.CartDrawer; }
27
+ get: function () { return chunkJSKNG7Y2_js.CartDrawer; }
28
28
  });
29
29
  Object.defineProperty(exports, "CompareTable", {
30
30
  enumerable: true,
31
- get: function () { return chunkQHH6MT2S_js.CompareTable; }
31
+ get: function () { return chunkJSKNG7Y2_js.CompareTable; }
32
32
  });
33
33
  Object.defineProperty(exports, "FreeShippingProgress", {
34
34
  enumerable: true,
35
- get: function () { return chunkQHH6MT2S_js.FreeShippingProgress; }
35
+ get: function () { return chunkJSKNG7Y2_js.FreeShippingProgress; }
36
36
  });
37
37
  Object.defineProperty(exports, "OrderSummary", {
38
38
  enumerable: true,
39
- get: function () { return chunkQHH6MT2S_js.OrderSummary; }
39
+ get: function () { return chunkJSKNG7Y2_js.OrderSummary; }
40
40
  });
41
41
  Object.defineProperty(exports, "PriceDisplay", {
42
42
  enumerable: true,
43
- get: function () { return chunkQHH6MT2S_js.PriceDisplay; }
43
+ get: function () { return chunkJSKNG7Y2_js.PriceDisplay; }
44
44
  });
45
45
  Object.defineProperty(exports, "PromoCodeInput", {
46
46
  enumerable: true,
47
- get: function () { return chunkQHH6MT2S_js.PromoCodeInput; }
47
+ get: function () { return chunkJSKNG7Y2_js.PromoCodeInput; }
48
48
  });
49
49
  Object.defineProperty(exports, "QuantitySelector", {
50
50
  enumerable: true,
51
- get: function () { return chunkQHH6MT2S_js.QuantitySelector; }
51
+ get: function () { return chunkJSKNG7Y2_js.QuantitySelector; }
52
52
  });
53
53
  Object.defineProperty(exports, "Rating", {
54
54
  enumerable: true,
55
- get: function () { return chunkQHH6MT2S_js.Rating; }
55
+ get: function () { return chunkJSKNG7Y2_js.Rating; }
56
56
  });
57
57
  Object.defineProperty(exports, "VariantSelector", {
58
58
  enumerable: true,
59
- get: function () { return chunkQHH6MT2S_js.VariantSelector; }
59
+ get: function () { return chunkJSKNG7Y2_js.VariantSelector; }
60
60
  });
61
61
  Object.defineProperty(exports, "WishlistButton", {
62
62
  enumerable: true,
63
- get: function () { return chunkQHH6MT2S_js.WishlistButton; }
63
+ get: function () { return chunkJSKNG7Y2_js.WishlistButton; }
64
64
  });
65
65
  //# sourceMappingURL=Commerce.js.map
66
66
  //# sourceMappingURL=Commerce.js.map
@@ -1,14 +1,14 @@
1
1
  'use client';
2
- export { AddressForm, CartDrawer, CompareTable, FreeShippingProgress, OrderSummary, PriceDisplay, PromoCodeInput, QuantitySelector, Rating, VariantSelector, WishlistButton } from '../chunk-7EBAE24K.mjs';
3
- import '../chunk-TCTMCVHJ.mjs';
4
- import '../chunk-H7MLCJ27.mjs';
2
+ export { AddressForm, CartDrawer, CompareTable, FreeShippingProgress, OrderSummary, PriceDisplay, PromoCodeInput, QuantitySelector, Rating, VariantSelector, WishlistButton } from '../chunk-A2U72HLY.mjs';
3
+ import '../chunk-BY4VPPA4.mjs';
4
+ import '../chunk-MM7MT37Y.mjs';
5
5
  import '../chunk-5GEWIK4T.mjs';
6
6
  import '../chunk-QQE3XOEM.mjs';
7
7
  import '../chunk-R5DCDEB5.mjs';
8
8
  import '../chunk-U3JH4T3A.mjs';
9
9
  import '../chunk-6W7ZGWNA.mjs';
10
10
  import '../chunk-XOV4D6J3.mjs';
11
- import '../chunk-WWAUCHWD.mjs';
11
+ import '../chunk-HCOJH3W3.mjs';
12
12
  import '../chunk-6P2TKRTL.mjs';
13
13
  import '../chunk-5XT2LX3I.mjs';
14
14
  import '../chunk-BJGMROKL.mjs';
@@ -146,6 +146,15 @@ interface DataTableProps<T> {
146
146
  renderExpanded?: (row: T) => React.ReactNode;
147
147
  expandedKeys?: Set<string>;
148
148
  onExpandedChange?: (keys: Set<string>) => void;
149
+ /**
150
+ * Hides columns by key without mutating the canonical `columns` array —
151
+ * the consumer keeps ONE column definition and toggles a `Set`. Header,
152
+ * cells, totals footer, colSpans and mobile cards all follow. Pair with
153
+ * `<ColumnToggle>` in the toolbar for the ready-made visibility menu.
154
+ * Hiding every column is the consumer's foot-gun to avoid
155
+ * (`ColumnToggle` already prevents it by disabling the last one).
156
+ */
157
+ hiddenColumnKeys?: Set<string>;
149
158
  /**
150
159
  * Toolbar / filter zone that shares the table's rounded surface. When
151
160
  * set, the DataTable renders it INSIDE its own border+radius+overflow
@@ -179,7 +188,7 @@ interface DataTableProps<T> {
179
188
  * - No virtualization; tested up to ~200 rows. For large datasets, plug
180
189
  * in react-window/tanstack-virtual around the body rows.
181
190
  */
182
- declare function DataTable<T>({ columns, rows, rowKey, sort, onSortChange, selectable, selectedKeys, onSelectionChange, empty, error, loading, stickyHeader, maxHeight, mobileLayout, ariaLabel, rowLabel, className, density, rowHref, onRowClick, renderRow, toolbar, renderExpanded, expandedKeys, onExpandedChange, surface, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
191
+ declare function DataTable<T>({ columns: allColumns, rows, rowKey, sort, onSortChange, selectable, selectedKeys, onSelectionChange, empty, error, loading, stickyHeader, maxHeight, mobileLayout, ariaLabel, rowLabel, className, density, rowHref, onRowClick, renderRow, toolbar, renderExpanded, expandedKeys, onExpandedChange, hiddenColumnKeys, surface, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
183
192
  interface AccordionProps {
184
193
  multiple?: boolean;
185
194
  defaultOpen?: string[];
@@ -213,5 +222,29 @@ interface TablePaginationProps {
213
222
  }
214
223
  declare function TablePagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizeOptions, className, }: TablePaginationProps): react_jsx_runtime.JSX.Element;
215
224
  declare const TableToolbar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
225
+ interface ColumnToggleProps {
226
+ /**
227
+ * The CANONICAL column list (pass the same array the table gets, or a
228
+ * `{key, header}` subset) — the menu lists every column regardless of
229
+ * current visibility. Non-string headers render as-is in the menu.
230
+ */
231
+ columns: Array<{
232
+ key: string;
233
+ header: React.ReactNode;
234
+ }>;
235
+ hiddenKeys: Set<string>;
236
+ onChange: (keys: Set<string>) => void;
237
+ /** Trigger label. Defaults to the `table.columns` locale string. */
238
+ label?: React.ReactNode;
239
+ className?: string;
240
+ }
241
+ /**
242
+ * Ready-made column-visibility menu for the table toolbar: a button that
243
+ * opens a checkbox list, driving `DataTable.hiddenColumnKeys`. The popover
244
+ * stays open across toggles (multi-adjust without reopening). The last
245
+ * visible column's checkbox is disabled — a table with zero columns is a
246
+ * broken state no menu should be able to reach.
247
+ */
248
+ declare function ColumnToggle({ columns, hiddenKeys, onChange, label, className }: ColumnToggleProps): react_jsx_runtime.JSX.Element;
216
249
 
217
- export { Accordion, AccordionItem, type AccordionProps, type BreadcrumbItem, Breadcrumbs, type Column, DataTable, type DataTableProps, TablePagination, type TablePaginationProps, TableToolbar };
250
+ export { Accordion, AccordionItem, type AccordionProps, type BreadcrumbItem, Breadcrumbs, type Column, ColumnToggle, type ColumnToggleProps, DataTable, type DataTableProps, TablePagination, type TablePaginationProps, TableToolbar };
@@ -146,6 +146,15 @@ interface DataTableProps<T> {
146
146
  renderExpanded?: (row: T) => React.ReactNode;
147
147
  expandedKeys?: Set<string>;
148
148
  onExpandedChange?: (keys: Set<string>) => void;
149
+ /**
150
+ * Hides columns by key without mutating the canonical `columns` array —
151
+ * the consumer keeps ONE column definition and toggles a `Set`. Header,
152
+ * cells, totals footer, colSpans and mobile cards all follow. Pair with
153
+ * `<ColumnToggle>` in the toolbar for the ready-made visibility menu.
154
+ * Hiding every column is the consumer's foot-gun to avoid
155
+ * (`ColumnToggle` already prevents it by disabling the last one).
156
+ */
157
+ hiddenColumnKeys?: Set<string>;
149
158
  /**
150
159
  * Toolbar / filter zone that shares the table's rounded surface. When
151
160
  * set, the DataTable renders it INSIDE its own border+radius+overflow
@@ -179,7 +188,7 @@ interface DataTableProps<T> {
179
188
  * - No virtualization; tested up to ~200 rows. For large datasets, plug
180
189
  * in react-window/tanstack-virtual around the body rows.
181
190
  */
182
- declare function DataTable<T>({ columns, rows, rowKey, sort, onSortChange, selectable, selectedKeys, onSelectionChange, empty, error, loading, stickyHeader, maxHeight, mobileLayout, ariaLabel, rowLabel, className, density, rowHref, onRowClick, renderRow, toolbar, renderExpanded, expandedKeys, onExpandedChange, surface, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
191
+ declare function DataTable<T>({ columns: allColumns, rows, rowKey, sort, onSortChange, selectable, selectedKeys, onSelectionChange, empty, error, loading, stickyHeader, maxHeight, mobileLayout, ariaLabel, rowLabel, className, density, rowHref, onRowClick, renderRow, toolbar, renderExpanded, expandedKeys, onExpandedChange, hiddenColumnKeys, surface, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
183
192
  interface AccordionProps {
184
193
  multiple?: boolean;
185
194
  defaultOpen?: string[];
@@ -213,5 +222,29 @@ interface TablePaginationProps {
213
222
  }
214
223
  declare function TablePagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizeOptions, className, }: TablePaginationProps): react_jsx_runtime.JSX.Element;
215
224
  declare const TableToolbar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
225
+ interface ColumnToggleProps {
226
+ /**
227
+ * The CANONICAL column list (pass the same array the table gets, or a
228
+ * `{key, header}` subset) — the menu lists every column regardless of
229
+ * current visibility. Non-string headers render as-is in the menu.
230
+ */
231
+ columns: Array<{
232
+ key: string;
233
+ header: React.ReactNode;
234
+ }>;
235
+ hiddenKeys: Set<string>;
236
+ onChange: (keys: Set<string>) => void;
237
+ /** Trigger label. Defaults to the `table.columns` locale string. */
238
+ label?: React.ReactNode;
239
+ className?: string;
240
+ }
241
+ /**
242
+ * Ready-made column-visibility menu for the table toolbar: a button that
243
+ * opens a checkbox list, driving `DataTable.hiddenColumnKeys`. The popover
244
+ * stays open across toggles (multi-adjust without reopening). The last
245
+ * visible column's checkbox is disabled — a table with zero columns is a
246
+ * broken state no menu should be able to reach.
247
+ */
248
+ declare function ColumnToggle({ columns, hiddenKeys, onChange, label, className }: ColumnToggleProps): react_jsx_runtime.JSX.Element;
216
249
 
217
- export { Accordion, AccordionItem, type AccordionProps, type BreadcrumbItem, Breadcrumbs, type Column, DataTable, type DataTableProps, TablePagination, type TablePaginationProps, TableToolbar };
250
+ export { Accordion, AccordionItem, type AccordionProps, type BreadcrumbItem, Breadcrumbs, type Column, ColumnToggle, type ColumnToggleProps, DataTable, type DataTableProps, TablePagination, type TablePaginationProps, TableToolbar };