@nori-ui/core 1.6.0 → 1.8.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/dist/{chunk-7UKRN73P.js → chunk-2XJCLPNH.js} +3 -3
- package/dist/{chunk-7UKRN73P.js.map → chunk-2XJCLPNH.js.map} +1 -1
- package/dist/{chunk-5PSC5HT4.js → chunk-3B345SQU.js} +5 -5
- package/dist/{chunk-5PSC5HT4.js.map → chunk-3B345SQU.js.map} +1 -1
- package/dist/{chunk-JSAG5YO7.js → chunk-3IIIHZHT.js} +3 -3
- package/dist/{chunk-JSAG5YO7.js.map → chunk-3IIIHZHT.js.map} +1 -1
- package/dist/{chunk-DDGMLLS3.js → chunk-3W3XYULK.js} +3 -3
- package/dist/{chunk-DDGMLLS3.js.map → chunk-3W3XYULK.js.map} +1 -1
- package/dist/{chunk-WYPGQVDV.js → chunk-5YHT252H.js} +3 -3
- package/dist/{chunk-WYPGQVDV.js.map → chunk-5YHT252H.js.map} +1 -1
- package/dist/{chunk-ZMSIYLSI.js → chunk-7FSFJA33.js} +3 -3
- package/dist/{chunk-ZMSIYLSI.js.map → chunk-7FSFJA33.js.map} +1 -1
- package/dist/chunk-BOMPFNM4.js +165 -0
- package/dist/chunk-BOMPFNM4.js.map +1 -0
- package/dist/chunk-BVLOX4A3.js +256 -0
- package/dist/chunk-BVLOX4A3.js.map +1 -0
- package/dist/{chunk-YZ27OS2R.js → chunk-C32XGHWO.js} +3 -3
- package/dist/{chunk-YZ27OS2R.js.map → chunk-C32XGHWO.js.map} +1 -1
- package/dist/{chunk-UJWCEGQY.js → chunk-C5HQPXRI.js} +3 -3
- package/dist/{chunk-UJWCEGQY.js.map → chunk-C5HQPXRI.js.map} +1 -1
- package/dist/{chunk-XALU6LOT.js → chunk-EN4CLDGZ.js} +3 -3
- package/dist/{chunk-XALU6LOT.js.map → chunk-EN4CLDGZ.js.map} +1 -1
- package/dist/{chunk-6AD6KCVB.js → chunk-F5UKI7XD.js} +3 -3
- package/dist/{chunk-6AD6KCVB.js.map → chunk-F5UKI7XD.js.map} +1 -1
- package/dist/chunk-GTAXVTLF.js +43 -0
- package/dist/chunk-GTAXVTLF.js.map +1 -0
- package/dist/{chunk-NNFJKRXZ.js → chunk-H2LHWJ52.js} +3 -3
- package/dist/{chunk-NNFJKRXZ.js.map → chunk-H2LHWJ52.js.map} +1 -1
- package/dist/{chunk-PZS4A4VQ.js → chunk-HXCETKCC.js} +3 -3
- package/dist/{chunk-PZS4A4VQ.js.map → chunk-HXCETKCC.js.map} +1 -1
- package/dist/chunk-IGBXSBF7.js +71 -0
- package/dist/chunk-IGBXSBF7.js.map +1 -0
- package/dist/{chunk-JXLEMBDB.js → chunk-IIVTPN62.js} +3 -3
- package/dist/{chunk-JXLEMBDB.js.map → chunk-IIVTPN62.js.map} +1 -1
- package/dist/{chunk-PNP7L4TA.js → chunk-ISCJST4P.js} +3 -3
- package/dist/{chunk-PNP7L4TA.js.map → chunk-ISCJST4P.js.map} +1 -1
- package/dist/{chunk-TLS54G6Y.js → chunk-IWM2XDXH.js} +3 -3
- package/dist/{chunk-TLS54G6Y.js.map → chunk-IWM2XDXH.js.map} +1 -1
- package/dist/chunk-J5LK2XHE.js +118 -0
- package/dist/chunk-J5LK2XHE.js.map +1 -0
- package/dist/chunk-KFFGDET3.js +27 -0
- package/dist/chunk-KFFGDET3.js.map +1 -0
- package/dist/{chunk-MRJWPRCX.js → chunk-L6VYDM7S.js} +3 -3
- package/dist/{chunk-MRJWPRCX.js.map → chunk-L6VYDM7S.js.map} +1 -1
- package/dist/chunk-M4BI63P6.js +188 -0
- package/dist/chunk-M4BI63P6.js.map +1 -0
- package/dist/{chunk-RUWD35UI.js → chunk-MK57AOTI.js} +4 -4
- package/dist/{chunk-RUWD35UI.js.map → chunk-MK57AOTI.js.map} +1 -1
- package/dist/{chunk-3BDDPFCI.js → chunk-MOAIQHR7.js} +3 -3
- package/dist/{chunk-3BDDPFCI.js.map → chunk-MOAIQHR7.js.map} +1 -1
- package/dist/{chunk-5XEGZFG5.js → chunk-MYBBBLYE.js} +3 -3
- package/dist/{chunk-5XEGZFG5.js.map → chunk-MYBBBLYE.js.map} +1 -1
- package/dist/{chunk-WP2Z2ATO.js → chunk-O6M3F7BZ.js} +5 -5
- package/dist/{chunk-WP2Z2ATO.js.map → chunk-O6M3F7BZ.js.map} +1 -1
- package/dist/{chunk-FEPTH5RV.js → chunk-OELY6K44.js} +3 -3
- package/dist/{chunk-FEPTH5RV.js.map → chunk-OELY6K44.js.map} +1 -1
- package/dist/{chunk-BZLT6R62.js → chunk-OIHX5B4R.js} +3 -3
- package/dist/{chunk-BZLT6R62.js.map → chunk-OIHX5B4R.js.map} +1 -1
- package/dist/{chunk-QJVS2VXS.js → chunk-PGYEIXCO.js} +4 -4
- package/dist/{chunk-QJVS2VXS.js.map → chunk-PGYEIXCO.js.map} +1 -1
- package/dist/{chunk-UZD77M3J.js → chunk-PJTCO76H.js} +3 -3
- package/dist/{chunk-UZD77M3J.js.map → chunk-PJTCO76H.js.map} +1 -1
- package/dist/{chunk-4PUPKWEP.js → chunk-PJXVLE24.js} +4 -4
- package/dist/{chunk-4PUPKWEP.js.map → chunk-PJXVLE24.js.map} +1 -1
- package/dist/{chunk-WGT345SV.js → chunk-PLQPBMG2.js} +3 -3
- package/dist/{chunk-WGT345SV.js.map → chunk-PLQPBMG2.js.map} +1 -1
- package/dist/{chunk-OMU4R4Y5.js → chunk-PQW5LKAI.js} +3 -3
- package/dist/{chunk-OMU4R4Y5.js.map → chunk-PQW5LKAI.js.map} +1 -1
- package/dist/{chunk-Y5TJ7CAX.js → chunk-RI4Y2C5U.js} +3 -3
- package/dist/{chunk-Y5TJ7CAX.js.map → chunk-RI4Y2C5U.js.map} +1 -1
- package/dist/{chunk-3OIWAS2P.js → chunk-SF6WPUC5.js} +3 -3
- package/dist/{chunk-3OIWAS2P.js.map → chunk-SF6WPUC5.js.map} +1 -1
- package/dist/{chunk-MKSDYRWQ.js → chunk-STX5UKYT.js} +3 -3
- package/dist/{chunk-MKSDYRWQ.js.map → chunk-STX5UKYT.js.map} +1 -1
- package/dist/{chunk-2RL6WCFC.js → chunk-TSWPHJIU.js} +4 -4
- package/dist/{chunk-2RL6WCFC.js.map → chunk-TSWPHJIU.js.map} +1 -1
- package/dist/{chunk-SFNDR6DI.js → chunk-U2ZKY2CP.js} +3 -3
- package/dist/{chunk-SFNDR6DI.js.map → chunk-U2ZKY2CP.js.map} +1 -1
- package/dist/{chunk-PABG3IJ6.js → chunk-UKDDK42K.js} +3 -3
- package/dist/{chunk-PABG3IJ6.js.map → chunk-UKDDK42K.js.map} +1 -1
- package/dist/{chunk-VYRJ7OE5.js → chunk-USFXANEU.js} +3 -3
- package/dist/{chunk-VYRJ7OE5.js.map → chunk-USFXANEU.js.map} +1 -1
- package/dist/{chunk-CCUXO2HN.js → chunk-V5QSMDZL.js} +3 -3
- package/dist/{chunk-CCUXO2HN.js.map → chunk-V5QSMDZL.js.map} +1 -1
- package/dist/{chunk-NF7XG2FG.js → chunk-V75O7QQO.js} +3 -3
- package/dist/{chunk-NF7XG2FG.js.map → chunk-V75O7QQO.js.map} +1 -1
- package/dist/chunk-VFUV6XJR.js +257 -0
- package/dist/chunk-VFUV6XJR.js.map +1 -0
- package/dist/{chunk-NRYWNOG5.js → chunk-VL2WNGPF.js} +3 -3
- package/dist/{chunk-NRYWNOG5.js.map → chunk-VL2WNGPF.js.map} +1 -1
- package/dist/{chunk-JQQ3FBN7.js → chunk-VLZANXRZ.js} +3 -3
- package/dist/{chunk-JQQ3FBN7.js.map → chunk-VLZANXRZ.js.map} +1 -1
- package/dist/{chunk-2HMQDJ22.js → chunk-VOF3S5I4.js} +3 -3
- package/dist/{chunk-2HMQDJ22.js.map → chunk-VOF3S5I4.js.map} +1 -1
- package/dist/chunk-XQNVWHMN.js +60 -0
- package/dist/chunk-XQNVWHMN.js.map +1 -0
- package/dist/{chunk-JZ774T7U.js → chunk-ZGFXKYA5.js} +3 -3
- package/dist/{chunk-JZ774T7U.js.map → chunk-ZGFXKYA5.js.map} +1 -1
- package/dist/client.cjs +1106 -7
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +9 -0
- package/dist/client.d.ts +9 -0
- package/dist/client.js +56 -47
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Alert/index.js +2 -2
- package/dist/components/AlertDialog/index.js +2 -2
- package/dist/components/AspectRatio/index.cjs +67 -0
- package/dist/components/AspectRatio/index.cjs.map +1 -0
- package/dist/components/AspectRatio/index.d.cts +30 -0
- package/dist/components/AspectRatio/index.d.ts +30 -0
- package/dist/components/AspectRatio/index.js +5 -0
- package/dist/components/AspectRatio/index.js.map +1 -0
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Box/index.js +4 -4
- package/dist/components/Breadcrumb/index.js +3 -3
- package/dist/components/Button/index.js +2 -2
- package/dist/components/ButtonGroup/index.cjs +83 -0
- package/dist/components/ButtonGroup/index.cjs.map +1 -0
- package/dist/components/ButtonGroup/index.d.cts +45 -0
- package/dist/components/ButtonGroup/index.d.ts +45 -0
- package/dist/components/ButtonGroup/index.js +5 -0
- package/dist/components/ButtonGroup/index.js.map +1 -0
- package/dist/components/Calendar/index.js +3 -3
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Carousel/index.cjs +297 -0
- package/dist/components/Carousel/index.cjs.map +1 -0
- package/dist/components/Carousel/index.d.cts +67 -0
- package/dist/components/Carousel/index.d.ts +67 -0
- package/dist/components/Carousel/index.js +5 -0
- package/dist/components/Carousel/index.js.map +1 -0
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/Collapsible/index.cjs +512 -0
- package/dist/components/Collapsible/index.cjs.map +1 -0
- package/dist/components/Collapsible/index.d.cts +50 -0
- package/dist/components/Collapsible/index.d.ts +50 -0
- package/dist/components/Collapsible/index.js +7 -0
- package/dist/components/Collapsible/index.js.map +1 -0
- package/dist/components/Combobox/index.js +3 -3
- package/dist/components/ContextMenu/index.js +4 -4
- package/dist/components/DataTable/index.js +3 -3
- package/dist/components/DatePicker/index.js +5 -5
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/DropdownMenu/index.js +3 -3
- package/dist/components/Empty/index.cjs +385 -0
- package/dist/components/Empty/index.cjs.map +1 -0
- package/dist/components/Empty/index.d.cts +32 -0
- package/dist/components/Empty/index.d.ts +32 -0
- package/dist/components/Empty/index.js +7 -0
- package/dist/components/Empty/index.js.map +1 -0
- package/dist/components/FloatButton/index.js +3 -3
- package/dist/components/HStack/index.js +4 -4
- package/dist/components/HoverCard/index.cjs +894 -0
- package/dist/components/HoverCard/index.cjs.map +1 -0
- package/dist/components/HoverCard/index.d.cts +66 -0
- package/dist/components/HoverCard/index.d.ts +66 -0
- package/dist/components/HoverCard/index.js +9 -0
- package/dist/components/HoverCard/index.js.map +1 -0
- package/dist/components/InputGroup/index.js +2 -2
- package/dist/components/InputOTP/index.cjs +580 -0
- package/dist/components/InputOTP/index.cjs.map +1 -0
- package/dist/components/InputOTP/index.d.cts +49 -0
- package/dist/components/InputOTP/index.d.ts +49 -0
- package/dist/components/InputOTP/index.js +7 -0
- package/dist/components/InputOTP/index.js.map +1 -0
- package/dist/components/Item/index.cjs +443 -0
- package/dist/components/Item/index.cjs.map +1 -0
- package/dist/components/Item/index.d.cts +40 -0
- package/dist/components/Item/index.d.ts +40 -0
- package/dist/components/Item/index.js +7 -0
- package/dist/components/Item/index.js.map +1 -0
- package/dist/components/Kbd/index.cjs +396 -0
- package/dist/components/Kbd/index.cjs.map +1 -0
- package/dist/components/Kbd/index.d.cts +22 -0
- package/dist/components/Kbd/index.d.ts +22 -0
- package/dist/components/Kbd/index.js +7 -0
- package/dist/components/Kbd/index.js.map +1 -0
- package/dist/components/Pagination/index.js +4 -4
- package/dist/components/Popover/index.js +2 -2
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/SegmentedControl/index.js +2 -2
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Separator/index.js +2 -2
- package/dist/components/Sheet/index.js +2 -2
- package/dist/components/Skeleton/index.js +2 -2
- package/dist/components/Slider/index.js +2 -2
- package/dist/components/Switch/index.js +2 -2
- package/dist/components/Table/index.js +2 -2
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/index.js +2 -2
- package/dist/components/TextArea/index.js +3 -3
- package/dist/components/TextInput/index.js +2 -2
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/VStack/index.js +4 -4
- package/dist/index.cjs +1106 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +54 -45
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/locale.tsx","../src/components/Calendar/scroll/ScrollBody.tsx","../src/components/Calendar/state/locale-utils.ts","../src/components/Calendar/state/use-calendar-keyboard.ts","../src/components/Calendar/state/constraints.ts","../src/components/Calendar/state/use-calendar-state.ts","../src/components/Calendar/state/use-range-state.ts","../src/components/Calendar/state/use-caption.tsx","../src/components/Calendar/view/Caption.tsx","../src/components/Calendar/view/DayCell.tsx","../src/components/Calendar/view/DayGrid.tsx","../src/components/Calendar/view/Footer.tsx","../src/components/Calendar/view/MonthGrid.tsx","../src/components/Calendar/view/YearGrid.tsx","../src/components/Calendar/Calendar.tsx"],"names":["useMemo","useCallback","useState","createContext","jsx","useContext","RNText","Pressable","jsxs","View","today","getLocalTimeZone","ROW_KEYS","initialFocus","Fragment"],"mappings":"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","file":"chunk-2HMQDJ22.js","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport type LocaleInput = string | Intl.Locale;\n\n/**\n * Resolve the runtime's default locale. Works under Hermes (which ships\n * Intl on iOS via system ICU and on Android via bundled ICU) and any\n * browser. Returns a BCP 47 tag.\n */\nexport const detectLocale = (): string => {\n try {\n return new Intl.DateTimeFormat().resolvedOptions().locale;\n } catch {\n return 'en-US';\n }\n};\n\nconst toTag = (input: LocaleInput | undefined): string =>\n input === undefined ? detectLocale() : typeof input === 'string' ? input : input.toString();\n\nconst LocaleContext = createContext<string | null>(null);\nLocaleContext.displayName = 'LocaleContext';\n\nexport type LocaleProviderProps = {\n locale?: LocaleInput;\n children?: ReactNode;\n};\n\nexport const LocaleProvider = ({ locale, children }: LocaleProviderProps) => {\n const value = useMemo(() => toTag(locale), [locale]);\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>;\n};\n\nexport const useLocale = (): string => {\n const ctx = useContext(LocaleContext);\n return ctx ?? detectLocale();\n};\n","import type { CalendarDate } from '@internationalized/date';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { CalendarMode, CalendarValue, ChangeMeta, DateRange, DayContext } from '../Calendar.types';\nimport type { DayOfWeek } from '../state/locale-utils';\n\nexport type ScrollBodyProps<M extends CalendarMode> = {\n mode: M;\n locale: string;\n focusedDate: CalendarDate;\n onFocusedMonthChange: (anchor: CalendarDate, meta: ChangeMeta) => void;\n value: CalendarValue<M>;\n onSelectDate: (date: CalendarDate) => void;\n\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n\n showWeekNumbers?: boolean;\n highlightToday?: boolean;\n firstDayOfWeek: DayOfWeek;\n weekendDays: [DayOfWeek, DayOfWeek];\n\n renderDay?: (ctx: DayContext) => ReactNode;\n\n /** Range-only; undefined for single/multiple. */\n previewRange?: DateRange | null;\n};\n\n// Platform-extension fallback. Metro (native) picks `.native.tsx`; Vite/Webpack\n// (web) pick `.web.tsx`. Reaching this default means the bundler config is\n// broken — fail loudly rather than silently mounting an empty body.\nexport const ScrollBody = <M extends CalendarMode>(_props: ScrollBodyProps<M>): ReactElement => {\n throw new Error(\n '[Calendar] ScrollBody: no platform implementation resolved. ' +\n 'Ensure your bundler honors *.web.tsx / *.native.tsx extensions.'\n );\n};\n","import type { CalendarDate } from '@internationalized/date';\n\n/**\n * Day of week index where 0 = Sunday, 1 = Monday, ..., 6 = Saturday.\n * Matches `Date.prototype.getDay()` semantics.\n */\nexport type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * The weekday a calendar week begins on for the given locale, per CLDR.\n * Examples: en-US → 0 (Sun), de-DE → 1 (Mon), fa-IR → 6 (Sat).\n *\n * Trusts `Intl.Locale#getWeekInfo` as the authoritative source. Falls back\n * to a small lookup only when CLDR data is unavailable (e.g. Hermes on\n * Android with bundled ICU gaps).\n */\nexport const getFirstDayOfWeek = (locale: string): DayOfWeek => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (typeof info?.firstDay === 'number') {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n return (info.firstDay === 7 ? 0 : info.firstDay) as DayOfWeek;\n }\n } catch {\n // fall through\n }\n // Fallback for environments without CLDR weekInfo (e.g. some Hermes builds).\n return FIRST_DAY_FALLBACK[locale] ?? FIRST_DAY_FALLBACK[locale.split('-')[0] ?? ''] ?? 1;\n};\n\n/**\n * Last-resort lookup when `Intl.Locale#getWeekInfo` is unavailable. Values\n * are 0=Sun..6=Sat. Keep small — only enough to keep the calendar usable\n * if the runtime has no CLDR data at all.\n */\nconst FIRST_DAY_FALLBACK: Record<string, DayOfWeek> = {\n en: 0,\n 'en-US': 0,\n 'en-CA': 0,\n 'en-GB': 1,\n 'en-AU': 1,\n de: 1,\n fr: 1,\n ja: 0,\n ar: 0,\n he: 0,\n fa: 6,\n};\n\n/**\n * The two days CLDR considers weekend in this locale (e.g. [6, 0] for\n * en-US = Sat+Sun; [5, 6] for ar-SA = Fri+Sat).\n *\n * Falls back to a small lookup when `Intl.Locale#getWeekInfo` is unavailable\n * (notably Hermes Android in some configurations).\n */\nexport const getWeekendDays = (locale: string): [DayOfWeek, DayOfWeek] => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (info?.weekend && Array.isArray(info.weekend) && info.weekend.length === 2) {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n const [a, b] = info.weekend.map((d: number) => (d === 7 ? 0 : d) as DayOfWeek);\n return [a, b];\n }\n } catch {\n // fall through\n }\n return WEEKEND_FALLBACK[locale] ?? WEEKEND_FALLBACK[locale.split('-')[0] ?? ''] ?? [6, 0];\n};\n\nconst WEEKEND_FALLBACK: Record<string, [DayOfWeek, DayOfWeek]> = {\n 'en-US': [6, 0],\n 'de-DE': [6, 0],\n 'fr-FR': [6, 0],\n 'ja-JP': [6, 0],\n 'ar-SA': [5, 6],\n 'ar-AE': [5, 6],\n 'he-IL': [5, 6],\n 'fa-IR': [4, 5],\n en: [6, 0],\n de: [6, 0],\n fr: [6, 0],\n ar: [5, 6],\n he: [5, 6],\n};\n\n/**\n * Seven weekday short names ordered to begin at the locale's firstDayOfWeek.\n * Use for the calendar grid header row.\n */\nexport const formatWeekdayNames = (locale: string, format: 'short' | 'narrow' = 'short'): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: format });\n const start = getFirstDayOfWeek(locale);\n // 2026-01-04 is a Sunday in Gregorian; offset from there.\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(Date.UTC(2026, 0, 4 + ((start + i) % 7)));\n return fmt.format(d);\n });\n};\n\n/** \"May 2026\" / \"Mai 2026\" / \"mai 2026\" — for the calendar header. */\nexport const formatMonthYearTitle = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' });\n return fmt.format(date.toDate('UTC'));\n};\n\n/** Twelve full month names in the active locale. */\nexport const formatMonthNames = (locale: string): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long' });\n return Array.from({ length: 12 }, (_, m) => fmt.format(new Date(Date.UTC(2026, m, 15))));\n};\n\n/** \"May 5, 2026\" — for screen-reader announcements of the focused date. */\nexport const formatFullDate = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { dateStyle: 'long' });\n return fmt.format(date.toDate('UTC'));\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback } from 'react';\nimport type { CalendarView, ChangeMeta } from '../Calendar.types';\nimport type { DayOfWeek } from './locale-utils';\nimport type { FocusDelta } from './use-calendar-state';\n\nexport type UseCalendarKeyboardProps = {\n focusedDate: CalendarDate;\n moveFocus: (delta: FocusDelta) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n setView: (view: CalendarView) => void;\n view: CalendarView;\n /** Default 0 (Sunday). Used by Home/End to compute week boundaries. */\n firstDayOfWeek?: DayOfWeek;\n};\n\nexport const useCalendarKeyboard = (props: UseCalendarKeyboardProps) => {\n const { focusedDate, moveFocus, selectDate, firstDayOfWeek = 0 } = props;\n\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const focusedDow = focusedDate.toDate('UTC').getUTCDay() as DayOfWeek;\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n moveFocus({ days: -1 });\n return;\n case 'ArrowRight':\n event.preventDefault();\n moveFocus({ days: 1 });\n return;\n case 'ArrowUp':\n event.preventDefault();\n moveFocus({ weeks: -1 });\n return;\n case 'ArrowDown':\n event.preventDefault();\n moveFocus({ weeks: 1 });\n return;\n case 'PageUp':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: -1 } : { months: -1 });\n return;\n case 'PageDown':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: 1 } : { months: 1 });\n return;\n case 'Home': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n moveFocus({ days: -back });\n return;\n }\n case 'End': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n const forward = 6 - back;\n moveFocus({ days: forward });\n return;\n }\n case 'Enter':\n case ' ':\n event.preventDefault();\n selectDate(focusedDate, 'keyboard');\n return;\n default:\n return;\n }\n },\n [focusedDate, firstDayOfWeek, moveFocus, selectDate]\n );\n\n return { onKeyDown };\n};\n","import type { CalendarDate } from '@internationalized/date';\n\nexport type Constraints = {\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n};\n\nconst cmp = (a: CalendarDate, b: CalendarDate): number => a.compare(b);\n\nexport const isOutOfRange = (date: CalendarDate, bounds: Pick<Constraints, 'minValue' | 'maxValue'> = {}): boolean => {\n if (bounds.minValue && cmp(date, bounds.minValue) < 0) {\n return true;\n }\n if (bounds.maxValue && cmp(date, bounds.maxValue) > 0) {\n return true;\n }\n return false;\n};\n\n/**\n * Returns a single predicate that combines minValue/maxValue bounds and\n * a user-provided `isDateUnavailable`. The composed function is what every\n * view layer (DayCell, keyboard nav focus skip, scroll list) consults.\n */\nexport const composeUnavailable =\n (c: Constraints) =>\n (date: CalendarDate): boolean => {\n if (isOutOfRange(date, c)) {\n return true;\n }\n if (c.isDateUnavailable?.(date)) {\n return true;\n }\n return false;\n };\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, today } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { CalendarMode, CalendarValue, CalendarView, ChangeMeta } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type FocusDelta = {\n days?: number;\n weeks?: number;\n months?: number;\n years?: number;\n};\n\nexport type UseCalendarStateProps<M extends CalendarMode> = Constraints & {\n mode?: M;\n locale: string;\n value?: CalendarValue<M>;\n defaultValue?: CalendarValue<M>;\n onChange?: (value: CalendarValue<M>, meta: ChangeMeta) => void;\n view?: CalendarView;\n defaultView?: CalendarView;\n onViewChange?: (view: CalendarView) => void;\n};\n\nexport type UseCalendarStateReturn<M extends CalendarMode> = {\n value: CalendarValue<M>;\n view: CalendarView;\n focusedDate: CalendarDate;\n setView: (next: CalendarView) => void;\n moveFocus: (delta: FocusDelta) => void;\n setFocusedDate: (date: CalendarDate) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst initialFocus = <M extends CalendarMode>(\n mode: M,\n value: CalendarValue<M> | undefined,\n fallback: CalendarDate\n): CalendarDate => {\n if (!value) {\n return fallback;\n }\n if (mode === 'single') {\n return (value as CalendarDate | null) ?? fallback;\n }\n if (mode === 'range') {\n const r = value as { start: CalendarDate; end: CalendarDate | null };\n return r?.start ?? fallback;\n }\n const arr = value as CalendarDate[];\n return arr[0] ?? fallback;\n};\n\nexport const useCalendarState = <M extends CalendarMode = 'single'>(\n props: UseCalendarStateProps<M>\n): UseCalendarStateReturn<M> => {\n const mode = (props.mode ?? 'single') as M;\n const fallback = today(getLocalTimeZone());\n\n const [internalValue, setInternalValue] = useState<CalendarValue<M>>(() => {\n if (props.value !== undefined) {\n return props.value;\n }\n if (props.defaultValue !== undefined) {\n return props.defaultValue;\n }\n return (mode === 'multiple' ? [] : null) as CalendarValue<M>;\n });\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value as CalendarValue<M>) : internalValue;\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view = isViewControlled ? (props.view as CalendarView) : internalView;\n\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(() => initialFocus(mode, value, fallback));\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const moveFocus = useCallback(\n (delta: FocusDelta) => {\n setFocusedDate((cur) => {\n let next = cur;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n if (!isUnavailable(next)) {\n return next;\n }\n // Target is disabled — scan in the direction of motion for\n // the next available date. Cap at ~100 days so a wide\n // disabled range doesn't loop forever; if nothing's\n // available within the cap, leave focus where it was.\n const totalDelta =\n (delta.days ?? 0) + (delta.weeks ?? 0) * 7 + (delta.months ?? 0) * 30 + (delta.years ?? 0) * 365;\n const sign = totalDelta >= 0 ? 1 : -1;\n for (let i = 1; i <= 100; i++) {\n const candidate = next.add({ days: sign * i });\n if (!isUnavailable(candidate)) {\n return candidate;\n }\n }\n return cur;\n });\n },\n [isUnavailable]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source']) => {\n if (isUnavailable(date)) {\n return;\n }\n const meta: ChangeMeta = { view, source };\n let next: CalendarValue<M>;\n if (mode === 'single') {\n next = date as CalendarValue<M>;\n } else if (mode === 'multiple') {\n const arr = (value as CalendarDate[]) ?? [];\n const exists = arr.some((d) => d.compare(date) === 0);\n next = (exists ? arr.filter((d) => d.compare(date) !== 0) : [...arr, date]) as CalendarValue<M>;\n } else {\n // range mode is delegated to useRangeState\n return;\n }\n if (!isControlled) {\n setInternalValue(next);\n }\n props.onChange?.(next, meta);\n setFocusedDate(date);\n },\n [isControlled, isUnavailable, mode, props.onChange, value, view]\n );\n\n return {\n value,\n view,\n focusedDate,\n setView,\n moveFocus,\n setFocusedDate,\n selectDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { ChangeMeta, DateRange } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type UseRangeStateProps = Constraints & {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (value: DateRange | null, meta: ChangeMeta) => void;\n minNights?: number;\n maxNights?: number;\n};\n\nexport type UseRangeStateReturn = {\n value: DateRange | null;\n previewRange: DateRange | null;\n hoveredDate: CalendarDate | null;\n selectDate: (date: CalendarDate, source?: ChangeMeta['source']) => void;\n setHoveredDate: (date: CalendarDate | null) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst order = (a: CalendarDate, b: CalendarDate): [CalendarDate, CalendarDate] => (a.compare(b) <= 0 ? [a, b] : [b, a]);\n\nconst nightsBetween = (a: CalendarDate, b: CalendarDate): number => {\n const [first, last] = order(a, b);\n return Math.round((last.toDate('UTC').getTime() - first.toDate('UTC').getTime()) / 86400000);\n};\n\nexport const useRangeState = (props: UseRangeStateProps): UseRangeStateReturn => {\n const [internal, setInternal] = useState<DateRange | null>(props.defaultValue ?? null);\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value ?? null) : internal;\n\n const [hoveredDate, setHoveredDate] = useState<CalendarDate | null>(null);\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const commit = useCallback(\n (next: DateRange | null, source: ChangeMeta['source']) => {\n if (!isControlled) {\n setInternal(next);\n }\n props.onChange?.(next, { view: 'day', source });\n },\n [isControlled, props.onChange]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source'] = 'click') => {\n if (isUnavailable(date)) {\n return;\n }\n\n // No range yet, or both endpoints set → start a fresh selection.\n if (!value || value.end !== null) {\n commit({ start: date, end: null }, source);\n setHoveredDate(null);\n return;\n }\n\n // We have a pending start, no end yet.\n const nights = nightsBetween(value.start, date);\n if (props.minNights !== undefined && nights < props.minNights) {\n return;\n }\n if (props.maxNights !== undefined && nights > props.maxNights) {\n return;\n }\n\n const [start, end] = order(value.start, date);\n commit({ start, end }, source);\n setHoveredDate(null);\n },\n [commit, isUnavailable, props.maxNights, props.minNights, value]\n );\n\n const previewRange = useMemo<DateRange | null>(() => {\n if (!value || value.end !== null || !hoveredDate) {\n return null;\n }\n const [start, end] = order(value.start, hoveredDate);\n return { start, end };\n }, [hoveredDate, value]);\n\n return {\n value,\n previewRange,\n hoveredDate,\n selectDate,\n setHoveredDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { createContext, type ReactNode, useContext } from 'react';\n\nexport type CaptionOption = {\n value: number;\n label: string;\n disabled: boolean;\n};\n\nexport type CaptionContextValue = {\n /** Currently displayed month, 1..12. */\n month: number;\n /** Currently displayed year. */\n year: number;\n visibleMonth: CalendarDate;\n /** All months a, optional disabled flag derived from min/max + isDateUnavailable. */\n monthOptions: ReadonlyArray<CaptionOption>;\n /** Years inside `yearRange`, optional disabled flag. */\n yearOptions: ReadonlyArray<CaptionOption>;\n /** Set the displayed month, 1..12. */\n setMonth: (month: number) => void;\n /** Set the displayed year. */\n setYear: (year: number) => void;\n /** Move to the previous month/year/decade depending on the current view. */\n goPrev: () => void;\n /** Move to the next month/year/decade depending on the current view. */\n goNext: () => void;\n};\n\nconst CaptionContext = createContext<CaptionContextValue | null>(null);\nCaptionContext.displayName = 'CalendarCaptionContext';\n\nexport type CaptionProviderProps = {\n value: CaptionContextValue;\n children?: ReactNode;\n};\n\nexport const CaptionProvider = ({ value, children }: CaptionProviderProps) => (\n <CaptionContext.Provider value={value}>{children}</CaptionContext.Provider>\n);\n\n/**\n * Returns the current caption state and setters for a Calendar. Use inside\n * a `<Calendar.Caption>` slot (or any direct child of a Calendar with\n * `caption=\"custom\"`) to render your own dropdowns / navigation.\n *\n * @throws if called outside a Calendar with `caption=\"custom\"`.\n */\nexport const useCalendarCaption = (): CaptionContextValue => {\n const ctx = useContext(CaptionContext);\n if (!ctx) {\n throw new Error('useCalendarCaption must be called inside a <Calendar caption=\"custom\"> subtree.');\n }\n return ctx;\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useTranslation } from '../../../i18n/use-translation';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { Select } from '../../Select';\nimport type { CalendarCaption, CalendarView } from '../Calendar.types';\nimport { formatMonthNames, formatMonthYearTitle } from '../state/locale-utils';\nimport { type CaptionContextValue, type CaptionOption, CaptionProvider } from '../state/use-caption';\n\nconst ARROW_BUTTON_GAP = 8;\n\ntype CaptionProps = {\n /** All visible months, leftmost first. Always length-1 for non-day views. */\n months: ReadonlyArray<CalendarDate>;\n locale: string;\n view: CalendarView;\n caption: CalendarCaption;\n /** Width of one month grid; titles align centered above each grid. */\n gridWidth: number;\n monthGap: number;\n /** Year-dropdown bounds. */\n yearRange: [min: number, max: number];\n /** Constraint for disabling out-of-bounds options. */\n isMonthDisabled?: (year: number, month: number) => boolean;\n isYearDisabled?: (year: number) => boolean;\n onPrev: () => void;\n onNext: () => void;\n onTitlePress: (clicked: CalendarDate) => void;\n /** Mutate the anchor month for a specific visible month index. */\n onSetMonth: (slotIndex: number, month: number) => void;\n onSetYear: (slotIndex: number, year: number) => void;\n /** Children for `caption=\"custom\"` mode. */\n children?: ReactNode;\n};\n\ntype NavButtonProps = {\n label: string;\n onPress: () => void;\n children: ReactNode;\n};\n\nconst NavButton = ({ label, onPress, children }: NavButtonProps) => {\n const colors = useThemeColors();\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.94 : 1 }] }, border];\n }}\n >\n <RNText style={{ color: colors.semantic.text.default, fontSize: 16, lineHeight: 16, fontWeight: '500' }}>\n {children}\n </RNText>\n </Pressable>\n );\n};\n\nconst TitleButton = ({\n text,\n ariaLabel,\n onPress,\n drilldown,\n}: {\n text: string;\n ariaLabel: string;\n onPress?: () => void;\n drilldown: boolean;\n}) => {\n const colors = useThemeColors();\n if (!onPress) {\n return (\n <View style={{ paddingHorizontal: 12, paddingVertical: 6, alignItems: 'center' }}>\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n </View>\n );\n }\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={ariaLabel}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.97 : 1 }] }, border];\n }}\n >\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n {drilldown ? (\n <RNText aria-hidden style={{ color: colors.semantic.text.muted, fontSize: 10, opacity: 0.7 }}>\n ▾\n </RNText>\n ) : null}\n </Pressable>\n );\n};\n\nexport const Caption = ({\n months,\n locale,\n view,\n caption,\n gridWidth,\n monthGap,\n yearRange,\n isMonthDisabled,\n isYearDisabled,\n onPrev,\n onNext,\n onTitlePress,\n onSetMonth,\n onSetYear,\n children,\n}: CaptionProps) => {\n const { t } = useTranslation();\n\n const titleText = (m: CalendarDate) => {\n if (view === 'day') {\n return formatMonthYearTitle(m, locale);\n }\n if (view === 'month') {\n return String(m.year);\n }\n const start = m.year - (m.year % 10);\n return `${start} – ${start + 11}`;\n };\n\n const titleAriaKey =\n view === 'day'\n ? 'calendar.header.openMonthView'\n : view === 'month'\n ? 'calendar.header.openYearView'\n : 'calendar.header.openDayView';\n\n // Title row width — sized to the visible grids so titles align over them.\n const showMultiTitles = view === 'day' && months.length > 1;\n const titleRowWidth = showMultiTitles ? months.length * gridWidth + (months.length - 1) * monthGap : gridWidth;\n\n // Month and year option lists — used by the dropdown / custom modes.\n const monthNames = useMemo(() => formatMonthNames(locale), [locale]);\n\n // Custom mode: provide the context for slot consumers and render their JSX.\n // We use `months[0]` (focused leftmost month) for context — when consumers\n // need per-month dropdowns they can compose multiple `Calendar.Caption`s.\n const focused = months[0] ?? undefined;\n if (!focused) {\n return null;\n }\n const ctxValue: CaptionContextValue = {\n month: focused.month,\n year: focused.year,\n visibleMonth: focused,\n monthOptions: monthNames.map((label, i) => ({\n value: i + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, i + 1) ?? false,\n })),\n yearOptions: Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n })),\n setMonth: (m) => onSetMonth(0, m),\n setYear: (y) => onSetYear(0, y),\n goPrev: onPrev,\n goNext: onNext,\n };\n\n if (caption === 'custom') {\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <CaptionProvider value={ctxValue}>{children}</CaptionProvider>\n </View>\n );\n }\n\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <NavButton label={t('calendar.header.previous', { defaultValue: 'Previous month' })} onPress={onPrev}>\n ‹\n </NavButton>\n <View style={{ flexDirection: 'row', gap: monthGap, width: titleRowWidth }}>\n {showMultiTitles ? (\n months.map((m, i) => (\n <View key={`${m.year}-${m.month}`} style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={m.month}\n year={m.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(m.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(i, next)}\n onYearChange={(next) => onSetYear(i, next)}\n />\n ) : (\n <TitleButton\n text={titleText(m)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(m)}\n drilldown\n />\n )}\n </View>\n ))\n ) : (\n <View style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={focused.month}\n year={focused.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(0, next)}\n onYearChange={(next) => onSetYear(0, next)}\n />\n ) : (\n <TitleButton\n text={titleText(focused)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(focused)}\n drilldown\n />\n )}\n </View>\n )}\n </View>\n <NavButton label={t('calendar.header.next', { defaultValue: 'Next month' })} onPress={onNext}>\n ›\n </NavButton>\n </View>\n );\n};\n\nconst makeYearOptions = (\n yearRange: [number, number],\n isYearDisabled?: (year: number) => boolean\n): ReadonlyArray<CaptionOption> =>\n Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n }));\n\ntype DropdownPairProps = {\n month: number;\n year: number;\n monthOptions: ReadonlyArray<CaptionOption>;\n yearOptions: ReadonlyArray<CaptionOption>;\n onMonthChange: (m: number) => void;\n onYearChange: (y: number) => void;\n};\n\nconst DropdownPair = ({ month, year, monthOptions, yearOptions, onMonthChange, onYearChange }: DropdownPairProps) => {\n return (\n <View style={{ flexDirection: 'row', gap: 6 }}>\n <Select\n value={String(month)}\n onChange={(v) => onMonthChange(Number(v))}\n options={monthOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Month\"\n searchable={false}\n />\n <Select\n value={String(year)}\n onChange={(v) => onYearChange(Number(v))}\n options={yearOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Year\"\n searchable={false}\n />\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { TextStyle, ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { DayContext } from '../Calendar.types';\n\nexport type DayCellProps = {\n ctx: DayContext;\n onPress: () => void;\n onHoverIn?: () => void;\n onHoverOut?: () => void;\n /** When provided, the slot wins over default day rendering. */\n renderDay?: (ctx: DayContext) => ReactNode;\n /**\n * BCP-47 locale used to format the accessibility label\n * (e.g. \"Friday, May 8, 2026\"). Falls back to undefined (runtime default)\n * if not provided.\n */\n locale?: string;\n};\n\nexport const CELL_SIZE = 40;\n\n/**\n * Module-scope cache of Intl.DateTimeFormat instances keyed by locale.\n * Prior to caching, each DayCell instantiated a new formatter per render\n * (~420+ instantiations per scroll burst in scroll mode). The cache is\n * unbounded but the live locale set is also bounded — typically 1–2\n * entries per app — so no LRU is needed.\n */\nconst formatterCache = new Map<string, Intl.DateTimeFormat>();\nconst RUNTIME_DEFAULT_LOCALE_KEY = '__default__';\n\nconst getDayFormatter = (locale: string | undefined): Intl.DateTimeFormat | null => {\n const key = locale ?? RUNTIME_DEFAULT_LOCALE_KEY;\n const cached = formatterCache.get(key);\n if (cached) {\n return cached;\n }\n try {\n const fmt = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n });\n formatterCache.set(key, fmt);\n return fmt;\n } catch {\n return null;\n }\n};\n\n/**\n * Builds the day cell's accessibility label. Format:\n * \"{weekday}, {Month} {day}, {year}\" + optional state suffixes,\n * e.g. \"Friday, May 8, 2026, today, selected\".\n *\n * Kept module-local so view tests / Profiler harnesses can match it\n * with a regex without depending on Intl output for the suffix.\n *\n * KNOWN LIMITATION: State suffixes (\"today\", \"selected\", \"in range\",\n * \"unavailable\") are hardcoded English. Non-English locales get\n * mixed-language output (e.g. \"2026年5月8日金曜日, today\"). Proper\n * fix routes these through the project's i18n provider; tracked as\n * a follow-up to be addressed alongside the broader i18n sweep.\n *\n * TODO(i18n): localize state suffixes.\n */\nconst formatDayLabel = (ctx: DayContext, locale?: string): string => {\n const jsDate = new Date(Date.UTC(ctx.date.year, ctx.date.month - 1, ctx.date.day));\n const fmt = getDayFormatter(locale);\n const base = fmt\n ? fmt.format(jsDate)\n : // Fallback if the runtime rejects the locale tag.\n `${ctx.date.month}/${ctx.date.day}/${ctx.date.year}`;\n\n const suffixes: string[] = [];\n if (ctx.isToday) {\n suffixes.push('today');\n }\n if (ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd) {\n suffixes.push('selected');\n }\n if (ctx.isInRange && !ctx.isRangeStart && !ctx.isRangeEnd) {\n suffixes.push('in range');\n }\n if (ctx.isUnavailable) {\n suffixes.push('unavailable');\n }\n\n return suffixes.length > 0 ? `${base}, ${suffixes.join(', ')}` : base;\n};\n\nexport const DayCell = ({ ctx, onPress, onHoverIn, onHoverOut, renderDay, locale }: DayCellProps) => {\n const colors = useThemeColors();\n const accessibilityLabel = formatDayLabel(ctx, locale);\n\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n\n // Range middle / preview cells get a flat background drawn by the\n // gridcell wrapper in DayGrid (so adjacent cells visually connect).\n // The DayCell itself is transparent in that case.\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n const isRangeMiddle = isInsideRange && !isSelectedLike;\n\n const dataState = ctx.isSelected\n ? 'selected'\n : ctx.isRangeStart\n ? 'range-start'\n : ctx.isRangeEnd\n ? 'range-end'\n : ctx.isInPreviewRange\n ? 'preview'\n : ctx.isInRange\n ? 'in-range'\n : undefined;\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled: ctx.isUnavailable, selected: isSelectedLike }}\n disabled={ctx.isUnavailable}\n onPress={onPress}\n {...(onHoverIn ? { onHoverIn } : {})}\n {...(onHoverOut ? { onHoverOut } : {})}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 999, // perfect circle for endpoints/selected\n position: 'relative',\n };\n\n if (ctx.isUnavailable) {\n return [base, { opacity: 0.28 }];\n }\n\n let backgroundColor: string | undefined;\n let transform: ViewStyle['transform'];\n let borderWidth: number | undefined;\n let borderColor: string | undefined;\n\n if (isSelectedLike) {\n backgroundColor = colors.semantic.interactive.primary;\n if (pressed) {\n backgroundColor = colors.semantic.interactive.primaryPressed;\n } else if (hovered) {\n backgroundColor = colors.semantic.interactive.primaryHover;\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else if (isRangeMiddle) {\n // Sits ON TOP of the gridcell range fill. Keep transparent\n // so the bar reads continuous across cells. On hover we\n // brighten with a soft circular halo.\n backgroundColor = hovered ? colors.color.primary['200'] : 'transparent';\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else {\n // Idle / hover / focus on a non-selected non-range cell.\n if (pressed) {\n backgroundColor = colors.color.primary['200'];\n } else if (hovered) {\n backgroundColor = colors.color.primary['100'];\n } else {\n backgroundColor = 'transparent';\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n }\n\n if ((ctx.isFocused || focused) && !isSelectedLike) {\n borderWidth = 2;\n borderColor = colors.semantic.interactive.primary;\n }\n\n // RN-Web honors these as CSS transitions; native ignores silently.\n const transition: ViewStyle = {\n transitionProperty: 'background-color, transform, border-color, opacity',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n\n return [\n base,\n transition,\n {\n backgroundColor,\n ...(transform ? { transform } : {}),\n ...(borderWidth ? { borderWidth, borderColor } : {}),\n },\n ];\n }}\n {...({\n dataSet: {\n dayKey: `${ctx.date.year}-${ctx.date.month}-${ctx.date.day}`,\n ...(dataState ? { state: dataState } : {}),\n },\n } as unknown as { dataSet: Record<string, string> })}\n >\n {renderDay ? (\n renderDay(ctx)\n ) : (\n <>\n <RNText\n style={\n {\n color: isSelectedLike\n ? colors.semantic.text.inverted\n : ctx.isOutsideMonth\n ? colors.semantic.text.muted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: ctx.isToday ? '600' : '400',\n opacity: ctx.isOutsideMonth ? 0.55 : 1,\n transitionProperty: 'color',\n transitionDuration: '140ms',\n } as unknown as TextStyle\n }\n >\n {ctx.date.day}\n </RNText>\n {/* Today indicator: a 4px dot below the number, primary-colored,\n becomes white when the cell is selected. Subtler than a ring\n and never causes layout shift. */}\n {ctx.isToday ? (\n <View\n style={{\n position: 'absolute',\n bottom: 5,\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: isSelectedLike\n ? colors.semantic.text.inverted\n : colors.semantic.interactive.primary,\n }}\n />\n ) : null}\n </>\n )}\n </Pressable>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, startOfMonth, today } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { CalendarMode, CalendarValue, DateRange, DayContext } from '../Calendar.types';\nimport { type DayOfWeek, formatWeekdayNames, getFirstDayOfWeek } from '../state/locale-utils';\nimport { CELL_SIZE, DayCell } from './DayCell';\n\ntype DayGridProps<M extends CalendarMode> = {\n visibleMonth: CalendarDate;\n locale: string;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n firstDayOfWeek?: DayOfWeek;\n onDayPress: (date: CalendarDate) => void;\n onDayHover?: (date: CalendarDate | null) => void;\n renderDay?: (ctx: DayContext) => ReactNode;\n};\n\nconst isInRange = (date: CalendarDate, range: DateRange | null | undefined): boolean => {\n if (!range?.end) {\n return false;\n }\n return date.compare(range.start) >= 0 && date.compare(range.end) <= 0;\n};\n\nconst buildContext = <M extends CalendarMode>(\n date: CalendarDate,\n args: {\n visibleMonth: CalendarDate;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n todayDate: CalendarDate;\n }\n): DayContext => {\n const isOutsideMonth = date.month !== args.visibleMonth.month;\n const isToday = date.compare(args.todayDate) === 0;\n const dow = date.toDate('UTC').getUTCDay() as DayOfWeek;\n const isWeekend = args.weekendDays.includes(dow);\n let isSelected = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n let inRange = false;\n\n if (args.mode === 'single') {\n const v = args.value as CalendarDate | null;\n isSelected = !!v && v.compare(date) === 0;\n } else if (args.mode === 'range') {\n const r = args.value as DateRange | null;\n if (r) {\n isRangeStart = r.start.compare(date) === 0;\n isRangeEnd = r.end !== null && r.end.compare(date) === 0;\n inRange = isInRange(date, r);\n }\n } else {\n const arr = args.value as CalendarDate[];\n isSelected = arr.some((x) => x.compare(date) === 0);\n }\n\n return {\n date,\n isOutsideMonth,\n isToday,\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange: inRange,\n isInPreviewRange: isInRange(date, args.previewRange ?? null),\n isUnavailable: args.isUnavailable(date),\n isFocused: args.focusedDate.compare(date) === 0,\n isWeekend,\n };\n};\n\n// Stable row keys for the 6-row grid — never reorder, never change count.\nconst ROW_KEYS = ['row-0', 'row-1', 'row-2', 'row-3', 'row-4', 'row-5'] as const;\n\nexport const DayGrid = <M extends CalendarMode>(props: DayGridProps<M>) => {\n const {\n visibleMonth,\n locale,\n mode,\n value,\n previewRange,\n focusedDate,\n isUnavailable,\n weekendDays,\n firstDayOfWeek,\n onDayPress,\n onDayHover,\n renderDay,\n } = props;\n\n const colors = useThemeColors();\n const fdow = firstDayOfWeek ?? getFirstDayOfWeek(locale);\n\n const cells = useMemo<CalendarDate[]>(() => {\n const start = startOfMonth(visibleMonth);\n const startDow = start.toDate('UTC').getUTCDay() as DayOfWeek;\n const back = (startDow - fdow + 7) % 7;\n const first = start.subtract({ days: back });\n const total = 42; // 6 rows × 7 — handles all month layouts\n return Array.from({ length: total }, (_, i) => first.add({ days: i }));\n }, [visibleMonth, fdow]);\n\n const weekdayNames = useMemo(() => formatWeekdayNames(locale), [locale]);\n const todayDate = useMemo(() => today(getLocalTimeZone()), []);\n\n const gridWidth = 7 * CELL_SIZE;\n\n return (\n <View role=\"grid\" style={{ width: gridWidth }}>\n <View role=\"row\" style={{ flexDirection: 'row', marginBottom: 4 }}>\n {weekdayNames.map((name) => (\n <View\n key={name}\n role=\"columnheader\"\n style={{ width: CELL_SIZE, alignItems: 'center', paddingVertical: 6 }}\n >\n <RNText\n style={{\n fontSize: 11,\n fontWeight: '500',\n letterSpacing: 0.6,\n color: colors.semantic.text.muted,\n textTransform: 'uppercase',\n }}\n >\n {name}\n </RNText>\n </View>\n ))}\n </View>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} role=\"row\" style={{ flexDirection: 'row' }}>\n {cells.slice(row * 7, row * 7 + 7).map((date) => {\n const ctx = buildContext(date, {\n visibleMonth,\n mode,\n value,\n ...(previewRange !== undefined ? { previewRange } : {}),\n focusedDate,\n isUnavailable,\n weekendDays,\n todayDate,\n });\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n\n // Range continuity: middle cells get a flat full-width\n // background. Endpoints get a half-fill on the side\n // facing the range so the bar visually connects with\n // the adjacent cell. Single-day ranges get no spillover.\n const wrapperStyle: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n position: 'relative',\n };\n const rangeFillTint = colors.color.primary['100'];\n let rangeFillStyle: ViewStyle | null = null;\n\n if (ctx.isRangeStart && !ctx.isRangeEnd) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: '50%',\n right: 0,\n backgroundColor: rangeFillTint,\n };\n } else if (ctx.isRangeEnd && !ctx.isRangeStart) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: '50%',\n backgroundColor: rangeFillTint,\n };\n } else if (isInsideRange && !isSelectedLike) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: rangeFillTint,\n };\n }\n\n const gridcellProps = {\n role: 'gridcell' as 'cell',\n ...(isSelectedLike ? { 'aria-selected': true as const } : {}),\n };\n\n return (\n <View\n key={`${date.year}-${date.month}-${date.day}`}\n {...gridcellProps}\n style={wrapperStyle}\n >\n {rangeFillStyle ? <View style={rangeFillStyle} /> : null}\n <DayCell\n ctx={ctx}\n locale={locale}\n onPress={() => onDayPress(date)}\n {...(onDayHover\n ? {\n onHoverIn: () => onDayHover(date),\n onHoverOut: () => onDayHover(null),\n }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { View } from 'react-native';\n\nexport const Footer = ({ children }: { children?: ReactNode }) => <View style={{ paddingTop: 12 }}>{children}</View>;\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { formatMonthNames } from '../state/locale-utils';\n\ntype MonthGridProps = {\n visibleMonth: CalendarDate;\n locale: string;\n /** Width to fill (calendar inner width). Cells distribute across this. */\n availableWidth: number;\n onSelect: (month: number) => void; // 1..12\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2', 'r3'] as const;\n\nexport const MonthGrid = ({ visibleMonth, locale, availableWidth, onSelect }: MonthGridProps) => {\n const colors = useThemeColors();\n const names = formatMonthNames(locale);\n const cellHeight = 56;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2].map((col) => {\n const idx = row * 3 + col;\n const monthNumber = idx + 1;\n const isCurrent = monthNumber === visibleMonth.month;\n const name = names[idx] ?? '';\n return (\n <View key={monthNumber} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={name}\n onPress={() => onSelect(monthNumber)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n }}\n >\n {name}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\n\ntype YearGridProps = {\n visibleMonth: CalendarDate;\n /** Width to fill (calendar inner width). */\n availableWidth: number;\n onSelect: (year: number) => void;\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2'] as const;\n\nexport const YearGrid = ({ visibleMonth, availableWidth, onSelect }: YearGridProps) => {\n const colors = useThemeColors();\n const decadeStart = visibleMonth.year - (visibleMonth.year % 10);\n const years = Array.from({ length: 12 }, (_, i) => decadeStart + i - 1);\n const cellHeight = 60;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2, 3].map((col) => {\n const year = years[row * 4 + col];\n if (year === undefined) {\n return null;\n }\n const isCurrent = year === visibleMonth.year;\n const isAdjacentDecade = year < decadeStart || year >= decadeStart + 10;\n return (\n <View key={year} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n onPress={() => onSelect(year)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n opacity: isAdjacentDecade ? 0.45 : 1,\n }}\n >\n {year}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport { CalendarDate, getLocalTimeZone, today } from '@internationalized/date';\nimport { type ReactNode, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport type { LayoutChangeEvent, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { useLocale } from '../../i18n/locale';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport type { CalendarBaseProps, CalendarMode, CalendarValue, CalendarView, DateRange } from './Calendar.types';\nimport { ScrollBody } from './scroll/ScrollBody';\nimport { type DayOfWeek, getFirstDayOfWeek, getWeekendDays } from './state/locale-utils';\nimport { useCalendarKeyboard } from './state/use-calendar-keyboard';\nimport { useCalendarState } from './state/use-calendar-state';\nimport { useRangeState } from './state/use-range-state';\nimport { Caption } from './view/Caption';\nimport { CELL_SIZE } from './view/DayCell';\nimport { DayGrid } from './view/DayGrid';\nimport { Footer } from './view/Footer';\nimport { MonthGrid } from './view/MonthGrid';\nimport { YearGrid } from './view/YearGrid';\n\n// Width constants used to compute the calendar's natural content width and\n// to pick a responsive `visibleMonths` based on the parent container width.\nconst GRID_WIDTH = 7 * CELL_SIZE; // single month grid (7 cols)\nconst MONTH_GAP = 16;\nconst ARROW_AREA = 32 + 8; // nav button width + gap to first/last grid edge\nconst SURFACE_PADDING = 16;\nconst SURFACE_BORDER = 1;\nconst requiredOuterWidth = (n: number) =>\n 2 * (ARROW_AREA + SURFACE_PADDING + SURFACE_BORDER) + n * GRID_WIDTH + (n - 1) * MONTH_GAP;\n\n// Body fade-up on view/month change. The wrapper's `key` flips on every\n// navigation (prev/next, drilldown), forcing a fresh mount; FadeIn starts\n// at opacity 0 + 4px down, then bumps to 1 / 0 in an effect so the inline\n// transition runs. RN-Web honors transition* style props; native ignores.\nconst focusDayCell = (root: HTMLElement | null, date: CalendarDate, force: boolean) => {\n if (!root) {\n return;\n }\n // DOM-only: keyboard focus management has no analog on native, where this\n // ref points at a RN View instead of HTMLElement. Bail out before touching\n // `document` so jest-expo / RN runtime don't ReferenceError.\n if (typeof document === 'undefined' || typeof root.contains !== 'function') {\n return;\n }\n if (!force && !root.contains(document.activeElement)) {\n return;\n }\n const sel = `[data-day-key=\"${date.year}-${date.month}-${date.day}\"]`;\n const cell = root.querySelector(sel) as HTMLElement | null;\n const isDisabled = (cell as HTMLButtonElement | null)?.disabled === true;\n if (cell && !isDisabled) {\n if (cell !== document.activeElement) {\n cell.focus();\n }\n return;\n }\n // Cell is missing or disabled — fall back to focusing the calendar root\n // so subsequent keyboard navigation continues to fire onKeyDown\n // (otherwise focus drops to <body> and arrow keys go to the page).\n if (force && !root.contains(document.activeElement)) {\n root.focus();\n }\n};\n\nconst FadeIn = ({ children }: { children: ReactNode }) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n const id = requestAnimationFrame(() => setMounted(true));\n return () => cancelAnimationFrame(id);\n }, []);\n return (\n <View\n style={\n {\n opacity: mounted ? 1 : 0,\n transform: [{ translateY: mounted ? 0 : 4 }],\n transitionProperty: 'opacity, transform',\n transitionDuration: '220ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n } as ViewStyle\n }\n >\n {children}\n </View>\n );\n};\n\n/**\n * Picks a responsive number of visible months from a measured container\n * width. Used when the consumer doesn't pin `visibleMonths`. Falls back\n * to 1 month while measurement is in flight (initial render) so we never\n * overflow on first paint.\n */\nconst resolveYearRange = (\n input: [number, number] | undefined,\n minValue: import('@internationalized/date').CalendarDate | undefined,\n maxValue: import('@internationalized/date').CalendarDate | undefined,\n focusedYear: number\n): [number, number] => {\n if (input) {\n return input;\n }\n if (minValue && maxValue) {\n return [minValue.year, maxValue.year];\n }\n if (minValue) {\n return [minValue.year, Math.max(minValue.year, focusedYear + 10)];\n }\n if (maxValue) {\n return [Math.min(maxValue.year, focusedYear - 100), maxValue.year];\n }\n return [focusedYear - 100, focusedYear + 10];\n};\n\nconst pickVisibleMonths = (input: number | 'auto' | undefined, measuredWidth: number | null): number => {\n // `visibleMonths` is treated as a *maximum*: when the parent container\n // is too narrow to fit `target` months side-by-side, we drop to the\n // largest count that fits. `auto` defaults to 2.\n const target = typeof input === 'number' ? input : 2;\n if (measuredWidth == null || measuredWidth === 0) {\n // Pre-measurement (e.g. SSR / jsdom). Trust an explicit number;\n // fall back to 1 for `auto` so we don't overflow on first paint.\n return typeof input === 'number' ? input : 1;\n }\n for (let n = target; n >= 1; n--) {\n if (measuredWidth >= requiredOuterWidth(n)) {\n return n;\n }\n }\n return 1;\n};\n\n/**\n * Outer wrapper that measures the available container width and renders\n * the actual Calendar root once the measurement is in. Renders nothing on\n * the first paint to avoid the 1-month → 2-month flash; this is one\n * synchronous re-render after layout, imperceptible in practice.\n */\nconst CalendarRoot = <M extends CalendarMode = 'single'>(props: CalendarBaseProps<M>) => {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const onLayout = useCallback((e: LayoutChangeEvent) => {\n const next = e.nativeEvent.layout.width;\n setContainerWidth((prev) => (prev === next ? prev : next));\n }, []);\n\n return (\n <View onLayout={onLayout} style={{ width: '100%' }}>\n <CalendarSurface<M> containerWidth={containerWidth ?? 0} {...props} />\n </View>\n );\n};\n\nconst CalendarSurface = <M extends CalendarMode = 'single'>(\n props: CalendarBaseProps<M> & { containerWidth: number }\n) => {\n const providerLocale = useLocale();\n const locale = props.locale ?? providerLocale;\n\n if ((props.mode ?? 'single') === 'range') {\n return (\n <RangeCalendar\n {...(props as unknown as CalendarBaseProps<'range'> & { containerWidth: number })}\n locale={locale}\n />\n );\n }\n return (\n <SingleOrMultiCalendar\n {...(props as unknown as CalendarBaseProps<Exclude<CalendarMode, 'range'>> & { containerWidth: number })}\n locale={locale}\n />\n );\n};\n\n/**\n * Computes both the inner content width (for centering the body) and the\n * outer surface width (for the bordered card). Both depend on\n * visibleMonths only.\n */\nconst surfaceMetrics = (visibleMonths: number) => {\n const innerWidth = 2 * ARROW_AREA + visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP;\n return {\n innerWidth,\n // Body grids row width (excludes arrow area)\n gridsRowWidth: visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP,\n };\n};\n\nconst SingleOrMultiCalendar = <M extends Exclude<CalendarMode, 'range'>>(\n props: CalendarBaseProps<M> & { locale: string; containerWidth: number }\n) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = props.behavior === 'scroll' ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n useEffect(() => {\n if (\n process.env.NODE_ENV !== 'production' &&\n props.behavior === 'scroll' &&\n typeof props.visibleMonths === 'number' &&\n props.visibleMonths > 1\n ) {\n // biome-ignore lint/suspicious/noConsole: dev-mode developer warning\n console.warn('[Calendar] visibleMonths is ignored when behavior=\"scroll\"; falling back to single column.');\n }\n }, [props.behavior, props.visibleMonths]);\n\n // Anchor month: what the user sees. Decoupled from `state.focusedDate`\n // so selecting a day in the rightmost grid does NOT shift the view.\n // Prev/Next buttons mutate this anchor; selectDate does not.\n const containerRef = useRef<HTMLElement | null>(null);\n\n const state = useCalendarState<M>({\n ...(props.mode !== undefined ? { mode: props.mode } : {}),\n locale,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.view !== undefined ? { view: props.view } : {}),\n ...(props.defaultView !== undefined ? { defaultView: props.defaultView } : {}),\n ...(props.onViewChange !== undefined ? { onViewChange: props.onViewChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n });\n\n const [anchor, setAnchor] = useState<CalendarDate>(state.focusedDate);\n\n // Snap the anchor when the focused date moves OUTSIDE visible months\n // (only triggered by keyboard nav). We must not re-fire when the\n // anchor changes (prev/next), or arrow navigation would snap right\n // back to the focused month. anchorRef gives us the current value\n // without putting `anchor` in the dependency array.\n const anchorRef = useRef(anchor);\n useEffect(() => {\n anchorRef.current = anchor;\n }, [anchor]);\n useEffect(() => {\n const start = anchorRef.current;\n const end = start.add({ months: visibleMonths });\n if (state.focusedDate.compare(start) < 0 || state.focusedDate.compare(end) >= 0) {\n setAnchor(state.focusedDate);\n }\n }, [state.focusedDate, visibleMonths]);\n\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: state.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, state.focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [state.focusedDate, state.value]);\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate: state.focusedDate,\n moveFocus: (delta: import('./state/use-calendar-state').FocusDelta) => {\n state.moveFocus(delta);\n // PgDn/PgUp (months) and Shift+PgDn/PgUp (years) feel like\n // \"scroll the view by N\" — shift the anchor by the same delta so\n // the focused cell stays in its current slot. Day/week deltas\n // leave the anchor alone; the snap effect handles overflow.\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: state.selectDate,\n setView: state.setView,\n view: state.view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else if (props.behavior === 'scroll') {\n state.moveFocus({ months: -1 });\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else if (props.behavior === 'scroll') {\n state.moveFocus({ months: 1 });\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const onTitlePress = () => state.setView(state.view === 'day' ? 'month' : state.view === 'month' ? 'year' : 'day');\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={state.view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`smc-${state.view}`}>\n {state.view === 'day' &&\n (props.behavior === 'scroll' ? (\n <ScrollBody<M>\n mode={(props.mode ?? 'single') as M}\n locale={locale}\n focusedDate={state.focusedDate}\n onFocusedMonthChange={(next) => setAnchor(next)}\n value={state.value as CalendarValue<M>}\n onSelectDate={(date) => state.selectDate(date, 'click')}\n firstDayOfWeek={firstDayOfWeek}\n weekendDays={weekendDays}\n {...(props.minValue !== undefined ? { minValue: props.minValue } : {})}\n {...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {})}\n {...(props.isDateUnavailable !== undefined\n ? { isDateUnavailable: props.isDateUnavailable }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n ) : (\n <View\n style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}\n >\n {months.map((m) => (\n <DayGrid<M>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode={(props.mode ?? 'single') as M}\n value={state.value as CalendarValue<M>}\n focusedDate={state.focusedDate}\n isUnavailable={state.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => state.selectDate(date, 'click')}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n ))}\n {state.view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n setAnchor(new CalendarDate(anchor.year, month, 1));\n state.setView('day');\n }}\n />\n </View>\n )}\n {state.view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n setAnchor(new CalendarDate(year, anchor.month, 1));\n state.setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\nconst RangeCalendar = (props: CalendarBaseProps<'range'> & { locale: string; containerWidth: number }) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = props.behavior === 'scroll' ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n useEffect(() => {\n if (\n process.env.NODE_ENV !== 'production' &&\n props.behavior === 'scroll' &&\n typeof props.visibleMonths === 'number' &&\n props.visibleMonths > 1\n ) {\n // biome-ignore lint/suspicious/noConsole: dev-mode developer warning\n console.warn('[Calendar] visibleMonths is ignored when behavior=\"scroll\"; falling back to single column.');\n }\n }, [props.behavior, props.visibleMonths]);\n\n const containerRef = useRef<HTMLElement | null>(null);\n\n const range = useRangeState({\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n ...(props.minNights !== undefined ? { minNights: props.minNights } : {}),\n ...(props.maxNights !== undefined ? { maxNights: props.maxNights } : {}),\n });\n\n const initialFocus = range.value?.start ?? today(getLocalTimeZone());\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(initialFocus);\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: range.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [focusedDate, range.value]);\n const [anchor, setAnchor] = useState<CalendarDate>(initialFocus);\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view: CalendarView = isViewControlled ? (props.view as CalendarView) : internalView;\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate,\n moveFocus: (delta) => {\n setFocusedDate((f) => {\n let next = f;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: (date) => range.selectDate(date, 'keyboard'),\n setView,\n view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else if (props.behavior === 'scroll') {\n setFocusedDate((f) => f.add({ months: -1 }));\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else if (props.behavior === 'scroll') {\n setFocusedDate((f) => f.add({ months: 1 }));\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const [drilldownSlot, setDrilldownSlot] = useState(0);\n const onTitlePress = (clicked: CalendarDate) => {\n const slot = months.findIndex((m) => m.year === clicked.year && m.month === clicked.month);\n setDrilldownSlot(slot >= 0 ? slot : 0);\n if (clicked.compare(anchor) !== 0) {\n setAnchor(clicked);\n }\n setView(view === 'day' ? 'month' : view === 'month' ? 'year' : 'day');\n };\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`range-${view}`}>\n {view === 'day' &&\n (props.behavior === 'scroll' ? (\n <ScrollBody<'range'>\n mode=\"range\"\n locale={locale}\n focusedDate={focusedDate}\n onFocusedMonthChange={(next) => setAnchor(next)}\n value={range.value as DateRange | null}\n previewRange={range.previewRange}\n onSelectDate={(date) => range.selectDate(date)}\n firstDayOfWeek={firstDayOfWeek}\n weekendDays={weekendDays}\n {...(props.minValue !== undefined ? { minValue: props.minValue } : {})}\n {...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {})}\n {...(props.isDateUnavailable !== undefined\n ? { isDateUnavailable: props.isDateUnavailable }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n ) : (\n <View\n style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}\n >\n {months.map((m) => (\n <DayGrid<'range'>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode=\"range\"\n value={range.value as DateRange | null}\n previewRange={range.previewRange}\n focusedDate={focusedDate}\n isUnavailable={range.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => range.selectDate(date)}\n onDayHover={(date) => range.setHoveredDate(date)}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n ))}\n {view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n const picked = new CalendarDate(anchor.year, month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('day');\n }}\n />\n </View>\n )}\n {view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n const picked = new CalendarDate(year, anchor.month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\n/**\n * Slot wrapper for Calendar's `caption=\"custom\"` mode. Use it to mark the\n * subtree that renders your own month/year pickers (or any other header\n * UI). Inside, call {@link useCalendarCaption} to read the current\n * month/year and trigger changes.\n *\n * `<Calendar.Caption>` is a transparent passthrough — Calendar renders\n * any direct children when `caption=\"custom\"`. The wrapper exists to\n * make the intent explicit at call sites and to give static analysis\n * something to introspect.\n *\n * @example\n * ```tsx\n * <Calendar caption=\"custom\">\n * <Calendar.Caption>\n * <MyMonthSelect />\n * <MyYearSelect />\n * </Calendar.Caption>\n * </Calendar>\n * ```\n */\nexport const CalendarCaption = ({ children }: CalendarCaptionProps): ReactNode => <>{children}</>;\n// react-docgen-typescript keys the generated props table by displayName,\n// and dotted names like 'Calendar.Caption' would force odd index lookups\n// downstream. Keep the registered name flat; consumers still access it\n// at call sites as `Calendar.Caption`.\nCalendarCaption.displayName = 'CalendarCaption';\n\nexport type CalendarCaptionProps = {\n /** Custom caption content — typically your own month / year selects. */\n children?: ReactNode;\n};\n\ntype CalendarComponent = typeof CalendarRoot & { Caption: typeof CalendarCaption };\n\nexport const Calendar = CalendarRoot as CalendarComponent;\nCalendar.Caption = CalendarCaption;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/i18n/locale.tsx","../src/components/Calendar/scroll/ScrollBody.tsx","../src/components/Calendar/state/locale-utils.ts","../src/components/Calendar/state/use-calendar-keyboard.ts","../src/components/Calendar/state/constraints.ts","../src/components/Calendar/state/use-calendar-state.ts","../src/components/Calendar/state/use-range-state.ts","../src/components/Calendar/state/use-caption.tsx","../src/components/Calendar/view/Caption.tsx","../src/components/Calendar/view/DayCell.tsx","../src/components/Calendar/view/DayGrid.tsx","../src/components/Calendar/view/Footer.tsx","../src/components/Calendar/view/MonthGrid.tsx","../src/components/Calendar/view/YearGrid.tsx","../src/components/Calendar/Calendar.tsx"],"names":["useMemo","useCallback","useState","createContext","jsx","useContext","RNText","Pressable","jsxs","View","today","getLocalTimeZone","ROW_KEYS","initialFocus","Fragment"],"mappings":"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","file":"chunk-VOF3S5I4.js","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport type LocaleInput = string | Intl.Locale;\n\n/**\n * Resolve the runtime's default locale. Works under Hermes (which ships\n * Intl on iOS via system ICU and on Android via bundled ICU) and any\n * browser. Returns a BCP 47 tag.\n */\nexport const detectLocale = (): string => {\n try {\n return new Intl.DateTimeFormat().resolvedOptions().locale;\n } catch {\n return 'en-US';\n }\n};\n\nconst toTag = (input: LocaleInput | undefined): string =>\n input === undefined ? detectLocale() : typeof input === 'string' ? input : input.toString();\n\nconst LocaleContext = createContext<string | null>(null);\nLocaleContext.displayName = 'LocaleContext';\n\nexport type LocaleProviderProps = {\n locale?: LocaleInput;\n children?: ReactNode;\n};\n\nexport const LocaleProvider = ({ locale, children }: LocaleProviderProps) => {\n const value = useMemo(() => toTag(locale), [locale]);\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>;\n};\n\nexport const useLocale = (): string => {\n const ctx = useContext(LocaleContext);\n return ctx ?? detectLocale();\n};\n","import type { CalendarDate } from '@internationalized/date';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { CalendarMode, CalendarValue, ChangeMeta, DateRange, DayContext } from '../Calendar.types';\nimport type { DayOfWeek } from '../state/locale-utils';\n\nexport type ScrollBodyProps<M extends CalendarMode> = {\n mode: M;\n locale: string;\n focusedDate: CalendarDate;\n onFocusedMonthChange: (anchor: CalendarDate, meta: ChangeMeta) => void;\n value: CalendarValue<M>;\n onSelectDate: (date: CalendarDate) => void;\n\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n\n showWeekNumbers?: boolean;\n highlightToday?: boolean;\n firstDayOfWeek: DayOfWeek;\n weekendDays: [DayOfWeek, DayOfWeek];\n\n renderDay?: (ctx: DayContext) => ReactNode;\n\n /** Range-only; undefined for single/multiple. */\n previewRange?: DateRange | null;\n};\n\n// Platform-extension fallback. Metro (native) picks `.native.tsx`; Vite/Webpack\n// (web) pick `.web.tsx`. Reaching this default means the bundler config is\n// broken — fail loudly rather than silently mounting an empty body.\nexport const ScrollBody = <M extends CalendarMode>(_props: ScrollBodyProps<M>): ReactElement => {\n throw new Error(\n '[Calendar] ScrollBody: no platform implementation resolved. ' +\n 'Ensure your bundler honors *.web.tsx / *.native.tsx extensions.'\n );\n};\n","import type { CalendarDate } from '@internationalized/date';\n\n/**\n * Day of week index where 0 = Sunday, 1 = Monday, ..., 6 = Saturday.\n * Matches `Date.prototype.getDay()` semantics.\n */\nexport type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * The weekday a calendar week begins on for the given locale, per CLDR.\n * Examples: en-US → 0 (Sun), de-DE → 1 (Mon), fa-IR → 6 (Sat).\n *\n * Trusts `Intl.Locale#getWeekInfo` as the authoritative source. Falls back\n * to a small lookup only when CLDR data is unavailable (e.g. Hermes on\n * Android with bundled ICU gaps).\n */\nexport const getFirstDayOfWeek = (locale: string): DayOfWeek => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (typeof info?.firstDay === 'number') {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n return (info.firstDay === 7 ? 0 : info.firstDay) as DayOfWeek;\n }\n } catch {\n // fall through\n }\n // Fallback for environments without CLDR weekInfo (e.g. some Hermes builds).\n return FIRST_DAY_FALLBACK[locale] ?? FIRST_DAY_FALLBACK[locale.split('-')[0] ?? ''] ?? 1;\n};\n\n/**\n * Last-resort lookup when `Intl.Locale#getWeekInfo` is unavailable. Values\n * are 0=Sun..6=Sat. Keep small — only enough to keep the calendar usable\n * if the runtime has no CLDR data at all.\n */\nconst FIRST_DAY_FALLBACK: Record<string, DayOfWeek> = {\n en: 0,\n 'en-US': 0,\n 'en-CA': 0,\n 'en-GB': 1,\n 'en-AU': 1,\n de: 1,\n fr: 1,\n ja: 0,\n ar: 0,\n he: 0,\n fa: 6,\n};\n\n/**\n * The two days CLDR considers weekend in this locale (e.g. [6, 0] for\n * en-US = Sat+Sun; [5, 6] for ar-SA = Fri+Sat).\n *\n * Falls back to a small lookup when `Intl.Locale#getWeekInfo` is unavailable\n * (notably Hermes Android in some configurations).\n */\nexport const getWeekendDays = (locale: string): [DayOfWeek, DayOfWeek] => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (info?.weekend && Array.isArray(info.weekend) && info.weekend.length === 2) {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n const [a, b] = info.weekend.map((d: number) => (d === 7 ? 0 : d) as DayOfWeek);\n return [a, b];\n }\n } catch {\n // fall through\n }\n return WEEKEND_FALLBACK[locale] ?? WEEKEND_FALLBACK[locale.split('-')[0] ?? ''] ?? [6, 0];\n};\n\nconst WEEKEND_FALLBACK: Record<string, [DayOfWeek, DayOfWeek]> = {\n 'en-US': [6, 0],\n 'de-DE': [6, 0],\n 'fr-FR': [6, 0],\n 'ja-JP': [6, 0],\n 'ar-SA': [5, 6],\n 'ar-AE': [5, 6],\n 'he-IL': [5, 6],\n 'fa-IR': [4, 5],\n en: [6, 0],\n de: [6, 0],\n fr: [6, 0],\n ar: [5, 6],\n he: [5, 6],\n};\n\n/**\n * Seven weekday short names ordered to begin at the locale's firstDayOfWeek.\n * Use for the calendar grid header row.\n */\nexport const formatWeekdayNames = (locale: string, format: 'short' | 'narrow' = 'short'): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: format });\n const start = getFirstDayOfWeek(locale);\n // 2026-01-04 is a Sunday in Gregorian; offset from there.\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(Date.UTC(2026, 0, 4 + ((start + i) % 7)));\n return fmt.format(d);\n });\n};\n\n/** \"May 2026\" / \"Mai 2026\" / \"mai 2026\" — for the calendar header. */\nexport const formatMonthYearTitle = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' });\n return fmt.format(date.toDate('UTC'));\n};\n\n/** Twelve full month names in the active locale. */\nexport const formatMonthNames = (locale: string): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long' });\n return Array.from({ length: 12 }, (_, m) => fmt.format(new Date(Date.UTC(2026, m, 15))));\n};\n\n/** \"May 5, 2026\" — for screen-reader announcements of the focused date. */\nexport const formatFullDate = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { dateStyle: 'long' });\n return fmt.format(date.toDate('UTC'));\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback } from 'react';\nimport type { CalendarView, ChangeMeta } from '../Calendar.types';\nimport type { DayOfWeek } from './locale-utils';\nimport type { FocusDelta } from './use-calendar-state';\n\nexport type UseCalendarKeyboardProps = {\n focusedDate: CalendarDate;\n moveFocus: (delta: FocusDelta) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n setView: (view: CalendarView) => void;\n view: CalendarView;\n /** Default 0 (Sunday). Used by Home/End to compute week boundaries. */\n firstDayOfWeek?: DayOfWeek;\n};\n\nexport const useCalendarKeyboard = (props: UseCalendarKeyboardProps) => {\n const { focusedDate, moveFocus, selectDate, firstDayOfWeek = 0 } = props;\n\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const focusedDow = focusedDate.toDate('UTC').getUTCDay() as DayOfWeek;\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n moveFocus({ days: -1 });\n return;\n case 'ArrowRight':\n event.preventDefault();\n moveFocus({ days: 1 });\n return;\n case 'ArrowUp':\n event.preventDefault();\n moveFocus({ weeks: -1 });\n return;\n case 'ArrowDown':\n event.preventDefault();\n moveFocus({ weeks: 1 });\n return;\n case 'PageUp':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: -1 } : { months: -1 });\n return;\n case 'PageDown':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: 1 } : { months: 1 });\n return;\n case 'Home': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n moveFocus({ days: -back });\n return;\n }\n case 'End': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n const forward = 6 - back;\n moveFocus({ days: forward });\n return;\n }\n case 'Enter':\n case ' ':\n event.preventDefault();\n selectDate(focusedDate, 'keyboard');\n return;\n default:\n return;\n }\n },\n [focusedDate, firstDayOfWeek, moveFocus, selectDate]\n );\n\n return { onKeyDown };\n};\n","import type { CalendarDate } from '@internationalized/date';\n\nexport type Constraints = {\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n};\n\nconst cmp = (a: CalendarDate, b: CalendarDate): number => a.compare(b);\n\nexport const isOutOfRange = (date: CalendarDate, bounds: Pick<Constraints, 'minValue' | 'maxValue'> = {}): boolean => {\n if (bounds.minValue && cmp(date, bounds.minValue) < 0) {\n return true;\n }\n if (bounds.maxValue && cmp(date, bounds.maxValue) > 0) {\n return true;\n }\n return false;\n};\n\n/**\n * Returns a single predicate that combines minValue/maxValue bounds and\n * a user-provided `isDateUnavailable`. The composed function is what every\n * view layer (DayCell, keyboard nav focus skip, scroll list) consults.\n */\nexport const composeUnavailable =\n (c: Constraints) =>\n (date: CalendarDate): boolean => {\n if (isOutOfRange(date, c)) {\n return true;\n }\n if (c.isDateUnavailable?.(date)) {\n return true;\n }\n return false;\n };\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, today } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { CalendarMode, CalendarValue, CalendarView, ChangeMeta } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type FocusDelta = {\n days?: number;\n weeks?: number;\n months?: number;\n years?: number;\n};\n\nexport type UseCalendarStateProps<M extends CalendarMode> = Constraints & {\n mode?: M;\n locale: string;\n value?: CalendarValue<M>;\n defaultValue?: CalendarValue<M>;\n onChange?: (value: CalendarValue<M>, meta: ChangeMeta) => void;\n view?: CalendarView;\n defaultView?: CalendarView;\n onViewChange?: (view: CalendarView) => void;\n};\n\nexport type UseCalendarStateReturn<M extends CalendarMode> = {\n value: CalendarValue<M>;\n view: CalendarView;\n focusedDate: CalendarDate;\n setView: (next: CalendarView) => void;\n moveFocus: (delta: FocusDelta) => void;\n setFocusedDate: (date: CalendarDate) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst initialFocus = <M extends CalendarMode>(\n mode: M,\n value: CalendarValue<M> | undefined,\n fallback: CalendarDate\n): CalendarDate => {\n if (!value) {\n return fallback;\n }\n if (mode === 'single') {\n return (value as CalendarDate | null) ?? fallback;\n }\n if (mode === 'range') {\n const r = value as { start: CalendarDate; end: CalendarDate | null };\n return r?.start ?? fallback;\n }\n const arr = value as CalendarDate[];\n return arr[0] ?? fallback;\n};\n\nexport const useCalendarState = <M extends CalendarMode = 'single'>(\n props: UseCalendarStateProps<M>\n): UseCalendarStateReturn<M> => {\n const mode = (props.mode ?? 'single') as M;\n const fallback = today(getLocalTimeZone());\n\n const [internalValue, setInternalValue] = useState<CalendarValue<M>>(() => {\n if (props.value !== undefined) {\n return props.value;\n }\n if (props.defaultValue !== undefined) {\n return props.defaultValue;\n }\n return (mode === 'multiple' ? [] : null) as CalendarValue<M>;\n });\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value as CalendarValue<M>) : internalValue;\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view = isViewControlled ? (props.view as CalendarView) : internalView;\n\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(() => initialFocus(mode, value, fallback));\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const moveFocus = useCallback(\n (delta: FocusDelta) => {\n setFocusedDate((cur) => {\n let next = cur;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n if (!isUnavailable(next)) {\n return next;\n }\n // Target is disabled — scan in the direction of motion for\n // the next available date. Cap at ~100 days so a wide\n // disabled range doesn't loop forever; if nothing's\n // available within the cap, leave focus where it was.\n const totalDelta =\n (delta.days ?? 0) + (delta.weeks ?? 0) * 7 + (delta.months ?? 0) * 30 + (delta.years ?? 0) * 365;\n const sign = totalDelta >= 0 ? 1 : -1;\n for (let i = 1; i <= 100; i++) {\n const candidate = next.add({ days: sign * i });\n if (!isUnavailable(candidate)) {\n return candidate;\n }\n }\n return cur;\n });\n },\n [isUnavailable]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source']) => {\n if (isUnavailable(date)) {\n return;\n }\n const meta: ChangeMeta = { view, source };\n let next: CalendarValue<M>;\n if (mode === 'single') {\n next = date as CalendarValue<M>;\n } else if (mode === 'multiple') {\n const arr = (value as CalendarDate[]) ?? [];\n const exists = arr.some((d) => d.compare(date) === 0);\n next = (exists ? arr.filter((d) => d.compare(date) !== 0) : [...arr, date]) as CalendarValue<M>;\n } else {\n // range mode is delegated to useRangeState\n return;\n }\n if (!isControlled) {\n setInternalValue(next);\n }\n props.onChange?.(next, meta);\n setFocusedDate(date);\n },\n [isControlled, isUnavailable, mode, props.onChange, value, view]\n );\n\n return {\n value,\n view,\n focusedDate,\n setView,\n moveFocus,\n setFocusedDate,\n selectDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { ChangeMeta, DateRange } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type UseRangeStateProps = Constraints & {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (value: DateRange | null, meta: ChangeMeta) => void;\n minNights?: number;\n maxNights?: number;\n};\n\nexport type UseRangeStateReturn = {\n value: DateRange | null;\n previewRange: DateRange | null;\n hoveredDate: CalendarDate | null;\n selectDate: (date: CalendarDate, source?: ChangeMeta['source']) => void;\n setHoveredDate: (date: CalendarDate | null) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst order = (a: CalendarDate, b: CalendarDate): [CalendarDate, CalendarDate] => (a.compare(b) <= 0 ? [a, b] : [b, a]);\n\nconst nightsBetween = (a: CalendarDate, b: CalendarDate): number => {\n const [first, last] = order(a, b);\n return Math.round((last.toDate('UTC').getTime() - first.toDate('UTC').getTime()) / 86400000);\n};\n\nexport const useRangeState = (props: UseRangeStateProps): UseRangeStateReturn => {\n const [internal, setInternal] = useState<DateRange | null>(props.defaultValue ?? null);\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value ?? null) : internal;\n\n const [hoveredDate, setHoveredDate] = useState<CalendarDate | null>(null);\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const commit = useCallback(\n (next: DateRange | null, source: ChangeMeta['source']) => {\n if (!isControlled) {\n setInternal(next);\n }\n props.onChange?.(next, { view: 'day', source });\n },\n [isControlled, props.onChange]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source'] = 'click') => {\n if (isUnavailable(date)) {\n return;\n }\n\n // No range yet, or both endpoints set → start a fresh selection.\n if (!value || value.end !== null) {\n commit({ start: date, end: null }, source);\n setHoveredDate(null);\n return;\n }\n\n // We have a pending start, no end yet.\n const nights = nightsBetween(value.start, date);\n if (props.minNights !== undefined && nights < props.minNights) {\n return;\n }\n if (props.maxNights !== undefined && nights > props.maxNights) {\n return;\n }\n\n const [start, end] = order(value.start, date);\n commit({ start, end }, source);\n setHoveredDate(null);\n },\n [commit, isUnavailable, props.maxNights, props.minNights, value]\n );\n\n const previewRange = useMemo<DateRange | null>(() => {\n if (!value || value.end !== null || !hoveredDate) {\n return null;\n }\n const [start, end] = order(value.start, hoveredDate);\n return { start, end };\n }, [hoveredDate, value]);\n\n return {\n value,\n previewRange,\n hoveredDate,\n selectDate,\n setHoveredDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { createContext, type ReactNode, useContext } from 'react';\n\nexport type CaptionOption = {\n value: number;\n label: string;\n disabled: boolean;\n};\n\nexport type CaptionContextValue = {\n /** Currently displayed month, 1..12. */\n month: number;\n /** Currently displayed year. */\n year: number;\n visibleMonth: CalendarDate;\n /** All months a, optional disabled flag derived from min/max + isDateUnavailable. */\n monthOptions: ReadonlyArray<CaptionOption>;\n /** Years inside `yearRange`, optional disabled flag. */\n yearOptions: ReadonlyArray<CaptionOption>;\n /** Set the displayed month, 1..12. */\n setMonth: (month: number) => void;\n /** Set the displayed year. */\n setYear: (year: number) => void;\n /** Move to the previous month/year/decade depending on the current view. */\n goPrev: () => void;\n /** Move to the next month/year/decade depending on the current view. */\n goNext: () => void;\n};\n\nconst CaptionContext = createContext<CaptionContextValue | null>(null);\nCaptionContext.displayName = 'CalendarCaptionContext';\n\nexport type CaptionProviderProps = {\n value: CaptionContextValue;\n children?: ReactNode;\n};\n\nexport const CaptionProvider = ({ value, children }: CaptionProviderProps) => (\n <CaptionContext.Provider value={value}>{children}</CaptionContext.Provider>\n);\n\n/**\n * Returns the current caption state and setters for a Calendar. Use inside\n * a `<Calendar.Caption>` slot (or any direct child of a Calendar with\n * `caption=\"custom\"`) to render your own dropdowns / navigation.\n *\n * @throws if called outside a Calendar with `caption=\"custom\"`.\n */\nexport const useCalendarCaption = (): CaptionContextValue => {\n const ctx = useContext(CaptionContext);\n if (!ctx) {\n throw new Error('useCalendarCaption must be called inside a <Calendar caption=\"custom\"> subtree.');\n }\n return ctx;\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useTranslation } from '../../../i18n/use-translation';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { Select } from '../../Select';\nimport type { CalendarCaption, CalendarView } from '../Calendar.types';\nimport { formatMonthNames, formatMonthYearTitle } from '../state/locale-utils';\nimport { type CaptionContextValue, type CaptionOption, CaptionProvider } from '../state/use-caption';\n\nconst ARROW_BUTTON_GAP = 8;\n\ntype CaptionProps = {\n /** All visible months, leftmost first. Always length-1 for non-day views. */\n months: ReadonlyArray<CalendarDate>;\n locale: string;\n view: CalendarView;\n caption: CalendarCaption;\n /** Width of one month grid; titles align centered above each grid. */\n gridWidth: number;\n monthGap: number;\n /** Year-dropdown bounds. */\n yearRange: [min: number, max: number];\n /** Constraint for disabling out-of-bounds options. */\n isMonthDisabled?: (year: number, month: number) => boolean;\n isYearDisabled?: (year: number) => boolean;\n onPrev: () => void;\n onNext: () => void;\n onTitlePress: (clicked: CalendarDate) => void;\n /** Mutate the anchor month for a specific visible month index. */\n onSetMonth: (slotIndex: number, month: number) => void;\n onSetYear: (slotIndex: number, year: number) => void;\n /** Children for `caption=\"custom\"` mode. */\n children?: ReactNode;\n};\n\ntype NavButtonProps = {\n label: string;\n onPress: () => void;\n children: ReactNode;\n};\n\nconst NavButton = ({ label, onPress, children }: NavButtonProps) => {\n const colors = useThemeColors();\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.94 : 1 }] }, border];\n }}\n >\n <RNText style={{ color: colors.semantic.text.default, fontSize: 16, lineHeight: 16, fontWeight: '500' }}>\n {children}\n </RNText>\n </Pressable>\n );\n};\n\nconst TitleButton = ({\n text,\n ariaLabel,\n onPress,\n drilldown,\n}: {\n text: string;\n ariaLabel: string;\n onPress?: () => void;\n drilldown: boolean;\n}) => {\n const colors = useThemeColors();\n if (!onPress) {\n return (\n <View style={{ paddingHorizontal: 12, paddingVertical: 6, alignItems: 'center' }}>\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n </View>\n );\n }\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={ariaLabel}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.97 : 1 }] }, border];\n }}\n >\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n {drilldown ? (\n <RNText aria-hidden style={{ color: colors.semantic.text.muted, fontSize: 10, opacity: 0.7 }}>\n ▾\n </RNText>\n ) : null}\n </Pressable>\n );\n};\n\nexport const Caption = ({\n months,\n locale,\n view,\n caption,\n gridWidth,\n monthGap,\n yearRange,\n isMonthDisabled,\n isYearDisabled,\n onPrev,\n onNext,\n onTitlePress,\n onSetMonth,\n onSetYear,\n children,\n}: CaptionProps) => {\n const { t } = useTranslation();\n\n const titleText = (m: CalendarDate) => {\n if (view === 'day') {\n return formatMonthYearTitle(m, locale);\n }\n if (view === 'month') {\n return String(m.year);\n }\n const start = m.year - (m.year % 10);\n return `${start} – ${start + 11}`;\n };\n\n const titleAriaKey =\n view === 'day'\n ? 'calendar.header.openMonthView'\n : view === 'month'\n ? 'calendar.header.openYearView'\n : 'calendar.header.openDayView';\n\n // Title row width — sized to the visible grids so titles align over them.\n const showMultiTitles = view === 'day' && months.length > 1;\n const titleRowWidth = showMultiTitles ? months.length * gridWidth + (months.length - 1) * monthGap : gridWidth;\n\n // Month and year option lists — used by the dropdown / custom modes.\n const monthNames = useMemo(() => formatMonthNames(locale), [locale]);\n\n // Custom mode: provide the context for slot consumers and render their JSX.\n // We use `months[0]` (focused leftmost month) for context — when consumers\n // need per-month dropdowns they can compose multiple `Calendar.Caption`s.\n const focused = months[0] ?? undefined;\n if (!focused) {\n return null;\n }\n const ctxValue: CaptionContextValue = {\n month: focused.month,\n year: focused.year,\n visibleMonth: focused,\n monthOptions: monthNames.map((label, i) => ({\n value: i + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, i + 1) ?? false,\n })),\n yearOptions: Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n })),\n setMonth: (m) => onSetMonth(0, m),\n setYear: (y) => onSetYear(0, y),\n goPrev: onPrev,\n goNext: onNext,\n };\n\n if (caption === 'custom') {\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <CaptionProvider value={ctxValue}>{children}</CaptionProvider>\n </View>\n );\n }\n\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <NavButton label={t('calendar.header.previous', { defaultValue: 'Previous month' })} onPress={onPrev}>\n ‹\n </NavButton>\n <View style={{ flexDirection: 'row', gap: monthGap, width: titleRowWidth }}>\n {showMultiTitles ? (\n months.map((m, i) => (\n <View key={`${m.year}-${m.month}`} style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={m.month}\n year={m.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(m.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(i, next)}\n onYearChange={(next) => onSetYear(i, next)}\n />\n ) : (\n <TitleButton\n text={titleText(m)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(m)}\n drilldown\n />\n )}\n </View>\n ))\n ) : (\n <View style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={focused.month}\n year={focused.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(0, next)}\n onYearChange={(next) => onSetYear(0, next)}\n />\n ) : (\n <TitleButton\n text={titleText(focused)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(focused)}\n drilldown\n />\n )}\n </View>\n )}\n </View>\n <NavButton label={t('calendar.header.next', { defaultValue: 'Next month' })} onPress={onNext}>\n ›\n </NavButton>\n </View>\n );\n};\n\nconst makeYearOptions = (\n yearRange: [number, number],\n isYearDisabled?: (year: number) => boolean\n): ReadonlyArray<CaptionOption> =>\n Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n }));\n\ntype DropdownPairProps = {\n month: number;\n year: number;\n monthOptions: ReadonlyArray<CaptionOption>;\n yearOptions: ReadonlyArray<CaptionOption>;\n onMonthChange: (m: number) => void;\n onYearChange: (y: number) => void;\n};\n\nconst DropdownPair = ({ month, year, monthOptions, yearOptions, onMonthChange, onYearChange }: DropdownPairProps) => {\n return (\n <View style={{ flexDirection: 'row', gap: 6 }}>\n <Select\n value={String(month)}\n onChange={(v) => onMonthChange(Number(v))}\n options={monthOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Month\"\n searchable={false}\n />\n <Select\n value={String(year)}\n onChange={(v) => onYearChange(Number(v))}\n options={yearOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Year\"\n searchable={false}\n />\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { TextStyle, ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { DayContext } from '../Calendar.types';\n\nexport type DayCellProps = {\n ctx: DayContext;\n onPress: () => void;\n onHoverIn?: () => void;\n onHoverOut?: () => void;\n /** When provided, the slot wins over default day rendering. */\n renderDay?: (ctx: DayContext) => ReactNode;\n /**\n * BCP-47 locale used to format the accessibility label\n * (e.g. \"Friday, May 8, 2026\"). Falls back to undefined (runtime default)\n * if not provided.\n */\n locale?: string;\n};\n\nexport const CELL_SIZE = 40;\n\n/**\n * Module-scope cache of Intl.DateTimeFormat instances keyed by locale.\n * Prior to caching, each DayCell instantiated a new formatter per render\n * (~420+ instantiations per scroll burst in scroll mode). The cache is\n * unbounded but the live locale set is also bounded — typically 1–2\n * entries per app — so no LRU is needed.\n */\nconst formatterCache = new Map<string, Intl.DateTimeFormat>();\nconst RUNTIME_DEFAULT_LOCALE_KEY = '__default__';\n\nconst getDayFormatter = (locale: string | undefined): Intl.DateTimeFormat | null => {\n const key = locale ?? RUNTIME_DEFAULT_LOCALE_KEY;\n const cached = formatterCache.get(key);\n if (cached) {\n return cached;\n }\n try {\n const fmt = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n });\n formatterCache.set(key, fmt);\n return fmt;\n } catch {\n return null;\n }\n};\n\n/**\n * Builds the day cell's accessibility label. Format:\n * \"{weekday}, {Month} {day}, {year}\" + optional state suffixes,\n * e.g. \"Friday, May 8, 2026, today, selected\".\n *\n * Kept module-local so view tests / Profiler harnesses can match it\n * with a regex without depending on Intl output for the suffix.\n *\n * KNOWN LIMITATION: State suffixes (\"today\", \"selected\", \"in range\",\n * \"unavailable\") are hardcoded English. Non-English locales get\n * mixed-language output (e.g. \"2026年5月8日金曜日, today\"). Proper\n * fix routes these through the project's i18n provider; tracked as\n * a follow-up to be addressed alongside the broader i18n sweep.\n *\n * TODO(i18n): localize state suffixes.\n */\nconst formatDayLabel = (ctx: DayContext, locale?: string): string => {\n const jsDate = new Date(Date.UTC(ctx.date.year, ctx.date.month - 1, ctx.date.day));\n const fmt = getDayFormatter(locale);\n const base = fmt\n ? fmt.format(jsDate)\n : // Fallback if the runtime rejects the locale tag.\n `${ctx.date.month}/${ctx.date.day}/${ctx.date.year}`;\n\n const suffixes: string[] = [];\n if (ctx.isToday) {\n suffixes.push('today');\n }\n if (ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd) {\n suffixes.push('selected');\n }\n if (ctx.isInRange && !ctx.isRangeStart && !ctx.isRangeEnd) {\n suffixes.push('in range');\n }\n if (ctx.isUnavailable) {\n suffixes.push('unavailable');\n }\n\n return suffixes.length > 0 ? `${base}, ${suffixes.join(', ')}` : base;\n};\n\nexport const DayCell = ({ ctx, onPress, onHoverIn, onHoverOut, renderDay, locale }: DayCellProps) => {\n const colors = useThemeColors();\n const accessibilityLabel = formatDayLabel(ctx, locale);\n\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n\n // Range middle / preview cells get a flat background drawn by the\n // gridcell wrapper in DayGrid (so adjacent cells visually connect).\n // The DayCell itself is transparent in that case.\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n const isRangeMiddle = isInsideRange && !isSelectedLike;\n\n const dataState = ctx.isSelected\n ? 'selected'\n : ctx.isRangeStart\n ? 'range-start'\n : ctx.isRangeEnd\n ? 'range-end'\n : ctx.isInPreviewRange\n ? 'preview'\n : ctx.isInRange\n ? 'in-range'\n : undefined;\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled: ctx.isUnavailable, selected: isSelectedLike }}\n disabled={ctx.isUnavailable}\n onPress={onPress}\n {...(onHoverIn ? { onHoverIn } : {})}\n {...(onHoverOut ? { onHoverOut } : {})}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 999, // perfect circle for endpoints/selected\n position: 'relative',\n };\n\n if (ctx.isUnavailable) {\n return [base, { opacity: 0.28 }];\n }\n\n let backgroundColor: string | undefined;\n let transform: ViewStyle['transform'];\n let borderWidth: number | undefined;\n let borderColor: string | undefined;\n\n if (isSelectedLike) {\n backgroundColor = colors.semantic.interactive.primary;\n if (pressed) {\n backgroundColor = colors.semantic.interactive.primaryPressed;\n } else if (hovered) {\n backgroundColor = colors.semantic.interactive.primaryHover;\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else if (isRangeMiddle) {\n // Sits ON TOP of the gridcell range fill. Keep transparent\n // so the bar reads continuous across cells. On hover we\n // brighten with a soft circular halo.\n backgroundColor = hovered ? colors.color.primary['200'] : 'transparent';\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else {\n // Idle / hover / focus on a non-selected non-range cell.\n if (pressed) {\n backgroundColor = colors.color.primary['200'];\n } else if (hovered) {\n backgroundColor = colors.color.primary['100'];\n } else {\n backgroundColor = 'transparent';\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n }\n\n if ((ctx.isFocused || focused) && !isSelectedLike) {\n borderWidth = 2;\n borderColor = colors.semantic.interactive.primary;\n }\n\n // RN-Web honors these as CSS transitions; native ignores silently.\n const transition: ViewStyle = {\n transitionProperty: 'background-color, transform, border-color, opacity',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n\n return [\n base,\n transition,\n {\n backgroundColor,\n ...(transform ? { transform } : {}),\n ...(borderWidth ? { borderWidth, borderColor } : {}),\n },\n ];\n }}\n {...({\n dataSet: {\n dayKey: `${ctx.date.year}-${ctx.date.month}-${ctx.date.day}`,\n ...(dataState ? { state: dataState } : {}),\n },\n } as unknown as { dataSet: Record<string, string> })}\n >\n {renderDay ? (\n renderDay(ctx)\n ) : (\n <>\n <RNText\n style={\n {\n color: isSelectedLike\n ? colors.semantic.text.inverted\n : ctx.isOutsideMonth\n ? colors.semantic.text.muted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: ctx.isToday ? '600' : '400',\n opacity: ctx.isOutsideMonth ? 0.55 : 1,\n transitionProperty: 'color',\n transitionDuration: '140ms',\n } as unknown as TextStyle\n }\n >\n {ctx.date.day}\n </RNText>\n {/* Today indicator: a 4px dot below the number, primary-colored,\n becomes white when the cell is selected. Subtler than a ring\n and never causes layout shift. */}\n {ctx.isToday ? (\n <View\n style={{\n position: 'absolute',\n bottom: 5,\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: isSelectedLike\n ? colors.semantic.text.inverted\n : colors.semantic.interactive.primary,\n }}\n />\n ) : null}\n </>\n )}\n </Pressable>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, startOfMonth, today } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { CalendarMode, CalendarValue, DateRange, DayContext } from '../Calendar.types';\nimport { type DayOfWeek, formatWeekdayNames, getFirstDayOfWeek } from '../state/locale-utils';\nimport { CELL_SIZE, DayCell } from './DayCell';\n\ntype DayGridProps<M extends CalendarMode> = {\n visibleMonth: CalendarDate;\n locale: string;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n firstDayOfWeek?: DayOfWeek;\n onDayPress: (date: CalendarDate) => void;\n onDayHover?: (date: CalendarDate | null) => void;\n renderDay?: (ctx: DayContext) => ReactNode;\n};\n\nconst isInRange = (date: CalendarDate, range: DateRange | null | undefined): boolean => {\n if (!range?.end) {\n return false;\n }\n return date.compare(range.start) >= 0 && date.compare(range.end) <= 0;\n};\n\nconst buildContext = <M extends CalendarMode>(\n date: CalendarDate,\n args: {\n visibleMonth: CalendarDate;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n todayDate: CalendarDate;\n }\n): DayContext => {\n const isOutsideMonth = date.month !== args.visibleMonth.month;\n const isToday = date.compare(args.todayDate) === 0;\n const dow = date.toDate('UTC').getUTCDay() as DayOfWeek;\n const isWeekend = args.weekendDays.includes(dow);\n let isSelected = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n let inRange = false;\n\n if (args.mode === 'single') {\n const v = args.value as CalendarDate | null;\n isSelected = !!v && v.compare(date) === 0;\n } else if (args.mode === 'range') {\n const r = args.value as DateRange | null;\n if (r) {\n isRangeStart = r.start.compare(date) === 0;\n isRangeEnd = r.end !== null && r.end.compare(date) === 0;\n inRange = isInRange(date, r);\n }\n } else {\n const arr = args.value as CalendarDate[];\n isSelected = arr.some((x) => x.compare(date) === 0);\n }\n\n return {\n date,\n isOutsideMonth,\n isToday,\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange: inRange,\n isInPreviewRange: isInRange(date, args.previewRange ?? null),\n isUnavailable: args.isUnavailable(date),\n isFocused: args.focusedDate.compare(date) === 0,\n isWeekend,\n };\n};\n\n// Stable row keys for the 6-row grid — never reorder, never change count.\nconst ROW_KEYS = ['row-0', 'row-1', 'row-2', 'row-3', 'row-4', 'row-5'] as const;\n\nexport const DayGrid = <M extends CalendarMode>(props: DayGridProps<M>) => {\n const {\n visibleMonth,\n locale,\n mode,\n value,\n previewRange,\n focusedDate,\n isUnavailable,\n weekendDays,\n firstDayOfWeek,\n onDayPress,\n onDayHover,\n renderDay,\n } = props;\n\n const colors = useThemeColors();\n const fdow = firstDayOfWeek ?? getFirstDayOfWeek(locale);\n\n const cells = useMemo<CalendarDate[]>(() => {\n const start = startOfMonth(visibleMonth);\n const startDow = start.toDate('UTC').getUTCDay() as DayOfWeek;\n const back = (startDow - fdow + 7) % 7;\n const first = start.subtract({ days: back });\n const total = 42; // 6 rows × 7 — handles all month layouts\n return Array.from({ length: total }, (_, i) => first.add({ days: i }));\n }, [visibleMonth, fdow]);\n\n const weekdayNames = useMemo(() => formatWeekdayNames(locale), [locale]);\n const todayDate = useMemo(() => today(getLocalTimeZone()), []);\n\n const gridWidth = 7 * CELL_SIZE;\n\n return (\n <View role=\"grid\" style={{ width: gridWidth }}>\n <View role=\"row\" style={{ flexDirection: 'row', marginBottom: 4 }}>\n {weekdayNames.map((name) => (\n <View\n key={name}\n role=\"columnheader\"\n style={{ width: CELL_SIZE, alignItems: 'center', paddingVertical: 6 }}\n >\n <RNText\n style={{\n fontSize: 11,\n fontWeight: '500',\n letterSpacing: 0.6,\n color: colors.semantic.text.muted,\n textTransform: 'uppercase',\n }}\n >\n {name}\n </RNText>\n </View>\n ))}\n </View>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} role=\"row\" style={{ flexDirection: 'row' }}>\n {cells.slice(row * 7, row * 7 + 7).map((date) => {\n const ctx = buildContext(date, {\n visibleMonth,\n mode,\n value,\n ...(previewRange !== undefined ? { previewRange } : {}),\n focusedDate,\n isUnavailable,\n weekendDays,\n todayDate,\n });\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n\n // Range continuity: middle cells get a flat full-width\n // background. Endpoints get a half-fill on the side\n // facing the range so the bar visually connects with\n // the adjacent cell. Single-day ranges get no spillover.\n const wrapperStyle: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n position: 'relative',\n };\n const rangeFillTint = colors.color.primary['100'];\n let rangeFillStyle: ViewStyle | null = null;\n\n if (ctx.isRangeStart && !ctx.isRangeEnd) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: '50%',\n right: 0,\n backgroundColor: rangeFillTint,\n };\n } else if (ctx.isRangeEnd && !ctx.isRangeStart) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: '50%',\n backgroundColor: rangeFillTint,\n };\n } else if (isInsideRange && !isSelectedLike) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: rangeFillTint,\n };\n }\n\n const gridcellProps = {\n role: 'gridcell' as 'cell',\n ...(isSelectedLike ? { 'aria-selected': true as const } : {}),\n };\n\n return (\n <View\n key={`${date.year}-${date.month}-${date.day}`}\n {...gridcellProps}\n style={wrapperStyle}\n >\n {rangeFillStyle ? <View style={rangeFillStyle} /> : null}\n <DayCell\n ctx={ctx}\n locale={locale}\n onPress={() => onDayPress(date)}\n {...(onDayHover\n ? {\n onHoverIn: () => onDayHover(date),\n onHoverOut: () => onDayHover(null),\n }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { View } from 'react-native';\n\nexport const Footer = ({ children }: { children?: ReactNode }) => <View style={{ paddingTop: 12 }}>{children}</View>;\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { formatMonthNames } from '../state/locale-utils';\n\ntype MonthGridProps = {\n visibleMonth: CalendarDate;\n locale: string;\n /** Width to fill (calendar inner width). Cells distribute across this. */\n availableWidth: number;\n onSelect: (month: number) => void; // 1..12\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2', 'r3'] as const;\n\nexport const MonthGrid = ({ visibleMonth, locale, availableWidth, onSelect }: MonthGridProps) => {\n const colors = useThemeColors();\n const names = formatMonthNames(locale);\n const cellHeight = 56;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2].map((col) => {\n const idx = row * 3 + col;\n const monthNumber = idx + 1;\n const isCurrent = monthNumber === visibleMonth.month;\n const name = names[idx] ?? '';\n return (\n <View key={monthNumber} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={name}\n onPress={() => onSelect(monthNumber)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n }}\n >\n {name}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\n\ntype YearGridProps = {\n visibleMonth: CalendarDate;\n /** Width to fill (calendar inner width). */\n availableWidth: number;\n onSelect: (year: number) => void;\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2'] as const;\n\nexport const YearGrid = ({ visibleMonth, availableWidth, onSelect }: YearGridProps) => {\n const colors = useThemeColors();\n const decadeStart = visibleMonth.year - (visibleMonth.year % 10);\n const years = Array.from({ length: 12 }, (_, i) => decadeStart + i - 1);\n const cellHeight = 60;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2, 3].map((col) => {\n const year = years[row * 4 + col];\n if (year === undefined) {\n return null;\n }\n const isCurrent = year === visibleMonth.year;\n const isAdjacentDecade = year < decadeStart || year >= decadeStart + 10;\n return (\n <View key={year} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n onPress={() => onSelect(year)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n opacity: isAdjacentDecade ? 0.45 : 1,\n }}\n >\n {year}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport { CalendarDate, getLocalTimeZone, today } from '@internationalized/date';\nimport { type ReactNode, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport type { LayoutChangeEvent, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { useLocale } from '../../i18n/locale';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport type { CalendarBaseProps, CalendarMode, CalendarValue, CalendarView, DateRange } from './Calendar.types';\nimport { ScrollBody } from './scroll/ScrollBody';\nimport { type DayOfWeek, getFirstDayOfWeek, getWeekendDays } from './state/locale-utils';\nimport { useCalendarKeyboard } from './state/use-calendar-keyboard';\nimport { useCalendarState } from './state/use-calendar-state';\nimport { useRangeState } from './state/use-range-state';\nimport { Caption } from './view/Caption';\nimport { CELL_SIZE } from './view/DayCell';\nimport { DayGrid } from './view/DayGrid';\nimport { Footer } from './view/Footer';\nimport { MonthGrid } from './view/MonthGrid';\nimport { YearGrid } from './view/YearGrid';\n\n// Width constants used to compute the calendar's natural content width and\n// to pick a responsive `visibleMonths` based on the parent container width.\nconst GRID_WIDTH = 7 * CELL_SIZE; // single month grid (7 cols)\nconst MONTH_GAP = 16;\nconst ARROW_AREA = 32 + 8; // nav button width + gap to first/last grid edge\nconst SURFACE_PADDING = 16;\nconst SURFACE_BORDER = 1;\nconst requiredOuterWidth = (n: number) =>\n 2 * (ARROW_AREA + SURFACE_PADDING + SURFACE_BORDER) + n * GRID_WIDTH + (n - 1) * MONTH_GAP;\n\n// Body fade-up on view/month change. The wrapper's `key` flips on every\n// navigation (prev/next, drilldown), forcing a fresh mount; FadeIn starts\n// at opacity 0 + 4px down, then bumps to 1 / 0 in an effect so the inline\n// transition runs. RN-Web honors transition* style props; native ignores.\nconst focusDayCell = (root: HTMLElement | null, date: CalendarDate, force: boolean) => {\n if (!root) {\n return;\n }\n // DOM-only: keyboard focus management has no analog on native, where this\n // ref points at a RN View instead of HTMLElement. Bail out before touching\n // `document` so jest-expo / RN runtime don't ReferenceError.\n if (typeof document === 'undefined' || typeof root.contains !== 'function') {\n return;\n }\n if (!force && !root.contains(document.activeElement)) {\n return;\n }\n const sel = `[data-day-key=\"${date.year}-${date.month}-${date.day}\"]`;\n const cell = root.querySelector(sel) as HTMLElement | null;\n const isDisabled = (cell as HTMLButtonElement | null)?.disabled === true;\n if (cell && !isDisabled) {\n if (cell !== document.activeElement) {\n cell.focus();\n }\n return;\n }\n // Cell is missing or disabled — fall back to focusing the calendar root\n // so subsequent keyboard navigation continues to fire onKeyDown\n // (otherwise focus drops to <body> and arrow keys go to the page).\n if (force && !root.contains(document.activeElement)) {\n root.focus();\n }\n};\n\nconst FadeIn = ({ children }: { children: ReactNode }) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n const id = requestAnimationFrame(() => setMounted(true));\n return () => cancelAnimationFrame(id);\n }, []);\n return (\n <View\n style={\n {\n opacity: mounted ? 1 : 0,\n transform: [{ translateY: mounted ? 0 : 4 }],\n transitionProperty: 'opacity, transform',\n transitionDuration: '220ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n } as ViewStyle\n }\n >\n {children}\n </View>\n );\n};\n\n/**\n * Picks a responsive number of visible months from a measured container\n * width. Used when the consumer doesn't pin `visibleMonths`. Falls back\n * to 1 month while measurement is in flight (initial render) so we never\n * overflow on first paint.\n */\nconst resolveYearRange = (\n input: [number, number] | undefined,\n minValue: import('@internationalized/date').CalendarDate | undefined,\n maxValue: import('@internationalized/date').CalendarDate | undefined,\n focusedYear: number\n): [number, number] => {\n if (input) {\n return input;\n }\n if (minValue && maxValue) {\n return [minValue.year, maxValue.year];\n }\n if (minValue) {\n return [minValue.year, Math.max(minValue.year, focusedYear + 10)];\n }\n if (maxValue) {\n return [Math.min(maxValue.year, focusedYear - 100), maxValue.year];\n }\n return [focusedYear - 100, focusedYear + 10];\n};\n\nconst pickVisibleMonths = (input: number | 'auto' | undefined, measuredWidth: number | null): number => {\n // `visibleMonths` is treated as a *maximum*: when the parent container\n // is too narrow to fit `target` months side-by-side, we drop to the\n // largest count that fits. `auto` defaults to 2.\n const target = typeof input === 'number' ? input : 2;\n if (measuredWidth == null || measuredWidth === 0) {\n // Pre-measurement (e.g. SSR / jsdom). Trust an explicit number;\n // fall back to 1 for `auto` so we don't overflow on first paint.\n return typeof input === 'number' ? input : 1;\n }\n for (let n = target; n >= 1; n--) {\n if (measuredWidth >= requiredOuterWidth(n)) {\n return n;\n }\n }\n return 1;\n};\n\n/**\n * Outer wrapper that measures the available container width and renders\n * the actual Calendar root once the measurement is in. Renders nothing on\n * the first paint to avoid the 1-month → 2-month flash; this is one\n * synchronous re-render after layout, imperceptible in practice.\n */\nconst CalendarRoot = <M extends CalendarMode = 'single'>(props: CalendarBaseProps<M>) => {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const onLayout = useCallback((e: LayoutChangeEvent) => {\n const next = e.nativeEvent.layout.width;\n setContainerWidth((prev) => (prev === next ? prev : next));\n }, []);\n\n return (\n <View onLayout={onLayout} style={{ width: '100%' }}>\n <CalendarSurface<M> containerWidth={containerWidth ?? 0} {...props} />\n </View>\n );\n};\n\nconst CalendarSurface = <M extends CalendarMode = 'single'>(\n props: CalendarBaseProps<M> & { containerWidth: number }\n) => {\n const providerLocale = useLocale();\n const locale = props.locale ?? providerLocale;\n\n if ((props.mode ?? 'single') === 'range') {\n return (\n <RangeCalendar\n {...(props as unknown as CalendarBaseProps<'range'> & { containerWidth: number })}\n locale={locale}\n />\n );\n }\n return (\n <SingleOrMultiCalendar\n {...(props as unknown as CalendarBaseProps<Exclude<CalendarMode, 'range'>> & { containerWidth: number })}\n locale={locale}\n />\n );\n};\n\n/**\n * Computes both the inner content width (for centering the body) and the\n * outer surface width (for the bordered card). Both depend on\n * visibleMonths only.\n */\nconst surfaceMetrics = (visibleMonths: number) => {\n const innerWidth = 2 * ARROW_AREA + visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP;\n return {\n innerWidth,\n // Body grids row width (excludes arrow area)\n gridsRowWidth: visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP,\n };\n};\n\nconst SingleOrMultiCalendar = <M extends Exclude<CalendarMode, 'range'>>(\n props: CalendarBaseProps<M> & { locale: string; containerWidth: number }\n) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = props.behavior === 'scroll' ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n useEffect(() => {\n if (\n process.env.NODE_ENV !== 'production' &&\n props.behavior === 'scroll' &&\n typeof props.visibleMonths === 'number' &&\n props.visibleMonths > 1\n ) {\n // biome-ignore lint/suspicious/noConsole: dev-mode developer warning\n console.warn('[Calendar] visibleMonths is ignored when behavior=\"scroll\"; falling back to single column.');\n }\n }, [props.behavior, props.visibleMonths]);\n\n // Anchor month: what the user sees. Decoupled from `state.focusedDate`\n // so selecting a day in the rightmost grid does NOT shift the view.\n // Prev/Next buttons mutate this anchor; selectDate does not.\n const containerRef = useRef<HTMLElement | null>(null);\n\n const state = useCalendarState<M>({\n ...(props.mode !== undefined ? { mode: props.mode } : {}),\n locale,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.view !== undefined ? { view: props.view } : {}),\n ...(props.defaultView !== undefined ? { defaultView: props.defaultView } : {}),\n ...(props.onViewChange !== undefined ? { onViewChange: props.onViewChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n });\n\n const [anchor, setAnchor] = useState<CalendarDate>(state.focusedDate);\n\n // Snap the anchor when the focused date moves OUTSIDE visible months\n // (only triggered by keyboard nav). We must not re-fire when the\n // anchor changes (prev/next), or arrow navigation would snap right\n // back to the focused month. anchorRef gives us the current value\n // without putting `anchor` in the dependency array.\n const anchorRef = useRef(anchor);\n useEffect(() => {\n anchorRef.current = anchor;\n }, [anchor]);\n useEffect(() => {\n const start = anchorRef.current;\n const end = start.add({ months: visibleMonths });\n if (state.focusedDate.compare(start) < 0 || state.focusedDate.compare(end) >= 0) {\n setAnchor(state.focusedDate);\n }\n }, [state.focusedDate, visibleMonths]);\n\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: state.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, state.focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [state.focusedDate, state.value]);\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate: state.focusedDate,\n moveFocus: (delta: import('./state/use-calendar-state').FocusDelta) => {\n state.moveFocus(delta);\n // PgDn/PgUp (months) and Shift+PgDn/PgUp (years) feel like\n // \"scroll the view by N\" — shift the anchor by the same delta so\n // the focused cell stays in its current slot. Day/week deltas\n // leave the anchor alone; the snap effect handles overflow.\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: state.selectDate,\n setView: state.setView,\n view: state.view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else if (props.behavior === 'scroll') {\n state.moveFocus({ months: -1 });\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else if (props.behavior === 'scroll') {\n state.moveFocus({ months: 1 });\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const onTitlePress = () => state.setView(state.view === 'day' ? 'month' : state.view === 'month' ? 'year' : 'day');\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={state.view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`smc-${state.view}`}>\n {state.view === 'day' &&\n (props.behavior === 'scroll' ? (\n <ScrollBody<M>\n mode={(props.mode ?? 'single') as M}\n locale={locale}\n focusedDate={state.focusedDate}\n onFocusedMonthChange={(next) => setAnchor(next)}\n value={state.value as CalendarValue<M>}\n onSelectDate={(date) => state.selectDate(date, 'click')}\n firstDayOfWeek={firstDayOfWeek}\n weekendDays={weekendDays}\n {...(props.minValue !== undefined ? { minValue: props.minValue } : {})}\n {...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {})}\n {...(props.isDateUnavailable !== undefined\n ? { isDateUnavailable: props.isDateUnavailable }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n ) : (\n <View\n style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}\n >\n {months.map((m) => (\n <DayGrid<M>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode={(props.mode ?? 'single') as M}\n value={state.value as CalendarValue<M>}\n focusedDate={state.focusedDate}\n isUnavailable={state.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => state.selectDate(date, 'click')}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n ))}\n {state.view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n setAnchor(new CalendarDate(anchor.year, month, 1));\n state.setView('day');\n }}\n />\n </View>\n )}\n {state.view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n setAnchor(new CalendarDate(year, anchor.month, 1));\n state.setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\nconst RangeCalendar = (props: CalendarBaseProps<'range'> & { locale: string; containerWidth: number }) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = props.behavior === 'scroll' ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n useEffect(() => {\n if (\n process.env.NODE_ENV !== 'production' &&\n props.behavior === 'scroll' &&\n typeof props.visibleMonths === 'number' &&\n props.visibleMonths > 1\n ) {\n // biome-ignore lint/suspicious/noConsole: dev-mode developer warning\n console.warn('[Calendar] visibleMonths is ignored when behavior=\"scroll\"; falling back to single column.');\n }\n }, [props.behavior, props.visibleMonths]);\n\n const containerRef = useRef<HTMLElement | null>(null);\n\n const range = useRangeState({\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n ...(props.minNights !== undefined ? { minNights: props.minNights } : {}),\n ...(props.maxNights !== undefined ? { maxNights: props.maxNights } : {}),\n });\n\n const initialFocus = range.value?.start ?? today(getLocalTimeZone());\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(initialFocus);\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: range.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [focusedDate, range.value]);\n const [anchor, setAnchor] = useState<CalendarDate>(initialFocus);\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view: CalendarView = isViewControlled ? (props.view as CalendarView) : internalView;\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate,\n moveFocus: (delta) => {\n setFocusedDate((f) => {\n let next = f;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: (date) => range.selectDate(date, 'keyboard'),\n setView,\n view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else if (props.behavior === 'scroll') {\n setFocusedDate((f) => f.add({ months: -1 }));\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else if (props.behavior === 'scroll') {\n setFocusedDate((f) => f.add({ months: 1 }));\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const [drilldownSlot, setDrilldownSlot] = useState(0);\n const onTitlePress = (clicked: CalendarDate) => {\n const slot = months.findIndex((m) => m.year === clicked.year && m.month === clicked.month);\n setDrilldownSlot(slot >= 0 ? slot : 0);\n if (clicked.compare(anchor) !== 0) {\n setAnchor(clicked);\n }\n setView(view === 'day' ? 'month' : view === 'month' ? 'year' : 'day');\n };\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`range-${view}`}>\n {view === 'day' &&\n (props.behavior === 'scroll' ? (\n <ScrollBody<'range'>\n mode=\"range\"\n locale={locale}\n focusedDate={focusedDate}\n onFocusedMonthChange={(next) => setAnchor(next)}\n value={range.value as DateRange | null}\n previewRange={range.previewRange}\n onSelectDate={(date) => range.selectDate(date)}\n firstDayOfWeek={firstDayOfWeek}\n weekendDays={weekendDays}\n {...(props.minValue !== undefined ? { minValue: props.minValue } : {})}\n {...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {})}\n {...(props.isDateUnavailable !== undefined\n ? { isDateUnavailable: props.isDateUnavailable }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n ) : (\n <View\n style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}\n >\n {months.map((m) => (\n <DayGrid<'range'>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode=\"range\"\n value={range.value as DateRange | null}\n previewRange={range.previewRange}\n focusedDate={focusedDate}\n isUnavailable={range.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => range.selectDate(date)}\n onDayHover={(date) => range.setHoveredDate(date)}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n ))}\n {view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n const picked = new CalendarDate(anchor.year, month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('day');\n }}\n />\n </View>\n )}\n {view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n const picked = new CalendarDate(year, anchor.month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\n/**\n * Slot wrapper for Calendar's `caption=\"custom\"` mode. Use it to mark the\n * subtree that renders your own month/year pickers (or any other header\n * UI). Inside, call {@link useCalendarCaption} to read the current\n * month/year and trigger changes.\n *\n * `<Calendar.Caption>` is a transparent passthrough — Calendar renders\n * any direct children when `caption=\"custom\"`. The wrapper exists to\n * make the intent explicit at call sites and to give static analysis\n * something to introspect.\n *\n * @example\n * ```tsx\n * <Calendar caption=\"custom\">\n * <Calendar.Caption>\n * <MyMonthSelect />\n * <MyYearSelect />\n * </Calendar.Caption>\n * </Calendar>\n * ```\n */\nexport const CalendarCaption = ({ children }: CalendarCaptionProps): ReactNode => <>{children}</>;\n// react-docgen-typescript keys the generated props table by displayName,\n// and dotted names like 'Calendar.Caption' would force odd index lookups\n// downstream. Keep the registered name flat; consumers still access it\n// at call sites as `Calendar.Caption`.\nCalendarCaption.displayName = 'CalendarCaption';\n\nexport type CalendarCaptionProps = {\n /** Custom caption content — typically your own month / year selects. */\n children?: ReactNode;\n};\n\ntype CalendarComponent = typeof CalendarRoot & { Caption: typeof CalendarCaption };\n\nexport const Calendar = CalendarRoot as CalendarComponent;\nCalendar.Caption = CalendarCaption;\n"]}
|