@logicplanes/kaeso-ui 0.3.7 → 0.3.8
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/ai/component-guides.md +5 -4
- package/ai/component-registry.json +15 -8
- package/ai/component-registry.md +9 -8
- package/ai/icons.md +1 -1
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +2 -2
- package/dist/blocks/resource-list.js +2 -2
- package/dist/chunks/{app-frame-B9vrgwaE.js → app-frame-Cj_gCbmu.js} +6 -6
- package/dist/chunks/{app-frame-B9vrgwaE.js.map → app-frame-Cj_gCbmu.js.map} +1 -1
- package/dist/chunks/{banner-BBlNFHd-.js → banner-DY1jSc9Y.js} +2 -2
- package/dist/chunks/{banner-BBlNFHd-.js.map → banner-DY1jSc9Y.js.map} +1 -1
- package/dist/chunks/{button-CAPyW-v8.js → button-h2IFCER2.js} +2 -2
- package/dist/chunks/{button-CAPyW-v8.js.map → button-h2IFCER2.js.map} +1 -1
- package/dist/chunks/{calendar-CBeptQFq.js → calendar-cVuezHQ6.js} +5 -2
- package/dist/chunks/calendar-cVuezHQ6.js.map +1 -0
- package/dist/chunks/{code-block-DREsvJ-g.js → code-block-BU8gYeZQ.js} +2 -2
- package/dist/chunks/{code-block-DREsvJ-g.js.map → code-block-BU8gYeZQ.js.map} +1 -1
- package/dist/chunks/{combobox-DqtzsAKG.js → combobox-B9ttar4C.js} +3 -3
- package/dist/chunks/{combobox-DqtzsAKG.js.map → combobox-B9ttar4C.js.map} +1 -1
- package/dist/chunks/{command-list-D5k0uvkR.js → command-list-DZMVrXWD.js} +2 -2
- package/dist/chunks/{command-list-D5k0uvkR.js.map → command-list-DZMVrXWD.js.map} +1 -1
- package/dist/chunks/{copy-button-CNpEnS04.js → copy-button-CXJ7fA9z.js} +3 -3
- package/dist/chunks/{copy-button-CNpEnS04.js.map → copy-button-CXJ7fA9z.js.map} +1 -1
- package/dist/chunks/{core-CqLWVMDI.js → core-Bu6iq5uh.js} +2 -2
- package/dist/chunks/{core-CqLWVMDI.js.map → core-Bu6iq5uh.js.map} +1 -1
- package/dist/chunks/{date-popup-BgDz6SUj.js → date-popup-BJPA_fBm.js} +3 -3
- package/dist/chunks/{date-popup-BgDz6SUj.js.map → date-popup-BJPA_fBm.js.map} +1 -1
- package/dist/chunks/{de-CkXZKaBD.js → de-BnNQtBSV.js} +3 -3
- package/dist/chunks/{de-CkXZKaBD.js.map → de-BnNQtBSV.js.map} +1 -1
- package/dist/chunks/{dialog-B2RzuBu6.js → dialog-BLcP7v24.js} +4 -4
- package/dist/chunks/{dialog-B2RzuBu6.js.map → dialog-BLcP7v24.js.map} +1 -1
- package/dist/chunks/hidden-description-B2zSmLcn.js +23 -0
- package/dist/chunks/hidden-description-B2zSmLcn.js.map +1 -0
- package/dist/chunks/{icon-button-D4O4puwH.js → icon-button-DmKFxQbP.js} +3 -3
- package/dist/chunks/{icon-button-D4O4puwH.js.map → icon-button-DmKFxQbP.js.map} +1 -1
- package/dist/chunks/{identity-CsZvAUwu.js → identity-Chj7fW89.js} +3 -3
- package/dist/chunks/{identity-CsZvAUwu.js.map → identity-Chj7fW89.js.map} +1 -1
- package/dist/chunks/{input-B0wtkcNh.js → input-9y3afoiq.js} +2 -2
- package/dist/chunks/{input-B0wtkcNh.js.map → input-9y3afoiq.js.map} +1 -1
- package/dist/chunks/{input-group-BQLw06B0.js → input-group-BoxjnN8I.js} +2 -2
- package/dist/chunks/{input-group-BQLw06B0.js.map → input-group-BoxjnN8I.js.map} +1 -1
- package/dist/chunks/{iso-field-BUXgY1dB.js → iso-field-DAa6iPWn.js} +2 -2
- package/dist/chunks/{iso-field-BUXgY1dB.js.map → iso-field-DAa6iPWn.js.map} +1 -1
- package/dist/chunks/{list-wXZIZo_s.js → list-7VARol_x.js} +4 -4
- package/dist/chunks/{list-wXZIZo_s.js.map → list-7VARol_x.js.map} +1 -1
- package/dist/chunks/{markdown-DWyxjsSY.js → markdown-DBVNULWg.js} +4 -4
- package/dist/chunks/{markdown-DWyxjsSY.js.map → markdown-DBVNULWg.js.map} +1 -1
- package/dist/chunks/{nav-sheet-QqNRHo-y.js → nav-sheet-D7wIF_OU.js} +2 -2
- package/dist/chunks/{nav-sheet-QqNRHo-y.js.map → nav-sheet-D7wIF_OU.js.map} +1 -1
- package/dist/chunks/{page-header-Ccnrspbp.js → page-header-B3tV8Wog.js} +2 -2
- package/dist/chunks/{page-header-Ccnrspbp.js.map → page-header-B3tV8Wog.js.map} +1 -1
- package/dist/chunks/{pagination-CEmWZNjp.js → pagination-CLfsofo3.js} +3 -3
- package/dist/chunks/{pagination-CEmWZNjp.js.map → pagination-CLfsofo3.js.map} +1 -1
- package/dist/chunks/picker-popover-B5YdOxNm.js +105 -0
- package/dist/chunks/picker-popover-B5YdOxNm.js.map +1 -0
- package/dist/chunks/{range-popup-CG9Jo5B7.js → range-popup-ZunS8QSH.js} +4 -4
- package/dist/chunks/{range-popup-CG9Jo5B7.js.map → range-popup-ZunS8QSH.js.map} +1 -1
- package/dist/chunks/{rights-hMoaFasn.js → rights-CiIBzT9o.js} +4 -4
- package/dist/chunks/{rights-hMoaFasn.js.map → rights-CiIBzT9o.js.map} +1 -1
- package/dist/chunks/{segmented-DXKVF-nY.js → segmented-DxjnIuww.js} +3 -3
- package/dist/chunks/{segmented-DXKVF-nY.js.map → segmented-DxjnIuww.js.map} +1 -1
- package/dist/chunks/{sidebar-Dey1ZfGt.js → sidebar-ZSTPK9Jn.js} +210 -206
- package/dist/chunks/sidebar-ZSTPK9Jn.js.map +1 -0
- package/dist/chunks/{switch-CSKMEomo.js → switch-Cq1OfeBr.js} +2 -2
- package/dist/chunks/{switch-CSKMEomo.js.map → switch-Cq1OfeBr.js.map} +1 -1
- package/dist/chunks/{tag-CwDKXVHj.js → tag-XgPXKoxi.js} +2 -2
- package/dist/chunks/{tag-CwDKXVHj.js.map → tag-XgPXKoxi.js.map} +1 -1
- package/dist/chunks/{text-Dvvgg5Jt.js → text-IoDy3Vxi.js} +2 -2
- package/dist/chunks/{text-Dvvgg5Jt.js.map → text-IoDy3Vxi.js.map} +1 -1
- package/dist/chunks/{textarea-2d373OyU.js → textarea-jOiTkfMf.js} +3 -3
- package/dist/chunks/{textarea-2d373OyU.js.map → textarea-jOiTkfMf.js.map} +1 -1
- package/dist/chunks/{timeseries-LRDAZHV0.js → timeseries-BBWsSM4Q.js} +51 -51
- package/dist/chunks/timeseries-BBWsSM4Q.js.map +1 -0
- package/dist/chunks/{tooltip-S1DmyLVl.js → tooltip-CTBnfiDH.js} +30 -30
- package/dist/chunks/tooltip-CTBnfiDH.js.map +1 -0
- package/dist/chunks/{tooltip-root-vjylFUqw.js → tooltip-root-B0zWodAJ.js} +2 -2
- package/dist/chunks/{tooltip-root-vjylFUqw.js.map → tooltip-root-B0zWodAJ.js.map} +1 -1
- package/dist/chunks/{zh-CN-CqEA4PCM.js → zh-CN-CKffAT7j.js} +3 -3
- package/dist/chunks/{zh-CN-CqEA4PCM.js.map → zh-CN-CKffAT7j.js.map} +1 -1
- package/dist/components/app-frame.js +2 -2
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +1 -1
- package/dist/components/charts/donut.js +1 -1
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/sankey.js +1 -1
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/code-block.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-list.js +2 -2
- package/dist/components/command-palette.js +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +4 -4
- package/dist/components/date-picker.js +112 -110
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/display-options.js +4 -4
- package/dist/components/filter-chip.js +2 -2
- package/dist/components/icon-button.js +1 -1
- package/dist/components/input.js +5 -5
- package/dist/components/kaeso/conversation.js +2 -2
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +5 -5
- package/dist/components/key-value.js +2 -2
- package/dist/components/list.js +1 -1
- package/dist/components/markdown.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +10 -10
- package/dist/components/segmented.js +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-menu.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +28 -28
- package/dist/kaeso.css +2 -4
- package/dist/styles.css +1 -1
- package/dist/types/components/command-list/docs.d.ts +1 -0
- package/dist/types/components/command-list/picker-popover.d.ts +1 -0
- package/dist/types/utils/hidden-description.d.ts +9 -0
- package/package.json +13 -13
- package/dist/chunks/calendar-CBeptQFq.js.map +0 -1
- package/dist/chunks/picker-popover-C4ElNk7t.js +0 -102
- package/dist/chunks/picker-popover-C4ElNk7t.js.map +0 -1
- package/dist/chunks/sidebar-Dey1ZfGt.js.map +0 -1
- package/dist/chunks/timeseries-LRDAZHV0.js.map +0 -1
- package/dist/chunks/tooltip-S1DmyLVl.js.map +0 -1
|
@@ -4,111 +4,113 @@ import { t } from "../chunks/use-controllable-B5Fd12Bx.js";
|
|
|
4
4
|
import { i as n, n as r } from "../chunks/context-BELWW79w.js";
|
|
5
5
|
import { formatDate as i, formatDateRange as a } from "../format.js";
|
|
6
6
|
import { t as o } from "../chunks/icon-BqujXDUc.js";
|
|
7
|
-
import { c as s, s as c } from "../chunks/tooltip-
|
|
7
|
+
import { c as s, s as c } from "../chunks/tooltip-CTBnfiDH.js";
|
|
8
8
|
import { a as l, o as u, s as d } from "../chunks/field-BZriODU7.js";
|
|
9
|
-
import { i as f, n as p } from "../chunks/input-group-
|
|
9
|
+
import { i as f, n as p } from "../chunks/input-group-BoxjnN8I.js";
|
|
10
10
|
import { n as m, r as h } from "../chunks/popover-root-D3q89WNF.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
11
|
+
import { r as g, t as _ } from "../chunks/hidden-description-B2zSmLcn.js";
|
|
12
|
+
import { t as v } from "../chunks/when-idle-Cy3pinqO.js";
|
|
13
|
+
import { forwardRef as y, useCallback as b, useEffect as x, useId as S, useMemo as C, useReducer as w, useRef as T, useState as E } from "react";
|
|
14
|
+
import { Fragment as D, jsx as O, jsxs as k } from "react/jsx-runtime";
|
|
15
|
+
import { Calendar03Icon as A, Clock01Icon as j } from "@hugeicons/core-free-icons";
|
|
15
16
|
//#region src/components/date-picker/date-picker.tsx
|
|
16
|
-
var
|
|
17
|
+
var M = { size: {
|
|
17
18
|
sm: { classes: "h-32 pl-10 pr-12 gap-6 text-body" },
|
|
18
19
|
md: { classes: "h-36 pl-14 pr-16 gap-8 text-body" },
|
|
19
20
|
lg: { classes: "h-40 pl-16 pr-18 gap-8 text-body" }
|
|
20
|
-
} },
|
|
21
|
-
function
|
|
22
|
-
let [t, n] =
|
|
23
|
-
|
|
21
|
+
} }, N = { size: "md" }, P = /* @__PURE__ */ c(() => import("../chunks/date-popup-BJPA_fBm.js"), { base: () => import.meta.url }), F = /* @__PURE__ */ c(() => import("../chunks/range-popup-ZunS8QSH.js"), { base: () => import.meta.url }), I = () => s(P), L = () => s(F);
|
|
22
|
+
function R(e) {
|
|
23
|
+
let [t, n] = E(!1), [, r] = w((e) => e + 1, 0), i = !!e.current(), a = t && !i;
|
|
24
|
+
x(() => {
|
|
24
25
|
if (!a) return;
|
|
25
26
|
let t = !0;
|
|
26
27
|
return e.load().then(() => t && r(), () => t && n(!1)), () => {
|
|
27
28
|
t = !1;
|
|
28
29
|
};
|
|
29
30
|
}, [a, e]);
|
|
30
|
-
let o =
|
|
31
|
+
let o = b((t) => n((n) => t && n && !e.current() ? !1 : t), [e]);
|
|
31
32
|
return {
|
|
32
33
|
open: t && i,
|
|
33
34
|
pending: a,
|
|
34
35
|
setOpen: o
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
|
-
var
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
}, [
|
|
41
|
-
|
|
38
|
+
var z = /* @__PURE__ */ y(function({ size: t, children: n, placeholder: r, invalid: i, disabled: a, id: s, controlProps: c, force: l, preload: u, pending: d, onCancel: f, labelled: p, "aria-label": m, "aria-labelledby": h, className: y, ...C }, w) {
|
|
39
|
+
let E = S(), j = g(h ? void 0 : m), N = T(null), P = b((e) => {
|
|
40
|
+
N.current = e, typeof w == "function" ? w(e) : w && (w.current = e);
|
|
41
|
+
}, [w]);
|
|
42
|
+
x(() => v(u), [u]), x(() => {
|
|
42
43
|
if (!d) return;
|
|
43
|
-
let e =
|
|
44
|
+
let e = N.current?.ownerDocument ?? document, t = (e) => {
|
|
44
45
|
e.key === "Escape" && (e.stopPropagation(), f());
|
|
45
46
|
}, n = (e) => {
|
|
46
|
-
|
|
47
|
+
N.current?.contains(e.target) || f();
|
|
47
48
|
};
|
|
48
49
|
return e.addEventListener("keydown", t, !0), e.addEventListener("pointerdown", n, !0), () => {
|
|
49
50
|
e.removeEventListener("keydown", t, !0), e.removeEventListener("pointerdown", n, !0);
|
|
50
51
|
};
|
|
51
52
|
}, [d, f]);
|
|
52
|
-
let
|
|
53
|
-
return /* @__PURE__ */
|
|
54
|
-
ref:
|
|
53
|
+
let F = c ?? {}, I = _(j.id, p && !h && E, F["aria-describedby"]);
|
|
54
|
+
return /* @__PURE__ */ k(D, { children: [/* @__PURE__ */ k("button", {
|
|
55
|
+
ref: P,
|
|
55
56
|
type: "button",
|
|
56
|
-
...
|
|
57
|
+
...C,
|
|
57
58
|
...d ? {
|
|
58
59
|
"aria-expanded": !0,
|
|
59
60
|
"data-popup-open": ""
|
|
60
61
|
} : {},
|
|
61
62
|
onPointerEnter: (e) => {
|
|
62
|
-
u(),
|
|
63
|
+
u(), C.onPointerEnter?.(e);
|
|
63
64
|
},
|
|
64
65
|
onFocus: (e) => {
|
|
65
|
-
u(),
|
|
66
|
+
u(), C.onFocus?.(e);
|
|
66
67
|
},
|
|
67
68
|
onBlur: (e) => {
|
|
68
|
-
d && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget) && f(),
|
|
69
|
+
d && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget) && f(), C.onBlur?.(e);
|
|
69
70
|
},
|
|
70
71
|
disabled: a,
|
|
71
|
-
...
|
|
72
|
-
...
|
|
72
|
+
...F,
|
|
73
|
+
...h ? { "aria-labelledby": `${h} ${E}` } : {},
|
|
74
|
+
...I ? { "aria-describedby": I } : {},
|
|
73
75
|
...s ? { id: s } : {},
|
|
74
76
|
...i ? { "aria-invalid": !0 } : {},
|
|
75
77
|
...l ? { "data-force": l } : {},
|
|
76
|
-
className: e("inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-secondary transition-control focus-ring disabled:cursor-not-allowed",
|
|
77
|
-
children: [/* @__PURE__ */
|
|
78
|
-
icon:
|
|
78
|
+
className: e("inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-secondary transition-control focus-ring disabled:cursor-not-allowed", M.size[t].classes, i && "ring-invalid", y),
|
|
79
|
+
children: [/* @__PURE__ */ O(o, {
|
|
80
|
+
icon: A,
|
|
79
81
|
size: "sm",
|
|
80
82
|
className: "text-fg-secondary"
|
|
81
|
-
}), /* @__PURE__ */
|
|
82
|
-
id:
|
|
83
|
+
}), /* @__PURE__ */ O("span", {
|
|
84
|
+
id: E,
|
|
83
85
|
className: e("truncate tabular", r && "font-regular text-fg-tertiary"),
|
|
84
86
|
children: n
|
|
85
87
|
})]
|
|
86
|
-
});
|
|
87
|
-
}),
|
|
88
|
-
let { value: o, defaultValue: s = null, onValueChange: c, placeholder: f, size: p = "md", weekStartsOn: g = 1, disabledDays: _, disabled:
|
|
88
|
+
}), j.node] });
|
|
89
|
+
}), B = /* @__PURE__ */ y(function(r, a) {
|
|
90
|
+
let { value: o, defaultValue: s = null, onValueChange: c, placeholder: f, size: p = "md", weekStartsOn: g = 1, disabledDays: _, disabled: v, id: y, className: x, label: S, description: C, error: w, optional: T, required: E, layout: D, "aria-label": A, "aria-labelledby": j, "data-force": M } = r, N = l(), F = u(r), L = n(), B = {
|
|
89
91
|
...A ? { "aria-label": A } : {},
|
|
90
|
-
...
|
|
91
|
-
}, V = !!(
|
|
92
|
+
...j ? { "aria-labelledby": j } : {}
|
|
93
|
+
}, V = !!(S || N), [H, U] = t(o, s, c), { open: W, pending: G, setOpen: K } = R(P), q = b(() => K(!1), [K]), J = P.current()?.DatePopup, Y = /* @__PURE__ */ O("div", {
|
|
92
94
|
ref: a,
|
|
93
95
|
className: e("inline-flex", !(S || C || w) && x),
|
|
94
|
-
children: /* @__PURE__ */
|
|
96
|
+
children: /* @__PURE__ */ k(m, {
|
|
95
97
|
open: W,
|
|
96
98
|
onOpenChange: K,
|
|
97
|
-
children: [/* @__PURE__ */
|
|
99
|
+
children: [/* @__PURE__ */ O(h, { children: /* @__PURE__ */ O(z, {
|
|
98
100
|
size: p,
|
|
99
101
|
placeholder: !H,
|
|
100
102
|
invalid: !!w,
|
|
101
|
-
disabled:
|
|
102
|
-
id:
|
|
103
|
-
controlProps:
|
|
104
|
-
force:
|
|
105
|
-
preload:
|
|
103
|
+
disabled: v,
|
|
104
|
+
id: y,
|
|
105
|
+
controlProps: F.controlProps,
|
|
106
|
+
force: M,
|
|
107
|
+
preload: I,
|
|
106
108
|
pending: G,
|
|
107
109
|
onCancel: q,
|
|
108
|
-
|
|
110
|
+
labelled: V,
|
|
109
111
|
...B,
|
|
110
|
-
children: H ? i(H) : f ??
|
|
111
|
-
}) }), J && /* @__PURE__ */
|
|
112
|
+
children: H ? i(H) : f ?? L("datePicker.pickDate", "Pick a date")
|
|
113
|
+
}) }), J && /* @__PURE__ */ O(J, {
|
|
112
114
|
date: H,
|
|
113
115
|
onDateChange: U,
|
|
114
116
|
onClose: () => K(!1),
|
|
@@ -117,27 +119,27 @@ var I = /* @__PURE__ */ _(function({ size: t, children: n, placeholder: r, inval
|
|
|
117
119
|
})]
|
|
118
120
|
})
|
|
119
121
|
});
|
|
120
|
-
return
|
|
122
|
+
return N ? Y : d({
|
|
121
123
|
label: S,
|
|
122
124
|
description: C,
|
|
123
125
|
error: w,
|
|
124
|
-
optional:
|
|
125
|
-
required:
|
|
126
|
-
layout:
|
|
127
|
-
id:
|
|
128
|
-
disabled:
|
|
126
|
+
optional: T,
|
|
127
|
+
required: E,
|
|
128
|
+
layout: D,
|
|
129
|
+
id: F.wrapId ?? y,
|
|
130
|
+
disabled: v,
|
|
129
131
|
className: x
|
|
130
132
|
}, Y);
|
|
131
133
|
});
|
|
132
|
-
process.env.NODE_ENV !== "production" && (
|
|
133
|
-
var
|
|
134
|
-
function
|
|
134
|
+
process.env.NODE_ENV !== "production" && (B.displayName = "DatePicker");
|
|
135
|
+
var V = 864e5, H = (e) => new Date(e.getFullYear(), e.getMonth(), e.getDate());
|
|
136
|
+
function U(e) {
|
|
135
137
|
return [
|
|
136
138
|
{
|
|
137
139
|
id: "Last 24 hours",
|
|
138
140
|
label: e("datePicker.last24Hours", "Last 24 hours"),
|
|
139
141
|
range: () => ({
|
|
140
|
-
from: /* @__PURE__ */ new Date(Date.now() -
|
|
142
|
+
from: /* @__PURE__ */ new Date(Date.now() - V),
|
|
141
143
|
to: /* @__PURE__ */ new Date()
|
|
142
144
|
})
|
|
143
145
|
},
|
|
@@ -145,7 +147,7 @@ function B(e) {
|
|
|
145
147
|
id: "Last 7 days",
|
|
146
148
|
label: e("datePicker.last7Days", "Last 7 days"),
|
|
147
149
|
range: () => ({
|
|
148
|
-
from:
|
|
150
|
+
from: H(/* @__PURE__ */ new Date(Date.now() - 6 * V)),
|
|
149
151
|
to: /* @__PURE__ */ new Date()
|
|
150
152
|
})
|
|
151
153
|
},
|
|
@@ -153,7 +155,7 @@ function B(e) {
|
|
|
153
155
|
id: "Last 30 days",
|
|
154
156
|
label: e("datePicker.last30Days", "Last 30 days"),
|
|
155
157
|
range: () => ({
|
|
156
|
-
from:
|
|
158
|
+
from: H(/* @__PURE__ */ new Date(Date.now() - 29 * V)),
|
|
157
159
|
to: /* @__PURE__ */ new Date()
|
|
158
160
|
})
|
|
159
161
|
},
|
|
@@ -178,38 +180,38 @@ function B(e) {
|
|
|
178
180
|
}
|
|
179
181
|
];
|
|
180
182
|
}
|
|
181
|
-
var
|
|
182
|
-
let { value: o, defaultValue: s = null, onValueChange: c, placeholder: f, size: p = "md", weekStartsOn: g = 1, disabledDays: _, disabled:
|
|
183
|
-
...
|
|
184
|
-
...
|
|
185
|
-
},
|
|
186
|
-
e && !
|
|
187
|
-
}, [
|
|
183
|
+
var W = /* @__PURE__ */ U(r), G = (e) => e.id ?? e.label, K = (e) => e ? G(e) : null, q = (e) => `${e?.from?.toDateString()}/${e?.to?.toDateString()}`, J = /* @__PURE__ */ y(function(t, r) {
|
|
184
|
+
let { value: o, defaultValue: s = null, onValueChange: c, placeholder: f, size: p = "md", weekStartsOn: g = 1, disabledDays: _, disabled: v, id: y, className: x, presets: S, preset: w, label: T, description: D, error: A, optional: j, required: M, layout: N, "aria-label": P, "aria-labelledby": I, "data-force": B } = t, V = l(), H = u(t), W = n(), J = C(() => U(W), [W]), Y = S ?? J, ee = {
|
|
185
|
+
...P ? { "aria-label": P } : {},
|
|
186
|
+
...I ? { "aria-labelledby": I } : {}
|
|
187
|
+
}, X = !!(T || V), [te, ne] = E(s), Z = o === void 0 ? te : o, [re, ie] = E(null), ae = q(Z), Q = w === void 0 ? K(Y.find((e) => G(e) === re && q(e.range()) === ae)) : w, { open: oe, pending: se, setOpen: $ } = R(F), ce = b(() => $(!1), [$]), [le, ue] = E(0), de = b((e) => {
|
|
188
|
+
e && !oe && ue((e) => e + 1), $(e);
|
|
189
|
+
}, [oe, $]), fe = F.current()?.RangePopup, pe = (Q === null ? null : Y.find((e) => G(e) === Q)?.label ?? Q) ?? (Z?.from && Z.to ? a(Z.from, Z.to) : Z?.from ? i(Z.from) : f ?? W("datePicker.pickRange", "Pick a range")), me = /* @__PURE__ */ O("div", {
|
|
188
190
|
ref: r,
|
|
189
|
-
className: e("inline-flex", !(
|
|
190
|
-
children: /* @__PURE__ */
|
|
191
|
-
open:
|
|
191
|
+
className: e("inline-flex", !(T || D || A) && x),
|
|
192
|
+
children: /* @__PURE__ */ k(m, {
|
|
193
|
+
open: oe,
|
|
192
194
|
onOpenChange: de,
|
|
193
|
-
children: [/* @__PURE__ */
|
|
195
|
+
children: [/* @__PURE__ */ O(h, { children: /* @__PURE__ */ O(z, {
|
|
194
196
|
size: p,
|
|
195
|
-
placeholder: !
|
|
197
|
+
placeholder: !Z?.from && !Q,
|
|
196
198
|
invalid: !!A,
|
|
197
|
-
disabled:
|
|
198
|
-
id:
|
|
199
|
-
controlProps:
|
|
200
|
-
force:
|
|
201
|
-
preload:
|
|
199
|
+
disabled: v,
|
|
200
|
+
id: y,
|
|
201
|
+
controlProps: H.controlProps,
|
|
202
|
+
force: B,
|
|
203
|
+
preload: L,
|
|
202
204
|
pending: se,
|
|
203
205
|
onCancel: ce,
|
|
204
|
-
|
|
206
|
+
labelled: X,
|
|
205
207
|
...ee,
|
|
206
208
|
children: pe
|
|
207
|
-
}) }), fe && /* @__PURE__ */
|
|
208
|
-
range:
|
|
209
|
-
preset:
|
|
209
|
+
}) }), fe && /* @__PURE__ */ O(fe, {
|
|
210
|
+
range: Z,
|
|
211
|
+
preset: Q,
|
|
210
212
|
presets: Y,
|
|
211
213
|
onPick: (e, t) => {
|
|
212
|
-
o === void 0 &&
|
|
214
|
+
o === void 0 && ne(e), ie(t), c?.(e, { preset: t }), $(!1);
|
|
213
215
|
},
|
|
214
216
|
onClose: () => $(!1),
|
|
215
217
|
weekStartsOn: g,
|
|
@@ -217,27 +219,27 @@ var V = /* @__PURE__ */ B(r), H = (e) => e.id ?? e.label, U = (e) => e ? H(e) :
|
|
|
217
219
|
}, le)]
|
|
218
220
|
})
|
|
219
221
|
});
|
|
220
|
-
return
|
|
221
|
-
label:
|
|
222
|
-
description:
|
|
222
|
+
return V ? me : d({
|
|
223
|
+
label: T,
|
|
224
|
+
description: D,
|
|
223
225
|
error: A,
|
|
224
226
|
optional: j,
|
|
225
|
-
required:
|
|
226
|
-
layout:
|
|
227
|
-
id:
|
|
228
|
-
disabled:
|
|
229
|
-
className:
|
|
227
|
+
required: M,
|
|
228
|
+
layout: N,
|
|
229
|
+
id: H.wrapId ?? y,
|
|
230
|
+
disabled: v,
|
|
231
|
+
className: x
|
|
230
232
|
}, me);
|
|
231
233
|
});
|
|
232
|
-
process.env.NODE_ENV !== "production" && (
|
|
234
|
+
process.env.NODE_ENV !== "production" && (J.displayName = "DateRangePicker");
|
|
233
235
|
//#endregion
|
|
234
236
|
//#region src/components/date-picker/time-input.tsx
|
|
235
|
-
var
|
|
236
|
-
let { value: a, defaultValue: s = "09:00", onValueChange: c, size: f = "md", disabled: m, utc: h, id: g, className: _, label: v, description: y, error: b, optional: x, required: S, layout:
|
|
237
|
+
var Y = { size: f.size }, ee = { size: "md" }, X = (e) => String(e).padStart(2, "0"), te = /* @__PURE__ */ y(function(r, i) {
|
|
238
|
+
let { value: a, defaultValue: s = "09:00", onValueChange: c, size: f = "md", disabled: m, utc: h, id: g, className: _, label: v, description: y, error: b, optional: x, required: S, layout: C, "aria-label": w, "data-force": D } = r, A = l(), M = u(r), N = n(), P = A ? A.labelId : v && M.wrapId ? `${M.wrapId}-label` : void 0, [F, I] = t(a, s, c), [L, R] = E({}), z = T(L), B = (e) => {
|
|
237
239
|
z.current = e, R(e);
|
|
238
|
-
}, [V = "00", H = "00"] = F.split(":"), U =
|
|
240
|
+
}, [V = "00", H = "00"] = F.split(":"), U = T(null), W = (e) => z.current[e] ?? (e === "h" ? V : H), G = (e, t) => {
|
|
239
241
|
B({});
|
|
240
|
-
let n = `${
|
|
242
|
+
let n = `${X((e % 24 + 24) % 24)}:${X((t % 60 + 60) % 60)}`;
|
|
241
243
|
n !== F && I(n);
|
|
242
244
|
}, K = (e, t) => {
|
|
243
245
|
let n = Number(t || 0);
|
|
@@ -269,59 +271,59 @@ var K = { size: f.size }, q = { size: "md" }, J = (e) => String(e).padStart(2, "
|
|
|
269
271
|
t !== void 0 && K(e, t);
|
|
270
272
|
},
|
|
271
273
|
className: "w-20 flex-none bg-transparent text-center tabular text-fg outline-none coarse:w-24"
|
|
272
|
-
}),
|
|
274
|
+
}), J = /* @__PURE__ */ k(p, {
|
|
273
275
|
ref: i,
|
|
274
276
|
size: f,
|
|
275
277
|
leadingIcon: !0,
|
|
276
278
|
disabled: m,
|
|
277
279
|
invalid: !!b,
|
|
278
280
|
className: e("w-auto", !(v || y || b) && _),
|
|
279
|
-
...
|
|
281
|
+
...D ? { "data-force": D } : {},
|
|
280
282
|
role: "group",
|
|
281
|
-
...P && !
|
|
283
|
+
...P && !w ? { "aria-labelledby": P } : { "aria-label": w ?? N("timeInput.time", "Time") },
|
|
282
284
|
children: [
|
|
283
|
-
/* @__PURE__ */
|
|
284
|
-
icon:
|
|
285
|
+
/* @__PURE__ */ O(o, {
|
|
286
|
+
icon: j,
|
|
285
287
|
size: "sm",
|
|
286
288
|
className: "text-fg-tertiary"
|
|
287
289
|
}),
|
|
288
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ k("span", {
|
|
289
291
|
className: "flex items-center gap-2",
|
|
290
292
|
children: [
|
|
291
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ O("input", {
|
|
292
294
|
...q("h"),
|
|
293
295
|
"aria-label": N("timeInput.hours", "Hours"),
|
|
294
296
|
...g ? { id: g } : {},
|
|
295
297
|
...M.controlProps
|
|
296
298
|
}),
|
|
297
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ O("span", {
|
|
298
300
|
className: "text-fg-tertiary",
|
|
299
301
|
children: ":"
|
|
300
302
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ O("input", {
|
|
302
304
|
ref: U,
|
|
303
305
|
...q("m"),
|
|
304
306
|
"aria-label": N("timeInput.minutes", "Minutes")
|
|
305
307
|
})
|
|
306
308
|
]
|
|
307
309
|
}),
|
|
308
|
-
h && /* @__PURE__ */
|
|
310
|
+
h && /* @__PURE__ */ O(p.Addon, { children: "UTC" })
|
|
309
311
|
]
|
|
310
312
|
});
|
|
311
|
-
return
|
|
313
|
+
return A ? J : d({
|
|
312
314
|
label: v,
|
|
313
315
|
description: y,
|
|
314
316
|
error: b,
|
|
315
317
|
optional: x,
|
|
316
318
|
required: S,
|
|
317
|
-
layout:
|
|
319
|
+
layout: C,
|
|
318
320
|
id: M.wrapId ?? g,
|
|
319
321
|
disabled: m,
|
|
320
322
|
className: _
|
|
321
|
-
},
|
|
323
|
+
}, J);
|
|
322
324
|
});
|
|
323
|
-
process.env.NODE_ENV !== "production" && (
|
|
325
|
+
process.env.NODE_ENV !== "production" && (te.displayName = "TimeInput");
|
|
324
326
|
//#endregion
|
|
325
|
-
export {
|
|
327
|
+
export { W as DEFAULT_RANGE_PRESETS, B as DatePicker, J as DateRangePicker, N as KAESO_DATE_PICKER_DEFAULT_VARIANTS, M as KAESO_DATE_PICKER_VARIANTS, ee as KAESO_TIME_INPUT_DEFAULT_VARIANTS, Y as KAESO_TIME_INPUT_VARIANTS, te as TimeInput };
|
|
326
328
|
|
|
327
329
|
//# sourceMappingURL=date-picker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","names":["__icon_Calendar03Icon","__icon_Clock01Icon","cn","useUiText","englishText","Icon","preload","lazyModule","useField","useFieldControl","withField","KAESO_INPUT_GROUP_VARIANTS","InputGroup","PopoverRoot","PopoverTrigger","whenIdle","KAESO_DATE_PICKER_VARIANTS","KAESO_DATE_PICKER_DEFAULT_VARIANTS","datePopup","rangePopup","preloadDatePopup","preloadRangePopup","useLoadedOpen","wanted","setWanted","useState","arrived","useReducer","n","loaded","popup","pending","live","setOpen","useCallback","next","was","TriggerButton","rest","valueId","useId","self","useRef","setRef","el","ref","useEffect","doc","onKeyDown","onCancel","onPointerDown","control","controlProps","describedBy","named","id","invalid","force","size","className","Calendar03Icon","placeholder","DatePicker","ariaLabel","ariaLabelledBy","props","field","fc","t","naming","label","date","setDate","useControllable","value","defaultValue","onValueChange","cancel","DatePopup","description","error","formatDate","day","startOfDay","d","rangePresets","DEFAULT_RANGE_PRESETS","presetId","p","presetIdOf","rangeDays","r","DateRangePicker","presetsProp","presetProp","defaults","useMemo","presets","inner","setInner","range","picked","setPicked","days","preset","opening","setOpening","openRange","open","RangePopup","display","formatDateRange","from","KAESO_TIME_INPUT_VARIANTS","KAESO_TIME_INPUT_DEFAULT_VARIANTS","pad","TimeInput","labelId","time","setTime","draft","setDraftState","setDraft","h","m","minutes","shown","part","set","hh","mm","commit","v","seg","e","Clock01Icon","utc"],"sources":["../../src/components/date-picker/date-picker.tsx","../../src/components/date-picker/time-input.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useId, useMemo, useReducer, useRef, useState, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport type { CalendarProps } from \"../calendar/calendar.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Calendar03Icon as __icon_Calendar03Icon } from \"@hugeicons/core-free-icons\";\nimport { PopoverRoot, PopoverTrigger } from \"../popover/popover-root.js\";\nimport { formatDate, formatDateRange } from \"../../format/index.js\";\nimport { lazyModule, preload, type LazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_DATE_PICKER_VARIANTS = {\n size: {\n sm: { classes: \"h-32 pl-10 pr-12 gap-6 text-body\" },\n md: { classes: \"h-36 pl-14 pr-16 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-16 pr-18 gap-8 text-body\" },\n },\n} as const;\nexport const KAESO_DATE_PICKER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst datePopup = /* @__PURE__ */ lazyModule(() => import(\"./date-popup.js\"), { base: () => import.meta.url });\nconst rangePopup = /* @__PURE__ */ lazyModule(() => import(\"./range-popup.js\"), { base: () => import.meta.url });\nconst preloadDatePopup = () => preload(datePopup);\nconst preloadRangePopup = () => preload(rangePopup);\n\ninterface LoadedOpen {\n open: boolean;\n pending: boolean;\n setOpen: (open: boolean) => void;\n}\n\nfunction useLoadedOpen(popup: LazyModule<unknown>): LoadedOpen {\n const [wanted, setWanted] = useState(false);\n const [, arrived] = useReducer((n: number) => n + 1, 0);\n const loaded = !!popup.current();\n const pending = wanted && !loaded;\n useEffect(() => {\n if (!pending) return;\n let live = true;\n popup.load().then(\n () => live && arrived(),\n () => live && setWanted(false),\n );\n return () => {\n live = false;\n };\n }, [pending, popup]);\n const setOpen = useCallback((next: boolean) => setWanted((was) => (next && was && !popup.current() ? false : next)), [popup]);\n return { open: wanted && loaded, pending, setOpen };\n}\n\ninterface TriggerButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n size: keyof typeof KAESO_DATE_PICKER_VARIANTS.size;\n children: ReactNode;\n placeholder: boolean;\n invalid?: boolean | undefined;\n controlProps?: object | undefined;\n force?: string | undefined;\n preload: () => void;\n pending: boolean;\n onCancel: () => void;\n named: boolean;\n}\n\nconst TriggerButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, TriggerButtonProps>(function TriggerButton(\n { size, children, placeholder, invalid, disabled, id, controlProps, force, preload, pending, onCancel, named, className, ...rest },\n ref,\n) {\n const valueId = useId();\n const self = useRef<HTMLButtonElement | null>(null);\n const setRef = useCallback(\n (el: HTMLButtonElement | null) => {\n self.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n useEffect(() => whenIdle(preload), [preload]);\n useEffect(() => {\n if (!pending) return;\n const doc = self.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n onCancel();\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!self.current?.contains(e.target as Node)) onCancel();\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending, onCancel]);\n const control = (controlProps ?? {}) as { \"aria-describedby\"?: string | undefined };\n const describedBy = [named ? valueId : \"\", control[\"aria-describedby\"] ?? \"\"].filter(Boolean).join(\" \");\n return (\n <button\n ref={setRef}\n type=\"button\"\n {...rest}\n {...(pending ? { \"aria-expanded\": true, \"data-popup-open\": \"\" } : {})}\n onPointerEnter={(e) => {\n preload();\n rest.onPointerEnter?.(e);\n }}\n onFocus={(e) => {\n preload();\n rest.onFocus?.(e);\n }}\n onBlur={(e) => {\n if (pending && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget)) onCancel();\n rest.onBlur?.(e);\n }}\n disabled={disabled}\n {...control}\n {...(describedBy ? { \"aria-describedby\": describedBy } : {})}\n {...(id ? { id } : {})}\n {...(invalid ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-secondary transition-control focus-ring disabled:cursor-not-allowed\",\n KAESO_DATE_PICKER_VARIANTS.size[size].classes,\n invalid && \"ring-invalid\",\n className,\n )}\n >\n <Icon icon={__icon_Calendar03Icon} size=\"sm\" className=\"text-fg-secondary\" />\n <span id={valueId} className={cn(\"truncate tabular\", placeholder && \"font-regular text-fg-tertiary\")}>\n {children}\n </span>\n </button>\n );\n});\n\nexport interface DatePickerProps extends FieldWrapProps {\n value?: Date | null | undefined;\n defaultValue?: Date | null | undefined;\n onValueChange?: ((value: Date | null) => void) | undefined;\n placeholder?: string | undefined;\n size?: keyof typeof KAESO_DATE_PICKER_VARIANTS.size | undefined;\n weekStartsOn?: CalendarProps[\"weekStartsOn\"] | undefined;\n disabledDays?: ((date: Date) => boolean) | undefined;\n disabled?: boolean | undefined;\n id?: string | undefined;\n className?: string | undefined;\n \"aria-label\"?: string | undefined;\n \"aria-labelledby\"?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const DatePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(props, ref) {\n const {\n value,\n defaultValue = null,\n onValueChange,\n placeholder,\n size = \"md\",\n weekStartsOn = 1,\n disabledDays,\n disabled,\n id,\n className,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const naming = { ...(ariaLabel ? { \"aria-label\": ariaLabel } : {}), ...(ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {}) };\n const named = !!(ariaLabel || ariaLabelledBy || label || field);\n const [date, setDate] = useControllable<Date | null>(value, defaultValue, onValueChange);\n const { open, pending, setOpen } = useLoadedOpen(datePopup);\n const cancel = useCallback(() => setOpen(false), [setOpen]);\n const DatePopup = datePopup.current()?.DatePopup;\n const control = (\n <div ref={ref} className={cn(\"inline-flex\", !(label || description || error) && className)}>\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger>\n <TriggerButton\n size={size}\n placeholder={!date}\n invalid={!!error}\n disabled={disabled}\n id={id}\n controlProps={fc.controlProps}\n force={force}\n preload={preloadDatePopup}\n pending={pending}\n onCancel={cancel}\n named={named}\n {...naming}\n >\n {date ? formatDate(date) : (placeholder ?? t(\"datePicker.pickDate\", \"Pick a date\"))}\n </TriggerButton>\n </PopoverTrigger>\n {DatePopup && <DatePopup date={date} onDateChange={setDate} onClose={() => setOpen(false)} weekStartsOn={weekStartsOn} disabledDays={disabledDays} />}\n </PopoverRoot>\n </div>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") DatePicker.displayName = \"DatePicker\";\n\nexport interface DateRangePreset {\n id?: string | undefined;\n label: string;\n range: () => DateRange;\n}\n\nconst day = 86_400_000;\nconst startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\nfunction rangePresets(t: UiText): DateRangePreset[] {\n return [\n { id: \"Last 24 hours\", label: t(\"datePicker.last24Hours\", \"Last 24 hours\"), range: () => ({ from: new Date(Date.now() - day), to: new Date() }) },\n { id: \"Last 7 days\", label: t(\"datePicker.last7Days\", \"Last 7 days\"), range: () => ({ from: startOfDay(new Date(Date.now() - 6 * day)), to: new Date() }) },\n {\n id: \"Last 30 days\",\n label: t(\"datePicker.last30Days\", \"Last 30 days\"),\n range: () => ({ from: startOfDay(new Date(Date.now() - 29 * day)), to: new Date() }),\n },\n {\n id: \"This month\",\n label: t(\"datePicker.thisMonth\", \"This month\"),\n range: () => ({ from: new Date(new Date().getFullYear(), new Date().getMonth(), 1), to: new Date() }),\n },\n {\n id: \"Last month\",\n label: t(\"datePicker.lastMonth\", \"Last month\"),\n range: () => {\n const n = new Date();\n return { from: new Date(n.getFullYear(), n.getMonth() - 1, 1), to: new Date(n.getFullYear(), n.getMonth(), 0) };\n },\n },\n ];\n}\nexport const DEFAULT_RANGE_PRESETS: DateRangePreset[] = /* @__PURE__ */ rangePresets(englishText);\nconst presetId = (p: DateRangePreset) => p.id ?? p.label;\nconst presetIdOf = (p: DateRangePreset | undefined) => (p ? presetId(p) : null);\n\nexport interface DateRangePickerProps extends Omit<DatePickerProps, \"value\" | \"defaultValue\" | \"onValueChange\"> {\n value?: DateRange | null | undefined;\n defaultValue?: DateRange | null | undefined;\n onValueChange?: ((value: DateRange | null, details: { preset: string | null }) => void) | undefined;\n presets?: DateRangePreset[] | undefined;\n preset?: string | null | undefined;\n}\n\nconst rangeDays = (r: DateRange | null | undefined) => `${r?.from?.toDateString()}/${r?.to?.toDateString()}`;\n\nexport const DateRangePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, DateRangePickerProps>(function DateRangePicker(props, ref) {\n const {\n value,\n defaultValue = null,\n onValueChange,\n placeholder,\n size = \"md\",\n weekStartsOn = 1,\n disabledDays,\n disabled,\n id,\n className,\n presets: presetsProp,\n preset: presetProp,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const defaults = useMemo(() => rangePresets(t), [t]);\n const presets = presetsProp ?? defaults;\n const naming = { ...(ariaLabel ? { \"aria-label\": ariaLabel } : {}), ...(ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {}) };\n const named = !!(ariaLabel || ariaLabelledBy || label || field);\n const [inner, setInner] = useState<DateRange | null>(defaultValue);\n const range = value !== undefined ? value : inner;\n const [picked, setPicked] = useState<string | null>(null);\n const days = rangeDays(range);\n const preset = presetProp !== undefined ? presetProp : presetIdOf(presets.find((p) => presetId(p) === picked && rangeDays(p.range()) === days));\n const { open, pending, setOpen } = useLoadedOpen(rangePopup);\n const cancel = useCallback(() => setOpen(false), [setOpen]);\n const [opening, setOpening] = useState(0);\n const openRange = useCallback(\n (next: boolean) => {\n if (next && !open) setOpening((n) => n + 1);\n setOpen(next);\n },\n [open, setOpen],\n );\n const RangePopup = rangePopup.current()?.RangePopup;\n const presetName = preset === null ? null : (presets.find((p) => presetId(p) === preset)?.label ?? preset);\n const display =\n presetName ??\n (range?.from && range.to\n ? formatDateRange(range.from, range.to)\n : range?.from\n ? formatDate(range.from)\n : (placeholder ?? t(\"datePicker.pickRange\", \"Pick a range\")));\n const control = (\n <div ref={ref} className={cn(\"inline-flex\", !(label || description || error) && className)}>\n <PopoverRoot open={open} onOpenChange={openRange}>\n <PopoverTrigger>\n <TriggerButton\n size={size}\n placeholder={!range?.from && !preset}\n invalid={!!error}\n disabled={disabled}\n id={id}\n controlProps={fc.controlProps}\n force={force}\n preload={preloadRangePopup}\n pending={pending}\n onCancel={cancel}\n named={named}\n {...naming}\n >\n {display}\n </TriggerButton>\n </PopoverTrigger>\n {RangePopup && (\n <RangePopup\n key={opening}\n range={range}\n preset={preset}\n presets={presets}\n onPick={(next, from) => {\n if (value === undefined) setInner(next);\n setPicked(from);\n onValueChange?.(next, { preset: from });\n setOpen(false);\n }}\n onClose={() => setOpen(false)}\n weekStartsOn={weekStartsOn}\n disabledDays={disabledDays}\n />\n )}\n </PopoverRoot>\n </div>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") DateRangePicker.displayName = \"DateRangePicker\";\n\nexport type { DateRange };\n","import type * as React from \"react\";\nimport { forwardRef, useRef, useState, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, KAESO_INPUT_GROUP_VARIANTS, type InputSize } from \"../input/input-group.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Clock01Icon as __icon_Clock01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_TIME_INPUT_VARIANTS = {\n size: KAESO_INPUT_GROUP_VARIANTS.size,\n} as const;\nexport const KAESO_TIME_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface TimeInputProps extends FieldWrapProps {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: InputSize | undefined;\n disabled?: boolean | undefined;\n utc?: boolean | undefined;\n id?: string | undefined;\n className?: string | undefined;\n \"aria-label\"?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\nexport const TimeInput = /* @__PURE__ */ forwardRef<HTMLDivElement, TimeInputProps>(function TimeInput(props, ref) {\n const {\n value,\n defaultValue = \"09:00\",\n onValueChange,\n size = \"md\",\n disabled,\n utc,\n id,\n className,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const labelId = field ? field.labelId : label && fc.wrapId ? `${fc.wrapId}-label` : undefined;\n const [time, setTime] = useControllable(value, defaultValue, onValueChange);\n const [draft, setDraftState] = useState<{ h?: string | undefined; m?: string | undefined }>({});\n const pending = useRef(draft);\n const setDraft = (next: { h?: string | undefined; m?: string | undefined }) => {\n pending.current = next;\n setDraftState(next);\n };\n const [h = \"00\", m = \"00\"] = time.split(\":\");\n const minutes = useRef<HTMLInputElement>(null);\n const shown = (part: \"h\" | \"m\") => pending.current[part] ?? (part === \"h\" ? h : m);\n const set = (hh: number, mm: number) => {\n setDraft({});\n const next = `${pad(((hh % 24) + 24) % 24)}:${pad(((mm % 60) + 60) % 60)}`;\n if (next !== time) setTime(next);\n };\n const commit = (part: \"h\" | \"m\", v: string) => {\n const n = Number(v || 0);\n if (part === \"h\") set(Math.min(23, n), Number(shown(\"m\") || 0));\n else set(Number(shown(\"h\") || 0), Math.min(59, n));\n };\n const seg = (part: \"h\" | \"m\") => ({\n inputMode: \"numeric\" as const,\n maxLength: 2,\n disabled,\n value: draft[part] ?? (part === \"h\" ? h : m),\n onFocus: (e: React.FocusEvent<HTMLInputElement>) => e.target.select(),\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => {\n const d = e.key === \"ArrowUp\" ? 1 : e.key === \"ArrowDown\" ? -1 : 0;\n if (d) {\n e.preventDefault();\n const hh = Number(shown(\"h\") || 0);\n const mm = Number(shown(\"m\") || 0);\n if (part === \"h\") set(hh + d, mm);\n else set(hh, mm + d);\n }\n },\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value.replace(/\\D/g, \"\").slice(0, 2);\n if (v.length < 2) return setDraft({ ...pending.current, [part]: v });\n commit(part, v);\n if (part === \"h\") minutes.current?.focus();\n },\n onBlur: () => {\n const v = pending.current[part];\n if (v !== undefined) commit(part, v);\n },\n className: \"w-20 flex-none bg-transparent text-center tabular text-fg outline-none coarse:w-24\",\n });\n const control = (\n <InputGroup\n ref={ref}\n size={size}\n leadingIcon\n disabled={disabled}\n invalid={!!error}\n className={cn(\"w-auto\", !(label || description || error) && className)}\n {...(force ? { \"data-force\": force } : {})}\n role=\"group\"\n {...(labelId && !ariaLabel ? { \"aria-labelledby\": labelId } : { \"aria-label\": ariaLabel ?? t(\"timeInput.time\", \"Time\") })}\n >\n <Icon icon={__icon_Clock01Icon} size=\"sm\" className=\"text-fg-tertiary\" />\n <span className=\"flex items-center gap-2\">\n <input {...seg(\"h\")} aria-label={t(\"timeInput.hours\", \"Hours\")} {...(id ? { id } : {})} {...fc.controlProps} />\n <span className=\"text-fg-tertiary\">:</span>\n <input ref={minutes} {...seg(\"m\")} aria-label={t(\"timeInput.minutes\", \"Minutes\")} />\n </span>\n {utc && <InputGroup.Addon>UTC</InputGroup.Addon>}\n </InputGroup>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") TimeInput.displayName = \"TimeInput\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-picker.js","names":["_Fragment","__icon_Calendar03Icon","__icon_Clock01Icon","cn","useUiText","englishText","Icon","preload","lazyModule","useField","useFieldControl","withField","KAESO_INPUT_GROUP_VARIANTS","InputGroup","PopoverRoot","PopoverTrigger","useHiddenDescription","joinIds","whenIdle","Fragment$1","KAESO_DATE_PICKER_VARIANTS","KAESO_DATE_PICKER_DEFAULT_VARIANTS","datePopup","rangePopup","preloadDatePopup","preloadRangePopup","useLoadedOpen","wanted","setWanted","useState","arrived","useReducer","n","loaded","popup","pending","live","setOpen","useCallback","next","was","TriggerButton","ariaLabel","labelledBy","rest","valueId","useId","purpose","self","useRef","setRef","el","ref","useEffect","doc","onKeyDown","onCancel","onPointerDown","control","controlProps","describedBy","labelled","id","invalid","force","size","className","Calendar03Icon","placeholder","DatePicker","ariaLabelledBy","props","field","fc","t","naming","label","date","setDate","useControllable","value","defaultValue","onValueChange","cancel","DatePopup","description","error","formatDate","day","startOfDay","d","rangePresets","DEFAULT_RANGE_PRESETS","presetId","p","presetIdOf","rangeDays","r","DateRangePicker","presetsProp","presetProp","defaults","useMemo","presets","inner","setInner","range","picked","setPicked","days","preset","opening","setOpening","openRange","open","RangePopup","display","formatDateRange","from","KAESO_TIME_INPUT_VARIANTS","KAESO_TIME_INPUT_DEFAULT_VARIANTS","pad","TimeInput","labelId","time","setTime","draft","setDraftState","setDraft","h","m","minutes","shown","part","set","hh","mm","commit","v","seg","e","Clock01Icon","utc"],"sources":["../../src/components/date-picker/date-picker.tsx","../../src/components/date-picker/time-input.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useId, useMemo, useReducer, useRef, useState, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\nimport type { CalendarProps } from \"../calendar/calendar.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Calendar03Icon as __icon_Calendar03Icon } from \"@hugeicons/core-free-icons\";\nimport { PopoverRoot, PopoverTrigger } from \"../popover/popover-root.js\";\nimport { formatDate, formatDateRange } from \"../../format/index.js\";\nimport { lazyModule, preload, type LazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { englishText, useUiText, type UiText } from \"../../i18n/context.js\";\nimport { joinIds, useHiddenDescription } from \"../../utils/hidden-description.js\";\n\nexport const KAESO_DATE_PICKER_VARIANTS = {\n size: {\n sm: { classes: \"h-32 pl-10 pr-12 gap-6 text-body\" },\n md: { classes: \"h-36 pl-14 pr-16 gap-8 text-body\" },\n lg: { classes: \"h-40 pl-16 pr-18 gap-8 text-body\" },\n },\n} as const;\nexport const KAESO_DATE_PICKER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nconst datePopup = /* @__PURE__ */ lazyModule(() => import(\"./date-popup.js\"), { base: () => import.meta.url });\nconst rangePopup = /* @__PURE__ */ lazyModule(() => import(\"./range-popup.js\"), { base: () => import.meta.url });\nconst preloadDatePopup = () => preload(datePopup);\nconst preloadRangePopup = () => preload(rangePopup);\n\ninterface LoadedOpen {\n open: boolean;\n pending: boolean;\n setOpen: (open: boolean) => void;\n}\n\nfunction useLoadedOpen(popup: LazyModule<unknown>): LoadedOpen {\n const [wanted, setWanted] = useState(false);\n const [, arrived] = useReducer((n: number) => n + 1, 0);\n const loaded = !!popup.current();\n const pending = wanted && !loaded;\n useEffect(() => {\n if (!pending) return;\n let live = true;\n popup.load().then(\n () => live && arrived(),\n () => live && setWanted(false),\n );\n return () => {\n live = false;\n };\n }, [pending, popup]);\n const setOpen = useCallback((next: boolean) => setWanted((was) => (next && was && !popup.current() ? false : next)), [popup]);\n return { open: wanted && loaded, pending, setOpen };\n}\n\ninterface TriggerButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n size: keyof typeof KAESO_DATE_PICKER_VARIANTS.size;\n children: ReactNode;\n placeholder: boolean;\n invalid?: boolean | undefined;\n controlProps?: object | undefined;\n force?: string | undefined;\n preload: () => void;\n pending: boolean;\n onCancel: () => void;\n labelled: boolean;\n \"aria-label\"?: string | undefined;\n \"aria-labelledby\"?: string | undefined;\n}\n\nconst TriggerButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, TriggerButtonProps>(function TriggerButton(\n {\n size,\n children,\n placeholder,\n invalid,\n disabled,\n id,\n controlProps,\n force,\n preload,\n pending,\n onCancel,\n labelled,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": labelledBy,\n className,\n ...rest\n },\n ref,\n) {\n const valueId = useId();\n const purpose = useHiddenDescription(labelledBy ? undefined : ariaLabel);\n const self = useRef<HTMLButtonElement | null>(null);\n const setRef = useCallback(\n (el: HTMLButtonElement | null) => {\n self.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n },\n [ref],\n );\n useEffect(() => whenIdle(preload), [preload]);\n useEffect(() => {\n if (!pending) return;\n const doc = self.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n onCancel();\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!self.current?.contains(e.target as Node)) onCancel();\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending, onCancel]);\n const control = (controlProps ?? {}) as { \"aria-describedby\"?: string | undefined };\n const describedBy = joinIds(purpose.id, labelled && !labelledBy && valueId, control[\"aria-describedby\"]);\n return (\n <>\n <button\n ref={setRef}\n type=\"button\"\n {...rest}\n {...(pending ? { \"aria-expanded\": true, \"data-popup-open\": \"\" } : {})}\n onPointerEnter={(e) => {\n preload();\n rest.onPointerEnter?.(e);\n }}\n onFocus={(e) => {\n preload();\n rest.onFocus?.(e);\n }}\n onBlur={(e) => {\n if (pending && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget)) onCancel();\n rest.onBlur?.(e);\n }}\n disabled={disabled}\n {...control}\n {...(labelledBy ? { \"aria-labelledby\": `${labelledBy} ${valueId}` } : {})}\n {...(describedBy ? { \"aria-describedby\": describedBy } : {})}\n {...(id ? { id } : {})}\n {...(invalid ? { \"aria-invalid\": true } : {})}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-secondary transition-control focus-ring disabled:cursor-not-allowed\",\n KAESO_DATE_PICKER_VARIANTS.size[size].classes,\n invalid && \"ring-invalid\",\n className,\n )}\n >\n <Icon icon={__icon_Calendar03Icon} size=\"sm\" className=\"text-fg-secondary\" />\n <span id={valueId} className={cn(\"truncate tabular\", placeholder && \"font-regular text-fg-tertiary\")}>\n {children}\n </span>\n </button>\n {purpose.node}\n </>\n );\n});\n\nexport interface DatePickerProps extends FieldWrapProps {\n value?: Date | null | undefined;\n defaultValue?: Date | null | undefined;\n onValueChange?: ((value: Date | null) => void) | undefined;\n placeholder?: string | undefined;\n size?: keyof typeof KAESO_DATE_PICKER_VARIANTS.size | undefined;\n weekStartsOn?: CalendarProps[\"weekStartsOn\"] | undefined;\n disabledDays?: ((date: Date) => boolean) | undefined;\n disabled?: boolean | undefined;\n id?: string | undefined;\n className?: string | undefined;\n \"aria-label\"?: string | undefined;\n \"aria-labelledby\"?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const DatePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(props, ref) {\n const {\n value,\n defaultValue = null,\n onValueChange,\n placeholder,\n size = \"md\",\n weekStartsOn = 1,\n disabledDays,\n disabled,\n id,\n className,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const naming = { ...(ariaLabel ? { \"aria-label\": ariaLabel } : {}), ...(ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {}) };\n const labelled = !!(label || field);\n const [date, setDate] = useControllable<Date | null>(value, defaultValue, onValueChange);\n const { open, pending, setOpen } = useLoadedOpen(datePopup);\n const cancel = useCallback(() => setOpen(false), [setOpen]);\n const DatePopup = datePopup.current()?.DatePopup;\n const control = (\n <div ref={ref} className={cn(\"inline-flex\", !(label || description || error) && className)}>\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger>\n <TriggerButton\n size={size}\n placeholder={!date}\n invalid={!!error}\n disabled={disabled}\n id={id}\n controlProps={fc.controlProps}\n force={force}\n preload={preloadDatePopup}\n pending={pending}\n onCancel={cancel}\n labelled={labelled}\n {...naming}\n >\n {date ? formatDate(date) : (placeholder ?? t(\"datePicker.pickDate\", \"Pick a date\"))}\n </TriggerButton>\n </PopoverTrigger>\n {DatePopup && <DatePopup date={date} onDateChange={setDate} onClose={() => setOpen(false)} weekStartsOn={weekStartsOn} disabledDays={disabledDays} />}\n </PopoverRoot>\n </div>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") DatePicker.displayName = \"DatePicker\";\n\nexport interface DateRangePreset {\n id?: string | undefined;\n label: string;\n range: () => DateRange;\n}\n\nconst day = 86_400_000;\nconst startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\nfunction rangePresets(t: UiText): DateRangePreset[] {\n return [\n { id: \"Last 24 hours\", label: t(\"datePicker.last24Hours\", \"Last 24 hours\"), range: () => ({ from: new Date(Date.now() - day), to: new Date() }) },\n { id: \"Last 7 days\", label: t(\"datePicker.last7Days\", \"Last 7 days\"), range: () => ({ from: startOfDay(new Date(Date.now() - 6 * day)), to: new Date() }) },\n {\n id: \"Last 30 days\",\n label: t(\"datePicker.last30Days\", \"Last 30 days\"),\n range: () => ({ from: startOfDay(new Date(Date.now() - 29 * day)), to: new Date() }),\n },\n {\n id: \"This month\",\n label: t(\"datePicker.thisMonth\", \"This month\"),\n range: () => ({ from: new Date(new Date().getFullYear(), new Date().getMonth(), 1), to: new Date() }),\n },\n {\n id: \"Last month\",\n label: t(\"datePicker.lastMonth\", \"Last month\"),\n range: () => {\n const n = new Date();\n return { from: new Date(n.getFullYear(), n.getMonth() - 1, 1), to: new Date(n.getFullYear(), n.getMonth(), 0) };\n },\n },\n ];\n}\nexport const DEFAULT_RANGE_PRESETS: DateRangePreset[] = /* @__PURE__ */ rangePresets(englishText);\nconst presetId = (p: DateRangePreset) => p.id ?? p.label;\nconst presetIdOf = (p: DateRangePreset | undefined) => (p ? presetId(p) : null);\n\nexport interface DateRangePickerProps extends Omit<DatePickerProps, \"value\" | \"defaultValue\" | \"onValueChange\"> {\n value?: DateRange | null | undefined;\n defaultValue?: DateRange | null | undefined;\n onValueChange?: ((value: DateRange | null, details: { preset: string | null }) => void) | undefined;\n presets?: DateRangePreset[] | undefined;\n preset?: string | null | undefined;\n}\n\nconst rangeDays = (r: DateRange | null | undefined) => `${r?.from?.toDateString()}/${r?.to?.toDateString()}`;\n\nexport const DateRangePicker = /* @__PURE__ */ forwardRef<HTMLDivElement, DateRangePickerProps>(function DateRangePicker(props, ref) {\n const {\n value,\n defaultValue = null,\n onValueChange,\n placeholder,\n size = \"md\",\n weekStartsOn = 1,\n disabledDays,\n disabled,\n id,\n className,\n presets: presetsProp,\n preset: presetProp,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const defaults = useMemo(() => rangePresets(t), [t]);\n const presets = presetsProp ?? defaults;\n const naming = { ...(ariaLabel ? { \"aria-label\": ariaLabel } : {}), ...(ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {}) };\n const labelled = !!(label || field);\n const [inner, setInner] = useState<DateRange | null>(defaultValue);\n const range = value !== undefined ? value : inner;\n const [picked, setPicked] = useState<string | null>(null);\n const days = rangeDays(range);\n const preset = presetProp !== undefined ? presetProp : presetIdOf(presets.find((p) => presetId(p) === picked && rangeDays(p.range()) === days));\n const { open, pending, setOpen } = useLoadedOpen(rangePopup);\n const cancel = useCallback(() => setOpen(false), [setOpen]);\n const [opening, setOpening] = useState(0);\n const openRange = useCallback(\n (next: boolean) => {\n if (next && !open) setOpening((n) => n + 1);\n setOpen(next);\n },\n [open, setOpen],\n );\n const RangePopup = rangePopup.current()?.RangePopup;\n const presetName = preset === null ? null : (presets.find((p) => presetId(p) === preset)?.label ?? preset);\n const display =\n presetName ??\n (range?.from && range.to\n ? formatDateRange(range.from, range.to)\n : range?.from\n ? formatDate(range.from)\n : (placeholder ?? t(\"datePicker.pickRange\", \"Pick a range\")));\n const control = (\n <div ref={ref} className={cn(\"inline-flex\", !(label || description || error) && className)}>\n <PopoverRoot open={open} onOpenChange={openRange}>\n <PopoverTrigger>\n <TriggerButton\n size={size}\n placeholder={!range?.from && !preset}\n invalid={!!error}\n disabled={disabled}\n id={id}\n controlProps={fc.controlProps}\n force={force}\n preload={preloadRangePopup}\n pending={pending}\n onCancel={cancel}\n labelled={labelled}\n {...naming}\n >\n {display}\n </TriggerButton>\n </PopoverTrigger>\n {RangePopup && (\n <RangePopup\n key={opening}\n range={range}\n preset={preset}\n presets={presets}\n onPick={(next, from) => {\n if (value === undefined) setInner(next);\n setPicked(from);\n onValueChange?.(next, { preset: from });\n setOpen(false);\n }}\n onClose={() => setOpen(false)}\n weekStartsOn={weekStartsOn}\n disabledDays={disabledDays}\n />\n )}\n </PopoverRoot>\n </div>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") DateRangePicker.displayName = \"DateRangePicker\";\n\nexport type { DateRange };\n","import type * as React from \"react\";\nimport { forwardRef, useRef, useState, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useControllable } from \"../../utils/use-controllable.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\nimport { InputGroup, KAESO_INPUT_GROUP_VARIANTS, type InputSize } from \"../input/input-group.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { Clock01Icon as __icon_Clock01Icon } from \"@hugeicons/core-free-icons\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_TIME_INPUT_VARIANTS = {\n size: KAESO_INPUT_GROUP_VARIANTS.size,\n} as const;\nexport const KAESO_TIME_INPUT_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface TimeInputProps extends FieldWrapProps {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n size?: InputSize | undefined;\n disabled?: boolean | undefined;\n utc?: boolean | undefined;\n id?: string | undefined;\n className?: string | undefined;\n \"aria-label\"?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\nexport const TimeInput = /* @__PURE__ */ forwardRef<HTMLDivElement, TimeInputProps>(function TimeInput(props, ref) {\n const {\n value,\n defaultValue = \"09:00\",\n onValueChange,\n size = \"md\",\n disabled,\n utc,\n id,\n className,\n label,\n description,\n error,\n optional,\n required,\n layout,\n \"aria-label\": ariaLabel,\n \"data-force\": force,\n } = props;\n const field = useField();\n const fc = useFieldControl(props);\n const t = useUiText();\n const labelId = field ? field.labelId : label && fc.wrapId ? `${fc.wrapId}-label` : undefined;\n const [time, setTime] = useControllable(value, defaultValue, onValueChange);\n const [draft, setDraftState] = useState<{ h?: string | undefined; m?: string | undefined }>({});\n const pending = useRef(draft);\n const setDraft = (next: { h?: string | undefined; m?: string | undefined }) => {\n pending.current = next;\n setDraftState(next);\n };\n const [h = \"00\", m = \"00\"] = time.split(\":\");\n const minutes = useRef<HTMLInputElement>(null);\n const shown = (part: \"h\" | \"m\") => pending.current[part] ?? (part === \"h\" ? h : m);\n const set = (hh: number, mm: number) => {\n setDraft({});\n const next = `${pad(((hh % 24) + 24) % 24)}:${pad(((mm % 60) + 60) % 60)}`;\n if (next !== time) setTime(next);\n };\n const commit = (part: \"h\" | \"m\", v: string) => {\n const n = Number(v || 0);\n if (part === \"h\") set(Math.min(23, n), Number(shown(\"m\") || 0));\n else set(Number(shown(\"h\") || 0), Math.min(59, n));\n };\n const seg = (part: \"h\" | \"m\") => ({\n inputMode: \"numeric\" as const,\n maxLength: 2,\n disabled,\n value: draft[part] ?? (part === \"h\" ? h : m),\n onFocus: (e: React.FocusEvent<HTMLInputElement>) => e.target.select(),\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => {\n const d = e.key === \"ArrowUp\" ? 1 : e.key === \"ArrowDown\" ? -1 : 0;\n if (d) {\n e.preventDefault();\n const hh = Number(shown(\"h\") || 0);\n const mm = Number(shown(\"m\") || 0);\n if (part === \"h\") set(hh + d, mm);\n else set(hh, mm + d);\n }\n },\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value.replace(/\\D/g, \"\").slice(0, 2);\n if (v.length < 2) return setDraft({ ...pending.current, [part]: v });\n commit(part, v);\n if (part === \"h\") minutes.current?.focus();\n },\n onBlur: () => {\n const v = pending.current[part];\n if (v !== undefined) commit(part, v);\n },\n className: \"w-20 flex-none bg-transparent text-center tabular text-fg outline-none coarse:w-24\",\n });\n const control = (\n <InputGroup\n ref={ref}\n size={size}\n leadingIcon\n disabled={disabled}\n invalid={!!error}\n className={cn(\"w-auto\", !(label || description || error) && className)}\n {...(force ? { \"data-force\": force } : {})}\n role=\"group\"\n {...(labelId && !ariaLabel ? { \"aria-labelledby\": labelId } : { \"aria-label\": ariaLabel ?? t(\"timeInput.time\", \"Time\") })}\n >\n <Icon icon={__icon_Clock01Icon} size=\"sm\" className=\"text-fg-tertiary\" />\n <span className=\"flex items-center gap-2\">\n <input {...seg(\"h\")} aria-label={t(\"timeInput.hours\", \"Hours\")} {...(id ? { id } : {})} {...fc.controlProps} />\n <span className=\"text-fg-tertiary\">:</span>\n <input ref={minutes} {...seg(\"m\")} aria-label={t(\"timeInput.minutes\", \"Minutes\")} />\n </span>\n {utc && <InputGroup.Addon>UTC</InputGroup.Addon>}\n </InputGroup>\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") TimeInput.displayName = \"TimeInput\";\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { i as e } from "../chunks/context-BELWW79w.js";
|
|
3
|
-
import { n as t } from "../chunks/button-
|
|
3
|
+
import { n as t } from "../chunks/button-h2IFCER2.js";
|
|
4
4
|
import { n } from "../chunks/resize-motion-DS3rIIqy.js";
|
|
5
|
-
import { a as r, c as i, i as a, l as o, n as s, o as c, r as l, s as u, t as d, u as f } from "../chunks/dialog-
|
|
5
|
+
import { a as r, c as i, i as a, l as o, n as s, o as c, r as l, s as u, t as d, u as f } from "../chunks/dialog-BLcP7v24.js";
|
|
6
6
|
import { Fragment as p, useEffect as m, useId as h, useLayoutEffect as g, useMemo as _, useRef as v, useState as y } from "react";
|
|
7
7
|
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/dialog/step-dialog.tsx
|
|
@@ -3,10 +3,10 @@ import { t as e } from "../chunks/cn-DUDmdLpZ.js";
|
|
|
3
3
|
import { t } from "../chunks/dev-CR1p7gCm.js";
|
|
4
4
|
import { i as n, r } from "../chunks/context-BELWW79w.js";
|
|
5
5
|
import { t as i } from "../chunks/icon-BqujXDUc.js";
|
|
6
|
-
import { t as a } from "../chunks/icon-button-
|
|
7
|
-
import { a as o } from "../chunks/tag-
|
|
8
|
-
import { r as s } from "../chunks/switch-
|
|
9
|
-
import { r as c } from "../chunks/segmented-
|
|
6
|
+
import { t as a } from "../chunks/icon-button-DmKFxQbP.js";
|
|
7
|
+
import { a as o } from "../chunks/tag-XgPXKoxi.js";
|
|
8
|
+
import { r as s } from "../chunks/switch-Cq1OfeBr.js";
|
|
9
|
+
import { r as c } from "../chunks/segmented-DxjnIuww.js";
|
|
10
10
|
import { r as l } from "../chunks/select-Bbv2f5F8.js";
|
|
11
11
|
import { i as u } from "../chunks/popover-bjxg020P.js";
|
|
12
12
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
@@ -3,8 +3,8 @@ import { t as e } from "../chunks/cn-DUDmdLpZ.js";
|
|
|
3
3
|
import { i as t, r as n } from "../chunks/context-BELWW79w.js";
|
|
4
4
|
import { t as r } from "../chunks/icon-BqujXDUc.js";
|
|
5
5
|
import { i } from "../chunks/menu-Bnfi9P3t.js";
|
|
6
|
-
import { t as a } from "../chunks/command-list-
|
|
7
|
-
import { r as o } from "../chunks/picker-popover-
|
|
6
|
+
import { t as a } from "../chunks/command-list-DZMVrXWD.js";
|
|
7
|
+
import { r as o } from "../chunks/picker-popover-B5YdOxNm.js";
|
|
8
8
|
import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
|
|
9
9
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
10
10
|
import { Cancel01Icon as m } from "@hugeicons/core-free-icons";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as IconButton, n as KAESO_ICON_BUTTON_DEFAULT_VARIANTS, r as KAESO_ICON_BUTTON_VARIANTS } from "../chunks/icon-button-
|
|
2
|
+
export { t as IconButton, n as KAESO_ICON_BUTTON_DEFAULT_VARIANTS, r as KAESO_ICON_BUTTON_VARIANTS } from "../chunks/icon-button-DmKFxQbP.js";
|