@bigbinary/neeto-atoms 1.1.9 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DatePicker-DUx9Qggg.js → DatePicker-DYsyV9BJ.js} +120 -280
- package/dist/DatePicker-DYsyV9BJ.js.map +1 -0
- package/dist/{TranslationProvider-DKdbPweu.js → TranslationProvider-CQyQt55W.js} +2 -4
- package/dist/{TranslationProvider-DKdbPweu.js.map → TranslationProvider-CQyQt55W.js.map} +1 -1
- package/dist/cjs/{DatePicker-DRNGTBHW.js → DatePicker-D6a3J1WA.js} +118 -279
- package/dist/cjs/DatePicker-D6a3J1WA.js.map +1 -0
- package/dist/cjs/{TranslationProvider-Cao2ugzJ.js → TranslationProvider-CJlcb83b.js} +2 -4
- package/dist/cjs/{TranslationProvider-Cao2ugzJ.js.map → TranslationProvider-CJlcb83b.js.map} +1 -1
- package/dist/cjs/components/DatePicker.js +1 -1
- package/dist/cjs/components/TranslationProvider.js +1 -1
- package/dist/cjs/components/index.js +2 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/primitives/AlertDialog.js +7 -39
- package/dist/cjs/primitives/AlertDialog.js.map +1 -1
- package/dist/cjs/primitives/index.js +1 -1
- package/dist/components/DatePicker/RangeTimeSection.d.ts +2 -2
- package/dist/components/DatePicker/TimeInput.d.ts +27 -0
- package/dist/components/DatePicker/TimeSection.d.ts +2 -2
- package/dist/components/DatePicker/timeText.d.ts +32 -0
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/TranslationProvider.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/index.js +2 -2
- package/dist/translations/index.d.ts +1 -3
- package/package.json +1 -1
- package/dist/DatePicker-DUx9Qggg.js.map +0 -1
- package/dist/cjs/DatePicker-DRNGTBHW.js.map +0 -1
- package/dist/components/DatePicker/SegmentedTimeInput.d.ts +0 -23
- package/dist/components/DatePicker/segmentedTime.d.ts +0 -58
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker-D6a3J1WA.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calendar.js","../../node_modules/lucide-react/dist/esm/icons/globe.js","../../src/components/DatePicker/constants.ts","../../src/components/DatePicker/utils.ts","../../src/components/DatePicker/TimezoneSelect.tsx","../../src/components/DatePicker/DatePickerFooter.tsx","../../src/components/DatePicker/DatePickerField.tsx","../../src/components/DatePicker/DatePickerTrigger.tsx","../../src/components/DatePicker/timeText.ts","../../src/components/DatePicker/TimeInput.tsx","../../src/components/DatePicker/TimeSection.tsx","../../src/components/DatePicker/MonthPicker.tsx","../../src/components/DatePicker/RangeCalendar.tsx","../../src/components/DatePicker/RangeTimeSection.tsx","../../src/components/DatePicker/useRangePicker.ts","../../src/components/DatePicker/YearPicker.tsx","../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n];\nconst Calendar = createLucideIcon(\"calendar\", __iconNode);\n\nexport { __iconNode, Calendar as default };\n//# sourceMappingURL=calendar.js.map\n","/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n];\nconst Globe = createLucideIcon(\"globe\", __iconNode);\n\nexport { __iconNode, Globe as default };\n//# sourceMappingURL=globe.js.map\n","import type { TimeValue } from \"../TimePicker/types\";\n\nexport const DEFAULT_DATE_FORMAT = \"dd/MM/yyyy\";\nexport const DEFAULT_TIME_FORMAT = \"hh:mm A\";\n\n// Years navigable before/after today in the calendar dropdown when no min/max date is set.\nexport const CALENDAR_NAVIGATION_YEAR_RANGE = 100;\n\nexport const INITIAL_TIME_VALUE: TimeValue = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n};\n\nexport const SIZE_CONFIG = {\n small: {\n trigger: \"h-8 md:h-7\",\n input: \"text-base md:text-xs\",\n icon: \"size-3.5\",\n },\n medium: {\n trigger: \"h-8\",\n input: \"text-base md:text-sm\",\n icon: \"size-4\",\n },\n large: {\n trigger: \"h-10\",\n input: \"text-base md:text-sm\",\n icon: \"size-5\",\n },\n} as const;\n","import pureDayjs from \"dayjs\";\nimport type { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { dayjs } from \"@bigbinary/neeto-commons-frontend/utils\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\n\npureDayjs.extend(customParseFormat);\n\n// `new Date(\"YYYY-MM-DD\")` is UTC midnight, which lands on the previous day west of UTC.\nconst DATE_ONLY_FORMAT = \"YYYY-MM-DD\";\n\nconst parseDateOnly = (value: string): Date | null => {\n const parsed = pureDayjs(value, DATE_ONLY_FORMAT, true);\n\n return parsed.isValid() ? parsed.toDate() : null;\n};\n\n/**\n * Reverse timezone conversion: extract date/time values from a timezone-aware\n * dayjs and create a browser-local Date. This undoes applyTimezone so that\n * Calendar and input display the correct date after a controlled round-trip.\n */\nexport const toBrowserLocalDate = (date: Date): Date => {\n const d = dayjs(date);\n\n return new Date(\n d.year(),\n d.month(),\n d.date(),\n d.hour(),\n d.minute(),\n d.second()\n );\n};\n\nexport const toNativeDate = (value: unknown): Date | null => {\n if (value == null) return null;\n if (value instanceof Date) return value;\n\n if (typeof (value as { toDate?: () => Date }).toDate === \"function\") {\n return toBrowserLocalDate((value as { toDate: () => Date }).toDate());\n }\n\n if (typeof value === \"string\") {\n const dateOnly = parseDateOnly(value);\n if (dateOnly) return dateOnly;\n\n const parsed = new Date(value);\n if (!isNaN(parsed.getTime())) return toBrowserLocalDate(parsed);\n }\n\n return null;\n};\n\nexport const coerceDateValue = (\n value: unknown,\n type: \"date\" | \"range\"\n): Date | [Date | null, Date | null] | null => {\n if (value == null) return null;\n if (type === \"range\" && Array.isArray(value)) {\n return [toNativeDate(value[0]), toNativeDate(value[1])];\n }\n\n return toNativeDate(value);\n};\n\nexport const getInitialCalendarMonth = (\n value: unknown,\n defaultValue: unknown,\n type: \"date\" | \"range\"\n): Date => {\n const initial = coerceDateValue(value ?? defaultValue, type);\n if (initial instanceof Date) return initial;\n if (Array.isArray(initial) && initial[0] instanceof Date) return initial[0];\n\n return new Date();\n};\n\nconst normalizeToDayjsFormat = (fmt: string): string =>\n fmt\n .replace(/\\byyyy\\b/g, \"YYYY\")\n .replace(/\\byy\\b/g, \"YY\")\n .replace(/\\bdd\\b/g, \"DD\")\n .replace(/\\bd\\b/g, \"D\");\n\nconst normalizeToDateFnsFormat = (fmt: string): string =>\n fmt\n .replace(/YYYY/g, \"yyyy\")\n .replace(/YY/g, \"yy\")\n .replace(/DD/g, \"dd\")\n .replace(/\\bD\\b/g, \"d\");\n\n// Rounds to the nearest minute step, staying within the hour as the time\n// field does. With step 5: 9:27 → 9:25, 9:28 → 9:30, 9:58 → 9:55.\nexport const roundToMinuteStep = (date: Date, step: number): Date => {\n const rounded = new Date(date);\n const minutes = Math.min(\n 60 - step,\n Math.round(date.getMinutes() / step) * step\n );\n rounded.setMinutes(minutes, 0, 0);\n\n return rounded;\n};\n\n// e.g. \"India Standard Time (UTC+5:30)\", for the time zone the picker works in.\nexport const getTimezoneLabel = (timezone?: string): string => {\n const zone =\n timezone === \"utc\"\n ? \"UTC\"\n : ((dayjs() as unknown as { $x?: { $timezone?: string } }).$x\n ?.$timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone);\n\n try {\n const zoneName = (timeZoneName: \"long\" | \"longOffset\") =>\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone, timeZoneName })\n .formatToParts(new Date())\n .find(part => part.type === \"timeZoneName\")?.value;\n\n const name = zoneName(\"long\") ?? zone;\n const offset = (zoneName(\"longOffset\") ?? \"GMT\")\n .replace(\"GMT\", \"UTC\")\n .replace(/([+-])0?(\\d+):00$/, \"$1$2\")\n .replace(/([+-])0(\\d)/, \"$1$2\");\n\n return `${name} (${offset === \"UTC\" ? \"UTC+0\" : offset})`;\n } catch {\n return zone;\n }\n};\n\n// Rounds up to the next minute step in local time, e.g. with step 5:\n// 9:02 → 9:05, 9:58 → 10:00. setMinutes carries past the hour.\nexport const roundUpToMinuteStep = (date: Date, step: number): Date => {\n const rounded = new Date(date);\n const hasSeconds = date.getSeconds() > 0 || date.getMilliseconds() > 0;\n const minutes = date.getMinutes() + (hasSeconds ? 1 : 0);\n rounded.setMinutes(Math.ceil(minutes / step) * step, 0, 0);\n\n return rounded;\n};\n\n/**\n * Format a date for display using browser-local time.\n * Calendar and input always show browser-local dates.\n */\nexport const formatDate = (date: Date | null, formatStr: string): string => {\n if (!date) return \"\";\n\n try {\n return pureDayjs(date).format(normalizeToDayjsFormat(formatStr));\n } catch {\n return \"\";\n }\n};\n\n/**\n * Parse a date string using browser-local pureDayjs (not timezone-aware).\n * The user types in browser-local time; timezone conversion happens\n * later in commitValue via applyTimezone.\n */\nexport const parseDate = (str: string, formatStr: string): Date | null => {\n if (!str) return null;\n\n const dayjsFmt = normalizeToDayjsFormat(formatStr);\n const parsed = pureDayjs(str, dayjsFmt);\n if (parsed.isValid()) return parsed.toDate();\n\n const fallbackFormats = [\n \"DD/MM/YYYY\",\n \"MM/DD/YYYY\",\n DATE_ONLY_FORMAT,\n \"DD-MM-YYYY\",\n \"DD/MM/YYYY HH:mm:ss\",\n \"DD/MM/YYYY HH:mm\",\n ];\n\n for (const fmt of fallbackFormats) {\n if (fmt === dayjsFmt) continue;\n\n const attempt = pureDayjs(str, fmt);\n if (attempt.isValid()) return attempt.toDate();\n }\n\n return null;\n};\n\nexport const applyTimeToDate = (date: Date, time: TimeValue): Date => {\n const result = new Date(date);\n result.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);\n\n return result;\n};\n\n/**\n * Reinterpret a native Date's browser-local time values in the user's configured timezone.\n * Formats in browser-local time (pureDayjs), then reparses through timezone-aware dayjs.\n * Matches neetoUI's getTimezoneAppliedDateTime behavior.\n */\nexport const applyTimezone = (date: Date): Date => {\n const dateStr = pureDayjs(date).format(\"YYYY-MM-DD HH:mm:ss\");\n\n return dayjs(dateStr).toDate();\n};\n\nexport const toUserTzDayjs = (date: Date): Dayjs =>\n dayjs(pureDayjs(date).format(\"YYYY-MM-DD HH:mm:ss\"));\n\nexport const toDayjs = (date: Date): Dayjs => dayjs(date);\n\nexport const getDisplayFormat = (\n dateFormat: string,\n timeFormat: string,\n showTime: boolean\n): string => {\n const fmt = showTime ? `${dateFormat} ${timeFormat}` : dateFormat;\n\n return normalizeToDateFnsFormat(fmt);\n};\n\nexport const getDatePlaceholder = (\n dateFormat: string,\n type: \"date\" | \"range\"\n): string => {\n const single = dateFormat.toUpperCase();\n\n return type === \"range\" ? `${single} - ${single}` : single;\n};\n\nexport const isDatePartComplete = (\n part: string,\n maskEnabled: boolean,\n singleDateLen: number\n): boolean => (maskEnabled ? part.length >= singleDateLen : part.length > 0);\n\nexport const parseRangeText = (\n text: string,\n displayFormat: string,\n maskEnabled: boolean,\n singleDateLen: number\n): [Date, Date] | null => {\n const parts = text.split(\" - \");\n if (parts.length !== 2) return null;\n\n if (\n !isDatePartComplete(parts[0], maskEnabled, singleDateLen) ||\n !isDatePartComplete(parts[1], maskEnabled, singleDateLen)\n )\n return null;\n\n const from = parseDate(parts[0], displayFormat);\n const to = parseDate(parts[1], displayFormat);\n\n return from && to ? [from, to] : null;\n};\n\nexport const startOfDay = (date: Date): Date =>\n new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\nexport const startOfWeek = (date: Date, weekStartsOn = 1): Date => {\n const d = new Date(date);\n const diff = (d.getDay() - weekStartsOn + 7) % 7;\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n\n return d;\n};\n\nexport const weekDaysFrom = (start: Date): Date[] =>\n Array.from({ length: 7 }, (_, i) => {\n const d = new Date(start);\n d.setDate(start.getDate() + i);\n\n return d;\n });\n\nexport const isMonthDisabled = (\n monthDate: Date,\n minDate?: Date,\n maxDate?: Date\n): boolean => {\n const monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1);\n const monthEnd = new Date(\n monthDate.getFullYear(),\n monthDate.getMonth() + 1,\n 0,\n 23,\n 59,\n 59,\n 999\n );\n if (maxDate && monthStart > maxDate) return true;\n if (minDate && monthEnd < minDate) return true;\n\n return false;\n};\n\nexport const isYearDisabled = (\n yearDate: Date,\n minDate?: Date,\n maxDate?: Date\n): boolean => {\n const yearStart = new Date(yearDate.getFullYear(), 0, 1);\n const yearEnd = new Date(yearDate.getFullYear(), 11, 31, 23, 59, 59, 999);\n if (maxDate && yearStart > maxDate) return true;\n if (minDate && yearEnd < minDate) return true;\n\n return false;\n};\n\nexport const buildMonth = (year: number, month: number): Date =>\n new Date(year, month, 1);\n\nexport const isSameMonth = (a: Date | null, b: Date): boolean =>\n !!a && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a: Date | null, b: Date | null): boolean =>\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nexport const orderRange = (\n from: Date | null,\n to: Date | null\n): [Date | null, Date | null] => {\n if (from && to && from.getTime() > to.getTime()) return [to, from];\n\n return [from, to];\n};\n\nexport const parseGridcellDay = (target: EventTarget | null): Date | null => {\n const el = target as HTMLElement | null;\n const cell = el?.closest('[role=\"gridcell\"][data-day]');\n const dayAttr = cell?.getAttribute(\"data-day\");\n if (!dayAttr) return null;\n\n const dateOnly = parseDateOnly(dayAttr);\n if (dateOnly) return dateOnly;\n\n const parsed = new Date(dayAttr);\n\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n};\n\nexport const computeRangePreview = ({\n pendingRange,\n committed,\n hoveredDate,\n rangeStep,\n}: {\n pendingRange: [Date | null, Date | null] | null;\n committed: [Date | null, Date | null] | null;\n hoveredDate: Date | null;\n rangeStep: \"from\" | \"to\";\n}): { from: Date | null; to: Date | null } => {\n let from = pendingRange ? pendingRange[0] : (committed?.[0] ?? null);\n let to = pendingRange ? pendingRange[1] : (committed?.[1] ?? null);\n\n // Hovering previews what a click on that day would select, except that a\n // complete range stays in view until the next click starts a new one.\n if (hoveredDate) {\n if (rangeStep === \"from\") {\n if (!(from && to)) {\n from = hoveredDate;\n if (to && hoveredDate.getTime() > to.getTime()) to = null;\n }\n } else if (!isSameDay(from, hoveredDate)) {\n to = hoveredDate;\n if (from && hoveredDate.getTime() < from.getTime()) from = null;\n }\n }\n\n [from, to] = orderRange(from, to);\n\n return { from, to };\n};\n\nexport const decadeStartFor = (year: number): number =>\n Math.floor(year / 10) * 10;\n","import React from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface TimezoneSelectProps {\n value?: string;\n onChange: (tz: string | undefined) => void;\n className?: string;\n}\n\nconst TIMEZONE_OPTIONS = [\n { label: \"Local\", value: \"\" },\n { label: \"UTC\", value: \"utc\" },\n] as const;\n\nconst TimezoneSelect: React.FC<TimezoneSelectProps> = ({\n value,\n onChange,\n className,\n}) => (\n <div className={cn(\"flex items-center gap-1.5 text-sm\", className)}>\n <span className=\"text-muted-foreground text-xs\">Timezone</span>\n <select\n data-testid=\"timezone-select\"\n value={value ?? \"\"}\n onChange={e => onChange(e.target.value || undefined)}\n className={cn(\n \"rounded-md border border-input bg-background px-2 py-0.5 text-xs\",\n \"focus:outline-none focus:ring-1 focus:ring-ring\"\n )}\n aria-label=\"Select timezone\"\n >\n {TIMEZONE_OPTIONS.map(opt => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n);\n\nTimezoneSelect.displayName = \"TimezoneSelect\";\n\nexport { TimezoneSelect };\n","import React from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { TimezoneSelect } from \"./TimezoneSelect\";\n\ninterface DatePickerFooterProps {\n showTime?: boolean;\n needConfirm?: boolean;\n timezone?: string;\n onTimezoneChange?: (tz: string | undefined) => void;\n nowDisabled?: boolean;\n showNow?: boolean;\n onNow: () => void;\n onOk: () => void;\n okDisabled?: boolean;\n className?: string;\n}\n\nconst DatePickerFooter: React.FC<DatePickerFooterProps> = ({\n showTime,\n needConfirm,\n timezone,\n onTimezoneChange,\n nowDisabled,\n showNow = true,\n onNow,\n onOk,\n okDisabled = false,\n className,\n}) => {\n const showOkButton = showTime || needConfirm;\n\n return (\n <div\n className={cn(\n \"flex items-center border-t border-border px-3 py-2\",\n className\n )}\n >\n {showNow && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={nowDisabled}\n onClick={onNow}\n className=\"text-xs\"\n >\n Now\n </Button>\n )}\n <div className=\"flex-1\" />\n {onTimezoneChange && (\n <TimezoneSelect\n value={timezone}\n onChange={onTimezoneChange}\n className=\"me-2\"\n />\n )}\n {showOkButton && (\n <Button\n size=\"sm\"\n disabled={okDisabled}\n onClick={onOk}\n className=\"text-xs\"\n >\n OK\n </Button>\n )}\n </div>\n );\n};\n\nDatePickerFooter.displayName = \"DatePickerFooter\";\n\nexport { DatePickerFooter };\n","import React, { forwardRef } from \"react\";\n\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\n\ninterface DatePickerFieldProps {\n disabled: boolean;\n error: React.ReactNode | undefined;\n className?: string;\n label?: React.ReactNode;\n required?: boolean;\n helpText?: React.ReactNode;\n labelProps?: Record<string, unknown>;\n errorId: string;\n helpTextId: string;\n errorTestId?: string;\n children: React.ReactNode;\n}\n\nexport const DatePickerField = forwardRef<HTMLDivElement, DatePickerFieldProps>(\n (\n {\n disabled,\n error,\n className,\n label,\n required,\n helpText,\n labelProps,\n errorId,\n helpTextId,\n errorTestId,\n children,\n },\n ref\n ) => (\n <Field\n ref={ref}\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {label && (\n <FieldLabel\n {...(labelProps as React.ComponentProps<typeof FieldLabel>)}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <FieldContent>\n {children}\n {!!error && (\n <FieldError id={errorId} data-testid={errorTestId}>\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n )\n);\n\nDatePickerField.displayName = \"DatePickerField\";\n","import React, { forwardRef } from \"react\";\n\nimport { CalendarIcon, X } from \"lucide-react\";\n\nimport { PopoverAnchor } from \"src/primitives/Popover\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface DatePickerTriggerProps {\n containerRef: React.RefObject<HTMLDivElement | null>;\n inputRef: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n error: React.ReactNode | undefined;\n hasField: boolean;\n className?: string;\n triggerSizeClass: string;\n inputSizeClass: string;\n iconSizeClass: string;\n label?: React.ReactNode;\n ariaDescribedBy?: string;\n inputTestId?: string;\n placeholder: string;\n inputText: string;\n allowClear: boolean;\n timezone?: string;\n onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onInputKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n onInputFocus: () => void;\n onInputBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n onClear: (e: React.MouseEvent) => void;\n}\n\nexport const DatePickerTrigger = forwardRef<\n HTMLDivElement,\n DatePickerTriggerProps\n>(\n (\n {\n containerRef,\n inputRef,\n disabled,\n error,\n hasField,\n className,\n triggerSizeClass,\n inputSizeClass,\n iconSizeClass,\n label,\n ariaDescribedBy,\n inputTestId,\n placeholder,\n inputText,\n allowClear,\n timezone,\n onInputChange,\n onInputKeyDown,\n onInputFocus,\n onInputBlur,\n onClear,\n },\n _ref\n ) => (\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full cursor-text items-center gap-2 rounded-md border border-input bg-transparent pe-8 ps-3\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n triggerSizeClass,\n !hasField && className\n )}\n onClick={() => {\n if (disabled) return;\n\n inputRef.current?.focus();\n }}\n >\n <CalendarIcon\n className={cn(\"shrink-0 text-muted-foreground\", iconSizeClass)}\n />\n <input\n ref={inputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={(label as string) || \"Pick a date\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n data-testid={inputTestId}\n placeholder={placeholder}\n value={inputText}\n onChange={onInputChange}\n onKeyDown={onInputKeyDown}\n onFocus={onInputFocus}\n onBlur={onInputBlur}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n inputSizeClass\n )}\n />\n {timezone && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {timezone.toUpperCase()}\n </span>\n )}\n {allowClear && (\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={onClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(inputText && !disabled) && \"invisible\"\n )}\n aria-label=\"Clear date\"\n tabIndex={-1}\n >\n <X className={iconSizeClass} data-testid=\"date-time-clear-icon\" />\n </button>\n )}\n </div>\n </PopoverAnchor>\n )\n);\n\nDatePickerTrigger.displayName = \"DatePickerTrigger\";\n","import type { TimeValue } from \"../TimePicker/types\";\nimport { padNumber, to12Hour, to24Hour } from \"../TimePicker/utils\";\n\n/**\n * Helpers for the free-text time field. Every function here is pure.\n *\n * `step` is the minute increment (e.g. 5): parsed and loaded minutes snap to\n * it. 1, the default, leaves minutes as typed.\n */\n\nexport type TimeTextError = \"timeRequired\";\n\nconst MINUTES_IN_DAY = 24 * 60;\n\n/**\n * Rounds minutes to the nearest step, staying within the hour. With step 5:\n * 27 → 25, 28 → 30, 58 → 55. With step 1 they are unchanged.\n */\nexport const snapMinute = (minutes: number, step = 1): number =>\n Math.min(60 - step, Math.round(minutes / step) * step);\n\nexport const snapTimeValue = (value: TimeValue, step = 1): TimeValue => ({\n hours: value.hours,\n minutes: snapMinute(value.minutes, step),\n seconds: 0,\n});\n\nexport const toMinutes = (value: TimeValue): number =>\n value.hours * 60 + value.minutes;\n\nexport const fromMinutes = (minutes: number): TimeValue => {\n const clamped = Math.max(0, Math.min(MINUTES_IN_DAY - 1, minutes));\n\n return { hours: Math.floor(clamped / 60), minutes: clamped % 60, seconds: 0 };\n};\n\n/** The last time of the day on the step's grid: 11:59 PM, or 11:55 PM for 5. */\nexport const lastMinuteOfDay = (step = 1): number =>\n 23 * 60 + Math.floor(59 / step) * step;\n\n/** e.g. \"9:30 AM\". */\nexport const formatTimeText = (value: TimeValue): string => {\n const { hour12, period } = to12Hour(value.hours);\n\n return `${hour12}:${padNumber(value.minutes)} ${period}`;\n};\n\n/**\n * Reads what people type into a time field. Without \"a\"/\"p\" the hour is read\n * on the 24-hour clock, so \"9\" is 9 AM and \"21\" is 9 PM.\n *\n * \"9\" → 9:00 AM, \"930\" → 9:30 AM, \"113\" → 11:30 AM, \"1122p\" → 11:22 PM,\n * \"9:30 pm\" → 9:30 PM, \"1 15\" → 1:15 AM, \"11:3\" → 11:30 AM, \"21:30\" → 9:30 PM,\n * \"12a\" → 12:00 AM.\n *\n * Returns null when the text is empty and \"invalid\" when it can't be read.\n */\nexport const parseTimeText = (\n text: string,\n step = 1\n): TimeValue | null | \"invalid\" => {\n const normalized = text\n .toLowerCase()\n .trim()\n // A space between digits separates hour and minutes: \"1 15\" is 1:15.\n .replace(/(\\d)\\s+(?=\\d)/g, \"$1:\")\n .replace(/\\s+/g, \"\")\n .replace(/([ap])\\.?m?\\.?$/, \"$1\");\n if (!normalized) return null;\n\n const match = normalized.match(/^(\\d{1,4})(?:[:.](\\d{0,2}))?([ap])?$/);\n if (!match) return \"invalid\";\n\n const [, digits, minuteText, period] = match;\n let hourText = digits;\n let minutes = 0;\n\n if (minuteText !== undefined) {\n if (digits.length > 2) return \"invalid\";\n\n // A lone minute digit is the tens: \"11:3\" is 11:30.\n minutes = Number(minuteText.padEnd(2, \"0\"));\n } else if (digits.length === 4) {\n hourText = digits.slice(0, 2);\n minutes = Number(digits.slice(2));\n } else if (digits.length === 3) {\n // \"113\" is 11:30, not 1:13: a leading 10–12 is the hour and the last digit\n // the tens of the minutes. Otherwise it's h:mm, so \"930\" is 9:30.\n const isTwoDigitHour = /^1[0-2][0-5]$/.test(digits);\n hourText = isTwoDigitHour ? digits.slice(0, 2) : digits.slice(0, 1);\n minutes = isTwoDigitHour ? Number(digits[2]) * 10 : Number(digits.slice(1));\n }\n\n let hours = Number(hourText);\n if (minutes > 59) return \"invalid\";\n\n if (period) {\n if (hours < 1 || hours > 12) return \"invalid\";\n\n hours = to24Hour(hours, period === \"a\" ? \"AM\" : \"PM\");\n } else if (hours > 23) {\n return \"invalid\";\n }\n\n return snapTimeValue({ hours, minutes, seconds: 0 }, step);\n};\n\nexport const getTimeTextError = (\n parsed: TimeValue | null | \"invalid\"\n): TimeTextError | null => (parsed === null ? \"timeRequired\" : null);\n","import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\n\nimport { useTranslation } from \"react-i18next\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\nimport { timeValueEquals } from \"../TimePicker/utils\";\nimport {\n formatTimeText,\n getTimeTextError,\n parseTimeText,\n snapTimeValue,\n type TimeTextError,\n} from \"./timeText\";\n\ninterface TimeInputProps {\n value: TimeValue;\n /** Minute increment; minutes snap to it. Omit to take minutes as typed. */\n minuteStep?: number;\n onChange: (value: TimeValue) => void;\n /** Reports why the text can't be read as a time, or null once it can. */\n onErrorChange: (error: TimeTextError | null) => void;\n invalid?: boolean;\n disabled?: boolean;\n autoFocus?: boolean;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n \"data-testid\"?: string;\n}\n\nexport interface TimeInputHandle {\n /** Focuses the field with its text selected, ready to type over. */\n focus: () => void;\n}\n\nconst FALLBACK_TIME: TimeValue = { hours: 12, minutes: 0, seconds: 0 };\n\n/**\n * A text field that reads times however they are typed: \"930\", \"1122p\",\n * \"9:30 pm\", \"21:30\". The text is tidied to \"11:22 PM\" on leaving the field.\n */\nconst TimeInput = forwardRef<TimeInputHandle, TimeInputProps>(\n (\n {\n value,\n minuteStep,\n onChange,\n onErrorChange,\n invalid = false,\n disabled = false,\n autoFocus = false,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\n \"data-testid\": dataTestId = \"datepicker-time-input\",\n },\n ref\n ) => {\n const { t } = useTranslation();\n const step = minuteStep ?? 1;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const isPointerFocusRef = useRef(false);\n const lastEmittedRef = useRef<TimeValue>(value);\n\n const [text, setText] = useState(() =>\n formatTimeText(snapTimeValue(value, step))\n );\n\n const emit = (next: TimeValue) => {\n if (timeValueEquals(next, lastEmittedRef.current)) return;\n\n lastEmittedRef.current = next;\n onChange(next);\n };\n\n // Reload only when the value changes from outside (\"Now\", the start time\n // moving the end), not when it echoes back what the user typed.\n useEffect(() => {\n if (timeValueEquals(value, lastEmittedRef.current)) return;\n\n lastEmittedRef.current = value;\n setText(formatTimeText(value));\n onErrorChange(null);\n }, [value]);\n\n // With a minute step, minutes snap on load: a saved 10:27 is reported back\n // as 10:25 when the step is 5.\n useEffect(() => {\n const snapped = snapTimeValue(value, step);\n if (!timeValueEquals(snapped, value)) emit(snapped);\n // Runs once on mount; later changes go through `emit`.\n }, []);\n\n const focusAndSelect = () => {\n inputRef.current?.focus();\n inputRef.current?.select();\n };\n\n useEffect(() => {\n if (autoFocus) focusAndSelect();\n }, [autoFocus]);\n\n useImperativeHandle(ref, () => ({ focus: focusAndSelect }));\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextText = event.target.value;\n setText(nextText);\n\n const parsed = parseTimeText(nextText, step);\n onErrorChange(getTimeTextError(parsed));\n if (parsed !== null && parsed !== \"invalid\") emit(parsed);\n };\n\n // \"1122p\" reads \"11:22 PM\" once the field is left or Enter is pressed.\n // Text that isn't a time, like \"25\", falls back to 12:00 PM.\n const tidy = () => {\n const parsed = parseTimeText(text, step);\n if (parsed === null) return;\n\n const next = parsed === \"invalid\" ? FALLBACK_TIME : parsed;\n setText(formatTimeText(next));\n onErrorChange(null);\n emit(next);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key !== \"Enter\") return;\n\n // Never submit a surrounding form from here.\n event.preventDefault();\n event.stopPropagation();\n tidy();\n };\n\n const handleFocus = () => {\n // Tabbing in selects the text so typing replaces it; a click keeps the\n // caret where it landed.\n if (!isPointerFocusRef.current) inputRef.current?.select();\n\n isPointerFocusRef.current = false;\n };\n\n return (\n <input\n ref={inputRef}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid || undefined}\n aria-label={ariaLabel ?? t(\"neetoatoms.datePicker.timeField\", \"Time\")}\n autoComplete=\"off\"\n data-testid={dataTestId}\n disabled={disabled}\n placeholder={t(\"neetoatoms.datePicker.timePlaceholder\", \"Time\")}\n spellCheck={false}\n type=\"text\"\n value={text}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 text-sm tabular-nums outline-none placeholder:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n invalid && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n onBlur={tidy}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onMouseDown={() => {\n if (document.activeElement !== inputRef.current) {\n isPointerFocusRef.current = true;\n }\n }}\n />\n );\n }\n);\n\nTimeInput.displayName = \"TimeInput\";\n\nexport { TimeInput };\n","import React, { useCallback, useId, useState } from \"react\";\n\nimport { Clock, Globe } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Label } from \"src/primitives/Label\";\nimport { Switch } from \"src/primitives/Switch\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\nimport { TimeInput } from \"./TimeInput\";\nimport type { TimeTextError } from \"./timeText\";\n\ninterface TimeSectionProps {\n value: TimeValue;\n /** Minute increment; also shows the hint naming it. Omit for any minute. */\n minuteStep?: number;\n onChange: (value: TimeValue) => void;\n /** Reports whether the typed time is incomplete, so OK can refuse it. */\n onErrorChange: (hasError: boolean) => void;\n /** Show the error even before OK is retried, e.g. right after OK. */\n showError: boolean;\n /** Shows the \"Add time\" switch; without it the time is always on. */\n optional: boolean;\n hasTime: boolean;\n onHasTimeChange: (hasTime: boolean) => void;\n /** e.g. \"India Standard Time (UTC+5:30)\"; hidden when null. */\n timezoneLabel: string | null;\n disabled?: boolean;\n className?: string;\n}\n\nexport const ERROR_DEFAULTS: Record<TimeTextError, string> = {\n timeRequired: \"Enter a time, or turn off Add time.\",\n};\n\n// Two example times on the step's grid for the hint: 1:05 and 1:30 for 5,\n// 1:20 and 1:40 for 20, 1:00 and 1:30 for 30.\nexport const stepExamples = (step: number): [string, string] => {\n const pad = (minutes: number) => `1:${String(minutes).padStart(2, \"0\")}`;\n if (step * 2 >= 60) return [pad(0), pad(step)];\n\n return [pad(step), pad(30 % step === 0 && step < 30 ? 30 : step * 2)];\n};\n\nconst TimeSection: React.FC<TimeSectionProps> = ({\n value,\n minuteStep,\n onChange,\n onErrorChange,\n showError,\n optional,\n hasTime,\n onHasTimeChange,\n timezoneLabel,\n disabled = false,\n className,\n}) => {\n const { t } = useTranslation();\n const id = useId();\n const switchId = `datepicker-add-time-${id}`;\n const hintId = `datepicker-time-hint-${id}`;\n const errorId = `datepicker-time-error-${id}`;\n const [error, setError] = useState<TimeTextError | null>(null);\n // Focus the field when the user turns the switch on, not when it opens on.\n const [focusOnMount, setFocusOnMount] = useState(false);\n\n const handleErrorChange = useCallback(\n (nextError: TimeTextError | null) => {\n setError(nextError);\n onErrorChange(!!nextError);\n },\n [onErrorChange]\n );\n\n const handleHasTimeChange = (checked: boolean) => {\n setFocusOnMount(checked);\n if (!checked) {\n setError(null);\n onErrorChange(false);\n }\n onHasTimeChange(checked);\n };\n\n const isTimeOn = !optional || hasTime;\n const showHint = (minuteStep ?? 1) > 1;\n const errorMessage =\n isTimeOn && showError && error\n ? t(`neetoatoms.datePicker.errors.${error}`, ERROR_DEFAULTS[error])\n : null;\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n {optional && (\n <div className=\"flex items-center justify-between gap-3\">\n <Label\n htmlFor={switchId}\n className=\"flex items-center gap-2 font-medium\"\n >\n <Clock aria-hidden className=\"size-4 text-muted-foreground\" />\n {t(\"neetoatoms.datePicker.addTime\", \"Add time\")}\n </Label>\n <Switch\n id={switchId}\n checked={hasTime}\n data-testid=\"datepicker-add-time-switch\"\n disabled={disabled}\n onCheckedChange={handleHasTimeChange}\n />\n </div>\n )}\n {isTimeOn && (\n <div className=\"flex flex-col gap-1.5\">\n <TimeInput\n aria-describedby={\n [showHint ? hintId : null, errorMessage ? errorId : null]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n autoFocus={focusOnMount}\n disabled={disabled}\n invalid={!!errorMessage}\n minuteStep={minuteStep}\n value={value}\n onChange={onChange}\n onErrorChange={handleErrorChange}\n />\n {showHint && (\n <p\n id={hintId}\n className=\"text-xs text-muted-foreground\"\n data-testid=\"datepicker-time-hint\"\n >\n {t(\"neetoatoms.datePicker.timeHint\", {\n step: minuteStep,\n first: stepExamples(minuteStep as number)[0],\n second: stepExamples(minuteStep as number)[1],\n defaultValue:\n \"Only {{step}}-minute steps are allowed, like {{first}} or {{second}}.\",\n })}\n </p>\n )}\n {errorMessage && (\n <p\n id={errorId}\n className=\"text-xs text-destructive\"\n data-testid=\"datepicker-time-error\"\n role=\"alert\"\n >\n {errorMessage}\n </p>\n )}\n {timezoneLabel && (\n <p\n className=\"mt-1 flex items-center gap-2 text-xs text-muted-foreground\"\n data-testid=\"datepicker-timezone\"\n >\n <Globe aria-hidden className=\"size-3.5 shrink-0\" />\n {timezoneLabel}\n </p>\n )}\n </div>\n )}\n </div>\n );\n};\n\nTimeSection.displayName = \"TimeSection\";\n\nexport { TimeSection };\n","import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { buildMonth, isSameMonth } from \"./utils\";\n\ninterface MonthPickerProps {\n /** Currently selected date (used to highlight the active month). */\n value: Date | null;\n /** Year currently shown in the grid. */\n displayedYear: number;\n /** Callback when the user navigates to a different year. */\n onYearChange: (year: number) => void;\n /** Callback when a month is picked. */\n onSelect: (date: Date) => void;\n /** Predicate to disable an entire month (any day in it returning true disables the month). */\n isDisabled?: (date: Date) => boolean;\n /** Locale code for month-name formatting. */\n locale?: string;\n}\n\nconst MonthPicker = ({\n value,\n displayedYear,\n onYearChange,\n onSelect,\n isDisabled,\n locale,\n}: MonthPickerProps) => {\n const months = Array.from({ length: 12 }, (_, m) =>\n buildMonth(displayedYear, m)\n );\n const monthName = (date: Date) =>\n date.toLocaleString(locale, { month: \"short\" });\n\n return (\n <div className=\"bg-background flex w-[16rem] flex-col gap-3 p-2\">\n <div className=\"flex items-center justify-between\">\n <Button\n aria-label=\"Previous year\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(displayedYear - 1)}\n >\n <ChevronLeftIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n <span className=\"text-sm font-medium\">{displayedYear}</span>\n <Button\n aria-label=\"Next year\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(displayedYear + 1)}\n >\n <ChevronRightIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map(monthDate => {\n const disabled = isDisabled?.(monthDate) ?? false;\n const selected = isSameMonth(value, monthDate);\n\n return (\n <button\n aria-pressed={selected}\n className={cn(\n \"rounded-md py-2 text-sm transition-colors\",\n \"hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50\",\n selected &&\n \"bg-primary text-primary-foreground hover:bg-primary\"\n )}\n disabled={disabled}\n key={monthDate.getMonth()}\n type=\"button\"\n onClick={() => onSelect(monthDate)}\n >\n {monthName(monthDate)}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport { MonthPicker };\n","import type React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\n\nimport { Calendar } from \"src/primitives/Calendar\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface RangeCalendarProps {\n todayDate: Date;\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: Date;\n onMonthChange: (date: Date) => void;\n selected: DateRange | undefined;\n onSelect: (range: DateRange | undefined, triggerDate: Date) => void;\n disabled: (date: Date) => boolean;\n startMonth: Date;\n endMonth: Date;\n onHoverIn: (e: React.MouseEvent<HTMLElement>) => void;\n onHoverOut: () => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\n numberOfMonths?: number;\n className?: string;\n}\n\nexport const RangeCalendar = ({\n todayDate,\n weekStartsOn,\n month,\n onMonthChange,\n selected,\n onSelect,\n disabled,\n startMonth,\n endMonth,\n onHoverIn,\n onHoverOut,\n onKeyDown,\n numberOfMonths = 2,\n className,\n}: RangeCalendarProps) => (\n <div onKeyDown={onKeyDown} onMouseLeave={onHoverOut} onMouseOver={onHoverIn}>\n <Calendar\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n captionLayout=\"dropdown\"\n today={todayDate}\n weekStartsOn={weekStartsOn}\n className={cn(\n \"[&_[data-outside][data-selected=true]]:!bg-transparent [&_[data-outside][data-selected=true]]:after:!bg-transparent [&_[data-outside]_button]:!bg-transparent [&_[data-outside]_button]:!text-muted-foreground/40\",\n className\n )}\n month={month}\n onMonthChange={onMonthChange}\n selected={selected}\n onSelect={onSelect}\n disabled={disabled}\n startMonth={startMonth}\n endMonth={endMonth}\n />\n </div>\n);\n","import React, { useCallback, useEffect, useId, useState } from \"react\";\n\nimport { Globe } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\nimport { TimeInput, type TimeInputHandle } from \"./TimeInput\";\nimport {\n fromMinutes,\n lastMinuteOfDay,\n toMinutes,\n type TimeTextError,\n} from \"./timeText\";\nimport { ERROR_DEFAULTS, stepExamples } from \"./TimeSection\";\nimport type { RangeEndpoint } from \"./useRangePicker\";\n\ninterface RangeTimeSectionProps {\n /** The picked days, formatted, e.g. \"15/11/2026\"; empty until picked. */\n fromDateLabel: string;\n toDateLabel: string;\n /** The end falls on the start's day, picked or not; End reads \"Same day\". */\n isEndOnStartDay: boolean;\n fromValue: TimeValue;\n toValue: TimeValue;\n onFromChange: (value: TimeValue) => void;\n onToChange: (value: TimeValue) => void;\n /**\n * The endpoint the next calendar click sets; its heading is highlighted.\n * Only the headings switch it, so typing a time doesn't redirect the click.\n */\n activeEndpoint: RangeEndpoint;\n onEndpointSelect: (endpoint: RangeEndpoint) => void;\n /** Minute increment; also shows the hint naming it. Omit for any minute. */\n minuteStep?: number;\n /** Reports whether either typed time is incomplete, so OK can refuse it. */\n onErrorChange: (hasError: boolean) => void;\n /** Show incomplete-time errors, e.g. right after OK. */\n showError: boolean;\n /** The end is not after the start: both days are the same. */\n isOrderInvalid: boolean;\n /** e.g. \"India Standard Time (UTC+5:30)\"; hidden when null. */\n timezoneLabel: string | null;\n /** Lets the picker move focus to the start time. */\n fromTimeRef?: React.Ref<TimeInputHandle>;\n disabled?: boolean;\n className?: string;\n}\n\nconst SAME_DAY_END_GAP = 30;\n\nconst ENDPOINT_LABELS: Record<RangeEndpoint, string> = {\n from: \"Start\",\n to: \"End\",\n};\n\nconst RangeTimeSection: React.FC<RangeTimeSectionProps> = ({\n fromDateLabel,\n toDateLabel,\n isEndOnStartDay,\n fromValue,\n toValue,\n onFromChange,\n onToChange,\n activeEndpoint,\n onEndpointSelect,\n minuteStep,\n onErrorChange,\n showError,\n isOrderInvalid,\n timezoneLabel,\n fromTimeRef,\n disabled = false,\n className,\n}) => {\n const { t } = useTranslation();\n const id = useId();\n const hintId = `datepicker-time-hint-${id}`;\n const orderErrorId = `datepicker-time-order-error-${id}`;\n const [errors, setErrors] = useState<\n Record<RangeEndpoint, TimeTextError | null>\n >({ from: null, to: null });\n\n const hasError = !!(errors.from || errors.to);\n\n useEffect(() => {\n onErrorChange(hasError);\n }, [hasError, onErrorChange]);\n\n const handleErrorChange = useCallback(\n (endpoint: RangeEndpoint, error: TimeTextError | null) =>\n setErrors(previous => ({ ...previous, [endpoint]: error })),\n []\n );\n\n const handleFromErrorChange = useCallback(\n (error: TimeTextError | null) => handleErrorChange(\"from\", error),\n [handleErrorChange]\n );\n\n const handleToErrorChange = useCallback(\n (error: TimeTextError | null) => handleErrorChange(\"to\", error),\n [handleErrorChange]\n );\n\n const showHint = (minuteStep ?? 1) > 1;\n\n // On a same-day range, setting the start puts the end 30 minutes after it\n // (rounded up to the minute step), stopping at the last time of the day.\n const handleFromChange = (value: TimeValue) => {\n onFromChange(value);\n if (!isEndOnStartDay) return;\n\n const step = minuteStep ?? 1;\n const gap = Math.ceil(SAME_DAY_END_GAP / step) * step;\n onToChange(\n fromMinutes(Math.min(toMinutes(value) + gap, lastMinuteOfDay(step)))\n );\n };\n\n const endpoints = [\n {\n endpoint: \"from\" as const,\n dateLabel: fromDateLabel,\n value: fromValue,\n onChange: handleFromChange,\n onFieldErrorChange: handleFromErrorChange,\n },\n {\n endpoint: \"to\" as const,\n dateLabel: isEndOnStartDay\n ? t(\"neetoatoms.datePicker.sameDay\", \"Same day\")\n : toDateLabel,\n value: toValue,\n onChange: onToChange,\n onFieldErrorChange: handleToErrorChange,\n },\n ];\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n <div className=\"grid grid-cols-2 gap-3\">\n {endpoints.map(\n ({ endpoint, dateLabel, value, onChange, onFieldErrorChange }) => {\n const isActive = endpoint === activeEndpoint;\n const endpointLabel = t(\n `neetoatoms.datePicker.${endpoint === \"from\" ? \"start\" : \"end\"}`,\n ENDPOINT_LABELS[endpoint]\n );\n const error = errors[endpoint];\n const errorId = `datepicker-${endpoint}-time-error-${id}`;\n const errorMessage =\n showError && error\n ? t(\n `neetoatoms.datePicker.errors.${error}`,\n ERROR_DEFAULTS[error]\n )\n : null;\n const isInvalid =\n !!errorMessage || (endpoint === \"to\" && isOrderInvalid);\n\n return (\n <div key={endpoint} className=\"flex min-w-0 flex-col gap-1.5\">\n <button\n type=\"button\"\n aria-pressed={isActive}\n // A pointer aid for the calendar: Tab goes from one time\n // field straight to the next.\n tabIndex={-1}\n data-testid={`datepicker-${endpoint}-endpoint`}\n disabled={disabled}\n className={cn(\n \"flex min-w-0 items-baseline gap-1.5 rounded-sm text-start text-sm outline-none\",\n \"focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n isActive\n ? \"font-medium text-foreground\"\n : \"text-muted-foreground hover:text-foreground\"\n )}\n onClick={() => onEndpointSelect(endpoint)}\n >\n <span>{endpointLabel}</span>\n <span className=\"truncate text-xs font-normal text-muted-foreground\">\n {dateLabel ||\n t(\"neetoatoms.datePicker.pickADay\", \"Pick a day\")}\n </span>\n </button>\n <TimeInput\n aria-describedby={\n [\n showHint ? hintId : null,\n errorMessage ? errorId : null,\n endpoint === \"to\" && isOrderInvalid ? orderErrorId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n aria-label={t(\n `neetoatoms.datePicker.${endpoint === \"from\" ? \"startTime\" : \"endTime\"}`,\n `${ENDPOINT_LABELS[endpoint]} time`\n )}\n data-testid={`datepicker-${endpoint}-time-input`}\n disabled={disabled}\n invalid={isInvalid}\n minuteStep={minuteStep}\n ref={endpoint === \"from\" ? fromTimeRef : undefined}\n value={value}\n onChange={onChange}\n onErrorChange={onFieldErrorChange}\n />\n {errorMessage && (\n <p\n id={errorId}\n className=\"text-xs text-destructive\"\n data-testid={`datepicker-${endpoint}-time-error`}\n role=\"alert\"\n >\n {errorMessage}\n </p>\n )}\n </div>\n );\n }\n )}\n </div>\n {showHint && (\n <p\n id={hintId}\n className=\"text-xs text-muted-foreground\"\n data-testid=\"datepicker-time-hint\"\n >\n {t(\"neetoatoms.datePicker.timeHint\", {\n step: minuteStep,\n first: stepExamples(minuteStep as number)[0],\n second: stepExamples(minuteStep as number)[1],\n defaultValue:\n \"Only {{step}}-minute steps are allowed, like {{first}} or {{second}}.\",\n })}\n </p>\n )}\n {isOrderInvalid && (\n <p\n id={orderErrorId}\n className=\"text-xs text-destructive\"\n data-testid=\"datepicker-time-order-error\"\n role=\"alert\"\n >\n {t(\n \"neetoatoms.datePicker.errors.endBeforeStart\",\n \"End time must be after the start time.\"\n )}\n </p>\n )}\n {timezoneLabel && (\n <p\n className=\"mt-1 flex items-center gap-2 text-xs text-muted-foreground\"\n data-testid=\"datepicker-timezone\"\n >\n <Globe aria-hidden className=\"size-3.5 shrink-0\" />\n {timezoneLabel}\n </p>\n )}\n </div>\n );\n};\n\nRangeTimeSection.displayName = \"RangeTimeSection\";\n\nexport { RangeTimeSection };\n","import { useCallback, useMemo, useState } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\n\nimport {\n computeRangePreview,\n orderRange,\n parseGridcellDay,\n startOfDay,\n} from \"./utils\";\n\ntype RangeTuple = [Date | null, Date | null];\n\nexport type RangeEndpoint = \"from\" | \"to\";\n\ninterface UseRangePickerOptions {\n currentValue: unknown;\n showTime: boolean;\n needConfirm: boolean;\n commitValue: (value: Date | [Date, Date] | null) => void;\n setOpen: (open: boolean) => void;\n}\n\nexport const useRangePicker = ({\n currentValue,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n}: UseRangePickerOptions) => {\n const [pendingRange, setPendingRange] = useState<RangeTuple | null>(null);\n // The endpoint the next calendar click sets.\n const [activeEndpoint, setActiveEndpoint] = useState<RangeEndpoint>(\"from\");\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\n const committed = (currentValue as RangeTuple | null) ?? null;\n\n const resetTransientState = useCallback(() => {\n setPendingRange(null);\n setActiveEndpoint(\"from\");\n setHoveredDate(null);\n }, []);\n\n /**\n * Picks a day for the active endpoint: the first click sets the start and\n * the second the end. A start on or\n * before the current end keeps that end, so re-editing a range can move\n * just its start.\n */\n const handleRangeSelect = useCallback(\n (_range: { from?: Date; to?: Date } | undefined, triggerDate: Date) => {\n if (!triggerDate) return;\n\n const from = pendingRange ? pendingRange[0] : (committed?.[0] ?? null);\n const to = pendingRange ? pendingRange[1] : (committed?.[1] ?? null);\n const isBeforeFrom = !!from && triggerDate < startOfDay(from);\n\n if (activeEndpoint === \"from\" || !from) {\n const nextTo = to && triggerDate <= to ? to : null;\n setPendingRange([triggerDate, nextTo]);\n setActiveEndpoint(\"to\");\n\n return;\n }\n\n if (showTime || needConfirm) {\n // An end before the start starts the range over from that day.\n if (isBeforeFrom) {\n setPendingRange([triggerDate, null]);\n\n return;\n }\n\n setPendingRange([from, triggerDate]);\n setActiveEndpoint(\"from\");\n\n return;\n }\n\n const [orderedFrom, orderedTo] = orderRange(from, triggerDate) as [\n Date,\n Date,\n ];\n\n resetTransientState();\n commitValue([orderedFrom, orderedTo]);\n setOpen(false);\n },\n [\n activeEndpoint,\n pendingRange,\n committed,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n resetTransientState,\n ]\n );\n\n const handleHoverIn = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const parsed = parseGridcellDay(e.target);\n if (!parsed) return;\n\n if (hoveredDate && hoveredDate.getTime() === parsed.getTime()) return;\n\n setHoveredDate(parsed);\n },\n [hoveredDate]\n );\n\n const handleHoverOut = useCallback(() => setHoveredDate(null), []);\n\n const getPreviewParts = useCallback(\n () =>\n computeRangePreview({\n pendingRange,\n committed,\n hoveredDate,\n rangeStep: activeEndpoint,\n }),\n [pendingRange, committed, hoveredDate, activeEndpoint]\n );\n\n const memoizedRangeSelected = useMemo<DateRange | undefined>(() => {\n const { from, to } = getPreviewParts();\n\n if (!from && !to) return undefined;\n\n return { from: from ?? undefined, to: to ?? undefined };\n }, [getPreviewParts]);\n\n return {\n pendingRange,\n setPendingRange,\n activeEndpoint,\n setActiveEndpoint,\n hoveredDate,\n handleRangeSelect,\n handleHoverIn,\n handleHoverOut,\n memoizedRangeSelected,\n getPreviewParts,\n resetTransientState,\n };\n};\n","import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { decadeStartFor } from \"./utils\";\n\ninterface YearPickerProps {\n /** Currently selected date (used to highlight the active year). */\n value: Date | null;\n /** A year inside the decade currently shown in the grid. */\n displayedYear: number;\n /** Callback when the user navigates to a different decade (receives any year inside it). */\n onYearChange: (year: number) => void;\n /** Callback when a year is picked. */\n onSelect: (date: Date) => void;\n /** Predicate to disable an entire year (e.g. when out of min/max range). */\n isDisabled?: (date: Date) => boolean;\n}\n\nconst YearPicker = ({\n value,\n displayedYear,\n onYearChange,\n onSelect,\n isDisabled,\n}: YearPickerProps) => {\n const decadeStart = decadeStartFor(displayedYear);\n const years = Array.from({ length: 12 }, (_, i) => decadeStart - 1 + i);\n const selectedYear = value?.getFullYear();\n\n return (\n <div className=\"bg-background flex w-[16rem] flex-col gap-3 p-2\">\n <div className=\"flex items-center justify-between\">\n <Button\n aria-label=\"Previous decade\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(decadeStart - 10)}\n >\n <ChevronLeftIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n <span className=\"text-sm font-medium\">\n {decadeStart}-{decadeStart + 9}\n </span>\n <Button\n aria-label=\"Next decade\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(decadeStart + 10)}\n >\n <ChevronRightIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {years.map(year => {\n const yearDate = new Date(year, 0, 1);\n const disabled = isDisabled?.(yearDate) ?? false;\n const selected = selectedYear === year;\n const outsideDecade = year < decadeStart || year > decadeStart + 9;\n\n return (\n <button\n aria-pressed={selected}\n className={cn(\n \"rounded-md py-2 text-sm transition-colors\",\n \"hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50\",\n outsideDecade && \"text-muted-foreground\",\n selected &&\n \"bg-primary text-primary-foreground hover:bg-primary\"\n )}\n disabled={disabled}\n key={year}\n type=\"button\"\n onClick={() => onSelect(yearDate)}\n >\n {year}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport { YearPicker };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Calendar } from \"src/primitives/Calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"src/primitives/Popover\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { DatePickerProps } from \"./types\";\nimport {\n CALENDAR_NAVIGATION_YEAR_RANGE,\n DEFAULT_DATE_FORMAT,\n DEFAULT_TIME_FORMAT,\n INITIAL_TIME_VALUE,\n SIZE_CONFIG,\n} from \"./constants\";\nimport {\n applyTimeToDate,\n toBrowserLocalDate,\n coerceDateValue,\n formatDate,\n getDatePlaceholder,\n getDisplayFormat,\n getInitialCalendarMonth,\n isDatePartComplete,\n isMonthDisabled,\n isSameDay,\n isYearDisabled,\n orderRange,\n parseDate,\n parseRangeText,\n getTimezoneLabel,\n roundToMinuteStep,\n roundUpToMinuteStep,\n startOfDay,\n startOfWeek,\n toNativeDate,\n toUserTzDayjs,\n weekDaysFrom,\n} from \"./utils\";\nimport {\n applyMask,\n buildMaskTemplate,\n buildRangeMaskTemplate,\n isFixedWidthFormat,\n} from \"src/utils/inputMask\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { DatePickerFooter } from \"./DatePickerFooter\";\nimport { DatePickerField } from \"./DatePickerField\";\nimport { DatePickerTrigger } from \"./DatePickerTrigger\";\nimport { TimeSection } from \"./TimeSection\";\nimport { MonthPicker } from \"./MonthPicker\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { RangeTimeSection } from \"./RangeTimeSection\";\nimport type { TimeInputHandle } from \"./TimeInput\";\nimport { useRangePicker } from \"./useRangePicker\";\nimport { YearPicker } from \"./YearPicker\";\nimport { dateToTimeValue } from \"../TimePicker/utils\";\n\n// w-0 + min-w-full sizes the time section to the calendar above it instead of\n// letting it widen the popover.\nconst TIME_SECTION_CLASS_NAME =\n \"w-0 min-w-full border-t border-border px-3 py-3\";\n\n// With showTime, day cells grow from 28px to 32.5px, making the calendar (and\n// the popover) 15% wider: 7 × 32.5 + 16 = 243.5px instead of 212px.\nconst SHOW_TIME_CALENDAR_CLASS_NAME = \"[--cell-size:--spacing(8.125)]\";\n\n// Where the time starts when \"Add time\" is switched on with no saved time.\nconst DEFAULT_ADDED_TIME = { hours: 12, minutes: 0, seconds: 0 };\n\n// A new range ends at the day's last minute on the step grid (11:59 PM, or\n// 11:55 PM with a 5-minute step), so the end day is included.\nconst getDefaultEndTime = (minuteStep = 1) => ({\n hours: 23,\n minutes: Math.floor(59 / minuteStep) * minuteStep,\n seconds: 0,\n});\n\nconst isSameRange = (\n a: [Date | null, Date | null] | null,\n b: [Date | null, Date | null] | null\n) =>\n a?.[0]?.getTime() === b?.[0]?.getTime() &&\n a?.[1]?.getTime() === b?.[1]?.getTime();\n\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onBlur,\n type = \"date\",\n dateFormat = DEFAULT_DATE_FORMAT,\n timeFormat = DEFAULT_TIME_FORMAT,\n showTime = false,\n showNow = true,\n minuteStep,\n timeOptional = true,\n hasTime: hasTimeProp,\n minDate,\n maxDate,\n disabledDate,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n disabled = false,\n allowClear = true,\n required = false,\n timezone,\n timezoneLabel: timezoneLabelProp,\n onTimezoneChange,\n onOk,\n needConfirm = false,\n open: openProp,\n onOpenChange,\n className,\n labelProps,\n picker = \"date\",\n side = \"bottom\",\n align = \"start\",\n trigger,\n weekStartsOn = 1,\n dataTestId,\n \"data-testid\": inputDataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPosRef = useRef<number | null>(null);\n const fromTimeRef = useRef<TimeInputHandle>(null);\n\n const popoverContentId = useRef(\n `datepicker-popover-${generatedId}`\n ).current;\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const [internalValue, setInternalValue] = useState(\n coerceDateValue(defaultValue, type) ?? null\n );\n\n const [calendarMonth, setCalendarMonth] = useState(() =>\n getInitialCalendarMonth(value, defaultValue, type)\n );\n\n const [pendingDate, setPendingDate] = useState<Date | null>(null);\n const [pendingTime, setPendingTime] = useState(INITIAL_TIME_VALUE);\n const [pendingTimeTo, setPendingTimeTo] = useState(INITIAL_TIME_VALUE);\n const [hasTimeError, setHasTimeError] = useState(false);\n // Set when the user tries to confirm an invalid time, so the row shows the\n // error even if no input was blurred yet.\n const [isTimeErrorRequested, setIsTimeErrorRequested] = useState(false);\n\n // Whether the committed value carries a time. Only a `timeOptional`\n // single-date picker can hold a date without one.\n const isTimeOptional = showTime && timeOptional && type === \"date\";\n const [internalHasTime, setInternalHasTime] = useState(\n () => hasTimeProp ?? (value ?? defaultValue) != null\n );\n const committedHasTime =\n showTime && (!isTimeOptional || (hasTimeProp ?? internalHasTime));\n const [pendingHasTime, setPendingHasTime] = useState(committedHasTime);\n const isPendingTimeOn = showTime && (!isTimeOptional || pendingHasTime);\n\n const currentValue = useMemo(\n () =>\n value !== undefined ? coerceDateValue(value, type) : internalValue,\n [value, type, internalValue]\n );\n\n const normalizedMinDate = useMemo(\n () => toNativeDate(minDate) ?? undefined,\n [minDate]\n );\n const normalizedMaxDate = useMemo(\n () => toNativeDate(maxDate) ?? undefined,\n [maxDate]\n );\n\n const displayFormat = getDisplayFormat(\n dateFormat,\n timeFormat,\n committedHasTime\n );\n const sizeConfig = SIZE_CONFIG[size];\n const maskEnabled = isFixedWidthFormat(displayFormat);\n\n const defaultPlaceholder = getDatePlaceholder(dateFormat, type);\n\n const maskTemplate = useMemo(\n () =>\n maskEnabled\n ? type === \"range\"\n ? buildRangeMaskTemplate(displayFormat)\n : buildMaskTemplate(displayFormat)\n : null,\n [displayFormat, type, maskEnabled]\n );\n\n const singleDateLen = useMemo(\n () => buildMaskTemplate(displayFormat).pattern.length,\n [displayFormat]\n );\n\n const calendarDisabled = useCallback(\n (date: Date) => {\n if (disabledDate?.(date)) return true;\n if (\n normalizedMinDate &&\n date < new Date(new Date(normalizedMinDate).setHours(0, 0, 0, 0))\n )\n return true;\n if (\n normalizedMaxDate &&\n date > new Date(new Date(normalizedMaxDate).setHours(23, 59, 59, 999))\n )\n return true;\n\n return false;\n },\n [normalizedMinDate, normalizedMaxDate, disabledDate]\n );\n\n const getDisplayText = useCallback(() => {\n if (type !== \"range\") {\n return formatDate(currentValue as Date | null, displayFormat);\n }\n\n const rangeValue = currentValue as [Date | null, Date | null] | null;\n if (!rangeValue || (!rangeValue[0] && !rangeValue[1])) return \"\";\n\n const from = rangeValue[0]\n ? formatDate(rangeValue[0], displayFormat)\n : \"\";\n const to = rangeValue[1] ? formatDate(rangeValue[1], displayFormat) : \"\";\n\n return `${from} - ${to}`;\n }, [currentValue, displayFormat, type]);\n\n const [inputText, setInputText] = useState(() => getDisplayText());\n\n // `meta.hasTime` is only sent by `timeOptional` pickers, so other callers\n // keep receiving exactly two arguments.\n const emitChange = (\n changed: Parameters<NonNullable<typeof onChange>>[0],\n formatted: string | [string, string],\n withTime: boolean\n ) => {\n if (isTimeOptional) onChange?.(changed, formatted, { hasTime: withTime });\n else onChange?.(changed, formatted);\n };\n\n const commitValue = (\n date: Date | [Date, Date] | null,\n withTime: boolean = committedHasTime\n ) => {\n if (date === null) {\n setInternalValue(null);\n setInternalHasTime(false);\n if (type === \"range\") {\n emitChange([null, null], [\"\", \"\"], false);\n } else {\n emitChange(null, \"\", false);\n }\n setInputText(\"\");\n\n return;\n }\n\n const commitFormat = getDisplayFormat(dateFormat, timeFormat, withTime);\n\n const toSerializableDayjs = (d: Date) => {\n const userTzDayjs = toUserTzDayjs(d);\n if (withTime) return userTzDayjs;\n\n return userTzDayjs.hour(12).minute(0).second(0).millisecond(0);\n };\n\n if (Array.isArray(date)) {\n setInternalValue(date);\n const formatted: [string, string] = [\n formatDate(date[0], commitFormat),\n formatDate(date[1], commitFormat),\n ];\n emitChange(\n [toSerializableDayjs(date[0]), toSerializableDayjs(date[1])],\n formatted,\n withTime\n );\n setInputText(`${formatted[0]} - ${formatted[1]}`);\n\n return;\n }\n\n setInternalValue(date);\n setInternalHasTime(withTime);\n const formatted = formatDate(date, commitFormat);\n emitChange(toSerializableDayjs(date), formatted, withTime);\n setInputText(formatted);\n };\n\n const {\n pendingRange,\n setPendingRange,\n activeEndpoint,\n setActiveEndpoint,\n handleRangeSelect,\n handleHoverIn,\n handleHoverOut,\n memoizedRangeSelected,\n getPreviewParts,\n resetTransientState,\n } = useRangePicker({\n currentValue,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n });\n\n const isRangeConfirm = type === \"range\" && (showTime || needConfirm);\n const committedRange =\n type === \"range\"\n ? (currentValue as [Date | null, Date | null] | null)\n : null;\n // The range OK would save: the picked days (or the saved ones) in order,\n // with the typed times.\n const [draftFrom, draftTo] = orderRange(\n pendingRange ? pendingRange[0] : (committedRange?.[0] ?? null),\n pendingRange ? pendingRange[1] : (committedRange?.[1] ?? null)\n );\n // With times, a start alone is a same-day range: pick one day, set both\n // times, and OK.\n const draftEnd = draftTo ?? (showTime ? draftFrom : null);\n const isEndOnStartDay =\n showTime && !!draftFrom && isSameDay(draftFrom, draftEnd);\n const draftRange = useMemo<[Date, Date] | null>(() => {\n if (!draftFrom || !draftEnd) return null;\n\n return showTime\n ? [\n applyTimeToDate(draftFrom, pendingTime),\n applyTimeToDate(draftEnd, pendingTimeTo),\n ]\n : [draftFrom, draftEnd];\n }, [draftFrom, draftEnd, showTime, pendingTime, pendingTimeTo]);\n const isRangeOrderInvalid =\n showTime &&\n !!draftRange &&\n draftRange[1].getTime() <= draftRange[0].getTime();\n\n // A range typed into the input waits for OK, like one picked on the calendar.\n const applyTypedRange = (range: [Date, Date]) => {\n const snapped = range.map(date =>\n showTime && minuteStep ? roundToMinuteStep(date, minuteStep) : date\n );\n const [from, to] = orderRange(snapped[0], snapped[1]) as [Date, Date];\n\n setPendingRange([startOfDay(from), startOfDay(to)]);\n setActiveEndpoint(\"from\");\n if (showTime) {\n setPendingTime(dateToTimeValue(from));\n setPendingTimeTo(dateToTimeValue(to));\n }\n };\n\n useEffect(() => {\n if (type !== \"range\" || !open) return;\n\n const { from, to: previewTo } = getPreviewParts();\n // Show the same-day end that OK would save for a lone start.\n const to = previewTo ?? (showTime ? from : null);\n const fromWithTime =\n from && showTime ? applyTimeToDate(from, pendingTime) : from;\n const toWithTime =\n to && showTime ? applyTimeToDate(to, pendingTimeTo) : to;\n const fromText = fromWithTime\n ? formatDate(fromWithTime, displayFormat)\n : \"\";\n const toText = toWithTime ? formatDate(toWithTime, displayFormat) : \"\";\n\n setInputText(fromText || toText ? `${fromText} - ${toText}` : \"\");\n }, [\n type,\n open,\n getPreviewParts,\n displayFormat,\n showTime,\n pendingTime,\n pendingTimeTo,\n ]);\n\n const parseAndApplyRange = (text: string, cursorPos: number | null) => {\n const parts = text.split(\" - \");\n const separatorIdx = text.indexOf(\" - \");\n const editingTo =\n separatorIdx >= 0 && cursorPos !== null && cursorPos > separatorIdx + 2;\n\n if (editingTo) {\n const to = parseDate(parts[1] ?? \"\", displayFormat);\n if (to) setCalendarMonth(to);\n } else {\n if (!isDatePartComplete(parts[0] ?? \"\", maskEnabled, singleDateLen))\n return;\n\n const from = parseDate(parts[0] ?? \"\", displayFormat);\n if (from) setCalendarMonth(from);\n }\n\n const range = parseRangeText(\n text,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n\n if (!range) return;\n\n if (isRangeConfirm) applyTypedRange(range);\n else commitValue(range);\n };\n\n const commitPendingOnClose = useCallback(() => {\n const hasOkButton = showTime || needConfirm;\n if (!hasOkButton || !pendingDate || (isPendingTimeOn && hasTimeError)) {\n setInputText(getDisplayText());\n\n return;\n }\n\n const finalDate = isPendingTimeOn\n ? applyTimeToDate(pendingDate, pendingTime)\n : pendingDate;\n\n const currentSingle =\n type === \"date\" ? (currentValue as Date | null) : null;\n\n const isSame =\n currentSingle &&\n isPendingTimeOn === committedHasTime &&\n finalDate.getTime() === currentSingle.getTime();\n\n if (isSame) {\n setInputText(getDisplayText());\n\n return;\n }\n\n commitValue(finalDate, isPendingTimeOn);\n }, [\n showTime,\n needConfirm,\n pendingDate,\n pendingTime,\n isPendingTimeOn,\n committedHasTime,\n type,\n currentValue,\n getDisplayText,\n onChange,\n hasTimeError,\n ]);\n\n const closePopover = useCallback(() => {\n if (type === \"range\") {\n const canCommit =\n draftRange &&\n !(showTime && (hasTimeError || isRangeOrderInvalid)) &&\n !isSameRange(draftRange, committedRange);\n if (canCommit) commitValue(draftRange);\n } else {\n commitPendingOnClose();\n }\n resetTransientState();\n setOpen(false);\n }, [\n commitPendingOnClose,\n setOpen,\n type,\n draftRange,\n committedRange,\n isRangeOrderInvalid,\n showTime,\n resetTransientState,\n hasTimeError,\n ]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const openPopover = () => {\n setOpen(true);\n resetTransientState();\n setIsTimeErrorRequested(false);\n\n if (type === \"range\") {\n const rangeVal = currentValue as [Date | null, Date | null] | null;\n const fromDate = rangeVal?.[0] ?? null;\n const toDate = rangeVal?.[1] ?? null;\n setPendingDate(null);\n setPendingTime(\n fromDate ? dateToTimeValue(fromDate) : INITIAL_TIME_VALUE\n );\n setPendingTimeTo(\n toDate ? dateToTimeValue(toDate) : getDefaultEndTime(minuteStep)\n );\n if (fromDate) setCalendarMonth(fromDate);\n\n return;\n }\n\n const dateVal = currentValue as Date | null;\n setPendingHasTime(committedHasTime);\n if (!dateVal) {\n setPendingDate(null);\n setPendingTime(\n isTimeOptional ? DEFAULT_ADDED_TIME : INITIAL_TIME_VALUE\n );\n\n return;\n }\n\n setCalendarMonth(dateVal);\n setPendingDate(dateVal);\n setPendingTime(\n committedHasTime || !isTimeOptional\n ? dateToTimeValue(dateVal)\n : DEFAULT_ADDED_TIME\n );\n };\n\n const handleDateSelect = (selected: Date | undefined) => {\n if (!selected) return;\n\n setCalendarMonth(selected);\n\n if (showTime || needConfirm) {\n setPendingDate(selected);\n\n return;\n }\n\n commitValue(selected);\n setOpen(false);\n };\n\n const handleNow = () => {\n const now = toBrowserLocalDate(\n showTime && minuteStep\n ? roundUpToMinuteStep(new Date(), minuteStep)\n : new Date()\n );\n\n if (calendarDisabled(now)) return;\n\n setCalendarMonth(now);\n\n if (type === \"range\") {\n handleRangeSelect(undefined, now);\n\n return;\n }\n\n if (showTime || needConfirm) {\n setPendingDate(now);\n setPendingTime(dateToTimeValue(now));\n if (isTimeOptional) setPendingHasTime(true);\n\n return;\n }\n\n commitValue(now);\n setOpen(false);\n };\n\n const handleOk = () => {\n if (isPendingTimeOn && hasTimeError) {\n setIsTimeErrorRequested(true);\n\n return;\n }\n\n if (isRangeConfirm) {\n if (!draftRange || isRangeOrderInvalid) return;\n\n commitValue(draftRange, showTime);\n onOk?.(draftRange);\n resetTransientState();\n setOpen(false);\n\n return;\n }\n\n if (pendingDate) {\n const finalDate = isPendingTimeOn\n ? applyTimeToDate(pendingDate, pendingTime)\n : pendingDate;\n\n commitValue(finalDate, isPendingTimeOn);\n onOk?.(finalDate);\n }\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n commitValue(null);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n inputText,\n e.target.selectionStart\n );\n\n text = masked.text;\n cursorPosRef.current = masked.cursorPosition;\n }\n\n setInputText(text);\n\n if (type === \"range\") {\n parseAndApplyRange(text, e.target.selectionStart);\n\n return;\n }\n\n const isComplete = maskTemplate\n ? text.length >= maskTemplate.pattern.length\n : true;\n\n if (!isComplete) return;\n\n const parsed = parseDate(text, displayFormat);\n if (!parsed) return;\n\n setCalendarMonth(parsed);\n\n if (showTime || needConfirm) {\n setPendingDate(parsed);\n setPendingTime(dateToTimeValue(parsed));\n\n return;\n }\n\n commitValue(parsed);\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n setPendingDate(null);\n setPendingTime(INITIAL_TIME_VALUE);\n setInputText(getDisplayText());\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (type === \"range\") {\n const range = parseRangeText(\n inputText,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n // With a minute step, typed times snap to it, as in the time field.\n if (range) {\n const snapped =\n showTime && minuteStep\n ? range.map(date => roundToMinuteStep(date, minuteStep))\n : range;\n commitValue(orderRange(snapped[0], snapped[1]) as [Date, Date]);\n }\n } else {\n const parsed = parseDate(inputText, displayFormat);\n if (parsed) {\n commitValue(\n committedHasTime && minuteStep\n ? roundToMinuteStep(parsed, minuteStep)\n : parsed\n );\n }\n }\n\n setOpen(false);\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const next = e.relatedTarget as HTMLElement | null;\n if (next && containerRef.current?.contains(next)) return;\n\n const popoverEl = document.getElementById(popoverContentId);\n if (next && popoverEl?.contains(next)) return;\n\n onBlur?.(e);\n };\n\n useEffect(() => {\n if (!open) setInputText(getDisplayText());\n }, [getDisplayText, open]);\n\n useCursorRestore([{ inputRef, cursorRef: cursorPosRef }]);\n\n useEffect(() => {\n if (!open || type !== \"date\") return;\n\n const dateVal = currentValue as Date | null;\n if (dateVal instanceof Date) setCalendarMonth(dateVal);\n }, [open]);\n\n // The footer's timezone select already names the zone when it is shown.\n const timezoneLabel =\n showTime && !onTimezoneChange\n ? (timezoneLabelProp ?? getTimezoneLabel(timezone)) || null\n : null;\n\n const hasField = !!(label || error || helpText);\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const showFooter = showTime || needConfirm || !!onTimezoneChange;\n const todayDate = toBrowserLocalDate(new Date());\n\n const handleHasTimeChange = (checked: boolean) => {\n setPendingHasTime(checked);\n setIsTimeErrorRequested(false);\n if (!checked) setHasTimeError(false);\n\n // A time needs a day: fall back to today so OK has something to save.\n if (checked && !pendingDate && !calendarDisabled(todayDate)) {\n setPendingDate(todayDate);\n setCalendarMonth(todayDate);\n }\n };\n\n const defaultStartMonth = new Date(\n todayDate.getFullYear() - CALENDAR_NAVIGATION_YEAR_RANGE,\n 0,\n 1\n );\n const defaultEndMonth = new Date(\n todayDate.getFullYear() + CALENDAR_NAVIGATION_YEAR_RANGE,\n 11,\n 1\n );\n // Keep the displayed month (e.g. a far-off value) navigable when no bounds are set.\n const calendarStartMonth =\n normalizedMinDate ??\n (calendarMonth < defaultStartMonth ? calendarMonth : defaultStartMonth);\n const calendarEndMonth =\n normalizedMaxDate ??\n (calendarMonth > defaultEndMonth ? calendarMonth : defaultEndMonth);\n\n // Makes the next calendar click set this endpoint, and brings its day\n // into view if neither shown month has it.\n const handleEndpointSelect = (endpoint: \"from\" | \"to\") => {\n setActiveEndpoint(endpoint);\n const date = endpoint === \"from\" ? draftFrom : draftEnd;\n if (!date) return;\n\n const monthsAhead =\n (date.getFullYear() - calendarMonth.getFullYear()) * 12 +\n date.getMonth() -\n calendarMonth.getMonth();\n if (monthsAhead < 0 || monthsAhead > 1) {\n setCalendarMonth(new Date(date.getFullYear(), date.getMonth(), 1));\n }\n };\n\n // Once the days are picked (a lone start counts as a same-day range), Tab\n // from the calendar goes to the start hour instead of through the month\n // and year dropdowns.\n const handleRangeCalendarKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>\n ) => {\n if (e.key !== \"Tab\" || e.shiftKey || !draftRange) return;\n\n e.preventDefault();\n fromTimeRef.current?.focus();\n };\n\n const handleGridPickerSelect = (date: Date) => {\n commitValue(date);\n setOpen(false);\n };\n\n const handleSingleDateSelectWithPicker = (selected: Date | undefined) => {\n if (!selected) return handleDateSelect(undefined);\n\n handleDateSelect(\n picker === \"week\" ? startOfWeek(selected, weekStartsOn) : selected\n );\n };\n\n const weekHighlightProps = (() => {\n if (picker !== \"week\" || type !== \"date\" || !currentValue) return {};\n\n const weekStart = startOfWeek(currentValue as Date, weekStartsOn);\n const weekDays = weekDaysFrom(weekStart);\n\n return {\n modifiers: {\n weekStart: [weekDays[0]],\n weekMiddle: weekDays.slice(1, 6),\n weekEnd: [weekDays[6]],\n },\n modifiersClassNames: {\n weekStart:\n \"!bg-primary !text-primary-foreground !rounded-e-none hover:!bg-primary\",\n weekMiddle:\n \"!bg-primary !text-primary-foreground !rounded-none hover:!bg-primary\",\n weekEnd:\n \"!bg-primary !text-primary-foreground !rounded-s-none hover:!bg-primary\",\n },\n };\n })();\n\n const weekRowHoverClassName =\n picker === \"week\"\n ? \"[&_button]:!transition-none [&:hover_button]:!bg-primary [&:hover_button]:!text-primary-foreground [&:hover_button]:!rounded-none [&:hover_button]:cursor-pointer\"\n : undefined;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const calendarSelected = () => {\n if (showTime || needConfirm) {\n return pendingDate ?? (currentValue as Date | undefined) ?? undefined;\n }\n\n return (currentValue as Date | undefined) ?? undefined;\n };\n\n const handleTriggerOpenChange = (nextOpen: boolean) => {\n if (nextOpen === open) return;\n\n if (nextOpen) openPopover();\n else closePopover();\n };\n\n const triggerContent = (\n <Popover\n open={open}\n onOpenChange={trigger ? handleTriggerOpenChange : undefined}\n >\n {trigger ? (\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n ) : (\n <DatePickerTrigger\n containerRef={containerRef}\n inputRef={inputRef}\n disabled={disabled}\n error={error}\n hasField={hasField}\n className={className}\n triggerSizeClass={sizeConfig.trigger}\n inputSizeClass={sizeConfig.input}\n iconSizeClass={sizeConfig.icon}\n label={label}\n ariaDescribedBy={ariaDescribedBy}\n inputTestId={\n inputDataTestId ??\n (dataTestId || label ? `${testIdPrefix}-input` : \"picker-input\")\n }\n placeholder={placeholder ?? defaultPlaceholder}\n inputText={inputText}\n allowClear={allowClear}\n timezone={timezone}\n onInputChange={handleInputChange}\n onInputKeyDown={handleInputKeyDown}\n onInputFocus={() => {\n if (!open) openPopover();\n }}\n onInputBlur={handleInputBlur}\n onClear={handleClear}\n />\n )}\n {open && (\n <PopoverContent\n id={popoverContentId}\n // On short screens the calendar, time and footer can be taller\n // than the room beside the trigger; cap the popover there and let\n // it scroll so OK stays reachable.\n className=\"max-h-(--radix-popover-content-available-height) w-auto overflow-y-auto p-0\"\n collisionPadding={8}\n align={align}\n side={side}\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <div className=\"flex\">\n {type === \"date\" && picker === \"month\" ? (\n <MonthPicker\n value={(currentValue as Date | null) ?? null}\n displayedYear={calendarMonth.getFullYear()}\n onYearChange={year =>\n setCalendarMonth(\n new Date(year, calendarMonth.getMonth(), 1)\n )\n }\n onSelect={handleGridPickerSelect}\n isDisabled={date =>\n isMonthDisabled(date, normalizedMinDate, normalizedMaxDate)\n }\n />\n ) : type === \"date\" && picker === \"year\" ? (\n <YearPicker\n value={(currentValue as Date | null) ?? null}\n displayedYear={calendarMonth.getFullYear()}\n onYearChange={year => setCalendarMonth(new Date(year, 0, 1))}\n onSelect={handleGridPickerSelect}\n isDisabled={date =>\n isYearDisabled(date, normalizedMinDate, normalizedMaxDate)\n }\n />\n ) : type === \"date\" ? (\n <Calendar\n className={cn(showTime && SHOW_TIME_CALENDAR_CLASS_NAME)}\n mode=\"single\"\n captionLayout=\"dropdown\"\n today={todayDate}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={calendarSelected()}\n onSelect={handleSingleDateSelectWithPicker}\n disabled={calendarDisabled}\n weekStartsOn={weekStartsOn}\n classNames={\n weekRowHoverClassName\n ? { week: cn(\"mt-2 flex w-full\", weekRowHoverClassName) }\n : undefined\n }\n {...weekHighlightProps}\n startMonth={calendarStartMonth}\n endMonth={calendarEndMonth}\n />\n ) : (\n <RangeCalendar\n className={cn(showTime && SHOW_TIME_CALENDAR_CLASS_NAME)}\n todayDate={todayDate}\n weekStartsOn={weekStartsOn}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={memoizedRangeSelected}\n onSelect={handleRangeSelect}\n disabled={calendarDisabled}\n startMonth={calendarStartMonth}\n endMonth={calendarEndMonth}\n onHoverIn={handleHoverIn}\n onHoverOut={handleHoverOut}\n onKeyDown={showTime ? handleRangeCalendarKeyDown : undefined}\n />\n )}\n </div>\n {/* Outside the calendar's flex row, so the calendar keeps its own\n width and the time section only fills it. */}\n {showTime && type === \"range\" && (\n <RangeTimeSection\n activeEndpoint={activeEndpoint}\n className={TIME_SECTION_CLASS_NAME}\n disabled={disabled}\n fromDateLabel={formatDate(draftFrom, dateFormat)}\n fromTimeRef={fromTimeRef}\n fromValue={pendingTime}\n isOrderInvalid={isRangeOrderInvalid}\n minuteStep={minuteStep}\n showError={isTimeErrorRequested}\n timezoneLabel={timezoneLabel}\n isEndOnStartDay={isEndOnStartDay}\n toDateLabel={formatDate(draftTo, dateFormat)}\n toValue={pendingTimeTo}\n onEndpointSelect={handleEndpointSelect}\n onErrorChange={setHasTimeError}\n onFromChange={setPendingTime}\n onToChange={setPendingTimeTo}\n />\n )}\n {showTime && type !== \"range\" && (\n <TimeSection\n className={TIME_SECTION_CLASS_NAME}\n disabled={disabled}\n hasTime={pendingHasTime}\n optional={isTimeOptional}\n showError={isTimeErrorRequested}\n timezoneLabel={timezoneLabel}\n value={pendingTime}\n onChange={setPendingTime}\n minuteStep={minuteStep}\n onErrorChange={setHasTimeError}\n onHasTimeChange={handleHasTimeChange}\n />\n )}\n {showFooter && (\n <DatePickerFooter\n showTime={showTime}\n needConfirm={needConfirm}\n timezone={timezone}\n onTimezoneChange={onTimezoneChange}\n nowDisabled={calendarDisabled(todayDate)}\n // A range with times has no single moment for \"Now\" to fill.\n showNow={showNow && !(type === \"range\" && showTime)}\n onNow={handleNow}\n okDisabled={\n isRangeConfirm && (!draftRange || isRangeOrderInvalid)\n }\n onOk={handleOk}\n />\n )}\n </PopoverContent>\n )}\n </Popover>\n );\n\n if (!hasField) {\n return (\n <div ref={ref} className={className}>\n {triggerContent}\n </div>\n );\n }\n\n return (\n <DatePickerField\n ref={ref}\n disabled={disabled}\n error={error}\n className={className}\n label={label}\n required={required}\n helpText={helpText}\n labelProps={labelProps}\n errorId={errorId}\n helpTextId={helpTextId}\n errorTestId={`${testIdPrefix}-input-error`}\n >\n {triggerContent}\n </DatePickerField>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n"],"names":["__iconNode","createLucideIcon","pureDayjs","customParseFormat","dayjs","cn","jsx","jsxs","Button","forwardRef","Field","FieldLabel","FieldContent","FieldError","FieldDescription","PopoverAnchor","CalendarIcon","X","to12Hour","padNumber","to24Hour","useTranslation","useRef","useState","timeValueEquals","useEffect","useImperativeHandle","useId","useCallback","Label","Clock","Switch","ChevronLeftIcon","ChevronRightIcon","Calendar","useMemo","useControlledOpen","isFixedWidthFormat","buildRangeMaskTemplate","buildMaskTemplate","formatted","dateToTimeValue","useOutsideClickClose","applyMask","useCursorRestore","buildTestIdPrefix","Popover","PopoverTrigger","PopoverContent"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -84,6 +84,7 @@ var neetoatoms = {
|
|
|
84
84
|
},
|
|
85
85
|
datePicker: {
|
|
86
86
|
timeField: "Time",
|
|
87
|
+
timePlaceholder: "Time",
|
|
87
88
|
addTime: "Add time",
|
|
88
89
|
start: "Start",
|
|
89
90
|
end: "End",
|
|
@@ -94,9 +95,6 @@ var neetoatoms = {
|
|
|
94
95
|
timeHint: "Only {{step}}-minute steps are allowed, like {{first}} or {{second}}.",
|
|
95
96
|
errors: {
|
|
96
97
|
timeRequired: "Enter a time, or turn off Add time.",
|
|
97
|
-
hourRequired: "Enter an hour.",
|
|
98
|
-
minuteRequired: "Enter minutes.",
|
|
99
|
-
periodRequired: "Type a or p for AM or PM.",
|
|
100
98
|
endBeforeStart: "End time must be after the start time."
|
|
101
99
|
}
|
|
102
100
|
}
|
|
@@ -135,4 +133,4 @@ TranslationProvider.displayName = "TranslationProvider";
|
|
|
135
133
|
|
|
136
134
|
exports.TranslationProvider = TranslationProvider;
|
|
137
135
|
exports.resources = resources;
|
|
138
|
-
//# sourceMappingURL=TranslationProvider-
|
|
136
|
+
//# sourceMappingURL=TranslationProvider-CJlcb83b.js.map
|
package/dist/cjs/{TranslationProvider-Cao2ugzJ.js.map → TranslationProvider-CJlcb83b.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranslationProvider-
|
|
1
|
+
{"version":3,"file":"TranslationProvider-CJlcb83b.js","sources":["../../src/translations/index.ts","../../src/components/TranslationProvider/i18n.ts","../../src/components/TranslationProvider/TranslationProvider.tsx"],"sourcesContent":["import enTranslations from \"./en.json\";\n\nexport const resources = {\n en: { translation: enTranslations },\n};\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { resources } from \"src/translations\";\n\nexport const initializeI18n = (language = \"en\") => {\n i18n.use(initReactI18next).init({\n resources,\n lng: language,\n fallbackLng: \"en\",\n interpolation: { escapeValue: false },\n });\n\n return i18n;\n};\n","import { useEffect } from \"react\";\n\nimport { I18nextProvider } from \"react-i18next\";\n\nimport { initializeI18n } from \"./i18n\";\nimport type { TranslationProviderProps } from \"./types\";\n\nconst TranslationProvider = ({\n children,\n language = \"en\",\n}: TranslationProviderProps) => {\n const i18n = initializeI18n(language);\n\n useEffect(() => {\n if (i18n.language !== language) {\n i18n.changeLanguage(language);\n }\n }, [language, i18n]);\n\n return <I18nextProvider i18n={i18n}>{children}</I18nextProvider>;\n};\n\nTranslationProvider.displayName = \"TranslationProvider\";\n\nexport { TranslationProvider };\n"],"names":["i18n","initReactI18next","useEffect","jsx","I18nextProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,SAAA,GAAY;AAAA,EACvB,EAAA,EAAI,EAAE,WAAA,EAAa,cAAA;AACrB;;ACCO,MAAM,cAAA,GAAiB,CAAC,QAAA,GAAW,IAAA,KAAS;AACjD,EAAAA,qBAAA,CAAK,GAAA,CAAIC,6BAAgB,CAAA,CAAE,IAAA,CAAK;AAAA,IAC9B,SAAA;AAAA,IACA,GAAA,EAAK,QAAA;AAAA,IACL,WAAA,EAAa,IAAA;AAAA,IACb,aAAA,EAAe,EAAE,WAAA,EAAa,KAAA;AAAM,GACrC,CAAA;AAED,EAAA,OAAOD,qBAAA;AACT,CAAA;;ACPA,MAAM,sBAAsB,CAAC;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,KAAgC;AAC9B,EAAA,MAAM,IAAA,GAAO,eAAe,QAAQ,CAAA;AAEpC,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,CAAK,aAAa,QAAA,EAAU;AAC9B,MAAA,IAAA,CAAK,eAAe,QAAQ,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,uBAAOC,cAAA,CAACC,4BAAA,EAAA,EAAgB,IAAA,EAAa,QAAA,EAAS,CAAA;AAChD;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;;;;;"}
|
|
@@ -10,7 +10,7 @@ var Callout = require('../Callout-Bci3POCo.js');
|
|
|
10
10
|
var Checkbox = require('../Checkbox-83g1FDsc.js');
|
|
11
11
|
var ColorPicker = require('../ColorPicker-CODJ0QKs.js');
|
|
12
12
|
var DataTable = require('../DataTable-DDlOvtwF.js');
|
|
13
|
-
var DatePicker = require('../DatePicker-
|
|
13
|
+
var DatePicker = require('../DatePicker-D6a3J1WA.js');
|
|
14
14
|
var Dialog = require('../Dialog-B_FZwr_u.js');
|
|
15
15
|
var Empty = require('../Empty-Bwpsj82B.js');
|
|
16
16
|
var Input = require('../Input-DFvMBpiU.js');
|
|
@@ -32,7 +32,7 @@ var Textarea = require('../Textarea-bxleSw86.js');
|
|
|
32
32
|
var TimePicker = require('../TimePicker-CDw_m3LR.js');
|
|
33
33
|
var Toastr = require('../Toastr-ByL66sV-.js');
|
|
34
34
|
var Tooltip = require('../Tooltip-B6uv_2Jz.js');
|
|
35
|
-
var TranslationProvider = require('../TranslationProvider-
|
|
35
|
+
var TranslationProvider = require('../TranslationProvider-CJlcb83b.js');
|
|
36
36
|
var Tree = require('../Tree-D1QjLPS9.js');
|
|
37
37
|
var TreeSelect = require('../TreeSelect-CrLmpq26.js');
|
|
38
38
|
var Typography = require('../Typography-Ctlu_0Qy.js');
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
|
|
4
|
-
var TranslationProvider = require('./TranslationProvider-
|
|
4
|
+
var TranslationProvider = require('./TranslationProvider-CJlcb83b.js');
|
|
5
5
|
var components_DropdownMenu = require('./components/DropdownMenu.js');
|
|
6
6
|
var useMobile = require('./use-mobile-Be9CI6km.js');
|
|
7
7
|
var utils = require('./utils-BhM0B89p.js');
|
|
@@ -14,7 +14,7 @@ var Callout = require('./Callout-Bci3POCo.js');
|
|
|
14
14
|
var Checkbox = require('./Checkbox-83g1FDsc.js');
|
|
15
15
|
var ColorPicker = require('./ColorPicker-CODJ0QKs.js');
|
|
16
16
|
var DataTable = require('./DataTable-DDlOvtwF.js');
|
|
17
|
-
var DatePicker = require('./DatePicker-
|
|
17
|
+
var DatePicker = require('./DatePicker-D6a3J1WA.js');
|
|
18
18
|
var Dialog = require('./Dialog-B_FZwr_u.js');
|
|
19
19
|
var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
|
|
20
20
|
var Empty = require('./Empty-Bwpsj82B.js');
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var utils = require('../utils-BhM0B89p.js');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var DialogTrigger = require('../DialogTrigger-B0Q6yIrx.js');
|
|
7
|
-
var useOpenInteractionType = require('../useOpenInteractionType-D4z6FTrA.js');
|
|
8
5
|
var button = require('../button-UCo5fJnC.js');
|
|
9
6
|
var useAriaHiddenCleanup = require('../useAriaHiddenCleanup-8OeXq1T4.js');
|
|
10
|
-
require('react
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var DialogTrigger = require('../DialogTrigger-B0Q6yIrx.js');
|
|
9
|
+
require('../index-vioSzJOw.js');
|
|
10
|
+
require('../index-DuNgWCXZ.js');
|
|
11
|
+
require('../index-D-iDn9RI.js');
|
|
12
|
+
require('../useOpenInteractionType-D4z6FTrA.js');
|
|
11
13
|
require('../floating-ui.utils.dom-BGEmL7pd.js');
|
|
14
|
+
require('react-dom');
|
|
12
15
|
require('../index-DnKJmaCq.js');
|
|
13
16
|
require('../index-BrpkRQoS.js');
|
|
14
17
|
require('../with-selector-DeKHbQY7.js');
|
|
15
|
-
require('../index-vioSzJOw.js');
|
|
16
|
-
require('../index-DuNgWCXZ.js');
|
|
17
|
-
require('../index-D-iDn9RI.js');
|
|
18
18
|
|
|
19
19
|
function _interopNamespace(e) {
|
|
20
20
|
if (e && e.__esModule) return e;
|
|
@@ -36,38 +36,6 @@ function _interopNamespace(e) {
|
|
|
36
36
|
|
|
37
37
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
38
38
|
|
|
39
|
-
(function (DialogViewportDataAttributes) {
|
|
40
|
-
/**
|
|
41
|
-
* Present when the dialog is open.
|
|
42
|
-
*/
|
|
43
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["open"] = useOpenInteractionType.CommonPopupDataAttributes.open] = "open";
|
|
44
|
-
/**
|
|
45
|
-
* Present when the dialog is closed.
|
|
46
|
-
*/
|
|
47
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["closed"] = useOpenInteractionType.CommonPopupDataAttributes.closed] = "closed";
|
|
48
|
-
/**
|
|
49
|
-
* Present when the dialog is animating in.
|
|
50
|
-
*/
|
|
51
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["startingStyle"] = useOpenInteractionType.CommonPopupDataAttributes.startingStyle] = "startingStyle";
|
|
52
|
-
/**
|
|
53
|
-
* Present when the dialog is animating out.
|
|
54
|
-
*/
|
|
55
|
-
DialogViewportDataAttributes[DialogViewportDataAttributes["endingStyle"] = useOpenInteractionType.CommonPopupDataAttributes.endingStyle] = "endingStyle";
|
|
56
|
-
/**
|
|
57
|
-
* Present when the dialog is nested within another dialog.
|
|
58
|
-
*/
|
|
59
|
-
DialogViewportDataAttributes["nested"] = "data-nested";
|
|
60
|
-
/**
|
|
61
|
-
* Present when the dialog has other open dialogs nested within it.
|
|
62
|
-
*/
|
|
63
|
-
DialogViewportDataAttributes["nestedDialogOpen"] = "data-nested-dialog-open";
|
|
64
|
-
return DialogViewportDataAttributes;
|
|
65
|
-
})({});
|
|
66
|
-
|
|
67
|
-
({
|
|
68
|
-
...useOpenInteractionType.popupStateMapping,
|
|
69
|
-
...useOpenInteractionType.transitionStatusMapping});
|
|
70
|
-
|
|
71
39
|
/**
|
|
72
40
|
* Groups all parts of the alert dialog.
|
|
73
41
|
* Doesn't render its own HTML element.
|