sherick-ui 2.3.0 → 2.5.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 (87) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/components/Checkbox.cjs +3 -1
  3. package/dist/cjs/components/Checkbox.cjs.map +1 -1
  4. package/dist/cjs/components/Combobox.cjs +1 -1
  5. package/dist/cjs/components/Combobox.cjs.map +1 -1
  6. package/dist/cjs/components/Command.cjs +1 -1
  7. package/dist/cjs/components/Command.cjs.map +1 -1
  8. package/dist/cjs/components/DatePicker.cjs +1 -1
  9. package/dist/cjs/components/DatePicker.cjs.map +1 -1
  10. package/dist/cjs/components/DateRangePicker.cjs +1 -1
  11. package/dist/cjs/components/DateRangePicker.cjs.map +1 -1
  12. package/dist/cjs/components/DateTimePicker.cjs +176 -0
  13. package/dist/cjs/components/DateTimePicker.cjs.map +1 -0
  14. package/dist/cjs/components/FileUpload.cjs +1 -1
  15. package/dist/cjs/components/FileUpload.cjs.map +1 -1
  16. package/dist/cjs/components/Input.cjs +1 -1
  17. package/dist/cjs/components/Input.cjs.map +1 -1
  18. package/dist/cjs/components/NumberField.cjs +2 -2
  19. package/dist/cjs/components/NumberField.cjs.map +1 -1
  20. package/dist/cjs/components/RadioGroup.cjs +1 -1
  21. package/dist/cjs/components/RadioGroup.cjs.map +1 -1
  22. package/dist/cjs/components/Search.cjs +4 -1
  23. package/dist/cjs/components/Search.cjs.map +1 -1
  24. package/dist/cjs/components/Select.cjs +1 -1
  25. package/dist/cjs/components/Select.cjs.map +1 -1
  26. package/dist/cjs/components/Textarea.cjs +1 -1
  27. package/dist/cjs/components/Textarea.cjs.map +1 -1
  28. package/dist/cjs/components/date-family.cjs +64 -2
  29. package/dist/cjs/components/date-family.cjs.map +1 -1
  30. package/dist/cjs/components/date-field.cjs +16 -6
  31. package/dist/cjs/components/date-field.cjs.map +1 -1
  32. package/dist/cjs/components/time-panel.cjs +125 -0
  33. package/dist/cjs/components/time-panel.cjs.map +1 -0
  34. package/dist/cjs/components/ui.common.cjs +97 -43
  35. package/dist/cjs/components/ui.common.cjs.map +1 -1
  36. package/dist/cjs/components/ui.motion.cjs +6 -1
  37. package/dist/cjs/components/ui.motion.cjs.map +1 -1
  38. package/dist/cjs/dev.cjs +2 -0
  39. package/dist/cjs/dev.cjs.map +1 -1
  40. package/dist/cjs/index.cjs +2 -0
  41. package/dist/cjs/index.cjs.map +1 -1
  42. package/dist/esm/components/Checkbox.js +3 -1
  43. package/dist/esm/components/Checkbox.js.map +1 -1
  44. package/dist/esm/components/Combobox.js +2 -2
  45. package/dist/esm/components/Combobox.js.map +1 -1
  46. package/dist/esm/components/Command.js +2 -2
  47. package/dist/esm/components/Command.js.map +1 -1
  48. package/dist/esm/components/DatePicker.js +2 -2
  49. package/dist/esm/components/DatePicker.js.map +1 -1
  50. package/dist/esm/components/DateRangePicker.js +2 -2
  51. package/dist/esm/components/DateRangePicker.js.map +1 -1
  52. package/dist/esm/components/DateTimePicker.js +172 -0
  53. package/dist/esm/components/DateTimePicker.js.map +1 -0
  54. package/dist/esm/components/FileUpload.js +2 -2
  55. package/dist/esm/components/FileUpload.js.map +1 -1
  56. package/dist/esm/components/Input.js +2 -2
  57. package/dist/esm/components/Input.js.map +1 -1
  58. package/dist/esm/components/NumberField.js +3 -3
  59. package/dist/esm/components/NumberField.js.map +1 -1
  60. package/dist/esm/components/RadioGroup.js +2 -2
  61. package/dist/esm/components/RadioGroup.js.map +1 -1
  62. package/dist/esm/components/Search.js +5 -2
  63. package/dist/esm/components/Search.js.map +1 -1
  64. package/dist/esm/components/Select.js +2 -2
  65. package/dist/esm/components/Select.js.map +1 -1
  66. package/dist/esm/components/Textarea.js +2 -2
  67. package/dist/esm/components/Textarea.js.map +1 -1
  68. package/dist/esm/components/date-family.js +58 -3
  69. package/dist/esm/components/date-family.js.map +1 -1
  70. package/dist/esm/components/date-field.js +17 -8
  71. package/dist/esm/components/date-field.js.map +1 -1
  72. package/dist/esm/components/time-panel.js +122 -0
  73. package/dist/esm/components/time-panel.js.map +1 -0
  74. package/dist/esm/components/ui.common.js +98 -45
  75. package/dist/esm/components/ui.common.js.map +1 -1
  76. package/dist/esm/components/ui.motion.js +6 -2
  77. package/dist/esm/components/ui.motion.js.map +1 -1
  78. package/dist/esm/dev.js +2 -2
  79. package/dist/esm/index.js +1 -0
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/styles.css +249 -49
  82. package/dist/theme.css +7 -3
  83. package/dist/types/dev.d.cts +34 -21
  84. package/dist/types/dev.d.ts +34 -21
  85. package/dist/types/index.d.cts +75 -2
  86. package/dist/types/index.d.ts +75 -2
  87. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var field = require('@base-ui/react/field');
8
+ var popover = require('@base-ui/react/popover');
9
+ var lucideReact = require('lucide-react');
10
+ var React = require('react');
11
+ var utils = require('../libs/utils.cjs');
12
+ var Button = require('./Button.cjs');
13
+ var Calendar = require('./Calendar.cjs');
14
+ var Field = require('./Field.cjs');
15
+ var ui_common = require('./ui.common.cjs');
16
+ var dateField = require('./date-field.cjs');
17
+ var dateFamily = require('./date-family.cjs');
18
+ var timePanel = require('./time-panel.cjs');
19
+
20
+ const defaultDateTimeLabels = {
21
+ ...dateFamily.defaultCalendarLabels,
22
+ time: "Time",
23
+ hour: "Hour",
24
+ minute: "Minute",
25
+ period: "AM/PM",
26
+ chooseTime: "Choose a time",
27
+ done: "Done",
28
+ unavailableDateTime: "That date and time is not available",
29
+ };
30
+ /**
31
+ * A date and a time of day: a native `datetime-local` input, with a named control beside it that
32
+ * opens the shared `Calendar` and a column for each part of the clock in a popover.
33
+ *
34
+ * The native input stays the field's control, so the browser owns its entry, its mobile UI, its
35
+ * form submission and the `required` and `min`/`max` constraints; `isDateUnavailable` is reported
36
+ * through the field's own validation, and a value the popup would refuse is never accepted — the
37
+ * input keeps what was typed and the field says why. In the popup, a half-chosen value waits for
38
+ * its other half, a choice that crosses a bound settles on the bound, and Done closes the surface.
39
+ *
40
+ * Values are civil `YYYY-MM-DDTHH:mm` readings with no time zone, exactly as the native input
41
+ * submits them.
42
+ */
43
+ const DateTimePicker = React.forwardRef(({ value, defaultValue, onValueChange, label, description, error, required = false, disabled = false, className, id, form, name, open, defaultOpen, onOpenChange, min, max, isDateUnavailable, minuteStep = 5, hourCycle, locale = "en-US", weekStartsOn = 1, today, labels: labelsProp, }, ref) => {
44
+ var _a, _b;
45
+ const labels = React.useMemo(() => ({ ...defaultDateTimeLabels, ...labelsProp }), [labelsProp]);
46
+ const timeFormat = React.useMemo(() => dateFamily.createTimeFormat(locale, hourCycle !== null && hourCycle !== void 0 ? hourCycle : dateFamily.resolveHourCycle(locale)), [locale, hourCycle]);
47
+ const step = Number.isFinite(minuteStep) ? Math.min(60, Math.max(1, Math.round(minuteStep))) : 5;
48
+ const isControlled = value !== undefined;
49
+ const [internalValue, setInternalValue] = React.useState(() => dateFamily.normalizeCalendarDateTime(defaultValue));
50
+ const currentValue = isControlled ? dateFamily.normalizeCalendarDateTime(value) : internalValue;
51
+ // Invalid native entry is an explicit draft, not a second writer of a valid controlled value.
52
+ const [draft, setDraft] = React.useState(null);
53
+ const [pending, setPending] = React.useState(null);
54
+ const minValue = dateFamily.normalizeCalendarDateTime(min);
55
+ const maxValue = dateFamily.normalizeCalendarDateTime(max);
56
+ const minParts = dateFamily.parseCalendarDateTime(minValue);
57
+ const maxParts = dateFamily.parseCalendarDateTime(maxValue);
58
+ const inputRef = React.useRef(null);
59
+ const fieldActionsRef = React.useRef(null);
60
+ React.useEffect(() => {
61
+ setDraft(null);
62
+ setPending(null);
63
+ }, [currentValue]);
64
+ dateField.useDateFormReset(inputRef, form, () => {
65
+ const restored = isControlled ? currentValue : dateFamily.normalizeCalendarDateTime(defaultValue);
66
+ setDraft(null);
67
+ setPending(null);
68
+ if (!isControlled)
69
+ setInternalValue(restored);
70
+ // Native reset has already run and emits no React change event.
71
+ if (inputRef.current)
72
+ inputRef.current.value = restored !== null && restored !== void 0 ? restored : "";
73
+ });
74
+ const commitValue = (next) => {
75
+ if (!isControlled)
76
+ setInternalValue(next);
77
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(next);
78
+ };
79
+ const isSelectable = (candidate) => {
80
+ if (minValue && candidate < minValue)
81
+ return false;
82
+ if (maxValue && candidate > maxValue)
83
+ return false;
84
+ const parts = dateFamily.parseCalendarDateTime(candidate);
85
+ return Boolean(parts) && !(isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(parts.date));
86
+ };
87
+ const displayText = (_a = draft !== null && draft !== void 0 ? draft : currentValue) !== null && _a !== void 0 ? _a : "";
88
+ const displayedValue = dateFamily.normalizeCalendarDateTime(displayText);
89
+ const typedIssue = draft !== null || Boolean(displayText && (!displayedValue || !isSelectable(displayedValue)));
90
+ const fieldInvalid = Boolean(error) || typedIssue;
91
+ const validateValue = (candidate) => {
92
+ if (draft !== null)
93
+ return labels.unavailableDateTime;
94
+ if (typeof candidate !== "string" || !candidate)
95
+ return null;
96
+ const parts = dateFamily.parseCalendarDateTime(candidate);
97
+ return !parts || (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(parts.date)) ? labels.unavailableDateTime : null;
98
+ };
99
+ // Constraints can change while the native text stays the same. Base remains the
100
+ // validation owner; refresh its native custom validity as well as the field's visuals.
101
+ React.useEffect(() => {
102
+ var _a;
103
+ (_a = fieldActionsRef.current) === null || _a === void 0 ? void 0 : _a.validate();
104
+ }, [displayText, typedIssue, minValue, maxValue, isDateUnavailable, disabled, labels.unavailableDateTime]);
105
+ const handleInputChange = (event) => {
106
+ const input = event.currentTarget;
107
+ const next = dateFamily.normalizeCalendarDateTime(input.value);
108
+ if (input.validity.badInput || (input.value && (!next || !isSelectable(next)))) {
109
+ setDraft(input.value);
110
+ return;
111
+ }
112
+ setDraft(null);
113
+ setPending(null);
114
+ commitValue(next);
115
+ };
116
+ const boundsOn = (date) => ({
117
+ min: minParts && date === minParts.date ? dateFamily.minuteOfDay(minParts.time) : null,
118
+ max: maxParts && date === maxParts.date ? dateFamily.minuteOfDay(maxParts.time) : null,
119
+ });
120
+ /* Whether any reading on a day is acceptable: the calendar's own rule, and a day whose bounds
121
+ leave room between them. */
122
+ const dayIsAcceptable = (date) => {
123
+ if (minParts && date < minParts.date)
124
+ return false;
125
+ if (maxParts && date > maxParts.date)
126
+ return false;
127
+ if (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(date))
128
+ return false;
129
+ const bounds = boundsOn(date);
130
+ return bounds.min === null || bounds.max === null || bounds.min <= bounds.max;
131
+ };
132
+ /* The popup works on the committed value, or on a half-chosen one waiting for its other half. A
133
+ held day the constraints refuse — a value from before they changed, or one the application
134
+ passed in — anchors nothing: the calendar shows no selection, and a reading waits for a day. */
135
+ const committed = dateFamily.parseCalendarDateTime(currentValue);
136
+ const held = pending !== null && pending !== void 0 ? pending : {
137
+ date: (_b = committed === null || committed === void 0 ? void 0 : committed.date) !== null && _b !== void 0 ? _b : null,
138
+ time: committed ? { ...committed.time, afternoon: committed.time.hour >= 12 } : timePanel.emptyTime,
139
+ };
140
+ const selection = { ...held, date: held.date && dayIsAcceptable(held.date) ? held.date : null };
141
+ const choose = (next) => {
142
+ var _a, _b;
143
+ if (disabled)
144
+ return;
145
+ setDraft(null);
146
+ const { date, time } = next;
147
+ if (!date || time.hour === null || time.minute === null) {
148
+ setPending(next);
149
+ return;
150
+ }
151
+ /* A day with a bound on it can make the held reading unacceptable; it settles on the bound. */
152
+ const bounds = boundsOn(date);
153
+ const reading = dateFamily.minuteOfDay({ hour: time.hour, minute: time.minute });
154
+ const minutes = Math.min((_a = bounds.max) !== null && _a !== void 0 ? _a : Infinity, Math.max((_b = bounds.min) !== null && _b !== void 0 ? _b : -Infinity, reading));
155
+ const candidate = dateFamily.toCalendarDateTime(date, dateFamily.timeFromMinuteOfDay(minutes));
156
+ /* The popup never commits what the field would refuse. */
157
+ if (!isSelectable(candidate)) {
158
+ setPending({ date: null, time });
159
+ return;
160
+ }
161
+ setPending(null);
162
+ commitValue(candidate);
163
+ };
164
+ const dayBounds = boundsOn(selection.date);
165
+ return (jsxRuntime.jsxs(popover.Popover.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange,
166
+ /* Non-modal: the field, the page and the browser's own entry all stay reachable while the
167
+ popup is open. */
168
+ modal: false, children: [jsxRuntime.jsx(Field.Field, { label: label, description: description, error: error || (typedIssue ? labels.unavailableDateTime : undefined), required: required, disabled: disabled, invalid: typedIssue, validate: validateValue, validationMode: "onChange", actionsRef: fieldActionsRef, className: utils.cn(disabled && ui_common.state.disabled, className), children: jsxRuntime.jsxs("div", { "data-disabled": disabled || undefined, "data-invalid": fieldInvalid || undefined, className: utils.cn(dateField.dateFieldRowClassName(disabled)), children: [jsxRuntime.jsx("div", { dir: dateField.dateInputDirection, className: utils.cn("min-w-0 flex-1 overflow-hidden"), children: jsxRuntime.jsx(field.Field.Control, { ref: ref, render: jsxRuntime.jsx("input", { type: "datetime-local", ref: inputRef }), id: id, name: name, form: form, required: required, disabled: disabled, min: minValue !== null && minValue !== void 0 ? minValue : undefined, max: maxValue !== null && maxValue !== void 0 ? maxValue : undefined, value: displayText, onChange: handleInputChange, className: utils.cn(dateField.dateInputClassName) }) }), jsxRuntime.jsx(dateField.DateFieldTrigger, { label: `Open ${label}`, disabled: disabled, icon: jsxRuntime.jsx(lucideReact.CalendarClock, { "aria-hidden": "true" }) })] }) }), jsxRuntime.jsx(dateField.DateCalendarPopup, { title: label, anchor: () => { var _a, _b, _c; return (_c = (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement) !== null && _c !== void 0 ? _c : null; }, className: utils.cn("max-w-[min(34rem,var(--available-width))]"), children: jsxRuntime.jsxs("div", { className: utils.cn("flex flex-col sm:grid sm:grid-cols-[auto_auto]"), children: [jsxRuntime.jsx(Calendar.default, { mode: "single", value: selection.date, onValueChange: (date) => {
169
+ if (date)
170
+ choose({ date, time: selection.time });
171
+ }, disabled: disabled, min: minParts === null || minParts === void 0 ? void 0 : minParts.date, max: maxParts === null || maxParts === void 0 ? void 0 : maxParts.date, isDateUnavailable: isDateUnavailable, locale: locale, weekStartsOn: weekStartsOn, today: today, labels: labelsProp, className: utils.cn("shrink-0") }), jsxRuntime.jsx(timePanel.TimePanel, { time: selection.time, onTimeChange: (time) => choose({ date: selection.date, time }), minMinute: dayBounds.min, maxMinute: dayBounds.max, format: timeFormat, minuteStep: step, labels: labels, disabled: disabled, className: utils.cn("mt-3 border-t pt-3 sm:ms-3 sm:mt-0 sm:h-0 sm:min-h-full sm:border-s sm:border-t-0 sm:ps-3 sm:pt-0", ui_common.edge.rule, disabled && ui_common.state.disabled), footer: jsxRuntime.jsx(popover.Popover.Close, { disabled: disabled, render: (props) => (jsxRuntime.jsx(Button.default, { ...props, size: "sm", disabled: disabled, children: labels.done })) }) })] }) })] }));
172
+ });
173
+ DateTimePicker.displayName = "DateTimePicker";
174
+
175
+ exports.default = DateTimePicker;
176
+ //# sourceMappingURL=DateTimePicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateTimePicker.cjs","sources":["../../../src/components/DateTimePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport { CalendarClock } from \"lucide-react\";\nimport React, {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport Button from \"./Button\";\nimport Calendar from \"./Calendar\";\nimport Field from \"./Field\";\nimport { edge, state } from \"./ui.common\";\nimport {\n DateCalendarPopup,\n DateFieldTrigger,\n dateFieldRowClassName,\n dateInputClassName,\n dateInputDirection,\n useDateFormReset,\n} from \"./date-field\";\nimport {\n createTimeFormat,\n defaultCalendarLabels,\n minuteOfDay,\n normalizeCalendarDateTime,\n parseCalendarDateTime,\n resolveHourCycle,\n timeFromMinuteOfDay,\n toCalendarDateTime,\n type CalendarDate,\n type CalendarDateTime,\n type CalendarLabels,\n} from \"./date-family\";\nimport { TimePanel, emptyTime, type PartialTime, type TimePanelLabels } from \"./time-panel\";\n\nexport type { CalendarDateTime } from \"./date-family\";\n\nexport interface DateTimePickerLabels extends CalendarLabels, TimePanelLabels {\n /** The action that closes the popup. */\n done: string;\n /** Reported when the entered date and time cannot be accepted. */\n unavailableDateTime: string;\n}\n\nconst defaultDateTimeLabels: DateTimePickerLabels = {\n ...defaultCalendarLabels,\n time: \"Time\",\n hour: \"Hour\",\n minute: \"Minute\",\n period: \"AM/PM\",\n chooseTime: \"Choose a time\",\n done: \"Done\",\n unavailableDateTime: \"That date and time is not available\",\n};\n\nexport interface DateTimePickerProps {\n /** The selected date and time, `YYYY-MM-DDTHH:mm`, or `null` for none. Undefined makes the picker\n * uncontrolled. */\n value?: CalendarDateTime | null;\n defaultValue?: CalendarDateTime | null;\n /** Receives the next date and time, or `null` when the field is cleared. */\n onValueChange?: (value: CalendarDateTime | null) => void;\n /** The field's label. It names the native field, its control and the popup. */\n label: string;\n description?: ReactNode;\n error?: ReactNode;\n required?: boolean;\n disabled?: boolean;\n /** Styles the field's own column. */\n className?: string;\n id?: string;\n /** The form that owns the field, when it renders outside it. */\n form?: string;\n /** Identifies the field when it is submitted. */\n name?: string;\n open?: boolean;\n defaultOpen?: boolean;\n /** Base's own open-change callback, event details included. */\n onOpenChange?: BasePopover.Root.Props[\"onOpenChange\"];\n /** The earliest acceptable date and time, inclusive. */\n min?: CalendarDateTime;\n /** The latest acceptable date and time, inclusive. */\n max?: CalendarDateTime;\n /** Whether a date cannot be chosen at any time. Unavailable dates stay visible and are never selected. */\n isDateUnavailable?: (date: CalendarDate) => boolean;\n /** The interval, in minutes, between the minutes the popup offers. Typed entry stays\n * minute-precise. Defaults to 5. */\n minuteStep?: number;\n /** Shows a twelve-hour clock with a day period, or a twenty-four-hour clock. Defaults to the\n * locale's own. */\n hourCycle?: 12 | 24;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n today?: CalendarDate;\n labels?: Partial<DateTimePickerLabels>;\n}\n\n/* What the popup holds while it is being used. A date chosen before a time — or a time before a\n date — waits here rather than being committed with an invented other half. */\ninterface Selection {\n date: CalendarDate | null;\n time: PartialTime;\n}\n\n/**\n * A date and a time of day: a native `datetime-local` input, with a named control beside it that\n * opens the shared `Calendar` and a column for each part of the clock in a popover.\n *\n * The native input stays the field's control, so the browser owns its entry, its mobile UI, its\n * form submission and the `required` and `min`/`max` constraints; `isDateUnavailable` is reported\n * through the field's own validation, and a value the popup would refuse is never accepted — the\n * input keeps what was typed and the field says why. In the popup, a half-chosen value waits for\n * its other half, a choice that crosses a bound settles on the bound, and Done closes the surface.\n *\n * Values are civil `YYYY-MM-DDTHH:mm` readings with no time zone, exactly as the native input\n * submits them.\n */\nconst DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(({\n value,\n defaultValue,\n onValueChange,\n label,\n description,\n error,\n required = false,\n disabled = false,\n className,\n id,\n form,\n name,\n open,\n defaultOpen,\n onOpenChange,\n min,\n max,\n isDateUnavailable,\n minuteStep = 5,\n hourCycle,\n locale = \"en-US\",\n weekStartsOn = 1,\n today,\n labels: labelsProp,\n}, ref) => {\n const labels = useMemo(() => ({ ...defaultDateTimeLabels, ...labelsProp }), [labelsProp]);\n const timeFormat = useMemo(\n () => createTimeFormat(locale, hourCycle ?? resolveHourCycle(locale)),\n [locale, hourCycle]\n );\n const step = Number.isFinite(minuteStep) ? Math.min(60, Math.max(1, Math.round(minuteStep))) : 5;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<CalendarDateTime | null>(() =>\n normalizeCalendarDateTime(defaultValue)\n );\n const currentValue = isControlled ? normalizeCalendarDateTime(value) : internalValue;\n // Invalid native entry is an explicit draft, not a second writer of a valid controlled value.\n const [draft, setDraft] = useState<string | null>(null);\n const [pending, setPending] = useState<Selection | null>(null);\n const minValue = normalizeCalendarDateTime(min);\n const maxValue = normalizeCalendarDateTime(max);\n const minParts = parseCalendarDateTime(minValue);\n const maxParts = parseCalendarDateTime(maxValue);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const fieldActionsRef = useRef<BaseField.Root.Actions | null>(null);\n\n useEffect(() => {\n setDraft(null);\n setPending(null);\n }, [currentValue]);\n useDateFormReset(inputRef, form, () => {\n const restored = isControlled ? currentValue : normalizeCalendarDateTime(defaultValue);\n setDraft(null);\n setPending(null);\n if (!isControlled) setInternalValue(restored);\n // Native reset has already run and emits no React change event.\n if (inputRef.current) inputRef.current.value = restored ?? \"\";\n });\n\n const commitValue = (next: CalendarDateTime | null) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const isSelectable = (candidate: CalendarDateTime) => {\n if (minValue && candidate < minValue) return false;\n if (maxValue && candidate > maxValue) return false;\n const parts = parseCalendarDateTime(candidate);\n return Boolean(parts) && !isDateUnavailable?.(parts!.date);\n };\n\n const displayText = draft ?? currentValue ?? \"\";\n const displayedValue = normalizeCalendarDateTime(displayText);\n const typedIssue = draft !== null || Boolean(\n displayText && (!displayedValue || !isSelectable(displayedValue))\n );\n const fieldInvalid = Boolean(error) || typedIssue;\n const validateValue = (candidate: unknown) => {\n if (draft !== null) return labels.unavailableDateTime;\n if (typeof candidate !== \"string\" || !candidate) return null;\n const parts = parseCalendarDateTime(candidate);\n return !parts || isDateUnavailable?.(parts.date) ? labels.unavailableDateTime : null;\n };\n\n // Constraints can change while the native text stays the same. Base remains the\n // validation owner; refresh its native custom validity as well as the field's visuals.\n useEffect(() => {\n fieldActionsRef.current?.validate();\n }, [displayText, typedIssue, minValue, maxValue, isDateUnavailable, disabled, labels.unavailableDateTime]);\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n const next = normalizeCalendarDateTime(input.value);\n if (input.validity.badInput || (input.value && (!next || !isSelectable(next)))) {\n setDraft(input.value);\n return;\n }\n setDraft(null);\n setPending(null);\n commitValue(next);\n };\n\n const boundsOn = (date: CalendarDate | null) => ({\n min: minParts && date === minParts.date ? minuteOfDay(minParts.time) : null,\n max: maxParts && date === maxParts.date ? minuteOfDay(maxParts.time) : null,\n });\n\n /* Whether any reading on a day is acceptable: the calendar's own rule, and a day whose bounds\n leave room between them. */\n const dayIsAcceptable = (date: CalendarDate) => {\n if (minParts && date < minParts.date) return false;\n if (maxParts && date > maxParts.date) return false;\n if (isDateUnavailable?.(date)) return false;\n const bounds = boundsOn(date);\n return bounds.min === null || bounds.max === null || bounds.min <= bounds.max;\n };\n\n /* The popup works on the committed value, or on a half-chosen one waiting for its other half. A\n held day the constraints refuse — a value from before they changed, or one the application\n passed in — anchors nothing: the calendar shows no selection, and a reading waits for a day. */\n const committed = parseCalendarDateTime(currentValue);\n const held: Selection = pending ?? {\n date: committed?.date ?? null,\n time: committed ? { ...committed.time, afternoon: committed.time.hour >= 12 } : emptyTime,\n };\n const selection: Selection = { ...held, date: held.date && dayIsAcceptable(held.date) ? held.date : null };\n\n const choose = (next: Selection) => {\n if (disabled) return;\n setDraft(null);\n const { date, time } = next;\n if (!date || time.hour === null || time.minute === null) {\n setPending(next);\n return;\n }\n /* A day with a bound on it can make the held reading unacceptable; it settles on the bound. */\n const bounds = boundsOn(date);\n const reading = minuteOfDay({ hour: time.hour, minute: time.minute });\n const minutes = Math.min(bounds.max ?? Infinity, Math.max(bounds.min ?? -Infinity, reading));\n const candidate = toCalendarDateTime(date, timeFromMinuteOfDay(minutes));\n /* The popup never commits what the field would refuse. */\n if (!isSelectable(candidate)) {\n setPending({ date: null, time });\n return;\n }\n setPending(null);\n commitValue(candidate);\n };\n\n const dayBounds = boundsOn(selection.date);\n\n return (\n <BasePopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n /* Non-modal: the field, the page and the browser's own entry all stay reachable while the\n popup is open. */\n modal={false}\n >\n <Field\n label={label}\n description={description}\n error={error || (typedIssue ? labels.unavailableDateTime : undefined)}\n required={required}\n disabled={disabled}\n invalid={typedIssue}\n validate={validateValue}\n validationMode=\"onChange\"\n actionsRef={fieldActionsRef}\n className={cn(disabled && state.disabled, className)}\n >\n <div\n data-disabled={disabled || undefined}\n data-invalid={fieldInvalid || undefined}\n className={cn(dateFieldRowClassName(disabled))}\n >\n <div dir={dateInputDirection} className={cn(\"min-w-0 flex-1 overflow-hidden\")}>\n <BaseField.Control\n ref={ref}\n render={<input type=\"datetime-local\" ref={inputRef} />}\n id={id}\n name={name}\n form={form}\n required={required}\n disabled={disabled}\n min={minValue ?? undefined}\n max={maxValue ?? undefined}\n value={displayText}\n onChange={handleInputChange}\n className={cn(dateInputClassName)}\n />\n </div>\n <DateFieldTrigger\n label={`Open ${label}`}\n disabled={disabled}\n icon={<CalendarClock aria-hidden=\"true\" />}\n />\n </div>\n </Field>\n\n {/* The popup sits outside the field, so nothing in it can register with the field the\n native input owns. */}\n <DateCalendarPopup\n title={label}\n anchor={() => inputRef.current?.parentElement?.parentElement ?? null}\n className={cn(\"max-w-[min(34rem,var(--available-width))]\")}\n >\n {/* Side by side where there is room, the time beneath the month on a narrow screen. Beside\n the calendar the panel takes no height of its own, so the month decides the popup's\n height and the columns scroll within it. */}\n <div className={cn(\"flex flex-col sm:grid sm:grid-cols-[auto_auto]\")}>\n <Calendar\n mode=\"single\"\n value={selection.date}\n onValueChange={(date) => {\n if (date) choose({ date, time: selection.time });\n }}\n disabled={disabled}\n min={minParts?.date}\n max={maxParts?.date}\n isDateUnavailable={isDateUnavailable}\n locale={locale}\n weekStartsOn={weekStartsOn}\n today={today}\n labels={labelsProp}\n className={cn(\"shrink-0\")}\n />\n <TimePanel\n time={selection.time}\n onTimeChange={(time) => choose({ date: selection.date, time })}\n minMinute={dayBounds.min}\n maxMinute={dayBounds.max}\n format={timeFormat}\n minuteStep={step}\n labels={labels}\n disabled={disabled}\n className={cn(\n \"mt-3 border-t pt-3 sm:ms-3 sm:mt-0 sm:h-0 sm:min-h-full sm:border-s sm:border-t-0 sm:ps-3 sm:pt-0\",\n edge.rule,\n disabled && state.disabled\n )}\n footer={\n <BasePopover.Close\n disabled={disabled}\n render={(props) => (\n <Button {...props} size=\"sm\" disabled={disabled}>\n {labels.done}\n </Button>\n )}\n />\n }\n />\n </div>\n </DateCalendarPopup>\n </BasePopover.Root>\n );\n});\n\nDateTimePicker.displayName = \"DateTimePicker\";\n\nexport default DateTimePicker;\n"],"names":["defaultCalendarLabels","forwardRef","useMemo","createTimeFormat","resolveHourCycle","useState","normalizeCalendarDateTime","parseCalendarDateTime","useRef","useEffect","useDateFormReset","minuteOfDay","emptyTime","toCalendarDateTime","timeFromMinuteOfDay","_jsxs","BasePopover","_jsx","Field","cn","state","dateFieldRowClassName","dateInputDirection","BaseField","dateInputClassName","DateFieldTrigger","CalendarClock","DateCalendarPopup","Calendar","TimePanel","edge","Button"],"mappings":"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,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAEkG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClG,CAAA,CAAA,CAAA,CAAA,MAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAGJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CA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"}
@@ -185,7 +185,7 @@ const FileUpload = React.forwardRef(({ label, description, error, files, default
185
185
  ]
186
186
  .filter((part) => part !== null)
187
187
  .join(" · ");
188
- return (jsxRuntime.jsxs(field.Field.Root, { ...rootProps, disabled: disabled, invalid: Boolean(error), className: utils.cn(ui_common.fieldLayout, className), children: [jsxRuntime.jsx(field.Field.Label, { className: utils.cn("mb-2 text-sm font-medium", ui_common.text.high), children: label }), jsxRuntime.jsxs("label", { className: utils.cn("relative z-10 flex min-w-0 flex-col items-center gap-2 px-4 py-4 text-center", ui_common.shape.control, ui_common.material.matteHigh, ui_motion.motionFeedback, ui_common.focusRingWithin, ui_common.focusRingDrag, !disabled && ui_common.state.enabled, !disabled && ui_common.stateLayer.quiet, !disabled && dragging && ui_common.tone.tonal.primary, disabled && ui_common.state.disabled), "data-dragging": dragging || undefined, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [jsxRuntime.jsx("span", { className: utils.cn("inline-flex size-8 shrink-0 items-center justify-center [&>svg]:size-7", ui_common.text.medium), "aria-hidden": "true", children: jsxRuntime.jsx(lucideReact.Upload, {}) }), jsxRuntime.jsxs("span", { className: utils.cn("flex min-w-0 flex-col items-center gap-1"), children: [jsxRuntime.jsx("span", { className: utils.cn("text-base font-semibold", ui_common.text.high), children: dragging ? (multiple ? "Drop files here" : "Drop the file here") : selectLabel }), jsxRuntime.jsx("span", { className: utils.cn("text-sm leading-5", ui_common.text.medium), children: multiple ? "or drag and drop files" : "or drag and drop a file" })] }), jsxRuntime.jsx(field.Field.Control, { ref: forwardedRef, render: jsxRuntime.jsx("input", { ref: inputRef }), type: "file", multiple: multiple || undefined, accept: accept, "aria-describedby": hint ? hintId : undefined, onChange: handlePickerChange, className: utils.cn("sr-only") })] }), selected.length > 0 && (jsxRuntime.jsxs("div", { className: utils.cn("mx-4 min-w-0 overflow-hidden", ui_common.shape.control, "rounded-t-none", ui_common.matteInset, ui_common.recessedTop), children: [jsxRuntime.jsx("ul", { role: "list", className: utils.cn("m-0 min-w-0 list-none px-3 pt-3"), children: selected.map((file, index) => {
188
+ return (jsxRuntime.jsxs(field.Field.Root, { ...rootProps, disabled: disabled, invalid: Boolean(error), className: utils.cn(ui_common.fieldLayout, className), children: [jsxRuntime.jsx(field.Field.Label, { className: utils.cn("mb-2 text-sm font-medium", ui_common.text.high), children: label }), jsxRuntime.jsxs("label", { className: utils.cn("relative z-10 flex min-w-0 flex-col items-center gap-2 px-4 py-4 text-center", ui_common.shape.control, ui_common.material.control, ui_common.rim.dashed, !disabled && ui_common.rim.dashedHover, ui_common.rim.dashedDragging, ui_motion.motionFeedback, ui_common.focusRingWithin, ui_common.focusRingDrag, !disabled && ui_common.state.enabled, !disabled && ui_common.stateLayer.quiet, !disabled && dragging && ui_common.tone.tonal.primary, disabled && ui_common.state.disabled), "data-sui-drop-target": "", "data-dragging": dragging || undefined, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [jsxRuntime.jsx("span", { className: utils.cn("inline-flex size-8 shrink-0 items-center justify-center [&>svg]:size-7", ui_common.text.medium), "aria-hidden": "true", children: jsxRuntime.jsx(lucideReact.Upload, {}) }), jsxRuntime.jsxs("span", { className: utils.cn("flex min-w-0 flex-col items-center gap-1"), children: [jsxRuntime.jsx("span", { className: utils.cn("text-base font-semibold", ui_common.text.high), children: dragging ? (multiple ? "Drop files here" : "Drop the file here") : selectLabel }), jsxRuntime.jsx("span", { className: utils.cn("text-sm leading-5", ui_common.text.medium), children: multiple ? "or drag and drop files" : "or drag and drop a file" })] }), jsxRuntime.jsx(field.Field.Control, { ref: forwardedRef, render: jsxRuntime.jsx("input", { ref: inputRef }), type: "file", multiple: multiple || undefined, accept: accept, "aria-describedby": hint ? hintId : undefined, onChange: handlePickerChange, className: utils.cn("sr-only") })] }), selected.length > 0 && (jsxRuntime.jsxs("div", { className: utils.cn("mx-4 min-w-0 overflow-hidden", ui_common.shape.control, "rounded-t-none", ui_common.matteInset, ui_common.recessedTop), children: [jsxRuntime.jsx("ul", { role: "list", className: utils.cn("m-0 min-w-0 list-none px-3 pt-3"), children: selected.map((file, index) => {
189
189
  const key = fileUpload_rules.fileKey(file);
190
190
  const extension = file.name.includes(".") ? file.name.slice(file.name.lastIndexOf(".") + 1) : "";
191
191
  const fileType = (extension || file.type.split("/").pop() || "File").toUpperCase();