@nori-ui/core 0.0.5 → 1.0.2
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/animation/animated-view.cjs +13 -0
- package/dist/animation/animated-view.cjs.map +1 -0
- package/dist/animation/animated-view.d.cts +6 -0
- package/dist/animation/animated-view.d.ts +6 -0
- package/dist/animation/animated-view.js +4 -0
- package/dist/animation/animated-view.js.map +1 -0
- package/dist/animation/animated-view.web.cjs +9 -0
- package/dist/animation/animated-view.web.cjs.map +1 -0
- package/dist/animation/animated-view.web.d.cts +5 -0
- package/dist/animation/animated-view.web.d.ts +5 -0
- package/dist/animation/animated-view.web.js +8 -0
- package/dist/animation/animated-view.web.js.map +1 -0
- package/dist/animation/use-animated-number.cjs +80 -0
- package/dist/animation/use-animated-number.cjs.map +1 -0
- package/dist/animation/use-animated-number.d.cts +8 -0
- package/dist/animation/use-animated-number.d.ts +8 -0
- package/dist/animation/use-animated-number.js +4 -0
- package/dist/animation/use-animated-number.js.map +1 -0
- package/dist/animation/use-animated-number.web.cjs +28 -0
- package/dist/animation/use-animated-number.web.cjs.map +1 -0
- package/dist/animation/use-animated-number.web.d.cts +8 -0
- package/dist/animation/use-animated-number.web.d.ts +8 -0
- package/dist/animation/use-animated-number.web.js +25 -0
- package/dist/animation/use-animated-number.web.js.map +1 -0
- package/dist/{chunk-RX7UULY3.js → chunk-33S7ADWM.js} +3 -3
- package/dist/{chunk-RX7UULY3.js.map → chunk-33S7ADWM.js.map} +1 -1
- package/dist/chunk-3BDDPFCI.js +108 -0
- package/dist/chunk-3BDDPFCI.js.map +1 -0
- package/dist/chunk-3F4TXKDY.js +314 -0
- package/dist/chunk-3F4TXKDY.js.map +1 -0
- package/dist/chunk-5A2QOOVN.js +15 -0
- package/dist/chunk-5A2QOOVN.js.map +1 -0
- package/dist/chunk-5XEGZFG5.js +208 -0
- package/dist/chunk-5XEGZFG5.js.map +1 -0
- package/dist/chunk-6AD6KCVB.js +178 -0
- package/dist/chunk-6AD6KCVB.js.map +1 -0
- package/dist/chunk-7GPDNQSX.js +967 -0
- package/dist/chunk-7GPDNQSX.js.map +1 -0
- package/dist/chunk-7UKRN73P.js +42 -0
- package/dist/chunk-7UKRN73P.js.map +1 -0
- package/dist/chunk-7Z4NMNX6.js +64 -0
- package/dist/chunk-7Z4NMNX6.js.map +1 -0
- package/dist/chunk-ACLHDHX3.js +29 -0
- package/dist/chunk-ACLHDHX3.js.map +1 -0
- package/dist/chunk-BZLT6R62.js +80 -0
- package/dist/chunk-BZLT6R62.js.map +1 -0
- package/dist/chunk-CCUXO2HN.js +450 -0
- package/dist/chunk-CCUXO2HN.js.map +1 -0
- package/dist/chunk-CHXHRJNZ.js +43 -0
- package/dist/chunk-CHXHRJNZ.js.map +1 -0
- package/dist/chunk-DDGMLLS3.js +188 -0
- package/dist/chunk-DDGMLLS3.js.map +1 -0
- package/dist/chunk-EWWQQ5DB.js +654 -0
- package/dist/chunk-EWWQQ5DB.js.map +1 -0
- package/dist/chunk-FEPTH5RV.js +169 -0
- package/dist/chunk-FEPTH5RV.js.map +1 -0
- package/dist/{chunk-SSTXLK5I.js → chunk-FT2XBBQJ.js} +42 -6
- package/dist/chunk-FT2XBBQJ.js.map +1 -0
- package/dist/chunk-IKLA2CVQ.js +260 -0
- package/dist/chunk-IKLA2CVQ.js.map +1 -0
- package/dist/chunk-JQQ3FBN7.js +18 -0
- package/dist/chunk-JQQ3FBN7.js.map +1 -0
- package/dist/chunk-JSAG5YO7.js +69 -0
- package/dist/chunk-JSAG5YO7.js.map +1 -0
- package/dist/chunk-JZ774T7U.js +76 -0
- package/dist/chunk-JZ774T7U.js.map +1 -0
- package/dist/chunk-KWRDJPP3.js +10 -0
- package/dist/chunk-KWRDJPP3.js.map +1 -0
- package/dist/chunk-LVWNMQGR.js +1106 -0
- package/dist/chunk-LVWNMQGR.js.map +1 -0
- package/dist/chunk-LWLK6HSW.js +143 -0
- package/dist/chunk-LWLK6HSW.js.map +1 -0
- package/dist/chunk-MDOZGILD.js +134 -0
- package/dist/chunk-MDOZGILD.js.map +1 -0
- package/dist/chunk-MKSDYRWQ.js +446 -0
- package/dist/chunk-MKSDYRWQ.js.map +1 -0
- package/dist/chunk-MRJWPRCX.js +80 -0
- package/dist/chunk-MRJWPRCX.js.map +1 -0
- package/dist/chunk-NRYWNOG5.js +410 -0
- package/dist/chunk-NRYWNOG5.js.map +1 -0
- package/dist/chunk-OMU4R4Y5.js +144 -0
- package/dist/chunk-OMU4R4Y5.js.map +1 -0
- package/dist/chunk-PNP7L4TA.js +103 -0
- package/dist/chunk-PNP7L4TA.js.map +1 -0
- package/dist/chunk-QI6646JZ.js +3 -0
- package/dist/{chunk-UAKFCMWK.js.map → chunk-QI6646JZ.js.map} +1 -1
- package/dist/chunk-QJNV7YQP.js +138 -0
- package/dist/chunk-QJNV7YQP.js.map +1 -0
- package/dist/chunk-R5JMDDCB.js +292 -0
- package/dist/chunk-R5JMDDCB.js.map +1 -0
- package/dist/chunk-RB3YBWQ4.js +77 -0
- package/dist/chunk-RB3YBWQ4.js.map +1 -0
- package/dist/chunk-RFW5SRZA.js +23 -0
- package/dist/chunk-RFW5SRZA.js.map +1 -0
- package/dist/chunk-RGJ3NBKE.js +8 -0
- package/dist/chunk-RGJ3NBKE.js.map +1 -0
- package/dist/chunk-SFNDR6DI.js +485 -0
- package/dist/chunk-SFNDR6DI.js.map +1 -0
- package/dist/chunk-SWC5CNKE.js +13 -0
- package/dist/chunk-SWC5CNKE.js.map +1 -0
- package/dist/chunk-TLS54G6Y.js +15 -0
- package/dist/chunk-TLS54G6Y.js.map +1 -0
- package/dist/chunk-WCQVDF3K.js +12 -0
- package/dist/{chunk-7QVYU63E.js.map → chunk-WCQVDF3K.js.map} +1 -1
- package/dist/chunk-WGT345SV.js +427 -0
- package/dist/chunk-WGT345SV.js.map +1 -0
- package/dist/chunk-X7APG7G2.js +1566 -0
- package/dist/chunk-X7APG7G2.js.map +1 -0
- package/dist/chunk-XALU6LOT.js +306 -0
- package/dist/chunk-XALU6LOT.js.map +1 -0
- package/dist/chunk-YNKKEO2A.js +336 -0
- package/dist/chunk-YNKKEO2A.js.map +1 -0
- package/dist/chunk-ZBW3BA5R.js +148 -0
- package/dist/chunk-ZBW3BA5R.js.map +1 -0
- package/dist/{chunk-FXKIWONG.js → chunk-ZIBNLXIV.js} +12 -6
- package/dist/chunk-ZIBNLXIV.js.map +1 -0
- package/dist/chunk-ZMSIYLSI.js +563 -0
- package/dist/chunk-ZMSIYLSI.js.map +1 -0
- package/dist/chunk-ZQMNGPLE.js +981 -0
- package/dist/chunk-ZQMNGPLE.js.map +1 -0
- package/dist/chunk-ZRD4FQBT.js +153 -0
- package/dist/chunk-ZRD4FQBT.js.map +1 -0
- package/dist/client.cjs +11289 -439
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +68 -117
- package/dist/client.d.ts +68 -117
- package/dist/client.js +58 -40
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.cjs +900 -0
- package/dist/components/Accordion/index.cjs.map +1 -0
- package/dist/components/Accordion/index.d.cts +72 -0
- package/dist/components/Accordion/index.d.ts +72 -0
- package/dist/components/Accordion/index.js +10 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/Alert/index.cjs +567 -0
- package/dist/components/Alert/index.cjs.map +1 -0
- package/dist/components/Alert/index.d.cts +41 -0
- package/dist/components/Alert/index.d.ts +41 -0
- package/dist/components/Alert/index.js +8 -0
- package/dist/components/Alert/index.js.map +1 -0
- package/dist/components/AlertDialog/index.cjs +892 -0
- package/dist/components/AlertDialog/index.cjs.map +1 -0
- package/dist/components/AlertDialog/index.d.cts +68 -0
- package/dist/components/AlertDialog/index.d.ts +68 -0
- package/dist/components/AlertDialog/index.js +9 -0
- package/dist/components/AlertDialog/index.js.map +1 -0
- package/dist/components/Avatar/index.cjs +427 -0
- package/dist/components/Avatar/index.cjs.map +1 -0
- package/dist/components/Avatar/index.d.cts +40 -0
- package/dist/components/Avatar/index.d.ts +40 -0
- package/dist/components/Avatar/index.js +7 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Badge/index.cjs +433 -0
- package/dist/components/Badge/index.cjs.map +1 -0
- package/dist/components/Badge/index.d.cts +35 -0
- package/dist/components/Badge/index.d.ts +35 -0
- package/dist/components/Badge/index.js +7 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Box/index.cjs +415 -0
- package/dist/components/Box/index.cjs.map +1 -0
- package/dist/components/Box/index.d.cts +24 -0
- package/dist/components/Box/index.d.ts +24 -0
- package/dist/components/Box/index.js +9 -0
- package/dist/components/Box/index.js.map +1 -0
- package/dist/components/Breadcrumb/index.cjs +1939 -0
- package/dist/components/Breadcrumb/index.cjs.map +1 -0
- package/dist/components/Breadcrumb/index.d.cts +186 -0
- package/dist/components/Breadcrumb/index.d.ts +186 -0
- package/dist/components/Breadcrumb/index.js +11 -0
- package/dist/components/Breadcrumb/index.js.map +1 -0
- package/dist/components/Button/index.cjs +631 -0
- package/dist/components/Button/index.cjs.map +1 -0
- package/dist/components/Button/index.d.cts +27 -0
- package/dist/components/Button/index.d.ts +27 -0
- package/dist/components/Button/index.js +9 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Calendar/index.cjs +3017 -0
- package/dist/components/Calendar/index.cjs.map +1 -0
- package/dist/components/Calendar/index.d.cts +169 -0
- package/dist/components/Calendar/index.d.ts +169 -0
- package/dist/components/Calendar/index.js +11 -0
- package/dist/components/Calendar/index.js.map +1 -0
- package/dist/components/Card/index.cjs +469 -0
- package/dist/components/Card/index.cjs.map +1 -0
- package/dist/components/Card/index.d.cts +33 -0
- package/dist/components/Card/index.d.ts +33 -0
- package/dist/components/Card/index.js +7 -0
- package/dist/components/Card/index.js.map +1 -0
- package/dist/components/Checkbox/index.cjs +590 -0
- package/dist/components/Checkbox/index.cjs.map +1 -0
- package/dist/components/Checkbox/index.d.cts +22 -0
- package/dist/components/Checkbox/index.d.ts +22 -0
- package/dist/components/Checkbox/index.js +9 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/Dialog/index.cjs +888 -0
- package/dist/components/Dialog/index.cjs.map +1 -0
- package/dist/components/Dialog/index.d.cts +56 -0
- package/dist/components/Dialog/index.d.ts +56 -0
- package/dist/components/Dialog/index.js +10 -0
- package/dist/components/Dialog/index.js.map +1 -0
- package/dist/components/FloatButton/index.cjs +1254 -0
- package/dist/components/FloatButton/index.cjs.map +1 -0
- package/dist/components/FloatButton/index.d.cts +133 -0
- package/dist/components/FloatButton/index.d.ts +133 -0
- package/dist/components/FloatButton/index.js +11 -0
- package/dist/components/FloatButton/index.js.map +1 -0
- package/dist/components/HStack/index.cjs +480 -0
- package/dist/components/HStack/index.cjs.map +1 -0
- package/dist/components/HStack/index.d.cts +24 -0
- package/dist/components/HStack/index.d.ts +24 -0
- package/dist/components/HStack/index.js +9 -0
- package/dist/components/HStack/index.js.map +1 -0
- package/dist/components/InputGroup/index.cjs +638 -0
- package/dist/components/InputGroup/index.cjs.map +1 -0
- package/dist/components/InputGroup/index.d.cts +33 -0
- package/dist/components/InputGroup/index.d.ts +33 -0
- package/dist/components/InputGroup/index.js +7 -0
- package/dist/components/InputGroup/index.js.map +1 -0
- package/dist/components/Pagination/index.cjs +2501 -0
- package/dist/components/Pagination/index.cjs.map +1 -0
- package/dist/components/Pagination/index.d.cts +164 -0
- package/dist/components/Pagination/index.d.ts +164 -0
- package/dist/components/Pagination/index.js +12 -0
- package/dist/components/Pagination/index.js.map +1 -0
- package/dist/components/Popover/index.cjs +739 -0
- package/dist/components/Popover/index.cjs.map +1 -0
- package/dist/components/Popover/index.d.cts +44 -0
- package/dist/components/Popover/index.d.ts +44 -0
- package/dist/components/Popover/index.js +8 -0
- package/dist/components/Popover/index.js.map +1 -0
- package/dist/components/Progress/index.cjs +493 -0
- package/dist/components/Progress/index.cjs.map +1 -0
- package/dist/components/Progress/index.d.cts +63 -0
- package/dist/components/Progress/index.d.ts +63 -0
- package/dist/components/Progress/index.js +7 -0
- package/dist/components/Progress/index.js.map +1 -0
- package/dist/components/Radio/index.cjs +584 -0
- package/dist/components/Radio/index.cjs.map +1 -0
- package/dist/components/Radio/index.d.cts +51 -0
- package/dist/components/Radio/index.d.ts +51 -0
- package/dist/components/Radio/index.js +7 -0
- package/dist/components/Radio/index.js.map +1 -0
- package/dist/components/SegmentedControl/index.cjs +502 -0
- package/dist/components/SegmentedControl/index.cjs.map +1 -0
- package/dist/components/SegmentedControl/index.d.cts +45 -0
- package/dist/components/SegmentedControl/index.d.ts +45 -0
- package/dist/components/SegmentedControl/index.js +7 -0
- package/dist/components/SegmentedControl/index.js.map +1 -0
- package/dist/components/Select/index.cjs +1359 -0
- package/dist/components/Select/index.cjs.map +1 -0
- package/dist/components/Select/index.d.cts +140 -0
- package/dist/components/Select/index.d.ts +140 -0
- package/dist/components/Select/index.js +8 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Separator/index.cjs +358 -0
- package/dist/components/Separator/index.cjs.map +1 -0
- package/dist/components/Separator/index.d.cts +28 -0
- package/dist/components/Separator/index.d.ts +28 -0
- package/dist/components/Separator/index.js +6 -0
- package/dist/components/Separator/index.js.map +1 -0
- package/dist/components/Skeleton/index.cjs +384 -0
- package/dist/components/Skeleton/index.cjs.map +1 -0
- package/dist/components/Skeleton/index.d.cts +30 -0
- package/dist/components/Skeleton/index.d.ts +30 -0
- package/dist/components/Skeleton/index.js +6 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- package/dist/components/Slider/index.cjs +880 -0
- package/dist/components/Slider/index.cjs.map +1 -0
- package/dist/components/Slider/index.d.cts +84 -0
- package/dist/components/Slider/index.d.ts +84 -0
- package/dist/components/Slider/index.js +6 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/Spinner/index.cjs +32 -0
- package/dist/components/Spinner/index.cjs.map +1 -0
- package/dist/components/Spinner/index.d.cts +25 -0
- package/dist/components/Spinner/index.d.ts +25 -0
- package/dist/components/Spinner/index.js +4 -0
- package/dist/components/Spinner/index.js.map +1 -0
- package/dist/components/Switch/index.cjs +623 -0
- package/dist/components/Switch/index.cjs.map +1 -0
- package/dist/components/Switch/index.d.cts +22 -0
- package/dist/components/Switch/index.d.ts +22 -0
- package/dist/components/Switch/index.js +10 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tabs/index.cjs +630 -0
- package/dist/components/Tabs/index.cjs.map +1 -0
- package/dist/components/Tabs/index.d.cts +63 -0
- package/dist/components/Tabs/index.d.ts +63 -0
- package/dist/components/Tabs/index.js +7 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Text/index.cjs +401 -0
- package/dist/components/Text/index.cjs.map +1 -0
- package/dist/components/Text/index.d.cts +24 -0
- package/dist/components/Text/index.d.ts +24 -0
- package/dist/components/Text/index.js +7 -0
- package/dist/components/Text/index.js.map +1 -0
- package/dist/components/TextArea/index.cjs +482 -0
- package/dist/components/TextArea/index.cjs.map +1 -0
- package/dist/components/TextArea/index.d.cts +25 -0
- package/dist/components/TextArea/index.d.ts +25 -0
- package/dist/components/TextArea/index.js +8 -0
- package/dist/components/TextArea/index.js.map +1 -0
- package/dist/components/TextInput/index.cjs +477 -0
- package/dist/components/TextInput/index.cjs.map +1 -0
- package/dist/components/TextInput/index.d.cts +33 -0
- package/dist/components/TextInput/index.d.ts +33 -0
- package/dist/components/TextInput/index.js +7 -0
- package/dist/components/TextInput/index.js.map +1 -0
- package/dist/components/Toast/index.cjs +167 -0
- package/dist/components/Toast/index.cjs.map +1 -0
- package/dist/components/Toast/index.d.cts +143 -0
- package/dist/components/Toast/index.d.ts +143 -0
- package/dist/components/Toast/index.js +4 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toggle/index.cjs +770 -0
- package/dist/components/Toggle/index.cjs.map +1 -0
- package/dist/components/Toggle/index.d.cts +83 -0
- package/dist/components/Toggle/index.d.ts +83 -0
- package/dist/components/Toggle/index.js +7 -0
- package/dist/components/Toggle/index.js.map +1 -0
- package/dist/components/Tooltip/index.cjs +813 -0
- package/dist/components/Tooltip/index.cjs.map +1 -0
- package/dist/components/Tooltip/index.d.cts +55 -0
- package/dist/components/Tooltip/index.d.ts +55 -0
- package/dist/components/Tooltip/index.js +8 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/VStack/index.cjs +480 -0
- package/dist/components/VStack/index.cjs.map +1 -0
- package/dist/components/VStack/index.d.cts +19 -0
- package/dist/components/VStack/index.d.ts +19 -0
- package/dist/components/VStack/index.js +9 -0
- package/dist/components/VStack/index.js.map +1 -0
- package/dist/i18n/index.cjs +39 -3
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.d.cts +4 -60
- package/dist/i18n/index.d.ts +4 -60
- package/dist/i18n/index.js +3 -2
- package/dist/icons/index.cjs +326 -26
- package/dist/icons/index.cjs.map +1 -1
- package/dist/icons/index.js +4 -3
- package/dist/index-D3_M3G6U.d.ts +19 -0
- package/dist/index-uXPK_Rg8.d.cts +19 -0
- package/dist/index.cjs +11176 -463
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +39 -183
- package/dist/index.d.ts +39 -183
- package/dist/index.js +49 -9
- package/dist/resolve-D-GOaxZy.d.cts +60 -0
- package/dist/resolve-D-GOaxZy.d.ts +60 -0
- package/dist/slot/index.cjs +9 -3
- package/dist/slot/index.cjs.map +1 -1
- package/dist/slot/index.js +2 -2
- package/dist/stories/index.cjs +108 -0
- package/dist/stories/index.cjs.map +1 -0
- package/dist/stories/index.d.cts +46 -0
- package/dist/stories/index.d.ts +46 -0
- package/dist/stories/index.js +94 -0
- package/dist/stories/index.js.map +1 -0
- package/dist/theme/index.cjs +259 -26
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.d.cts +26 -0
- package/dist/theme/index.d.ts +26 -0
- package/dist/theme/index.js +4 -3
- package/dist/use-theme-CoqfnvRs.d.cts +112 -0
- package/dist/use-theme-CoqfnvRs.d.ts +112 -0
- package/dist/utils/cn.cjs +18 -6
- package/dist/utils/cn.cjs.map +1 -1
- package/dist/utils/cn.js +2 -2
- package/package.json +41 -10
- package/dist/chunk-6OABNXBY.js +0 -213
- package/dist/chunk-6OABNXBY.js.map +0 -1
- package/dist/chunk-7QVYU63E.js +0 -6
- package/dist/chunk-FXKIWONG.js.map +0 -1
- package/dist/chunk-NDEDMCHT.js +0 -40
- package/dist/chunk-NDEDMCHT.js.map +0 -1
- package/dist/chunk-SSTXLK5I.js.map +0 -1
- package/dist/chunk-UAKFCMWK.js +0 -3
- package/dist/chunk-X3AJNNF6.js +0 -539
- package/dist/chunk-X3AJNNF6.js.map +0 -1
- package/dist/chunk-XGM2K4TT.js +0 -31
- package/dist/chunk-XGM2K4TT.js.map +0 -1
- package/dist/stories/story-registry.cjs +0 -776
- package/dist/stories/story-registry.cjs.map +0 -1
- package/dist/stories/story-registry.d.cts +0 -13
- package/dist/stories/story-registry.d.ts +0 -13
- package/dist/stories/story-registry.js +0 -106
- package/dist/stories/story-registry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/locale.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-X7APG7G2.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';\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' })} 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' })} 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\nexport const CELL_SIZE = 40;\n\nexport const DayCell = ({ ctx, onPress, onHoverIn, onHoverOut, renderDay }: DayCellProps) => {\n const colors = useThemeColors();\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 accessibilityState={{ disabled: ctx.isUnavailable }}\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 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 { 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 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 = pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(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 {\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 {\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 <View style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}>\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 = pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(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 {\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 {\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 <View style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}>\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"]}
|