@mortenbrudvik/waveui 0.8.0 → 0.10.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 (206) hide show
  1. package/README.md +634 -167
  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/Calendar.cjs +2 -0
  11. package/dist/components/input/Calendar.cjs.map +1 -0
  12. package/dist/components/input/Calendar.mjs +352 -0
  13. package/dist/components/input/Calendar.mjs.map +1 -0
  14. package/dist/components/input/Calendar.views.cjs +2 -0
  15. package/dist/components/input/Calendar.views.cjs.map +1 -0
  16. package/dist/components/input/Calendar.views.mjs +194 -0
  17. package/dist/components/input/Calendar.views.mjs.map +1 -0
  18. package/dist/components/input/Checkbox.cjs +1 -1
  19. package/dist/components/input/Checkbox.cjs.map +1 -1
  20. package/dist/components/input/Checkbox.mjs +91 -75
  21. package/dist/components/input/Checkbox.mjs.map +1 -1
  22. package/dist/components/input/ColorArea.cjs +1 -1
  23. package/dist/components/input/ColorArea.cjs.map +1 -1
  24. package/dist/components/input/ColorArea.mjs +18 -18
  25. package/dist/components/input/ColorArea.mjs.map +1 -1
  26. package/dist/components/input/ColorPicker.parts.cjs +1 -1
  27. package/dist/components/input/ColorPicker.parts.cjs.map +1 -1
  28. package/dist/components/input/ColorPicker.parts.mjs +1 -1
  29. package/dist/components/input/ColorPicker.parts.mjs.map +1 -1
  30. package/dist/components/input/Combobox.cjs +1 -1
  31. package/dist/components/input/Combobox.cjs.map +1 -1
  32. package/dist/components/input/Combobox.expand.cjs +1 -1
  33. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  34. package/dist/components/input/Combobox.expand.mjs +20 -20
  35. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  36. package/dist/components/input/Combobox.mjs +219 -138
  37. package/dist/components/input/Combobox.mjs.map +1 -1
  38. package/dist/components/input/Combobox.text.cjs +2 -0
  39. package/dist/components/input/Combobox.text.cjs.map +1 -0
  40. package/dist/components/input/Combobox.text.mjs +24 -0
  41. package/dist/components/input/Combobox.text.mjs.map +1 -0
  42. package/dist/components/input/DatePicker.cjs +1 -1
  43. package/dist/components/input/DatePicker.cjs.map +1 -1
  44. package/dist/components/input/DatePicker.mjs +205 -286
  45. package/dist/components/input/DatePicker.mjs.map +1 -1
  46. package/dist/components/input/Dropdown.cjs +1 -1
  47. package/dist/components/input/Dropdown.cjs.map +1 -1
  48. package/dist/components/input/Dropdown.mjs +137 -105
  49. package/dist/components/input/Dropdown.mjs.map +1 -1
  50. package/dist/components/input/Field.cjs +1 -1
  51. package/dist/components/input/Field.cjs.map +1 -1
  52. package/dist/components/input/Field.mjs +99 -66
  53. package/dist/components/input/Field.mjs.map +1 -1
  54. package/dist/components/input/Input.cjs +1 -1
  55. package/dist/components/input/Input.cjs.map +1 -1
  56. package/dist/components/input/Input.mjs +79 -55
  57. package/dist/components/input/Input.mjs.map +1 -1
  58. package/dist/components/input/Label.cjs +1 -1
  59. package/dist/components/input/Label.cjs.map +1 -1
  60. package/dist/components/input/Label.mjs +19 -13
  61. package/dist/components/input/Label.mjs.map +1 -1
  62. package/dist/components/input/Listbox.cjs +2 -0
  63. package/dist/components/input/Listbox.cjs.map +1 -0
  64. package/dist/components/input/Listbox.mjs +134 -0
  65. package/dist/components/input/Listbox.mjs.map +1 -0
  66. package/dist/components/input/Option.cjs +1 -1
  67. package/dist/components/input/Option.cjs.map +1 -1
  68. package/dist/components/input/Option.mjs +158 -97
  69. package/dist/components/input/Option.mjs.map +1 -1
  70. package/dist/components/input/Rating.cjs +1 -1
  71. package/dist/components/input/Rating.cjs.map +1 -1
  72. package/dist/components/input/Rating.item.cjs +2 -0
  73. package/dist/components/input/Rating.item.cjs.map +1 -0
  74. package/dist/components/input/Rating.item.mjs +255 -0
  75. package/dist/components/input/Rating.item.mjs.map +1 -0
  76. package/dist/components/input/Rating.mjs +150 -151
  77. package/dist/components/input/Rating.mjs.map +1 -1
  78. package/dist/components/input/SearchBox.cjs +1 -1
  79. package/dist/components/input/SearchBox.cjs.map +1 -1
  80. package/dist/components/input/SearchBox.mjs +146 -115
  81. package/dist/components/input/SearchBox.mjs.map +1 -1
  82. package/dist/components/input/Select.cjs +1 -1
  83. package/dist/components/input/Select.cjs.map +1 -1
  84. package/dist/components/input/Select.mjs +34 -25
  85. package/dist/components/input/Select.mjs.map +1 -1
  86. package/dist/components/input/Slider.cjs +1 -1
  87. package/dist/components/input/Slider.cjs.map +1 -1
  88. package/dist/components/input/Slider.mjs +77 -54
  89. package/dist/components/input/Slider.mjs.map +1 -1
  90. package/dist/components/input/SpinButton.cjs +1 -1
  91. package/dist/components/input/SpinButton.cjs.map +1 -1
  92. package/dist/components/input/SpinButton.mjs +198 -96
  93. package/dist/components/input/SpinButton.mjs.map +1 -1
  94. package/dist/components/input/SwatchPicker.cjs +1 -1
  95. package/dist/components/input/SwatchPicker.cjs.map +1 -1
  96. package/dist/components/input/SwatchPicker.context.cjs +2 -0
  97. package/dist/components/input/SwatchPicker.context.cjs.map +1 -0
  98. package/dist/components/input/SwatchPicker.context.mjs +35 -0
  99. package/dist/components/input/SwatchPicker.context.mjs.map +1 -0
  100. package/dist/components/input/SwatchPicker.mjs +131 -103
  101. package/dist/components/input/SwatchPicker.mjs.map +1 -1
  102. package/dist/components/input/SwatchPicker.swatches.cjs +2 -0
  103. package/dist/components/input/SwatchPicker.swatches.cjs.map +1 -0
  104. package/dist/components/input/SwatchPicker.swatches.mjs +207 -0
  105. package/dist/components/input/SwatchPicker.swatches.mjs.map +1 -0
  106. package/dist/components/input/Switch.cjs +1 -1
  107. package/dist/components/input/Switch.cjs.map +1 -1
  108. package/dist/components/input/Switch.mjs +71 -55
  109. package/dist/components/input/Switch.mjs.map +1 -1
  110. package/dist/components/input/TagPicker.cjs +1 -1
  111. package/dist/components/input/TagPicker.cjs.map +1 -1
  112. package/dist/components/input/TagPicker.mjs +154 -123
  113. package/dist/components/input/TagPicker.mjs.map +1 -1
  114. package/dist/components/input/Textarea.cjs +1 -1
  115. package/dist/components/input/Textarea.cjs.map +1 -1
  116. package/dist/components/input/Textarea.mjs +28 -21
  117. package/dist/components/input/Textarea.mjs.map +1 -1
  118. package/dist/components/input/TimePicker.cjs +1 -1
  119. package/dist/components/input/TimePicker.cjs.map +1 -1
  120. package/dist/components/input/TimePicker.mjs +204 -199
  121. package/dist/components/input/TimePicker.mjs.map +1 -1
  122. package/dist/components/input/dateUtils.cjs +1 -1
  123. package/dist/components/input/dateUtils.cjs.map +1 -1
  124. package/dist/components/input/dateUtils.mjs +114 -96
  125. package/dist/components/input/dateUtils.mjs.map +1 -1
  126. package/dist/components/input/fieldLabel.cjs +2 -0
  127. package/dist/components/input/fieldLabel.cjs.map +1 -0
  128. package/dist/components/input/fieldLabel.mjs +17 -0
  129. package/dist/components/input/fieldLabel.mjs.map +1 -0
  130. package/dist/components/input/inputLook.cjs +2 -0
  131. package/dist/components/input/inputLook.cjs.map +1 -0
  132. package/dist/components/input/inputLook.mjs +28 -0
  133. package/dist/components/input/inputLook.mjs.map +1 -0
  134. package/dist/components/input/pickerLabels.cjs +2 -0
  135. package/dist/components/input/pickerLabels.cjs.map +1 -0
  136. package/dist/components/input/pickerLabels.mjs +16 -0
  137. package/dist/components/input/pickerLabels.mjs.map +1 -0
  138. package/dist/components/input/pickerStyles.cjs +1 -1
  139. package/dist/components/input/pickerStyles.cjs.map +1 -1
  140. package/dist/components/input/pickerStyles.mjs +42 -4
  141. package/dist/components/input/pickerStyles.mjs.map +1 -1
  142. package/dist/components/input/pickerValues.cjs +2 -0
  143. package/dist/components/input/pickerValues.cjs.map +1 -0
  144. package/dist/components/input/pickerValues.mjs +24 -0
  145. package/dist/components/input/pickerValues.mjs.map +1 -0
  146. package/dist/components/navigation/Menu.popover.cjs +1 -1
  147. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  148. package/dist/components/navigation/Menu.popover.mjs +10 -10
  149. package/dist/components/navigation/Menu.root.cjs +1 -1
  150. package/dist/components/navigation/Menu.root.cjs.map +1 -1
  151. package/dist/components/navigation/Menu.root.mjs +10 -10
  152. package/dist/components/overlays/Popover.cjs +1 -1
  153. package/dist/components/overlays/Popover.cjs.map +1 -1
  154. package/dist/components/overlays/Popover.mjs +203 -208
  155. package/dist/components/overlays/Popover.mjs.map +1 -1
  156. package/dist/components/overlays/Popover.shared.cjs +1 -1
  157. package/dist/components/overlays/Popover.shared.cjs.map +1 -1
  158. package/dist/components/overlays/Popover.shared.mjs +82 -77
  159. package/dist/components/overlays/Popover.shared.mjs.map +1 -1
  160. package/dist/components/provider/WaveProvider.cjs +1 -1
  161. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  162. package/dist/components/provider/WaveProvider.mjs +25 -19
  163. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  164. package/dist/components/table/useGridNavigation.cjs +1 -1
  165. package/dist/components/table/useGridNavigation.cjs.map +1 -1
  166. package/dist/components/table/useGridNavigation.mjs +67 -70
  167. package/dist/components/table/useGridNavigation.mjs.map +1 -1
  168. package/dist/hooks/useActiveDescendant.cjs +2 -0
  169. package/dist/hooks/useActiveDescendant.cjs.map +1 -0
  170. package/dist/hooks/useActiveDescendant.mjs +56 -0
  171. package/dist/hooks/useActiveDescendant.mjs.map +1 -0
  172. package/dist/hooks/useFieldControl.cjs.map +1 -1
  173. package/dist/hooks/useFieldControl.mjs.map +1 -1
  174. package/dist/hooks/useListbox.cjs +1 -1
  175. package/dist/hooks/useListbox.cjs.map +1 -1
  176. package/dist/hooks/useListbox.mjs +250 -210
  177. package/dist/hooks/useListbox.mjs.map +1 -1
  178. package/dist/hooks/useRovingGrid.cjs +2 -0
  179. package/dist/hooks/useRovingGrid.cjs.map +1 -0
  180. package/dist/hooks/useRovingGrid.mjs +69 -0
  181. package/dist/hooks/useRovingGrid.mjs.map +1 -0
  182. package/dist/index.cjs +1 -1
  183. package/dist/index.d.cts +2901 -203
  184. package/dist/index.d.ts +2901 -203
  185. package/dist/index.mjs +107 -99
  186. package/dist/lib/classNames.cjs +1 -1
  187. package/dist/lib/classNames.cjs.map +1 -1
  188. package/dist/lib/classNames.mjs +111 -67
  189. package/dist/lib/classNames.mjs.map +1 -1
  190. package/dist/lib/date.cjs +2 -0
  191. package/dist/lib/date.cjs.map +1 -0
  192. package/dist/lib/date.mjs +44 -0
  193. package/dist/lib/date.mjs.map +1 -0
  194. package/dist/lib/focus.cjs +1 -1
  195. package/dist/lib/focus.cjs.map +1 -1
  196. package/dist/lib/focus.mjs +5 -2
  197. package/dist/lib/focus.mjs.map +1 -1
  198. package/dist/lib/layers.cjs.map +1 -1
  199. package/dist/lib/layers.mjs.map +1 -1
  200. package/dist/lib/styles.cjs +1 -1
  201. package/dist/lib/styles.cjs.map +1 -1
  202. package/dist/lib/styles.mjs +21 -4
  203. package/dist/lib/styles.mjs.map +1 -1
  204. package/dist/styles.css +1 -1
  205. package/package.json +1 -1
  206. package/src/styles/tokens.css +13 -0
@@ -3,339 +3,258 @@ import { cn as e } from "../../lib/cn.mjs";
3
3
  import { warnDeprecated as t, warnOnce as n } from "../../lib/dev.mjs";
4
4
  import { composeEventHandlers as r } from "../../lib/composeEventHandlers.mjs";
5
5
  import { datePickerClassNames as i } from "../../lib/classNames.mjs";
6
- import { useControllable as a } from "../../hooks/useControllable.mjs";
7
- import { useId as o } from "../../hooks/useId.mjs";
8
- import { getArrowIntent as ee, getDirection as te } from "../../lib/direction.mjs";
9
- import { FOCUSABLE_SELECTOR as ne } from "../../lib/focus.mjs";
10
- import { useMergedRefs as re } from "../../hooks/useMergedRefs.mjs";
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";
6
+ import { isSameDay as ee, startOfDay as a } from "../../lib/date.mjs";
7
+ import { useControllable as o } from "../../hooks/useControllable.mjs";
8
+ import { useId as s } from "../../hooks/useId.mjs";
9
+ import { FOCUSABLE_SELECTOR as te } from "../../lib/focus.mjs";
10
+ import { useMergedRefs as ne } from "../../hooks/useMergedRefs.mjs";
11
+ import { useIsClient as re } from "../../hooks/useIsClient.mjs";
12
+ import { joinIds as ie } from "../../lib/aria.mjs";
13
+ import { useFieldContext as ae, useFieldControl as oe } from "../../hooks/useFieldControl.mjs";
14
+ import { useDismiss as se } from "../../hooks/useDismiss.mjs";
15
+ import { Portal as ce } from "../portal/Portal.mjs";
16
+ import { disabledStyles as le, focusRing as ue, inputAppearanceClasses as de, inputFocus as fe, inputHeightClasses as pe, inputPaddingClasses as me, inputTextClasses as he } from "../../lib/styles.mjs";
17
+ import { CalendarIcon as ge, DismissIcon as _e } from "../../lib/icons.mjs";
18
+ import { useInputLook as ve } from "./inputLook.mjs";
19
+ import { isInvalidLook as ye } from "./Input.mjs";
20
+ import { useFormReset as be } from "../../hooks/useFormReset.mjs";
21
+ import { HiddenInput as xe } from "../internal/HiddenInput.mjs";
22
+ import { pickerButtonOffset as c, pickerEndPadding as Se, pickerGlyphSize as l, pickerIconButtonClasses as u } from "./pickerStyles.mjs";
23
+ import { usePopupPosition as Ce } from "../../hooks/usePopupPosition.mjs";
24
+ import { formatDate as we, formatISODate as d, getLocaleDateFormat as Te, isDateInRange as Ee, isValidLocaleTag as De, parseDate as Oe } from "./dateUtils.mjs";
25
+ import { useFocusTrap as ke } from "../../hooks/useFocusTrap.mjs";
26
+ import { useRestoreFocus as Ae } from "../../hooks/useRestoreFocus.mjs";
27
+ import { CalendarView as je } from "./Calendar.mjs";
28
+ import * as f from "react";
29
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
30
+ import { flushSync as Me } from "react-dom";
28
31
  //#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
- let t = [];
32
- for (let n = 0; n < e.length; n += 7) t.push(e.slice(n, n + 7));
33
- return t;
34
- }
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.`);
43
- }, [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);
32
+ var Ne = (e) => e ? `Enter a date in the format ${e}.` : "Enter a valid date.", Pe = (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}.`, Fe = {
33
+ header: i.header,
34
+ previousMonthButton: i.previousMonthButton,
35
+ heading: i.heading,
36
+ headingButton: i.headingButton,
37
+ nextMonthButton: i.nextMonthButton,
38
+ grid: i.grid,
39
+ weekday: i.weekday,
40
+ day: i.day,
41
+ month: i.month,
42
+ year: i.year,
43
+ weekNumberHeader: i.weekNumberHeader,
44
+ weekNumber: i.weekNumber,
45
+ markedDot: i.markedDot,
46
+ footer: i.footer,
47
+ todayButton: i.todayButton,
48
+ closeButton: i.closeButton
49
+ }, h = (h) => {
50
+ let { value: Ie, defaultValue: Le, onValueChange: Re, onChange: g, formatDate: _, parseDate: v, locale: y, minDate: b, maxDate: x, disabledDates: S, placeholder: ze = "Select a date", disabled: C = !1, size: Be, appearance: Ve, readOnly: w, clearable: He = !1, firstDayOfWeek: Ue = 0, today: We, initialVisibleDate: Ge, showMonthPicker: Ke, showWeekNumbers: qe, firstWeekOfYear: Je, showGoToToday: Ye, showCloseButton: Xe = !1, markedDates: Ze, renderDay: Qe, dayLabel: $e, open: T, defaultOpen: et, onOpenChange: tt, onInvalidInput: nt, labels: E, name: rt, form: it, required: at, autoComplete: ot = "off", autoCapitalize: st, autoCorrect: ct, enterKeyHint: lt, inputMode: ut, spellCheck: dt, autoFocus: ft, tabIndex: pt, id: mt, "aria-label": ht, "aria-labelledby": gt, "aria-describedby": _t, "aria-invalid": vt, "aria-required": yt, "aria-errormessage": bt, "aria-details": xt, onFocus: St, onBlur: Ct, onKeyDown: wt, onKeyUp: Tt, controlRef: Et, className: Dt, ref: Ot, ...kt } = h;
51
+ g !== void 0 && t("DatePicker", "onChange", "onValueChange");
52
+ let { size: D, appearance: O } = ve(Be, Ve), k = _ !== void 0, A = v !== void 0;
53
+ f.useEffect(() => {
54
+ k && !A && 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`.");
55
+ }, [k, A]), f.useEffect(() => {
56
+ y !== void 0 && !De(y) && n(`DatePicker:invalid-locale:${y}`, `DatePicker: \`locale\` "${y}" 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.`);
57
+ }, [y]);
58
+ let [j, At] = o(Ie, Le ?? null, (e) => {
59
+ Re?.(e), g?.(e);
60
+ }), M = !C && !w, [N, P] = o(T, (et ?? !1) && M, tt), jt = re(), F = N && M && jt, Mt = T !== void 0;
61
+ f.useEffect(() => {
62
+ !M && N && !Mt && P(!1);
49
63
  }, [
50
- k,
51
- A,
64
+ M,
65
+ N,
52
66
  Mt,
53
- j
67
+ P
54
68
  ]);
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) {
69
+ let I = (e) => _ ? _(e) : we(e, y), Nt = (e) => v ? v(e) : Oe(e, y), [L, R] = f.useState(null), [z, B] = f.useState(null), [Pt, Ft] = f.useState(M);
70
+ Pt !== M && (Ft(M), M || (R(null), B(null)));
71
+ let V = j ? d(j) : "", [It, Lt] = f.useState(V);
72
+ It !== V && (Lt(V), z !== null && (R(null), B(null)));
73
+ let H = (e) => {
74
+ let t = e ? a(e) : null;
75
+ (t ? ee(t, j) : j === null) || At(t), R(null), B(null);
76
+ }, U = (e) => {
77
+ if (!e.trim()) return H(null), !0;
78
+ let t = Nt(e), n = null;
79
+ if (!t || Number.isNaN(t.getTime()) ? n = "unparseable" : Ee(t, b, x) ? S?.(a(t)) && (n = "disabled") : n = "out-of-range", n || !t) {
66
80
  let t = n ?? "unparseable";
67
- return I(t), tt?.(e, t), !1;
81
+ return B(t), nt?.(e, t), !1;
68
82
  }
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,
83
+ return H(t), !0;
84
+ }, [W, G] = f.useState(!1);
85
+ W && !F && G(!1);
86
+ let K = f.useRef(null), q = f.useRef(null), J = f.useRef(null), Y = f.useRef(null), [Rt, zt] = f.useState(null), Bt = ne(Et, K), Vt = s("datepicker-dialog"), Ht = s("datepicker-heading"), X = s("datepicker-error"), Z = (e) => {
87
+ Y.current = e, P(!1);
88
+ }, { layerId: Ut } = se({
89
+ open: F,
84
90
  onDismiss: (e, t) => {
85
- let n = e === "outside-press" && t.target instanceof Element ? t.target.closest(ne) : null;
86
- ln(n ?? (U ? Y.current : null));
91
+ let n = e === "outside-press" && t.target instanceof Element ? t.target.closest(te) : null;
92
+ Z(n ?? (W ? K.current : null));
87
93
  },
88
- refs: [en, X],
89
- anchorRef: X,
94
+ refs: [J, q],
95
+ anchorRef: q,
90
96
  kind: "modal"
91
- }), { setReference: dn, setFloating: fn, floatingProps: pn } = we({
92
- open: M,
97
+ }), { setReference: Wt, setFloating: Gt, floatingProps: Kt } = Ce({
98
+ open: F,
93
99
  side: "bottom",
94
100
  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,
101
+ }), qt = ne(J, zt, Gt);
102
+ ke(Rt, {
103
+ enabled: F,
104
+ layerId: Ut,
105
+ initialFocus: () => J.current?.querySelector("[data-wave-calendar-grid] button[tabindex=\"0\"]") ?? null
106
+ }), Ae({
107
+ enabled: F,
108
+ container: Rt,
109
+ triggerRef: q,
110
+ finalFocusRef: Y,
105
111
  onlyIfFocusInside: !0
106
- }), m.useLayoutEffect(() => {
107
- M && (Q.current = null);
108
- }, [M]), m.useLayoutEffect(() => {
109
- let e = Z.current;
110
- if (!e) return;
111
- let t = e.ownerDocument.activeElement;
112
- if (!t || !e.contains(t)) return;
113
- let n = e.querySelector(`button[data-date="${J}"]`);
114
- 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) => {
112
+ }), f.useLayoutEffect(() => {
113
+ F && (Y.current = null);
114
+ }, [F]);
115
+ let Jt = ae(), Yt = (at ?? Jt?.required ?? !1) && !w, Xt = z !== null && !Jt?.hasErrorMessage, Zt = oe({
116
+ id: mt,
117
+ "aria-label": ht,
118
+ "aria-labelledby": gt,
119
+ "aria-describedby": ie(_t, Xt ? X : void 0),
120
+ "aria-invalid": z !== null || vt,
121
+ "aria-required": yt ?? at
122
+ }), Qt = ye(!1, Zt["aria-invalid"]);
123
+ be(K, () => H(Le ?? null), it);
124
+ let Q = He && !w && j !== null, $t = (e) => {
125
+ M && (R(e.target.value), B(null));
126
+ }, en = r(wt, (e) => {
127
+ M && !e.nativeEvent.isComposing && (e.key === "Enter" && L !== null ? (e.preventDefault(), U(L)) : e.key === "Tab" && !e.shiftKey && Q && L !== null && !L.trim() ? Me(() => U(L)) : e.key === "ArrowDown" && e.altKey && !F && (e.preventDefault(), L !== null && z === null && U(L), G(!0), P(!0)));
128
+ }), tn = r(Ct, () => {
129
+ M && L !== null && z === null && U(L);
130
+ }), nn = () => {
131
+ M && (Y.current = null, G(!1), P(!F));
132
+ }, rn = () => {
133
+ M && (H(null), K.current?.focus());
134
+ }, an = (e) => {
136
135
  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) => {
142
- if (e.altKey || e.ctrlKey || e.metaKey) return;
143
- let t = (q.getDay() - T + 7) % 7, n;
144
- switch (e.key) {
145
- case "ArrowLeft":
146
- case "ArrowRight": {
147
- let t = ee(e.key, {
148
- orientation: "horizontal",
149
- dir: te(e.currentTarget)
150
- });
151
- n = s(q, t === "next" ? 1 : -1);
152
- break;
153
- }
154
- case "ArrowDown":
155
- n = s(q, 7);
156
- break;
157
- case "ArrowUp":
158
- n = s(q, -7);
159
- break;
160
- case "PageDown":
161
- n = c(q, e.shiftKey ? 12 : 1);
162
- break;
163
- case "PageUp":
164
- n = c(q, e.shiftKey ? -12 : -1);
165
- break;
166
- case "Home":
167
- n = s(q, -t);
168
- break;
169
- case "End":
170
- n = s(q, 6 - t);
171
- break;
172
- default: return;
173
- }
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),
136
+ }, on = (e) => {
137
+ M && (H(e), Z(K.current));
138
+ }, sn = () => Z(W ? K.current : null), cn = (e) => {
139
+ e.key !== "Escape" || e.defaultPrevented || e.nativeEvent.isComposing || (e.preventDefault(), sn());
140
+ }, ln = L ?? (j ? I(j) : ""), $ = "";
141
+ return z === "unparseable" ? $ = (E?.invalidDate ?? Ne)(A ? void 0 : Te(y).pattern) : z === "out-of-range" && (b || x) ? $ = (E?.outOfRange ?? Pe)(b ? I(a(b)) : void 0, x ? I(a(x)) : void 0) : z === "disabled" && ($ = E?.unavailableDate ?? "This date is not available."), /* @__PURE__ */ m("div", {
142
+ "data-size": D,
143
+ "data-appearance": O,
144
+ ...kt,
145
+ ref: Ot,
146
+ className: e(i.root, "relative inline-flex flex-col", Dt),
180
147
  children: [
181
- /* @__PURE__ */ g("div", {
182
- ref: dn,
148
+ /* @__PURE__ */ m("div", {
149
+ ref: Wt,
183
150
  className: "relative flex items-center",
184
151
  children: [
185
- /* @__PURE__ */ h("input", {
186
- ref: rn,
152
+ /* @__PURE__ */ p("input", {
153
+ ref: Bt,
187
154
  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,
155
+ ...Zt,
156
+ "aria-errormessage": bt,
157
+ "aria-details": xt,
158
+ value: ln,
159
+ onChange: $t,
160
+ onFocus: St,
161
+ onBlur: tn,
162
+ onKeyDown: en,
163
+ onKeyUp: Tt,
164
+ placeholder: ze,
198
165
  disabled: C,
199
166
  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")
167
+ autoComplete: ot,
168
+ autoCapitalize: st,
169
+ autoCorrect: ct,
170
+ enterKeyHint: lt,
171
+ inputMode: ut,
172
+ spellCheck: dt,
173
+ autoFocus: ft,
174
+ tabIndex: pt,
175
+ className: e(i.input, pe[D], "w-full", me[D], he[D], de[O], "text-foreground placeholder:text-muted-foreground", fe, le, Qt && "border-destructive", Se(Q ? 2 : 1, D))
209
176
  }),
210
- bn && /* @__PURE__ */ h("button", {
177
+ Q && /* @__PURE__ */ p("button", {
211
178
  type: "button",
212
179
  "aria-label": E?.clear ?? "Clear date",
213
180
  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, {})
181
+ onMouseDown: an,
182
+ onClick: rn,
183
+ className: e(i.clearButton, u(D, O), c(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"),
184
+ children: /* @__PURE__ */ p(_e, { size: l(D, "icon") })
218
185
  }),
219
- /* @__PURE__ */ h("button", {
220
- ref: X,
186
+ /* @__PURE__ */ p("button", {
187
+ ref: q,
221
188
  type: "button",
222
189
  "aria-label": E?.openCalendar ?? "Open calendar",
223
190
  "aria-haspopup": "dialog",
224
- "aria-expanded": M,
225
- "aria-controls": M ? an : void 0,
191
+ "aria-expanded": F,
192
+ "aria-controls": F ? Vt : void 0,
226
193
  disabled: C || w,
227
- onClick: wn,
228
- className: e(i.openCalendarButton, Ve, "end-1", pe, fe),
229
- children: /* @__PURE__ */ h(_e, {})
194
+ onClick: nn,
195
+ className: e(i.openCalendarButton, u(D, O), c(D, 1), ue, le),
196
+ children: /* @__PURE__ */ p(ge, { size: l(D, "icon") })
230
197
  })
231
198
  ]
232
199
  }),
233
- _n && /* @__PURE__ */ h("p", {
234
- id: cn,
200
+ Xt && /* @__PURE__ */ p("p", {
201
+ id: X,
235
202
  role: "alert",
236
203
  className: e(i.errorMessage, "mt-1 text-caption-1 text-error"),
237
204
  children: $
238
205
  }),
239
- /* @__PURE__ */ h(Ce, {
240
- name: nt,
241
- form: rt,
206
+ /* @__PURE__ */ p(xe, {
207
+ name: rt,
208
+ form: it,
242
209
  disabled: C,
243
- value: O ? u(O) : "",
210
+ value: j ? d(j) : "",
244
211
  type: "text",
245
- required: gn,
246
- onInvalid: () => Y.current?.focus()
212
+ required: Yt,
213
+ onInvalid: () => K.current?.focus()
247
214
  }),
248
- M && /* @__PURE__ */ h(de, {
249
- layerId: un,
250
- children: /* @__PURE__ */ g("div", {
251
- ref: mn,
252
- id: an,
215
+ F && /* @__PURE__ */ p(ce, {
216
+ layerId: Ut,
217
+ children: /* @__PURE__ */ p("div", {
218
+ ref: qt,
219
+ id: Vt,
253
220
  role: "dialog",
254
221
  "aria-modal": "true",
255
- "aria-labelledby": on,
256
- ...pn,
222
+ "aria-labelledby": Ht,
223
+ ...Kt,
257
224
  "data-state": "open",
258
- onKeyDown: On,
225
+ onKeyDown: cn,
259
226
  className: e(i.surface, "rounded-md border border-border bg-background p-3 text-foreground shadow-16"),
260
- children: [/* @__PURE__ */ g("div", {
261
- className: e(i.header, "mb-2 flex items-center justify-between gap-2"),
262
- children: [
263
- /* @__PURE__ */ h("button", {
264
- type: "button",
265
- "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" })
271
- }),
272
- /* @__PURE__ */ h("h2", {
273
- id: on,
274
- "aria-live": "polite",
275
- className: e(i.heading, "text-body-1 font-semibold"),
276
- children: Oe(B, b)
277
- }),
278
- /* @__PURE__ */ h("button", {
279
- type: "button",
280
- "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" })
286
- })
287
- ]
288
- }), /* @__PURE__ */ g("table", {
289
- ref: Z,
290
- id: sn,
291
- role: "grid",
292
- "aria-labelledby": on,
293
- onKeyDown: kn,
294
- className: e(i.grid, "border-collapse"),
295
- children: [/* @__PURE__ */ h("thead", { children: /* @__PURE__ */ h("tr", { children: $t.map((t) => /* @__PURE__ */ g("th", {
296
- scope: "col",
297
- abbr: t.long,
298
- "aria-label": t.long,
299
- className: e(i.weekday, "h-8 w-8 text-center text-caption-1 font-normal text-muted-foreground"),
300
- children: [/* @__PURE__ */ h("span", {
301
- "aria-hidden": "true",
302
- children: t.short
303
- }), /* @__PURE__ */ h("span", {
304
- className: "sr-only",
305
- children: t.long
306
- })]
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", {
310
- role: "gridcell",
311
- "aria-selected": a,
312
- className: "p-0",
313
- children: /* @__PURE__ */ h("button", {
314
- type: "button",
315
- tabIndex: ee ? 0 : -1,
316
- "aria-label": Ee(t, b),
317
- "aria-pressed": a || void 0,
318
- "aria-current": o ? "date" : void 0,
319
- ...ae(te),
320
- "data-date": r,
321
- "data-selected": a ? "" : void 0,
322
- "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)
328
- })
329
- }, n);
330
- }) }, n)) })]
331
- })]
227
+ children: /* @__PURE__ */ p(je, {
228
+ value: j,
229
+ onPick: on,
230
+ minDate: b,
231
+ maxDate: x,
232
+ disabledDates: S,
233
+ firstDayOfWeek: Ue,
234
+ locale: y,
235
+ today: We,
236
+ initialVisibleDate: Ge,
237
+ showMonthPicker: Ke,
238
+ showWeekNumbers: qe,
239
+ firstWeekOfYear: Je,
240
+ showGoToToday: Ye,
241
+ markedDates: Ze,
242
+ renderDay: Qe,
243
+ dayLabel: $e,
244
+ onClose: Xe ? sn : void 0,
245
+ closeLabel: E?.close,
246
+ labels: E,
247
+ headingAs: "h2",
248
+ headingId: Ht,
249
+ partClassNames: Fe
250
+ })
332
251
  })
333
252
  })
334
253
  ]
335
254
  });
336
255
  };
337
- _.displayName = "DatePicker";
256
+ h.displayName = "DatePicker";
338
257
  //#endregion
339
- export { _ as DatePicker };
258
+ export { h as DatePicker };
340
259
 
341
260
  //# sourceMappingURL=DatePicker.mjs.map