@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,306 @@
|
|
|
1
|
+
import { px } from './chunk-5A2QOOVN.js';
|
|
2
|
+
import { cn } from './chunk-CHXHRJNZ.js';
|
|
3
|
+
import { useThemeColors } from './chunk-R5JMDDCB.js';
|
|
4
|
+
import { __name } from './chunk-WCQVDF3K.js';
|
|
5
|
+
import { createContext, useId, useState, useRef, useCallback, useMemo, useEffect, useContext } from 'react';
|
|
6
|
+
import { View, Pressable, Text } from 'react-native';
|
|
7
|
+
import { jsx } from 'nativewind/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var TabsContext = createContext(null);
|
|
10
|
+
var useTabsContext = /* @__PURE__ */ __name((label) => {
|
|
11
|
+
const ctx = useContext(TabsContext);
|
|
12
|
+
if (!ctx) {
|
|
13
|
+
throw new Error(`<${label}> must be rendered inside a <Tabs>.`);
|
|
14
|
+
}
|
|
15
|
+
return ctx;
|
|
16
|
+
}, "useTabsContext");
|
|
17
|
+
var TabsRoot = /* @__PURE__ */ __name(({
|
|
18
|
+
value,
|
|
19
|
+
defaultValue,
|
|
20
|
+
onChange,
|
|
21
|
+
orientation = "horizontal",
|
|
22
|
+
activation = "automatic",
|
|
23
|
+
children,
|
|
24
|
+
className,
|
|
25
|
+
testID
|
|
26
|
+
}) => {
|
|
27
|
+
const baseId = useId();
|
|
28
|
+
const [inner, setInner] = useState(defaultValue);
|
|
29
|
+
const isControlled = value !== void 0;
|
|
30
|
+
const current = isControlled ? value : inner;
|
|
31
|
+
const refs = useRef(/* @__PURE__ */ new Map());
|
|
32
|
+
const orderRef = useRef([]);
|
|
33
|
+
const setValue = useCallback(
|
|
34
|
+
(next) => {
|
|
35
|
+
if (!isControlled) {
|
|
36
|
+
setInner(next);
|
|
37
|
+
}
|
|
38
|
+
onChange?.(next);
|
|
39
|
+
},
|
|
40
|
+
[isControlled, onChange]
|
|
41
|
+
);
|
|
42
|
+
const register = useCallback((v, ref) => {
|
|
43
|
+
refs.current.set(v, ref);
|
|
44
|
+
if (!orderRef.current.includes(v)) {
|
|
45
|
+
orderRef.current.push(v);
|
|
46
|
+
}
|
|
47
|
+
}, []);
|
|
48
|
+
const unregister = useCallback((v) => {
|
|
49
|
+
refs.current.delete(v);
|
|
50
|
+
orderRef.current = orderRef.current.filter((x) => x !== v);
|
|
51
|
+
}, []);
|
|
52
|
+
const focusValue = useCallback(
|
|
53
|
+
(next) => {
|
|
54
|
+
const ref = refs.current.get(next);
|
|
55
|
+
ref?.current?.focus?.();
|
|
56
|
+
if (activation === "automatic") {
|
|
57
|
+
setValue(next);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
[activation, setValue]
|
|
61
|
+
);
|
|
62
|
+
const moveFocus = useCallback(
|
|
63
|
+
(offset, fromValue) => {
|
|
64
|
+
const order = orderRef.current;
|
|
65
|
+
if (order.length === 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const idx = order.indexOf(fromValue);
|
|
69
|
+
const start = idx === -1 ? 0 : idx;
|
|
70
|
+
const len = order.length;
|
|
71
|
+
const next = order[(start + offset + len) % len];
|
|
72
|
+
if (next) {
|
|
73
|
+
focusValue(next);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
[focusValue]
|
|
77
|
+
);
|
|
78
|
+
const focusEdge = useCallback(
|
|
79
|
+
(edge) => {
|
|
80
|
+
const order = orderRef.current;
|
|
81
|
+
if (order.length === 0) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const target = edge === "first" ? order[0] : order[order.length - 1];
|
|
85
|
+
if (target) {
|
|
86
|
+
focusValue(target);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
[focusValue]
|
|
90
|
+
);
|
|
91
|
+
const ctxValue = useMemo(
|
|
92
|
+
() => ({
|
|
93
|
+
value: current,
|
|
94
|
+
setValue,
|
|
95
|
+
baseId,
|
|
96
|
+
orientation,
|
|
97
|
+
activation,
|
|
98
|
+
register,
|
|
99
|
+
unregister,
|
|
100
|
+
moveFocus,
|
|
101
|
+
focusEdge
|
|
102
|
+
}),
|
|
103
|
+
[current, setValue, baseId, orientation, activation, register, unregister, moveFocus, focusEdge]
|
|
104
|
+
);
|
|
105
|
+
return /* @__PURE__ */ jsx(TabsContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsx(
|
|
106
|
+
TabsViewport,
|
|
107
|
+
{
|
|
108
|
+
orientation,
|
|
109
|
+
...className !== void 0 ? { className } : {},
|
|
110
|
+
...testID !== void 0 ? { testID } : {},
|
|
111
|
+
children
|
|
112
|
+
}
|
|
113
|
+
) });
|
|
114
|
+
}, "TabsRoot");
|
|
115
|
+
var TabsViewport = /* @__PURE__ */ __name(({
|
|
116
|
+
orientation,
|
|
117
|
+
className,
|
|
118
|
+
testID,
|
|
119
|
+
children
|
|
120
|
+
}) => {
|
|
121
|
+
const colors = useThemeColors();
|
|
122
|
+
return /* @__PURE__ */ jsx(
|
|
123
|
+
View,
|
|
124
|
+
{
|
|
125
|
+
...testID !== void 0 ? { testID } : {},
|
|
126
|
+
className: cn(orientation === "vertical" ? "flex-row gap-4" : "flex-col gap-3", className),
|
|
127
|
+
style: orientation === "vertical" ? { flexDirection: "row", gap: px(colors.spacing["4"]) } : { flexDirection: "column", gap: px(colors.spacing["3"]) },
|
|
128
|
+
children
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
}, "TabsViewport");
|
|
132
|
+
var LIST_LAYOUT_BASE = {
|
|
133
|
+
flexDirection: "row",
|
|
134
|
+
alignItems: "center",
|
|
135
|
+
borderBottomWidth: 1
|
|
136
|
+
};
|
|
137
|
+
var LIST_VERTICAL_LAYOUT_BASE = {
|
|
138
|
+
flexDirection: "column",
|
|
139
|
+
alignItems: "stretch",
|
|
140
|
+
borderRightWidth: 1
|
|
141
|
+
};
|
|
142
|
+
var TabsList = /* @__PURE__ */ __name(({ children, className, testID }) => {
|
|
143
|
+
const ctx = useTabsContext("TabsList");
|
|
144
|
+
const colors = useThemeColors();
|
|
145
|
+
const gap = px(colors.spacing["1"]);
|
|
146
|
+
const listStyle = ctx.orientation === "vertical" ? { ...LIST_VERTICAL_LAYOUT_BASE, gap, borderRightColor: colors.semantic.border.default } : { ...LIST_LAYOUT_BASE, gap, borderBottomColor: colors.semantic.border.default };
|
|
147
|
+
return /* @__PURE__ */ jsx(
|
|
148
|
+
View,
|
|
149
|
+
{
|
|
150
|
+
...testID !== void 0 ? { testID } : {},
|
|
151
|
+
role: "tablist",
|
|
152
|
+
accessibilityRole: "tablist",
|
|
153
|
+
"aria-orientation": ctx.orientation,
|
|
154
|
+
className: cn(
|
|
155
|
+
ctx.orientation === "vertical" ? "flex-col gap-1 border-r border-semantic-border-default" : "flex-row items-center gap-1 border-b border-semantic-border-default",
|
|
156
|
+
className
|
|
157
|
+
),
|
|
158
|
+
style: listStyle,
|
|
159
|
+
children
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
}, "TabsList");
|
|
163
|
+
var TRIGGER_TRANSITION = {
|
|
164
|
+
transitionProperty: "border-color, color",
|
|
165
|
+
transitionDuration: "200ms",
|
|
166
|
+
transitionTimingFunction: "ease"
|
|
167
|
+
};
|
|
168
|
+
var TRIGGER_LAYOUT_BASE = {
|
|
169
|
+
borderBottomWidth: 2,
|
|
170
|
+
borderBottomColor: "transparent",
|
|
171
|
+
marginBottom: -1,
|
|
172
|
+
...TRIGGER_TRANSITION
|
|
173
|
+
};
|
|
174
|
+
var TRIGGER_LAYOUT_BASE_VERTICAL = {
|
|
175
|
+
borderRightWidth: 2,
|
|
176
|
+
borderRightColor: "transparent",
|
|
177
|
+
marginRight: -1,
|
|
178
|
+
...TRIGGER_TRANSITION
|
|
179
|
+
};
|
|
180
|
+
var TabsTrigger = /* @__PURE__ */ __name(({ value, disabled, children, className, testID }) => {
|
|
181
|
+
const ctx = useTabsContext("TabsTrigger");
|
|
182
|
+
const colors = useThemeColors();
|
|
183
|
+
const ownRef = useRef(null);
|
|
184
|
+
const selected = ctx.value === value;
|
|
185
|
+
const isVertical = ctx.orientation === "vertical";
|
|
186
|
+
useEffect(() => {
|
|
187
|
+
ctx.register(value, ownRef);
|
|
188
|
+
return () => ctx.unregister(value);
|
|
189
|
+
}, [ctx, value]);
|
|
190
|
+
const onPress = useCallback(() => {
|
|
191
|
+
if (disabled) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
ctx.setValue(value);
|
|
195
|
+
}, [ctx, value, disabled]);
|
|
196
|
+
const handleKeyDown = useCallback(
|
|
197
|
+
(event) => {
|
|
198
|
+
const nextKey = isVertical ? "ArrowDown" : "ArrowRight";
|
|
199
|
+
const prevKey = isVertical ? "ArrowUp" : "ArrowLeft";
|
|
200
|
+
switch (event.key) {
|
|
201
|
+
case nextKey:
|
|
202
|
+
event.preventDefault();
|
|
203
|
+
ctx.moveFocus(1, value);
|
|
204
|
+
return;
|
|
205
|
+
case prevKey:
|
|
206
|
+
event.preventDefault();
|
|
207
|
+
ctx.moveFocus(-1, value);
|
|
208
|
+
return;
|
|
209
|
+
case "Home":
|
|
210
|
+
event.preventDefault();
|
|
211
|
+
ctx.focusEdge("first");
|
|
212
|
+
return;
|
|
213
|
+
case "End":
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
ctx.focusEdge("last");
|
|
216
|
+
return;
|
|
217
|
+
case "Enter":
|
|
218
|
+
case " ": {
|
|
219
|
+
if (ctx.activation === "manual") {
|
|
220
|
+
event.preventDefault();
|
|
221
|
+
if (!disabled) {
|
|
222
|
+
ctx.setValue(value);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
[ctx, value, disabled, isVertical]
|
|
230
|
+
);
|
|
231
|
+
const accentStyle = selected ? isVertical ? { borderRightColor: colors.semantic.interactive.primary } : { borderBottomColor: colors.semantic.interactive.primary } : null;
|
|
232
|
+
const triggerProps = {
|
|
233
|
+
ref: /* @__PURE__ */ __name((node) => {
|
|
234
|
+
ownRef.current = node;
|
|
235
|
+
}, "ref"),
|
|
236
|
+
role: "tab",
|
|
237
|
+
accessibilityRole: "tab",
|
|
238
|
+
"aria-selected": selected,
|
|
239
|
+
"aria-controls": `${ctx.baseId}-panel-${value}`,
|
|
240
|
+
id: `${ctx.baseId}-tab-${value}`,
|
|
241
|
+
tabIndex: selected ? 0 : -1,
|
|
242
|
+
onPress,
|
|
243
|
+
onKeyDown: handleKeyDown,
|
|
244
|
+
...disabled ? { "aria-disabled": true, disabled: true } : {},
|
|
245
|
+
...testID !== void 0 ? { testID } : {}
|
|
246
|
+
};
|
|
247
|
+
const triggerPadding = {
|
|
248
|
+
paddingHorizontal: px(colors.spacing["3"]),
|
|
249
|
+
paddingVertical: px(colors.spacing["2"])
|
|
250
|
+
};
|
|
251
|
+
const triggerStyle = isVertical ? { ...TRIGGER_LAYOUT_BASE_VERTICAL, ...triggerPadding } : { ...TRIGGER_LAYOUT_BASE, ...triggerPadding };
|
|
252
|
+
return /* @__PURE__ */ jsx(
|
|
253
|
+
Pressable,
|
|
254
|
+
{
|
|
255
|
+
...triggerProps,
|
|
256
|
+
className: cn(
|
|
257
|
+
isVertical ? "px-3 py-2 -mr-px border-r-2 border-r-transparent" : "px-3 py-2 -mb-px border-b-2 border-b-transparent",
|
|
258
|
+
selected ? "border-r-semantic-interactive-primary" : "",
|
|
259
|
+
disabled ? "opacity-50" : "opacity-100",
|
|
260
|
+
className
|
|
261
|
+
),
|
|
262
|
+
style: [triggerStyle, accentStyle, disabled ? { opacity: 0.5 } : null],
|
|
263
|
+
children: typeof children === "string" ? /* @__PURE__ */ jsx(
|
|
264
|
+
Text,
|
|
265
|
+
{
|
|
266
|
+
style: {
|
|
267
|
+
color: selected ? colors.semantic.interactive.primary : colors.semantic.text.muted,
|
|
268
|
+
fontFamily: colors.fontFamily.body,
|
|
269
|
+
fontSize: px(colors.fontSize.sm),
|
|
270
|
+
fontWeight: selected ? colors.fontWeight.semibold : colors.fontWeight.medium
|
|
271
|
+
},
|
|
272
|
+
children
|
|
273
|
+
}
|
|
274
|
+
) : children
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
}, "TabsTrigger");
|
|
278
|
+
var TabsContent = /* @__PURE__ */ __name(({ value, children, className, testID }) => {
|
|
279
|
+
const ctx = useTabsContext("TabsContent");
|
|
280
|
+
const active = ctx.value === value;
|
|
281
|
+
if (!active) {
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
return /* @__PURE__ */ jsx(
|
|
285
|
+
View,
|
|
286
|
+
{
|
|
287
|
+
...testID !== void 0 ? { testID } : {},
|
|
288
|
+
role: "tabpanel",
|
|
289
|
+
accessibilityRole: "none",
|
|
290
|
+
id: `${ctx.baseId}-panel-${value}`,
|
|
291
|
+
"aria-labelledby": `${ctx.baseId}-tab-${value}`,
|
|
292
|
+
tabIndex: 0,
|
|
293
|
+
className: cn("outline-none", className),
|
|
294
|
+
children
|
|
295
|
+
}
|
|
296
|
+
);
|
|
297
|
+
}, "TabsContent");
|
|
298
|
+
var Tabs = Object.assign(TabsRoot, {
|
|
299
|
+
List: TabsList,
|
|
300
|
+
Trigger: TabsTrigger,
|
|
301
|
+
Content: TabsContent
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
export { Tabs };
|
|
305
|
+
//# sourceMappingURL=chunk-XALU6LOT.js.map
|
|
306
|
+
//# sourceMappingURL=chunk-XALU6LOT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-XALU6LOT.js","sourcesContent":["'use client';\n\nimport {\n createContext,\n type KeyboardEvent,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type TabsOrientation = 'horizontal' | 'vertical';\nexport type TabsActivation = 'automatic' | 'manual';\n\ntype TabsContextValue = {\n value: string | undefined;\n setValue: (next: string) => void;\n baseId: string;\n orientation: TabsOrientation;\n activation: TabsActivation;\n register: (value: string, ref: RefObject<HTMLElement | null>) => void;\n unregister: (value: string) => void;\n moveFocus: (offset: 1 | -1, fromValue: string) => void;\n focusEdge: (edge: 'first' | 'last') => void;\n};\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = (label: string): TabsContextValue => {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(`<${label}> must be rendered inside a <Tabs>.`);\n }\n return ctx;\n};\n\nexport type TabsProps = {\n /** Controlled active tab value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the new value when the active tab changes. */\n onChange?: (next: string) => void;\n /**\n * Layout direction of the tablist. Drives the keyboard-nav axis.\n * @defaultValue 'horizontal'\n */\n orientation?: TabsOrientation;\n /**\n * Whether arrow keys also activate the focused tab.\n * - `automatic` (default) — selection follows focus, matching most UIs.\n * - `manual` — arrow keys move focus only; the user presses Enter or\n * Space to activate. Use when activating a tab is expensive.\n * @defaultValue 'automatic'\n */\n activation?: TabsActivation;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Tab pattern with keyboard nav, roving tabindex, and content/trigger\n * association via shared `value`s. Compose:\n *\n * <Tabs defaultValue=\"overview\">\n * <TabsList>\n * <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n * <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n * </TabsList>\n * <TabsContent value=\"overview\">…</TabsContent>\n * <TabsContent value=\"settings\">…</TabsContent>\n * </Tabs>\n *\n * Follows the WAI-ARIA tablist pattern: `tablist` / `tab` / `tabpanel` roles,\n * arrow-key navigation that wraps, Home/End for first/last, and roving\n * tabindex so tabbing into the group lands on the active tab.\n */\nconst TabsRoot = ({\n value,\n defaultValue,\n onChange,\n orientation = 'horizontal',\n activation = 'automatic',\n children,\n className,\n testID,\n}: TabsProps) => {\n const baseId = useId();\n const [inner, setInner] = useState<string | undefined>(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : inner;\n\n const refs = useRef<Map<string, RefObject<HTMLElement | null>>>(new Map());\n const orderRef = useRef<string[]>([]);\n\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const register = useCallback((v: string, ref: RefObject<HTMLElement | null>) => {\n refs.current.set(v, ref);\n if (!orderRef.current.includes(v)) {\n orderRef.current.push(v);\n }\n }, []);\n\n const unregister = useCallback((v: string) => {\n refs.current.delete(v);\n orderRef.current = orderRef.current.filter((x) => x !== v);\n }, []);\n\n const focusValue = useCallback(\n (next: string) => {\n const ref = refs.current.get(next);\n ref?.current?.focus?.();\n if (activation === 'automatic') {\n setValue(next);\n }\n },\n [activation, setValue]\n );\n\n const moveFocus = useCallback(\n (offset: 1 | -1, fromValue: string) => {\n const order = orderRef.current;\n if (order.length === 0) {\n return;\n }\n const idx = order.indexOf(fromValue);\n const start = idx === -1 ? 0 : idx;\n const len = order.length;\n const next = order[(start + offset + len) % len];\n if (next) {\n focusValue(next);\n }\n },\n [focusValue]\n );\n\n const focusEdge = useCallback(\n (edge: 'first' | 'last') => {\n const order = orderRef.current;\n if (order.length === 0) {\n return;\n }\n const target = edge === 'first' ? order[0] : order[order.length - 1];\n if (target) {\n focusValue(target);\n }\n },\n [focusValue]\n );\n\n const ctxValue = useMemo<TabsContextValue>(\n () => ({\n value: current,\n setValue,\n baseId,\n orientation,\n activation,\n register,\n unregister,\n moveFocus,\n focusEdge,\n }),\n [current, setValue, baseId, orientation, activation, register, unregister, moveFocus, focusEdge]\n );\n\n return (\n <TabsContext.Provider value={ctxValue}>\n <TabsViewport\n orientation={orientation}\n {...(className !== undefined ? { className } : {})}\n {...(testID !== undefined ? { testID } : {})}\n >\n {children}\n </TabsViewport>\n </TabsContext.Provider>\n );\n};\n\n// Inner view so we can call useThemeColors() to source the orientation\n// gap from the spacing token scale.\nconst TabsViewport = ({\n orientation,\n className,\n testID,\n children,\n}: {\n orientation: TabsOrientation;\n className?: string;\n testID?: string;\n children?: ReactNode;\n}) => {\n const colors = useThemeColors();\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n className={cn(orientation === 'vertical' ? 'flex-row gap-4' : 'flex-col gap-3', className)}\n style={\n orientation === 'vertical'\n ? { flexDirection: 'row', gap: px(colors.spacing['4']) }\n : { flexDirection: 'column', gap: px(colors.spacing['3']) }\n }\n >\n {children}\n </View>\n );\n};\n\nexport type TabsListProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// Layout-only bases; theme-driven gap is merged inside TabsList.\nconst LIST_LAYOUT_BASE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n};\n\nconst LIST_VERTICAL_LAYOUT_BASE: ViewStyle = {\n flexDirection: 'column',\n alignItems: 'stretch',\n borderRightWidth: 1,\n};\n\n/** Container for `TabsTrigger`s. Renders the underline rule on the appropriate edge. */\nexport const TabsList = ({ children, className, testID }: TabsListProps) => {\n const ctx = useTabsContext('TabsList');\n const colors = useThemeColors();\n const gap = px(colors.spacing['1']);\n const listStyle: ViewStyle =\n ctx.orientation === 'vertical'\n ? { ...LIST_VERTICAL_LAYOUT_BASE, gap, borderRightColor: colors.semantic.border.default }\n : { ...LIST_LAYOUT_BASE, gap, borderBottomColor: colors.semantic.border.default };\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"tablist\"\n accessibilityRole=\"tablist\"\n aria-orientation={ctx.orientation}\n className={cn(\n ctx.orientation === 'vertical'\n ? 'flex-col gap-1 border-r border-semantic-border-default'\n : 'flex-row items-center gap-1 border-b border-semantic-border-default',\n className\n )}\n style={listStyle}\n >\n {children}\n </View>\n );\n};\n\nexport type TabsTriggerProps = {\n /** Value linking this trigger to a `<TabsContent>`. */\n value: string;\n /** Disable just this trigger. */\n disabled?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// Subtle 200ms ease on border + text color so the active tab indicator\n// fades in/out (and the trigger label colors smoothly between selected\n// and idle) instead of snapping. Web only — RN ignores the transition*\n// keys silently. We don't ship a true sliding magic-pill on either\n// platform yet; that would need react-native-reanimated and per-trigger\n// rect measurement, which is more complexity than this earns right now.\nconst TRIGGER_TRANSITION = {\n transitionProperty: 'border-color, color',\n transitionDuration: '200ms',\n transitionTimingFunction: 'ease',\n} as ViewStyle;\n\n// Layout / transition only; theme-driven padding is merged inside TabsTrigger.\nconst TRIGGER_LAYOUT_BASE: ViewStyle = {\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n marginBottom: -1,\n ...TRIGGER_TRANSITION,\n};\n\nconst TRIGGER_LAYOUT_BASE_VERTICAL: ViewStyle = {\n borderRightWidth: 2,\n borderRightColor: 'transparent',\n marginRight: -1,\n ...TRIGGER_TRANSITION,\n};\n\n/** Clickable tab. Activating it shows the matching `TabsContent`. */\nexport const TabsTrigger = ({ value, disabled, children, className, testID }: TabsTriggerProps) => {\n const ctx = useTabsContext('TabsTrigger');\n const colors = useThemeColors();\n const ownRef = useRef<HTMLElement | null>(null);\n const selected = ctx.value === value;\n const isVertical = ctx.orientation === 'vertical';\n\n useEffect(() => {\n ctx.register(value, ownRef);\n return () => ctx.unregister(value);\n }, [ctx, value]);\n\n const onPress = useCallback(() => {\n if (disabled) {\n return;\n }\n ctx.setValue(value);\n }, [ctx, value, disabled]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n const nextKey = isVertical ? 'ArrowDown' : 'ArrowRight';\n const prevKey = isVertical ? 'ArrowUp' : 'ArrowLeft';\n switch (event.key) {\n case nextKey:\n event.preventDefault();\n ctx.moveFocus(1, value);\n return;\n case prevKey:\n event.preventDefault();\n ctx.moveFocus(-1, value);\n return;\n case 'Home':\n event.preventDefault();\n ctx.focusEdge('first');\n return;\n case 'End':\n event.preventDefault();\n ctx.focusEdge('last');\n return;\n case 'Enter':\n case ' ': {\n if (ctx.activation === 'manual') {\n event.preventDefault();\n if (!disabled) {\n ctx.setValue(value);\n }\n }\n return;\n }\n }\n },\n [ctx, value, disabled, isVertical]\n );\n\n const accentStyle = selected\n ? isVertical\n ? { borderRightColor: colors.semantic.interactive.primary }\n : { borderBottomColor: colors.semantic.interactive.primary }\n : null;\n\n const triggerProps: Record<string, unknown> = {\n ref: (node: HTMLElement | null) => {\n ownRef.current = node;\n },\n role: 'tab',\n accessibilityRole: 'tab',\n 'aria-selected': selected,\n 'aria-controls': `${ctx.baseId}-panel-${value}`,\n id: `${ctx.baseId}-tab-${value}`,\n tabIndex: selected ? 0 : -1,\n onPress,\n onKeyDown: handleKeyDown,\n ...(disabled ? { 'aria-disabled': true, disabled: true } : {}),\n ...(testID !== undefined ? { testID } : {}),\n };\n\n const triggerPadding: ViewStyle = {\n paddingHorizontal: px(colors.spacing['3']),\n paddingVertical: px(colors.spacing['2']),\n };\n const triggerStyle: ViewStyle = isVertical\n ? { ...TRIGGER_LAYOUT_BASE_VERTICAL, ...triggerPadding }\n : { ...TRIGGER_LAYOUT_BASE, ...triggerPadding };\n\n return (\n <Pressable\n {...triggerProps}\n className={cn(\n isVertical\n ? 'px-3 py-2 -mr-px border-r-2 border-r-transparent'\n : 'px-3 py-2 -mb-px border-b-2 border-b-transparent',\n selected ? 'border-r-semantic-interactive-primary' : '',\n disabled ? 'opacity-50' : 'opacity-100',\n className\n )}\n style={[triggerStyle, accentStyle, disabled ? { opacity: 0.5 } : null]}\n >\n {typeof children === 'string' ? (\n <RNText\n style={{\n color: selected ? colors.semantic.interactive.primary : colors.semantic.text.muted,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: selected\n ? (colors.fontWeight.semibold as '600')\n : (colors.fontWeight.medium as '500'),\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </Pressable>\n );\n};\n\nexport type TabsContentProps = {\n /** Value of the trigger this panel pairs with. */\n value: string;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/** Panel content shown when its `value` matches the active tab. */\nexport const TabsContent = ({ value, children, className, testID }: TabsContentProps) => {\n const ctx = useTabsContext('TabsContent');\n const active = ctx.value === value;\n if (!active) {\n return null;\n }\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"tabpanel\"\n accessibilityRole=\"none\"\n id={`${ctx.baseId}-panel-${value}`}\n aria-labelledby={`${ctx.baseId}-tab-${value}`}\n tabIndex={0}\n className={cn('outline-none', className)}\n >\n {children}\n </View>\n );\n};\n\n/**\n * Public `Tabs` value — the root function plus its `.List`, `.Trigger`, and\n * `.Content` static members. `Object.assign` produces a value whose inferred\n * type carries the static properties, so `.d.ts` consumers can write\n * `<Tabs.List>` without a separate import.\n */\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n});\n"]}
|