@mortenbrudvik/waveui 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +231 -85
  2. package/dist/components/data-display/InfoButton.cjs +2 -0
  3. package/dist/components/data-display/InfoButton.cjs.map +1 -0
  4. package/dist/components/data-display/InfoButton.mjs +173 -0
  5. package/dist/components/data-display/InfoButton.mjs.map +1 -0
  6. package/dist/components/data-display/InfoLabel.cjs +1 -1
  7. package/dist/components/data-display/InfoLabel.cjs.map +1 -1
  8. package/dist/components/data-display/InfoLabel.mjs +39 -96
  9. package/dist/components/data-display/InfoLabel.mjs.map +1 -1
  10. package/dist/components/input/Checkbox.cjs +1 -1
  11. package/dist/components/input/Checkbox.cjs.map +1 -1
  12. package/dist/components/input/Checkbox.mjs +91 -75
  13. package/dist/components/input/Checkbox.mjs.map +1 -1
  14. package/dist/components/input/ColorPicker.parts.cjs +1 -1
  15. package/dist/components/input/ColorPicker.parts.cjs.map +1 -1
  16. package/dist/components/input/ColorPicker.parts.mjs +1 -1
  17. package/dist/components/input/ColorPicker.parts.mjs.map +1 -1
  18. package/dist/components/input/Combobox.cjs +1 -1
  19. package/dist/components/input/Combobox.cjs.map +1 -1
  20. package/dist/components/input/Combobox.expand.cjs +1 -1
  21. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  22. package/dist/components/input/Combobox.expand.mjs +20 -20
  23. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  24. package/dist/components/input/Combobox.mjs +143 -138
  25. package/dist/components/input/Combobox.mjs.map +1 -1
  26. package/dist/components/input/DatePicker.cjs +1 -1
  27. package/dist/components/input/DatePicker.cjs.map +1 -1
  28. package/dist/components/input/DatePicker.mjs +213 -209
  29. package/dist/components/input/DatePicker.mjs.map +1 -1
  30. package/dist/components/input/Dropdown.cjs +1 -1
  31. package/dist/components/input/Dropdown.cjs.map +1 -1
  32. package/dist/components/input/Dropdown.mjs +80 -74
  33. package/dist/components/input/Dropdown.mjs.map +1 -1
  34. package/dist/components/input/Field.cjs +1 -1
  35. package/dist/components/input/Field.cjs.map +1 -1
  36. package/dist/components/input/Field.mjs +99 -66
  37. package/dist/components/input/Field.mjs.map +1 -1
  38. package/dist/components/input/Input.cjs +1 -1
  39. package/dist/components/input/Input.cjs.map +1 -1
  40. package/dist/components/input/Input.mjs +79 -55
  41. package/dist/components/input/Input.mjs.map +1 -1
  42. package/dist/components/input/Label.cjs +1 -1
  43. package/dist/components/input/Label.cjs.map +1 -1
  44. package/dist/components/input/Label.mjs +19 -13
  45. package/dist/components/input/Label.mjs.map +1 -1
  46. package/dist/components/input/Rating.cjs +1 -1
  47. package/dist/components/input/Rating.cjs.map +1 -1
  48. package/dist/components/input/Rating.item.cjs +2 -0
  49. package/dist/components/input/Rating.item.cjs.map +1 -0
  50. package/dist/components/input/Rating.item.mjs +255 -0
  51. package/dist/components/input/Rating.item.mjs.map +1 -0
  52. package/dist/components/input/Rating.mjs +150 -151
  53. package/dist/components/input/Rating.mjs.map +1 -1
  54. package/dist/components/input/SearchBox.cjs +1 -1
  55. package/dist/components/input/SearchBox.cjs.map +1 -1
  56. package/dist/components/input/SearchBox.mjs +146 -115
  57. package/dist/components/input/SearchBox.mjs.map +1 -1
  58. package/dist/components/input/Select.cjs +1 -1
  59. package/dist/components/input/Select.cjs.map +1 -1
  60. package/dist/components/input/Select.mjs +34 -25
  61. package/dist/components/input/Select.mjs.map +1 -1
  62. package/dist/components/input/Slider.cjs +1 -1
  63. package/dist/components/input/Slider.cjs.map +1 -1
  64. package/dist/components/input/Slider.mjs +77 -54
  65. package/dist/components/input/Slider.mjs.map +1 -1
  66. package/dist/components/input/SpinButton.cjs +1 -1
  67. package/dist/components/input/SpinButton.cjs.map +1 -1
  68. package/dist/components/input/SpinButton.mjs +198 -96
  69. package/dist/components/input/SpinButton.mjs.map +1 -1
  70. package/dist/components/input/Switch.cjs +1 -1
  71. package/dist/components/input/Switch.cjs.map +1 -1
  72. package/dist/components/input/Switch.mjs +71 -55
  73. package/dist/components/input/Switch.mjs.map +1 -1
  74. package/dist/components/input/TagPicker.cjs +1 -1
  75. package/dist/components/input/TagPicker.cjs.map +1 -1
  76. package/dist/components/input/TagPicker.mjs +142 -116
  77. package/dist/components/input/TagPicker.mjs.map +1 -1
  78. package/dist/components/input/Textarea.cjs +1 -1
  79. package/dist/components/input/Textarea.cjs.map +1 -1
  80. package/dist/components/input/Textarea.mjs +28 -21
  81. package/dist/components/input/Textarea.mjs.map +1 -1
  82. package/dist/components/input/TimePicker.cjs +1 -1
  83. package/dist/components/input/TimePicker.cjs.map +1 -1
  84. package/dist/components/input/TimePicker.mjs +189 -184
  85. package/dist/components/input/TimePicker.mjs.map +1 -1
  86. package/dist/components/input/fieldLabel.cjs +2 -0
  87. package/dist/components/input/fieldLabel.cjs.map +1 -0
  88. package/dist/components/input/fieldLabel.mjs +17 -0
  89. package/dist/components/input/fieldLabel.mjs.map +1 -0
  90. package/dist/components/input/inputLook.cjs +2 -0
  91. package/dist/components/input/inputLook.cjs.map +1 -0
  92. package/dist/components/input/inputLook.mjs +28 -0
  93. package/dist/components/input/inputLook.mjs.map +1 -0
  94. package/dist/components/input/pickerStyles.cjs +1 -1
  95. package/dist/components/input/pickerStyles.cjs.map +1 -1
  96. package/dist/components/input/pickerStyles.mjs +42 -4
  97. package/dist/components/input/pickerStyles.mjs.map +1 -1
  98. package/dist/components/navigation/Menu.popover.cjs +1 -1
  99. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  100. package/dist/components/navigation/Menu.popover.mjs +10 -10
  101. package/dist/components/navigation/Menu.root.cjs +1 -1
  102. package/dist/components/navigation/Menu.root.cjs.map +1 -1
  103. package/dist/components/navigation/Menu.root.mjs +10 -10
  104. package/dist/components/overlays/Popover.cjs +1 -1
  105. package/dist/components/overlays/Popover.cjs.map +1 -1
  106. package/dist/components/overlays/Popover.mjs +203 -208
  107. package/dist/components/overlays/Popover.mjs.map +1 -1
  108. package/dist/components/overlays/Popover.shared.cjs +1 -1
  109. package/dist/components/overlays/Popover.shared.cjs.map +1 -1
  110. package/dist/components/overlays/Popover.shared.mjs +82 -77
  111. package/dist/components/overlays/Popover.shared.mjs.map +1 -1
  112. package/dist/components/provider/WaveProvider.cjs +1 -1
  113. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  114. package/dist/components/provider/WaveProvider.mjs +25 -19
  115. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  116. package/dist/hooks/useFieldControl.cjs.map +1 -1
  117. package/dist/hooks/useFieldControl.mjs.map +1 -1
  118. package/dist/index.cjs +1 -1
  119. package/dist/index.d.cts +805 -99
  120. package/dist/index.d.ts +805 -99
  121. package/dist/index.mjs +101 -99
  122. package/dist/lib/classNames.cjs +1 -1
  123. package/dist/lib/classNames.cjs.map +1 -1
  124. package/dist/lib/classNames.mjs +74 -66
  125. package/dist/lib/classNames.mjs.map +1 -1
  126. package/dist/lib/styles.cjs +1 -1
  127. package/dist/lib/styles.cjs.map +1 -1
  128. package/dist/lib/styles.mjs +21 -4
  129. package/dist/lib/styles.mjs.map +1 -1
  130. package/dist/styles.css +1 -1
  131. package/package.json +1 -1
  132. package/src/styles/tokens.css +13 -0
@@ -9,136 +9,138 @@ import { getArrowIntent as ee, getDirection as te } from "../../lib/direction.mj
9
9
  import { FOCUSABLE_SELECTOR as ne } from "../../lib/focus.mjs";
10
10
  import { useMergedRefs as re } from "../../hooks/useMergedRefs.mjs";
11
11
  import { useIsClient as ie } from "../../hooks/useIsClient.mjs";
12
- import { focusableDisabledProps as ae, joinIds as oe, preventIfDisabled as se } from "../../lib/aria.mjs";
13
- import { useFieldContext as ce, useFieldControl as le } from "../../hooks/useFieldControl.mjs";
14
- import { useDismiss as ue } from "../../hooks/useDismiss.mjs";
15
- import { Portal as de } from "../portal/Portal.mjs";
16
- import { disabledStyles as fe, focusRing as pe, forcedColors as me, inputBase as he, inputFocus as ge } from "../../lib/styles.mjs";
17
- import { CalendarIcon as _e, ChevronLeftIcon as ve, ChevronRightIcon as ye, DismissIcon as be } from "../../lib/icons.mjs";
18
- import { isInvalidLook as xe } from "./Input.mjs";
19
- import { useFormReset as Se } from "../../hooks/useFormReset.mjs";
20
- import { HiddenInput as Ce } from "../internal/HiddenInput.mjs";
21
- import { usePopupPosition as we } from "../../hooks/usePopupPosition.mjs";
22
- import { addDays as s, addMonths as c, clampDate as l, formatDate as Te, formatDayLabel as Ee, formatDayNumber as De, formatISODate as u, formatMonthYear as Oe, getCalendarDays as ke, getLocaleDateFormat as Ae, getWeekdayNames as je, isDateInRange as Me, isSameDay as d, isSameMonth as f, isValidLocaleTag as Ne, parseDate as Pe, startOfDay as p, startOfMonth as Fe } from "./dateUtils.mjs";
23
- import { useFocusTrap as Ie } from "../../hooks/useFocusTrap.mjs";
24
- import { useRestoreFocus as Le } from "../../hooks/useRestoreFocus.mjs";
25
- import * as m from "react";
26
- import { jsx as h, jsxs as g } from "react/jsx-runtime";
27
- import { flushSync as Re } from "react-dom";
12
+ import { focusableDisabledProps as s, joinIds as ae, preventIfDisabled as oe } from "../../lib/aria.mjs";
13
+ import { useFieldContext as se, useFieldControl as ce } from "../../hooks/useFieldControl.mjs";
14
+ import { useDismiss as le } from "../../hooks/useDismiss.mjs";
15
+ import { Portal as ue } from "../portal/Portal.mjs";
16
+ import { disabledStyles as de, focusRing as fe, forcedColors as pe, inputAppearanceClasses as me, inputFocus as he, inputHeightClasses as ge, inputPaddingClasses as _e, inputTextClasses as ve } from "../../lib/styles.mjs";
17
+ import { CalendarIcon as ye, ChevronLeftIcon as be, ChevronRightIcon as xe, DismissIcon as Se } from "../../lib/icons.mjs";
18
+ import { useInputLook as Ce } from "./inputLook.mjs";
19
+ import { isInvalidLook as we } from "./Input.mjs";
20
+ import { useFormReset as Te } from "../../hooks/useFormReset.mjs";
21
+ import { HiddenInput as Ee } from "../internal/HiddenInput.mjs";
22
+ import { pickerButtonOffset as De, pickerEndPadding as Oe, pickerGlyphSize as ke, pickerIconButtonClasses as Ae } from "./pickerStyles.mjs";
23
+ import { usePopupPosition as je } from "../../hooks/usePopupPosition.mjs";
24
+ import { addDays as c, addMonths as l, clampDate as u, formatDate as Me, formatDayLabel as Ne, formatDayNumber as Pe, formatISODate as d, formatMonthYear as Fe, getCalendarDays as Ie, getLocaleDateFormat as Le, getWeekdayNames as Re, isDateInRange as ze, isSameDay as f, isSameMonth as p, isValidLocaleTag as Be, parseDate as Ve, startOfDay as m, startOfMonth as He } from "./dateUtils.mjs";
25
+ import { useFocusTrap as Ue } from "../../hooks/useFocusTrap.mjs";
26
+ import { useRestoreFocus as We } from "../../hooks/useRestoreFocus.mjs";
27
+ import * as h from "react";
28
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
29
+ import { flushSync as Ge } from "react-dom";
28
30
  //#region src/components/input/DatePicker.tsx
29
- var ze = (e) => e ? `Enter a date in the format ${e}.` : "Enter a valid date.", Be = (e, t) => e !== void 0 && t !== void 0 ? `Enter a date between ${e} and ${t}.` : e === void 0 ? `Enter a date on or before ${t}.` : `Enter a date on or after ${e}.`, Ve = "absolute flex h-6 w-6 items-center justify-center rounded bg-transparent p-0 text-muted-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover not-disabled:not-aria-disabled:hover:text-foreground", He = "flex h-8 w-8 items-center justify-center rounded bg-transparent p-0 text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover", Ue = "flex h-8 w-8 items-center justify-center rounded bg-transparent p-0 text-caption-1 text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover data-[outside]:text-muted-foreground data-[today]:border data-[today]:border-primary data-[today]:font-semibold data-[selected]:bg-primary data-[selected]:font-semibold data-[selected]:text-primary-foreground not-disabled:not-aria-disabled:data-[selected]:hover:bg-primary-hover aria-disabled:line-through";
30
- function We(e) {
31
+ var Ke = (e) => e ? `Enter a date in the format ${e}.` : "Enter a valid date.", qe = (e, t) => e !== void 0 && t !== void 0 ? `Enter a date between ${e} and ${t}.` : e === void 0 ? `Enter a date on or before ${t}.` : `Enter a date on or after ${e}.`, Je = "flex h-8 w-8 items-center justify-center rounded bg-transparent p-0 text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover", Ye = "flex h-8 w-8 items-center justify-center rounded bg-transparent p-0 text-caption-1 text-foreground not-disabled:not-aria-disabled:hover:bg-subtle-hover data-[outside]:text-muted-foreground data-[today]:border data-[today]:border-primary data-[today]:font-semibold data-[selected]:bg-primary data-[selected]:font-semibold data-[selected]:text-primary-foreground not-disabled:not-aria-disabled:data-[selected]:hover:bg-primary-hover aria-disabled:line-through";
32
+ function Xe(e) {
31
33
  let t = [];
32
34
  for (let n = 0; n < e.length; n += 7) t.push(e.slice(n, n + 7));
33
35
  return t;
34
36
  }
35
- var _ = (_) => {
36
- let { value: Ge, defaultValue: Ke, onValueChange: qe, onChange: Je, formatDate: v, parseDate: y, locale: b, minDate: x, maxDate: S, disabledDates: Ye, placeholder: Xe = "Select a date", disabled: C = !1, readOnly: w, clearable: Ze = !1, firstDayOfWeek: T = 0, open: Qe, defaultOpen: $e, onOpenChange: et, onInvalidInput: tt, labels: E, name: nt, form: rt, required: it, autoComplete: at = "off", autoCapitalize: ot, autoCorrect: st, enterKeyHint: ct, inputMode: lt, spellCheck: ut, autoFocus: dt, tabIndex: ft, id: pt, "aria-label": mt, "aria-labelledby": ht, "aria-describedby": gt, "aria-invalid": _t, "aria-required": vt, "aria-errormessage": yt, "aria-details": bt, onFocus: xt, onBlur: St, onKeyDown: Ct, onKeyUp: wt, controlRef: Tt, className: Et, ref: Dt, ...Ot } = _;
37
- Je !== void 0 && t("DatePicker", "onChange", "onValueChange");
38
- let kt = v !== void 0, D = y !== void 0;
39
- m.useEffect(() => {
40
- kt && !D && n("DatePicker:formatDate-without-parseDate", "DatePicker: `formatDate` is set without `parseDate`. Typed dates are parsed with the default parser for `locale` (its numeric format or yyyy-mm-dd), which may not read your format; pass `parseDate` as the inverse of `formatDate`.");
41
- }, [kt, D]), m.useEffect(() => {
42
- b !== void 0 && !Ne(b) && n(`DatePicker:invalid-locale:${b}`, `DatePicker: \`locale\` "${b}" is not a valid BCP 47 language tag (use hyphens, as in "en-US"). The runtime default locale formats and parses the dates instead, so the server and the browser may render different text.`);
37
+ var Ze = (Ze) => {
38
+ let { value: Qe, defaultValue: $e, onValueChange: et, onChange: tt, formatDate: v, parseDate: y, locale: b, minDate: x, maxDate: S, disabledDates: nt, placeholder: rt = "Select a date", disabled: C = !1, size: it, appearance: at, readOnly: w, clearable: ot = !1, firstDayOfWeek: T = 0, open: st, defaultOpen: ct, onOpenChange: lt, onInvalidInput: ut, labels: E, name: dt, form: ft, required: pt, autoComplete: mt = "off", autoCapitalize: ht, autoCorrect: gt, enterKeyHint: _t, inputMode: vt, spellCheck: yt, autoFocus: bt, tabIndex: xt, id: St, "aria-label": Ct, "aria-labelledby": wt, "aria-describedby": Tt, "aria-invalid": Et, "aria-required": Dt, "aria-errormessage": Ot, "aria-details": kt, onFocus: At, onBlur: jt, onKeyDown: Mt, onKeyUp: Nt, controlRef: Pt, className: Ft, ref: It, ...Lt } = Ze;
39
+ tt !== void 0 && t("DatePicker", "onChange", "onValueChange");
40
+ let { size: D, appearance: O } = Ce(it, at), Rt = v !== void 0, k = y !== void 0;
41
+ h.useEffect(() => {
42
+ Rt && !k && n("DatePicker:formatDate-without-parseDate", "DatePicker: `formatDate` is set without `parseDate`. Typed dates are parsed with the default parser for `locale` (its numeric format or yyyy-mm-dd), which may not read your format; pass `parseDate` as the inverse of `formatDate`.");
43
+ }, [Rt, k]), h.useEffect(() => {
44
+ b !== void 0 && !Be(b) && n(`DatePicker:invalid-locale:${b}`, `DatePicker: \`locale\` "${b}" is not a valid BCP 47 language tag (use hyphens, as in "en-US"). The runtime default locale formats and parses the dates instead, so the server and the browser may render different text.`);
43
45
  }, [b]);
44
- let [O, At] = a(Ge, Ke ?? null, (e) => {
45
- qe?.(e), Je?.(e);
46
- }), k = !C && !w, [A, j] = a(Qe, ($e ?? !1) && k, et), jt = ie(), M = A && k && jt, Mt = Qe !== void 0;
47
- m.useEffect(() => {
48
- !k && A && !Mt && j(!1);
46
+ let [A, zt] = a(Qe, $e ?? null, (e) => {
47
+ et?.(e), tt?.(e);
48
+ }), j = !C && !w, [M, N] = a(st, (ct ?? !1) && j, lt), Bt = ie(), P = M && j && Bt, Vt = st !== void 0;
49
+ h.useEffect(() => {
50
+ !j && M && !Vt && N(!1);
49
51
  }, [
50
- k,
51
- A,
52
- Mt,
53
- j
52
+ j,
53
+ M,
54
+ Vt,
55
+ N
54
56
  ]);
55
- let Nt = (e) => v ? v(e) : Te(e, b), Pt = (e) => y ? y(e) : Pe(e, b), [N, P] = m.useState(null), [F, I] = m.useState(null), [Ft, It] = m.useState(k);
56
- Ft !== k && (It(k), k || (P(null), I(null)));
57
- let L = O ? u(O) : "", [Lt, Rt] = m.useState(L);
58
- Lt !== L && (Rt(L), F !== null && (P(null), I(null)));
59
- let zt = (e) => !Me(e, x, S) || !!Ye?.(p(e)), R = (e) => {
60
- let t = e ? p(e) : null;
61
- (t ? d(t, O) : O === null) || At(t), P(null), I(null);
62
- }, z = (e) => {
63
- if (!e.trim()) return R(null), !0;
64
- let t = Pt(e), n = null;
65
- if (!t || Number.isNaN(t.getTime()) ? n = "unparseable" : Me(t, x, S) ? Ye?.(p(t)) && (n = "disabled") : n = "out-of-range", n || !t) {
57
+ let F = (e) => v ? v(e) : Me(e, b), Ht = (e) => y ? y(e) : Ve(e, b), [I, L] = h.useState(null), [R, z] = h.useState(null), [Ut, Wt] = h.useState(j);
58
+ Ut !== j && (Wt(j), j || (L(null), z(null)));
59
+ let B = A ? d(A) : "", [Gt, Kt] = h.useState(B);
60
+ Gt !== B && (Kt(B), R !== null && (L(null), z(null)));
61
+ let qt = (e) => !ze(e, x, S) || !!nt?.(m(e)), V = (e) => {
62
+ let t = e ? m(e) : null;
63
+ (t ? f(t, A) : A === null) || zt(t), L(null), z(null);
64
+ }, H = (e) => {
65
+ if (!e.trim()) return V(null), !0;
66
+ let t = Ht(e), n = null;
67
+ if (!t || Number.isNaN(t.getTime()) ? n = "unparseable" : ze(t, x, S) ? nt?.(m(t)) && (n = "disabled") : n = "out-of-range", n || !t) {
66
68
  let t = n ?? "unparseable";
67
- return I(t), tt?.(e, t), !1;
69
+ return z(t), ut?.(e, t), !1;
68
70
  }
69
- return R(t), !0;
70
- }, Bt = p(/* @__PURE__ */ new Date()), Vt = () => Fe(l(O ?? Bt, x, S)), [B, V] = m.useState(Vt), [Ht, H] = m.useState(null), [U, W] = m.useState(!1), [Ut, Wt] = m.useState(M);
71
- Ut !== M && (Wt(M), M && (V(Vt()), H(null))), U && !M && W(!1);
72
- let G = m.useMemo(() => We(ke(B, T)), [B, T]), K = (e) => !!e && f(e, B), Gt = (e) => !!e && e >= G[0][0] && e <= G[G.length - 1][6], Kt = l(Bt, x, S), qt = l(B, x, S), q = Gt(Ht) ? Ht : K(O) ? p(O) : K(Kt) ? Kt : K(qt) ? qt : B, J = u(q), Jt = (e) => {
73
- let t = l(e, x, S);
74
- H(t), f(t, B) || V(Fe(t));
75
- }, Yt = (e) => {
76
- let t = c(B, e), n = l(c(q, e), x, S);
77
- V(t), H(f(n, t) ? n : null);
78
- }, Xt = (e) => {
79
- d(e, q) || H(e);
80
- }, Zt = !!x && s(B, -1) < p(x), Qt = !!S && c(B, 1) > p(S), $t = m.useMemo(() => je(b, T), [b, T]), Y = m.useRef(null), X = m.useRef(null), Z = m.useRef(null), en = m.useRef(null), Q = m.useRef(null), [tn, nn] = m.useState(null), rn = re(Tt, Y), an = o("datepicker-dialog"), on = o("datepicker-heading"), sn = o("datepicker-grid"), cn = o("datepicker-error"), ln = (e) => {
81
- Q.current = e, j(!1);
82
- }, { layerId: un } = ue({
83
- open: M,
71
+ return V(t), !0;
72
+ }, U = m(/* @__PURE__ */ new Date()), Jt = () => He(u(A ?? U, x, S)), [W, Yt] = h.useState(Jt), [Xt, G] = h.useState(null), [Zt, Qt] = h.useState(!1), [$t, en] = h.useState(P);
73
+ $t !== P && (en(P), P && (Yt(Jt()), G(null))), Zt && !P && Qt(!1);
74
+ let K = h.useMemo(() => Xe(Ie(W, T)), [W, T]), tn = (e) => !!e && p(e, W), nn = (e) => !!e && e >= K[0][0] && e <= K[K.length - 1][6], rn = u(U, x, S), an = u(W, x, S), q = nn(Xt) ? Xt : tn(A) ? m(A) : tn(rn) ? rn : tn(an) ? an : W, on = d(q), sn = (e) => {
75
+ let t = u(e, x, S);
76
+ G(t), p(t, W) || Yt(He(t));
77
+ }, cn = (e) => {
78
+ let t = l(W, e), n = u(l(q, e), x, S);
79
+ Yt(t), G(p(n, t) ? n : null);
80
+ }, ln = (e) => {
81
+ f(e, q) || G(e);
82
+ }, un = !!x && c(W, -1) < m(x), dn = !!S && l(W, 1) > m(S), fn = h.useMemo(() => Re(b, T), [b, T]), J = h.useRef(null), Y = h.useRef(null), pn = h.useRef(null), mn = h.useRef(null), X = h.useRef(null), [hn, gn] = h.useState(null), _n = re(Pt, J), vn = o("datepicker-dialog"), yn = o("datepicker-heading"), Z = o("datepicker-grid"), bn = o("datepicker-error"), xn = (e) => {
83
+ X.current = e, N(!1);
84
+ }, { layerId: Sn } = le({
85
+ open: P,
84
86
  onDismiss: (e, t) => {
85
87
  let n = e === "outside-press" && t.target instanceof Element ? t.target.closest(ne) : null;
86
- ln(n ?? (U ? Y.current : null));
88
+ xn(n ?? (Zt ? J.current : null));
87
89
  },
88
- refs: [en, X],
89
- anchorRef: X,
90
+ refs: [mn, Y],
91
+ anchorRef: Y,
90
92
  kind: "modal"
91
- }), { setReference: dn, setFloating: fn, floatingProps: pn } = we({
92
- open: M,
93
+ }), { setReference: Cn, setFloating: wn, floatingProps: Tn } = je({
94
+ open: P,
93
95
  side: "bottom",
94
96
  align: "start"
95
- }), mn = re(en, nn, fn);
96
- Ie(tn, {
97
- enabled: M,
98
- layerId: un,
99
- initialFocus: () => Z.current?.querySelector("button[tabindex=\"0\"]") ?? null
100
- }), Le({
101
- enabled: M,
102
- container: tn,
103
- triggerRef: X,
104
- finalFocusRef: Q,
97
+ }), En = re(mn, gn, wn);
98
+ Ue(hn, {
99
+ enabled: P,
100
+ layerId: Sn,
101
+ initialFocus: () => pn.current?.querySelector("button[tabindex=\"0\"]") ?? null
102
+ }), We({
103
+ enabled: P,
104
+ container: hn,
105
+ triggerRef: Y,
106
+ finalFocusRef: X,
105
107
  onlyIfFocusInside: !0
106
- }), m.useLayoutEffect(() => {
107
- M && (Q.current = null);
108
- }, [M]), m.useLayoutEffect(() => {
109
- let e = Z.current;
108
+ }), h.useLayoutEffect(() => {
109
+ P && (X.current = null);
110
+ }, [P]), h.useLayoutEffect(() => {
111
+ let e = pn.current;
110
112
  if (!e) return;
111
113
  let t = e.ownerDocument.activeElement;
112
114
  if (!t || !e.contains(t)) return;
113
- let n = e.querySelector(`button[data-date="${J}"]`);
115
+ let n = e.querySelector(`button[data-date="${on}"]`);
114
116
  n && n !== t && n.focus();
115
- }, [J]);
116
- let hn = ce(), gn = (it ?? hn?.required ?? !1) && !w, _n = F !== null && !hn?.hasErrorMessage, vn = le({
117
- id: pt,
118
- "aria-label": mt,
119
- "aria-labelledby": ht,
120
- "aria-describedby": oe(gt, _n ? cn : void 0),
121
- "aria-invalid": F !== null || _t,
122
- "aria-required": vt ?? it
123
- }), yn = xe(!1, vn["aria-invalid"]);
124
- Se(Y, () => R(Ke ?? null), rt);
125
- let bn = Ze && !w && O !== null, xn = (e) => {
126
- k && (P(e.target.value), I(null));
127
- }, Sn = r(Ct, (e) => {
128
- k && !e.nativeEvent.isComposing && (e.key === "Enter" && N !== null ? (e.preventDefault(), z(N)) : e.key === "Tab" && !e.shiftKey && bn && N !== null && !N.trim() ? Re(() => z(N)) : e.key === "ArrowDown" && e.altKey && !M && (e.preventDefault(), N !== null && F === null && z(N), W(!0), j(!0)));
129
- }), Cn = r(St, () => {
130
- k && N !== null && F === null && z(N);
131
- }), wn = () => {
132
- k && (Q.current = null, W(!1), j(!M));
133
- }, Tn = () => {
134
- k && (R(null), Y.current?.focus());
135
- }, En = (e) => {
117
+ }, [on]);
118
+ let Dn = se(), On = (pt ?? Dn?.required ?? !1) && !w, kn = R !== null && !Dn?.hasErrorMessage, An = ce({
119
+ id: St,
120
+ "aria-label": Ct,
121
+ "aria-labelledby": wt,
122
+ "aria-describedby": ae(Tt, kn ? bn : void 0),
123
+ "aria-invalid": R !== null || Et,
124
+ "aria-required": Dt ?? pt
125
+ }), jn = we(!1, An["aria-invalid"]);
126
+ Te(J, () => V($e ?? null), ft);
127
+ let Q = ot && !w && A !== null, Mn = (e) => {
128
+ j && (L(e.target.value), z(null));
129
+ }, Nn = r(Mt, (e) => {
130
+ j && !e.nativeEvent.isComposing && (e.key === "Enter" && I !== null ? (e.preventDefault(), H(I)) : e.key === "Tab" && !e.shiftKey && Q && I !== null && !I.trim() ? Ge(() => H(I)) : e.key === "ArrowDown" && e.altKey && !P && (e.preventDefault(), I !== null && R === null && H(I), Qt(!0), N(!0)));
131
+ }), Pn = r(jt, () => {
132
+ j && I !== null && R === null && H(I);
133
+ }), Fn = () => {
134
+ j && (X.current = null, Qt(!1), N(!P));
135
+ }, In = () => {
136
+ j && (V(null), J.current?.focus());
137
+ }, Ln = (e) => {
136
138
  e.preventDefault();
137
- }, Dn = (e) => {
138
- k && !zt(e) && (R(e), ln(Y.current));
139
- }, On = (e) => {
140
- e.key !== "Escape" || e.defaultPrevented || e.nativeEvent.isComposing || (e.preventDefault(), ln(U ? Y.current : null));
141
- }, kn = (e) => {
139
+ }, Rn = (e) => {
140
+ j && !qt(e) && (V(e), xn(J.current));
141
+ }, zn = (e) => {
142
+ e.key !== "Escape" || e.defaultPrevented || e.nativeEvent.isComposing || (e.preventDefault(), xn(Zt ? J.current : null));
143
+ }, Bn = (e) => {
142
144
  if (e.altKey || e.ctrlKey || e.metaKey) return;
143
145
  let t = (q.getDay() - T + 7) % 7, n;
144
146
  switch (e.key) {
@@ -148,183 +150,185 @@ var _ = (_) => {
148
150
  orientation: "horizontal",
149
151
  dir: te(e.currentTarget)
150
152
  });
151
- n = s(q, t === "next" ? 1 : -1);
153
+ n = c(q, t === "next" ? 1 : -1);
152
154
  break;
153
155
  }
154
156
  case "ArrowDown":
155
- n = s(q, 7);
157
+ n = c(q, 7);
156
158
  break;
157
159
  case "ArrowUp":
158
- n = s(q, -7);
160
+ n = c(q, -7);
159
161
  break;
160
162
  case "PageDown":
161
- n = c(q, e.shiftKey ? 12 : 1);
163
+ n = l(q, e.shiftKey ? 12 : 1);
162
164
  break;
163
165
  case "PageUp":
164
- n = c(q, e.shiftKey ? -12 : -1);
166
+ n = l(q, e.shiftKey ? -12 : -1);
165
167
  break;
166
168
  case "Home":
167
- n = s(q, -t);
169
+ n = c(q, -t);
168
170
  break;
169
171
  case "End":
170
- n = s(q, 6 - t);
172
+ n = c(q, 6 - t);
171
173
  break;
172
174
  default: return;
173
175
  }
174
- e.preventDefault(), Jt(n);
175
- }, An = N ?? (O ? Nt(O) : ""), $ = "";
176
- return F === "unparseable" ? $ = (E?.invalidDate ?? ze)(D ? void 0 : Ae(b).pattern) : F === "out-of-range" && (x || S) ? $ = (E?.outOfRange ?? Be)(x ? Nt(p(x)) : void 0, S ? Nt(p(S)) : void 0) : F === "disabled" && ($ = E?.unavailableDate ?? "This date is not available."), /* @__PURE__ */ g("div", {
177
- ...Ot,
178
- ref: Dt,
179
- className: e(i.root, "relative inline-flex flex-col", Et),
176
+ e.preventDefault(), sn(n);
177
+ }, Vn = I ?? (A ? F(A) : ""), $ = "";
178
+ return R === "unparseable" ? $ = (E?.invalidDate ?? Ke)(k ? void 0 : Le(b).pattern) : R === "out-of-range" && (x || S) ? $ = (E?.outOfRange ?? qe)(x ? F(m(x)) : void 0, S ? F(m(S)) : void 0) : R === "disabled" && ($ = E?.unavailableDate ?? "This date is not available."), /* @__PURE__ */ _("div", {
179
+ "data-size": D,
180
+ "data-appearance": O,
181
+ ...Lt,
182
+ ref: It,
183
+ className: e(i.root, "relative inline-flex flex-col", Ft),
180
184
  children: [
181
- /* @__PURE__ */ g("div", {
182
- ref: dn,
185
+ /* @__PURE__ */ _("div", {
186
+ ref: Cn,
183
187
  className: "relative flex items-center",
184
188
  children: [
185
- /* @__PURE__ */ h("input", {
186
- ref: rn,
189
+ /* @__PURE__ */ g("input", {
190
+ ref: _n,
187
191
  type: "text",
188
- ...vn,
189
- "aria-errormessage": yt,
190
- "aria-details": bt,
191
- value: An,
192
- onChange: xn,
193
- onFocus: xt,
194
- onBlur: Cn,
195
- onKeyDown: Sn,
196
- onKeyUp: wt,
197
- placeholder: Xe,
192
+ ...An,
193
+ "aria-errormessage": Ot,
194
+ "aria-details": kt,
195
+ value: Vn,
196
+ onChange: Mn,
197
+ onFocus: At,
198
+ onBlur: Pn,
199
+ onKeyDown: Nn,
200
+ onKeyUp: Nt,
201
+ placeholder: rt,
198
202
  disabled: C,
199
203
  readOnly: w,
200
- autoComplete: at,
201
- autoCapitalize: ot,
202
- autoCorrect: st,
203
- enterKeyHint: ct,
204
- inputMode: lt,
205
- spellCheck: ut,
206
- autoFocus: dt,
207
- tabIndex: ft,
208
- className: e(i.input, he, "border-b-stroke-accessible", ge, fe, yn && "border-destructive focus:border-b-destructive", bn ? "pe-14" : "pe-8")
204
+ autoComplete: mt,
205
+ autoCapitalize: ht,
206
+ autoCorrect: gt,
207
+ enterKeyHint: _t,
208
+ inputMode: vt,
209
+ spellCheck: yt,
210
+ autoFocus: bt,
211
+ tabIndex: xt,
212
+ className: e(i.input, ge[D], "w-full", _e[D], ve[D], me[O], "text-foreground placeholder:text-muted-foreground", he, de, jn && "border-destructive", Oe(Q ? 2 : 1, D))
209
213
  }),
210
- bn && /* @__PURE__ */ h("button", {
214
+ Q && /* @__PURE__ */ g("button", {
211
215
  type: "button",
212
216
  "aria-label": E?.clear ?? "Clear date",
213
217
  disabled: C,
214
- onMouseDown: En,
215
- onClick: Tn,
216
- className: e(i.clearButton, Ve, "end-7", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
217
- children: /* @__PURE__ */ h(be, {})
218
+ onMouseDown: Ln,
219
+ onClick: In,
220
+ className: e(i.clearButton, Ae(D, O), De(D, 2), "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
221
+ children: /* @__PURE__ */ g(Se, { size: ke(D, "icon") })
218
222
  }),
219
- /* @__PURE__ */ h("button", {
220
- ref: X,
223
+ /* @__PURE__ */ g("button", {
224
+ ref: Y,
221
225
  type: "button",
222
226
  "aria-label": E?.openCalendar ?? "Open calendar",
223
227
  "aria-haspopup": "dialog",
224
- "aria-expanded": M,
225
- "aria-controls": M ? an : void 0,
228
+ "aria-expanded": P,
229
+ "aria-controls": P ? vn : void 0,
226
230
  disabled: C || w,
227
- onClick: wn,
228
- className: e(i.openCalendarButton, Ve, "end-1", pe, fe),
229
- children: /* @__PURE__ */ h(_e, {})
231
+ onClick: Fn,
232
+ className: e(i.openCalendarButton, Ae(D, O), De(D, 1), fe, de),
233
+ children: /* @__PURE__ */ g(ye, { size: ke(D, "icon") })
230
234
  })
231
235
  ]
232
236
  }),
233
- _n && /* @__PURE__ */ h("p", {
234
- id: cn,
237
+ kn && /* @__PURE__ */ g("p", {
238
+ id: bn,
235
239
  role: "alert",
236
240
  className: e(i.errorMessage, "mt-1 text-caption-1 text-error"),
237
241
  children: $
238
242
  }),
239
- /* @__PURE__ */ h(Ce, {
240
- name: nt,
241
- form: rt,
243
+ /* @__PURE__ */ g(Ee, {
244
+ name: dt,
245
+ form: ft,
242
246
  disabled: C,
243
- value: O ? u(O) : "",
247
+ value: A ? d(A) : "",
244
248
  type: "text",
245
- required: gn,
246
- onInvalid: () => Y.current?.focus()
249
+ required: On,
250
+ onInvalid: () => J.current?.focus()
247
251
  }),
248
- M && /* @__PURE__ */ h(de, {
249
- layerId: un,
250
- children: /* @__PURE__ */ g("div", {
251
- ref: mn,
252
- id: an,
252
+ P && /* @__PURE__ */ g(ue, {
253
+ layerId: Sn,
254
+ children: /* @__PURE__ */ _("div", {
255
+ ref: En,
256
+ id: vn,
253
257
  role: "dialog",
254
258
  "aria-modal": "true",
255
- "aria-labelledby": on,
256
- ...pn,
259
+ "aria-labelledby": yn,
260
+ ...Tn,
257
261
  "data-state": "open",
258
- onKeyDown: On,
262
+ onKeyDown: zn,
259
263
  className: e(i.surface, "rounded-md border border-border bg-background p-3 text-foreground shadow-16"),
260
- children: [/* @__PURE__ */ g("div", {
264
+ children: [/* @__PURE__ */ _("div", {
261
265
  className: e(i.header, "mb-2 flex items-center justify-between gap-2"),
262
266
  children: [
263
- /* @__PURE__ */ h("button", {
267
+ /* @__PURE__ */ g("button", {
264
268
  type: "button",
265
269
  "aria-label": E?.previousMonth ?? "Previous month",
266
- "aria-controls": sn,
267
- ...ae(Zt),
268
- onClick: se(Zt, () => Yt(-1)),
269
- className: e(i.previousMonthButton, He, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
270
- children: /* @__PURE__ */ h(ve, { className: "wave-rtl:-scale-x-100" })
270
+ "aria-controls": Z,
271
+ ...s(un),
272
+ onClick: oe(un, () => cn(-1)),
273
+ className: e(i.previousMonthButton, Je, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
274
+ children: /* @__PURE__ */ g(be, { className: "wave-rtl:-scale-x-100" })
271
275
  }),
272
- /* @__PURE__ */ h("h2", {
273
- id: on,
276
+ /* @__PURE__ */ g("h2", {
277
+ id: yn,
274
278
  "aria-live": "polite",
275
279
  className: e(i.heading, "text-body-1 font-semibold"),
276
- children: Oe(B, b)
280
+ children: Fe(W, b)
277
281
  }),
278
- /* @__PURE__ */ h("button", {
282
+ /* @__PURE__ */ g("button", {
279
283
  type: "button",
280
284
  "aria-label": E?.nextMonth ?? "Next month",
281
- "aria-controls": sn,
282
- ...ae(Qt),
283
- onClick: se(Qt, () => Yt(1)),
284
- className: e(i.nextMonthButton, He, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
285
- children: /* @__PURE__ */ h(ye, { className: "wave-rtl:-scale-x-100" })
285
+ "aria-controls": Z,
286
+ ...s(dn),
287
+ onClick: oe(dn, () => cn(1)),
288
+ className: e(i.nextMonthButton, Je, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100"),
289
+ children: /* @__PURE__ */ g(xe, { className: "wave-rtl:-scale-x-100" })
286
290
  })
287
291
  ]
288
- }), /* @__PURE__ */ g("table", {
289
- ref: Z,
290
- id: sn,
292
+ }), /* @__PURE__ */ _("table", {
293
+ ref: pn,
294
+ id: Z,
291
295
  role: "grid",
292
- "aria-labelledby": on,
293
- onKeyDown: kn,
296
+ "aria-labelledby": yn,
297
+ onKeyDown: Bn,
294
298
  className: e(i.grid, "border-collapse"),
295
- children: [/* @__PURE__ */ h("thead", { children: /* @__PURE__ */ h("tr", { children: $t.map((t) => /* @__PURE__ */ g("th", {
299
+ children: [/* @__PURE__ */ g("thead", { children: /* @__PURE__ */ g("tr", { children: fn.map((t) => /* @__PURE__ */ _("th", {
296
300
  scope: "col",
297
301
  abbr: t.long,
298
302
  "aria-label": t.long,
299
303
  className: e(i.weekday, "h-8 w-8 text-center text-caption-1 font-normal text-muted-foreground"),
300
- children: [/* @__PURE__ */ h("span", {
304
+ children: [/* @__PURE__ */ g("span", {
301
305
  "aria-hidden": "true",
302
306
  children: t.short
303
- }), /* @__PURE__ */ h("span", {
307
+ }), /* @__PURE__ */ g("span", {
304
308
  className: "sr-only",
305
309
  children: t.long
306
310
  })]
307
- }, t.long)) }) }), /* @__PURE__ */ h("tbody", { children: G.map((t, n) => /* @__PURE__ */ h("tr", { children: t.map((t, n) => {
308
- let r = u(t), a = d(t, O), o = d(t, Bt), ee = r === J, te = zt(t);
309
- return /* @__PURE__ */ h("td", {
311
+ }, t.long)) }) }), /* @__PURE__ */ g("tbody", { children: K.map((t, n) => /* @__PURE__ */ g("tr", { children: t.map((t, n) => {
312
+ let r = d(t), a = f(t, A), o = f(t, U), ee = r === on, te = qt(t);
313
+ return /* @__PURE__ */ g("td", {
310
314
  role: "gridcell",
311
315
  "aria-selected": a,
312
316
  className: "p-0",
313
- children: /* @__PURE__ */ h("button", {
317
+ children: /* @__PURE__ */ g("button", {
314
318
  type: "button",
315
319
  tabIndex: ee ? 0 : -1,
316
- "aria-label": Ee(t, b),
320
+ "aria-label": Ne(t, b),
317
321
  "aria-pressed": a || void 0,
318
322
  "aria-current": o ? "date" : void 0,
319
- ...ae(te),
323
+ ...s(te),
320
324
  "data-date": r,
321
325
  "data-selected": a ? "" : void 0,
322
326
  "data-today": o ? "" : void 0,
323
- "data-outside": f(t, B) ? void 0 : "",
324
- onFocus: () => Xt(t),
325
- onClick: () => Dn(t),
326
- className: e(i.day, Ue, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100", a && me.selectedLeaf),
327
- children: De(t, b)
327
+ "data-outside": p(t, W) ? void 0 : "",
328
+ onFocus: () => ln(t),
329
+ onClick: () => Rn(t),
330
+ className: e(i.day, Ye, "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", "disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:focus-visible:opacity-100", a && pe.selectedLeaf),
331
+ children: Pe(t, b)
328
332
  })
329
333
  }, n);
330
334
  }) }, n)) })]
@@ -334,8 +338,8 @@ var _ = (_) => {
334
338
  ]
335
339
  });
336
340
  };
337
- _.displayName = "DatePicker";
341
+ Ze.displayName = "DatePicker";
338
342
  //#endregion
339
- export { _ as DatePicker };
343
+ export { Ze as DatePicker };
340
344
 
341
345
  //# sourceMappingURL=DatePicker.mjs.map