react-native-system-ui 0.0.2 → 0.0.3
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/README.md +22 -6
- package/dist/cjs/{index-bar → components/index-bar}/IndexBar.js +2 -1
- package/dist/cjs/components/index.js +511 -0
- package/dist/cjs/{nav-bar → components/nav-bar}/NavBar.js +2 -1
- package/dist/cjs/{notify → components/notify}/Notify.js +35 -43
- package/dist/cjs/{notify → components/notify}/imperative.js +1 -1
- package/dist/cjs/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +3 -4
- package/dist/cjs/{popup → components/popup}/Popup.js +9 -21
- package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
- package/dist/cjs/components/safe-area-view/index.js +12 -0
- package/dist/cjs/{tabbar → components/tabbar}/Tabbar.js +2 -1
- package/dist/cjs/{toast → components/toast}/Toast.js +5 -8
- package/dist/cjs/components/types.js +1 -0
- package/dist/cjs/design-system/ThemeContext.js +19 -0
- package/dist/cjs/design-system/ThemeProvider.js +37 -0
- package/dist/cjs/design-system/createComponentTokensHook.js +30 -0
- package/dist/cjs/design-system/index.js +59 -0
- package/dist/cjs/design-system/mergeTokensOverride.js +12 -0
- package/dist/cjs/design-system/presets.js +147 -0
- package/dist/cjs/design-system/tokens.js +144 -0
- package/dist/cjs/design-system/useTheme.js +16 -0
- package/dist/cjs/hooks/aria/index.js +49 -0
- package/dist/cjs/hooks/aria/useAriaListBox.js +58 -0
- package/dist/cjs/hooks/aria/useAriaOverlay.js +50 -0
- package/dist/cjs/hooks/aria/useAriaPress.js +107 -0
- package/dist/cjs/hooks/aria/useAriaToggle.js +41 -0
- package/dist/cjs/hooks/gesture/index.js +16 -0
- package/dist/cjs/hooks/gesture/useGestureScroll.js +131 -0
- package/dist/cjs/hooks/index.js +84 -0
- package/dist/cjs/hooks/useControllableValue.js +52 -0
- package/dist/cjs/hooks/useCountDown.js +107 -0
- package/dist/cjs/hooks/useHairline.js +62 -0
- package/dist/cjs/hooks/usePresenceAnimation.js +60 -0
- package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
- package/dist/cjs/index.js +33 -499
- package/dist/cjs/platform/animation.js +14 -0
- package/dist/cjs/platform/history.js +14 -0
- package/dist/cjs/platform/index.js +60 -0
- package/dist/cjs/platform/measure.js +55 -0
- package/dist/cjs/platform/runtime.js +19 -0
- package/dist/cjs/platform/scrollLock.js +24 -0
- package/dist/cjs/utils/array.js +12 -0
- package/dist/cjs/utils/color.js +52 -0
- package/dist/cjs/utils/createPlatformShadow.js +63 -0
- package/dist/cjs/utils/date.js +75 -0
- package/dist/cjs/utils/deepMerge.js +37 -0
- package/dist/cjs/utils/hairline.js +103 -0
- package/dist/cjs/utils/index.js +115 -0
- package/dist/cjs/utils/number.js +73 -0
- package/dist/cjs/utils/promise.js +9 -0
- package/dist/cjs/utils/string.js +39 -0
- package/dist/cjs/utils/validate.js +41 -0
- package/dist/es/{index-bar → components/index-bar}/IndexBar.js +2 -1
- package/dist/es/components/index.js +74 -0
- package/dist/es/{nav-bar → components/nav-bar}/NavBar.js +2 -1
- package/dist/es/{notify → components/notify}/Notify.js +37 -44
- package/dist/es/{notify → components/notify}/imperative.js +1 -1
- package/dist/es/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +3 -4
- package/dist/es/{popup → components/popup}/Popup.js +8 -20
- package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
- package/dist/es/components/safe-area-view/index.js +1 -0
- package/dist/es/{tabbar → components/tabbar}/Tabbar.js +2 -1
- package/dist/es/{toast → components/toast}/Toast.js +4 -7
- package/dist/es/components/types.js +1 -0
- package/dist/es/design-system/ThemeContext.js +6 -0
- package/dist/es/design-system/ThemeProvider.js +23 -0
- package/dist/es/design-system/createComponentTokensHook.js +17 -0
- package/dist/es/design-system/index.js +6 -0
- package/dist/es/design-system/mergeTokensOverride.js +5 -0
- package/dist/es/design-system/presets.js +140 -0
- package/dist/es/design-system/tokens.js +136 -0
- package/dist/es/design-system/useTheme.js +3 -0
- package/dist/es/hooks/aria/index.js +5 -0
- package/dist/es/hooks/aria/useAriaListBox.js +33 -0
- package/dist/es/hooks/aria/useAriaOverlay.js +25 -0
- package/dist/es/hooks/aria/useAriaPress.js +70 -0
- package/dist/es/hooks/aria/useAriaToggle.js +16 -0
- package/dist/es/hooks/gesture/index.js +2 -0
- package/dist/es/hooks/gesture/useGestureScroll.js +112 -0
- package/dist/es/hooks/index.js +7 -0
- package/dist/es/hooks/useControllableValue.js +40 -0
- package/dist/es/hooks/useCountDown.js +95 -0
- package/dist/es/hooks/useHairline.js +42 -0
- package/dist/es/hooks/usePresenceAnimation.js +41 -0
- package/dist/es/hooks/useSafeAreaPadding.js +23 -0
- package/dist/es/index.js +4 -73
- package/dist/es/platform/animation.js +2 -0
- package/dist/es/platform/history.js +7 -0
- package/dist/es/platform/index.js +6 -0
- package/dist/es/platform/measure.js +48 -0
- package/dist/es/platform/runtime.js +4 -0
- package/dist/es/platform/scrollLock.js +16 -0
- package/dist/es/utils/array.js +5 -0
- package/dist/es/utils/color.js +42 -0
- package/dist/es/utils/createPlatformShadow.js +50 -0
- package/dist/es/utils/date.js +63 -0
- package/dist/es/utils/deepMerge.js +31 -0
- package/dist/es/utils/hairline.js +84 -0
- package/dist/es/utils/index.js +12 -0
- package/dist/es/utils/number.js +56 -0
- package/dist/es/utils/promise.js +2 -0
- package/dist/es/utils/string.js +30 -0
- package/dist/es/utils/validate.js +15 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
- package/dist/types/components/safe-area-view/index.d.ts +2 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
- package/package.json +281 -265
- package/dist/cjs/safe-area/SafeAreaClipper.js +0 -114
- package/dist/cjs/safe-area/index.js +0 -63
- package/dist/es/safe-area/SafeAreaClipper.js +0 -86
- package/dist/es/safe-area/index.js +0 -25
- package/dist/types/components/safe-area/SafeAreaClipper.d.ts +0 -47
- package/dist/types/components/safe-area/index.d.ts +0 -9
- /package/dist/cjs/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
- /package/dist/cjs/{action-sheet → components/action-sheet}/index.js +0 -0
- /package/dist/cjs/{action-sheet → components/action-sheet}/tokens.js +0 -0
- /package/dist/cjs/{area → components/area}/Area.js +0 -0
- /package/dist/cjs/{area → components/area}/index.js +0 -0
- /package/dist/cjs/{area → components/area}/utils.js +0 -0
- /package/dist/cjs/{avatar → components/avatar}/Avatar.js +0 -0
- /package/dist/cjs/{avatar → components/avatar}/index.js +0 -0
- /package/dist/cjs/{avatar → components/avatar}/tokens.js +0 -0
- /package/dist/cjs/{badge → components/badge}/Badge.js +0 -0
- /package/dist/cjs/{badge → components/badge}/index.js +0 -0
- /package/dist/cjs/{badge → components/badge}/tokens.js +0 -0
- /package/dist/cjs/{button → components/button}/Button.js +0 -0
- /package/dist/cjs/{button → components/button}/ButtonContext.js +0 -0
- /package/dist/cjs/{button → components/button}/ButtonGroup.js +0 -0
- /package/dist/cjs/{button → components/button}/index.js +0 -0
- /package/dist/cjs/{button → components/button}/tokens.js +0 -0
- /package/dist/cjs/{calendar → components/calendar}/Calendar.js +0 -0
- /package/dist/cjs/{calendar → components/calendar}/index.js +0 -0
- /package/dist/cjs/{calendar → components/calendar}/tokens.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/Cascader.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/index.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/tokens.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/useCascaderExtend.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/utils.js +0 -0
- /package/dist/cjs/{cell → components/cell}/Cell.js +0 -0
- /package/dist/cjs/{cell → components/cell}/CellContext.js +0 -0
- /package/dist/cjs/{cell → components/cell}/CellGroup.js +0 -0
- /package/dist/cjs/{cell → components/cell}/index.js +0 -0
- /package/dist/cjs/{cell → components/cell}/tokens.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/Checkbox.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/CheckboxGroup.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/index.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/tokens.js +0 -0
- /package/dist/cjs/{circle → components/circle}/Circle.js +0 -0
- /package/dist/cjs/{circle → components/circle}/index.js +0 -0
- /package/dist/cjs/{circle → components/circle}/tokens.js +0 -0
- /package/dist/cjs/{collapse → components/collapse}/Collapse.js +0 -0
- /package/dist/cjs/{collapse → components/collapse}/index.js +0 -0
- /package/dist/cjs/{collapse → components/collapse}/tokens.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/ConfigProvider.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/LocaleContext.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/index.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/base.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/en-US.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/useLocale.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/CountDown.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/index.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/tokens.js +0 -0
- /package/dist/cjs/{datetime-picker → components/datetime-picker}/DatetimePicker.js +0 -0
- /package/dist/cjs/{datetime-picker → components/datetime-picker}/index.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/Dialog.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/imperative.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/index.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/tokens.js +0 -0
- /package/dist/cjs/{divider → components/divider}/Divider.js +0 -0
- /package/dist/cjs/{divider → components/divider}/index.js +0 -0
- /package/dist/cjs/{divider → components/divider}/tokens.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/tokens.js +0 -0
- /package/dist/cjs/{empty → components/empty}/Empty.js +0 -0
- /package/dist/cjs/{empty → components/empty}/index.js +0 -0
- /package/dist/cjs/{empty → components/empty}/tokens.js +0 -0
- /package/dist/cjs/{field → components/field}/Field.js +0 -0
- /package/dist/cjs/{field → components/field}/index.js +0 -0
- /package/dist/cjs/{field → components/field}/tokens.js +0 -0
- /package/dist/cjs/{field → components/field}/utils.js +0 -0
- /package/dist/cjs/{flex → components/flex}/Flex.js +0 -0
- /package/dist/cjs/{flex → components/flex}/FlexContext.js +0 -0
- /package/dist/cjs/{flex → components/flex}/FlexItem.js +0 -0
- /package/dist/cjs/{flex → components/flex}/index.js +0 -0
- /package/dist/cjs/{flex → components/flex}/tokens.js +0 -0
- /package/dist/cjs/{form → components/form}/Form.js +0 -0
- /package/dist/cjs/{form → components/form}/FormContext.js +0 -0
- /package/dist/cjs/{form → components/form}/FormItem.js +0 -0
- /package/dist/cjs/{form → components/form}/FormList.js +0 -0
- /package/dist/cjs/{form → components/form}/index.js +0 -0
- /package/dist/cjs/{form → components/form}/utils.js +0 -0
- /package/dist/cjs/{grid → components/grid}/Grid.js +0 -0
- /package/dist/cjs/{grid → components/grid}/GridContext.js +0 -0
- /package/dist/cjs/{grid → components/grid}/GridItem.js +0 -0
- /package/dist/cjs/{grid → components/grid}/index.js +0 -0
- /package/dist/cjs/{grid → components/grid}/tokens.js +0 -0
- /package/dist/cjs/{image → components/image}/Image.js +0 -0
- /package/dist/cjs/{image → components/image}/index.js +0 -0
- /package/dist/cjs/{image → components/image}/tokens.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/ImagePreview.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/imperative.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/index.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/tokens.js +0 -0
- /package/dist/cjs/{index-bar → components/index-bar}/IndexAnchor.js +0 -0
- /package/dist/cjs/{index-bar → components/index-bar}/index.js +0 -0
- /package/dist/cjs/{index-bar → components/index-bar}/tokens.js +0 -0
- /package/dist/cjs/{input → components/input}/Input.js +0 -0
- /package/dist/cjs/{input → components/input}/index.js +0 -0
- /package/dist/cjs/{input → components/input}/tokens.js +0 -0
- /package/dist/cjs/{list → components/list}/List.js +0 -0
- /package/dist/cjs/{list → components/list}/index.js +0 -0
- /package/dist/cjs/{list → components/list}/tokens.js +0 -0
- /package/dist/cjs/{loading → components/loading}/Loading.js +0 -0
- /package/dist/cjs/{loading → components/loading}/index.js +0 -0
- /package/dist/cjs/{loading → components/loading}/tokens.js +0 -0
- /package/dist/cjs/{nav-bar → components/nav-bar}/index.js +0 -0
- /package/dist/cjs/{nav-bar → components/nav-bar}/tokens.js +0 -0
- /package/dist/cjs/{notice-bar → components/notice-bar}/NoticeBar.js +0 -0
- /package/dist/cjs/{notice-bar → components/notice-bar}/index.js +0 -0
- /package/dist/cjs/{notice-bar → components/notice-bar}/tokens.js +0 -0
- /package/dist/cjs/{notify → components/notify}/defaults.js +0 -0
- /package/dist/cjs/{notify → components/notify}/index.js +0 -0
- /package/dist/cjs/{notify → components/notify}/tokens.js +0 -0
- /package/dist/cjs/{number-keyboard → components/number-keyboard}/index.js +0 -0
- /package/dist/cjs/{number-keyboard → components/number-keyboard}/tokens.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/Overlay.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/OverlayStackStore.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/index.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/tokens.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/useOverlayStack.js +0 -0
- /package/dist/cjs/{pagination → components/pagination}/Pagination.js +0 -0
- /package/dist/cjs/{pagination → components/pagination}/index.js +0 -0
- /package/dist/cjs/{pagination → components/pagination}/tokens.js +0 -0
- /package/dist/cjs/{password-input → components/password-input}/PasswordInput.js +0 -0
- /package/dist/cjs/{password-input → components/password-input}/index.js +0 -0
- /package/dist/cjs/{picker → components/picker}/Picker.js +0 -0
- /package/dist/cjs/{picker → components/picker}/WheelPicker.js +0 -0
- /package/dist/cjs/{picker → components/picker}/index.js +0 -0
- /package/dist/cjs/{picker → components/picker}/tokens.js +0 -0
- /package/dist/cjs/{picker → components/picker}/utils.js +0 -0
- /package/dist/cjs/{popup → components/popup}/index.js +0 -0
- /package/dist/cjs/{popup → components/popup}/tokens.js +0 -0
- /package/dist/cjs/{portal → components/portal}/Portal.js +0 -0
- /package/dist/cjs/{portal → components/portal}/PortalContext.js +0 -0
- /package/dist/cjs/{portal → components/portal}/PortalHost.js +0 -0
- /package/dist/cjs/{portal → components/portal}/index.js +0 -0
- /package/dist/cjs/{progress → components/progress}/Progress.js +0 -0
- /package/dist/cjs/{progress → components/progress}/index.js +0 -0
- /package/dist/cjs/{progress → components/progress}/tokens.js +0 -0
- /package/dist/cjs/{pull-refresh → components/pull-refresh}/PullRefresh.js +0 -0
- /package/dist/cjs/{pull-refresh → components/pull-refresh}/index.js +0 -0
- /package/dist/cjs/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
- /package/dist/cjs/{radio → components/radio}/Radio.js +0 -0
- /package/dist/cjs/{radio → components/radio}/RadioContext.js +0 -0
- /package/dist/cjs/{radio → components/radio}/RadioGroup.js +0 -0
- /package/dist/cjs/{radio → components/radio}/index.js +0 -0
- /package/dist/cjs/{radio → components/radio}/tokens.js +0 -0
- /package/dist/cjs/{rate → components/rate}/Rate.js +0 -0
- /package/dist/cjs/{rate → components/rate}/index.js +0 -0
- /package/dist/cjs/{rate → components/rate}/tokens.js +0 -0
- /package/dist/cjs/{search → components/search}/Search.js +0 -0
- /package/dist/cjs/{search → components/search}/index.js +0 -0
- /package/dist/cjs/{search → components/search}/tokens.js +0 -0
- /package/dist/cjs/{selector → components/selector}/Selector.js +0 -0
- /package/dist/cjs/{selector → components/selector}/index.js +0 -0
- /package/dist/cjs/{selector → components/selector}/tokens.js +0 -0
- /package/dist/cjs/{share-sheet → components/share-sheet}/ShareSheet.js +0 -0
- /package/dist/cjs/{share-sheet → components/share-sheet}/index.js +0 -0
- /package/dist/cjs/{share-sheet → components/share-sheet}/tokens.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/Sidebar.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/SidebarContext.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/SidebarItem.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/index.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/tokens.js +0 -0
- /package/dist/cjs/{skeleton → components/skeleton}/Skeleton.js +0 -0
- /package/dist/cjs/{skeleton → components/skeleton}/index.js +0 -0
- /package/dist/cjs/{skeleton → components/skeleton}/tokens.js +0 -0
- /package/dist/cjs/{slider → components/slider}/Slider.js +0 -0
- /package/dist/cjs/{slider → components/slider}/index.js +0 -0
- /package/dist/cjs/{slider → components/slider}/tokens.js +0 -0
- /package/dist/cjs/{slider → components/slider}/utils.js +0 -0
- /package/dist/cjs/{space → components/space}/Space.js +0 -0
- /package/dist/cjs/{space → components/space}/index.js +0 -0
- /package/dist/cjs/{space → components/space}/tokens.js +0 -0
- /package/dist/cjs/{stepper → components/stepper}/Stepper.js +0 -0
- /package/dist/cjs/{stepper → components/stepper}/index.js +0 -0
- /package/dist/cjs/{stepper → components/stepper}/tokens.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/Swiper.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/SwiperItem.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/index.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/useSwiperWeb.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/utils.js +0 -0
- /package/dist/cjs/{switch → components/switch}/Switch.js +0 -0
- /package/dist/cjs/{switch → components/switch}/index.js +0 -0
- /package/dist/cjs/{switch → components/switch}/tokens.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/TabbarContext.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/TabbarItem.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/index.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/tokens.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/TabPane.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/Tabs.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/index.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/tokens.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/useTabsAnimation.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/useTabsScroll.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/utils.js +0 -0
- /package/dist/cjs/{tag → components/tag}/Tag.js +0 -0
- /package/dist/cjs/{tag → components/tag}/index.js +0 -0
- /package/dist/cjs/{tag → components/tag}/tokens.js +0 -0
- /package/dist/cjs/{toast → components/toast}/imperative.js +0 -0
- /package/dist/cjs/{toast → components/toast}/index.js +0 -0
- /package/dist/cjs/{toast → components/toast}/tokens.js +0 -0
- /package/dist/cjs/{typography → components/typography}/Typography.js +0 -0
- /package/dist/cjs/{typography → components/typography}/index.js +0 -0
- /package/dist/cjs/{typography → components/typography}/tokens.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/Uploader.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/index.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/tokens.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/utils.js +0 -0
- /package/dist/cjs/{water-mark → components/water-mark}/WaterMark.js +0 -0
- /package/dist/cjs/{water-mark → components/water-mark}/index.js +0 -0
- /package/dist/cjs/{water-mark → components/water-mark}/tokens.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/index.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/tokens.js +0 -0
- /package/dist/es/{area → components/area}/Area.js +0 -0
- /package/dist/es/{area → components/area}/index.js +0 -0
- /package/dist/es/{area → components/area}/utils.js +0 -0
- /package/dist/es/{avatar → components/avatar}/Avatar.js +0 -0
- /package/dist/es/{avatar → components/avatar}/index.js +0 -0
- /package/dist/es/{avatar → components/avatar}/tokens.js +0 -0
- /package/dist/es/{badge → components/badge}/Badge.js +0 -0
- /package/dist/es/{badge → components/badge}/index.js +0 -0
- /package/dist/es/{badge → components/badge}/tokens.js +0 -0
- /package/dist/es/{button → components/button}/Button.js +0 -0
- /package/dist/es/{button → components/button}/ButtonContext.js +0 -0
- /package/dist/es/{button → components/button}/ButtonGroup.js +0 -0
- /package/dist/es/{button → components/button}/index.js +0 -0
- /package/dist/es/{button → components/button}/tokens.js +0 -0
- /package/dist/es/{calendar → components/calendar}/Calendar.js +0 -0
- /package/dist/es/{calendar → components/calendar}/index.js +0 -0
- /package/dist/es/{calendar → components/calendar}/tokens.js +0 -0
- /package/dist/es/{cascader → components/cascader}/Cascader.js +0 -0
- /package/dist/es/{cascader → components/cascader}/index.js +0 -0
- /package/dist/es/{cascader → components/cascader}/tokens.js +0 -0
- /package/dist/es/{cascader → components/cascader}/useCascaderExtend.js +0 -0
- /package/dist/es/{cascader → components/cascader}/utils.js +0 -0
- /package/dist/es/{cell → components/cell}/Cell.js +0 -0
- /package/dist/es/{cell → components/cell}/CellContext.js +0 -0
- /package/dist/es/{cell → components/cell}/CellGroup.js +0 -0
- /package/dist/es/{cell → components/cell}/index.js +0 -0
- /package/dist/es/{cell → components/cell}/tokens.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/Checkbox.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/CheckboxGroup.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/index.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/tokens.js +0 -0
- /package/dist/es/{circle → components/circle}/Circle.js +0 -0
- /package/dist/es/{circle → components/circle}/index.js +0 -0
- /package/dist/es/{circle → components/circle}/tokens.js +0 -0
- /package/dist/es/{collapse → components/collapse}/Collapse.js +0 -0
- /package/dist/es/{collapse → components/collapse}/index.js +0 -0
- /package/dist/es/{collapse → components/collapse}/tokens.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/ConfigProvider.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/LocaleContext.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/index.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/base.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/en-US.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/useLocale.js +0 -0
- /package/dist/es/{count-down → components/count-down}/CountDown.js +0 -0
- /package/dist/es/{count-down → components/count-down}/index.js +0 -0
- /package/dist/es/{count-down → components/count-down}/tokens.js +0 -0
- /package/dist/es/{datetime-picker → components/datetime-picker}/DatetimePicker.js +0 -0
- /package/dist/es/{datetime-picker → components/datetime-picker}/index.js +0 -0
- /package/dist/es/{dialog → components/dialog}/Dialog.js +0 -0
- /package/dist/es/{dialog → components/dialog}/imperative.js +0 -0
- /package/dist/es/{dialog → components/dialog}/index.js +0 -0
- /package/dist/es/{dialog → components/dialog}/tokens.js +0 -0
- /package/dist/es/{divider → components/divider}/Divider.js +0 -0
- /package/dist/es/{divider → components/divider}/index.js +0 -0
- /package/dist/es/{divider → components/divider}/tokens.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/tokens.js +0 -0
- /package/dist/es/{empty → components/empty}/Empty.js +0 -0
- /package/dist/es/{empty → components/empty}/index.js +0 -0
- /package/dist/es/{empty → components/empty}/tokens.js +0 -0
- /package/dist/es/{field → components/field}/Field.js +0 -0
- /package/dist/es/{field → components/field}/index.js +0 -0
- /package/dist/es/{field → components/field}/tokens.js +0 -0
- /package/dist/es/{field → components/field}/utils.js +0 -0
- /package/dist/es/{flex → components/flex}/Flex.js +0 -0
- /package/dist/es/{flex → components/flex}/FlexContext.js +0 -0
- /package/dist/es/{flex → components/flex}/FlexItem.js +0 -0
- /package/dist/es/{flex → components/flex}/index.js +0 -0
- /package/dist/es/{flex → components/flex}/tokens.js +0 -0
- /package/dist/es/{form → components/form}/Form.js +0 -0
- /package/dist/es/{form → components/form}/FormContext.js +0 -0
- /package/dist/es/{form → components/form}/FormItem.js +0 -0
- /package/dist/es/{form → components/form}/FormList.js +0 -0
- /package/dist/es/{form → components/form}/index.js +0 -0
- /package/dist/es/{form → components/form}/utils.js +0 -0
- /package/dist/es/{grid → components/grid}/Grid.js +0 -0
- /package/dist/es/{grid → components/grid}/GridContext.js +0 -0
- /package/dist/es/{grid → components/grid}/GridItem.js +0 -0
- /package/dist/es/{grid → components/grid}/index.js +0 -0
- /package/dist/es/{grid → components/grid}/tokens.js +0 -0
- /package/dist/es/{image → components/image}/Image.js +0 -0
- /package/dist/es/{image → components/image}/index.js +0 -0
- /package/dist/es/{image → components/image}/tokens.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/ImagePreview.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/imperative.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/index.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/tokens.js +0 -0
- /package/dist/es/{index-bar → components/index-bar}/IndexAnchor.js +0 -0
- /package/dist/es/{index-bar → components/index-bar}/index.js +0 -0
- /package/dist/es/{index-bar → components/index-bar}/tokens.js +0 -0
- /package/dist/es/{input → components/input}/Input.js +0 -0
- /package/dist/es/{input → components/input}/index.js +0 -0
- /package/dist/es/{input → components/input}/tokens.js +0 -0
- /package/dist/es/{list → components/list}/List.js +0 -0
- /package/dist/es/{list → components/list}/index.js +0 -0
- /package/dist/es/{list → components/list}/tokens.js +0 -0
- /package/dist/es/{loading → components/loading}/Loading.js +0 -0
- /package/dist/es/{loading → components/loading}/index.js +0 -0
- /package/dist/es/{loading → components/loading}/tokens.js +0 -0
- /package/dist/es/{nav-bar → components/nav-bar}/index.js +0 -0
- /package/dist/es/{nav-bar → components/nav-bar}/tokens.js +0 -0
- /package/dist/es/{notice-bar → components/notice-bar}/NoticeBar.js +0 -0
- /package/dist/es/{notice-bar → components/notice-bar}/index.js +0 -0
- /package/dist/es/{notice-bar → components/notice-bar}/tokens.js +0 -0
- /package/dist/es/{notify → components/notify}/defaults.js +0 -0
- /package/dist/es/{notify → components/notify}/index.js +0 -0
- /package/dist/es/{notify → components/notify}/tokens.js +0 -0
- /package/dist/es/{number-keyboard → components/number-keyboard}/index.js +0 -0
- /package/dist/es/{number-keyboard → components/number-keyboard}/tokens.js +0 -0
- /package/dist/es/{overlay → components/overlay}/Overlay.js +0 -0
- /package/dist/es/{overlay → components/overlay}/OverlayStackStore.js +0 -0
- /package/dist/es/{overlay → components/overlay}/index.js +0 -0
- /package/dist/es/{overlay → components/overlay}/tokens.js +0 -0
- /package/dist/es/{overlay → components/overlay}/useOverlayStack.js +0 -0
- /package/dist/es/{pagination → components/pagination}/Pagination.js +0 -0
- /package/dist/es/{pagination → components/pagination}/index.js +0 -0
- /package/dist/es/{pagination → components/pagination}/tokens.js +0 -0
- /package/dist/es/{password-input → components/password-input}/PasswordInput.js +0 -0
- /package/dist/es/{password-input → components/password-input}/index.js +0 -0
- /package/dist/es/{picker → components/picker}/Picker.js +0 -0
- /package/dist/es/{picker → components/picker}/WheelPicker.js +0 -0
- /package/dist/es/{picker → components/picker}/index.js +0 -0
- /package/dist/es/{picker → components/picker}/tokens.js +0 -0
- /package/dist/es/{picker → components/picker}/utils.js +0 -0
- /package/dist/es/{popup → components/popup}/index.js +0 -0
- /package/dist/es/{popup → components/popup}/tokens.js +0 -0
- /package/dist/es/{portal → components/portal}/Portal.js +0 -0
- /package/dist/es/{portal → components/portal}/PortalContext.js +0 -0
- /package/dist/es/{portal → components/portal}/PortalHost.js +0 -0
- /package/dist/es/{portal → components/portal}/index.js +0 -0
- /package/dist/es/{progress → components/progress}/Progress.js +0 -0
- /package/dist/es/{progress → components/progress}/index.js +0 -0
- /package/dist/es/{progress → components/progress}/tokens.js +0 -0
- /package/dist/es/{pull-refresh → components/pull-refresh}/PullRefresh.js +0 -0
- /package/dist/es/{pull-refresh → components/pull-refresh}/index.js +0 -0
- /package/dist/es/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
- /package/dist/es/{radio → components/radio}/Radio.js +0 -0
- /package/dist/es/{radio → components/radio}/RadioContext.js +0 -0
- /package/dist/es/{radio → components/radio}/RadioGroup.js +0 -0
- /package/dist/es/{radio → components/radio}/index.js +0 -0
- /package/dist/es/{radio → components/radio}/tokens.js +0 -0
- /package/dist/es/{rate → components/rate}/Rate.js +0 -0
- /package/dist/es/{rate → components/rate}/index.js +0 -0
- /package/dist/es/{rate → components/rate}/tokens.js +0 -0
- /package/dist/es/{search → components/search}/Search.js +0 -0
- /package/dist/es/{search → components/search}/index.js +0 -0
- /package/dist/es/{search → components/search}/tokens.js +0 -0
- /package/dist/es/{selector → components/selector}/Selector.js +0 -0
- /package/dist/es/{selector → components/selector}/index.js +0 -0
- /package/dist/es/{selector → components/selector}/tokens.js +0 -0
- /package/dist/es/{share-sheet → components/share-sheet}/ShareSheet.js +0 -0
- /package/dist/es/{share-sheet → components/share-sheet}/index.js +0 -0
- /package/dist/es/{share-sheet → components/share-sheet}/tokens.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/Sidebar.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/SidebarContext.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/SidebarItem.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/index.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/tokens.js +0 -0
- /package/dist/es/{skeleton → components/skeleton}/Skeleton.js +0 -0
- /package/dist/es/{skeleton → components/skeleton}/index.js +0 -0
- /package/dist/es/{skeleton → components/skeleton}/tokens.js +0 -0
- /package/dist/es/{slider → components/slider}/Slider.js +0 -0
- /package/dist/es/{slider → components/slider}/index.js +0 -0
- /package/dist/es/{slider → components/slider}/tokens.js +0 -0
- /package/dist/es/{slider → components/slider}/utils.js +0 -0
- /package/dist/es/{space → components/space}/Space.js +0 -0
- /package/dist/es/{space → components/space}/index.js +0 -0
- /package/dist/es/{space → components/space}/tokens.js +0 -0
- /package/dist/es/{stepper → components/stepper}/Stepper.js +0 -0
- /package/dist/es/{stepper → components/stepper}/index.js +0 -0
- /package/dist/es/{stepper → components/stepper}/tokens.js +0 -0
- /package/dist/es/{swiper → components/swiper}/Swiper.js +0 -0
- /package/dist/es/{swiper → components/swiper}/SwiperItem.js +0 -0
- /package/dist/es/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
- /package/dist/es/{swiper → components/swiper}/index.js +0 -0
- /package/dist/es/{swiper → components/swiper}/useSwiperWeb.js +0 -0
- /package/dist/es/{swiper → components/swiper}/utils.js +0 -0
- /package/dist/es/{switch → components/switch}/Switch.js +0 -0
- /package/dist/es/{switch → components/switch}/index.js +0 -0
- /package/dist/es/{switch → components/switch}/tokens.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/TabbarContext.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/TabbarItem.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/index.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/tokens.js +0 -0
- /package/dist/es/{tabs → components/tabs}/TabPane.js +0 -0
- /package/dist/es/{tabs → components/tabs}/Tabs.js +0 -0
- /package/dist/es/{tabs → components/tabs}/index.js +0 -0
- /package/dist/es/{tabs → components/tabs}/tokens.js +0 -0
- /package/dist/es/{tabs → components/tabs}/useTabsAnimation.js +0 -0
- /package/dist/es/{tabs → components/tabs}/useTabsScroll.js +0 -0
- /package/dist/es/{tabs → components/tabs}/utils.js +0 -0
- /package/dist/es/{tag → components/tag}/Tag.js +0 -0
- /package/dist/es/{tag → components/tag}/index.js +0 -0
- /package/dist/es/{tag → components/tag}/tokens.js +0 -0
- /package/dist/es/{toast → components/toast}/imperative.js +0 -0
- /package/dist/es/{toast → components/toast}/index.js +0 -0
- /package/dist/es/{toast → components/toast}/tokens.js +0 -0
- /package/dist/es/{typography → components/typography}/Typography.js +0 -0
- /package/dist/es/{typography → components/typography}/index.js +0 -0
- /package/dist/es/{typography → components/typography}/tokens.js +0 -0
- /package/dist/es/{uploader → components/uploader}/Uploader.js +0 -0
- /package/dist/es/{uploader → components/uploader}/index.js +0 -0
- /package/dist/es/{uploader → components/uploader}/tokens.js +0 -0
- /package/dist/es/{uploader → components/uploader}/utils.js +0 -0
- /package/dist/es/{water-mark → components/water-mark}/WaterMark.js +0 -0
- /package/dist/es/{water-mark → components/water-mark}/index.js +0 -0
- /package/dist/es/{water-mark → components/water-mark}/tokens.js +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { deepMerge } from '../utils/deepMerge';
|
|
2
|
+
export const defaultFoundations = {
|
|
3
|
+
palette: {
|
|
4
|
+
default: {
|
|
5
|
+
50: '#f7f8fa',
|
|
6
|
+
100: '#f1f2f5',
|
|
7
|
+
200: '#ebedf0',
|
|
8
|
+
300: '#c8ccd6',
|
|
9
|
+
400: '#a8aebb',
|
|
10
|
+
500: '#888f9f',
|
|
11
|
+
600: '#6d7483',
|
|
12
|
+
700: '#505560',
|
|
13
|
+
800: '#353840',
|
|
14
|
+
900: '#191a1f',
|
|
15
|
+
foreground: '#222222'
|
|
16
|
+
},
|
|
17
|
+
primary: {
|
|
18
|
+
50: '#f5f8ff',
|
|
19
|
+
100: '#e1e9ff',
|
|
20
|
+
200: '#c2d4ff',
|
|
21
|
+
300: '#9bb8ff',
|
|
22
|
+
400: '#6d94ff',
|
|
23
|
+
500: '#4770ff',
|
|
24
|
+
600: '#2f51e0',
|
|
25
|
+
700: '#243eb1',
|
|
26
|
+
800: '#1a2d82',
|
|
27
|
+
900: '#111d55',
|
|
28
|
+
foreground: '#ffffff'
|
|
29
|
+
},
|
|
30
|
+
info: {
|
|
31
|
+
50: '#f0f8ff',
|
|
32
|
+
100: '#d9ecff',
|
|
33
|
+
200: '#b9dcff',
|
|
34
|
+
300: '#8bc3ff',
|
|
35
|
+
400: '#5aa7ff',
|
|
36
|
+
500: '#328dff',
|
|
37
|
+
600: '#1d6fde',
|
|
38
|
+
700: '#1753a9',
|
|
39
|
+
800: '#113a75',
|
|
40
|
+
900: '#0a2143',
|
|
41
|
+
foreground: '#ffffff'
|
|
42
|
+
},
|
|
43
|
+
success: {
|
|
44
|
+
50: '#f2fbf6',
|
|
45
|
+
100: '#dcf5e7',
|
|
46
|
+
200: '#b8e9cf',
|
|
47
|
+
300: '#8ddbb1',
|
|
48
|
+
400: '#5fcf93',
|
|
49
|
+
500: '#31c174',
|
|
50
|
+
600: '#1da45e',
|
|
51
|
+
700: '#128047',
|
|
52
|
+
800: '#0a5c32',
|
|
53
|
+
900: '#043719',
|
|
54
|
+
foreground: '#ffffff'
|
|
55
|
+
},
|
|
56
|
+
warning: {
|
|
57
|
+
50: '#fff8ec',
|
|
58
|
+
100: '#ffecc7',
|
|
59
|
+
200: '#ffd595',
|
|
60
|
+
300: '#ffbc63',
|
|
61
|
+
400: '#ffa035',
|
|
62
|
+
500: '#ff8414',
|
|
63
|
+
600: '#d9650b',
|
|
64
|
+
700: '#ad4905',
|
|
65
|
+
800: '#7f3101',
|
|
66
|
+
900: '#4d1c00',
|
|
67
|
+
foreground: '#ffffff'
|
|
68
|
+
},
|
|
69
|
+
danger: {
|
|
70
|
+
50: '#fff1f2',
|
|
71
|
+
100: '#ffd8dd',
|
|
72
|
+
200: '#ffadb7',
|
|
73
|
+
300: '#ff8090',
|
|
74
|
+
400: '#ff556c',
|
|
75
|
+
500: '#f2324c',
|
|
76
|
+
600: '#ce1733',
|
|
77
|
+
700: '#a30f27',
|
|
78
|
+
800: '#770819',
|
|
79
|
+
900: '#47040b',
|
|
80
|
+
foreground: '#ffffff'
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
spacing: {
|
|
84
|
+
none: 0,
|
|
85
|
+
xxs: 2,
|
|
86
|
+
xs: 4,
|
|
87
|
+
ssm: 6,
|
|
88
|
+
sm: 8,
|
|
89
|
+
md: 12,
|
|
90
|
+
lg: 16,
|
|
91
|
+
xl: 20,
|
|
92
|
+
xxl: 28
|
|
93
|
+
},
|
|
94
|
+
radii: {
|
|
95
|
+
none: 0,
|
|
96
|
+
xs: 4,
|
|
97
|
+
sm: 6,
|
|
98
|
+
md: 8,
|
|
99
|
+
lg: 12,
|
|
100
|
+
pill: 999,
|
|
101
|
+
full: 9999
|
|
102
|
+
},
|
|
103
|
+
fontSize: {
|
|
104
|
+
xxs: 10,
|
|
105
|
+
xs: 12,
|
|
106
|
+
sm: 14,
|
|
107
|
+
md: 16,
|
|
108
|
+
lg: 18,
|
|
109
|
+
xl: 20
|
|
110
|
+
},
|
|
111
|
+
typography: {
|
|
112
|
+
fontFamily: 'System',
|
|
113
|
+
weight: {
|
|
114
|
+
regular: '400',
|
|
115
|
+
medium: '500',
|
|
116
|
+
semiBold: '600',
|
|
117
|
+
bold: '700'
|
|
118
|
+
},
|
|
119
|
+
lineHeightMultiplier: 1.2
|
|
120
|
+
},
|
|
121
|
+
opacity: {
|
|
122
|
+
disabled: 0.45,
|
|
123
|
+
loading: 0.65,
|
|
124
|
+
pressed: 0.85
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
export const buildFoundations = overrides => {
|
|
128
|
+
if (!overrides) {
|
|
129
|
+
return defaultFoundations;
|
|
130
|
+
}
|
|
131
|
+
return deepMerge(defaultFoundations, overrides);
|
|
132
|
+
};
|
|
133
|
+
export const createTokens = overrides => {
|
|
134
|
+
return buildFoundations(overrides);
|
|
135
|
+
};
|
|
136
|
+
export const defaultTokens = defaultFoundations;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useListBox } from '@react-native-aria/listbox';
|
|
3
|
+
import { useListState } from '@react-stately/list';
|
|
4
|
+
export const useAriaListBox = props => {
|
|
5
|
+
const ref = useRef(null);
|
|
6
|
+
const {
|
|
7
|
+
label,
|
|
8
|
+
...rest
|
|
9
|
+
} = props;
|
|
10
|
+
const resolvedProps = useMemo(() => {
|
|
11
|
+
if (label == null) return rest;
|
|
12
|
+
const ariaLabel = typeof label === 'string' ? label : undefined;
|
|
13
|
+
return {
|
|
14
|
+
...rest,
|
|
15
|
+
...(ariaLabel ? {
|
|
16
|
+
'aria-label': ariaLabel
|
|
17
|
+
} : null)
|
|
18
|
+
};
|
|
19
|
+
}, [label, rest]);
|
|
20
|
+
const state = useListState(resolvedProps);
|
|
21
|
+
const {
|
|
22
|
+
listBoxProps,
|
|
23
|
+
labelProps
|
|
24
|
+
} = useListBox(resolvedProps, state, ref);
|
|
25
|
+
const resolvedListBoxProps = useMemo(() => listBoxProps, [listBoxProps]);
|
|
26
|
+
const resolvedLabelProps = useMemo(() => labelProps, [labelProps]);
|
|
27
|
+
return {
|
|
28
|
+
state,
|
|
29
|
+
listBoxProps: resolvedListBoxProps,
|
|
30
|
+
labelProps: resolvedLabelProps,
|
|
31
|
+
ref
|
|
32
|
+
};
|
|
33
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useOverlay } from '@react-native-aria/overlays';
|
|
3
|
+
import { mergeProps } from '@react-native-aria/utils';
|
|
4
|
+
export const useAriaOverlay = ({
|
|
5
|
+
isOpen,
|
|
6
|
+
onClose,
|
|
7
|
+
isDismissable = true,
|
|
8
|
+
shouldCloseOnInteractOutside,
|
|
9
|
+
overlayProps: overlayPropOverrides
|
|
10
|
+
}) => {
|
|
11
|
+
const overlayRef = useRef(null);
|
|
12
|
+
const {
|
|
13
|
+
overlayProps
|
|
14
|
+
} = useOverlay({
|
|
15
|
+
isOpen,
|
|
16
|
+
onClose,
|
|
17
|
+
isDismissable,
|
|
18
|
+
shouldCloseOnInteractOutside
|
|
19
|
+
}, overlayRef);
|
|
20
|
+
const resolvedOverlayProps = useMemo(() => mergeProps(overlayProps ?? {}, overlayPropOverrides ?? {}), [overlayPropOverrides, overlayProps]);
|
|
21
|
+
return {
|
|
22
|
+
overlayRef,
|
|
23
|
+
overlayProps: resolvedOverlayProps
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { useFocus, useFocusRing } from '@react-native-aria/focus';
|
|
4
|
+
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
5
|
+
import { mergeProps } from '@react-native-aria/utils';
|
|
6
|
+
const mergePropsCompat = (...args) => {
|
|
7
|
+
if (typeof mergeProps === 'function') {
|
|
8
|
+
return mergeProps(...args);
|
|
9
|
+
}
|
|
10
|
+
return Object.assign({}, ...args);
|
|
11
|
+
};
|
|
12
|
+
export const useAriaPress = ({
|
|
13
|
+
disabled = false,
|
|
14
|
+
allowHover = Platform.OS === 'web',
|
|
15
|
+
allowFocus = Platform.OS === 'web',
|
|
16
|
+
extraProps,
|
|
17
|
+
...pressEvents
|
|
18
|
+
} = {}) => {
|
|
19
|
+
const {
|
|
20
|
+
pressProps,
|
|
21
|
+
isPressed
|
|
22
|
+
} = usePress({
|
|
23
|
+
...pressEvents,
|
|
24
|
+
isDisabled: disabled
|
|
25
|
+
});
|
|
26
|
+
const {
|
|
27
|
+
isHovered,
|
|
28
|
+
hoverProps
|
|
29
|
+
} = useHover({
|
|
30
|
+
isDisabled: disabled || !allowHover
|
|
31
|
+
});
|
|
32
|
+
const useFocusCompat = useFocus;
|
|
33
|
+
const {
|
|
34
|
+
isFocused,
|
|
35
|
+
focusProps
|
|
36
|
+
} = useFocusCompat({
|
|
37
|
+
isDisabled: disabled
|
|
38
|
+
});
|
|
39
|
+
const useFocusRingCompat = useFocusRing;
|
|
40
|
+
const {
|
|
41
|
+
focusProps: focusRingProps,
|
|
42
|
+
isFocusVisible
|
|
43
|
+
} = useFocusRingCompat({
|
|
44
|
+
isDisabled: disabled
|
|
45
|
+
});
|
|
46
|
+
const interactionProps = useMemo(() => {
|
|
47
|
+
let merged = pressProps;
|
|
48
|
+
if (allowHover) {
|
|
49
|
+
merged = mergePropsCompat(merged, hoverProps);
|
|
50
|
+
}
|
|
51
|
+
if (allowFocus && !disabled) {
|
|
52
|
+
merged = mergePropsCompat(merged, focusProps, focusRingProps);
|
|
53
|
+
}
|
|
54
|
+
if (extraProps) {
|
|
55
|
+
merged = mergePropsCompat(merged, extraProps);
|
|
56
|
+
}
|
|
57
|
+
return merged;
|
|
58
|
+
}, [allowFocus, allowHover, disabled, extraProps, focusProps, focusRingProps, hoverProps, pressProps]);
|
|
59
|
+
const states = useMemo(() => ({
|
|
60
|
+
hovered: !!isHovered,
|
|
61
|
+
pressed: !!isPressed,
|
|
62
|
+
focused: !!isFocused,
|
|
63
|
+
focusVisible: !!isFocusVisible,
|
|
64
|
+
disabled: !!disabled
|
|
65
|
+
}), [disabled, isFocusVisible, isFocused, isHovered, isPressed]);
|
|
66
|
+
return {
|
|
67
|
+
interactionProps,
|
|
68
|
+
states
|
|
69
|
+
};
|
|
70
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useToggle } from '@react-native-aria/toggle';
|
|
3
|
+
import { useToggleState } from '@react-stately/toggle';
|
|
4
|
+
export const useAriaToggle = props => {
|
|
5
|
+
const inputRef = props.inputRef ?? useRef(null);
|
|
6
|
+
const state = useToggleState(props);
|
|
7
|
+
const {
|
|
8
|
+
inputProps
|
|
9
|
+
} = useToggle(props, state, inputRef);
|
|
10
|
+
const resolvedInputProps = useMemo(() => inputProps, [inputProps]);
|
|
11
|
+
return {
|
|
12
|
+
state,
|
|
13
|
+
inputProps: resolvedInputProps,
|
|
14
|
+
inputRef
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { Animated } from 'react-native';
|
|
3
|
+
const DEFAULT_THROTTLE = 16;
|
|
4
|
+
const VELOCITY_NORMALIZER = 1000; // convert delta/ms to px per second
|
|
5
|
+
|
|
6
|
+
export const useGestureScroll = (options = {}) => {
|
|
7
|
+
const {
|
|
8
|
+
axis = 'y',
|
|
9
|
+
scrollEventThrottle = DEFAULT_THROTTLE,
|
|
10
|
+
onScroll,
|
|
11
|
+
onScrollBeginDrag,
|
|
12
|
+
onScrollEndDrag,
|
|
13
|
+
onMomentumScrollBegin,
|
|
14
|
+
onMomentumScrollEnd
|
|
15
|
+
} = options;
|
|
16
|
+
const scrollValue = useRef(new Animated.Value(0)).current;
|
|
17
|
+
const lastOffsetRef = useRef(0);
|
|
18
|
+
const lastTimestampRef = useRef(null);
|
|
19
|
+
const velocityRef = useRef(0);
|
|
20
|
+
const directionRef = useRef(null);
|
|
21
|
+
const [direction, setDirection] = useState(null);
|
|
22
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
23
|
+
const [isMomentum, setIsMomentum] = useState(false);
|
|
24
|
+
const updateDirection = useCallback(next => {
|
|
25
|
+
if (directionRef.current !== next) {
|
|
26
|
+
directionRef.current = next;
|
|
27
|
+
setDirection(next);
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
const handleScroll = useCallback(event => {
|
|
31
|
+
onScroll?.(event);
|
|
32
|
+
const contentOffset = event.nativeEvent.contentOffset;
|
|
33
|
+
const current = axis === 'x' ? contentOffset.x ?? 0 : contentOffset.y ?? 0;
|
|
34
|
+
const delta = current - lastOffsetRef.current;
|
|
35
|
+
const timestamp = event.timeStamp ?? Date.now();
|
|
36
|
+
if (delta > 0) {
|
|
37
|
+
updateDirection('forward');
|
|
38
|
+
} else if (delta < 0) {
|
|
39
|
+
updateDirection('backward');
|
|
40
|
+
}
|
|
41
|
+
if (lastTimestampRef.current != null) {
|
|
42
|
+
const elapsed = Math.max(timestamp - lastTimestampRef.current, 1);
|
|
43
|
+
velocityRef.current = delta / elapsed * VELOCITY_NORMALIZER;
|
|
44
|
+
}
|
|
45
|
+
lastTimestampRef.current = timestamp;
|
|
46
|
+
lastOffsetRef.current = current;
|
|
47
|
+
}, [axis, onScroll, updateDirection]);
|
|
48
|
+
const animatedScrollHandler = useMemo(() => {
|
|
49
|
+
const mapping = axis === 'x' ? [{
|
|
50
|
+
nativeEvent: {
|
|
51
|
+
contentOffset: {
|
|
52
|
+
x: scrollValue
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}] : [{
|
|
56
|
+
nativeEvent: {
|
|
57
|
+
contentOffset: {
|
|
58
|
+
y: scrollValue
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}];
|
|
62
|
+
return Animated.event(mapping, {
|
|
63
|
+
useNativeDriver: false,
|
|
64
|
+
listener: handleScroll
|
|
65
|
+
});
|
|
66
|
+
}, [axis, handleScroll, scrollValue]);
|
|
67
|
+
const handleScrollBeginDrag = useCallback(event => {
|
|
68
|
+
setIsDragging(true);
|
|
69
|
+
onScrollBeginDrag?.(event);
|
|
70
|
+
}, [onScrollBeginDrag]);
|
|
71
|
+
const handleScrollEndDrag = useCallback(event => {
|
|
72
|
+
setIsDragging(false);
|
|
73
|
+
onScrollEndDrag?.(event);
|
|
74
|
+
}, [onScrollEndDrag]);
|
|
75
|
+
const handleMomentumBegin = useCallback(event => {
|
|
76
|
+
setIsMomentum(true);
|
|
77
|
+
onMomentumScrollBegin?.(event);
|
|
78
|
+
}, [onMomentumScrollBegin]);
|
|
79
|
+
const handleMomentumEnd = useCallback(event => {
|
|
80
|
+
setIsMomentum(false);
|
|
81
|
+
onMomentumScrollEnd?.(event);
|
|
82
|
+
}, [onMomentumScrollEnd]);
|
|
83
|
+
const resetOffset = useCallback((value = 0) => {
|
|
84
|
+
scrollValue.stopAnimation();
|
|
85
|
+
scrollValue.setValue(value);
|
|
86
|
+
lastOffsetRef.current = value;
|
|
87
|
+
lastTimestampRef.current = null;
|
|
88
|
+
velocityRef.current = 0;
|
|
89
|
+
updateDirection(null);
|
|
90
|
+
}, [scrollValue, updateDirection]);
|
|
91
|
+
const getVelocity = useCallback(() => velocityRef.current, []);
|
|
92
|
+
const getCurrentOffset = useCallback(() => lastOffsetRef.current, []);
|
|
93
|
+
const scrollProps = useMemo(() => ({
|
|
94
|
+
onScroll: animatedScrollHandler,
|
|
95
|
+
scrollEventThrottle,
|
|
96
|
+
onScrollBeginDrag: handleScrollBeginDrag,
|
|
97
|
+
onScrollEndDrag: handleScrollEndDrag,
|
|
98
|
+
onMomentumScrollBegin: handleMomentumBegin,
|
|
99
|
+
onMomentumScrollEnd: handleMomentumEnd
|
|
100
|
+
}), [animatedScrollHandler, handleMomentumBegin, handleMomentumEnd, handleScrollBeginDrag, handleScrollEndDrag, scrollEventThrottle]);
|
|
101
|
+
return {
|
|
102
|
+
scrollValue,
|
|
103
|
+
scrollProps,
|
|
104
|
+
direction,
|
|
105
|
+
isDragging,
|
|
106
|
+
isMomentum,
|
|
107
|
+
getVelocity,
|
|
108
|
+
getCurrentOffset,
|
|
109
|
+
resetOffset
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export default useGestureScroll;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './usePresenceAnimation';
|
|
2
|
+
export * from './useSafeAreaPadding';
|
|
3
|
+
export * from './aria';
|
|
4
|
+
export * from './gesture';
|
|
5
|
+
export { default as useControllableValue } from './useControllableValue';
|
|
6
|
+
export { default as useCountDown } from './useCountDown';
|
|
7
|
+
export * from './useHairline';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { isFunction } from '../utils/validate';
|
|
3
|
+
const hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
|
|
4
|
+
function useControllableValue(props = {}, options = {}) {
|
|
5
|
+
const {
|
|
6
|
+
defaultValue,
|
|
7
|
+
defaultValuePropName = 'defaultValue',
|
|
8
|
+
valuePropName = 'value',
|
|
9
|
+
trigger = 'onChange'
|
|
10
|
+
} = options;
|
|
11
|
+
const propsRecord = props;
|
|
12
|
+
const isControlled = hasProp(props, valuePropName);
|
|
13
|
+
const value = propsRecord[valuePropName];
|
|
14
|
+
const [internalValue, setInternalValue] = useState(() => {
|
|
15
|
+
if (isControlled) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
if (hasProp(props, defaultValuePropName)) {
|
|
19
|
+
return propsRecord[defaultValuePropName];
|
|
20
|
+
}
|
|
21
|
+
return defaultValue;
|
|
22
|
+
});
|
|
23
|
+
const mergedValue = isControlled ? value : internalValue;
|
|
24
|
+
const handlerRef = useRef(propsRecord[trigger]);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
handlerRef.current = propsRecord[trigger];
|
|
27
|
+
}, [props, trigger]);
|
|
28
|
+
const triggerChange = useCallback((nextValue, ...args) => {
|
|
29
|
+
if (!isControlled) {
|
|
30
|
+
setInternalValue(nextValue);
|
|
31
|
+
}
|
|
32
|
+
const handler = handlerRef.current;
|
|
33
|
+
if (isFunction(handler)) {
|
|
34
|
+
;
|
|
35
|
+
handler(nextValue, ...args);
|
|
36
|
+
}
|
|
37
|
+
}, [isControlled]);
|
|
38
|
+
return [mergedValue, triggerChange];
|
|
39
|
+
}
|
|
40
|
+
export default useControllableValue;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { isNumber } from '../utils/validate';
|
|
3
|
+
const parseTime = time => {
|
|
4
|
+
const total = Math.max(time, 0);
|
|
5
|
+
const days = Math.floor(total / (24 * 60 * 60 * 1000));
|
|
6
|
+
const hours = Math.floor(total % (24 * 60 * 60 * 1000) / (60 * 60 * 1000));
|
|
7
|
+
const minutes = Math.floor(total % (60 * 60 * 1000) / (60 * 1000));
|
|
8
|
+
const seconds = Math.floor(total % (60 * 1000) / 1000);
|
|
9
|
+
const milliseconds = total % 1000;
|
|
10
|
+
return {
|
|
11
|
+
total,
|
|
12
|
+
days,
|
|
13
|
+
hours,
|
|
14
|
+
minutes,
|
|
15
|
+
seconds,
|
|
16
|
+
milliseconds
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const useCountDown = options => {
|
|
20
|
+
const {
|
|
21
|
+
time,
|
|
22
|
+
millisecond = false,
|
|
23
|
+
onChange,
|
|
24
|
+
onFinish
|
|
25
|
+
} = options;
|
|
26
|
+
const timeRef = useRef(time);
|
|
27
|
+
const millisecondRef = useRef(millisecond);
|
|
28
|
+
const onChangeRef = useRef(onChange);
|
|
29
|
+
const onFinishRef = useRef(onFinish);
|
|
30
|
+
timeRef.current = time;
|
|
31
|
+
millisecondRef.current = millisecond;
|
|
32
|
+
onChangeRef.current = onChange;
|
|
33
|
+
onFinishRef.current = onFinish;
|
|
34
|
+
const remainRef = useRef(Math.max(0, time));
|
|
35
|
+
const endTimeRef = useRef(Date.now() + remainRef.current);
|
|
36
|
+
const timerRef = useRef(null);
|
|
37
|
+
const countingRef = useRef(false);
|
|
38
|
+
const [current, setCurrent] = useState(() => parseTime(remainRef.current));
|
|
39
|
+
const clearTimer = useCallback(() => {
|
|
40
|
+
if (timerRef.current) {
|
|
41
|
+
clearTimeout(timerRef.current);
|
|
42
|
+
timerRef.current = null;
|
|
43
|
+
}
|
|
44
|
+
}, []);
|
|
45
|
+
const update = useCallback(remain => {
|
|
46
|
+
remainRef.current = remain;
|
|
47
|
+
const next = parseTime(remain);
|
|
48
|
+
setCurrent(next);
|
|
49
|
+
onChangeRef.current?.(next);
|
|
50
|
+
if (remain === 0) {
|
|
51
|
+
countingRef.current = false;
|
|
52
|
+
clearTimer();
|
|
53
|
+
onFinishRef.current?.();
|
|
54
|
+
}
|
|
55
|
+
}, [clearTimer]);
|
|
56
|
+
const tick = useCallback(() => {
|
|
57
|
+
if (!countingRef.current) return;
|
|
58
|
+
clearTimer();
|
|
59
|
+
const remain = Math.max(endTimeRef.current - Date.now(), 0);
|
|
60
|
+
update(remain);
|
|
61
|
+
if (remain <= 0) return;
|
|
62
|
+
const delay = millisecondRef.current ? Math.max(1, Math.min(30, remain)) : Math.max(1, Math.min(remain, remain % 1000 + 1));
|
|
63
|
+
timerRef.current = setTimeout(() => {
|
|
64
|
+
tick();
|
|
65
|
+
}, delay);
|
|
66
|
+
}, [clearTimer, update]);
|
|
67
|
+
const start = useCallback(() => {
|
|
68
|
+
if (countingRef.current || remainRef.current <= 0) return;
|
|
69
|
+
countingRef.current = true;
|
|
70
|
+
endTimeRef.current = Date.now() + remainRef.current;
|
|
71
|
+
tick();
|
|
72
|
+
}, [tick]);
|
|
73
|
+
const pause = useCallback(() => {
|
|
74
|
+
if (!countingRef.current) return;
|
|
75
|
+
countingRef.current = false;
|
|
76
|
+
remainRef.current = Math.max(endTimeRef.current - Date.now(), 0);
|
|
77
|
+
clearTimer();
|
|
78
|
+
}, [clearTimer]);
|
|
79
|
+
const reset = useCallback(newTime => {
|
|
80
|
+
pause();
|
|
81
|
+
const next = Math.max(0, isNumber(newTime) ? newTime : timeRef.current);
|
|
82
|
+
remainRef.current = next;
|
|
83
|
+
endTimeRef.current = Date.now() + next;
|
|
84
|
+
setCurrent(parseTime(next));
|
|
85
|
+
}, [pause]);
|
|
86
|
+
useEffect(() => () => clearTimer(), [clearTimer]);
|
|
87
|
+
return {
|
|
88
|
+
start,
|
|
89
|
+
pause,
|
|
90
|
+
reset,
|
|
91
|
+
current
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export { parseTime };
|
|
95
|
+
export default useCountDown;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
import { createHairlineView } from '../utils/hairline';
|
|
4
|
+
import { isNumber } from '../utils/validate';
|
|
5
|
+
/**
|
|
6
|
+
* A hook to generate a hairline (separator) view that respects the container's padding.
|
|
7
|
+
* Useful for list items, cells, etc.
|
|
8
|
+
*/
|
|
9
|
+
export const useHairline = ({
|
|
10
|
+
show = true,
|
|
11
|
+
containerStyle,
|
|
12
|
+
color,
|
|
13
|
+
width,
|
|
14
|
+
defaultPaddingHorizontal = 0
|
|
15
|
+
}) => {
|
|
16
|
+
return useMemo(() => {
|
|
17
|
+
if (!show) return null;
|
|
18
|
+
const flattened = StyleSheet.flatten(containerStyle);
|
|
19
|
+
const paddingHorizontal = isNumber(flattened?.paddingHorizontal) ? flattened.paddingHorizontal : undefined;
|
|
20
|
+
const resolveInset = (primary, secondary) => isNumber(primary) ? primary : isNumber(secondary) ? secondary : isNumber(paddingHorizontal) ? paddingHorizontal : defaultPaddingHorizontal;
|
|
21
|
+
const resolvedPadding = {
|
|
22
|
+
left: resolveInset(flattened?.paddingLeft, flattened?.paddingStart),
|
|
23
|
+
right: resolveInset(flattened?.paddingRight, flattened?.paddingEnd)
|
|
24
|
+
};
|
|
25
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
26
|
+
style: [styles.hairline, createHairlineView({
|
|
27
|
+
position: 'bottom',
|
|
28
|
+
color,
|
|
29
|
+
left: resolvedPadding.left,
|
|
30
|
+
right: resolvedPadding.right,
|
|
31
|
+
enabled: width > 0,
|
|
32
|
+
width
|
|
33
|
+
})]
|
|
34
|
+
});
|
|
35
|
+
}, [show, containerStyle, color, width, defaultPaddingHorizontal]);
|
|
36
|
+
};
|
|
37
|
+
const styles = StyleSheet.create({
|
|
38
|
+
hairline: {
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
bottom: 0
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { Animated, Easing } from 'react-native';
|
|
3
|
+
import { nativeDriverEnabled } from '../platform';
|
|
4
|
+
export const usePresenceAnimation = (visible, {
|
|
5
|
+
duration = 180,
|
|
6
|
+
easing = Easing.out(Easing.cubic),
|
|
7
|
+
appear = false
|
|
8
|
+
} = {}) => {
|
|
9
|
+
const [mounted, setMounted] = useState(visible);
|
|
10
|
+
const animated = useRef(new Animated.Value(visible && !appear ? 1 : 0)).current;
|
|
11
|
+
const useNativeDriver = nativeDriverEnabled;
|
|
12
|
+
const animationIdRef = useRef(0);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
animationIdRef.current += 1;
|
|
15
|
+
const animationId = animationIdRef.current;
|
|
16
|
+
animated.stopAnimation();
|
|
17
|
+
if (visible) {
|
|
18
|
+
setMounted(true);
|
|
19
|
+
Animated.timing(animated, {
|
|
20
|
+
toValue: 1,
|
|
21
|
+
duration,
|
|
22
|
+
easing,
|
|
23
|
+
useNativeDriver
|
|
24
|
+
}).start();
|
|
25
|
+
} else {
|
|
26
|
+
Animated.timing(animated, {
|
|
27
|
+
toValue: 0,
|
|
28
|
+
duration,
|
|
29
|
+
easing,
|
|
30
|
+
useNativeDriver
|
|
31
|
+
}).start(() => {
|
|
32
|
+
if (animationId !== animationIdRef.current) return;
|
|
33
|
+
setMounted(false);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}, [animated, duration, easing, useNativeDriver, visible]);
|
|
37
|
+
return {
|
|
38
|
+
mounted,
|
|
39
|
+
animated
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
3
|
+
export function useSafeAreaPadding(min) {
|
|
4
|
+
const insets = useSafeAreaInsets();
|
|
5
|
+
if (Platform.OS === 'web') {
|
|
6
|
+
const t = min?.top ?? 0,
|
|
7
|
+
b = min?.bottom ?? 0,
|
|
8
|
+
l = min?.left ?? 0,
|
|
9
|
+
r = min?.right ?? 0;
|
|
10
|
+
return {
|
|
11
|
+
paddingTop: `max(env(safe-area-inset-top, 0px), ${t}px)`,
|
|
12
|
+
paddingBottom: `max(env(safe-area-inset-bottom, 0px), ${b}px)`,
|
|
13
|
+
paddingLeft: `max(env(safe-area-inset-left, 0px), ${l}px)`,
|
|
14
|
+
paddingRight: `max(env(safe-area-inset-right, 0px), ${r}px)`
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
paddingTop: Math.max(insets.top, min?.top ?? 0),
|
|
19
|
+
paddingBottom: Math.max(insets.bottom, min?.bottom ?? 0),
|
|
20
|
+
paddingLeft: Math.max(insets.left, min?.left ?? 0),
|
|
21
|
+
paddingRight: Math.max(insets.right, min?.right ?? 0)
|
|
22
|
+
};
|
|
23
|
+
}
|