@at5/kairo 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/dist/index.cjs +1436 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +297 -0
- package/dist/index.d.ts +297 -0
- package/dist/index.js +1429 -0
- package/dist/index.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/date-picker/index.ts","../src/date-picker/context.ts","../src/utils/locale.ts","../src/utils/calendar.ts","../src/utils/date.ts","../src/date-picker/reducer.ts","../src/date-picker/use-date-picker.ts","../src/date-picker/root.tsx","../src/date-picker/label.tsx","../src/date-picker/input.tsx","../src/date-picker/trigger.tsx","../src/date-picker/use-click-outside.ts","../src/utils/aria.ts","../src/date-picker/use-focus-trap.ts","../src/date-picker/use-floating.ts","../src/date-picker/content.tsx","../src/date-picker/view-control.tsx","../src/date-picker/prev-trigger.tsx","../src/date-picker/next-trigger.tsx","../src/date-picker/view-trigger.tsx","../src/date-picker/view.tsx","../src/date-picker/week-days.tsx","../src/date-picker/day.tsx","../src/date-picker/grid.tsx","../src/date-picker/month-grid.tsx","../src/date-picker/month-cell.tsx","../src/date-picker/year-grid.tsx","../src/date-picker/year-cell.tsx","../src/date-picker/calendar.tsx"],"names":["offset","_","jsx","useRef","useMemo","useEffect","useCallback","useState","jsxs","useContext"],"mappings":"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","file":"index.js","sourcesContent":["export { Root } from \"./root\";\nexport { Label } from \"./label\";\nexport { Input } from \"./input\";\nexport { Trigger } from \"./trigger\";\nexport { Content } from \"./content\";\nexport type { ContentProps } from \"./content\";\nexport { Calendar } from \"./calendar\";\nexport { View } from \"./view\";\nexport { ViewControl } from \"./view-control\";\nexport { PrevTrigger } from \"./prev-trigger\";\nexport { NextTrigger } from \"./next-trigger\";\nexport { ViewTrigger } from \"./view-trigger\";\nexport { WeekDays } from \"./week-days\";\nexport { Grid } from \"./grid\";\nexport { Day } from \"./day\";\nexport { MonthGrid } from \"./month-grid\";\nexport { MonthCell } from \"./month-cell\";\nexport { YearGrid } from \"./year-grid\";\nexport { YearCell } from \"./year-cell\";\n","import { createContext, useContext } from \"react\";\nimport type { Dispatch } from \"react\";\nimport type { DatePickerState, DatePickerAction } from \"./reducer\";\nimport type { DatePickerConfig, ViewMode } from \"../types\";\n\nexport interface DatePickerContextValue {\n state: DatePickerState;\n dispatch: Dispatch<DatePickerAction>;\n config: DatePickerConfig;\n ids: {\n root: string;\n label: string;\n input: string;\n trigger: string;\n content: string;\n };\n}\n\nexport const DatePickerContext = createContext<DatePickerContextValue | null>(null);\n\nexport function useDatePickerContext(): DatePickerContextValue {\n const ctx = useContext(DatePickerContext);\n if (!ctx) {\n throw new Error(\"DatePicker compound components must be rendered inside <DatePicker.Root>.\");\n }\n return ctx;\n}\n\nexport interface DatePickerViewContextValue {\n view: ViewMode;\n}\n\nexport const DatePickerViewContext = createContext<DatePickerViewContextValue | null>(null);\n\nexport function useDatePickerViewContext(): DatePickerViewContextValue {\n const ctx = useContext(DatePickerViewContext);\n if (!ctx) {\n throw new Error(\"DatePicker.View sub-components must be rendered inside <DatePicker.View>.\");\n }\n return ctx;\n}\n\n// ── Month/Year grid focus contexts ──────────────────────────────────────────\n\nexport const MonthGridFocusContext = createContext<number>(-1);\nexport const YearGridFocusContext = createContext<number>(-1);\n","export function getWeekStartDay(locale: string, override?: 0 | 1 | 2 | 3 | 4 | 5 | 6): number {\n if (override !== undefined) return override;\n try {\n // weekInfo.firstDay: 1=Monday..7=Sunday (ISO) → JS: 0=Sunday..6=Saturday\n // weekInfo is a stage-4 proposal, not yet in TS lib types\n const weekInfo = (new Intl.Locale(locale) as unknown as { weekInfo: { firstDay: number } })\n .weekInfo;\n return weekInfo.firstDay === 7 ? 0 : weekInfo.firstDay;\n } catch {\n return 0;\n }\n}\n\nexport function formatDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n}\n\nexport function formatMonthYear(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatYear(year: number, locale: string): string {\n return new Intl.DateTimeFormat(locale, { year: \"numeric\" }).format(new Date(year, 0, 1));\n}\n\nexport function getMonthNames(\n locale: string,\n format: \"long\" | \"short\" | \"narrow\" = \"long\",\n): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: format });\n return Array.from({ length: 12 }, (_, i) => formatter.format(new Date(2024, i, 1)));\n}\n\nexport function getWeekDayNames(\n locale: string,\n weekStartDay: number,\n format: \"long\" | \"short\" | \"narrow\" = \"short\",\n): Array<{ label: string; ariaLabel: string }> {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: format });\n const longFormatter = new Intl.DateTimeFormat(locale, { weekday: \"long\" });\n // Jan 5 2025 is a Sunday (getDay() === 0), use as anchor\n const anchor = new Date(2025, 0, 5);\n return Array.from({ length: 7 }, (_, i) => {\n const day = new Date(anchor);\n day.setDate(anchor.getDate() + ((weekStartDay + i) % 7));\n return { label: formatter.format(day), ariaLabel: longFormatter.format(day) };\n });\n}\n\ntype DateField = \"year\" | \"month\" | \"day\";\n\nfunction getDateFieldOrder(locale: string): DateField[] {\n const parts = new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).formatToParts(new Date(2024, 0, 15));\n\n const order: DateField[] = [];\n for (const part of parts) {\n if (part.type === \"year\" || part.type === \"month\" || part.type === \"day\") {\n order.push(part.type as DateField);\n }\n }\n return order;\n}\n\nexport interface SegmentInfo {\n order: DateField[];\n separator: string;\n}\n\nexport function getSegmentInfo(locale: string): SegmentInfo {\n const parts = new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).formatToParts(new Date(2024, 0, 15));\n\n const order: DateField[] = [];\n let separator = \"/\";\n for (const part of parts) {\n if (part.type === \"year\" || part.type === \"month\" || part.type === \"day\") {\n order.push(part.type);\n } else if (part.type === \"literal\" && part.value.trim()) {\n separator = part.value.trim();\n }\n }\n return { order, separator };\n}\n\nexport function parseDate(value: string, locale: string): Date | null {\n if (!value.trim()) return null;\n\n // Parse YYYY-MM-DD as local date (Date.parse treats it as UTC, causing timezone shift)\n const isoMatch = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(value);\n if (isoMatch) {\n const d = new Date(Number(isoMatch[1]), Number(isoMatch[2]) - 1, Number(isoMatch[3]));\n return isNaN(d.getTime()) ? null : d;\n }\n\n // Locale-aware parsing: detect field order from Intl\n const order = getDateFieldOrder(locale);\n const parts = value.split(/[-/.\\s]+/).map(Number);\n\n if (parts.length < 3 || parts.some(isNaN)) return null;\n\n const fields: Record<DateField, number> = { year: 0, month: 0, day: 0 };\n order.forEach((field, i) => {\n fields[field] = parts[i] ?? 0;\n });\n\n const { year, month, day } = fields;\n if (!year || !month || !day) return null;\n\n const date = new Date(year, month - 1, day);\n if (isNaN(date.getTime())) return null;\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null; // overflow guard (e.g. Feb 30)\n }\n\n return date;\n}\n","import { getWeekDayNames, getMonthNames } from \"./locale\";\nimport type { MonthItem, WeekDayItem } from \"../types\";\n\nexport function buildCalendarGrid(year: number, month: number, weekStartDay: number): Date[][] {\n const firstOfMonth = new Date(year, month, 1);\n const offset = (firstOfMonth.getDay() - weekStartDay + 7) % 7;\n const totalDays = new Date(year, month + 1, 0).getDate();\n const rows = offset + totalDays <= 35 ? 5 : 6;\n\n return Array.from({ length: rows }, (_, row) =>\n Array.from({ length: 7 }, (_, col) => new Date(year, month, 1 - offset + row * 7 + col)),\n );\n}\n\nexport function buildWeekDays(\n locale: string,\n weekStartDay: number,\n format: \"long\" | \"short\" | \"narrow\" = \"short\",\n): WeekDayItem[] {\n return getWeekDayNames(locale, weekStartDay, format);\n}\n\nexport function buildMonthItems(\n year: number,\n locale: string,\n selectedMonth?: number,\n minDate?: Date,\n maxDate?: Date,\n): MonthItem[] {\n const names = getMonthNames(locale, \"long\");\n return names.map((label, i) => {\n const isDisabled =\n (minDate !== undefined && year < minDate.getFullYear()) ||\n (minDate !== undefined && year === minDate.getFullYear() && i < minDate.getMonth()) ||\n (maxDate !== undefined && year > maxDate.getFullYear()) ||\n (maxDate !== undefined && year === maxDate.getFullYear() && i > maxDate.getMonth());\n\n return {\n value: i,\n label,\n isSelected: selectedMonth === i,\n isDisabled,\n };\n });\n}\n\nexport function buildYearItems(\n pageStart: number,\n count = 12,\n selectedYear?: number,\n minDate?: Date,\n maxDate?: Date,\n): Array<{ value: number; isSelected: boolean; isDisabled: boolean }> {\n return Array.from({ length: count }, (_, i) => {\n const year = pageStart + i;\n const isDisabled =\n (minDate !== undefined && year < minDate.getFullYear()) ||\n (maxDate !== undefined && year > maxDate.getFullYear());\n return { value: year, isSelected: selectedYear === year, isDisabled };\n });\n}\n\nexport function yearPageStart(year: number): number {\n return Math.floor(year / 12) * 12;\n}\n","export function isSameDay(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function isSameYear(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear();\n}\n\nexport function isAfter(date: Date, reference: Date): boolean {\n return date.getTime() > reference.getTime();\n}\n\nexport function isBefore(date: Date, reference: Date): boolean {\n return date.getTime() < reference.getTime();\n}\n\nexport function isInRange(date: Date, start: Date | null, end: Date | null): boolean {\n if (!start || !end) return false;\n const [from, to] = start.getTime() <= end.getTime() ? [start, end] : [end, start];\n return date.getTime() > from.getTime() && date.getTime() < to.getTime();\n}\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function today(): Date {\n return startOfDay(new Date());\n}\n\nexport function addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const d = new Date(date.getFullYear(), date.getMonth() + months, 1);\n const maxDay = new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n d.setDate(Math.min(date.getDate(), maxDay));\n return d;\n}\n\nexport function addYears(date: Date, years: number): Date {\n return new Date(date.getFullYear() + years, date.getMonth(), date.getDate());\n}\n\nexport function daysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nexport function clampDate(date: Date, min?: Date, max?: Date): Date {\n if (min && date.getTime() < min.getTime()) return min;\n if (max && date.getTime() > max.getTime()) return max;\n return date;\n}\n\nexport function isDateDisabled(\n date: Date,\n config: { minDate?: Date; maxDate?: Date; disabled?: boolean | ((d: Date) => boolean) },\n): boolean {\n if (config.disabled === true) return true;\n if (typeof config.disabled === \"function\" && config.disabled(date)) return true;\n if (config.minDate && date.getTime() < startOfDay(config.minDate).getTime()) return true;\n if (config.maxDate && date.getTime() > startOfDay(config.maxDate).getTime()) return true;\n return false;\n}\n","import type { DatePickerConfig, ViewMode } from \"../types\";\nimport { yearPageStart } from \"../utils/calendar\";\nimport { isDateDisabled, isSameDay, startOfDay } from \"../utils/date\";\nimport { formatDate, parseDate } from \"../utils/locale\";\n\nexport type OpenSource = \"trigger\" | \"input\" | null;\n\nexport interface DatePickerState {\n open: boolean;\n openSource: OpenSource;\n view: ViewMode;\n focusedMonth: number;\n focusedYear: number;\n focusedDate: Date | null;\n selectedDate: Date | null;\n rangeStart: Date | null;\n rangeEnd: Date | null;\n hoverDate: Date | null;\n selectedDates: Date[];\n inputValue: string;\n yearPageStart: number;\n}\n\nexport type DatePickerAction =\n | { type: \"OPEN\"; source?: Exclude<OpenSource, null> }\n | { type: \"CLOSE\" }\n | { type: \"TOGGLE\"; source?: Exclude<OpenSource, null> }\n | { type: \"SET_VIEW\"; view: ViewMode }\n | { type: \"NAV_PREV\" }\n | { type: \"NAV_NEXT\" }\n | { type: \"NAV_TO_DATE\"; date: Date }\n | { type: \"FOCUS_DATE\"; date: Date }\n | { type: \"SELECT_DATE\"; date: Date }\n | { type: \"ANCHOR_DATE\"; date: Date }\n | { type: \"EXTEND_RANGE\"; date: Date }\n | { type: \"TOGGLE_DATE\"; date: Date }\n | { type: \"HOVER_DATE\"; date: Date | null }\n | { type: \"SET_INPUT\"; value: string }\n | { type: \"COMMIT_INPUT\" }\n | { type: \"SELECT_MONTH\"; month: number }\n | { type: \"SELECT_YEAR\"; year: number }\n | { type: \"YEAR_PAGE_PREV\" }\n | { type: \"YEAR_PAGE_NEXT\" };\n\nfunction openState(\n state: DatePickerState,\n anchor: Date | null,\n source: Exclude<OpenSource, null> | null = null,\n): DatePickerState {\n const ref = anchor ?? startOfDay(new Date());\n return {\n ...state,\n open: true,\n openSource: source,\n view: \"day\",\n focusedDate: ref,\n focusedMonth: ref.getMonth(),\n focusedYear: ref.getFullYear(),\n yearPageStart: yearPageStart(ref.getFullYear()),\n };\n}\n\nfunction navMonth(state: DatePickerState, delta: number): DatePickerState {\n const d = new Date(state.focusedYear, state.focusedMonth + delta, 1);\n return { ...state, focusedMonth: d.getMonth(), focusedYear: d.getFullYear() };\n}\n\nexport function datePickerReducer(\n state: DatePickerState,\n action: DatePickerAction,\n config: DatePickerConfig,\n): DatePickerState {\n switch (action.type) {\n case \"OPEN\":\n if (state.open || config.readOnly) return state;\n return openState(state, state.selectedDate ?? state.rangeStart, action.source ?? null);\n\n case \"CLOSE\":\n return {\n ...state,\n open: false,\n openSource: null,\n view: \"day\",\n hoverDate: null,\n };\n\n case \"TOGGLE\":\n if (state.open)\n return {\n ...state,\n open: false,\n openSource: null,\n view: \"day\",\n hoverDate: null,\n };\n if (config.readOnly) return state;\n return openState(state, state.selectedDate ?? state.rangeStart, action.source ?? \"trigger\");\n\n case \"SET_VIEW\":\n return { ...state, view: action.view };\n\n case \"NAV_PREV\": {\n if (state.view === \"day\") return navMonth(state, -1);\n if (state.view === \"month\") return { ...state, focusedYear: state.focusedYear - 1 };\n return { ...state, yearPageStart: state.yearPageStart - 12 };\n }\n\n case \"NAV_NEXT\": {\n if (state.view === \"day\") return navMonth(state, 1);\n if (state.view === \"month\") return { ...state, focusedYear: state.focusedYear + 1 };\n return { ...state, yearPageStart: state.yearPageStart + 12 };\n }\n\n case \"NAV_TO_DATE\": {\n const d = action.date;\n return {\n ...state,\n focusedMonth: d.getMonth(),\n focusedYear: d.getFullYear(),\n };\n }\n\n case \"FOCUS_DATE\": {\n const d = action.date;\n return {\n ...state,\n focusedDate: d,\n focusedMonth: d.getMonth(),\n focusedYear: d.getFullYear(),\n };\n }\n\n case \"SELECT_DATE\": {\n const d = startOfDay(action.date);\n if (isDateDisabled(d, config)) return state;\n\n if (config.mode === \"single\") {\n return {\n ...state,\n selectedDate: d,\n inputValue: formatDate(d, config.locale),\n open: config.closeOnSelect ? false : state.open,\n hoverDate: null,\n };\n }\n\n if (config.mode === \"range\") {\n // First click: anchor. Second click: complete range.\n if (!state.rangeStart || state.rangeEnd) {\n return { ...state, rangeStart: d, rangeEnd: null, hoverDate: null };\n }\n const [start, end] =\n d.getTime() >= state.rangeStart.getTime() ? [state.rangeStart, d] : [d, state.rangeStart];\n return {\n ...state,\n rangeStart: start,\n rangeEnd: end,\n hoverDate: null,\n open: config.closeOnSelect ? false : state.open,\n };\n }\n\n if (config.mode === \"multiple\") {\n const already = state.selectedDates.findIndex((s) => isSameDay(s, d));\n const selectedDates =\n already >= 0\n ? state.selectedDates.filter((_, i) => i !== already)\n : [...state.selectedDates, d];\n return { ...state, selectedDates };\n }\n\n return state;\n }\n\n case \"ANCHOR_DATE\": {\n const d = startOfDay(action.date);\n if (isDateDisabled(d, config)) return state;\n return { ...state, rangeStart: d, rangeEnd: null, hoverDate: null };\n }\n\n case \"EXTEND_RANGE\": {\n const d = startOfDay(action.date);\n if (!state.rangeStart || isDateDisabled(d, config)) return state;\n const [start, end] =\n d.getTime() >= state.rangeStart.getTime() ? [state.rangeStart, d] : [d, state.rangeStart];\n return {\n ...state,\n rangeStart: start,\n rangeEnd: end,\n hoverDate: null,\n open: config.closeOnSelect ? false : state.open,\n };\n }\n\n case \"TOGGLE_DATE\": {\n const d = startOfDay(action.date);\n if (isDateDisabled(d, config)) return state;\n const already = state.selectedDates.findIndex((s) => isSameDay(s, d));\n const selectedDates =\n already >= 0\n ? state.selectedDates.filter((_, i) => i !== already)\n : [...state.selectedDates, d];\n return { ...state, selectedDates };\n }\n\n case \"HOVER_DATE\":\n return {\n ...state,\n hoverDate: action.date ? startOfDay(action.date) : null,\n };\n\n case \"SET_INPUT\":\n return { ...state, inputValue: action.value };\n\n case \"COMMIT_INPUT\": {\n const parsed = parseDate(state.inputValue, config.locale);\n if (!parsed || isDateDisabled(parsed, config)) return { ...state, inputValue: \"\" };\n const d = startOfDay(parsed);\n return {\n ...state,\n selectedDate: d,\n focusedDate: d,\n focusedMonth: d.getMonth(),\n focusedYear: d.getFullYear(),\n open: false,\n };\n }\n\n case \"SELECT_MONTH\":\n return { ...state, focusedMonth: action.month, view: \"day\" };\n\n case \"SELECT_YEAR\":\n return {\n ...state,\n focusedYear: action.year,\n yearPageStart: yearPageStart(action.year),\n view: \"month\",\n };\n\n case \"YEAR_PAGE_PREV\":\n return { ...state, yearPageStart: state.yearPageStart - 12 };\n\n case \"YEAR_PAGE_NEXT\":\n return { ...state, yearPageStart: state.yearPageStart + 12 };\n\n default:\n return state;\n }\n}\n\nexport function createInitialState(config: {\n selectedDate?: Date | null;\n rangeStart?: Date | null;\n rangeEnd?: Date | null;\n selectedDates?: Date[];\n open?: boolean;\n locale: string;\n}): DatePickerState {\n const ref = config.selectedDate ?? config.rangeStart ?? new Date();\n return {\n open: config.open ?? false,\n openSource: null,\n view: \"day\",\n focusedMonth: ref.getMonth(),\n focusedYear: ref.getFullYear(),\n focusedDate: config.open ? startOfDay(ref) : null,\n selectedDate: config.selectedDate ?? null,\n rangeStart: config.rangeStart ?? null,\n rangeEnd: config.rangeEnd ?? null,\n hoverDate: null,\n selectedDates: config.selectedDates ?? [],\n inputValue: config.selectedDate ? formatDate(config.selectedDate, config.locale) : \"\",\n yearPageStart: yearPageStart(ref.getFullYear()),\n };\n}\n","import { useReducer, useMemo, useEffect, useRef, useId } from \"react\";\nimport { datePickerReducer, createInitialState } from \"./reducer\";\nimport type { DatePickerState, DatePickerAction } from \"./reducer\";\nimport type { DatePickerConfig, DatePickerRootProps } from \"../types\";\nimport {\n buildCalendarGrid,\n buildWeekDays,\n buildMonthItems,\n buildYearItems,\n} from \"../utils/calendar\";\nimport { getWeekStartDay } from \"../utils/locale\";\nimport type { Dispatch } from \"react\";\n\nfunction resolveConfig(props: DatePickerRootProps): DatePickerConfig {\n const base: DatePickerConfig = {\n mode: props.mode ?? \"single\",\n locale: props.locale ?? (typeof navigator !== \"undefined\" ? navigator.language : \"en-US\"),\n readOnly: props.readOnly ?? false,\n closeOnSelect: props.closeOnSelect ?? (props.mode !== \"range\" && props.mode !== \"multiple\"),\n ...(props.weekStartsOn !== undefined && { weekStartsOn: props.weekStartsOn }),\n ...(props.minDate !== undefined && { minDate: props.minDate }),\n ...(props.maxDate !== undefined && { maxDate: props.maxDate }),\n ...(props.disabled !== undefined && { disabled: props.disabled }),\n };\n return base;\n}\n\nfunction resolveInitialValue(props: DatePickerRootProps) {\n if (!props.mode || props.mode === \"single\") {\n const v = \"defaultValue\" in props ? props.defaultValue : undefined;\n return { selectedDate: v ?? null };\n }\n if (props.mode === \"range\") {\n const v = \"defaultValue\" in props ? props.defaultValue : undefined;\n return { rangeStart: v?.start ?? null, rangeEnd: v?.end ?? null };\n }\n if (props.mode === \"multiple\") {\n const v = \"defaultValue\" in props ? props.defaultValue : undefined;\n return { selectedDates: v ?? [] };\n }\n return {};\n}\n\nexport function useDatePicker(props: DatePickerRootProps) {\n const uid = useId();\n const { mode, locale, weekStartsOn, minDate, maxDate, disabled, readOnly, closeOnSelect } = props;\n const config = useMemo(\n () =>\n resolveConfig({\n mode,\n locale,\n weekStartsOn,\n minDate,\n maxDate,\n disabled,\n readOnly,\n closeOnSelect,\n } as DatePickerRootProps),\n [mode, locale, weekStartsOn, minDate, maxDate, disabled, readOnly, closeOnSelect],\n );\n\n const initialValue = resolveInitialValue(props);\n const [state, dispatch] = useReducer(\n (s: DatePickerState, a: DatePickerAction) => datePickerReducer(s, a, config),\n createInitialState({\n locale: config.locale,\n ...(props.defaultOpen !== undefined && { open: props.defaultOpen }),\n ...initialValue,\n }),\n );\n\n // ── External callbacks ─────────────────────────────────────────────────────\n // Use refs for callbacks to avoid stale closure issues\n const onValueChangeRef = useRef(\n !props.mode || props.mode === \"single\"\n ? (props as { onValueChange?: (d: Date | null) => void }).onValueChange\n : undefined,\n );\n useEffect(() => {\n if (!props.mode || props.mode === \"single\") {\n onValueChangeRef.current = (\n props as { onValueChange?: (d: Date | null) => void }\n ).onValueChange;\n }\n });\n\n const prevSelectedRef = useRef<Date | null | undefined>(undefined);\n useEffect(() => {\n // Skip the initial render\n if (prevSelectedRef.current === undefined) {\n prevSelectedRef.current = state.selectedDate;\n return;\n }\n if (state.selectedDate !== prevSelectedRef.current) {\n onValueChangeRef.current?.(state.selectedDate);\n prevSelectedRef.current = state.selectedDate;\n }\n }, [state.selectedDate]);\n\n const prevRangeRef = useRef<{ start: Date | null; end: Date | null } | undefined>(undefined);\n useEffect(() => {\n if (props.mode !== \"range\") return;\n const p = props as { onValueChange?: (r: { start: Date | null; end: Date | null }) => void };\n if (prevRangeRef.current === undefined) {\n prevRangeRef.current = { start: state.rangeStart, end: state.rangeEnd };\n return;\n }\n if (\n state.rangeStart !== prevRangeRef.current.start ||\n state.rangeEnd !== prevRangeRef.current.end\n ) {\n p.onValueChange?.({ start: state.rangeStart, end: state.rangeEnd });\n prevRangeRef.current = { start: state.rangeStart, end: state.rangeEnd };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- props is a new object each render; mode/onValueChange accessed via closure intentionally\n }, [state.rangeStart, state.rangeEnd]);\n\n const prevMultipleRef = useRef<Date[] | undefined>(undefined);\n useEffect(() => {\n if (props.mode !== \"multiple\") return;\n const p = props as { onValueChange?: (dates: Date[]) => void };\n if (prevMultipleRef.current === undefined) {\n prevMultipleRef.current = state.selectedDates;\n return;\n }\n if (state.selectedDates !== prevMultipleRef.current) {\n p.onValueChange?.(state.selectedDates);\n prevMultipleRef.current = state.selectedDates;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- props is a new object each render; mode/onValueChange accessed via closure intentionally\n }, [state.selectedDates]);\n\n // ── Controlled open ────────────────────────────────────────────────────────\n const isControlledOpen = props.open !== undefined;\n const effectiveOpen = isControlledOpen ? (props.open ?? false) : state.open;\n\n const prevOpenRef = useRef(effectiveOpen);\n useEffect(() => {\n if (prevOpenRef.current !== effectiveOpen) {\n props.onOpenChange?.(effectiveOpen);\n }\n prevOpenRef.current = effectiveOpen;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- props.onOpenChange accessed via closure; adding props would cause infinite loops\n }, [effectiveOpen]);\n\n // ── Derived values ─────────────────────────────────────────────────────────\n const weekStartDay = useMemo(\n () => getWeekStartDay(config.locale, config.weekStartsOn),\n [config.locale, config.weekStartsOn],\n );\n\n const weeks = useMemo(\n () => buildCalendarGrid(state.focusedYear, state.focusedMonth, weekStartDay),\n [state.focusedYear, state.focusedMonth, weekStartDay],\n );\n\n const weekDays = useMemo(\n () => buildWeekDays(config.locale, weekStartDay),\n [config.locale, weekStartDay],\n );\n\n const monthItems = useMemo(\n () =>\n buildMonthItems(\n state.focusedYear,\n config.locale,\n state.focusedMonth,\n config.minDate,\n config.maxDate,\n ),\n [state.focusedYear, config.locale, state.focusedMonth, config.minDate, config.maxDate],\n );\n\n const yearItems = useMemo(\n () =>\n buildYearItems(state.yearPageStart, 12, state.focusedYear, config.minDate, config.maxDate),\n [state.yearPageStart, state.focusedYear, config.minDate, config.maxDate],\n );\n\n const ids = useMemo(\n () => ({\n root: `dp-${uid}`,\n label: `dp-label-${uid}`,\n input: `dp-input-${uid}`,\n trigger: `dp-trigger-${uid}`,\n content: `dp-content-${uid}`,\n }),\n [uid],\n );\n\n return {\n state: { ...state, open: effectiveOpen },\n dispatch: dispatch as Dispatch<DatePickerAction>,\n config,\n ids,\n derived: { weeks, weekDays, monthItems, yearItems, weekStartDay },\n };\n}\n","import React from \"react\";\nimport { DatePickerContext } from \"./context\";\nimport { useDatePicker } from \"./use-date-picker\";\nimport type { DatePickerRootProps } from \"../types\";\n\nexport type RootProps = DatePickerRootProps & { children: React.ReactNode };\n\nexport function Root(props: RootProps) {\n const { children, ...pickerProps } = props;\n const picker = useDatePicker(pickerProps as DatePickerRootProps);\n\n return (\n <DatePickerContext.Provider\n value={{\n state: picker.state,\n dispatch: picker.dispatch,\n config: picker.config,\n ids: picker.ids,\n }}\n >\n {children}\n </DatePickerContext.Provider>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\n\nexport type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;\n\nexport function Label({ children, ...props }: LabelProps) {\n const { ids } = useDatePickerContext();\n return (\n <label id={ids.label} htmlFor={ids.input} {...props}>\n {children}\n </label>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTimescape } from \"timescape/react\";\nimport { isDateDisabled } from \"../utils/date\";\nimport { getSegmentInfo } from \"../utils/locale\";\nimport { useDatePickerContext } from \"./context\";\n\n// React 19 ref callbacks must return void, not null. timescape still uses the\n// older signature so we wrap every ref to discard the null return value.\nfunction wrapRef<T extends HTMLElement>(ref: (el: T | null) => void | null): React.RefCallback<T> {\n return (el) => {\n ref(el);\n };\n}\n\nconst DEFAULT_LABELS = { month: \"Month\", day: \"Day\", year: \"Year\" };\nconst FIELD_MAP = {\n year: \"years\" as const,\n month: \"months\" as const,\n day: \"days\" as const,\n};\n\nexport interface InputProps {\n index?: 0 | 1;\n segmentLabels?: { month?: string; day?: string; year?: string };\n className?: string;\n style?: React.CSSProperties;\n}\n\n// ─── Inner component ────────────────────────────────────────────────────────\n// Lives in a separate component so React can remount it (via `key`) whenever\n// an external update (e.g. calendar click) must reinitialise timescape with\n// a new date. If we updated timescape's internal state imperatively with\n// `update()`, it would silently no-op when timescape starts in placeholder\n// mode (no initial date), so remounting is the reliable path.\n\ninterface SegmentsProps {\n sourceDate: Date | null;\n segmentOrder: string[];\n separator: string;\n labels: Record<string, string>;\n onDateChange: (date: Date | undefined) => void;\n groupId?: string | undefined;\n className?: string | undefined;\n style?: React.CSSProperties | undefined;\n}\n\nfunction Segments({\n sourceDate,\n segmentOrder,\n separator,\n labels,\n onDateChange,\n groupId,\n className,\n style,\n}: SegmentsProps) {\n const { state, dispatch, ids, config } = useDatePickerContext();\n\n // Keep onDateChange stable inside timescape even when the prop reference changes.\n const onDateChangeRef = useRef(onDateChange);\n onDateChangeRef.current = onDateChange;\n\n const opts: Record<string, unknown> = {\n wrapAround: true,\n onChangeDate: (d: Date | undefined) => onDateChangeRef.current(d),\n };\n if (config.minDate) opts.minDate = config.minDate;\n if (config.maxDate) opts.maxDate = config.maxDate;\n if (sourceDate) opts.date = sourceDate;\n\n const { getRootProps, getInputProps } = useTimescape(opts as Parameters<typeof useTimescape>[0]);\n\n const [focused, setFocused] = useState<string | null>(null);\n\n function handleSegmentFocus(field: string) {\n setFocused(field);\n if (!state.open && !config.readOnly) dispatch({ type: \"OPEN\", source: \"input\" });\n }\n\n function handleSegmentBlur(field: string, e: React.FocusEvent<HTMLInputElement>) {\n const relatedTarget = e.relatedTarget as Node | null;\n const isMovingWithin = e.currentTarget.parentElement?.contains(relatedTarget);\n if (!isMovingWithin) setFocused(null);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (config.readOnly) {\n e.preventDefault();\n return;\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n if (state.open) dispatch({ type: \"CLOSE\" });\n }\n }\n\n const { ref: rootRef, ...rootProps } = getRootProps();\n\n return (\n <div\n role=\"group\"\n id={groupId ?? ids.input}\n aria-labelledby={ids.label}\n tabIndex={-1}\n className={className}\n style={style}\n {...rootProps}\n ref={wrapRef(rootRef as (el: HTMLElement | null) => void | null)}\n {...(config.readOnly ? { \"data-readonly\": \"true\" } : {})}\n >\n {segmentOrder.map((field, i) => {\n const type = FIELD_MAP[field as keyof typeof FIELD_MAP];\n const isFocused = focused === field;\n const isTabStop = isFocused || (focused === null && i === 0);\n const { ref: inputRef, ...inputProps } = getInputProps(type);\n const wrappedInputRef = wrapRef(inputRef as (el: HTMLInputElement | null) => void | null);\n\n return (\n <React.Fragment key={field}>\n {i > 0 && (\n <span aria-hidden=\"true\" data-separator=\"true\">\n {separator}\n </span>\n )}\n <input\n {...inputProps}\n ref={wrappedInputRef}\n aria-label={labels[field]}\n data-segment={field}\n tabIndex={config.readOnly ? -1 : isTabStop ? 0 : -1}\n disabled={config.readOnly}\n onFocus={(e) => {\n inputRef(e.currentTarget);\n handleSegmentFocus(field);\n }}\n onBlur={(e) => handleSegmentBlur(field, e)}\n onKeyDown={handleKeyDown}\n className=\"timescape-input\"\n style={{\n width: field === \"year\" ? \"4ch\" : \"2ch\",\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n margin: 0,\n textAlign: \"center\",\n font: \"inherit\",\n outline: \"none\",\n }}\n />\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n\n// ─── Public component ────────────────────────────────────────────────────────\n\nexport function Input({ index, segmentLabels, className, style }: InputProps) {\n const { state, dispatch, config, ids } = useDatePickerContext();\n\n const { order: segmentOrder, separator } = useMemo(\n () => getSegmentInfo(config.locale),\n [config.locale],\n );\n\n const labels = {\n month: segmentLabels?.month ?? DEFAULT_LABELS.month,\n day: segmentLabels?.day ?? DEFAULT_LABELS.day,\n year: segmentLabels?.year ?? DEFAULT_LABELS.year,\n };\n\n const sourceDate =\n index === 1 ? state.rangeEnd : index === 0 ? state.rangeStart : state.selectedDate;\n\n // ── External-change detection ──────────────────────────────────────────\n // When the user picks a date from the calendar (external update), we\n // increment `timescapeKey` to remount <Segments> with the correct\n // initialDate. When the change came from this input's own onDateChange\n // (internal), we skip the remount to preserve focus.\n const isInternalChangeRef = useRef(false);\n const prevSourceDateRef = useRef(sourceDate);\n const [timescapeKey, setTimescapeKey] = useState(0);\n\n useEffect(() => {\n const prev = prevSourceDateRef.current;\n prevSourceDateRef.current = sourceDate;\n\n if (isInternalChangeRef.current) {\n isInternalChangeRef.current = false;\n return;\n }\n\n // Compare by value so same-day objects don't trigger a remount.\n const prevTime = prev?.getTime();\n const currTime = sourceDate?.getTime();\n if (prevTime !== currTime) {\n setTimescapeKey((k) => k + 1);\n }\n }, [sourceDate]);\n\n // ── Date-change handler ────────────────────────────────────────────────\n const onDateChange = useCallback(\n (nextDate: Date | undefined) => {\n if (!nextDate) return;\n if (isDateDisabled(nextDate, config)) return;\n\n const prevDate = prevSourceDateRef.current;\n if (prevDate && prevDate.getTime() === nextDate.getTime()) return;\n\n if (config.mode === \"multiple\") {\n // Clear the input after each toggle so the user can enter\n // the next date without a manual clear.\n dispatch({ type: \"FOCUS_DATE\", date: nextDate });\n dispatch({ type: \"TOGGLE_DATE\", date: nextDate });\n setTimescapeKey((k) => k + 1);\n return;\n }\n\n // For single / range: mark as internal so the useEffect above\n // does not remount timescape (we want to keep segment focus).\n isInternalChangeRef.current = true;\n dispatch({ type: \"FOCUS_DATE\", date: nextDate });\n\n if (config.mode === \"single\") {\n dispatch({ type: \"SELECT_DATE\", date: nextDate });\n } else if (config.mode === \"range\" && index === 0) {\n dispatch({ type: \"ANCHOR_DATE\", date: nextDate });\n } else if (config.mode === \"range\" && index === 1) {\n dispatch({ type: \"EXTEND_RANGE\", date: nextDate });\n }\n },\n [config, dispatch, index],\n );\n\n const groupId = index !== undefined ? `${ids.input}-${index}` : ids.input;\n\n return (\n <Segments\n key={timescapeKey}\n sourceDate={sourceDate}\n segmentOrder={segmentOrder}\n separator={separator}\n labels={labels}\n onDateChange={onDateChange}\n groupId={groupId}\n className={className}\n style={style}\n />\n );\n}\n","import type React from \"react\";\nimport { useDatePickerContext } from \"./context\";\n\nexport type TriggerProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-haspopup\" | \"aria-expanded\" | \"aria-controls\"\n>;\n\nexport function Trigger({ children, onClick, disabled, ...props }: TriggerProps) {\n const { state, dispatch, ids, config } = useDatePickerContext();\n\n const isDisabled = disabled ?? config.disabled === true;\n const isReadOnly = config.readOnly;\n\n return (\n <button\n type=\"button\"\n id={ids.trigger}\n aria-haspopup=\"dialog\"\n aria-expanded={state.open}\n aria-controls={state.open ? ids.content : undefined}\n aria-label={children ? undefined : \"Open date picker\"}\n disabled={isDisabled || isReadOnly}\n data-disabled={isDisabled || isReadOnly ? \"true\" : undefined}\n onClick={(e) => {\n if (isDisabled || isReadOnly) return;\n dispatch({ type: \"TOGGLE\", source: \"trigger\" });\n onClick?.(e);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import { useEffect, useRef, type RefObject } from \"react\";\n\nexport function useClickOutside(\n refs: RefObject<HTMLElement | null>[],\n handler: () => void,\n enabled = true,\n): void {\n // Keep a stable ref to the latest refs array so the effect doesn't need to\n // spread it into deps (oxlint flags spreads as complex expressions).\n const refsRef = useRef(refs);\n refsRef.current = refs;\n\n useEffect(() => {\n if (!enabled) return;\n\n function onPointerDown(e: PointerEvent) {\n const target = e.target as Node;\n if (refsRef.current.every((r) => !r.current?.contains(target))) {\n handler();\n }\n }\n\n document.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown, true);\n }, [enabled, handler]);\n}\n","import type { Ref, RefCallback, MutableRefObject } from \"react\";\n\nlet counter = 0;\n\nexport function generateId(prefix = \"dp\"): string {\n return `${prefix}-${++counter}`;\n}\n\nexport function mergeRefs<T>(...refs: Array<Ref<T> | undefined>): RefCallback<T> {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") {\n ref(node);\n } else {\n (ref as MutableRefObject<T | null>).current = node;\n }\n }\n };\n}\n\ntype EventHandler<E extends Event> = ((e: E) => void) | undefined;\n\nexport function composeEventHandlers<E extends Event>(\n ...handlers: Array<EventHandler<E>>\n): (e: E) => void {\n return (e: E) => {\n for (const handler of handlers) {\n if (e.defaultPrevented) break;\n handler?.(e);\n }\n };\n}\n\nexport function getFocusableElements(container: HTMLElement): HTMLElement[] {\n const selector = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(\", \");\n\n return Array.from(container.querySelectorAll<HTMLElement>(selector)).filter(\n (el) => !el.closest(\"[hidden]\") && el.offsetParent !== null,\n );\n}\n","import { useEffect, type RefObject } from \"react\";\nimport { getFocusableElements } from \"../utils/aria\";\n\nexport function useFocusTrap(containerRef: RefObject<HTMLElement | null>, enabled = true): void {\n useEffect(() => {\n if (!enabled || !containerRef.current) return;\n\n const container = containerRef.current;\n\n // Re-query focusable elements each keydown so view switches (day→month→year)\n // that change the DOM don't result in stale element lists.\n function onKeyDown(e: KeyboardEvent) {\n if (e.key !== \"Tab\") return;\n const focusable = getFocusableElements(container);\n if (!focusable.length) return;\n\n const first = focusable[0]!;\n const last = focusable[focusable.length - 1]!;\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n\n // When the DOM inside the dialog changes (e.g. view switch mounts new buttons),\n // ensure focus hasn't escaped to the body.\n const observer = new MutationObserver(() => {\n const active = document.activeElement;\n // Don't recapture focus if the input segments (spinbuttons) are intentionally focused\n if (active?.getAttribute(\"role\") === \"spinbutton\") return;\n if (!container.contains(active)) {\n const firstFocusable = getFocusableElements(container)[0];\n firstFocusable?.focus();\n }\n });\n\n observer.observe(container, { childList: true, subtree: true });\n container.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n container.removeEventListener(\"keydown\", onKeyDown);\n observer.disconnect();\n };\n }, [enabled, containerRef]);\n}\n","import { useFloating, autoUpdate, offset, flip, shift } from \"@floating-ui/react-dom\";\nimport type { Placement } from \"@floating-ui/react-dom\";\nimport type { CSSProperties } from \"react\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport interface FloatingOptions {\n referenceElement?: HTMLElement | null;\n open: boolean;\n side?: Side | undefined;\n align?: Align | undefined;\n sideOffset?: number | undefined;\n alignOffset?: number | undefined;\n avoidCollisions?: boolean | undefined;\n collisionPadding?: number | undefined;\n}\n\nfunction toPlacement(side: Side, align: Align): Placement {\n return (align === \"center\" ? side : `${side}-${align}`) as Placement;\n}\n\nexport function useDatePickerFloating({\n referenceElement,\n open,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n}: FloatingOptions): {\n setReference: (node: HTMLElement | null) => void;\n setFloating: (node: HTMLElement | null) => void;\n floatingStyles: CSSProperties;\n isPositioned: boolean;\n} {\n const { refs, floatingStyles, isPositioned } = useFloating({\n placement: toPlacement(side, align),\n strategy: \"fixed\",\n open,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset({ mainAxis: sideOffset, crossAxis: alignOffset }),\n ...(avoidCollisions ? [flip(), shift({ padding: collisionPadding })] : []),\n ],\n ...(referenceElement !== undefined ? { elements: { reference: referenceElement } } : {}),\n });\n\n return {\n setReference: refs.setReference,\n setFloating: refs.setFloating,\n floatingStyles,\n isPositioned,\n };\n}\n","import React, { useRef, useEffect, useState, useCallback, useLayoutEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useDatePickerContext } from \"./context\";\nimport { useClickOutside } from \"./use-click-outside\";\nimport { useFocusTrap } from \"./use-focus-trap\";\nimport { formatMonthYear, formatYear } from \"../utils/locale\";\nimport { useDatePickerFloating } from \"./use-floating\";\n\nexport interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {\n forceMount?: boolean;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionPadding?: number;\n portal?: boolean;\n}\n\nexport function Content({\n children,\n forceMount,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n portal = false,\n style,\n onKeyDown,\n ...props\n}: ContentProps) {\n const { state, dispatch, ids, config } = useDatePickerContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const isOpen = state.open;\n const shouldRender = forceMount || isOpen;\n\n // Kept as refs (not state) so click-outside detection stays stable across renders.\n const triggerRef = useRef<HTMLElement | null>(null);\n const inputRef = useRef<HTMLElement | null>(null);\n const input0Ref = useRef<HTMLElement | null>(null);\n const input1Ref = useRef<HTMLElement | null>(null);\n useEffect(() => {\n triggerRef.current = document.getElementById(ids.trigger);\n inputRef.current = document.getElementById(ids.input);\n input0Ref.current = document.getElementById(`${ids.input}-0`);\n input1Ref.current = document.getElementById(`${ids.input}-1`);\n });\n\n const { setReference, setFloating, floatingStyles, isPositioned } = useDatePickerFloating({\n open: isOpen,\n ...(side !== undefined && { side }),\n ...(align !== undefined && { align }),\n ...(sideOffset !== undefined && { sideOffset }),\n ...(alignOffset !== undefined && { alignOffset }),\n ...(avoidCollisions !== undefined && { avoidCollisions }),\n ...(collisionPadding !== undefined && { collisionPadding }),\n });\n\n // Resolve and bind the Floating UI anchor while the popover is open.\n //\n // The segmented Input remounts its group element (via a `key`) whenever an\n // external date change occurs, which swaps out the DOM node we anchor to.\n // Because that remount is local state inside <Input>, it does NOT re-render\n // <Content>, so a one-shot effect would keep pointing Floating UI at the now\n // detached old node — a detached node measures as (0,0), parking the popover\n // in the top-left corner. We watch the DOM for that swap and re-bind the\n // reference to the current node so positioning always tracks the live anchor.\n useLayoutEffect(() => {\n if (!isOpen) return;\n\n const resolveAnchor = () =>\n document.getElementById(ids.input) ||\n document.getElementById(`${ids.input}-0`) ||\n document.getElementById(ids.trigger);\n\n let current = resolveAnchor();\n setReference(current);\n\n const observer = new MutationObserver(() => {\n const next = resolveAnchor();\n if (next && next !== current) {\n current = next;\n setReference(next);\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [isOpen, ids.input, ids.trigger, setReference]);\n\n // Memoized so the ref callback identity is stable across re-renders.\n // Without this, React would call it with null then element on every render,\n // causing setFloating null/element cycles that interfere with state updates.\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n (contentRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n setFloating(node);\n },\n [setFloating],\n );\n\n useClickOutside(\n [contentRef, triggerRef, inputRef, input0Ref, input1Ref],\n () => dispatch({ type: \"CLOSE\" }),\n isOpen,\n );\n useFocusTrap(contentRef, isOpen);\n\n // Floating UI computes the position one frame after mount, so the element\n // briefly sits at (0,0) before jumping to the anchor. If the consumer applies\n // a CSS transition (e.g. `transition-all`), that jump animates as a visible\n // \"fly-in\" from the top-left corner. We suppress transitions until the frame\n // after the first successful positioning, then restore them so later moves\n // (scroll, resize, collision flips) still animate smoothly.\n const [transitionsReady, setTransitionsReady] = useState(false);\n useEffect(() => {\n if (!isOpen || !isPositioned) {\n setTransitionsReady(false);\n return;\n }\n const raf = requestAnimationFrame(() => setTransitionsReady(true));\n return () => cancelAnimationFrame(raf);\n }, [isOpen, isPositioned]);\n\n useEffect(() => {\n if (!isOpen || !contentRef.current) return;\n if (state.openSource === \"input\") return;\n const active = document.activeElement;\n const activeRole = active?.getAttribute(\"role\");\n if (activeRole === \"combobox\" || activeRole === \"spinbutton\") return;\n const firstFocusable = contentRef.current.querySelector<HTMLElement>(\n 'button:not([disabled]), [tabindex=\"0\"]',\n );\n firstFocusable?.focus();\n }, [isOpen, state.openSource]);\n\n const announcement =\n state.view === \"day\"\n ? formatMonthYear(new Date(state.focusedYear, state.focusedMonth, 1), config.locale)\n : state.view === \"month\"\n ? formatYear(state.focusedYear, config.locale)\n : `${state.yearPageStart}–${state.yearPageStart + 11}`;\n\n if (!shouldRender) return null;\n\n const content = (\n <div\n ref={mergedRef}\n id={ids.content}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ids.label}\n data-state={isOpen ? \"open\" : \"closed\"}\n style={{\n ...floatingStyles,\n ...(!isOpen ? { display: \"none\" } : undefined),\n // Hide via opacity (not `visibility`/`display`) while Floating UI\n // resolves the first position: this keeps the popover at (0,0)\n // invisible to sighted users for one frame without removing it from\n // the accessibility tree, so assistive tech still sees the dialog.\n ...(isOpen && !isPositioned ? { opacity: 0, pointerEvents: \"none\" } : undefined),\n ...(isOpen && !transitionsReady ? { transition: \"none\" } : undefined),\n ...style,\n }}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n dispatch({ type: \"CLOSE\" });\n document.getElementById(ids.trigger)?.focus();\n }\n onKeyDown?.(e);\n }}\n {...props}\n >\n <span\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style={{\n position: \"absolute\",\n width: 1,\n height: 1,\n overflow: \"hidden\",\n clip: \"rect(0,0,0,0)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {isOpen ? announcement : \"\"}\n </span>\n {children}\n </div>\n );\n\n return portal ? createPortal(content, document.body) : content;\n}\n","import React from \"react\";\n\nexport type ViewControlProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function ViewControl({ children, ...props }: ViewControlProps) {\n return (\n <div role=\"group\" {...props}>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\n\nexport type PrevTriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\">;\n\nexport function PrevTrigger({ children, onClick, ...props }: PrevTriggerProps) {\n const { state, dispatch } = useDatePickerContext();\n const labels: Record<string, string> = {\n day: \"Go to previous month\",\n month: \"Go to previous year\",\n year: \"Go to previous years\",\n };\n\n return (\n <button\n type=\"button\"\n aria-label={labels[state.view]}\n onClick={(e) => {\n dispatch({ type: \"NAV_PREV\" });\n onClick?.(e);\n }}\n {...props}\n >\n {children ?? \"‹\"}\n </button>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\n\nexport type NextTriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\">;\n\nexport function NextTrigger({ children, onClick, ...props }: NextTriggerProps) {\n const { state, dispatch } = useDatePickerContext();\n const labels: Record<string, string> = {\n day: \"Go to next month\",\n month: \"Go to next year\",\n year: \"Go to next years\",\n };\n\n return (\n <button\n type=\"button\"\n aria-label={labels[state.view]}\n onClick={(e) => {\n dispatch({ type: \"NAV_NEXT\" });\n onClick?.(e);\n }}\n {...props}\n >\n {children ?? \"›\"}\n </button>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { formatMonthYear } from \"../utils/locale\";\nimport type { ViewMode } from \"../types\";\n\nexport type ViewTriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\">;\n\nconst nextView: Record<ViewMode, ViewMode> = {\n day: \"month\",\n month: \"year\",\n year: \"day\",\n};\n\nconst ariaLabel: Record<ViewMode, string> = {\n day: \"Switch to month view\",\n month: \"Switch to year view\",\n year: \"Switch to day view\",\n};\n\nexport function ViewTrigger({ children, onClick, ...props }: ViewTriggerProps) {\n const { state, dispatch, config } = useDatePickerContext();\n const label = formatMonthYear(new Date(state.focusedYear, state.focusedMonth, 1), config.locale);\n const yearRange = `${state.yearPageStart}–${state.yearPageStart + 11}`;\n\n const displayLabel =\n state.view === \"year\" ? yearRange : state.view === \"month\" ? String(state.focusedYear) : label;\n\n return (\n <button\n type=\"button\"\n aria-label={ariaLabel[state.view]}\n aria-live=\"polite\"\n onClick={(e) => {\n dispatch({ type: \"SET_VIEW\", view: nextView[state.view] });\n onClick?.(e);\n }}\n {...props}\n >\n {children ?? displayLabel}\n </button>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { DatePickerViewContext } from \"./context\";\nimport type { ViewMode } from \"../types\";\n\nexport interface ViewProps {\n view: ViewMode;\n children: React.ReactNode;\n}\n\nexport function View({ view, children }: ViewProps) {\n const { state } = useDatePickerContext();\n if (state.view !== view) return null;\n return (\n <DatePickerViewContext.Provider value={{ view }}>{children}</DatePickerViewContext.Provider>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { buildWeekDays } from \"../utils/calendar\";\nimport { getWeekStartDay } from \"../utils/locale\";\n\nexport interface WeekDaysProps {\n format?: \"long\" | \"short\" | \"narrow\";\n className?: string;\n}\n\nexport function WeekDays({ format = \"short\", className }: WeekDaysProps) {\n const { config } = useDatePickerContext();\n const weekStartDay = getWeekStartDay(config.locale, config.weekStartsOn);\n const days = buildWeekDays(config.locale, weekStartDay, format);\n\n return (\n <tr className={className}>\n {days.map((day) => (\n <th key={day.ariaLabel} scope=\"col\" abbr={day.ariaLabel}>\n {day.label}\n </th>\n ))}\n </tr>\n );\n}\n","import React from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { isSameDay, isInRange, isDateDisabled, startOfDay } from \"../utils/date\";\nimport type { DayCellMeta } from \"../types\";\n\nexport interface DayProps {\n date: Date;\n children?: (meta: DayCellMeta) => React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function Day({ date, children, className, style }: DayProps) {\n const { state, dispatch, config } = useDatePickerContext();\n const today = startOfDay(new Date());\n\n const meta: DayCellMeta = {\n date,\n isCurrentMonth: date.getMonth() === state.focusedMonth,\n isToday: isSameDay(date, today),\n isSelected:\n config.mode === \"single\"\n ? isSameDay(date, state.selectedDate)\n : config.mode === \"multiple\"\n ? state.selectedDates.some((d) => isSameDay(d, date))\n : isSameDay(date, state.rangeStart) || isSameDay(date, state.rangeEnd),\n isDisabled: isDateDisabled(date, config),\n isRangeStart: isSameDay(date, state.rangeStart),\n isRangeEnd: isSameDay(date, state.rangeEnd ?? state.hoverDate),\n isInRange: isInRange(date, state.rangeStart, state.rangeEnd ?? state.hoverDate),\n isHovered: isSameDay(date, state.hoverDate),\n };\n\n const isFocused = isSameDay(date, state.focusedDate);\n\n return (\n <td\n role=\"gridcell\"\n aria-selected={meta.isSelected}\n aria-disabled={meta.isDisabled}\n aria-current={meta.isToday ? \"date\" : undefined}\n tabIndex={isFocused ? 0 : -1}\n className={className}\n style={style}\n data-selected={meta.isSelected || undefined}\n data-today={meta.isToday || undefined}\n data-disabled={meta.isDisabled || undefined}\n data-outside-month={!meta.isCurrentMonth || undefined}\n data-range-start={meta.isRangeStart || undefined}\n data-range-end={meta.isRangeEnd || undefined}\n data-in-range={meta.isInRange || undefined}\n onClick={() => {\n if (!meta.isDisabled && !config.readOnly) dispatch({ type: \"SELECT_DATE\", date });\n }}\n onMouseEnter={() => {\n if (config.mode === \"range\") dispatch({ type: \"HOVER_DATE\", date });\n }}\n onMouseLeave={() => {\n if (config.mode === \"range\") dispatch({ type: \"HOVER_DATE\", date: null });\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!meta.isDisabled && !config.readOnly) dispatch({ type: \"SELECT_DATE\", date });\n }\n }}\n >\n {children ? children(meta) : date.getDate()}\n </td>\n );\n}\n","import React, { useRef, useEffect } from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { buildCalendarGrid } from \"../utils/calendar\";\nimport { getWeekStartDay, formatMonthYear } from \"../utils/locale\";\nimport { addDays, addMonths } from \"../utils/date\";\nimport { Day } from \"./day\";\n\nexport interface GridProps {\n children?: (ctx: { weeks: Date[][] }) => React.ReactNode;\n header?: React.ReactNode;\n className?: string;\n}\n\nfunction defaultRender(ws: Date[][]) {\n return ws.map((week, wi) => (\n <tr key={wi}>\n {week.map((day, di) => (\n <Day key={di} date={day} />\n ))}\n </tr>\n ));\n}\n\nexport function Grid({ children, header, className }: GridProps) {\n const { state, dispatch, config } = useDatePickerContext();\n const gridRef = useRef<HTMLTableElement>(null);\n\n const weekStartDay = getWeekStartDay(config.locale, config.weekStartsOn);\n const weeks = buildCalendarGrid(state.focusedYear, state.focusedMonth, weekStartDay);\n const label = formatMonthYear(new Date(state.focusedYear, state.focusedMonth, 1), config.locale);\n\n // Move DOM focus to the focused cell after render\n const focusedDateStr = state.focusedDate?.toDateString();\n useEffect(() => {\n if (!gridRef.current || !focusedDateStr) return;\n // Don't steal focus while the user is typing in the segmented input\n if (document.activeElement?.getAttribute(\"role\") === \"spinbutton\") return;\n if (state.openSource === \"input\" && !gridRef.current.contains(document.activeElement)) {\n return;\n }\n const focused = gridRef.current.querySelector<HTMLElement>('[tabindex=\"0\"]');\n if (focused && document.activeElement !== focused) focused.focus();\n }, [focusedDateStr, state.openSource]);\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLTableElement>) {\n if (!state.focusedDate) return;\n let next: Date | null = null;\n\n switch (e.key) {\n case \"ArrowRight\":\n next = addDays(state.focusedDate, 1);\n break;\n case \"ArrowLeft\":\n next = addDays(state.focusedDate, -1);\n break;\n case \"ArrowDown\":\n next = addDays(state.focusedDate, 7);\n break;\n case \"ArrowUp\":\n next = addDays(state.focusedDate, -7);\n break;\n case \"PageDown\":\n next = e.ctrlKey\n ? new Date(state.focusedYear + 1, state.focusedMonth, state.focusedDate.getDate())\n : addMonths(state.focusedDate, 1);\n break;\n case \"PageUp\":\n next = e.ctrlKey\n ? new Date(state.focusedYear - 1, state.focusedMonth, state.focusedDate.getDate())\n : addMonths(state.focusedDate, -1);\n break;\n case \"Home\": {\n const d = new Date(state.focusedDate);\n const diff = (d.getDay() - weekStartDay + 7) % 7;\n next = addDays(d, -diff);\n break;\n }\n case \"End\": {\n const d = new Date(state.focusedDate);\n const diff = (weekStartDay + 6 - d.getDay() + 7) % 7;\n next = addDays(d, diff);\n break;\n }\n default:\n return;\n }\n\n e.preventDefault();\n dispatch({ type: \"FOCUS_DATE\", date: next });\n }\n\n return (\n <table\n ref={gridRef}\n role=\"grid\"\n aria-label={label}\n className={className}\n onKeyDown={handleKeyDown}\n >\n {header && <thead>{header}</thead>}\n <tbody>{children ? children({ weeks }) : defaultRender(weeks)}</tbody>\n </table>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { MonthGridFocusContext } from \"./context\";\nimport { buildMonthItems } from \"../utils/calendar\";\nimport type { MonthItem } from \"../types\";\n\nexport interface MonthGridProps {\n children: (ctx: { months: MonthItem[] }) => React.ReactNode;\n className?: string;\n}\n\nexport function MonthGrid({ children, className }: MonthGridProps) {\n const { state, config, dispatch } = useDatePickerContext();\n const months = buildMonthItems(\n state.focusedYear,\n config.locale,\n state.focusedMonth,\n config.minDate,\n config.maxDate,\n );\n\n const [focusedIndex, setFocusedIndex] = useState(state.focusedMonth);\n const gridRef = useRef<HTMLDivElement>(null);\n\n // Always holds the latest focusedMonth so the year-change effect below can\n // read it without listing it as a dep (which would re-run on every month\n // keyboard navigation and interfere with arrow-key focus).\n const focusedMonthRef = useRef(state.focusedMonth);\n focusedMonthRef.current = state.focusedMonth;\n\n // Sync focused cell when the user navigates to a different year.\n useEffect(() => {\n setFocusedIndex(focusedMonthRef.current);\n }, [state.focusedYear]);\n\n // Move DOM focus to the focused cell after state change\n useEffect(() => {\n const focused = gridRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]');\n if (focused && gridRef.current?.contains(document.activeElement)) {\n focused.focus();\n }\n }, [focusedIndex, state.focusedYear]);\n\n function handleKeyDown(e: React.KeyboardEvent) {\n let next = focusedIndex;\n switch (e.key) {\n case \"ArrowRight\":\n next = Math.min(focusedIndex + 1, 11);\n break;\n case \"ArrowLeft\":\n next = Math.max(focusedIndex - 1, 0);\n break;\n case \"ArrowDown\":\n next = Math.min(focusedIndex + 3, 11);\n break;\n case \"ArrowUp\":\n next = Math.max(focusedIndex - 3, 0);\n break;\n case \"Home\":\n next = 0;\n break;\n case \"End\":\n next = 11;\n break;\n case \"PageDown\":\n dispatch({ type: \"NAV_NEXT\" });\n e.preventDefault();\n return;\n case \"PageUp\":\n dispatch({ type: \"NAV_PREV\" });\n e.preventDefault();\n return;\n case \"Escape\":\n dispatch({ type: \"SET_VIEW\", view: \"day\" });\n e.preventDefault();\n return;\n case \"Enter\":\n case \" \":\n dispatch({ type: \"SELECT_MONTH\", month: focusedIndex });\n e.preventDefault();\n return;\n default:\n return;\n }\n e.preventDefault();\n setFocusedIndex(next);\n }\n\n return (\n <MonthGridFocusContext.Provider value={focusedIndex}>\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={String(state.focusedYear)}\n className={className}\n onKeyDown={handleKeyDown}\n >\n {children({ months })}\n </div>\n </MonthGridFocusContext.Provider>\n );\n}\n","import React, { useContext } from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { MonthGridFocusContext } from \"./context\";\n\nexport interface MonthCellProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-selected\" | \"aria-disabled\"\n> {\n value: number;\n}\n\nexport function MonthCell({ value, children, onClick, ...props }: MonthCellProps) {\n const { dispatch } = useDatePickerContext();\n const focusedIndex = useContext(MonthGridFocusContext);\n const isFocused = focusedIndex === value;\n\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n aria-selected={isFocused}\n tabIndex={isFocused ? 0 : -1}\n data-selected={isFocused || undefined}\n onClick={(e) => {\n dispatch({ type: \"SELECT_MONTH\", month: value });\n onClick?.(e);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { YearGridFocusContext } from \"./context\";\nimport { buildYearItems } from \"../utils/calendar\";\n\nexport interface YearItem {\n value: number;\n isSelected: boolean;\n isDisabled: boolean;\n}\n\nexport interface YearGridProps {\n children: (ctx: { years: YearItem[] }) => React.ReactNode;\n className?: string;\n}\n\nexport function YearGrid({ children, className }: YearGridProps) {\n const { state, config, dispatch } = useDatePickerContext();\n const years = buildYearItems(\n state.yearPageStart,\n 12,\n state.focusedYear,\n config.minDate,\n config.maxDate,\n );\n\n const [focusedYear, setFocusedYear] = useState(state.focusedYear);\n const gridRef = useRef<HTMLDivElement>(null);\n\n // Keep focused year within the current page when page changes\n useEffect(() => {\n const inPage = focusedYear >= state.yearPageStart && focusedYear < state.yearPageStart + 12;\n if (!inPage) setFocusedYear(state.yearPageStart);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: only re-check when page changes, not on every focusedYear navigation\n }, [state.yearPageStart]);\n\n // Move DOM focus to the focused cell\n useEffect(() => {\n const focused = gridRef.current?.querySelector<HTMLElement>('[tabindex=\"0\"]');\n if (focused && gridRef.current?.contains(document.activeElement)) {\n focused.focus();\n }\n }, [focusedYear, state.yearPageStart]);\n\n function handleKeyDown(e: React.KeyboardEvent) {\n let next = focusedYear;\n const pageStart = state.yearPageStart;\n const pageEnd = pageStart + 11;\n\n switch (e.key) {\n case \"ArrowRight\":\n next = Math.min(focusedYear + 1, pageEnd);\n break;\n case \"ArrowLeft\":\n next = Math.max(focusedYear - 1, pageStart);\n break;\n // 4-column grid: ↓/↑ = ±4 years (next/prev row)\n case \"ArrowDown\":\n next = Math.min(focusedYear + 4, pageEnd);\n break;\n case \"ArrowUp\":\n next = Math.max(focusedYear - 4, pageStart);\n break;\n case \"Home\":\n next = pageStart;\n break;\n case \"End\":\n next = pageEnd;\n break;\n case \"PageDown\":\n dispatch({ type: \"YEAR_PAGE_NEXT\" });\n e.preventDefault();\n return;\n case \"PageUp\":\n dispatch({ type: \"YEAR_PAGE_PREV\" });\n e.preventDefault();\n return;\n case \"Escape\":\n dispatch({ type: \"SET_VIEW\", view: \"month\" });\n e.preventDefault();\n return;\n case \"Enter\":\n case \" \":\n dispatch({ type: \"SELECT_YEAR\", year: focusedYear });\n e.preventDefault();\n return;\n default:\n return;\n }\n e.preventDefault();\n setFocusedYear(next);\n }\n\n return (\n <YearGridFocusContext.Provider value={focusedYear}>\n <div\n ref={gridRef}\n role=\"grid\"\n aria-label={`${state.yearPageStart}–${state.yearPageStart + 11}`}\n className={className}\n onKeyDown={handleKeyDown}\n >\n {children({ years })}\n </div>\n </YearGridFocusContext.Provider>\n );\n}\n","import React, { useContext } from \"react\";\nimport { useDatePickerContext } from \"./context\";\nimport { YearGridFocusContext } from \"./context\";\n\nexport interface YearCellProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-selected\" | \"aria-disabled\"\n> {\n value: number;\n}\n\nexport function YearCell({ value, children, onClick, ...props }: YearCellProps) {\n const { dispatch } = useDatePickerContext();\n const focusedYear = useContext(YearGridFocusContext);\n const isFocused = focusedYear === value;\n\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n aria-selected={isFocused}\n tabIndex={isFocused ? 0 : -1}\n data-selected={isFocused || undefined}\n onClick={(e) => {\n dispatch({ type: \"SELECT_YEAR\", year: value });\n onClick?.(e);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import React from \"react\";\nimport { ViewControl } from \"./view-control\";\nimport { PrevTrigger } from \"./prev-trigger\";\nimport { NextTrigger } from \"./next-trigger\";\nimport { ViewTrigger } from \"./view-trigger\";\nimport { View } from \"./view\";\nimport { WeekDays } from \"./week-days\";\nimport { Grid } from \"./grid\";\nimport { MonthGrid } from \"./month-grid\";\nimport { MonthCell } from \"./month-cell\";\nimport { YearGrid } from \"./year-grid\";\nimport { YearCell } from \"./year-cell\";\n\nexport interface CalendarProps {\n className?: string;\n}\n\nexport function Calendar({ className }: CalendarProps) {\n return (\n <div className={className}>\n <ViewControl>\n <PrevTrigger />\n <ViewTrigger />\n <NextTrigger />\n </ViewControl>\n\n <View view=\"day\">\n <Grid header={<WeekDays />} />\n </View>\n\n <View view=\"month\">\n <MonthGrid>\n {({ months }) => (\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(3, 1fr)\" }}>\n {months.map((m) => (\n <MonthCell key={m.value} value={m.value} disabled={m.isDisabled}>\n {m.label}\n </MonthCell>\n ))}\n </div>\n )}\n </MonthGrid>\n </View>\n\n <View view=\"year\">\n <YearGrid>\n {({ years }) => (\n <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\" }}>\n {years.map((y) => (\n <YearCell key={y.value} value={y.value} disabled={y.isDisabled}>\n {y.value}\n </YearCell>\n ))}\n </div>\n )}\n </YearGrid>\n </View>\n </div>\n );\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@at5/kairo",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Headless date & scheduling primitives for React",
|
|
5
|
+
"files": [
|
|
6
|
+
"dist",
|
|
7
|
+
"README.md",
|
|
8
|
+
"CHANGELOG.md"
|
|
9
|
+
],
|
|
10
|
+
"type": "module",
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"main": "./dist/index.cjs",
|
|
13
|
+
"module": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js",
|
|
19
|
+
"require": "./dist/index.cjs"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/allysontsoares/primitives",
|
|
25
|
+
"directory": "packages/kairo"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"provenance": true
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@floating-ui/react-dom": "^2.1.8",
|
|
33
|
+
"timescape": "^0.8.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@storybook/addon-a11y": "^8.0.0",
|
|
37
|
+
"@storybook/addon-essentials": "8.6.18",
|
|
38
|
+
"@storybook/addon-interactions": "8.6.18",
|
|
39
|
+
"@storybook/addon-onboarding": "8.6.18",
|
|
40
|
+
"@storybook/blocks": "8.6.18",
|
|
41
|
+
"@storybook/react": "8.6.18",
|
|
42
|
+
"@storybook/react-vite": "^8.0.0",
|
|
43
|
+
"@storybook/test": "8.6.18",
|
|
44
|
+
"@testing-library/jest-dom": "^6.4.0",
|
|
45
|
+
"@testing-library/react": "^16.0.0",
|
|
46
|
+
"@testing-library/user-event": "^14.5.0",
|
|
47
|
+
"@types/react": "^19.0.0",
|
|
48
|
+
"@types/react-dom": "^19.0.0",
|
|
49
|
+
"@vitest/coverage-v8": "^4.0.0",
|
|
50
|
+
"jsdom": "^26.0.0",
|
|
51
|
+
"react": "^19.0.0",
|
|
52
|
+
"react-dom": "^19.0.0",
|
|
53
|
+
"storybook": "8.6.18",
|
|
54
|
+
"tsup": "^8.0.0",
|
|
55
|
+
"typescript": "^6.0.0",
|
|
56
|
+
"vite": "^8.0.0",
|
|
57
|
+
"vitest": "^4.0.0"
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"react": ">=19.0.0",
|
|
61
|
+
"react-dom": ">=19.0.0"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=22"
|
|
65
|
+
},
|
|
66
|
+
"scripts": {
|
|
67
|
+
"build": "tsup",
|
|
68
|
+
"dev": "tsup --watch",
|
|
69
|
+
"test": "vitest run",
|
|
70
|
+
"test:watch": "vitest",
|
|
71
|
+
"test:ui": "vitest --ui",
|
|
72
|
+
"test:coverage": "vitest run --coverage",
|
|
73
|
+
"typecheck": "tsc --noEmit",
|
|
74
|
+
"storybook": "BROWSER=xdg-open storybook dev -p 6006",
|
|
75
|
+
"build-storybook": "storybook build"
|
|
76
|
+
}
|
|
77
|
+
}
|