@misael703/ui 1.31.1 → 1.33.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 (196) hide show
  1. package/README.md +17 -1
  2. package/dist/{chunk-42EYBIRW.js → chunk-2PNXLTEM.js} +3 -3
  3. package/dist/{chunk-42EYBIRW.js.map → chunk-2PNXLTEM.js.map} +1 -1
  4. package/dist/{chunk-ULRTSRBP.mjs → chunk-37TC4VQO.mjs} +3 -3
  5. package/dist/{chunk-ULRTSRBP.mjs.map → chunk-37TC4VQO.mjs.map} +1 -1
  6. package/dist/{chunk-K325NBYF.js → chunk-3J26VOMQ.js} +5 -5
  7. package/dist/{chunk-K325NBYF.js.map → chunk-3J26VOMQ.js.map} +1 -1
  8. package/dist/{chunk-4WGXCRNN.js → chunk-3JRP3DGM.js} +3 -3
  9. package/dist/{chunk-4WGXCRNN.js.map → chunk-3JRP3DGM.js.map} +1 -1
  10. package/dist/{chunk-TO4EQVAN.js → chunk-4R5BHEDE.js} +5 -5
  11. package/dist/{chunk-TO4EQVAN.js.map → chunk-4R5BHEDE.js.map} +1 -1
  12. package/dist/{chunk-EHJNOVHL.mjs → chunk-6KVN77YG.mjs} +3 -3
  13. package/dist/{chunk-EHJNOVHL.mjs.map → chunk-6KVN77YG.mjs.map} +1 -1
  14. package/dist/{chunk-74ALPTUE.js → chunk-6SSTTJV4.js} +4 -4
  15. package/dist/{chunk-74ALPTUE.js.map → chunk-6SSTTJV4.js.map} +1 -1
  16. package/dist/{chunk-VSBCBKOL.mjs → chunk-7MJW6ACR.mjs} +5 -5
  17. package/dist/{chunk-VSBCBKOL.mjs.map → chunk-7MJW6ACR.mjs.map} +1 -1
  18. package/dist/{chunk-ITYDWKUE.js → chunk-A6RSCEJT.js} +4 -4
  19. package/dist/{chunk-ITYDWKUE.js.map → chunk-A6RSCEJT.js.map} +1 -1
  20. package/dist/{chunk-FVNW5TYQ.js → chunk-AGMDYCGG.js} +5 -5
  21. package/dist/{chunk-FVNW5TYQ.js.map → chunk-AGMDYCGG.js.map} +1 -1
  22. package/dist/{chunk-PUXXDABJ.mjs → chunk-AVPMOZ4Q.mjs} +3 -3
  23. package/dist/{chunk-PUXXDABJ.mjs.map → chunk-AVPMOZ4Q.mjs.map} +1 -1
  24. package/dist/{chunk-VHYTJD6Z.mjs → chunk-BJGMROKL.mjs} +21 -3
  25. package/dist/chunk-BJGMROKL.mjs.map +1 -0
  26. package/dist/{chunk-ZQ4HEU55.js → chunk-BJHR3ALO.js} +11 -11
  27. package/dist/{chunk-ZQ4HEU55.js.map → chunk-BJHR3ALO.js.map} +1 -1
  28. package/dist/{chunk-3HA3VO2I.js → chunk-C4AKMVDZ.js} +23 -2
  29. package/dist/chunk-C4AKMVDZ.js.map +1 -0
  30. package/dist/{chunk-7IPB5A75.mjs → chunk-DBV6FV4V.mjs} +3 -3
  31. package/dist/{chunk-7IPB5A75.mjs.map → chunk-DBV6FV4V.mjs.map} +1 -1
  32. package/dist/{chunk-QP5HKKTM.mjs → chunk-DH3IXJRJ.mjs} +4 -4
  33. package/dist/{chunk-QP5HKKTM.mjs.map → chunk-DH3IXJRJ.mjs.map} +1 -1
  34. package/dist/{chunk-KD7353FR.js → chunk-DJGWCSKQ.js} +5 -5
  35. package/dist/{chunk-KD7353FR.js.map → chunk-DJGWCSKQ.js.map} +1 -1
  36. package/dist/{chunk-AS4NTE2Q.js → chunk-DYZM6NZU.js} +5 -5
  37. package/dist/{chunk-AS4NTE2Q.js.map → chunk-DYZM6NZU.js.map} +1 -1
  38. package/dist/{chunk-R4KMFKP4.mjs → chunk-E6JUMXZM.mjs} +4 -4
  39. package/dist/{chunk-R4KMFKP4.mjs.map → chunk-E6JUMXZM.mjs.map} +1 -1
  40. package/dist/{chunk-SEYLCARU.mjs → chunk-ECZR37QC.mjs} +3 -3
  41. package/dist/{chunk-SEYLCARU.mjs.map → chunk-ECZR37QC.mjs.map} +1 -1
  42. package/dist/{chunk-FQ7RZJBG.mjs → chunk-ESOUBZQJ.mjs} +4 -4
  43. package/dist/{chunk-FQ7RZJBG.mjs.map → chunk-ESOUBZQJ.mjs.map} +1 -1
  44. package/dist/{chunk-ZKPFXBE7.js → chunk-EW7PJQYR.js} +8 -8
  45. package/dist/{chunk-ZKPFXBE7.js.map → chunk-EW7PJQYR.js.map} +1 -1
  46. package/dist/{chunk-I7URH4F2.mjs → chunk-FR4JV3JA.mjs} +3 -3
  47. package/dist/{chunk-I7URH4F2.mjs.map → chunk-FR4JV3JA.mjs.map} +1 -1
  48. package/dist/{chunk-4CPGEYY3.js → chunk-GGILBESE.js} +5 -5
  49. package/dist/{chunk-4CPGEYY3.js.map → chunk-GGILBESE.js.map} +1 -1
  50. package/dist/{chunk-UD37YQ4T.js → chunk-GHSI2DHL.js} +77 -33
  51. package/dist/chunk-GHSI2DHL.js.map +1 -0
  52. package/dist/{chunk-6BU22FZ7.js → chunk-GSL6LVPL.js} +13 -13
  53. package/dist/{chunk-6BU22FZ7.js.map → chunk-GSL6LVPL.js.map} +1 -1
  54. package/dist/{chunk-732BPQGZ.js → chunk-HCTY5QYL.js} +3 -3
  55. package/dist/{chunk-732BPQGZ.js.map → chunk-HCTY5QYL.js.map} +1 -1
  56. package/dist/{chunk-TMU6UXWF.mjs → chunk-I4DNKFCV.mjs} +71 -27
  57. package/dist/chunk-I4DNKFCV.mjs.map +1 -0
  58. package/dist/{chunk-HEI6PUMK.js → chunk-JKBJ2AKX.js} +4 -4
  59. package/dist/{chunk-HEI6PUMK.js.map → chunk-JKBJ2AKX.js.map} +1 -1
  60. package/dist/{chunk-QR6X2UOT.mjs → chunk-JMFDIN5R.mjs} +3 -3
  61. package/dist/{chunk-QR6X2UOT.mjs.map → chunk-JMFDIN5R.mjs.map} +1 -1
  62. package/dist/{chunk-HDQNM3GC.mjs → chunk-JNHASKGK.mjs} +5 -5
  63. package/dist/{chunk-HDQNM3GC.mjs.map → chunk-JNHASKGK.mjs.map} +1 -1
  64. package/dist/{chunk-L7IEAJSD.js → chunk-K2KG2NIT.js} +4 -4
  65. package/dist/{chunk-L7IEAJSD.js.map → chunk-K2KG2NIT.js.map} +1 -1
  66. package/dist/{chunk-QKUH25YO.js → chunk-KXDLNZWQ.js} +9 -9
  67. package/dist/{chunk-QKUH25YO.js.map → chunk-KXDLNZWQ.js.map} +1 -1
  68. package/dist/{chunk-ZKLTT2PW.mjs → chunk-M4I2MAO3.mjs} +4 -4
  69. package/dist/{chunk-ZKLTT2PW.mjs.map → chunk-M4I2MAO3.mjs.map} +1 -1
  70. package/dist/{chunk-X62VJCF3.js → chunk-MJAFMXPQ.js} +6 -6
  71. package/dist/{chunk-X62VJCF3.js.map → chunk-MJAFMXPQ.js.map} +1 -1
  72. package/dist/{chunk-KJ6YAYWS.js → chunk-MW7HQCFC.js} +3 -3
  73. package/dist/{chunk-KJ6YAYWS.js.map → chunk-MW7HQCFC.js.map} +1 -1
  74. package/dist/{chunk-QC3XHUF4.js → chunk-NIIDSI6V.js} +5 -5
  75. package/dist/{chunk-QC3XHUF4.js.map → chunk-NIIDSI6V.js.map} +1 -1
  76. package/dist/{chunk-KNKIJOES.js → chunk-NO3YQXB5.js} +10 -10
  77. package/dist/{chunk-KNKIJOES.js.map → chunk-NO3YQXB5.js.map} +1 -1
  78. package/dist/{chunk-PUEGDRTJ.mjs → chunk-NS6CI6RP.mjs} +3 -3
  79. package/dist/{chunk-PUEGDRTJ.mjs.map → chunk-NS6CI6RP.mjs.map} +1 -1
  80. package/dist/{chunk-JZNUYA42.js → chunk-NU4GAGUV.js} +3 -3
  81. package/dist/{chunk-JZNUYA42.js.map → chunk-NU4GAGUV.js.map} +1 -1
  82. package/dist/{chunk-574VINGB.mjs → chunk-OIYIWG53.mjs} +4 -4
  83. package/dist/{chunk-574VINGB.mjs.map → chunk-OIYIWG53.mjs.map} +1 -1
  84. package/dist/{chunk-H3227BHR.mjs → chunk-PX4LOZPZ.mjs} +5 -5
  85. package/dist/{chunk-H3227BHR.mjs.map → chunk-PX4LOZPZ.mjs.map} +1 -1
  86. package/dist/{chunk-KDCMQRYI.mjs → chunk-Q4RVZHC6.mjs} +5 -5
  87. package/dist/{chunk-KDCMQRYI.mjs.map → chunk-Q4RVZHC6.mjs.map} +1 -1
  88. package/dist/{chunk-V54BL7YF.mjs → chunk-RGQ4VV2S.mjs} +3 -3
  89. package/dist/{chunk-V54BL7YF.mjs.map → chunk-RGQ4VV2S.mjs.map} +1 -1
  90. package/dist/{chunk-SAVJLOGS.mjs → chunk-RPCMGRG7.mjs} +4 -4
  91. package/dist/{chunk-SAVJLOGS.mjs.map → chunk-RPCMGRG7.mjs.map} +1 -1
  92. package/dist/{chunk-NQGUJ4B5.mjs → chunk-S2HLK4QZ.mjs} +3 -3
  93. package/dist/{chunk-NQGUJ4B5.mjs.map → chunk-S2HLK4QZ.mjs.map} +1 -1
  94. package/dist/{chunk-LOQG2PQC.js → chunk-SH34AAZX.js} +8 -8
  95. package/dist/{chunk-LOQG2PQC.js.map → chunk-SH34AAZX.js.map} +1 -1
  96. package/dist/{chunk-TS3WC3G4.mjs → chunk-SUQLII3F.mjs} +3 -3
  97. package/dist/{chunk-TS3WC3G4.mjs.map → chunk-SUQLII3F.mjs.map} +1 -1
  98. package/dist/{chunk-UYANLSRC.js → chunk-TX4BUYX4.js} +5 -5
  99. package/dist/{chunk-UYANLSRC.js.map → chunk-TX4BUYX4.js.map} +1 -1
  100. package/dist/{chunk-SDKXMULE.mjs → chunk-URGXXUY3.mjs} +4 -4
  101. package/dist/{chunk-SDKXMULE.mjs.map → chunk-URGXXUY3.mjs.map} +1 -1
  102. package/dist/{chunk-AU7VNBV2.mjs → chunk-VG5FQ6SU.mjs} +6 -6
  103. package/dist/{chunk-AU7VNBV2.mjs.map → chunk-VG5FQ6SU.mjs.map} +1 -1
  104. package/dist/{chunk-ZA2AXUIB.mjs → chunk-VXJTDBSM.mjs} +3 -3
  105. package/dist/{chunk-ZA2AXUIB.mjs.map → chunk-VXJTDBSM.mjs.map} +1 -1
  106. package/dist/{chunk-EAVUJY3H.js → chunk-WAGJKBGW.js} +5 -5
  107. package/dist/{chunk-EAVUJY3H.js.map → chunk-WAGJKBGW.js.map} +1 -1
  108. package/dist/{chunk-HFRMDYNW.mjs → chunk-X36H75RR.mjs} +3 -3
  109. package/dist/{chunk-HFRMDYNW.mjs.map → chunk-X36H75RR.mjs.map} +1 -1
  110. package/dist/{chunk-2LHXOVX2.mjs → chunk-XRWMJVSI.mjs} +3 -3
  111. package/dist/{chunk-2LHXOVX2.mjs.map → chunk-XRWMJVSI.mjs.map} +1 -1
  112. package/dist/{chunk-DTWQA7TN.mjs → chunk-XSUX5CU6.mjs} +3 -3
  113. package/dist/{chunk-DTWQA7TN.mjs.map → chunk-XSUX5CU6.mjs.map} +1 -1
  114. package/dist/{chunk-PMZDGU63.js → chunk-YHRNSINQ.js} +9 -9
  115. package/dist/{chunk-PMZDGU63.js.map → chunk-YHRNSINQ.js.map} +1 -1
  116. package/dist/{chunk-ZTAAFZNC.mjs → chunk-YXUYWO2W.mjs} +3 -3
  117. package/dist/{chunk-ZTAAFZNC.mjs.map → chunk-YXUYWO2W.mjs.map} +1 -1
  118. package/dist/{chunk-X2YSLKDS.js → chunk-ZFFKQLSM.js} +8 -8
  119. package/dist/{chunk-X2YSLKDS.js.map → chunk-ZFFKQLSM.js.map} +1 -1
  120. package/dist/{chunk-OLOSL6KO.js → chunk-ZZFJNKKI.js} +8 -8
  121. package/dist/{chunk-OLOSL6KO.js.map → chunk-ZZFJNKKI.js.map} +1 -1
  122. package/dist/components/AdvancedPickers.d.mts +19 -3
  123. package/dist/components/AdvancedPickers.d.ts +19 -3
  124. package/dist/components/AdvancedPickers.js +9 -9
  125. package/dist/components/AdvancedPickers.mjs +5 -5
  126. package/dist/components/AppShell.js +7 -7
  127. package/dist/components/AppShell.mjs +5 -5
  128. package/dist/components/Carousel.js +3 -3
  129. package/dist/components/Carousel.mjs +2 -2
  130. package/dist/components/Code.js +4 -4
  131. package/dist/components/Code.mjs +2 -2
  132. package/dist/components/Comments.js +8 -8
  133. package/dist/components/Comments.mjs +5 -5
  134. package/dist/components/Commerce.js +18 -18
  135. package/dist/components/Commerce.mjs +7 -7
  136. package/dist/components/ContextMenu.js +3 -3
  137. package/dist/components/ContextMenu.mjs +2 -2
  138. package/dist/components/DataTable.js +10 -10
  139. package/dist/components/DataTable.mjs +4 -4
  140. package/dist/components/Display.js +13 -13
  141. package/dist/components/Display.mjs +2 -2
  142. package/dist/components/Display2.js +7 -7
  143. package/dist/components/Display2.mjs +3 -3
  144. package/dist/components/Display3.js +11 -11
  145. package/dist/components/Display3.mjs +5 -5
  146. package/dist/components/Editing.js +13 -13
  147. package/dist/components/Editing.mjs +8 -8
  148. package/dist/components/Filters.js +8 -8
  149. package/dist/components/Filters.mjs +2 -2
  150. package/dist/components/Form.js +12 -12
  151. package/dist/components/Form.mjs +2 -2
  152. package/dist/components/Gallery.js +4 -4
  153. package/dist/components/Gallery.mjs +2 -2
  154. package/dist/components/HoverCard.js +3 -3
  155. package/dist/components/HoverCard.mjs +2 -2
  156. package/dist/components/Icons.d.mts +4 -1
  157. package/dist/components/Icons.d.ts +4 -1
  158. package/dist/components/Icons.js +84 -72
  159. package/dist/components/Icons.mjs +1 -1
  160. package/dist/components/Inputs.js +6 -6
  161. package/dist/components/Inputs.mjs +2 -2
  162. package/dist/components/InputsExtra.js +12 -12
  163. package/dist/components/InputsExtra.mjs +3 -3
  164. package/dist/components/Layout.js +22 -22
  165. package/dist/components/Layout.mjs +3 -3
  166. package/dist/components/Logo.js +3 -3
  167. package/dist/components/Logo.mjs +2 -2
  168. package/dist/components/Marketing.js +5 -5
  169. package/dist/components/Marketing.mjs +2 -2
  170. package/dist/components/Menubar.js +3 -3
  171. package/dist/components/Menubar.mjs +2 -2
  172. package/dist/components/NavigationMenu.js +4 -4
  173. package/dist/components/NavigationMenu.mjs +3 -3
  174. package/dist/components/Notifications.js +3 -3
  175. package/dist/components/Notifications.mjs +2 -2
  176. package/dist/components/Overlay.js +8 -8
  177. package/dist/components/Overlay.mjs +6 -6
  178. package/dist/components/Permissions.js +4 -4
  179. package/dist/components/Permissions.mjs +3 -3
  180. package/dist/components/Pickers.js +9 -9
  181. package/dist/components/Pickers.mjs +4 -4
  182. package/dist/components/Popover.js +3 -3
  183. package/dist/components/Popover.mjs +2 -2
  184. package/dist/components/Toast.js +4 -4
  185. package/dist/components/Toast.mjs +2 -2
  186. package/dist/hooks/index.js +10 -10
  187. package/dist/hooks/index.mjs +2 -2
  188. package/dist/index.d.mts +1 -1
  189. package/dist/index.d.ts +1 -1
  190. package/dist/index.js +273 -261
  191. package/dist/index.mjs +39 -39
  192. package/package.json +1 -1
  193. package/dist/chunk-3HA3VO2I.js.map +0 -1
  194. package/dist/chunk-TMU6UXWF.mjs.map +0 -1
  195. package/dist/chunk-UD37YQ4T.js.map +0 -1
  196. package/dist/chunk-VHYTJD6Z.mjs.map +0 -1
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
+ var chunkRJJH6UZU_js = require('./chunk-RJJH6UZU.js');
4
5
  var chunkMVJITG75_js = require('./chunk-MVJITG75.js');
5
6
  var chunkWAGWB35Q_js = require('./chunk-WAGWB35Q.js');
6
- var chunkRJJH6UZU_js = require('./chunk-RJJH6UZU.js');
7
7
  var chunkU6ZXX4WF_js = require('./chunk-U6ZXX4WF.js');
8
- var chunk3HA3VO2I_js = require('./chunk-3HA3VO2I.js');
9
- var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
10
8
  var chunkXMLBKK7X_js = require('./chunk-XMLBKK7X.js');
11
9
  var chunkCRKYET66_js = require('./chunk-CRKYET66.js');
10
+ var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
11
+ var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
12
12
  var React = require('react');
13
13
  var jsxRuntime = require('react/jsx-runtime');
14
14
 
@@ -110,7 +110,7 @@ function MultiCombobox({
110
110
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": chunkRJJH6UZU_js.format(locale["combobox.remove"], { label: o.label }), onClick: (e) => {
111
111
  e.stopPropagation();
112
112
  toggle(o.value);
113
- }, children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.X, { size: 12 }) })
113
+ }, children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.X, { size: 12 }) })
114
114
  ] }, String(o.value))),
115
115
  overflow > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "multicombo__chip multicombo__chip--more", children: [
116
116
  "+",
@@ -169,7 +169,7 @@ function MultiCombobox({
169
169
  if (!o.disabled) toggle(o.value);
170
170
  },
171
171
  children: [
172
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkPASF6T4H_js.cx("multicombo__check", checked && "is-checked"), "aria-hidden": "true", children: checked ? /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Check, { size: 14 }) : null }),
172
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkPASF6T4H_js.cx("multicombo__check", checked && "is-checked"), "aria-hidden": "true", children: checked ? /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Check, { size: 14 }) : null }),
173
173
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "multicombo__option-body", children: [
174
174
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "multicombo__option-label", children: o.label }),
175
175
  o.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "multicombo__option-desc", children: o.description })
@@ -183,9 +183,13 @@ function MultiCombobox({
183
183
  ) })
184
184
  ] });
185
185
  }
186
+ var EMPTY_RANGE = { from: null, to: null };
186
187
  function DateRangePicker({
187
188
  value,
188
189
  onChange,
190
+ defaultValue,
191
+ onApply,
192
+ onOpenChange,
189
193
  minDate,
190
194
  maxDate,
191
195
  presets,
@@ -199,8 +203,22 @@ function DateRangePicker({
199
203
  const weekdays = locale["picker.weekdaysShort"];
200
204
  const months = locale["calendar.months"];
201
205
  const fmt = chunkMVJITG75_js.resolveDateFormat(format2);
206
+ const isControlled = value !== void 0;
207
+ const applyMode = !!onApply;
208
+ const initial = isControlled ? value : defaultValue ?? EMPTY_RANGE;
209
+ const [draft, setDraft] = React__namespace.useState(initial);
210
+ const [lastApplied, setLastApplied] = React__namespace.useState(initial);
211
+ const vFrom = value?.from?.getTime() ?? 0;
212
+ const vTo = value?.to?.getTime() ?? 0;
213
+ React__namespace.useEffect(() => {
214
+ if (!isControlled) return;
215
+ setDraft(value);
216
+ setLastApplied(value);
217
+ }, [isControlled, vFrom, vTo]);
218
+ const current = isControlled && !applyMode ? value : draft;
219
+ const displayed = applyMode ? lastApplied : current;
202
220
  const [open, setOpen] = React__namespace.useState(false);
203
- const [view, setView] = React__namespace.useState(() => chunkMVJITG75_js.startOfMonth(value.from ?? /* @__PURE__ */ new Date()));
221
+ const [view, setView] = React__namespace.useState(() => chunkMVJITG75_js.startOfMonth(initial.from ?? /* @__PURE__ */ new Date()));
204
222
  const [hover, setHover] = React__namespace.useState(null);
205
223
  const wrapRef = React__namespace.useRef(null);
206
224
  const popoverRef = React__namespace.useRef(null);
@@ -211,9 +229,14 @@ function DateRangePicker({
211
229
  align: "start",
212
230
  offset: 6
213
231
  });
232
+ const closeWithoutCommit = React__namespace.useCallback(() => {
233
+ if (applyMode) setDraft(lastApplied);
234
+ setOpen(false);
235
+ onOpenChange?.(false);
236
+ }, [applyMode, lastApplied, onOpenChange]);
214
237
  chunkXMLBKK7X_js.useDismiss({
215
238
  open,
216
- onDismiss: () => setOpen(false),
239
+ onDismiss: closeWithoutCommit,
217
240
  refs: [wrapRef, popoverRef],
218
241
  returnFocusRef: triggerRef
219
242
  });
@@ -221,23 +244,47 @@ function DateRangePicker({
221
244
  const monthGrid1 = React__namespace.useMemo(() => chunkMVJITG75_js.buildMonthGrid(view, 1), [view]);
222
245
  const isDisabled = (d) => minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()) || maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
223
246
  const inRange = (d) => {
224
- if (!value.from) return false;
225
- const end = value.to ?? hover;
226
- if (!end) return chunkMVJITG75_js.isSameDay(d, value.from);
227
- const a = value.from < end ? value.from : end;
228
- const b = value.from < end ? end : value.from;
247
+ if (!current.from) return false;
248
+ const end = current.to ?? hover;
249
+ if (!end) return chunkMVJITG75_js.isSameDay(d, current.from);
250
+ const a = current.from < end ? current.from : end;
251
+ const b = current.from < end ? end : current.from;
229
252
  return d >= new Date(a.getFullYear(), a.getMonth(), a.getDate()) && d <= new Date(b.getFullYear(), b.getMonth(), b.getDate());
230
253
  };
231
254
  const click = (d) => {
232
- if (!value.from || value.from && value.to) {
233
- onChange({ from: d, to: null });
234
- } else {
235
- const from = value.from;
236
- if (d < from) onChange({ from: d, to: from });
237
- else onChange({ from, to: d });
255
+ let next;
256
+ if (!current.from || current.from && current.to) next = { from: d, to: null };
257
+ else {
258
+ const from = current.from;
259
+ next = d < from ? { from: d, to: from } : { from, to: d };
260
+ }
261
+ if (applyMode) setDraft(next);
262
+ else onChange?.(next);
263
+ };
264
+ const commit = (next, fromPreset = false) => {
265
+ if (applyMode) {
266
+ onApply(next);
267
+ setLastApplied(next);
268
+ setDraft(next);
269
+ if (isControlled) onChange?.(next);
270
+ } else if (fromPreset) {
271
+ onChange?.(next);
272
+ }
273
+ setOpen(false);
274
+ onOpenChange?.(false);
275
+ };
276
+ const clear = () => {
277
+ if (applyMode) setDraft(EMPTY_RANGE);
278
+ else onChange?.(EMPTY_RANGE);
279
+ };
280
+ const toggleOpen = () => {
281
+ if (open) closeWithoutCommit();
282
+ else {
283
+ setOpen(true);
284
+ onOpenChange?.(true);
238
285
  }
239
286
  };
240
- const label = value.from ? value.to ? `${chunkMVJITG75_js.formatDate(value.from, fmt)} \u2192 ${chunkMVJITG75_js.formatDate(value.to, fmt)}` : `${chunkMVJITG75_js.formatDate(value.from, fmt)} \u2192 \u2026` : locale["picker.selectRange"];
287
+ const label = displayed.from ? displayed.to ? `${chunkMVJITG75_js.formatDate(displayed.from, fmt)} \u2192 ${chunkMVJITG75_js.formatDate(displayed.to, fmt)}` : `${chunkMVJITG75_js.formatDate(displayed.from, fmt)} \u2192 \u2026` : locale["picker.selectRange"];
241
288
  const renderMonth = (offset) => {
242
289
  const { month: m, cells } = offset === 0 ? monthGrid0 : monthGrid1;
243
290
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "daterange__month", children: [
@@ -250,7 +297,7 @@ function DateRangePicker({
250
297
  weekdays.map((w, i) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "daterange__dow", children: w }, i)),
251
298
  cells.map((d, i) => {
252
299
  if (!d) return /* @__PURE__ */ jsxRuntime.jsx("span", {}, `b${i}`);
253
- const sel = value.from && chunkMVJITG75_js.isSameDay(d, value.from) || value.to && chunkMVJITG75_js.isSameDay(d, value.to);
300
+ const sel = current.from && chunkMVJITG75_js.isSameDay(d, current.from) || current.to && chunkMVJITG75_js.isSameDay(d, current.to);
254
301
  const ir = inRange(d);
255
302
  const today = chunkMVJITG75_js.isSameDay(d, /* @__PURE__ */ new Date());
256
303
  const off = isDisabled(d);
@@ -279,11 +326,11 @@ function DateRangePicker({
279
326
  type: "button",
280
327
  className: "daterange__trigger",
281
328
  disabled,
282
- onClick: () => setOpen((o) => !o),
329
+ onClick: toggleOpen,
283
330
  "aria-haspopup": "dialog",
284
331
  "aria-expanded": open,
285
332
  children: [
286
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "daterange__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.CalendarIcon, { size: 16 }) }),
333
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "daterange__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.CalendarIcon, { size: 16 }) }),
287
334
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
288
335
  ]
289
336
  }
@@ -302,23 +349,20 @@ function DateRangePicker({
302
349
  visibility: pos.ready ? "visible" : "hidden"
303
350
  },
304
351
  children: [
305
- presets && presets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "daterange__presets", children: presets.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => {
306
- onChange(p.range());
307
- setOpen(false);
308
- }, children: p.label }) }, i)) }),
352
+ presets && presets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "daterange__presets", children: presets.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => commit(p.range(), true), children: p.label }) }, i)) }),
309
353
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "daterange__panes", children: [
310
354
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "daterange__nav", children: [
311
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.ChevronLeft, { size: 16 }) }),
355
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.ChevronLeft, { size: 16 }) }),
312
356
  /* @__PURE__ */ jsxRuntime.jsx("span", {}),
313
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.ChevronRight, { size: 16 }) })
357
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.ChevronRight, { size: 16 }) })
314
358
  ] }),
315
359
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "daterange__months", children: [
316
360
  renderMonth(0),
317
361
  renderMonth(1)
318
362
  ] }),
319
363
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "daterange__actions", children: [
320
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "daterange__clear", onClick: () => onChange({ from: null, to: null }), children: locale["common.clear"] }),
321
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "daterange__apply", onClick: () => setOpen(false), disabled: !value.from || !value.to, children: locale["common.apply"] })
364
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "daterange__clear", onClick: clear, children: locale["common.clear"] }),
365
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "daterange__apply", onClick: () => commit(current), disabled: !current.from || !current.to, children: locale["common.apply"] })
322
366
  ] })
323
367
  ] })
324
368
  ]
@@ -418,7 +462,7 @@ function CommandPalette({
418
462
  if (e.target === e.currentTarget) onClose();
419
463
  }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cmdk__panel", children: [
420
464
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cmdk__searchbar", children: [
421
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cmdk__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Search, { size: 16 }) }),
465
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cmdk__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Search, { size: 16 }) }),
422
466
  /* @__PURE__ */ jsxRuntime.jsx(
423
467
  "input",
424
468
  {
@@ -486,5 +530,5 @@ exports.CommandPalette = CommandPalette;
486
530
  exports.DateRangePicker = DateRangePicker;
487
531
  exports.MultiCombobox = MultiCombobox;
488
532
  exports.useCommandPalette = useCommandPalette;
489
- //# sourceMappingURL=chunk-UD37YQ4T.js.map
490
- //# sourceMappingURL=chunk-UD37YQ4T.js.map
533
+ //# sourceMappingURL=chunk-GHSI2DHL.js.map
534
+ //# sourceMappingURL=chunk-GHSI2DHL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AdvancedPickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","format","jsx","X","Portal","Check","resolveDateFormat","startOfMonth","buildMonthGrid","isSameDay","formatDate","CalendarIcon","addMonths","ChevronLeft","ChevronRight","Search"],"mappings":"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","file":"chunk-GHSI2DHL.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X, Check, Search } from './Icons';\nimport { resolveDateFormat, formatDate, startOfMonth, addMonths, isSameDay, buildMonthGrid, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format as formatMsg } from '../locale/messages';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- MultiCombobox -----------------------------------------------\nexport interface MultiComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface MultiComboboxProps<T = string> {\n value: T[];\n onChange: (v: T[]) => void;\n options: MultiComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: MultiComboboxOption<T>, query: string) => boolean;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n maxVisibleChips?: number;\n}\n\nconst dfilter = <T,>(o: MultiComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function MultiCombobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = dfilter,\n invalid, disabled, className, id, maxVisibleChips = 3,\n}: MultiComboboxProps<T>) {\n const locale = useLocale();\n const ph = placeholder ?? locale['common.search'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n // Build the lookup Set once per `value` change, not on every keystroke or\n // hover-driven re-render.\n const selSet = React.useMemo(() => new Set(value), [value]);\n\n const filtered = React.useMemo(\n () => (query ? options.filter((o) => filter(o, query)) : options),\n [options, query, filter]\n );\n\n const pos = usePopoverPosition(wrapRef, listRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n matchAnchorWidth: true,\n });\n\n // Escape is handled by the input's onKeyDown; only outside-click here.\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n const toggle = (v: T) => {\n if (selSet.has(v)) onChange(value.filter((x) => x !== v));\n else onChange([...value, v]);\n };\n\n const onKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') { e.preventDefault(); setOpen(true); setActive((a) => Math.min(filtered.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) { toggle(opt.value); setQuery(''); }\n } else if (e.key === 'Escape') { setOpen(false); }\n else if (e.key === 'Backspace' && !query && value.length) { onChange(value.slice(0, -1)); }\n };\n\n const selectedItems = options.filter((o) => selSet.has(o.value));\n const visible = selectedItems.slice(0, maxVisibleChips);\n const overflow = selectedItems.length - visible.length;\n\n return (\n <div ref={wrapRef} className={cx('multicombo', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <div className=\"multicombo__chips\" onClick={() => inputRef.current?.focus()}>\n {visible.map((o) => (\n <span key={String(o.value)} className=\"multicombo__chip\">\n {o.label}\n <button type=\"button\" aria-label={formatMsg(locale['combobox.remove'], { label: o.label })} onClick={(e) => { e.stopPropagation(); toggle(o.value); }}><X size={12} /></button>\n </span>\n ))}\n {overflow > 0 && <span className=\"multicombo__chip multicombo__chip--more\">+{overflow}</span>}\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"multicombo__input\"\n placeholder={selectedItems.length === 0 ? ph : ''}\n disabled={disabled}\n value={query}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); setActive(0); }}\n onKeyDown={onKey}\n />\n </div>\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cx('multicombo__list', 'is-floating')}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n width: pos.width,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {filtered.length === 0 ? (\n <li className=\"multicombo__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => {\n const checked = selSet.has(o.value);\n return (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={checked}\n aria-disabled={o.disabled}\n className={cx('multicombo__option', i === active && 'is-active', checked && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); if (!o.disabled) toggle(o.value); }}\n >\n <span className={cx('multicombo__check', checked && 'is-checked')} aria-hidden=\"true\">{checked ? <Check size={14} /> : null}</span>\n <span className=\"multicombo__option-body\">\n <span className=\"multicombo__option-label\">{o.label}</span>\n {o.description && <span className=\"multicombo__option-desc\">{o.description}</span>}\n </span>\n </li>\n );\n })\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DateRangePicker --------------------------------------------\nexport interface DateRange { from: Date | null; to: Date | null }\n\nexport interface DateRangePickerProps {\n /** Controlled value. Omit to make the picker uncontrolled (see `defaultValue`). */\n value?: DateRange;\n /**\n * In legacy mode, fires on every day click. In apply mode (when `onApply` is\n * provided), fires only at apply time so a controlled `value` can stay in sync.\n */\n onChange?: (v: DateRange) => void;\n /** Initial value when uncontrolled. Ignored if `value` is provided. */\n defaultValue?: DateRange;\n /**\n * Opt-in: enables apply mode. Day clicks only mutate an internal draft; the\n * consumer is notified when the user confirms (button \"Apply\" or a preset).\n * Closing the popover without applying reverts the draft to the last applied\n * value. Useful when each commit triggers a server-side query.\n */\n onApply?: (v: DateRange) => void;\n /** Fires on open/close transitions. */\n onOpenChange?: (open: boolean) => void;\n minDate?: Date;\n maxDate?: Date;\n presets?: Array<{ label: string; range: () => DateRange }>;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n /**\n * Display format. Default `'auto'` derives from `configureBrand().locale`.\n */\n format?: DateFormat;\n}\n\nconst EMPTY_RANGE: DateRange = { from: null, to: null };\n\nexport function DateRangePicker({\n value, onChange, defaultValue, onApply, onOpenChange,\n minDate, maxDate, presets,\n invalid, disabled, className, id, format = 'auto',\n}: DateRangePickerProps) {\n const locale = useLocale();\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const fmt = resolveDateFormat(format);\n const isControlled = value !== undefined;\n const applyMode = !!onApply;\n const initial = isControlled ? (value as DateRange) : (defaultValue ?? EMPTY_RANGE);\n const [draft, setDraft] = React.useState<DateRange>(initial);\n const [lastApplied, setLastApplied] = React.useState<DateRange>(initial);\n // Resync draft/lastApplied when controlled `value` changes externally.\n const vFrom = value?.from?.getTime() ?? 0;\n const vTo = value?.to?.getTime() ?? 0;\n React.useEffect(() => {\n if (!isControlled) return;\n setDraft(value as DateRange);\n setLastApplied(value as DateRange);\n }, [isControlled, vFrom, vTo]);\n // Legacy-controlled (no `onApply`) keeps prior semantics: `value` drives render\n // directly. Otherwise the draft is truth.\n const current: DateRange = isControlled && !applyMode ? (value as DateRange) : draft;\n // The trigger label shows the last-committed range in apply mode; in legacy it\n // tracks `current` (so live edits stay reflected, as before).\n const displayed: DateRange = applyMode ? lastApplied : current;\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(initial.from ?? new Date()));\n const [hover, setHover] = React.useState<Date | null>(null);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition; Escape and outside-click return focus to the\n // trigger (a11y) — same primitive as MultiCombobox above.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 6,\n });\n\n const closeWithoutCommit = React.useCallback(() => {\n if (applyMode) setDraft(lastApplied);\n setOpen(false);\n onOpenChange?.(false);\n }, [applyMode, lastApplied, onOpenChange]);\n\n useDismiss({\n open,\n onDismiss: closeWithoutCommit,\n refs: [wrapRef, popoverRef],\n returnFocusRef: triggerRef,\n });\n\n // Each panel renders ~42 Date cells. Without memoization, every\n // setHover() triggered a full rebuild of both panels' grids on every\n // mouse movement over the calendar. Memo keyed on `view` only.\n const monthGrid0 = React.useMemo(() => buildMonthGrid(view, 0), [view]);\n const monthGrid1 = React.useMemo(() => buildMonthGrid(view, 1), [view]);\n\n const isDisabled = (d: Date) =>\n (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) ||\n (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()));\n\n const inRange = (d: Date) => {\n if (!current.from) return false;\n const end = current.to ?? hover;\n if (!end) return isSameDay(d, current.from);\n const a = current.from < end ? current.from : end;\n const b = current.from < end ? end : current.from;\n return d >= new Date(a.getFullYear(), a.getMonth(), a.getDate()) &&\n d <= new Date(b.getFullYear(), b.getMonth(), b.getDate());\n };\n\n const click = (d: Date) => {\n let next: DateRange;\n if (!current.from || (current.from && current.to)) next = { from: d, to: null };\n else {\n const from = current.from;\n next = d < from ? { from: d, to: from } : { from, to: d };\n }\n if (applyMode) setDraft(next);\n else onChange?.(next);\n };\n\n // Commits a range and closes. In apply mode this fires `onApply` (and `onChange`\n // when controlled, to keep `value` in sync). In legacy mode, only preset commits\n // propagate via `onChange`; the bare \"Apply\" button stays close-only as before.\n const commit = (next: DateRange, fromPreset = false) => {\n if (applyMode) {\n onApply!(next);\n setLastApplied(next);\n setDraft(next);\n if (isControlled) onChange?.(next);\n } else if (fromPreset) {\n onChange?.(next);\n }\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const clear = () => {\n if (applyMode) setDraft(EMPTY_RANGE);\n else onChange?.(EMPTY_RANGE);\n };\n\n const toggleOpen = () => {\n if (open) closeWithoutCommit();\n else { setOpen(true); onOpenChange?.(true); }\n };\n\n const label = displayed.from\n ? displayed.to\n ? `${formatDate(displayed.from, fmt)} → ${formatDate(displayed.to, fmt)}`\n : `${formatDate(displayed.from, fmt)} → …`\n : locale['picker.selectRange'];\n\n const renderMonth = (offset: number) => {\n const { month: m, cells } = offset === 0 ? monthGrid0 : monthGrid1;\n return (\n <div className=\"daterange__month\">\n <div className=\"daterange__title\">{months[m.getMonth()]} {m.getFullYear()}</div>\n <div className=\"daterange__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"daterange__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = (current.from && isSameDay(d, current.from)) || (current.to && isSameDay(d, current.to));\n const ir = inRange(d);\n const today = isSameDay(d, new Date());\n const off = isDisabled(d);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('daterange__day', sel && 'is-selected', ir && !sel && 'is-range', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onMouseEnter={() => setHover(d)}\n onClick={() => click(d)}\n >{d.getDate()}</button>\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <div ref={wrapRef} className={cx('daterange', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <button\n ref={triggerRef}\n id={id}\n type=\"button\"\n className=\"daterange__trigger\"\n disabled={disabled}\n onClick={toggleOpen}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n >\n <span className=\"daterange__icon\" aria-hidden=\"true\"><CalendarIcon size={16} /></span>\n <span>{label}</span>\n </button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('daterange__popover', 'is-floating')}\n role=\"dialog\"\n onMouseLeave={() => setHover(null)}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {presets && presets.length > 0 && (\n <ul className=\"daterange__presets\">\n {presets.map((p, i) => (\n <li key={i}>\n <button type=\"button\" onClick={() => commit(p.range(), true)}>{p.label}</button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"daterange__panes\">\n <div className=\"daterange__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span />\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, 1))} aria-label={locale['calendar.nextMonth']}><ChevronRight size={16} /></button>\n </div>\n <div className=\"daterange__months\">\n {renderMonth(0)}\n {renderMonth(1)}\n </div>\n <div className=\"daterange__actions\">\n <button type=\"button\" className=\"daterange__clear\" onClick={clear}>{locale['common.clear']}</button>\n <button type=\"button\" className=\"daterange__apply\" onClick={() => commit(current)} disabled={!current.from || !current.to}>{locale['common.apply']}</button>\n </div>\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- Command Palette (⌘K) ----------------------------------------\nexport interface CommandItem {\n id: string;\n label: string;\n description?: string;\n group?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n keywords?: string[];\n onRun: () => void;\n}\n\nexport interface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n items: CommandItem[];\n placeholder?: string;\n emptyMessage?: string;\n hotkey?: string; // 'mod+k'\n}\n\nfunction matchesHotkey(e: KeyboardEvent, hk: string) {\n const parts = hk.toLowerCase().split('+');\n const key = parts[parts.length - 1];\n const mods = parts.slice(0, -1);\n if (e.key.toLowerCase() !== key) return false;\n for (const m of mods) {\n if (m === 'mod' && !(e.metaKey || e.ctrlKey)) return false;\n if (m === 'ctrl' && !e.ctrlKey) return false;\n if (m === 'meta' && !e.metaKey) return false;\n if (m === 'shift' && !e.shiftKey) return false;\n if (m === 'alt' && !e.altKey) return false;\n }\n return true;\n}\n\nexport function CommandPalette({\n open, onClose, items,\n placeholder,\n emptyMessage,\n}: CommandPaletteProps) {\n const locale = useLocale();\n const ph = placeholder ?? locale['picker.searchCommands'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const filtered = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((it) => {\n const hay = [it.label, it.description, it.group, ...(it.keywords ?? [])].join(' ').toLowerCase();\n return hay.includes(q);\n });\n }, [items, query]);\n\n // group preserve order\n const grouped = React.useMemo(() => {\n const order: string[] = [];\n const map = new Map<string, CommandItem[]>();\n for (const it of filtered) {\n const g = it.group ?? '';\n if (!map.has(g)) { map.set(g, []); order.push(g); }\n map.get(g)!.push(it);\n }\n return { order, map };\n }, [filtered]);\n\n const flat = filtered;\n\n React.useEffect(() => {\n if (open) {\n setQuery(''); setActive(0);\n requestAnimationFrame(() => inputRef.current?.focus());\n }\n }, [open]);\n\n React.useEffect(() => { setActive(0); }, [query]);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n else if (e.key === 'ArrowDown') { e.preventDefault(); setActive((a) => Math.min(flat.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const it = flat[active];\n if (it) { it.onRun(); onClose(); }\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, flat, active, onClose]);\n\n React.useEffect(() => {\n const el = listRef.current?.querySelector(`[data-cmd-idx=\"${active}\"]`);\n el?.scrollIntoView({ block: 'nearest' });\n }, [active]);\n\n if (!open) return null;\n let idx = -1;\n return (\n <div className=\"cmdk__overlay\" role=\"dialog\" aria-modal=\"true\" aria-label={locale['picker.commandPalette']} onMouseDown={(e) => { if (e.target === e.currentTarget) onClose(); }}>\n <div className=\"cmdk__panel\">\n <div className=\"cmdk__searchbar\">\n <span className=\"cmdk__icon\" aria-hidden=\"true\"><Search size={16} /></span>\n <input\n ref={inputRef}\n className=\"cmdk__input\"\n value={query}\n placeholder={ph}\n onChange={(e) => setQuery(e.target.value)}\n />\n <kbd className=\"cmdk__esc\">Esc</kbd>\n </div>\n <ul ref={listRef} className=\"cmdk__list\" role=\"listbox\">\n {flat.length === 0 && <li className=\"cmdk__empty\">{empty}</li>}\n {grouped.order.map((g) => (\n <React.Fragment key={g || '__none'}>\n {g && <li className=\"cmdk__group\" aria-hidden=\"true\">{g}</li>}\n {grouped.map.get(g)!.map((it) => {\n idx++;\n const i = idx;\n return (\n <li\n key={it.id}\n role=\"option\"\n aria-selected={i === active}\n data-cmd-idx={i}\n className={cx('cmdk__item', i === active && 'is-active')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); it.onRun(); onClose(); }}\n >\n {it.icon && <span className=\"cmdk__item-icon\" aria-hidden=\"true\">{it.icon}</span>}\n <span className=\"cmdk__item-body\">\n <span className=\"cmdk__item-label\">{it.label}</span>\n {it.description && <span className=\"cmdk__item-desc\">{it.description}</span>}\n </span>\n {it.shortcut && <kbd className=\"cmdk__kbd\">{it.shortcut}</kbd>}\n </li>\n );\n })}\n </React.Fragment>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n\nexport interface UseCommandPaletteOptions {\n hotkey?: string; // default 'mod+k'\n}\n\nexport function useCommandPalette({ hotkey = 'mod+k' }: UseCommandPaletteOptions = {}) {\n const [open, setOpen] = React.useState(false);\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (matchesHotkey(e, hotkey)) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [hotkey]);\n return { open, setOpen, close: () => setOpen(false), toggle: () => setOpen((o) => !o) };\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkOLOSL6KO_js = require('./chunk-OLOSL6KO.js');
4
+ var chunkZZFJNKKI_js = require('./chunk-ZZFJNKKI.js');
5
5
  var chunkRJJH6UZU_js = require('./chunk-RJJH6UZU.js');
6
+ var chunk3PXYCXDW_js = require('./chunk-3PXYCXDW.js');
6
7
  var chunkU6ZXX4WF_js = require('./chunk-U6ZXX4WF.js');
7
- var chunk3HA3VO2I_js = require('./chunk-3HA3VO2I.js');
8
+ var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
8
9
  var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
9
- var chunk3PXYCXDW_js = require('./chunk-3PXYCXDW.js');
10
10
  var React = require('react');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
 
@@ -60,7 +60,7 @@ function Rating({
60
60
  disabled: !isInteractive,
61
61
  onClick: () => onChange?.(idx),
62
62
  "aria-label": `${idx} ${idx === 1 ? "estrella" : "estrellas"}`,
63
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Star, { size })
63
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Star, { size })
64
64
  },
65
65
  i
66
66
  );
@@ -123,7 +123,7 @@ function QuantitySelector({
123
123
  "aria-label": t["commerce.decreaseQty"],
124
124
  onClick: dec,
125
125
  disabled: disabled || typeof min === "number" && value <= min,
126
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Minus, { size: 14 })
126
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Minus, { size: 14 })
127
127
  }
128
128
  ),
129
129
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -149,7 +149,7 @@ function QuantitySelector({
149
149
  "aria-label": t["commerce.increaseQty"],
150
150
  onClick: inc,
151
151
  disabled: disabled || typeof max === "number" && value >= max,
152
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Plus, { size: 14 })
152
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Plus, { size: 14 })
153
153
  }
154
154
  )
155
155
  ] });
@@ -179,7 +179,7 @@ function VariantSelector({
179
179
  title: typeof o.label === "string" ? o.label : String(o.value),
180
180
  "aria-label": typeof o.label === "string" ? o.label : String(o.value),
181
181
  onClick: () => onChange(o.value),
182
- children: selected && /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Check, { size: 14 })
182
+ children: selected && /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Check, { size: 14 })
183
183
  },
184
184
  String(o.value)
185
185
  );
@@ -211,7 +211,7 @@ function WishlistButton({ active = false, onToggle, size = 20, className, ...res
211
211
  "aria-pressed": active,
212
212
  onClick: () => onToggle?.(!active),
213
213
  ...rest,
214
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Heart, { size })
214
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Heart, { size })
215
215
  }
216
216
  );
217
217
  }
@@ -316,7 +316,7 @@ function CartDrawer({
316
316
  const subtotal = items.reduce((sum, it) => sum + it.unitPrice * it.quantity, 0);
317
317
  const fmt = (n) => new Intl.NumberFormat(resolvedLocale, { style: "currency", currency: resolvedCurrency, maximumFractionDigits: 0 }).format(n);
318
318
  return /* @__PURE__ */ jsxRuntime.jsx(
319
- chunkOLOSL6KO_js.Drawer,
319
+ chunkZZFJNKKI_js.Drawer,
320
320
  {
321
321
  open,
322
322
  onClose,
@@ -355,7 +355,7 @@ function CartDrawer({
355
355
  className: "cart__item-remove",
356
356
  "aria-label": t["commerce.removeFromCart"],
357
357
  onClick: () => onRemove(it.id),
358
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.Trash, { size: 14 })
358
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Trash, { size: 14 })
359
359
  }
360
360
  )
361
361
  ] })
@@ -432,7 +432,7 @@ function CompareTable({ items, attributes, onRemove, className, ...rest }) {
432
432
  className: "compare__remove",
433
433
  "aria-label": chunkRJJH6UZU_js.format(t["commerce.removeItem"], { name: typeof it.name === "string" ? it.name : "item" }),
434
434
  onClick: () => onRemove(it.id),
435
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3HA3VO2I_js.X, { size: 14 })
435
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.X, { size: 14 })
436
436
  }
437
437
  )
438
438
  ] }) }, it.id))
@@ -455,5 +455,5 @@ exports.QuantitySelector = QuantitySelector;
455
455
  exports.Rating = Rating;
456
456
  exports.VariantSelector = VariantSelector;
457
457
  exports.WishlistButton = WishlistButton;
458
- //# sourceMappingURL=chunk-6BU22FZ7.js.map
459
- //# sourceMappingURL=chunk-6BU22FZ7.js.map
458
+ //# sourceMappingURL=chunk-GSL6LVPL.js.map
459
+ //# sourceMappingURL=chunk-GSL6LVPL.js.map