sherick-ui 2.0.0 → 2.1.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 (95) hide show
  1. package/README.md +55 -199
  2. package/dist/cjs/components/Breadcrumb.cjs +47 -0
  3. package/dist/cjs/components/Breadcrumb.cjs.map +1 -0
  4. package/dist/cjs/components/Calendar.cjs +298 -0
  5. package/dist/cjs/components/Calendar.cjs.map +1 -0
  6. package/dist/cjs/components/Combobox.cjs +1 -1
  7. package/dist/cjs/components/Combobox.cjs.map +1 -1
  8. package/dist/cjs/components/Command.cjs +81 -0
  9. package/dist/cjs/components/Command.cjs.map +1 -0
  10. package/dist/cjs/components/CommandPalette.cjs +52 -0
  11. package/dist/cjs/components/CommandPalette.cjs.map +1 -0
  12. package/dist/cjs/components/DatePicker.cjs +107 -0
  13. package/dist/cjs/components/DatePicker.cjs.map +1 -0
  14. package/dist/cjs/components/DateRangePicker.cjs +165 -0
  15. package/dist/cjs/components/DateRangePicker.cjs.map +1 -0
  16. package/dist/cjs/components/FileUpload.cjs +203 -0
  17. package/dist/cjs/components/FileUpload.cjs.map +1 -0
  18. package/dist/cjs/components/Media.cjs +27 -0
  19. package/dist/cjs/components/Media.cjs.map +1 -0
  20. package/dist/cjs/components/Pagination.cjs +115 -0
  21. package/dist/cjs/components/Pagination.cjs.map +1 -0
  22. package/dist/cjs/components/Select.cjs +1 -1
  23. package/dist/cjs/components/Select.cjs.map +1 -1
  24. package/dist/cjs/components/Stepper.cjs +40 -0
  25. package/dist/cjs/components/Stepper.cjs.map +1 -0
  26. package/dist/cjs/components/Tabs.cjs +1 -1
  27. package/dist/cjs/components/Tabs.cjs.map +1 -1
  28. package/dist/cjs/components/TreeView.cjs +247 -0
  29. package/dist/cjs/components/TreeView.cjs.map +1 -0
  30. package/dist/cjs/components/date-family.cjs +191 -0
  31. package/dist/cjs/components/date-family.cjs.map +1 -0
  32. package/dist/cjs/components/date-field.cjs +90 -0
  33. package/dist/cjs/components/date-field.cjs.map +1 -0
  34. package/dist/cjs/components/fileUpload.rules.cjs +121 -0
  35. package/dist/cjs/components/fileUpload.rules.cjs.map +1 -0
  36. package/dist/cjs/components/tree.cjs +95 -0
  37. package/dist/cjs/components/tree.cjs.map +1 -0
  38. package/dist/cjs/components/ui.common.cjs +27 -7
  39. package/dist/cjs/components/ui.common.cjs.map +1 -1
  40. package/dist/cjs/components/ui.motion.cjs +3 -3
  41. package/dist/cjs/components/ui.motion.cjs.map +1 -1
  42. package/dist/cjs/dev.cjs +5 -0
  43. package/dist/cjs/dev.cjs.map +1 -1
  44. package/dist/cjs/index.cjs +22 -0
  45. package/dist/cjs/index.cjs.map +1 -1
  46. package/dist/esm/components/Breadcrumb.js +43 -0
  47. package/dist/esm/components/Breadcrumb.js.map +1 -0
  48. package/dist/esm/components/Calendar.js +294 -0
  49. package/dist/esm/components/Calendar.js.map +1 -0
  50. package/dist/esm/components/Combobox.js +2 -2
  51. package/dist/esm/components/Combobox.js.map +1 -1
  52. package/dist/esm/components/Command.js +77 -0
  53. package/dist/esm/components/Command.js.map +1 -0
  54. package/dist/esm/components/CommandPalette.js +48 -0
  55. package/dist/esm/components/CommandPalette.js.map +1 -0
  56. package/dist/esm/components/DatePicker.js +103 -0
  57. package/dist/esm/components/DatePicker.js.map +1 -0
  58. package/dist/esm/components/DateRangePicker.js +161 -0
  59. package/dist/esm/components/DateRangePicker.js.map +1 -0
  60. package/dist/esm/components/FileUpload.js +199 -0
  61. package/dist/esm/components/FileUpload.js.map +1 -0
  62. package/dist/esm/components/Media.js +25 -0
  63. package/dist/esm/components/Media.js.map +1 -0
  64. package/dist/esm/components/Pagination.js +111 -0
  65. package/dist/esm/components/Pagination.js.map +1 -0
  66. package/dist/esm/components/Select.js +2 -2
  67. package/dist/esm/components/Select.js.map +1 -1
  68. package/dist/esm/components/Stepper.js +36 -0
  69. package/dist/esm/components/Stepper.js.map +1 -0
  70. package/dist/esm/components/Tabs.js +2 -2
  71. package/dist/esm/components/Tabs.js.map +1 -1
  72. package/dist/esm/components/TreeView.js +243 -0
  73. package/dist/esm/components/TreeView.js.map +1 -0
  74. package/dist/esm/components/date-family.js +173 -0
  75. package/dist/esm/components/date-family.js.map +1 -0
  76. package/dist/esm/components/date-field.js +84 -0
  77. package/dist/esm/components/date-field.js.map +1 -0
  78. package/dist/esm/components/fileUpload.rules.js +114 -0
  79. package/dist/esm/components/fileUpload.rules.js.map +1 -0
  80. package/dist/esm/components/tree.js +88 -0
  81. package/dist/esm/components/tree.js.map +1 -0
  82. package/dist/esm/components/ui.common.js +23 -8
  83. package/dist/esm/components/ui.common.js.map +1 -1
  84. package/dist/esm/components/ui.motion.js +3 -3
  85. package/dist/esm/components/ui.motion.js.map +1 -1
  86. package/dist/esm/dev.js +1 -1
  87. package/dist/esm/index.js +11 -0
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/styles.css +362 -20
  90. package/dist/theme.css +15 -9
  91. package/dist/types/dev.d.cts +8 -3
  92. package/dist/types/dev.d.ts +8 -3
  93. package/dist/types/index.d.cts +600 -66
  94. package/dist/types/index.d.ts +600 -66
  95. package/package.json +1 -1
@@ -0,0 +1,165 @@
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 React = require('react');
10
+ var utils = require('../libs/utils.cjs');
11
+ var Calendar = require('./Calendar.cjs');
12
+ var Field = require('./Field.cjs');
13
+ var ui_common = require('./ui.common.cjs');
14
+ var dateField = require('./date-field.cjs');
15
+ var dateFamily = require('./date-family.cjs');
16
+
17
+ /**
18
+ * A range of dates: two independently labelled native date fields in one named group, and one
19
+ * calendar they share.
20
+ *
21
+ * Each endpoint is the browser's own `type=date` control, so entry, mobile UI, submission and the
22
+ * `required` and `min`/`max` constraints belong to the platform. The picker's own rule is that a
23
+ * range which reverses its endpoints or spans a date the application refuses is never accepted:
24
+ * the typed value stays on screen, the field reports why, and the calendar's selection does not
25
+ * move. The calendar itself refuses the same spans, so a pointer and a keyboard cannot reach a
26
+ * range the field would reject.
27
+ */
28
+ const DateRangePicker = React.forwardRef(({ value, defaultValue, onValueChange, label, startLabel = "Start date", endLabel = "End date", description, error, required = false, disabled = false, className, id, form, startName, endName, open, defaultOpen, onOpenChange, min, max, isDateUnavailable, locale = "en-US", weekStartsOn = 1, today, labels: labelsProp, }, ref) => {
29
+ const labels = React.useMemo(() => dateFamily.resolveCalendarLabels(labelsProp), [labelsProp]);
30
+ const isControlled = value !== undefined;
31
+ const [internalRange, setInternalRange] = React.useState(() => dateFamily.normalizeDateRange(defaultValue));
32
+ const currentRange = isControlled ? dateFamily.normalizeDateRange(value) : internalRange;
33
+ const [draft, setDraft] = React.useState(null);
34
+ const [typedIssue, setTypedIssue] = React.useState(null);
35
+ const displayedRange = draft !== null && draft !== void 0 ? draft : currentRange;
36
+ const minDate = dateFamily.normalizeCalendarDate(min);
37
+ const maxDate = dateFamily.normalizeCalendarDate(max);
38
+ const startInputRef = React.useRef(null);
39
+ const endInputRef = React.useRef(null);
40
+ const popupActionsRef = React.useRef(null);
41
+ const calendarAnchorRef = React.useRef(null);
42
+ const startFieldActions = React.useRef(null);
43
+ const endFieldActions = React.useRef(null);
44
+ // One endpoint can repair the other's custom validity without changing its text.
45
+ // Base still owns validation; an invalid draft is explained by the edited field only.
46
+ React.useEffect(() => {
47
+ var _a, _b;
48
+ (_a = startFieldActions.current) === null || _a === void 0 ? void 0 : _a.validate();
49
+ (_b = endFieldActions.current) === null || _b === void 0 ? void 0 : _b.validate();
50
+ }, [displayedRange.start, displayedRange.end, typedIssue, minDate, maxDate, isDateUnavailable, disabled, labels.unavailableRange]);
51
+ const descriptionId = React.useId();
52
+ const errorId = React.useId();
53
+ const describedBy = [description ? descriptionId : null, error ? errorId : null].filter(Boolean).join(" ") || undefined;
54
+ React.useEffect(() => {
55
+ setDraft(null);
56
+ setTypedIssue(null);
57
+ }, [currentRange.start, currentRange.end]);
58
+ dateField.useDateFormReset(startInputRef, form, () => {
59
+ var _a, _b;
60
+ const restored = isControlled ? currentRange : dateFamily.normalizeDateRange(defaultValue);
61
+ setDraft(null);
62
+ setTypedIssue(null);
63
+ if (!isControlled)
64
+ setInternalRange(restored);
65
+ if (startInputRef.current)
66
+ startInputRef.current.value = (_a = restored.start) !== null && _a !== void 0 ? _a : "";
67
+ if (endInputRef.current)
68
+ endInputRef.current.value = (_b = restored.end) !== null && _b !== void 0 ? _b : "";
69
+ });
70
+ const commitRange = (next) => {
71
+ if (!isControlled)
72
+ setInternalRange(next);
73
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(next);
74
+ };
75
+ const isUnavailableDate = React.useCallback((date) => {
76
+ if (minDate && dateFamily.compareCalendarDates(date, minDate) < 0)
77
+ return true;
78
+ if (maxDate && dateFamily.compareCalendarDates(date, maxDate) > 0)
79
+ return true;
80
+ return Boolean(isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(date));
81
+ }, [minDate, maxDate, isDateUnavailable]);
82
+ const spanIsRefused = (from, to) => {
83
+ const fromParts = dateFamily.parseCalendarDate(from);
84
+ const toParts = dateFamily.parseCalendarDate(to);
85
+ if (!fromParts || !toParts)
86
+ return true;
87
+ return Boolean(isDateUnavailable && dateFamily.rangeIncludesDate(fromParts, toParts, isDateUnavailable));
88
+ };
89
+ const isRangeAcceptable = (range) => {
90
+ if (range.start && isUnavailableDate(range.start))
91
+ return false;
92
+ if (range.end && isUnavailableDate(range.end))
93
+ return false;
94
+ if (range.start && range.end) {
95
+ if (dateFamily.compareCalendarDates(range.end, range.start) < 0)
96
+ return false;
97
+ return !spanIsRefused(range.start, range.end);
98
+ }
99
+ return true;
100
+ };
101
+ /* Each field reports the problem from its own perspective, so whichever endpoint was typed last
102
+ is the one that explains it. Bounds and emptiness are the browser's own validation. */
103
+ const validateStart = (candidate) => {
104
+ if (typedIssue)
105
+ return typedIssue === "start" ? labels.unavailableRange : null;
106
+ const date = typeof candidate === "string" ? dateFamily.normalizeCalendarDate(candidate) : null;
107
+ if (!date)
108
+ return candidate ? labels.unavailableRange : null;
109
+ if (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(date))
110
+ return labels.unavailableRange;
111
+ const end = dateFamily.normalizeCalendarDate(displayedRange.end);
112
+ if (!end)
113
+ return null;
114
+ if (dateFamily.compareCalendarDates(date, end) > 0)
115
+ return labels.unavailableRange;
116
+ return spanIsRefused(date, end) ? labels.unavailableRange : null;
117
+ };
118
+ const validateEnd = (candidate) => {
119
+ if (typedIssue)
120
+ return typedIssue === "end" ? labels.unavailableRange : null;
121
+ const date = typeof candidate === "string" ? dateFamily.normalizeCalendarDate(candidate) : null;
122
+ if (!date)
123
+ return candidate ? labels.unavailableRange : null;
124
+ if (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(date))
125
+ return labels.unavailableRange;
126
+ const start = dateFamily.normalizeCalendarDate(displayedRange.start);
127
+ if (!start)
128
+ return null;
129
+ if (dateFamily.compareCalendarDates(date, start) < 0)
130
+ return labels.unavailableRange;
131
+ return spanIsRefused(start, date) ? labels.unavailableRange : null;
132
+ };
133
+ const handleEndpointChange = (endpoint, event) => {
134
+ const input = event.currentTarget;
135
+ const next = { ...displayedRange, [endpoint]: input.value || null };
136
+ const normalized = dateFamily.normalizeDateRange(next);
137
+ if (input.validity.badInput ||
138
+ (next.start && !normalized.start) || (next.end && !normalized.end) ||
139
+ !isRangeAcceptable(normalized)) {
140
+ setDraft(next);
141
+ setTypedIssue(endpoint);
142
+ return;
143
+ }
144
+ setDraft(null);
145
+ setTypedIssue(null);
146
+ commitRange(normalized);
147
+ };
148
+ const handleCalendarChange = (next) => {
149
+ var _a;
150
+ if (disabled)
151
+ return;
152
+ setDraft(null);
153
+ setTypedIssue(null);
154
+ commitRange(next);
155
+ /* A range is chosen when both ends exist; the surface has then done its job. */
156
+ if (next.start && next.end)
157
+ (_a = popupActionsRef.current) === null || _a === void 0 ? void 0 : _a.close();
158
+ };
159
+ const row = (inputRef, inputId, inputName, inputLabel, displayedValue, invalid, validate, handleChange) => (jsxRuntime.jsx(Field.Field, { label: inputLabel, disabled: disabled, invalid: invalid, actionsRef: inputRef === startInputRef ? startFieldActions : endFieldActions, error: typedIssue === (inputRef === startInputRef ? "start" : "end") ? labels.unavailableRange : undefined, validate: validate, validationMode: "onChange", children: jsxRuntime.jsxs("div", { "data-disabled": disabled || undefined, "data-invalid": invalid || undefined, className: utils.cn(dateField.dateFieldRowClassName(disabled)), children: [jsxRuntime.jsx("div", { className: utils.cn("min-w-0 flex-1 overflow-hidden"), children: jsxRuntime.jsx(field.Field.Control, { ref: inputRef === startInputRef ? ref : undefined, render: jsxRuntime.jsx("input", { type: "date", ref: inputRef }), id: inputId, name: inputName, form: form, required: required, disabled: disabled, min: minDate !== null && minDate !== void 0 ? minDate : undefined, max: maxDate !== null && maxDate !== void 0 ? maxDate : undefined, value: displayedValue !== null && displayedValue !== void 0 ? displayedValue : "", onChange: handleChange, className: utils.cn(dateField.dateInputClassName) }) }), jsxRuntime.jsx(dateField.DateFieldTrigger, { label: `Open ${inputLabel}`, disabled: disabled })] }) }));
160
+ return (jsxRuntime.jsxs("fieldset", { disabled: disabled || undefined, "aria-describedby": describedBy, className: utils.cn("m-0 min-w-0 p-0", disabled && ui_common.state.disabled, className), children: [jsxRuntime.jsxs("legend", { className: utils.cn("p-0 text-sm font-medium", ui_common.text.high), children: [label, required && (jsxRuntime.jsx("span", { className: utils.cn("ms-1", ui_common.tone.text.danger), "aria-hidden": "true", children: "*" }))] }), jsxRuntime.jsxs(popover.Popover.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, actionsRef: popupActionsRef, modal: false, children: [jsxRuntime.jsxs("div", { ref: calendarAnchorRef, className: utils.cn("mt-2 grid grid-cols-[repeat(auto-fit,minmax(min(100%,14rem),1fr))] gap-3"), children: [row(startInputRef, id, startName, startLabel, displayedRange.start, typedIssue === "start" || Boolean(error) || !isRangeAcceptable(currentRange), validateStart, (event) => handleEndpointChange("start", event)), row(endInputRef, id ? `${id}-end` : undefined, endName, endLabel, displayedRange.end, typedIssue === "end" || Boolean(error) || !isRangeAcceptable(currentRange), validateEnd, (event) => handleEndpointChange("end", event))] }), jsxRuntime.jsx(dateField.DateCalendarPopup, { title: label, anchor: calendarAnchorRef, children: jsxRuntime.jsx(Calendar.default, { mode: "range", value: currentRange, onValueChange: handleCalendarChange, disabled: disabled, min: min, max: max, isDateUnavailable: isDateUnavailable, locale: locale, weekStartsOn: weekStartsOn, today: today, labels: labelsProp }) })] }), description && (jsxRuntime.jsx("p", { id: descriptionId, className: utils.cn("mt-2 text-xs leading-5", ui_common.text.medium), children: description })), error && (jsxRuntime.jsx("p", { id: errorId, className: utils.cn("mt-2 text-xs leading-5", ui_common.tone.text.danger), children: error }))] }));
161
+ });
162
+ DateRangePicker.displayName = "DateRangePicker";
163
+
164
+ exports.default = DateRangePicker;
165
+ //# sourceMappingURL=DateRangePicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangePicker.cjs","sources":["../../../src/components/DateRangePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { Popover as BasePopover } from \"@base-ui/react/popover\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport Calendar from \"./Calendar\";\nimport Field from \"./Field\";\nimport { state, text, tone } from \"./ui.common\";\nimport {\n DateCalendarPopup,\n DateFieldTrigger,\n dateFieldRowClassName,\n dateInputClassName,\n useDateFormReset,\n} from \"./date-field\";\nimport {\n compareCalendarDates,\n normalizeCalendarDate,\n normalizeDateRange,\n parseCalendarDate,\n rangeIncludesDate,\n resolveCalendarLabels,\n type CalendarDate,\n type CalendarLabels,\n type DateRange,\n} from \"./date-family\";\n\nexport interface DateRangePickerProps {\n /** The selected range. `{ start: null, end: null }` is an empty selection; a start without an\n * end is a range that is still being chosen. Undefined makes the picker uncontrolled. */\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n /** Receives the next range; clearing reports both endpoints as `null`. */\n onValueChange?: (value: DateRange) => void;\n /** Names the range group. */\n label: string;\n /** The first field's own label. */\n startLabel?: string;\n /** The second field's own label. */\n endLabel?: string;\n description?: ReactNode;\n error?: ReactNode;\n required?: boolean;\n disabled?: boolean;\n /** Styles the range group. */\n className?: string;\n /** The first field's own id. The second derives its id from it. */\n id?: string;\n /** The form that owns the fields, when they render outside it. */\n form?: string;\n /** Identifies the range's start when it is submitted. */\n startName?: string;\n /** Identifies the range's end when it is submitted. */\n endName?: 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, inclusive. */\n min?: CalendarDate;\n /** The latest acceptable date, inclusive. */\n max?: CalendarDate;\n /** Whether a date cannot be chosen. A range may not span an unavailable date. */\n isDateUnavailable?: (date: CalendarDate) => boolean;\n locale?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n today?: CalendarDate;\n labels?: Partial<CalendarLabels>;\n}\n\n\n/**\n * A range of dates: two independently labelled native date fields in one named group, and one\n * calendar they share.\n *\n * Each endpoint is the browser's own `type=date` control, so entry, mobile UI, submission and the\n * `required` and `min`/`max` constraints belong to the platform. The picker's own rule is that a\n * range which reverses its endpoints or spans a date the application refuses is never accepted:\n * the typed value stays on screen, the field reports why, and the calendar's selection does not\n * move. The calendar itself refuses the same spans, so a pointer and a keyboard cannot reach a\n * range the field would reject.\n */\nconst DateRangePicker = forwardRef<HTMLInputElement, DateRangePickerProps>(({\n value,\n defaultValue,\n onValueChange,\n label,\n startLabel = \"Start date\",\n endLabel = \"End date\",\n description,\n error,\n required = false,\n disabled = false,\n className,\n id,\n form,\n startName,\n endName,\n open,\n defaultOpen,\n onOpenChange,\n min,\n max,\n isDateUnavailable,\n locale = \"en-US\",\n weekStartsOn = 1,\n today,\n labels: labelsProp,\n}, ref) => {\n const labels = useMemo(() => resolveCalendarLabels(labelsProp), [labelsProp]);\n const isControlled = value !== undefined;\n const [internalRange, setInternalRange] = useState<DateRange>(() => normalizeDateRange(defaultValue));\n const currentRange = isControlled ? normalizeDateRange(value) : internalRange;\n const [draft, setDraft] = useState<DateRange | null>(null);\n const [typedIssue, setTypedIssue] = useState<\"start\" | \"end\" | null>(null);\n const displayedRange = draft ?? currentRange;\n\n const minDate = normalizeCalendarDate(min);\n const maxDate = normalizeCalendarDate(max);\n\n const startInputRef = useRef<HTMLInputElement | null>(null);\n const endInputRef = useRef<HTMLInputElement | null>(null);\n const popupActionsRef = useRef<BasePopover.Root.Actions | null>(null);\n const calendarAnchorRef = useRef<HTMLDivElement | null>(null);\n const startFieldActions = useRef<BaseField.Root.Actions | null>(null);\n const endFieldActions = useRef<BaseField.Root.Actions | null>(null);\n\n // One endpoint can repair the other's custom validity without changing its text.\n // Base still owns validation; an invalid draft is explained by the edited field only.\n useEffect(() => {\n startFieldActions.current?.validate();\n endFieldActions.current?.validate();\n }, [displayedRange.start, displayedRange.end, typedIssue, minDate, maxDate, isDateUnavailable, disabled, labels.unavailableRange]);\n\n const descriptionId = useId();\n const errorId = useId();\n const describedBy =\n [description ? descriptionId : null, error ? errorId : null].filter(Boolean).join(\" \") || undefined;\n\n useEffect(() => {\n setDraft(null);\n setTypedIssue(null);\n }, [currentRange.start, currentRange.end]);\n\n useDateFormReset(startInputRef, form, () => {\n const restored = isControlled ? currentRange : normalizeDateRange(defaultValue);\n setDraft(null);\n setTypedIssue(null);\n if (!isControlled) setInternalRange(restored);\n if (startInputRef.current) startInputRef.current.value = restored.start ?? \"\";\n if (endInputRef.current) endInputRef.current.value = restored.end ?? \"\";\n });\n\n const commitRange = (next: DateRange) => {\n if (!isControlled) setInternalRange(next);\n onValueChange?.(next);\n };\n\n const isUnavailableDate = useCallback(\n (date: CalendarDate) => {\n if (minDate && compareCalendarDates(date, minDate) < 0) return true;\n if (maxDate && compareCalendarDates(date, maxDate) > 0) return true;\n return Boolean(isDateUnavailable?.(date));\n },\n [minDate, maxDate, isDateUnavailable]\n );\n\n const spanIsRefused = (from: CalendarDate, to: CalendarDate) => {\n const fromParts = parseCalendarDate(from);\n const toParts = parseCalendarDate(to);\n if (!fromParts || !toParts) return true;\n return Boolean(isDateUnavailable && rangeIncludesDate(fromParts, toParts, isDateUnavailable));\n };\n\n const isRangeAcceptable = (range: DateRange) => {\n if (range.start && isUnavailableDate(range.start)) return false;\n if (range.end && isUnavailableDate(range.end)) return false;\n if (range.start && range.end) {\n if (compareCalendarDates(range.end, range.start) < 0) return false;\n return !spanIsRefused(range.start, range.end);\n }\n return true;\n };\n\n /* Each field reports the problem from its own perspective, so whichever endpoint was typed last\n is the one that explains it. Bounds and emptiness are the browser's own validation. */\n const validateStart = (candidate: unknown) => {\n if (typedIssue) return typedIssue === \"start\" ? labels.unavailableRange : null;\n const date = typeof candidate === \"string\" ? normalizeCalendarDate(candidate) : null;\n if (!date) return candidate ? labels.unavailableRange : null;\n if (isDateUnavailable?.(date)) return labels.unavailableRange;\n const end = normalizeCalendarDate(displayedRange.end);\n if (!end) return null;\n if (compareCalendarDates(date, end) > 0) return labels.unavailableRange;\n return spanIsRefused(date, end) ? labels.unavailableRange : null;\n };\n\n const validateEnd = (candidate: unknown) => {\n if (typedIssue) return typedIssue === \"end\" ? labels.unavailableRange : null;\n const date = typeof candidate === \"string\" ? normalizeCalendarDate(candidate) : null;\n if (!date) return candidate ? labels.unavailableRange : null;\n if (isDateUnavailable?.(date)) return labels.unavailableRange;\n const start = normalizeCalendarDate(displayedRange.start);\n if (!start) return null;\n if (compareCalendarDates(date, start) < 0) return labels.unavailableRange;\n return spanIsRefused(start, date) ? labels.unavailableRange : null;\n };\n\n const handleEndpointChange = (endpoint: \"start\" | \"end\", event: ChangeEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n const next = { ...displayedRange, [endpoint]: input.value || null };\n const normalized = normalizeDateRange(next);\n if (input.validity.badInput ||\n (next.start && !normalized.start) || (next.end && !normalized.end) ||\n !isRangeAcceptable(normalized)) {\n setDraft(next);\n setTypedIssue(endpoint);\n return;\n }\n setDraft(null);\n setTypedIssue(null);\n commitRange(normalized);\n };\n\n const handleCalendarChange = (next: DateRange) => {\n if (disabled) return;\n setDraft(null);\n setTypedIssue(null);\n commitRange(next);\n /* A range is chosen when both ends exist; the surface has then done its job. */\n if (next.start && next.end) popupActionsRef.current?.close();\n };\n\n const row = (\n inputRef: React.Ref<HTMLInputElement>,\n inputId: string | undefined,\n inputName: string | undefined,\n inputLabel: string,\n displayedValue: CalendarDate | null,\n invalid: boolean,\n validate: (candidate: unknown) => string | null,\n handleChange: (event: ChangeEvent<HTMLInputElement>) => void\n ) => (\n <Field label={inputLabel} disabled={disabled} invalid={invalid}\n actionsRef={inputRef === startInputRef ? startFieldActions : endFieldActions}\n error={typedIssue === (inputRef === startInputRef ? \"start\" : \"end\") ? labels.unavailableRange : undefined}\n validate={validate} validationMode=\"onChange\">\n <div\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n className={cn(dateFieldRowClassName(disabled))}\n >\n <div className={cn(\"min-w-0 flex-1 overflow-hidden\")}>\n <BaseField.Control\n ref={inputRef === startInputRef ? ref : undefined}\n render={<input type=\"date\" ref={inputRef} />}\n id={inputId}\n name={inputName}\n form={form}\n required={required}\n disabled={disabled}\n min={minDate ?? undefined}\n max={maxDate ?? undefined}\n value={displayedValue ?? \"\"}\n onChange={handleChange}\n className={cn(dateInputClassName)}\n />\n </div>\n <DateFieldTrigger label={`Open ${inputLabel}`} disabled={disabled} />\n </div>\n </Field>\n );\n\n return (\n <fieldset\n disabled={disabled || undefined}\n aria-describedby={describedBy}\n className={cn(\"m-0 min-w-0 p-0\", disabled && state.disabled, className)}\n >\n <legend className={cn(\"p-0 text-sm font-medium\", text.high)}>\n {label}\n {required && (\n <span className={cn(\"ms-1\", tone.text.danger)} aria-hidden=\"true\">\n *\n </span>\n )}\n </legend>\n\n <BasePopover.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n actionsRef={popupActionsRef}\n modal={false}\n >\n <div ref={calendarAnchorRef} className={cn(\"mt-2 grid grid-cols-[repeat(auto-fit,minmax(min(100%,14rem),1fr))] gap-3\")}>\n {row(\n startInputRef,\n id,\n startName,\n startLabel,\n displayedRange.start,\n typedIssue === \"start\" || Boolean(error) || !isRangeAcceptable(currentRange),\n validateStart,\n (event) => handleEndpointChange(\"start\", event)\n )}\n {row(\n endInputRef,\n id ? `${id}-end` : undefined,\n endName,\n endLabel,\n displayedRange.end,\n typedIssue === \"end\" || Boolean(error) || !isRangeAcceptable(currentRange),\n validateEnd,\n (event) => handleEndpointChange(\"end\", event)\n )}\n </div>\n\n <DateCalendarPopup title={label} anchor={calendarAnchorRef}>\n <Calendar\n mode=\"range\"\n value={currentRange}\n onValueChange={handleCalendarChange}\n disabled={disabled}\n min={min}\n max={max}\n isDateUnavailable={isDateUnavailable}\n locale={locale}\n weekStartsOn={weekStartsOn}\n today={today}\n labels={labelsProp}\n />\n </DateCalendarPopup>\n </BasePopover.Root>\n\n {description && (\n <p id={descriptionId} className={cn(\"mt-2 text-xs leading-5\", text.medium)}>\n {description}\n </p>\n )}\n {error && (\n <p id={errorId} className={cn(\"mt-2 text-xs leading-5\", tone.text.danger)}>\n {error}\n </p>\n )}\n </fieldset>\n );\n});\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport default DateRangePicker;\n"],"names":["forwardRef","useMemo","resolveCalendarLabels","useState","normalizeDateRange","normalizeCalendarDate","useRef","useEffect","useId","useDateFormReset","useCallback","compareCalendarDates","parseCalendarDate","rangeIncludesDate","_jsx","Field","_jsxs","cn","dateFieldRowClassName","BaseField","dateInputClassName","DateFieldTrigger","state","text","tone","BasePopover","DateCalendarPopup","Calendar"],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var button = require('@base-ui/react/button');
8
+ var field = require('@base-ui/react/field');
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 ui_common = require('./ui.common.cjs');
14
+ var ui_motion = require('./ui.motion.cjs');
15
+ var fileUpload_rules = require('./fileUpload.rules.cjs');
16
+
17
+ const FileUpload = React.forwardRef(({ label, description, error, files, defaultFiles, onFilesChange, multiple = false, accept, maxSize, maxFiles, disabled = false, onReject, selectLabel = "Select files", removeLabel, clearLabel = "Clear files", className, ...rootProps }, forwardedRef) => {
18
+ const baseId = React.useId();
19
+ const hintId = `${baseId}-hint`;
20
+ const inputRef = React.useRef(null);
21
+ const removalRefs = React.useRef(new Map());
22
+ const clearRef = React.useRef(null);
23
+ const dragDepth = React.useRef(0);
24
+ const [pendingAction, setPendingAction] = React.useState(null);
25
+ const [attempt, setAttempt] = React.useState(0);
26
+ const [dragging, setDragging] = React.useState(false);
27
+ const [announcement, setAnnouncement] = React.useState("");
28
+ const [rejections, setRejections] = React.useState([]);
29
+ const [uncontrolledFiles, setUncontrolledFiles] = React.useState(() => defaultFiles !== null && defaultFiles !== void 0 ? defaultFiles : []);
30
+ const controlled = files !== undefined;
31
+ const selected = controlled ? files : uncontrolledFiles;
32
+ const limits = {
33
+ accept,
34
+ maxSize: fileUpload_rules.resolveMaxSize(maxSize),
35
+ maxFiles: fileUpload_rules.resolveMaxFiles(maxFiles, multiple),
36
+ multiple,
37
+ };
38
+ // A request gets exactly its next committed render. Rejection expires it even if files
39
+ // stays referentially identical, so a later external update cannot consume stale effects.
40
+ React.useEffect(() => {
41
+ var _a;
42
+ if (!pendingAction)
43
+ return;
44
+ setPendingAction(null);
45
+ const { before, next, focus } = pendingAction;
46
+ const accepted = selected.length === next.length &&
47
+ selected.every((file, index) => fileUpload_rules.fileKey(file) === fileUpload_rules.fileKey(next[index]));
48
+ if (!accepted)
49
+ return;
50
+ const beforeKeys = new Set(before.map(fileUpload_rules.fileKey));
51
+ const afterKeys = new Set(selected.map(fileUpload_rules.fileKey));
52
+ const added = selected.filter((file) => !beforeKeys.has(fileUpload_rules.fileKey(file))).length;
53
+ const removed = before.filter((file) => !afterKeys.has(fileUpload_rules.fileKey(file)));
54
+ const parts = [];
55
+ if (removed.length === 1)
56
+ parts.push(`Removed ${removed[0].name}.`);
57
+ else if (removed.length > 1)
58
+ parts.push(`Removed ${removed.length} files.`);
59
+ if (added > 0)
60
+ parts.push(`Added ${added} file${added === 1 ? "" : "s"}.`);
61
+ setAnnouncement(parts.join(" "));
62
+ if (!focus || removed.length === 0)
63
+ return;
64
+ const document = focus.source.ownerDocument;
65
+ if (document.activeElement !== focus.source &&
66
+ (focus.source.isConnected || document.activeElement !== document.body))
67
+ return;
68
+ const row = focus.kind === "row" ? selected[Math.min(focus.index, selected.length - 1)] : null;
69
+ (_a = (row ? removalRefs.current.get(fileUpload_rules.fileKey(row)) : inputRef.current)) === null || _a === void 0 ? void 0 : _a.focus();
70
+ }, [selected, pendingAction]);
71
+ React.useEffect(() => {
72
+ if (disabled) {
73
+ dragDepth.current = 0;
74
+ setDragging(false);
75
+ }
76
+ }, [disabled]);
77
+ const commit = (next, focus) => {
78
+ setPendingAction({ before: selected, next, focus });
79
+ if (!controlled)
80
+ setUncontrolledFiles(next);
81
+ onFilesChange === null || onFilesChange === void 0 ? void 0 : onFilesChange(next);
82
+ };
83
+ const beginAttempt = () => {
84
+ setAttempt((previous) => previous + 1);
85
+ setAnnouncement("");
86
+ };
87
+ const ingest = (incoming) => {
88
+ if (disabled || incoming.length === 0)
89
+ return;
90
+ beginAttempt();
91
+ const { files: next, rejections: refused, accepted } = fileUpload_rules.selectFiles({
92
+ incoming,
93
+ current: selected,
94
+ limits,
95
+ });
96
+ setRejections(refused);
97
+ if (refused.length > 0)
98
+ onReject === null || onReject === void 0 ? void 0 : onReject(refused);
99
+ if (accepted > 0) {
100
+ commit(next);
101
+ }
102
+ };
103
+ const handlePickerChange = (event) => {
104
+ var _a;
105
+ const input = event.currentTarget;
106
+ /* Read the batch before emptying the picker: clearing its value empties its file list too,
107
+ and the `File` objects stay valid afterwards. The picker is never the selection's source
108
+ of truth, so it is emptied after every read and the same file can be chosen again. */
109
+ const incoming = Array.from((_a = input.files) !== null && _a !== void 0 ? _a : []);
110
+ ingest(incoming);
111
+ input.value = "";
112
+ };
113
+ /* Only a drag that carries files is a drop this zone owns: a text or link drag keeps whatever
114
+ the page's own handlers say, and only this element stops the browser from navigating to a
115
+ dropped file. */
116
+ const carriesFiles = (event) => Array.from(event.dataTransfer.types).includes("Files");
117
+ const handleDragEnter = (event) => {
118
+ if (!carriesFiles(event))
119
+ return;
120
+ event.preventDefault();
121
+ if (disabled)
122
+ return;
123
+ dragDepth.current += 1;
124
+ setDragging(true);
125
+ };
126
+ const handleDragOver = (event) => {
127
+ if (!carriesFiles(event))
128
+ return;
129
+ event.preventDefault();
130
+ event.dataTransfer.dropEffect = disabled ? "none" : "copy";
131
+ };
132
+ const handleDragLeave = () => {
133
+ dragDepth.current = Math.max(0, dragDepth.current - 1);
134
+ if (dragDepth.current === 0)
135
+ setDragging(false);
136
+ };
137
+ const handleDrop = (event) => {
138
+ var _a;
139
+ if (!carriesFiles(event))
140
+ return;
141
+ event.preventDefault();
142
+ dragDepth.current = 0;
143
+ setDragging(false);
144
+ ingest(Array.from((_a = event.dataTransfer.files) !== null && _a !== void 0 ? _a : []));
145
+ };
146
+ const removeFile = (index) => {
147
+ const file = selected[index];
148
+ if (disabled || !file)
149
+ return;
150
+ const control = removalRefs.current.get(fileUpload_rules.fileKey(file));
151
+ const focus = control && control === control.ownerDocument.activeElement
152
+ ? { kind: "row", index, source: control } : undefined;
153
+ beginAttempt();
154
+ setRejections([]);
155
+ commit(selected.filter((_, position) => position !== index), focus);
156
+ };
157
+ const clearFiles = () => {
158
+ if (disabled)
159
+ return;
160
+ const control = clearRef.current;
161
+ const focus = control && control === control.ownerDocument.activeElement
162
+ ? { kind: "clear", source: control } : undefined;
163
+ beginAttempt();
164
+ setRejections([]);
165
+ commit([], focus);
166
+ };
167
+ const acceptedTypes = accept === null || accept === void 0 ? void 0 : accept.split(",").map((type) => {
168
+ const value = type.trim();
169
+ if (value.startsWith("."))
170
+ return value.slice(1).toUpperCase();
171
+ if (value === "image/*")
172
+ return "Images";
173
+ if (value === "application/pdf")
174
+ return "PDF";
175
+ return value;
176
+ }).filter(Boolean).join(", ");
177
+ const hint = [
178
+ acceptedTypes || null,
179
+ limits.maxSize !== undefined ? `Up to ${fileUpload_rules.formatBytes(limits.maxSize)} per file` : null,
180
+ multiple
181
+ ? limits.maxFiles !== undefined
182
+ ? `Up to ${limits.maxFiles} file${limits.maxFiles === 1 ? "" : "s"}`
183
+ : null
184
+ : "One file",
185
+ ]
186
+ .filter((part) => part !== null)
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) => {
189
+ const key = fileUpload_rules.fileKey(file);
190
+ const extension = file.name.includes(".") ? file.name.slice(file.name.lastIndexOf(".") + 1) : "";
191
+ const fileType = (extension || file.type.split("/").pop() || "File").toUpperCase();
192
+ return (jsxRuntime.jsxs("li", { className: utils.cn("flex min-w-0 items-start gap-3 py-2 ps-3", ui_common.edge.row, ui_common.text.high), children: [jsxRuntime.jsx("span", { "aria-hidden": "true", className: utils.cn("inline-flex h-11 w-5 shrink-0 items-center [&>svg]:size-5", ui_common.text.medium), children: file.type.startsWith("image/") ? jsxRuntime.jsx(lucideReact.Image, {}) : jsxRuntime.jsx(lucideReact.File, {}) }), jsxRuntime.jsxs("span", { className: utils.cn("flex min-w-0 flex-1 flex-col text-sm leading-6 [overflow-wrap:anywhere]"), children: [jsxRuntime.jsx("span", { children: file.name }), jsxRuntime.jsxs("span", { className: utils.cn("text-xs leading-5", ui_common.text.medium), children: [fileUpload_rules.formatBytes(file.size), " \u00B7 ", fileType] })] }), jsxRuntime.jsx(button.Button, { ref: (node) => {
193
+ if (node)
194
+ removalRefs.current.set(key, node);
195
+ else
196
+ removalRefs.current.delete(key);
197
+ }, type: "button", "aria-label": removeLabel ? removeLabel(file) : `Remove ${file.name}`, disabled: disabled, onClick: () => removeFile(index), className: utils.cn("group inline-flex shrink-0 items-center justify-center", ui_common.density.target, ui_common.shape.circle, ui_common.text.medium, !disabled && "hover:text-sherick-ink", ui_motion.motionFeedback, ui_common.focusRingInset, ui_common.stateLayer.quiet, disabled ? ui_common.state.disabled : ui_common.state.enabled), children: jsxRuntime.jsx("span", { className: utils.cn("inline-flex items-center justify-center", ui_motion.motionInkPress), children: jsxRuntime.jsx(lucideReact.X, { className: utils.cn("size-5"), "aria-hidden": "true" }) }) })] }, key));
198
+ }) }), jsxRuntime.jsx("div", { className: utils.cn("flex justify-end px-3 pb-2 pt-1"), children: jsxRuntime.jsx(Button.default, { ref: clearRef, type: "button", appearance: "text", variant: "danger", icon: jsxRuntime.jsx(lucideReact.Trash2, {}), size: "sm", disabled: disabled, onClick: clearFiles, children: clearLabel }) })] })), hint && (jsxRuntime.jsx("span", { id: hintId, className: utils.cn("mt-2 text-xs leading-5", ui_common.text.medium), children: hint })), description && (jsxRuntime.jsx(field.Field.Description, { className: utils.cn("mt-2 text-xs leading-5", ui_common.text.medium), children: description })), error ? (jsxRuntime.jsx(field.Field.Error, { match: true, className: utils.cn("mt-2 text-xs leading-5 text-sherick-danger"), children: error })) : null, jsxRuntime.jsxs("div", { role: "status", className: utils.cn(rejections.length > 0 && "mt-2 flex flex-col gap-1 text-xs leading-5"), children: [announcement !== "" && jsxRuntime.jsx("span", { className: utils.cn("sr-only"), children: announcement }), rejections.length > 0 && (jsxRuntime.jsx("span", { className: utils.cn("text-sherick-danger"), children: rejections.map((rejection) => rejection.message).join(" ") }, attempt))] })] }));
199
+ });
200
+ FileUpload.displayName = "FileUpload";
201
+
202
+ exports.default = FileUpload;
203
+ //# sourceMappingURL=FileUpload.cjs.map