@misael703/ui 1.31.1 → 1.34.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.
- package/README.md +19 -1
- package/dist/{chunk-42EYBIRW.js → chunk-2PNXLTEM.js} +3 -3
- package/dist/{chunk-42EYBIRW.js.map → chunk-2PNXLTEM.js.map} +1 -1
- package/dist/{chunk-4WGXCRNN.js → chunk-3JRP3DGM.js} +3 -3
- package/dist/{chunk-4WGXCRNN.js.map → chunk-3JRP3DGM.js.map} +1 -1
- package/dist/{chunk-TO4EQVAN.js → chunk-4R5BHEDE.js} +5 -5
- package/dist/{chunk-TO4EQVAN.js.map → chunk-4R5BHEDE.js.map} +1 -1
- package/dist/{chunk-KNKIJOES.js → chunk-4XHKOZJD.js} +16 -16
- package/dist/{chunk-KNKIJOES.js.map → chunk-4XHKOZJD.js.map} +1 -1
- package/dist/{chunk-ZQ4HEU55.js → chunk-542LEDCL.js} +17 -17
- package/dist/{chunk-ZQ4HEU55.js.map → chunk-542LEDCL.js.map} +1 -1
- package/dist/{chunk-AU7VNBV2.mjs → chunk-5RA2CERT.mjs} +6 -6
- package/dist/{chunk-AU7VNBV2.mjs.map → chunk-5RA2CERT.mjs.map} +1 -1
- package/dist/{chunk-74ALPTUE.js → chunk-6SSTTJV4.js} +4 -4
- package/dist/{chunk-74ALPTUE.js.map → chunk-6SSTTJV4.js.map} +1 -1
- package/dist/{chunk-ULRTSRBP.mjs → chunk-77M3OY2L.mjs} +4 -4
- package/dist/{chunk-ULRTSRBP.mjs.map → chunk-77M3OY2L.mjs.map} +1 -1
- package/dist/{chunk-OLOSL6KO.js → chunk-7BOA6V72.js} +10 -10
- package/dist/{chunk-OLOSL6KO.js.map → chunk-7BOA6V72.js.map} +1 -1
- package/dist/{chunk-FVNW5TYQ.js → chunk-AGMDYCGG.js} +5 -5
- package/dist/{chunk-FVNW5TYQ.js.map → chunk-AGMDYCGG.js.map} +1 -1
- package/dist/{chunk-ZKLTT2PW.mjs → chunk-AVDMGH7M.mjs} +6 -6
- package/dist/{chunk-ZKLTT2PW.mjs.map → chunk-AVDMGH7M.mjs.map} +1 -1
- package/dist/{chunk-LOQG2PQC.js → chunk-AYMLKLRZ.js} +13 -13
- package/dist/{chunk-LOQG2PQC.js.map → chunk-AYMLKLRZ.js.map} +1 -1
- package/dist/{chunk-SDKXMULE.mjs → chunk-BERDZAO5.mjs} +5 -5
- package/dist/{chunk-SDKXMULE.mjs.map → chunk-BERDZAO5.mjs.map} +1 -1
- package/dist/{chunk-VSBCBKOL.mjs → chunk-BJBNDA2B.mjs} +6 -6
- package/dist/{chunk-VSBCBKOL.mjs.map → chunk-BJBNDA2B.mjs.map} +1 -1
- package/dist/{chunk-VHYTJD6Z.mjs → chunk-BJGMROKL.mjs} +21 -3
- package/dist/chunk-BJGMROKL.mjs.map +1 -0
- package/dist/{chunk-3HA3VO2I.js → chunk-C4AKMVDZ.js} +23 -2
- package/dist/chunk-C4AKMVDZ.js.map +1 -0
- package/dist/{chunk-NQGUJ4B5.mjs → chunk-CVU54JYN.mjs} +5 -5
- package/dist/{chunk-NQGUJ4B5.mjs.map → chunk-CVU54JYN.mjs.map} +1 -1
- package/dist/{chunk-K325NBYF.js → chunk-D42GKEUX.js} +8 -8
- package/dist/{chunk-K325NBYF.js.map → chunk-D42GKEUX.js.map} +1 -1
- package/dist/{chunk-QKUH25YO.js → chunk-D6IVNHT2.js} +13 -13
- package/dist/{chunk-QKUH25YO.js.map → chunk-D6IVNHT2.js.map} +1 -1
- package/dist/{chunk-7IPB5A75.mjs → chunk-DBV6FV4V.mjs} +3 -3
- package/dist/{chunk-7IPB5A75.mjs.map → chunk-DBV6FV4V.mjs.map} +1 -1
- package/dist/{chunk-SEYLCARU.mjs → chunk-DCDFM4CI.mjs} +5 -5
- package/dist/{chunk-SEYLCARU.mjs.map → chunk-DCDFM4CI.mjs.map} +1 -1
- package/dist/{chunk-QP5HKKTM.mjs → chunk-DH3IXJRJ.mjs} +4 -4
- package/dist/{chunk-QP5HKKTM.mjs.map → chunk-DH3IXJRJ.mjs.map} +1 -1
- package/dist/{chunk-AS4NTE2Q.js → chunk-DYZM6NZU.js} +5 -5
- package/dist/{chunk-AS4NTE2Q.js.map → chunk-DYZM6NZU.js.map} +1 -1
- package/dist/{chunk-FQ7RZJBG.mjs → chunk-ESOUBZQJ.mjs} +4 -4
- package/dist/{chunk-FQ7RZJBG.mjs.map → chunk-ESOUBZQJ.mjs.map} +1 -1
- package/dist/{chunk-QC3XHUF4.js → chunk-FB6JXUP3.js} +9 -9
- package/dist/{chunk-QC3XHUF4.js.map → chunk-FB6JXUP3.js.map} +1 -1
- package/dist/{chunk-X2YSLKDS.js → chunk-FPUSNOVX.js} +10 -10
- package/dist/{chunk-X2YSLKDS.js.map → chunk-FPUSNOVX.js.map} +1 -1
- package/dist/{chunk-I7URH4F2.mjs → chunk-FR4JV3JA.mjs} +3 -3
- package/dist/{chunk-I7URH4F2.mjs.map → chunk-FR4JV3JA.mjs.map} +1 -1
- package/dist/{chunk-4CPGEYY3.js → chunk-GGILBESE.js} +5 -5
- package/dist/{chunk-4CPGEYY3.js.map → chunk-GGILBESE.js.map} +1 -1
- package/dist/{chunk-PUXXDABJ.mjs → chunk-GWYH2U2H.mjs} +5 -5
- package/dist/{chunk-PUXXDABJ.mjs.map → chunk-GWYH2U2H.mjs.map} +1 -1
- package/dist/{chunk-U6ZXX4WF.js → chunk-HB5VGI2W.js} +3 -2
- package/dist/chunk-HB5VGI2W.js.map +1 -0
- package/dist/{chunk-732BPQGZ.js → chunk-HCTY5QYL.js} +3 -3
- package/dist/{chunk-732BPQGZ.js.map → chunk-HCTY5QYL.js.map} +1 -1
- package/dist/{chunk-EAVUJY3H.js → chunk-I7D47VEK.js} +11 -11
- package/dist/{chunk-EAVUJY3H.js.map → chunk-I7D47VEK.js.map} +1 -1
- package/dist/{chunk-V54BL7YF.mjs → chunk-J2LKDSLW.mjs} +5 -5
- package/dist/{chunk-V54BL7YF.mjs.map → chunk-J2LKDSLW.mjs.map} +1 -1
- package/dist/{chunk-HEI6PUMK.js → chunk-JKBJ2AKX.js} +4 -4
- package/dist/{chunk-HEI6PUMK.js.map → chunk-JKBJ2AKX.js.map} +1 -1
- package/dist/{chunk-QR6X2UOT.mjs → chunk-JMFDIN5R.mjs} +3 -3
- package/dist/{chunk-QR6X2UOT.mjs.map → chunk-JMFDIN5R.mjs.map} +1 -1
- package/dist/{chunk-TMU6UXWF.mjs → chunk-KCJCIUOK.mjs} +72 -28
- package/dist/chunk-KCJCIUOK.mjs.map +1 -0
- package/dist/{chunk-ITYDWKUE.js → chunk-LGLG5UZP.js} +8 -8
- package/dist/{chunk-ITYDWKUE.js.map → chunk-LGLG5UZP.js.map} +1 -1
- package/dist/{chunk-6BU22FZ7.js → chunk-ME57NREH.js} +22 -22
- package/dist/{chunk-6BU22FZ7.js.map → chunk-ME57NREH.js.map} +1 -1
- package/dist/{chunk-L7IEAJSD.js → chunk-MH6AK52N.js} +8 -8
- package/dist/{chunk-L7IEAJSD.js.map → chunk-MH6AK52N.js.map} +1 -1
- package/dist/{chunk-KVOPVYZ5.mjs → chunk-MMHTQ6T7.mjs} +2 -2
- package/dist/chunk-MMHTQ6T7.mjs.map +1 -0
- package/dist/{chunk-KJ6YAYWS.js → chunk-MW7HQCFC.js} +3 -3
- package/dist/{chunk-KJ6YAYWS.js.map → chunk-MW7HQCFC.js.map} +1 -1
- package/dist/{chunk-X62VJCF3.js → chunk-MWYYFA5X.js} +11 -11
- package/dist/{chunk-X62VJCF3.js.map → chunk-MWYYFA5X.js.map} +1 -1
- package/dist/{chunk-H3227BHR.mjs → chunk-NBSJ6AJP.mjs} +24 -6
- package/dist/chunk-NBSJ6AJP.mjs.map +1 -0
- package/dist/{chunk-PUEGDRTJ.mjs → chunk-NS6CI6RP.mjs} +3 -3
- package/dist/{chunk-PUEGDRTJ.mjs.map → chunk-NS6CI6RP.mjs.map} +1 -1
- package/dist/{chunk-JZNUYA42.js → chunk-NU4GAGUV.js} +3 -3
- package/dist/{chunk-JZNUYA42.js.map → chunk-NU4GAGUV.js.map} +1 -1
- package/dist/{chunk-574VINGB.mjs → chunk-OIYIWG53.mjs} +4 -4
- package/dist/{chunk-574VINGB.mjs.map → chunk-OIYIWG53.mjs.map} +1 -1
- package/dist/{chunk-SAVJLOGS.mjs → chunk-P4I7G5PW.mjs} +5 -5
- package/dist/{chunk-SAVJLOGS.mjs.map → chunk-P4I7G5PW.mjs.map} +1 -1
- package/dist/{chunk-R4KMFKP4.mjs → chunk-QAGQ6OH4.mjs} +6 -6
- package/dist/{chunk-R4KMFKP4.mjs.map → chunk-QAGQ6OH4.mjs.map} +1 -1
- package/dist/{chunk-PBWX4LU2.mjs → chunk-QCBC4ME5.mjs} +3 -2
- package/dist/chunk-QCBC4ME5.mjs.map +1 -0
- package/dist/{chunk-UD37YQ4T.js → chunk-QSLBGCB5.js} +82 -38
- package/dist/chunk-QSLBGCB5.js.map +1 -0
- package/dist/{chunk-EHJNOVHL.mjs → chunk-RSY4ONVR.mjs} +4 -4
- package/dist/{chunk-EHJNOVHL.mjs.map → chunk-RSY4ONVR.mjs.map} +1 -1
- package/dist/{chunk-TS3WC3G4.mjs → chunk-SUQLII3F.mjs} +3 -3
- package/dist/{chunk-TS3WC3G4.mjs.map → chunk-SUQLII3F.mjs.map} +1 -1
- package/dist/{chunk-PMZDGU63.js → chunk-TCL7LRRU.js} +14 -14
- package/dist/{chunk-PMZDGU63.js.map → chunk-TCL7LRRU.js.map} +1 -1
- package/dist/{chunk-ZKPFXBE7.js → chunk-TMDAR6XW.js} +10 -10
- package/dist/{chunk-ZKPFXBE7.js.map → chunk-TMDAR6XW.js.map} +1 -1
- package/dist/{chunk-KD7353FR.js → chunk-TVIU7DLZ.js} +26 -8
- package/dist/chunk-TVIU7DLZ.js.map +1 -0
- package/dist/{chunk-UYANLSRC.js → chunk-TX4BUYX4.js} +5 -5
- package/dist/{chunk-UYANLSRC.js.map → chunk-TX4BUYX4.js.map} +1 -1
- package/dist/{chunk-RJJH6UZU.js → chunk-VJLOL7FR.js} +2 -2
- package/dist/chunk-VJLOL7FR.js.map +1 -0
- package/dist/{chunk-ZA2AXUIB.mjs → chunk-VXJTDBSM.mjs} +3 -3
- package/dist/{chunk-ZA2AXUIB.mjs.map → chunk-VXJTDBSM.mjs.map} +1 -1
- package/dist/{chunk-HDQNM3GC.mjs → chunk-W7MQSEUR.mjs} +7 -7
- package/dist/{chunk-HDQNM3GC.mjs.map → chunk-W7MQSEUR.mjs.map} +1 -1
- package/dist/{chunk-HFRMDYNW.mjs → chunk-X36H75RR.mjs} +3 -3
- package/dist/{chunk-HFRMDYNW.mjs.map → chunk-X36H75RR.mjs.map} +1 -1
- package/dist/{chunk-2LHXOVX2.mjs → chunk-XRWMJVSI.mjs} +3 -3
- package/dist/{chunk-2LHXOVX2.mjs.map → chunk-XRWMJVSI.mjs.map} +1 -1
- package/dist/{chunk-DTWQA7TN.mjs → chunk-YHWZITIY.mjs} +5 -5
- package/dist/{chunk-DTWQA7TN.mjs.map → chunk-YHWZITIY.mjs.map} +1 -1
- package/dist/{chunk-KDCMQRYI.mjs → chunk-YNH3ILYV.mjs} +7 -7
- package/dist/{chunk-KDCMQRYI.mjs.map → chunk-YNH3ILYV.mjs.map} +1 -1
- package/dist/{chunk-ZTAAFZNC.mjs → chunk-YXUYWO2W.mjs} +3 -3
- package/dist/{chunk-ZTAAFZNC.mjs.map → chunk-YXUYWO2W.mjs.map} +1 -1
- package/dist/components/AdvancedPickers.d.mts +19 -3
- package/dist/components/AdvancedPickers.d.ts +19 -3
- package/dist/components/AdvancedPickers.js +9 -9
- package/dist/components/AdvancedPickers.mjs +5 -5
- package/dist/components/AppShell.d.mts +11 -1
- package/dist/components/AppShell.d.ts +11 -1
- package/dist/components/AppShell.js +8 -7
- package/dist/components/AppShell.mjs +6 -5
- package/dist/components/Carousel.js +3 -3
- package/dist/components/Carousel.mjs +2 -2
- package/dist/components/Code.js +4 -4
- package/dist/components/Code.mjs +2 -2
- package/dist/components/Comments.js +9 -9
- package/dist/components/Comments.mjs +6 -6
- package/dist/components/Commerce.js +19 -19
- package/dist/components/Commerce.mjs +8 -8
- package/dist/components/ContextMenu.js +3 -3
- package/dist/components/ContextMenu.mjs +2 -2
- package/dist/components/DataTable.js +12 -12
- package/dist/components/DataTable.mjs +6 -6
- package/dist/components/Display.js +14 -14
- package/dist/components/Display.mjs +3 -3
- package/dist/components/Display2.js +7 -7
- package/dist/components/Display2.mjs +3 -3
- package/dist/components/Display3.js +11 -11
- package/dist/components/Display3.mjs +5 -5
- package/dist/components/Editing.js +13 -13
- package/dist/components/Editing.mjs +8 -8
- package/dist/components/Filters.js +10 -10
- package/dist/components/Filters.mjs +4 -4
- package/dist/components/Form.js +12 -12
- package/dist/components/Form.mjs +2 -2
- package/dist/components/Gallery.js +6 -6
- package/dist/components/Gallery.mjs +4 -4
- package/dist/components/HoverCard.js +3 -3
- package/dist/components/HoverCard.mjs +2 -2
- package/dist/components/Icons.d.mts +4 -1
- package/dist/components/Icons.d.ts +4 -1
- package/dist/components/Icons.js +84 -72
- package/dist/components/Icons.mjs +1 -1
- package/dist/components/Inputs.js +8 -8
- package/dist/components/Inputs.mjs +4 -4
- package/dist/components/InputsExtra.js +14 -14
- package/dist/components/InputsExtra.mjs +5 -5
- package/dist/components/Layout.js +22 -22
- package/dist/components/Layout.mjs +3 -3
- package/dist/components/Logo.js +3 -3
- package/dist/components/Logo.mjs +2 -2
- package/dist/components/Marketing.js +5 -5
- package/dist/components/Marketing.mjs +2 -2
- package/dist/components/Menubar.js +3 -3
- package/dist/components/Menubar.mjs +2 -2
- package/dist/components/NavigationMenu.js +4 -4
- package/dist/components/NavigationMenu.mjs +3 -3
- package/dist/components/Notifications.js +5 -5
- package/dist/components/Notifications.mjs +4 -4
- package/dist/components/Overlay.js +8 -8
- package/dist/components/Overlay.mjs +6 -6
- package/dist/components/Permissions.js +6 -6
- package/dist/components/Permissions.mjs +5 -5
- package/dist/components/Pickers.js +9 -9
- package/dist/components/Pickers.mjs +4 -4
- package/dist/components/Popover.js +3 -3
- package/dist/components/Popover.mjs +2 -2
- package/dist/components/Toast.js +5 -5
- package/dist/components/Toast.mjs +3 -3
- package/dist/hooks/index.js +10 -10
- package/dist/hooks/index.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +276 -264
- package/dist/index.mjs +39 -39
- package/dist/locale/index.d.mts +2 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/index.js +6 -6
- package/dist/locale/index.mjs +2 -2
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-3HA3VO2I.js.map +0 -1
- package/dist/chunk-H3227BHR.mjs.map +0 -1
- package/dist/chunk-KD7353FR.js.map +0 -1
- package/dist/chunk-KVOPVYZ5.mjs.map +0 -1
- package/dist/chunk-PBWX4LU2.mjs.map +0 -1
- package/dist/chunk-RJJH6UZU.js.map +0 -1
- package/dist/chunk-TMU6UXWF.mjs.map +0 -1
- package/dist/chunk-U6ZXX4WF.js.map +0 -1
- package/dist/chunk-UD37YQ4T.js.map +0 -1
- package/dist/chunk-VHYTJD6Z.mjs.map +0 -1
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
var chunkMVJITG75_js = require('./chunk-MVJITG75.js');
|
|
5
5
|
var chunkWAGWB35Q_js = require('./chunk-WAGWB35Q.js');
|
|
6
|
-
var
|
|
7
|
-
var chunk3HA3VO2I_js = require('./chunk-3HA3VO2I.js');
|
|
8
|
-
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
6
|
+
var chunkHB5VGI2W_js = require('./chunk-HB5VGI2W.js');
|
|
9
7
|
var chunkXMLBKK7X_js = require('./chunk-XMLBKK7X.js');
|
|
10
8
|
var chunkCRKYET66_js = require('./chunk-CRKYET66.js');
|
|
9
|
+
var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
|
|
10
|
+
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
11
11
|
var React = require('react');
|
|
12
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
13
13
|
|
|
@@ -46,7 +46,7 @@ function Combobox({
|
|
|
46
46
|
searchable = true,
|
|
47
47
|
renderOption
|
|
48
48
|
}) {
|
|
49
|
-
const locale =
|
|
49
|
+
const locale = chunkHB5VGI2W_js.useLocale();
|
|
50
50
|
const ph = placeholder ?? locale["common.search"];
|
|
51
51
|
const empty = emptyMessage ?? locale["common.noResults"];
|
|
52
52
|
const [open, setOpen] = React__namespace.useState(false);
|
|
@@ -156,7 +156,7 @@ function Combobox({
|
|
|
156
156
|
inputRef.current?.focus();
|
|
157
157
|
},
|
|
158
158
|
"aria-label": locale["picker.clearSelection"],
|
|
159
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
159
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.X, { size: 16 })
|
|
160
160
|
}
|
|
161
161
|
),
|
|
162
162
|
open && /* @__PURE__ */ jsxRuntime.jsx(chunkWAGWB35Q_js.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -211,7 +211,7 @@ function DatePicker({
|
|
|
211
211
|
id,
|
|
212
212
|
format = "auto"
|
|
213
213
|
}) {
|
|
214
|
-
const locale =
|
|
214
|
+
const locale = chunkHB5VGI2W_js.useLocale();
|
|
215
215
|
const fmt = chunkMVJITG75_js.resolveDateFormat(format);
|
|
216
216
|
const ph = placeholder ?? chunkMVJITG75_js.dateFormatPlaceholder(fmt);
|
|
217
217
|
const weekdays = locale["picker.weekdaysShort"];
|
|
@@ -262,7 +262,7 @@ function DatePicker({
|
|
|
262
262
|
onClick: () => setOpen((o) => !o),
|
|
263
263
|
disabled,
|
|
264
264
|
"aria-label": locale["picker.openCalendar"],
|
|
265
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
265
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.CalendarIcon, { size: 16 })
|
|
266
266
|
}
|
|
267
267
|
),
|
|
268
268
|
open && /* @__PURE__ */ jsxRuntime.jsx(chunkWAGWB35Q_js.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -279,13 +279,13 @@ function DatePicker({
|
|
|
279
279
|
},
|
|
280
280
|
children: [
|
|
281
281
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "datepicker__nav", children: [
|
|
282
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, -1)), "aria-label": locale["calendar.prevMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
282
|
+
/* @__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 }) }),
|
|
283
283
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "datepicker__title", children: [
|
|
284
284
|
months[view.getMonth()],
|
|
285
285
|
" ",
|
|
286
286
|
view.getFullYear()
|
|
287
287
|
] }),
|
|
288
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => setView((v) => chunkMVJITG75_js.addMonths(v, 1)), "aria-label": locale["calendar.nextMonth"], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
288
|
+
/* @__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 }) })
|
|
289
289
|
] }),
|
|
290
290
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "datepicker__grid", children: [
|
|
291
291
|
weekdays.map((w, i) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "datepicker__dow", children: w }, i)),
|
|
@@ -328,7 +328,7 @@ function FileUpload({
|
|
|
328
328
|
const [drag, setDrag] = React__namespace.useState(false);
|
|
329
329
|
const inputRef = React__namespace.useRef(null);
|
|
330
330
|
const hintId = React__namespace.useId();
|
|
331
|
-
const locale =
|
|
331
|
+
const locale = chunkHB5VGI2W_js.useLocale();
|
|
332
332
|
const handle = (list) => {
|
|
333
333
|
if (!list) return;
|
|
334
334
|
let arr = Array.from(list);
|
|
@@ -433,7 +433,7 @@ function GridPickerField({
|
|
|
433
433
|
onClick: () => setOpen((o) => !o),
|
|
434
434
|
disabled,
|
|
435
435
|
"aria-label": ariaLabel,
|
|
436
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
436
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.CalendarIcon, { size: 16 })
|
|
437
437
|
}
|
|
438
438
|
),
|
|
439
439
|
open && /* @__PURE__ */ jsxRuntime.jsx(chunkWAGWB35Q_js.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -450,9 +450,9 @@ function GridPickerField({
|
|
|
450
450
|
},
|
|
451
451
|
children: [
|
|
452
452
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gridpicker__nav", children: [
|
|
453
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onPrev, "aria-label": prevLabel, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
453
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onPrev, "aria-label": prevLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.ChevronLeft, { size: 16 }) }),
|
|
454
454
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "gridpicker__title", children: navTitle }),
|
|
455
|
-
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onNext, "aria-label": nextLabel, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
455
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: onNext, "aria-label": nextLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.ChevronRight, { size: 16 }) })
|
|
456
456
|
] }),
|
|
457
457
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "gridpicker__grid", children: cells.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
458
458
|
"button",
|
|
@@ -486,7 +486,7 @@ function YearPicker({
|
|
|
486
486
|
id,
|
|
487
487
|
className
|
|
488
488
|
}) {
|
|
489
|
-
const t =
|
|
489
|
+
const t = chunkHB5VGI2W_js.useLocale();
|
|
490
490
|
const base = value ?? (/* @__PURE__ */ new Date()).getFullYear();
|
|
491
491
|
const [decade, setDecade] = React__namespace.useState(Math.floor(base / 10) * 10);
|
|
492
492
|
React__namespace.useEffect(() => {
|
|
@@ -534,7 +534,7 @@ function MonthPicker({
|
|
|
534
534
|
id,
|
|
535
535
|
className
|
|
536
536
|
}) {
|
|
537
|
-
const t =
|
|
537
|
+
const t = chunkHB5VGI2W_js.useLocale();
|
|
538
538
|
const months = t["calendar.months"];
|
|
539
539
|
const base = value ?? /* @__PURE__ */ new Date();
|
|
540
540
|
const [year, setYear] = React__namespace.useState(base.getFullYear());
|
|
@@ -576,5 +576,5 @@ exports.DatePicker = DatePicker;
|
|
|
576
576
|
exports.FileUpload = FileUpload;
|
|
577
577
|
exports.MonthPicker = MonthPicker;
|
|
578
578
|
exports.YearPicker = YearPicker;
|
|
579
|
-
//# sourceMappingURL=chunk-
|
|
580
|
-
//# sourceMappingURL=chunk-
|
|
579
|
+
//# sourceMappingURL=chunk-542LEDCL.js.map
|
|
580
|
+
//# sourceMappingURL=chunk-542LEDCL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Pickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","jsx","X","Portal","Fragment","resolveDateFormat","dateFormatPlaceholder","startOfMonth","buildMonthGrid","formatDate","parseDate","CalendarIcon","addMonths","ChevronLeft","ChevronRight","isSameDay"],"mappings":"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","file":"chunk-ZQ4HEU55.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X } from './Icons';\nimport { resolveDateFormat, formatDate, parseDate, dateFormatPlaceholder, startOfMonth, addMonths, isSameDay, buildMonthGrid, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- Combobox -----------------------------------------------------\nexport interface ComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps<T = string> {\n value: T | null;\n onChange: (value: T | null) => void;\n options: ComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: ComboboxOption<T>, query: string) => boolean;\n className?: string;\n invalid?: boolean;\n disabled?: boolean;\n id?: string;\n /**\n * Whether the trigger is a typeable text input that filters options.\n * Default `true` (the searchable Combobox). Set `false` for a non-typing\n * picker: button trigger + the same kit-styled listbox, no filter, full\n * list always. Closes the gap between native `<Select>` (jarring native\n * dropdown) and the searchable Combobox — same visual register, no input.\n */\n searchable?: boolean;\n /**\n * Custom renderer for each option's content in the listbox. Receives the\n * option; return any node (e.g. an id `Badge` + the name). Falls back to\n * `label` (+ `description`) when omitted. The searchable input still shows\n * `label` as text — only the listbox rows are customized.\n */\n renderOption?: (option: ComboboxOption<T>) => React.ReactNode;\n}\n\nconst defaultFilter = <T,>(o: ComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function Combobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = defaultFilter,\n className, invalid, disabled, id,\n searchable = true, renderOption,\n}: ComboboxProps<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 // Stable per-instance listbox id so multiple Comboboxes don't collide on aria-controls.\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n\n const selected = React.useMemo(\n () => options.find((o) => o.value === value) ?? null,\n [options, 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; here we only need\n // outside-click (closeOnEscape: false avoids a double close).\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n React.useEffect(() => { setActive(0); }, [query, open]);\n\n const onKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (!open) setOpen(true);\n else setActive((a) => Math.min(filtered.length - 1, a + 1));\n } else if (e.key === 'ArrowUp') {\n // Only navigate when the listbox is open (no-op otherwise).\n if (!open) return;\n e.preventDefault();\n setActive((a) => Math.max(0, a - 1));\n } else if (e.key === 'Enter') {\n // Only commit when the listbox is open — without this gate, Enter on\n // a button trigger that just opened would race with the open and\n // immediately select the first option.\n if (!open) return;\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) {\n onChange(opt.value);\n setQuery('');\n setOpen(false);\n }\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={wrapRef} className={cx('combobox', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n {searchable ? (\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__input\"\n placeholder={ph}\n disabled={disabled}\n value={open ? query : selected?.label ?? ''}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={onKey}\n />\n ) : (\n // Non-typing trigger: button shaped like `.combobox__input` (same\n // border / radius / chevron) so the two variants line up visually.\n // No clear button — the user re-picks from the listbox instead.\n <button\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__trigger\"\n disabled={disabled}\n onClick={() => setOpen((o) => !o)}\n onKeyDown={onKey}\n >\n {selected ? (\n <span className=\"combobox__trigger-label\">{selected.label}</span>\n ) : (\n <span className=\"combobox__trigger-placeholder\">{ph}</span>\n )}\n </button>\n )}\n {searchable && selected && !open && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n onClick={() => { onChange(null); setQuery(''); inputRef.current?.focus(); }}\n aria-label={locale['picker.clearSelection']}\n ><X size={16} /></button>\n )}\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n className={cx('combobox__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=\"combobox__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={o.value === value}\n aria-disabled={o.disabled}\n className={cx('combobox__option', i === active && 'is-active', o.value === value && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => {\n e.preventDefault();\n if (o.disabled) return;\n onChange(o.value);\n setQuery('');\n setOpen(false);\n }}\n >\n {renderOption ? (\n renderOption(o)\n ) : (\n <>\n <span className=\"combobox__option-label\">{o.label}</span>\n {o.description && <span className=\"combobox__option-desc\">{o.description}</span>}\n </>\n )}\n </li>\n ))\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DatePicker (text + calendar popover) -------------------------\nexport interface DatePickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n className?: string;\n id?: string;\n /**\n * Display & parse format. Default `'auto'` derives from `configureBrand().locale`\n * (e.g. `es-CL` → `dd-mm-aaaa`, `en-US` → `mm-dd-aaaa`, `ja-JP` → `aaaa-mm-dd`).\n */\n format?: DateFormat;\n}\n\nexport function DatePicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, className, id, format = 'auto',\n}: DatePickerProps) {\n const locale = useLocale();\n const fmt = resolveDateFormat(format);\n const ph = placeholder ?? dateFormatPlaceholder(fmt);\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(value ?? new Date()));\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition — same primitive as Combobox above. No\n // returnFocusRef: the input opens on focus, so refocusing it on close\n // would immediately reopen the calendar (Combobox omits it for the same\n // reason). Escape still closes via useDismiss's default handler.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, popoverRef],\n });\n\n React.useEffect(() => {\n if (value) setView(startOfMonth(value));\n }, [value]);\n\n const { cells } = buildMonthGrid(view, 0);\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 return (\n <div ref={wrapRef} className={cx('datepicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n id={id}\n type=\"text\"\n className=\"datepicker__input\"\n placeholder={ph}\n disabled={disabled}\n value={value ? formatDate(value, fmt) : ''}\n onChange={(e) => {\n const d = parseDate(e.target.value, fmt);\n onChange(d);\n }}\n onFocus={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"datepicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={locale['picker.openCalendar']}\n ><CalendarIcon size={16} /></button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('datepicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"datepicker__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span className=\"datepicker__title\">{months[view.getMonth()]} {view.getFullYear()}</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=\"datepicker__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"datepicker__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = value && isSameDay(d, value);\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('datepicker__day', sel && 'is-selected', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onClick={() => { onChange(d); setOpen(false); }}\n >\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- FileUpload (drop zone) ---------------------------------------\nexport interface FileUploadProps {\n onFiles: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // bytes\n disabled?: boolean;\n className?: string;\n hint?: React.ReactNode;\n /** Accessible name for the drop zone (e.g. \"Subir foto de perfil\"). */\n 'aria-label'?: string;\n}\n\nexport function FileUpload({\n onFiles, accept, multiple = false, maxSize, disabled, className, hint,\n 'aria-label': ariaLabel,\n}: FileUploadProps) {\n const [drag, setDrag] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const hintId = React.useId();\n const locale = useLocale();\n const handle = (list: FileList | null) => {\n if (!list) return;\n let arr = Array.from(list);\n if (maxSize) arr = arr.filter((f) => f.size <= maxSize);\n if (!multiple) arr = arr.slice(0, 1);\n onFiles(arr);\n };\n return (\n <div\n className={cx('file-upload', drag && 'is-drag', disabled && 'is-disabled', className)}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled) handle(e.dataTransfer.files); }}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-describedby={hint ? hintId : undefined}\n onKeyDown={(e) => { if ((e.key === 'Enter' || e.key === ' ') && !disabled) inputRef.current?.click(); }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n hidden\n onChange={(e) => handle(e.target.files)}\n />\n <div className=\"file-upload__icon\" aria-hidden=\"true\">⤴</div>\n <div className=\"file-upload__title\">{locale['fileUpload.title']}</div>\n {hint && <div id={hintId} className=\"file-upload__hint\">{hint}</div>}\n </div>\n );\n}\n\n// ---------- GridPickerField (shared shell: YearPicker / MonthPicker) ------\ninterface GridCell {\n key: string;\n label: React.ReactNode;\n selected?: boolean;\n /** Dimmed (outside the current decade) — YearPicker only. */\n outside?: boolean;\n disabled?: boolean;\n onSelect: () => void;\n}\n\ninterface GridPickerFieldProps {\n rootClass: string;\n displayValue: string;\n placeholder: string;\n ariaLabel: string;\n navTitle: React.ReactNode;\n prevLabel: string;\n nextLabel: string;\n onPrev: () => void;\n onNext: () => void;\n cells: GridCell[];\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nfunction GridPickerField({\n rootClass, displayValue, placeholder, ariaLabel, navTitle,\n prevLabel, nextLabel, onPrev, onNext, cells,\n disabled, invalid, id, className,\n}: GridPickerFieldProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Same floating primitive as DatePicker (Portal + flip/clamp + dismiss).\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n useDismiss({ open, onDismiss: () => setOpen(false), refs: [wrapRef, popoverRef] });\n\n return (\n <div\n ref={wrapRef}\n className={cx(rootClass, 'gridpicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}\n >\n <input\n id={id}\n type=\"text\"\n readOnly\n className=\"gridpicker__input\"\n placeholder={placeholder}\n disabled={disabled}\n value={displayValue}\n onFocus={() => setOpen(true)}\n onClick={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"gridpicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={ariaLabel}\n >\n <CalendarIcon size={16} />\n </button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('gridpicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"gridpicker__nav\">\n <button type=\"button\" onClick={onPrev} aria-label={prevLabel}><ChevronLeft size={16} /></button>\n <span className=\"gridpicker__title\">{navTitle}</span>\n <button type=\"button\" onClick={onNext} aria-label={nextLabel}><ChevronRight size={16} /></button>\n </div>\n <div className=\"gridpicker__grid\">\n {cells.map((c) => (\n <button\n key={c.key}\n type=\"button\"\n className={cx('gridpicker__cell', c.selected && 'is-selected', c.outside && 'is-out')}\n disabled={c.disabled}\n onClick={() => { c.onSelect(); setOpen(false); }}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- YearPicker ---------------------------------------------------\nexport interface YearPickerProps {\n value: number | null;\n onChange: (year: number | null) => void;\n minYear?: number;\n maxYear?: number;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nexport function YearPicker({\n value, onChange, minYear, maxYear, placeholder,\n disabled, invalid, id, className,\n}: YearPickerProps) {\n const t = useLocale();\n const base = value ?? new Date().getFullYear();\n const [decade, setDecade] = React.useState(Math.floor(base / 10) * 10);\n\n React.useEffect(() => {\n if (value != null) setDecade(Math.floor(value / 10) * 10);\n }, [value]);\n\n const cells: GridCell[] = Array.from({ length: 12 }, (_, i) => {\n const year = decade - 1 + i;\n return {\n key: String(year),\n label: year,\n selected: value === year,\n outside: year < decade || year > decade + 9,\n disabled: (minYear != null && year < minYear) || (maxYear != null && year > maxYear),\n onSelect: () => onChange(year),\n };\n });\n\n return (\n <GridPickerField\n rootClass=\"yearpicker\"\n displayValue={value != null ? String(value) : ''}\n placeholder={placeholder ?? t['picker.selectYear']}\n ariaLabel={t['picker.openCalendar']}\n navTitle={`${decade}-${decade + 9}`}\n prevLabel={t['picker.prevDecade']}\n nextLabel={t['picker.nextDecade']}\n onPrev={() => setDecade((d) => d - 10)}\n onNext={() => setDecade((d) => d + 10)}\n cells={cells}\n disabled={disabled}\n invalid={invalid}\n id={id}\n className={className}\n />\n );\n}\n\n// ---------- MonthPicker --------------------------------------------------\nexport interface MonthPickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nexport function MonthPicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, id, className,\n}: MonthPickerProps) {\n const t = useLocale();\n const months = t['calendar.months'];\n const base = value ?? new Date();\n const [year, setYear] = React.useState(base.getFullYear());\n\n React.useEffect(() => {\n if (value) setYear(value.getFullYear());\n }, [value]);\n\n const monthStart = (y: number, m: number) => new Date(y, m, 1);\n const outOfRange = (m: number) =>\n (minDate != null && monthStart(year, m) < monthStart(minDate.getFullYear(), minDate.getMonth())) ||\n (maxDate != null && monthStart(year, m) > monthStart(maxDate.getFullYear(), maxDate.getMonth()));\n\n const cells: GridCell[] = months.map((name, m) => ({\n key: String(m),\n label: name,\n selected: !!value && value.getFullYear() === year && value.getMonth() === m,\n disabled: outOfRange(m),\n onSelect: () => onChange(new Date(year, m, 1)),\n }));\n\n return (\n <GridPickerField\n rootClass=\"monthpicker\"\n displayValue={value ? `${months[value.getMonth()]} ${value.getFullYear()}` : ''}\n placeholder={placeholder ?? t['picker.selectMonth']}\n ariaLabel={t['picker.openCalendar']}\n navTitle={String(year)}\n prevLabel={t['picker.prevYear']}\n nextLabel={t['picker.nextYear']}\n onPrev={() => setYear((y) => y - 1)}\n onNext={() => setYear((y) => y + 1)}\n cells={cells}\n disabled={disabled}\n invalid={invalid}\n id={id}\n className={className}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Pickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","jsx","X","Portal","Fragment","resolveDateFormat","dateFormatPlaceholder","startOfMonth","buildMonthGrid","formatDate","parseDate","CalendarIcon","addMonths","ChevronLeft","ChevronRight","isSameDay"],"mappings":"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","file":"chunk-542LEDCL.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X } from './Icons';\nimport { resolveDateFormat, formatDate, parseDate, dateFormatPlaceholder, startOfMonth, addMonths, isSameDay, buildMonthGrid, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- Combobox -----------------------------------------------------\nexport interface ComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps<T = string> {\n value: T | null;\n onChange: (value: T | null) => void;\n options: ComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: ComboboxOption<T>, query: string) => boolean;\n className?: string;\n invalid?: boolean;\n disabled?: boolean;\n id?: string;\n /**\n * Whether the trigger is a typeable text input that filters options.\n * Default `true` (the searchable Combobox). Set `false` for a non-typing\n * picker: button trigger + the same kit-styled listbox, no filter, full\n * list always. Closes the gap between native `<Select>` (jarring native\n * dropdown) and the searchable Combobox — same visual register, no input.\n */\n searchable?: boolean;\n /**\n * Custom renderer for each option's content in the listbox. Receives the\n * option; return any node (e.g. an id `Badge` + the name). Falls back to\n * `label` (+ `description`) when omitted. The searchable input still shows\n * `label` as text — only the listbox rows are customized.\n */\n renderOption?: (option: ComboboxOption<T>) => React.ReactNode;\n}\n\nconst defaultFilter = <T,>(o: ComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function Combobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = defaultFilter,\n className, invalid, disabled, id,\n searchable = true, renderOption,\n}: ComboboxProps<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 // Stable per-instance listbox id so multiple Comboboxes don't collide on aria-controls.\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n\n const selected = React.useMemo(\n () => options.find((o) => o.value === value) ?? null,\n [options, 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; here we only need\n // outside-click (closeOnEscape: false avoids a double close).\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n React.useEffect(() => { setActive(0); }, [query, open]);\n\n const onKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (!open) setOpen(true);\n else setActive((a) => Math.min(filtered.length - 1, a + 1));\n } else if (e.key === 'ArrowUp') {\n // Only navigate when the listbox is open (no-op otherwise).\n if (!open) return;\n e.preventDefault();\n setActive((a) => Math.max(0, a - 1));\n } else if (e.key === 'Enter') {\n // Only commit when the listbox is open — without this gate, Enter on\n // a button trigger that just opened would race with the open and\n // immediately select the first option.\n if (!open) return;\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) {\n onChange(opt.value);\n setQuery('');\n setOpen(false);\n }\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={wrapRef} className={cx('combobox', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n {searchable ? (\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__input\"\n placeholder={ph}\n disabled={disabled}\n value={open ? query : selected?.label ?? ''}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); }}\n onKeyDown={onKey}\n />\n ) : (\n // Non-typing trigger: button shaped like `.combobox__input` (same\n // border / radius / chevron) so the two variants line up visually.\n // No clear button — the user re-picks from the listbox instead.\n <button\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"combobox__trigger\"\n disabled={disabled}\n onClick={() => setOpen((o) => !o)}\n onKeyDown={onKey}\n >\n {selected ? (\n <span className=\"combobox__trigger-label\">{selected.label}</span>\n ) : (\n <span className=\"combobox__trigger-placeholder\">{ph}</span>\n )}\n </button>\n )}\n {searchable && selected && !open && (\n <button\n type=\"button\"\n className=\"combobox__clear\"\n onClick={() => { onChange(null); setQuery(''); inputRef.current?.focus(); }}\n aria-label={locale['picker.clearSelection']}\n ><X size={16} /></button>\n )}\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n className={cx('combobox__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=\"combobox__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={o.value === value}\n aria-disabled={o.disabled}\n className={cx('combobox__option', i === active && 'is-active', o.value === value && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => {\n e.preventDefault();\n if (o.disabled) return;\n onChange(o.value);\n setQuery('');\n setOpen(false);\n }}\n >\n {renderOption ? (\n renderOption(o)\n ) : (\n <>\n <span className=\"combobox__option-label\">{o.label}</span>\n {o.description && <span className=\"combobox__option-desc\">{o.description}</span>}\n </>\n )}\n </li>\n ))\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DatePicker (text + calendar popover) -------------------------\nexport interface DatePickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n className?: string;\n id?: string;\n /**\n * Display & parse format. Default `'auto'` derives from `configureBrand().locale`\n * (e.g. `es-CL` → `dd-mm-aaaa`, `en-US` → `mm-dd-aaaa`, `ja-JP` → `aaaa-mm-dd`).\n */\n format?: DateFormat;\n}\n\nexport function DatePicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, className, id, format = 'auto',\n}: DatePickerProps) {\n const locale = useLocale();\n const fmt = resolveDateFormat(format);\n const ph = placeholder ?? dateFormatPlaceholder(fmt);\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(value ?? new Date()));\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition — same primitive as Combobox above. No\n // returnFocusRef: the input opens on focus, so refocusing it on close\n // would immediately reopen the calendar (Combobox omits it for the same\n // reason). Escape still closes via useDismiss's default handler.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, popoverRef],\n });\n\n React.useEffect(() => {\n if (value) setView(startOfMonth(value));\n }, [value]);\n\n const { cells } = buildMonthGrid(view, 0);\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 return (\n <div ref={wrapRef} className={cx('datepicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <input\n id={id}\n type=\"text\"\n className=\"datepicker__input\"\n placeholder={ph}\n disabled={disabled}\n value={value ? formatDate(value, fmt) : ''}\n onChange={(e) => {\n const d = parseDate(e.target.value, fmt);\n onChange(d);\n }}\n onFocus={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"datepicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={locale['picker.openCalendar']}\n ><CalendarIcon size={16} /></button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('datepicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"datepicker__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span className=\"datepicker__title\">{months[view.getMonth()]} {view.getFullYear()}</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=\"datepicker__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"datepicker__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = value && isSameDay(d, value);\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('datepicker__day', sel && 'is-selected', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onClick={() => { onChange(d); setOpen(false); }}\n >\n {d.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- FileUpload (drop zone) ---------------------------------------\nexport interface FileUploadProps {\n onFiles: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // bytes\n disabled?: boolean;\n className?: string;\n hint?: React.ReactNode;\n /** Accessible name for the drop zone (e.g. \"Subir foto de perfil\"). */\n 'aria-label'?: string;\n}\n\nexport function FileUpload({\n onFiles, accept, multiple = false, maxSize, disabled, className, hint,\n 'aria-label': ariaLabel,\n}: FileUploadProps) {\n const [drag, setDrag] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const hintId = React.useId();\n const locale = useLocale();\n const handle = (list: FileList | null) => {\n if (!list) return;\n let arr = Array.from(list);\n if (maxSize) arr = arr.filter((f) => f.size <= maxSize);\n if (!multiple) arr = arr.slice(0, 1);\n onFiles(arr);\n };\n return (\n <div\n className={cx('file-upload', drag && 'is-drag', disabled && 'is-disabled', className)}\n onDragOver={(e) => { e.preventDefault(); if (!disabled) setDrag(true); }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e) => { e.preventDefault(); setDrag(false); if (!disabled) handle(e.dataTransfer.files); }}\n onClick={() => !disabled && inputRef.current?.click()}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-describedby={hint ? hintId : undefined}\n onKeyDown={(e) => { if ((e.key === 'Enter' || e.key === ' ') && !disabled) inputRef.current?.click(); }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n hidden\n onChange={(e) => handle(e.target.files)}\n />\n <div className=\"file-upload__icon\" aria-hidden=\"true\">⤴</div>\n <div className=\"file-upload__title\">{locale['fileUpload.title']}</div>\n {hint && <div id={hintId} className=\"file-upload__hint\">{hint}</div>}\n </div>\n );\n}\n\n// ---------- GridPickerField (shared shell: YearPicker / MonthPicker) ------\ninterface GridCell {\n key: string;\n label: React.ReactNode;\n selected?: boolean;\n /** Dimmed (outside the current decade) — YearPicker only. */\n outside?: boolean;\n disabled?: boolean;\n onSelect: () => void;\n}\n\ninterface GridPickerFieldProps {\n rootClass: string;\n displayValue: string;\n placeholder: string;\n ariaLabel: string;\n navTitle: React.ReactNode;\n prevLabel: string;\n nextLabel: string;\n onPrev: () => void;\n onNext: () => void;\n cells: GridCell[];\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nfunction GridPickerField({\n rootClass, displayValue, placeholder, ariaLabel, navTitle,\n prevLabel, nextLabel, onPrev, onNext, cells,\n disabled, invalid, id, className,\n}: GridPickerFieldProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n\n // Same floating primitive as DatePicker (Portal + flip/clamp + dismiss).\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n });\n useDismiss({ open, onDismiss: () => setOpen(false), refs: [wrapRef, popoverRef] });\n\n return (\n <div\n ref={wrapRef}\n className={cx(rootClass, 'gridpicker', invalid && 'is-invalid', disabled && 'is-disabled', className)}\n >\n <input\n id={id}\n type=\"text\"\n readOnly\n className=\"gridpicker__input\"\n placeholder={placeholder}\n disabled={disabled}\n value={displayValue}\n onFocus={() => setOpen(true)}\n onClick={() => setOpen(true)}\n aria-invalid={invalid || undefined}\n />\n <button\n type=\"button\"\n className=\"gridpicker__toggle\"\n onClick={() => setOpen((o) => !o)}\n disabled={disabled}\n aria-label={ariaLabel}\n >\n <CalendarIcon size={16} />\n </button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('gridpicker__popover', 'is-floating')}\n role=\"dialog\"\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n <div className=\"gridpicker__nav\">\n <button type=\"button\" onClick={onPrev} aria-label={prevLabel}><ChevronLeft size={16} /></button>\n <span className=\"gridpicker__title\">{navTitle}</span>\n <button type=\"button\" onClick={onNext} aria-label={nextLabel}><ChevronRight size={16} /></button>\n </div>\n <div className=\"gridpicker__grid\">\n {cells.map((c) => (\n <button\n key={c.key}\n type=\"button\"\n className={cx('gridpicker__cell', c.selected && 'is-selected', c.outside && 'is-out')}\n disabled={c.disabled}\n onClick={() => { c.onSelect(); setOpen(false); }}\n >\n {c.label}\n </button>\n ))}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- YearPicker ---------------------------------------------------\nexport interface YearPickerProps {\n value: number | null;\n onChange: (year: number | null) => void;\n minYear?: number;\n maxYear?: number;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nexport function YearPicker({\n value, onChange, minYear, maxYear, placeholder,\n disabled, invalid, id, className,\n}: YearPickerProps) {\n const t = useLocale();\n const base = value ?? new Date().getFullYear();\n const [decade, setDecade] = React.useState(Math.floor(base / 10) * 10);\n\n React.useEffect(() => {\n if (value != null) setDecade(Math.floor(value / 10) * 10);\n }, [value]);\n\n const cells: GridCell[] = Array.from({ length: 12 }, (_, i) => {\n const year = decade - 1 + i;\n return {\n key: String(year),\n label: year,\n selected: value === year,\n outside: year < decade || year > decade + 9,\n disabled: (minYear != null && year < minYear) || (maxYear != null && year > maxYear),\n onSelect: () => onChange(year),\n };\n });\n\n return (\n <GridPickerField\n rootClass=\"yearpicker\"\n displayValue={value != null ? String(value) : ''}\n placeholder={placeholder ?? t['picker.selectYear']}\n ariaLabel={t['picker.openCalendar']}\n navTitle={`${decade}-${decade + 9}`}\n prevLabel={t['picker.prevDecade']}\n nextLabel={t['picker.nextDecade']}\n onPrev={() => setDecade((d) => d - 10)}\n onNext={() => setDecade((d) => d + 10)}\n cells={cells}\n disabled={disabled}\n invalid={invalid}\n id={id}\n className={className}\n />\n );\n}\n\n// ---------- MonthPicker --------------------------------------------------\nexport interface MonthPickerProps {\n value: Date | null;\n onChange: (date: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n invalid?: boolean;\n id?: string;\n className?: string;\n}\n\nexport function MonthPicker({\n value, onChange, minDate, maxDate, placeholder,\n disabled, invalid, id, className,\n}: MonthPickerProps) {\n const t = useLocale();\n const months = t['calendar.months'];\n const base = value ?? new Date();\n const [year, setYear] = React.useState(base.getFullYear());\n\n React.useEffect(() => {\n if (value) setYear(value.getFullYear());\n }, [value]);\n\n const monthStart = (y: number, m: number) => new Date(y, m, 1);\n const outOfRange = (m: number) =>\n (minDate != null && monthStart(year, m) < monthStart(minDate.getFullYear(), minDate.getMonth())) ||\n (maxDate != null && monthStart(year, m) > monthStart(maxDate.getFullYear(), maxDate.getMonth()));\n\n const cells: GridCell[] = months.map((name, m) => ({\n key: String(m),\n label: name,\n selected: !!value && value.getFullYear() === year && value.getMonth() === m,\n disabled: outOfRange(m),\n onSelect: () => onChange(new Date(year, m, 1)),\n }));\n\n return (\n <GridPickerField\n rootClass=\"monthpicker\"\n displayValue={value ? `${months[value.getMonth()]} ${value.getFullYear()}` : ''}\n placeholder={placeholder ?? t['picker.selectMonth']}\n ariaLabel={t['picker.openCalendar']}\n navTitle={String(year)}\n prevLabel={t['picker.prevYear']}\n nextLabel={t['picker.nextYear']}\n onPrev={() => setYear((y) => y - 1)}\n onNext={() => setYear((y) => y + 1)}\n cells={cells}\n disabled={disabled}\n invalid={invalid}\n id={id}\n className={className}\n />\n );\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useLocale } from './chunk-PBWX4LU2.mjs';
|
|
3
|
-
import { X } from './chunk-VHYTJD6Z.mjs';
|
|
4
|
-
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
5
|
-
import { useScrollLock } from './chunk-R5DCDEB5.mjs';
|
|
6
2
|
import { useDelayedUnmount } from './chunk-U3JH4T3A.mjs';
|
|
7
3
|
import { useEscape } from './chunk-6W7ZGWNA.mjs';
|
|
8
4
|
import { useFocusTrap } from './chunk-XOV4D6J3.mjs';
|
|
5
|
+
import { useScrollLock } from './chunk-R5DCDEB5.mjs';
|
|
6
|
+
import { useLocale } from './chunk-QCBC4ME5.mjs';
|
|
7
|
+
import { X } from './chunk-BJGMROKL.mjs';
|
|
8
|
+
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
9
9
|
import * as React from 'react';
|
|
10
10
|
import { createPortal } from 'react-dom';
|
|
11
11
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -123,5 +123,5 @@ function Drawer({
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
export { Drawer, Modal };
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
126
|
+
//# sourceMappingURL=chunk-5RA2CERT.mjs.map
|
|
127
|
+
//# sourceMappingURL=chunk-5RA2CERT.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Overlay.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Overlay.tsx"],"names":[],"mappings":"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","file":"chunk-5RA2CERT.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { useDelayedUnmount } from '../hooks/useDelayedUnmount';\nimport { useFocusTrap, useEscape, useScrollLock } from '../hooks';\n\n// Exit animation duration in ms. Must match `--duration-exit` and the\n// `is-closing` keyframes in src/styles/index.css (`.modal-backdrop`,\n// `.drawer-backdrop`).\nconst EXIT_MS = 150;\n\nexport interface OverlayProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n className?: string;\n}\n\nexport function Modal({\n open, onClose, title, children, footer, size = 'md',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: OverlayProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n // useDelayedUnmount keeps the DOM mounted during exit animation. The\n // a11y/scroll-lock hooks still consume `open` (the user's intent), not\n // `mounted` — we don't want to trap focus or block scroll while\n // animating out.\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('modal-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('modal', `modal--${size}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"modal__header\">\n <div id={titleId} className=\"modal__title\">{title}</div>\n <button type=\"button\" className=\"modal__close\" onClick={onClose} aria-label={t['modal.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"modal__body\">{children}</div>\n {footer && <div className=\"modal__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n\nexport interface DrawerProps extends OverlayProps {\n side?: 'left' | 'right';\n}\n\nexport function Drawer({\n open, onClose, title, children, footer, side = 'right',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: DrawerProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('drawer-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('drawer', `drawer--${side}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"drawer__header\">\n <div id={titleId} className=\"drawer__title\">{title}</div>\n <button type=\"button\" className=\"drawer__close\" onClick={onClose} aria-label={t['drawer.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"drawer__body\">{children}</div>\n {footer && <div className=\"drawer__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
|
|
5
5
|
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -96,7 +96,7 @@ var Checkbox = React__namespace.forwardRef(function Checkbox2({ className, child
|
|
|
96
96
|
...rest
|
|
97
97
|
}
|
|
98
98
|
),
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "check__box", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "check__box", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.Check, { size: 14, strokeWidth: 3 }) }),
|
|
100
100
|
children != null && /* @__PURE__ */ jsxRuntime.jsx("span", { children })
|
|
101
101
|
] });
|
|
102
102
|
});
|
|
@@ -170,5 +170,5 @@ exports.Radio = Radio;
|
|
|
170
170
|
exports.Select = Select;
|
|
171
171
|
exports.Switch = Switch;
|
|
172
172
|
exports.Textarea = Textarea;
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-6SSTTJV4.js.map
|
|
174
|
+
//# sourceMappingURL=chunk-6SSTTJV4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Form.tsx"],"names":["React","Input","jsxs","cx","jsx","Textarea","Select","Checkbox","Check","Radio","Switch","Label","InputGroup","InputGroupAddon"],"mappings":"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","file":"chunk-74ALPTUE.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check as CheckIcon } from './Icons';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input(\n { invalid, iconLeft, iconRight, className, ...rest },\n ref\n) {\n if (iconLeft || iconRight) {\n return (\n <div className={cx('input-wrap', invalid && 'is-invalid', className)}>\n {iconLeft && <span className=\"input-wrap__icon input-wrap__icon--left\" aria-hidden=\"true\">{iconLeft}</span>}\n <input\n ref={ref}\n className={cx('input', !!iconLeft && 'input--has-left', !!iconRight && 'input--has-right')}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n {iconRight && <span className=\"input-wrap__icon input-wrap__icon--right\" aria-hidden=\"true\">{iconRight}</span>}\n </div>\n );\n }\n return (\n <input\n ref={ref}\n className={cx('input', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n );\n});\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { invalid, className, ...rest },\n ref\n) {\n return (\n <textarea\n ref={ref}\n className={cx('textarea', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n );\n});\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { invalid, className, children, ...rest },\n ref\n) {\n return (\n <select\n ref={ref}\n className={cx('select', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n >\n {children}\n </select>\n );\n});\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Optional label rendered next to the checkbox. */\n children?: React.ReactNode;\n invalid?: boolean;\n /** Tri-state mark (e.g. select-all partially checked). HTML attribute is JS-only. */\n indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { className, children, invalid, indeterminate, ...rest },\n ref\n) {\n // Bridge the forwarded ref with our internal ref so we can set the\n // indeterminate property (HTML doesn't expose it as an attribute).\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = !!indeterminate;\n }, [indeterminate]);\n\n const setRef = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n return (\n <label className={cx('check', invalid && 'is-invalid', className)}>\n <input\n ref={setRef}\n type=\"checkbox\"\n aria-invalid={invalid || undefined}\n aria-checked={indeterminate ? 'mixed' : undefined}\n {...rest}\n />\n <span className=\"check__box\" aria-hidden=\"true\">\n <CheckIcon size={14} strokeWidth={3} />\n </span>\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Optional label rendered next to the radio. */\n children?: React.ReactNode;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { className, children, ...rest },\n ref\n) {\n return (\n <label className={cx('check', 'check--radio', className)}>\n <input ref={ref} type=\"radio\" {...rest} />\n <span className=\"check__box\" aria-hidden=\"true\" />\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Optional label rendered next to the switch. */\n children?: React.ReactNode;\n invalid?: boolean;\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { className, children, invalid, ...rest },\n ref\n) {\n return (\n <label className={cx('switch', invalid && 'is-invalid', className)}>\n {/* role=\"switch\" overrides the native checkbox role so screen readers\n announce \"on/off\" semantics instead of \"checked/unchecked\". */}\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-invalid={invalid || undefined}\n {...rest}\n />\n <span className=\"switch__track\" aria-hidden=\"true\" />\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { required, className, children, ...rest },\n ref\n) {\n return (\n <label ref={ref} className={cx('label', className)} {...rest}>\n {children}\n {required && <span aria-label=\"requerido\" style={{ color: 'var(--color-danger)' }}> *</span>}\n </label>\n );\n});\n\nexport interface FormFieldProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n /** Override the auto-generated id (e.g. when the input is rendered outside FormField). */\n htmlFor?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormField({ label, hint, error, required, htmlFor, children, className }: FormFieldProps) {\n const reactId = React.useId();\n const id = htmlFor ?? reactId;\n const hintId = hint ? `${id}-hint` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = [hintId, errorId].filter(Boolean).join(' ') || undefined;\n\n // Inject id + aria-describedby into the single child element so screen readers\n // announce the helper/error text. Consumer-provided values win.\n const child = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<{ id?: string; 'aria-describedby'?: string }>,\n {\n id: (children.props as { id?: string }).id ?? id,\n 'aria-describedby':\n (children.props as { 'aria-describedby'?: string })['aria-describedby'] ?? describedBy,\n }\n )\n : children;\n\n return (\n <div className={cx('form-field', className)}>\n {label && (\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n )}\n {child}\n {hint && !error && <div id={hintId} className=\"form-field__hint\">{hint}</div>}\n {error && <div id={errorId} className=\"form-field__error\" role=\"alert\">{error}</div>}\n </div>\n );\n}\n\n// ---------- InputGroup --------------------------------------------------\n// Permite combinar un Input con addons a la izquierda/derecha.\n// Uso: <InputGroup><InputGroupAddon>$</InputGroupAddon><Input /></InputGroup>\nexport const InputGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function InputGroup({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('input-group', className)} {...rest} />;\n }\n);\n\nexport const InputGroupAddon = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n function InputGroupAddon({ className, ...rest }, ref) {\n return <span ref={ref} className={cx('input-group__addon', className)} {...rest} />;\n }\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Form.tsx"],"names":["React","Input","jsxs","cx","jsx","Textarea","Select","Checkbox","Check","Radio","Switch","Label","InputGroup","InputGroupAddon"],"mappings":"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","file":"chunk-6SSTTJV4.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check as CheckIcon } from './Icons';\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n invalid?: boolean;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input(\n { invalid, iconLeft, iconRight, className, ...rest },\n ref\n) {\n if (iconLeft || iconRight) {\n return (\n <div className={cx('input-wrap', invalid && 'is-invalid', className)}>\n {iconLeft && <span className=\"input-wrap__icon input-wrap__icon--left\" aria-hidden=\"true\">{iconLeft}</span>}\n <input\n ref={ref}\n className={cx('input', !!iconLeft && 'input--has-left', !!iconRight && 'input--has-right')}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n {iconRight && <span className=\"input-wrap__icon input-wrap__icon--right\" aria-hidden=\"true\">{iconRight}</span>}\n </div>\n );\n }\n return (\n <input\n ref={ref}\n className={cx('input', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n );\n});\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n invalid?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { invalid, className, ...rest },\n ref\n) {\n return (\n <textarea\n ref={ref}\n className={cx('textarea', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n />\n );\n});\n\nexport interface SelectProps extends React.SelectHTMLAttributes<HTMLSelectElement> {\n invalid?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { invalid, className, children, ...rest },\n ref\n) {\n return (\n <select\n ref={ref}\n className={cx('select', invalid && 'is-invalid', className)}\n aria-invalid={invalid || undefined}\n {...rest}\n >\n {children}\n </select>\n );\n});\n\nexport interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Optional label rendered next to the checkbox. */\n children?: React.ReactNode;\n invalid?: boolean;\n /** Tri-state mark (e.g. select-all partially checked). HTML attribute is JS-only. */\n indeterminate?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { className, children, invalid, indeterminate, ...rest },\n ref\n) {\n // Bridge the forwarded ref with our internal ref so we can set the\n // indeterminate property (HTML doesn't expose it as an attribute).\n const innerRef = React.useRef<HTMLInputElement | null>(null);\n React.useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = !!indeterminate;\n }, [indeterminate]);\n\n const setRef = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n return (\n <label className={cx('check', invalid && 'is-invalid', className)}>\n <input\n ref={setRef}\n type=\"checkbox\"\n aria-invalid={invalid || undefined}\n aria-checked={indeterminate ? 'mixed' : undefined}\n {...rest}\n />\n <span className=\"check__box\" aria-hidden=\"true\">\n <CheckIcon size={14} strokeWidth={3} />\n </span>\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Optional label rendered next to the radio. */\n children?: React.ReactNode;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { className, children, ...rest },\n ref\n) {\n return (\n <label className={cx('check', 'check--radio', className)}>\n <input ref={ref} type=\"radio\" {...rest} />\n <span className=\"check__box\" aria-hidden=\"true\" />\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Optional label rendered next to the switch. */\n children?: React.ReactNode;\n invalid?: boolean;\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { className, children, invalid, ...rest },\n ref\n) {\n return (\n <label className={cx('switch', invalid && 'is-invalid', className)}>\n {/* role=\"switch\" overrides the native checkbox role so screen readers\n announce \"on/off\" semantics instead of \"checked/unchecked\". */}\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-invalid={invalid || undefined}\n {...rest}\n />\n <span className=\"switch__track\" aria-hidden=\"true\" />\n {children != null && <span>{children}</span>}\n </label>\n );\n});\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { required, className, children, ...rest },\n ref\n) {\n return (\n <label ref={ref} className={cx('label', className)} {...rest}>\n {children}\n {required && <span aria-label=\"requerido\" style={{ color: 'var(--color-danger)' }}> *</span>}\n </label>\n );\n});\n\nexport interface FormFieldProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n /** Override the auto-generated id (e.g. when the input is rendered outside FormField). */\n htmlFor?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormField({ label, hint, error, required, htmlFor, children, className }: FormFieldProps) {\n const reactId = React.useId();\n const id = htmlFor ?? reactId;\n const hintId = hint ? `${id}-hint` : undefined;\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = [hintId, errorId].filter(Boolean).join(' ') || undefined;\n\n // Inject id + aria-describedby into the single child element so screen readers\n // announce the helper/error text. Consumer-provided values win.\n const child = React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<{ id?: string; 'aria-describedby'?: string }>,\n {\n id: (children.props as { id?: string }).id ?? id,\n 'aria-describedby':\n (children.props as { 'aria-describedby'?: string })['aria-describedby'] ?? describedBy,\n }\n )\n : children;\n\n return (\n <div className={cx('form-field', className)}>\n {label && (\n <Label htmlFor={id} required={required}>\n {label}\n </Label>\n )}\n {child}\n {hint && !error && <div id={hintId} className=\"form-field__hint\">{hint}</div>}\n {error && <div id={errorId} className=\"form-field__error\" role=\"alert\">{error}</div>}\n </div>\n );\n}\n\n// ---------- InputGroup --------------------------------------------------\n// Permite combinar un Input con addons a la izquierda/derecha.\n// Uso: <InputGroup><InputGroupAddon>$</InputGroupAddon><Input /></InputGroup>\nexport const InputGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function InputGroup({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('input-group', className)} {...rest} />;\n }\n);\n\nexport const InputGroupAddon = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n function InputGroupAddon({ className, ...rest }, ref) {\n return <span ref={ref} className={cx('input-group__addon', className)} {...rest} />;\n }\n);\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { useLocale } from './chunk-
|
|
3
|
-
import { Info, AlertCircle, AlertTriangle, CheckCircle, X } from './chunk-
|
|
2
|
+
import { useLocale } from './chunk-QCBC4ME5.mjs';
|
|
3
|
+
import { Info, AlertCircle, AlertTriangle, CheckCircle, X } from './chunk-BJGMROKL.mjs';
|
|
4
4
|
import { cx } from './chunk-IEPCH3JB.mjs';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
@@ -120,5 +120,5 @@ function useToast() {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
export { ToastProvider, useToast };
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-77M3OY2L.mjs.map
|
|
124
|
+
//# sourceMappingURL=chunk-77M3OY2L.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Toast.tsx"],"names":[],"mappings":"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","file":"chunk-ULRTSRBP.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { X, CheckCircle, AlertTriangle, AlertCircle, Info } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { cx } from '../utils/cx';\n\nconst VARIANT_ICON = {\n success: CheckCircle,\n warning: AlertTriangle,\n danger: AlertCircle,\n info: Info,\n} as const;\n\n// Exit animation duration. Must match `--duration-exit` and the\n// `.toast.is-closing` keyframes (`toastSlideOut`) in src/styles/index.css.\nconst EXIT_MS = 150;\n\nexport interface ToastItem {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n variant?: 'info' | 'success' | 'warning' | 'danger';\n duration?: number;\n}\n\ninterface ToastContextValue {\n toasts: ToastItem[];\n push: (t: Omit<ToastItem, 'id'>) => string;\n dismiss: (id: string) => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\ninterface ToastTimerState {\n handle: ReturnType<typeof setTimeout>;\n startedAt: number;\n remaining: number;\n}\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = React.useState<ToastItem[]>([]);\n // Toasts in the closing window: still rendered with `is-closing` class so\n // CSS can play the exit animation, but already removed from new-toast\n // accounting (auto-dismiss timer cancelled, can't be paused/resumed).\n const [closingIds, setClosingIds] = React.useState<Set<string>>(new Set());\n // SSR-safe portal gating. Without this, the first client render emits a\n // `toast-stack` div into document.body via createPortal, while the\n // server-rendered HTML doesn't — Next.js App Router flags it as a\n // hydration mismatch. Starting `mounted=false` keeps the first client\n // render identical to the server; the effect flips it true after\n // hydration and the portal mounts on the next pass.\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => setMounted(true), []);\n const timers = React.useRef<Map<string, ToastTimerState>>(new Map());\n const exitTimers = React.useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());\n const locale = useLocale();\n\n const dismiss = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (state) {\n clearTimeout(state.handle);\n timers.current.delete(id);\n }\n // Already in the closing window? skip (idempotent).\n if (exitTimers.current.has(id)) return;\n setClosingIds((prev) => {\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n const handle = setTimeout(() => {\n exitTimers.current.delete(id);\n setToasts((list) => list.filter((toast) => toast.id !== id));\n setClosingIds((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, EXIT_MS);\n exitTimers.current.set(id, handle);\n }, []);\n\n const push = React.useCallback(\n (t: Omit<ToastItem, 'id'>) => {\n const id = Math.random().toString(36).slice(2);\n const item: ToastItem = { id, duration: 4000, variant: 'info', ...t };\n setToasts((list) => [...list, item]);\n if (item.duration && item.duration > 0) {\n const handle = setTimeout(() => dismiss(id), item.duration);\n timers.current.set(id, { handle, startedAt: Date.now(), remaining: item.duration });\n }\n return id;\n },\n [dismiss]\n );\n\n // Pause auto-dismiss while pointer is over the toast — users reading a\n // multi-line message shouldn't have it disappear mid-read.\n const pause = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (!state) return;\n clearTimeout(state.handle);\n const elapsed = Date.now() - state.startedAt;\n const remaining = Math.max(0, state.remaining - elapsed);\n timers.current.set(id, { ...state, remaining });\n }, []);\n\n const resume = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (!state) return;\n const handle = setTimeout(() => dismiss(id), state.remaining);\n timers.current.set(id, { handle, startedAt: Date.now(), remaining: state.remaining });\n }, [dismiss]);\n\n React.useEffect(() => {\n const map = timers.current;\n const exits = exitTimers.current;\n return () => {\n map.forEach((state) => clearTimeout(state.handle));\n map.clear();\n exits.forEach((handle) => clearTimeout(handle));\n exits.clear();\n };\n }, []);\n\n // Portal the stack to body so it isn't clipped by ancestor stacking contexts\n // (overflow:hidden, transform, filter on app shell layouts).\n // aria-atomic intentionally omitted: with `false` (default), screen readers\n // announce only newly added toasts instead of re-reading the entire stack.\n const stack = (\n <div className=\"toast-stack\" aria-live=\"polite\">\n {toasts.map((t) => {\n const variant = t.variant ?? 'info';\n const Icon = VARIANT_ICON[variant];\n return (\n <div\n key={t.id}\n className={cx('toast', `toast--${variant}`, closingIds.has(t.id) && 'is-closing')}\n role=\"status\"\n onMouseEnter={() => pause(t.id)}\n onMouseLeave={() => resume(t.id)}\n onFocus={() => pause(t.id)}\n onBlur={() => resume(t.id)}\n >\n <span className=\"toast__icon\" aria-hidden=\"true\"><Icon size={20} /></span>\n <div className=\"toast__body\">\n {t.title && <div className=\"toast__title\">{t.title}</div>}\n {t.description && <div className=\"toast__desc\">{t.description}</div>}\n </div>\n <button type=\"button\" className=\"toast__close\" aria-label={locale['toast.close']} onClick={() => dismiss(t.id)}><X size={16} /></button>\n </div>\n );\n })}\n </div>\n );\n\n // Memoize the provider value so consumers calling useToast() to access\n // only `push`/`dismiss` (the common case) don't re-render on every state\n // change. Without this, every toast push churned every consumer.\n const ctx = React.useMemo(() => ({ toasts, push, dismiss }), [toasts, push, dismiss]);\n\n return (\n <ToastContext.Provider value={ctx}>\n {children}\n {mounted && typeof document !== 'undefined' && createPortal(stack, document.body)}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) throw new Error('useToast must be used inside <ToastProvider>');\n return ctx;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Toast.tsx"],"names":[],"mappings":"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","file":"chunk-77M3OY2L.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { X, CheckCircle, AlertTriangle, AlertCircle, Info } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { cx } from '../utils/cx';\n\nconst VARIANT_ICON = {\n success: CheckCircle,\n warning: AlertTriangle,\n danger: AlertCircle,\n info: Info,\n} as const;\n\n// Exit animation duration. Must match `--duration-exit` and the\n// `.toast.is-closing` keyframes (`toastSlideOut`) in src/styles/index.css.\nconst EXIT_MS = 150;\n\nexport interface ToastItem {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n variant?: 'info' | 'success' | 'warning' | 'danger';\n duration?: number;\n}\n\ninterface ToastContextValue {\n toasts: ToastItem[];\n push: (t: Omit<ToastItem, 'id'>) => string;\n dismiss: (id: string) => void;\n}\n\nconst ToastContext = React.createContext<ToastContextValue | null>(null);\n\ninterface ToastTimerState {\n handle: ReturnType<typeof setTimeout>;\n startedAt: number;\n remaining: number;\n}\n\nexport function ToastProvider({ children }: { children: React.ReactNode }) {\n const [toasts, setToasts] = React.useState<ToastItem[]>([]);\n // Toasts in the closing window: still rendered with `is-closing` class so\n // CSS can play the exit animation, but already removed from new-toast\n // accounting (auto-dismiss timer cancelled, can't be paused/resumed).\n const [closingIds, setClosingIds] = React.useState<Set<string>>(new Set());\n // SSR-safe portal gating. Without this, the first client render emits a\n // `toast-stack` div into document.body via createPortal, while the\n // server-rendered HTML doesn't — Next.js App Router flags it as a\n // hydration mismatch. Starting `mounted=false` keeps the first client\n // render identical to the server; the effect flips it true after\n // hydration and the portal mounts on the next pass.\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => setMounted(true), []);\n const timers = React.useRef<Map<string, ToastTimerState>>(new Map());\n const exitTimers = React.useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map());\n const locale = useLocale();\n\n const dismiss = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (state) {\n clearTimeout(state.handle);\n timers.current.delete(id);\n }\n // Already in the closing window? skip (idempotent).\n if (exitTimers.current.has(id)) return;\n setClosingIds((prev) => {\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n const handle = setTimeout(() => {\n exitTimers.current.delete(id);\n setToasts((list) => list.filter((toast) => toast.id !== id));\n setClosingIds((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, EXIT_MS);\n exitTimers.current.set(id, handle);\n }, []);\n\n const push = React.useCallback(\n (t: Omit<ToastItem, 'id'>) => {\n const id = Math.random().toString(36).slice(2);\n const item: ToastItem = { id, duration: 4000, variant: 'info', ...t };\n setToasts((list) => [...list, item]);\n if (item.duration && item.duration > 0) {\n const handle = setTimeout(() => dismiss(id), item.duration);\n timers.current.set(id, { handle, startedAt: Date.now(), remaining: item.duration });\n }\n return id;\n },\n [dismiss]\n );\n\n // Pause auto-dismiss while pointer is over the toast — users reading a\n // multi-line message shouldn't have it disappear mid-read.\n const pause = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (!state) return;\n clearTimeout(state.handle);\n const elapsed = Date.now() - state.startedAt;\n const remaining = Math.max(0, state.remaining - elapsed);\n timers.current.set(id, { ...state, remaining });\n }, []);\n\n const resume = React.useCallback((id: string) => {\n const state = timers.current.get(id);\n if (!state) return;\n const handle = setTimeout(() => dismiss(id), state.remaining);\n timers.current.set(id, { handle, startedAt: Date.now(), remaining: state.remaining });\n }, [dismiss]);\n\n React.useEffect(() => {\n const map = timers.current;\n const exits = exitTimers.current;\n return () => {\n map.forEach((state) => clearTimeout(state.handle));\n map.clear();\n exits.forEach((handle) => clearTimeout(handle));\n exits.clear();\n };\n }, []);\n\n // Portal the stack to body so it isn't clipped by ancestor stacking contexts\n // (overflow:hidden, transform, filter on app shell layouts).\n // aria-atomic intentionally omitted: with `false` (default), screen readers\n // announce only newly added toasts instead of re-reading the entire stack.\n const stack = (\n <div className=\"toast-stack\" aria-live=\"polite\">\n {toasts.map((t) => {\n const variant = t.variant ?? 'info';\n const Icon = VARIANT_ICON[variant];\n return (\n <div\n key={t.id}\n className={cx('toast', `toast--${variant}`, closingIds.has(t.id) && 'is-closing')}\n role=\"status\"\n onMouseEnter={() => pause(t.id)}\n onMouseLeave={() => resume(t.id)}\n onFocus={() => pause(t.id)}\n onBlur={() => resume(t.id)}\n >\n <span className=\"toast__icon\" aria-hidden=\"true\"><Icon size={20} /></span>\n <div className=\"toast__body\">\n {t.title && <div className=\"toast__title\">{t.title}</div>}\n {t.description && <div className=\"toast__desc\">{t.description}</div>}\n </div>\n <button type=\"button\" className=\"toast__close\" aria-label={locale['toast.close']} onClick={() => dismiss(t.id)}><X size={16} /></button>\n </div>\n );\n })}\n </div>\n );\n\n // Memoize the provider value so consumers calling useToast() to access\n // only `push`/`dismiss` (the common case) don't re-render on every state\n // change. Without this, every toast push churned every consumer.\n const ctx = React.useMemo(() => ({ toasts, push, dismiss }), [toasts, push, dismiss]);\n\n return (\n <ToastContext.Provider value={ctx}>\n {children}\n {mounted && typeof document !== 'undefined' && createPortal(stack, document.body)}\n </ToastContext.Provider>\n );\n}\n\nexport function useToast() {\n const ctx = React.useContext(ToastContext);\n if (!ctx) throw new Error('useToast must be used inside <ToastProvider>');\n return ctx;\n}\n"]}
|