react-native-system-ui 0.0.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +97 -105
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +54 -67
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +25 -23
  7. package/dist/cjs/components/badge/Badge.js +31 -31
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +115 -151
  10. package/dist/cjs/components/button/ButtonGroup.js +8 -42
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +177 -180
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +70 -83
  18. package/dist/cjs/components/cell/CellGroup.js +16 -29
  19. package/dist/cjs/components/checkbox/Checkbox.js +139 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +4 -35
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +25 -24
  23. package/dist/cjs/components/collapse/Collapse.js +75 -91
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +16 -3
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +20 -15
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +61 -84
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +153 -121
  34. package/dist/cjs/components/dialog/imperative.js +17 -30
  35. package/dist/cjs/components/divider/Divider.js +26 -28
  36. package/dist/cjs/components/empty/Empty.js +35 -39
  37. package/dist/cjs/components/error-boundary/ErrorBoundary.js +73 -0
  38. package/dist/cjs/components/error-boundary/index.js +19 -0
  39. package/dist/cjs/components/field/Field.js +109 -106
  40. package/dist/cjs/components/flex/Flex.js +18 -18
  41. package/dist/cjs/components/flex/FlexItem.js +26 -27
  42. package/dist/cjs/components/form/Form.js +142 -161
  43. package/dist/cjs/components/form/FormItem.js +69 -97
  44. package/dist/cjs/components/form/FormList.js +49 -37
  45. package/dist/cjs/components/form/tokens.js +6 -3
  46. package/dist/cjs/components/form/utils.js +15 -34
  47. package/dist/cjs/components/grid/Grid.js +30 -29
  48. package/dist/cjs/components/grid/GridItem.js +84 -85
  49. package/dist/cjs/components/image/Image.js +55 -59
  50. package/dist/cjs/components/image/tokens.js +2 -2
  51. package/dist/cjs/components/image-preview/ImagePreview.js +124 -112
  52. package/dist/cjs/components/image-preview/imperative.js +4 -13
  53. package/dist/cjs/components/index.js +13 -0
  54. package/dist/cjs/components/input/Input.js +30 -22
  55. package/dist/cjs/components/loading/Loading.js +14 -15
  56. package/dist/cjs/components/nav-bar/NavBar.js +68 -83
  57. package/dist/cjs/components/nav-bar/tokens.js +1 -9
  58. package/dist/cjs/components/notice-bar/NoticeBar.js +74 -77
  59. package/dist/cjs/components/notify/Notify.js +88 -84
  60. package/dist/cjs/components/notify/imperative.js +20 -43
  61. package/dist/cjs/components/notify/tokens.js +1 -11
  62. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +187 -209
  63. package/dist/cjs/components/overlay/Overlay.js +37 -52
  64. package/dist/cjs/components/overlay/tokens.js +5 -3
  65. package/dist/cjs/components/password-input/PasswordInput.js +98 -79
  66. package/dist/cjs/components/picker/Picker.js +440 -421
  67. package/dist/cjs/components/picker/tokens.js +1 -1
  68. package/dist/cjs/components/popup/Popup.js +263 -293
  69. package/dist/cjs/components/portal/Portal.js +12 -29
  70. package/dist/cjs/components/portal/PortalHost.js +151 -234
  71. package/dist/cjs/components/progress/Progress.js +51 -48
  72. package/dist/cjs/components/radio/Radio.js +45 -42
  73. package/dist/cjs/components/radio/RadioGroup.js +8 -40
  74. package/dist/cjs/components/radio/tokens.js +7 -10
  75. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  76. package/dist/cjs/components/search/Search.js +51 -43
  77. package/dist/cjs/components/selector/Selector.js +14 -13
  78. package/dist/cjs/components/share-sheet/ShareSheet.js +160 -161
  79. package/dist/cjs/components/sidebar/Sidebar.js +39 -45
  80. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  81. package/dist/cjs/components/sidebar/SidebarItem.js +13 -16
  82. package/dist/cjs/components/sidebar/tokens.js +1 -3
  83. package/dist/cjs/components/skeleton/Skeleton.js +30 -37
  84. package/dist/cjs/components/skeleton/tokens.js +1 -2
  85. package/dist/cjs/components/slider/Slider.js +156 -135
  86. package/dist/cjs/components/space/Space.js +46 -69
  87. package/dist/cjs/components/stepper/Stepper.js +177 -155
  88. package/dist/cjs/components/swiper/Swiper.js +251 -253
  89. package/dist/cjs/components/swiper/SwiperPagIndicator.js +25 -27
  90. package/dist/cjs/components/swiper/tokens.js +10 -3
  91. package/dist/cjs/components/switch/Switch.js +13 -15
  92. package/dist/cjs/components/tabbar/Tabbar.js +35 -27
  93. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  94. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  95. package/dist/cjs/components/tabs/Tabs.js +286 -313
  96. package/dist/cjs/components/tag/Tag.js +46 -37
  97. package/dist/cjs/components/toast/Toast.js +90 -90
  98. package/dist/cjs/components/toast/imperative.js +16 -41
  99. package/dist/cjs/components/typography/Typography.js +3 -5
  100. package/dist/cjs/components/water-mark/WaterMark.js +31 -29
  101. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  102. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  103. package/dist/cjs/design-system/presets.js +2 -3
  104. package/dist/cjs/design-system/tokens.js +2 -11
  105. package/dist/cjs/hooks/animation/index.js +25 -0
  106. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  107. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  108. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  109. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  110. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  111. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  112. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  113. package/dist/cjs/hooks/index.js +12 -0
  114. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  115. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  116. package/dist/cjs/hooks/useControllableValue.js +10 -21
  117. package/dist/cjs/hooks/useCountDown.js +14 -22
  118. package/dist/cjs/hooks/useHairline.js +17 -29
  119. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  120. package/dist/cjs/index.js +67 -1
  121. package/dist/cjs/platform/animation.js +10 -2
  122. package/dist/cjs/platform/measure.js +18 -36
  123. package/dist/cjs/utils/color.js +21 -35
  124. package/dist/cjs/utils/compare.js +7 -12
  125. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  126. package/dist/cjs/utils/date.js +20 -50
  127. package/dist/cjs/utils/deepMerge.js +16 -26
  128. package/dist/cjs/utils/hairline.js +74 -71
  129. package/dist/cjs/utils/index.js +22 -0
  130. package/dist/cjs/utils/number.js +21 -29
  131. package/dist/cjs/utils/render.js +27 -0
  132. package/dist/cjs/utils/rtl.js +25 -0
  133. package/dist/cjs/utils/string.js +8 -25
  134. package/dist/es/components/action-sheet/ActionSheet.js +99 -107
  135. package/dist/es/components/action-sheet/tokens.js +16 -27
  136. package/dist/es/components/area/Area.js +55 -68
  137. package/dist/es/components/area/tokens.js +6 -3
  138. package/dist/es/components/avatar/Avatar.js +25 -23
  139. package/dist/es/components/avatar/index.js +1 -2
  140. package/dist/es/components/badge/Badge.js +33 -33
  141. package/dist/es/components/badge/tokens.js +6 -8
  142. package/dist/es/components/button/Button.js +116 -152
  143. package/dist/es/components/button/ButtonGroup.js +9 -43
  144. package/dist/es/components/button/tokens.js +2 -3
  145. package/dist/es/components/calendar/Calendar.js +214 -225
  146. package/dist/es/components/calendar/tokens.js +3 -3
  147. package/dist/es/components/cascader/Cascader.js +180 -183
  148. package/dist/es/components/cascader/tokens.js +2 -2
  149. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  150. package/dist/es/components/cell/Cell.js +71 -84
  151. package/dist/es/components/cell/CellGroup.js +16 -28
  152. package/dist/es/components/checkbox/Checkbox.js +140 -133
  153. package/dist/es/components/checkbox/CheckboxGroup.js +5 -36
  154. package/dist/es/components/checkbox/tokens.js +7 -10
  155. package/dist/es/components/circle/Circle.js +25 -23
  156. package/dist/es/components/collapse/Collapse.js +77 -92
  157. package/dist/es/components/config-provider/ConfigProvider.js +10 -3
  158. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  159. package/dist/es/components/config-provider/index.js +1 -0
  160. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  161. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  162. package/dist/es/components/config-provider/useDirection.js +3 -0
  163. package/dist/es/components/count-down/CountDown.js +23 -18
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -84
  165. package/dist/es/components/datetime-picker/tokens.js +14 -3
  166. package/dist/es/components/dialog/Dialog.js +154 -121
  167. package/dist/es/components/dialog/imperative.js +17 -30
  168. package/dist/es/components/divider/Divider.js +28 -29
  169. package/dist/es/components/empty/Empty.js +36 -39
  170. package/dist/es/components/error-boundary/ErrorBoundary.js +61 -0
  171. package/dist/es/components/error-boundary/index.js +1 -0
  172. package/dist/es/components/field/Field.js +109 -106
  173. package/dist/es/components/flex/Flex.js +18 -17
  174. package/dist/es/components/flex/FlexItem.js +27 -27
  175. package/dist/es/components/form/Form.js +143 -162
  176. package/dist/es/components/form/FormItem.js +68 -95
  177. package/dist/es/components/form/FormList.js +49 -37
  178. package/dist/es/components/form/tokens.js +6 -3
  179. package/dist/es/components/form/utils.js +15 -34
  180. package/dist/es/components/grid/Grid.js +30 -28
  181. package/dist/es/components/grid/GridItem.js +84 -84
  182. package/dist/es/components/image/Image.js +58 -62
  183. package/dist/es/components/image/tokens.js +2 -2
  184. package/dist/es/components/image-preview/ImagePreview.js +124 -112
  185. package/dist/es/components/image-preview/imperative.js +4 -13
  186. package/dist/es/components/index.js +3 -1
  187. package/dist/es/components/input/Input.js +31 -23
  188. package/dist/es/components/loading/Loading.js +16 -16
  189. package/dist/es/components/nav-bar/NavBar.js +68 -83
  190. package/dist/es/components/nav-bar/tokens.js +1 -3
  191. package/dist/es/components/notice-bar/NoticeBar.js +74 -76
  192. package/dist/es/components/notify/Notify.js +92 -87
  193. package/dist/es/components/notify/imperative.js +21 -44
  194. package/dist/es/components/notify/tokens.js +1 -5
  195. package/dist/es/components/number-keyboard/NumberKeyboard.js +187 -209
  196. package/dist/es/components/overlay/Overlay.js +36 -51
  197. package/dist/es/components/overlay/tokens.js +5 -3
  198. package/dist/es/components/password-input/PasswordInput.js +98 -79
  199. package/dist/es/components/picker/Picker.js +440 -421
  200. package/dist/es/components/picker/tokens.js +1 -1
  201. package/dist/es/components/popup/Popup.js +263 -292
  202. package/dist/es/components/portal/Portal.js +13 -29
  203. package/dist/es/components/portal/PortalHost.js +152 -234
  204. package/dist/es/components/progress/Progress.js +51 -48
  205. package/dist/es/components/radio/Radio.js +47 -44
  206. package/dist/es/components/radio/RadioGroup.js +10 -41
  207. package/dist/es/components/radio/tokens.js +7 -10
  208. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  209. package/dist/es/components/search/Search.js +52 -44
  210. package/dist/es/components/selector/Selector.js +14 -13
  211. package/dist/es/components/share-sheet/ShareSheet.js +162 -163
  212. package/dist/es/components/sidebar/Sidebar.js +41 -47
  213. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  214. package/dist/es/components/sidebar/SidebarItem.js +13 -15
  215. package/dist/es/components/sidebar/tokens.js +1 -3
  216. package/dist/es/components/skeleton/Skeleton.js +30 -37
  217. package/dist/es/components/skeleton/tokens.js +1 -2
  218. package/dist/es/components/slider/Slider.js +156 -134
  219. package/dist/es/components/space/Space.js +48 -71
  220. package/dist/es/components/stepper/Stepper.js +178 -156
  221. package/dist/es/components/swiper/Swiper.js +252 -254
  222. package/dist/es/components/swiper/SwiperPagIndicator.js +25 -27
  223. package/dist/es/components/swiper/tokens.js +10 -3
  224. package/dist/es/components/switch/Switch.js +13 -15
  225. package/dist/es/components/tabbar/Tabbar.js +36 -28
  226. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  227. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  228. package/dist/es/components/tabs/Tabs.js +286 -313
  229. package/dist/es/components/tag/Tag.js +49 -39
  230. package/dist/es/components/toast/Toast.js +93 -91
  231. package/dist/es/components/toast/imperative.js +16 -41
  232. package/dist/es/components/typography/Typography.js +3 -5
  233. package/dist/es/components/water-mark/WaterMark.js +32 -30
  234. package/dist/es/design-system/ThemeProvider.js +5 -11
  235. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  236. package/dist/es/design-system/presets.js +2 -3
  237. package/dist/es/design-system/tokens.js +1 -9
  238. package/dist/es/hooks/animation/index.js +2 -0
  239. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  240. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  241. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  242. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  243. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  244. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  245. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  246. package/dist/es/hooks/index.js +1 -0
  247. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  248. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  249. package/dist/es/hooks/useControllableValue.js +10 -21
  250. package/dist/es/hooks/useCountDown.js +14 -22
  251. package/dist/es/hooks/useHairline.js +16 -28
  252. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  253. package/dist/es/index.js +8 -1
  254. package/dist/es/platform/animation.js +9 -1
  255. package/dist/es/platform/measure.js +18 -36
  256. package/dist/es/utils/color.js +21 -35
  257. package/dist/es/utils/compare.js +7 -12
  258. package/dist/es/utils/createPlatformShadow.js +28 -39
  259. package/dist/es/utils/date.js +20 -50
  260. package/dist/es/utils/deepMerge.js +16 -26
  261. package/dist/es/utils/hairline.js +73 -65
  262. package/dist/es/utils/index.js +2 -0
  263. package/dist/es/utils/number.js +21 -29
  264. package/dist/es/utils/render.js +7 -0
  265. package/dist/es/utils/rtl.js +17 -0
  266. package/dist/es/utils/string.js +8 -25
  267. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  268. package/dist/types/components/area/Area.d.ts +1 -1
  269. package/dist/types/components/area/tokens.d.ts +4 -0
  270. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  271. package/dist/types/components/avatar/index.d.ts +1 -2
  272. package/dist/types/components/badge/Badge.d.ts +1 -1
  273. package/dist/types/components/button/Button.d.ts +1 -1
  274. package/dist/types/components/button/index.d.ts +1 -1
  275. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  276. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  277. package/dist/types/components/cell/Cell.d.ts +1 -1
  278. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  279. package/dist/types/components/cell/index.d.ts +2 -2
  280. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  281. package/dist/types/components/circle/Circle.d.ts +1 -1
  282. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  283. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  284. package/dist/types/components/config-provider/index.d.ts +2 -1
  285. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  286. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  287. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  288. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  289. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  290. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  291. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  292. package/dist/types/components/divider/Divider.d.ts +1 -1
  293. package/dist/types/components/empty/Empty.d.ts +1 -1
  294. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  295. package/dist/types/components/error-boundary/index.d.ts +2 -0
  296. package/dist/types/components/field/Field.d.ts +1 -1
  297. package/dist/types/components/flex/Flex.d.ts +1 -1
  298. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  299. package/dist/types/components/flex/index.d.ts +2 -2
  300. package/dist/types/components/form/Form.d.ts +1 -1
  301. package/dist/types/components/form/FormItem.d.ts +2 -1
  302. package/dist/types/components/form/index.d.ts +2 -2
  303. package/dist/types/components/form/tokens.d.ts +4 -0
  304. package/dist/types/components/grid/Grid.d.ts +1 -1
  305. package/dist/types/components/grid/GridItem.d.ts +1 -1
  306. package/dist/types/components/grid/index.d.ts +2 -2
  307. package/dist/types/components/image/Image.d.ts +1 -1
  308. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  309. package/dist/types/components/index.d.ts +4 -1
  310. package/dist/types/components/input/Input.d.ts +3 -3
  311. package/dist/types/components/loading/Loading.d.ts +1 -1
  312. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  313. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  314. package/dist/types/components/notify/Notify.d.ts +2 -2
  315. package/dist/types/components/notify/index.d.ts +1 -1
  316. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  317. package/dist/types/components/overlay/tokens.d.ts +3 -0
  318. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  319. package/dist/types/components/picker/Picker.d.ts +5 -5
  320. package/dist/types/components/popup/Popup.d.ts +3 -42
  321. package/dist/types/components/portal/Portal.d.ts +9 -6
  322. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  323. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  324. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  325. package/dist/types/components/search/Search.d.ts +1 -1
  326. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  327. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  328. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  329. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  330. package/dist/types/components/sidebar/index.d.ts +2 -2
  331. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  332. package/dist/types/components/slider/Slider.d.ts +1 -1
  333. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  334. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  335. package/dist/types/components/swiper/index.d.ts +1 -1
  336. package/dist/types/components/swiper/tokens.d.ts +8 -0
  337. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  338. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  339. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  340. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  341. package/dist/types/components/tabs/index.d.ts +1 -1
  342. package/dist/types/components/tag/Tag.d.ts +1 -1
  343. package/dist/types/components/toast/Toast.d.ts +2 -2
  344. package/dist/types/components/toast/index.d.ts +1 -1
  345. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  346. package/dist/types/design-system/tokens.d.ts +0 -1
  347. package/dist/types/hooks/animation/index.d.ts +3 -0
  348. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  349. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  350. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  351. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  352. package/dist/types/hooks/index.d.ts +1 -0
  353. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  354. package/dist/types/hooks/useHairline.d.ts +1 -1
  355. package/dist/types/index.d.ts +5 -0
  356. package/dist/types/platform/animation.d.ts +8 -0
  357. package/dist/types/platform/measure.d.ts +1 -1
  358. package/dist/types/utils/compare.d.ts +1 -1
  359. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  360. package/dist/types/utils/date.d.ts +2 -2
  361. package/dist/types/utils/hairline.d.ts +5 -10
  362. package/dist/types/utils/index.d.ts +2 -0
  363. package/dist/types/utils/number.d.ts +2 -2
  364. package/dist/types/utils/render.d.ts +5 -0
  365. package/dist/types/utils/rtl.d.ts +5 -0
  366. package/package.json +9 -2
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
2
+ import React, { useCallback, useImperativeHandle, useRef } from 'react';
3
3
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { Search as SearchIcon } from 'react-native-system-icon';
5
5
  import { useAriaPress, useControllableValue } from '../../hooks';
@@ -41,31 +41,41 @@ const SearchComponent = (props, ref) => {
41
41
  defaultValue: ''
42
42
  });
43
43
  const inputValue = value ?? '';
44
- const resolvedInputAlign = useMemo(() => align ?? inputAlign, [align, inputAlign]);
44
+ const resolvedInputAlign = align ?? inputAlign;
45
+ const onChangeTextRef = useRef(onChangeText),
46
+ onCancelRef = useRef(onCancel),
47
+ onSearchRef = useRef(onSearch),
48
+ onSubmitEditingRef = useRef(onSubmitEditing),
49
+ inputValueRef = useRef(inputValue);
50
+ onChangeTextRef.current = onChangeText;
51
+ onCancelRef.current = onCancel;
52
+ onSearchRef.current = onSearch;
53
+ onSubmitEditingRef.current = onSubmitEditing;
54
+ inputValueRef.current = inputValue;
45
55
  const handleChange = useCallback(next => {
46
56
  triggerChange(next);
47
- onChangeText?.(next);
48
- }, [onChangeText, triggerChange]);
57
+ onChangeTextRef.current?.(next);
58
+ }, [triggerChange]);
49
59
  const handleCancel = useCallback(() => {
50
60
  handleChange('');
51
- onCancel?.();
52
- }, [handleChange, onCancel]);
61
+ onCancelRef.current?.();
62
+ }, [handleChange]);
53
63
  const handleSubmit = useCallback(event => {
54
- onSearch?.(inputValue);
55
- onSubmitEditing?.(event);
56
- }, [inputValue, onSearch, onSubmitEditing]);
57
- const resolvedBackground = useMemo(() => background ?? tokens.colors.background, [background, tokens.colors.background]);
58
- const resolvedLeftIcon = useMemo(() => leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
64
+ onSearchRef.current?.(inputValueRef.current);
65
+ onSubmitEditingRef.current?.(event);
66
+ }, []);
67
+ const resolvedBackground = background ?? tokens.colors.background;
68
+ const resolvedLeftIcon = leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
59
69
  size: tokens.icon.size,
60
70
  fill: tokens.colors.icon,
61
71
  color: tokens.colors.icon
62
- }), [leftIcon, tokens.colors.icon, tokens.icon.size]);
63
- const resolvedClearTrigger = useMemo(() => clearTrigger ?? tokens.defaults.clearTrigger, [clearTrigger, tokens.defaults.clearTrigger]);
64
- const resolvedReturnKeyType = useMemo(() => returnKeyType ?? 'search', [returnKeyType]);
65
- const shouldShowAction = useMemo(() => !!action || showAction, [action, showAction]);
66
- const isCustomActionText = useMemo(() => /*#__PURE__*/React.isValidElement(actionText), [actionText]);
67
- const shouldRenderCancelAction = useMemo(() => shouldShowAction && !action && !isCustomActionText, [action, isCustomActionText, shouldShowAction]);
68
- const radius = useMemo(() => shape === 'round' ? tokens.radius.round : tokens.radius.square, [shape, tokens.radius.round, tokens.radius.square]);
72
+ });
73
+ const resolvedClearTrigger = clearTrigger ?? tokens.defaults.clearTrigger;
74
+ const resolvedReturnKeyType = returnKeyType ?? 'search';
75
+ const shouldShowAction = !!action || showAction;
76
+ const isCustomActionText = /*#__PURE__*/React.isValidElement(actionText);
77
+ const shouldRenderCancelAction = shouldShowAction && !action && !isCustomActionText;
78
+ const radius = shape === 'round' ? tokens.radius.round : tokens.radius.square;
69
79
  const inputRef = useRef(null);
70
80
  useImperativeHandle(ref, () => ({
71
81
  focus: () => inputRef.current?.focus(),
@@ -80,18 +90,18 @@ const SearchComponent = (props, ref) => {
80
90
  testID: 'rnsu-search-action'
81
91
  }
82
92
  });
83
- const containerStyles = useMemo(() => [styles.container, {
93
+ const containerStyles = [S.ctr, {
84
94
  paddingHorizontal: tokens.spacing.paddingHorizontal,
85
95
  paddingVertical: tokens.spacing.paddingVertical,
86
96
  backgroundColor: resolvedBackground
87
- }, containerStyle], [containerStyle, resolvedBackground, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical]);
88
- const contentStyles = useMemo(() => [styles.content, {
97
+ }, containerStyle];
98
+ const contentStyles = [S.cnt, {
89
99
  borderRadius: radius,
90
100
  paddingHorizontal: tokens.spacing.contentPaddingHorizontal,
91
101
  paddingVertical: tokens.spacing.contentPaddingVertical,
92
102
  backgroundColor: tokens.colors.contentBackground
93
- }], [radius, tokens.colors.contentBackground, tokens.spacing.contentPaddingHorizontal, tokens.spacing.contentPaddingVertical]);
94
- const labelNode = useMemo(() => !label ? null : isText(label) ? /*#__PURE__*/React.createElement(Text, {
103
+ }];
104
+ const labelElement = !label ? null : isText(label) ? /*#__PURE__*/React.createElement(Text, {
95
105
  style: {
96
106
  marginRight: tokens.spacing.labelGap,
97
107
  color: tokens.colors.label,
@@ -102,17 +112,17 @@ const SearchComponent = (props, ref) => {
102
112
  style: {
103
113
  marginRight: tokens.spacing.labelGap
104
114
  }
105
- }, label), [label, tokens.colors.label, tokens.spacing.labelGap, tokens.typography.label, tokens.typography.labelWeight]);
106
- const actionNode = action ? /*#__PURE__*/React.createElement(View, {
107
- style: [styles.actionWrapper, {
115
+ }, label);
116
+ const actionElement = action ? /*#__PURE__*/React.createElement(View, {
117
+ style: [S.act, {
108
118
  marginLeft: tokens.spacing.actionGap
109
119
  }]
110
120
  }, action) : !shouldShowAction ? null : isCustomActionText ? /*#__PURE__*/React.createElement(View, {
111
- style: [styles.actionWrapper, {
121
+ style: [S.act, {
112
122
  marginLeft: tokens.spacing.actionGap
113
123
  }]
114
124
  }, actionText) : /*#__PURE__*/React.createElement(Pressable, _extends({
115
- style: [styles.actionWrapper, {
125
+ style: [S.act, {
116
126
  marginLeft: tokens.spacing.actionGap,
117
127
  opacity: cancelActionPress.states.pressed ? tokens.opacity.actionPressed : 1
118
128
  }]
@@ -127,8 +137,8 @@ const SearchComponent = (props, ref) => {
127
137
  style: containerStyles
128
138
  }, /*#__PURE__*/React.createElement(View, {
129
139
  style: contentStyles
130
- }, labelNode, /*#__PURE__*/React.createElement(View, {
131
- style: styles.fieldWrapper
140
+ }, labelElement, /*#__PURE__*/React.createElement(View, {
141
+ style: S.field
132
142
  }, /*#__PURE__*/React.createElement(Field, _extends({
133
143
  ref: inputRef,
134
144
  type: "search",
@@ -142,39 +152,37 @@ const SearchComponent = (props, ref) => {
142
152
  errorMessage: errorMessage,
143
153
  inputAlign: resolvedInputAlign,
144
154
  border: false,
145
- style: [styles.field, {
155
+ style: [{
146
156
  paddingHorizontal: tokens.spacing.none,
147
157
  paddingVertical: tokens.spacing.none
148
158
  }, fieldStyle],
149
- contentStyle: [styles.fieldContent, {
159
+ contentStyle: [{
150
160
  paddingVertical: tokens.spacing.none
151
161
  }, fieldContentStyle],
152
- inputStyle: [styles.input, {
162
+ inputStyle: [{
153
163
  paddingVertical: tokens.spacing.none
154
164
  }, inputStyle],
155
165
  onSubmitEditing: handleSubmit,
156
166
  returnKeyType: resolvedReturnKeyType
157
- }, restFieldProps)))), actionNode);
167
+ }, restFieldProps)))), actionElement);
158
168
  };
159
- export const Search = /*#__PURE__*/React.forwardRef(SearchComponent);
160
- Search.displayName = 'Search';
161
- const styles = StyleSheet.create({
162
- container: {
169
+ const SearchForwardRef = /*#__PURE__*/React.forwardRef(SearchComponent);
170
+ SearchForwardRef.displayName = 'Search';
171
+ export const Search = /*#__PURE__*/React.memo(SearchForwardRef);
172
+ const S = StyleSheet.create({
173
+ ctr: {
163
174
  flexDirection: 'row',
164
175
  alignItems: 'center'
165
176
  },
166
- content: {
177
+ cnt: {
167
178
  flex: 1,
168
179
  flexDirection: 'row',
169
180
  alignItems: 'center'
170
181
  },
171
- fieldWrapper: {
182
+ field: {
172
183
  flex: 1
173
184
  },
174
- field: {},
175
- fieldContent: {},
176
- input: {},
177
- actionWrapper: {
185
+ act: {
178
186
  justifyContent: 'center'
179
187
  }
180
188
  });
@@ -34,8 +34,8 @@ const SelectorOptionItemImpl = ({
34
34
  onPress: () => onToggle(option),
35
35
  extraProps: {
36
36
  accessibilityRole: multiple ? 'checkbox' : 'radio',
37
- accessibilityLabel,
38
- accessibilityHint,
37
+ accessibilityLabel: accessibilityLabel,
38
+ accessibilityHint: accessibilityHint,
39
39
  accessibilityState: multiple ? {
40
40
  checked: active,
41
41
  disabled
@@ -122,29 +122,30 @@ const SelectorImpl = props => {
122
122
  const [value = [], triggerChange] = useControllableValue(props, {
123
123
  defaultValue: []
124
124
  });
125
- const optionByValue = useMemo(() => {
125
+ const optionsByValue = useMemo(() => {
126
126
  const map = new Map();
127
127
  for (const option of options) map.set(option.value, option);
128
128
  return map;
129
129
  }, [options]);
130
- const resolvedColumns = useMemo(() => Math.max(1, Math.floor(columns)), [columns]);
131
- const basis = useMemo(() => `${100 / resolvedColumns}%`, [resolvedColumns]);
132
- const itemMargin = useMemo(() => tokens.spacing.gap / 2, [tokens.spacing.gap]);
130
+ const resolvedColumns = Math.max(1, Math.floor(columns));
131
+ const basis = `${100 / resolvedColumns}%`;
132
+ const itemMargin = tokens.spacing.gap / 2;
133
133
  const selectedSet = useMemo(() => new Set(value), [value]);
134
134
  const toggleOption = useCallback(option => {
135
135
  if (disabled || option.disabled) return;
136
- const active = selectedSet.has(option.value);
137
- let next;
136
+ const isActive = selectedSet.has(option.value);
137
+ let nextValue;
138
138
  if (multiple) {
139
- next = active ? value.filter(item => item !== option.value) : [...value, option.value];
139
+ nextValue = isActive ? value.filter(item => item !== option.value) : [...value, option.value];
140
140
  } else {
141
- next = active ? [] : [option.value];
141
+ nextValue = isActive ? [] : [option.value];
142
142
  }
143
- const items = next.map(v => optionByValue.get(v)).filter(Boolean);
144
- triggerChange(next, {
143
+ ;
144
+ const items = nextValue.map(val => optionsByValue.get(val)).filter(Boolean);
145
+ triggerChange(nextValue, {
145
146
  items
146
147
  });
147
- }, [disabled, multiple, optionByValue, selectedSet, triggerChange, value]);
148
+ }, [disabled, multiple, optionsByValue, selectedSet, triggerChange, value]);
148
149
  return /*#__PURE__*/React.createElement(View, _extends({}, rest, {
149
150
  style: [tokens.layout.container, {
150
151
  marginHorizontal: -itemMargin,
@@ -1,72 +1,69 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useMemo } from 'react';
3
- import { Pressable, StyleSheet, Text, View } from 'react-native';
2
+ import React, { useCallback, useMemo, useRef } from 'react';
3
+ import { Pressable, StyleSheet, View } from 'react-native';
4
4
  import { useAriaPress } from '../../hooks';
5
5
  import { createHairlineView } from '../../utils/hairline';
6
6
  import { isFiniteNumber, isText, isValidNode } from '../../utils/validate';
7
+ import { renderTextOrNode } from '../../utils';
7
8
  import Popup from '../popup';
9
+ import { useLocale } from '../config-provider/useLocale';
8
10
  import { useShareSheetTokens } from './tokens';
9
- const normalizeOptions = options => {
10
- if (!options || options.length === 0) return [];
11
- if (Array.isArray(options[0])) {
12
- return options;
13
- }
14
- return [options];
11
+ const no = o => {
12
+ if (!o || o.length === 0) return [];
13
+ if (Array.isArray(o[0])) return o;
14
+ return [o];
15
15
  };
16
16
  const ShareSheetOptionItem = /*#__PURE__*/React.memo(({
17
- option,
18
- index,
19
- columns,
20
- tokens,
21
- onSelect
17
+ option: o,
18
+ index: i,
19
+ columns: cols,
20
+ tokens: t,
21
+ onSelect: os
22
22
  }) => {
23
- const optionWidthStyle = useMemo(() => ({
24
- width: `${100 / columns}%`
25
- }), [columns]);
26
- const iconStyle = useMemo(() => ({
27
- width: tokens.sizing.icon,
28
- height: tokens.sizing.icon
29
- }), [tokens.sizing.icon]);
30
- const press = useAriaPress({
31
- onPress: () => onSelect(option, index),
23
+ const ows = {
24
+ width: `${100 / cols}%`
25
+ };
26
+ const is = {
27
+ width: t.sizing.icon,
28
+ height: t.sizing.icon
29
+ };
30
+ const p = useAriaPress({
31
+ onPress: () => os(o, i),
32
32
  extraProps: {
33
- accessibilityRole: 'button',
34
- testID: `rv-share-sheet-item-${index}`
33
+ accessibilityRole: 'menuitem',
34
+ accessibilityLabel: isText(o.name) ? String(o.name) : undefined,
35
+ testID: `rv-share-sheet-item-${i}`
35
36
  }
36
37
  });
37
38
  return /*#__PURE__*/React.createElement(Pressable, _extends({
38
- style: [styles.option, optionWidthStyle]
39
- }, press.interactionProps), /*#__PURE__*/React.createElement(View, {
40
- style: [styles.icon, iconStyle, {
41
- marginHorizontal: tokens.spacing.iconMarginHorizontal
42
- }]
43
- }, option.icon), isValidNode(option.name) ? isText(option.name) ? /*#__PURE__*/React.createElement(Text, {
44
- style: [styles.optionText, {
45
- color: tokens.colors.option,
46
- fontSize: tokens.typography.option,
47
- paddingHorizontal: tokens.spacing.optionTextPaddingHorizontal
48
- }]
49
- }, option.name) : option.name : null, isValidNode(option.description) ? isText(option.description) ? /*#__PURE__*/React.createElement(Text, {
50
- style: [styles.optionDesc, {
51
- color: tokens.colors.optionDesc,
52
- marginTop: tokens.spacing.gap,
53
- fontSize: tokens.typography.optionDesc,
54
- paddingHorizontal: tokens.spacing.optionDescPaddingHorizontal
39
+ style: [S.o, ows]
40
+ }, p.interactionProps), /*#__PURE__*/React.createElement(View, {
41
+ style: [S.ic, is, {
42
+ marginHorizontal: t.spacing.iconMarginHorizontal
55
43
  }]
56
- }, option.description) : /*#__PURE__*/React.createElement(View, {
57
- style: [styles.optionDescNode, {
58
- marginTop: tokens.spacing.gap,
59
- paddingHorizontal: tokens.spacing.optionDescPaddingHorizontal
44
+ }, o.icon), isValidNode(o.name) && renderTextOrNode(o.name, [S.ot, {
45
+ color: t.colors.option,
46
+ fontSize: t.typography.option,
47
+ paddingHorizontal: t.spacing.optionTextPaddingHorizontal
48
+ }]), isValidNode(o.description) && (isText(o.description) ? renderTextOrNode(o.description, [S.od, {
49
+ color: t.colors.optionDesc,
50
+ marginTop: t.spacing.gap,
51
+ fontSize: t.typography.optionDesc,
52
+ paddingHorizontal: t.spacing.optionDescPaddingHorizontal
53
+ }]) : /*#__PURE__*/React.createElement(View, {
54
+ style: [S.odn, {
55
+ marginTop: t.spacing.gap,
56
+ paddingHorizontal: t.spacing.optionDescPaddingHorizontal
60
57
  }]
61
- }, option.description) : null);
58
+ }, o.description)));
62
59
  });
63
60
  const ShareSheetCancel = /*#__PURE__*/React.memo(({
64
- cancelText,
65
- tokens,
66
- onPress
61
+ cancelText: ct,
62
+ tokens: t,
63
+ onPress: op
67
64
  }) => {
68
- const cancelPress = useAriaPress({
69
- onPress,
65
+ const cp = useAriaPress({
66
+ onPress: op,
70
67
  extraProps: {
71
68
  testID: 'rv-share-sheet-cancel',
72
69
  accessibilityRole: 'button'
@@ -74,27 +71,26 @@ const ShareSheetCancel = /*#__PURE__*/React.memo(({
74
71
  });
75
72
  return /*#__PURE__*/React.createElement(View, {
76
73
  style: {
77
- backgroundColor: tokens.colors.divider
74
+ backgroundColor: t.colors.divider
78
75
  }
79
76
  }, /*#__PURE__*/React.createElement(Pressable, _extends({
80
- style: [styles.cancel, {
81
- backgroundColor: tokens.colors.background,
82
- paddingVertical: tokens.spacing.cancelPaddingVertical,
83
- marginTop: tokens.spacing.cancelMarginTop
77
+ style: [S.c, {
78
+ backgroundColor: t.colors.background,
79
+ paddingVertical: t.spacing.cancelPaddingVertical,
80
+ marginTop: t.spacing.cancelMarginTop
84
81
  }]
85
- }, cancelPress.interactionProps), isText(cancelText) ? /*#__PURE__*/React.createElement(Text, {
86
- style: [styles.cancelText, {
87
- color: tokens.colors.option,
88
- fontSize: tokens.typography.cancel
89
- }]
90
- }, cancelText) : cancelText));
82
+ }, cp.interactionProps), renderTextOrNode(ct, [S.ct, {
83
+ color: t.colors.option,
84
+ fontSize: t.typography.cancel
85
+ }])));
91
86
  });
92
- const ShareSheet = props => {
87
+ const ShareSheetImpl = p => {
88
+ const locale = useLocale();
93
89
  const {
94
90
  visible,
95
91
  title,
96
92
  description,
97
- cancelText = '取消',
93
+ cancelText = locale?.vanShareSheet?.cancel ?? locale?.cancel ?? 'Cancel',
98
94
  options,
99
95
  columns = 4,
100
96
  closeOnSelect = true,
@@ -107,156 +103,159 @@ const ShareSheet = props => {
107
103
  lockScroll = true,
108
104
  overlay = true,
109
105
  round = true,
110
- style: popupStyle,
111
- placement: _placement,
112
- position: _position,
113
- ...popupProps
114
- } = props;
115
- const tokens = useShareSheetTokens(tokensOverride);
116
- const groups = useMemo(() => normalizeOptions(options), [options]);
117
- const resolvedColumns = useMemo(() => isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4, [columns]);
118
- const hasTitle = isValidNode(title);
119
- const hasDescription = isValidNode(description);
120
- const hasCancelText = isValidNode(cancelText);
121
- const close = useCallback(isCancel => {
122
- if (isCancel) onCancel?.();
123
- onClose?.();
124
- }, [onCancel, onClose]);
125
- const handleSelect = useCallback((option, index) => {
126
- onSelect?.(option, index);
127
- option.onPress?.(option);
128
- if (closeOnSelect) close();
129
- }, [close, closeOnSelect, onSelect]);
130
- const onPopupClose = useCallback(() => close(true), [close]);
131
- const wrapperStyle = useMemo(() => [styles.wrapper, {
132
- backgroundColor: tokens.colors.background
133
- }], [tokens.colors.background]);
134
- const groupRowStyle = useMemo(() => [styles.optionsRow, {
135
- paddingLeft: tokens.spacing.gap,
106
+ style: ps,
107
+ placement: _p,
108
+ position: _pos,
109
+ ...pp
110
+ } = p;
111
+ const t = useShareSheetTokens(tokensOverride);
112
+ const gs = no(options);
113
+ const rc = isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4;
114
+ const ht = isValidNode(title);
115
+ const hd = isValidNode(description);
116
+ const hc = isValidNode(cancelText);
117
+ const ocr = useRef(onCancel),
118
+ ocrr = useRef(onClose),
119
+ osr = useRef(onSelect);
120
+ ocr.current = onCancel;
121
+ ocrr.current = onClose;
122
+ osr.current = onSelect;
123
+ const cl = useCallback(ic => {
124
+ if (ic) ocr.current?.();
125
+ ocrr.current?.();
126
+ }, []);
127
+ const hs = useCallback((o, i) => {
128
+ osr.current?.(o, i);
129
+ o.onPress?.(o);
130
+ if (closeOnSelect) cl();
131
+ }, [cl, closeOnSelect]);
132
+ const opc = useCallback(() => cl(true), [cl]);
133
+ const ws = [S.w, {
134
+ backgroundColor: t.colors.background
135
+ }];
136
+ const grs = [S.or, {
137
+ paddingLeft: t.spacing.gap,
136
138
  paddingVertical: 12
137
- }], [tokens.spacing.gap]);
138
- const groupNodes = useMemo(() => {
139
- if (!groups.length) return null;
140
- let globalIndex = 0;
141
- return groups.map((group, groupIndex) => /*#__PURE__*/React.createElement(View, {
142
- key: groupIndex
143
- }, groupIndex ? /*#__PURE__*/React.createElement(View, {
139
+ }];
140
+ const gn = useMemo(() => {
141
+ if (!gs.length) return null;
142
+ let gi = 0;
143
+ return gs.map((g, gidx) => /*#__PURE__*/React.createElement(View, {
144
+ key: gidx
145
+ }, gidx > 0 && /*#__PURE__*/React.createElement(View, {
144
146
  style: createHairlineView({
145
147
  position: 'top',
146
- color: tokens.colors.border,
147
- left: tokens.spacing.horizontal,
148
- right: tokens.spacing.horizontal
148
+ color: t.colors.border,
149
+ left: t.spacing.horizontal,
150
+ right: t.spacing.horizontal
149
151
  })
150
- }) : null, /*#__PURE__*/React.createElement(View, {
151
- style: groupRowStyle
152
- }, group.map(option => {
153
- const currentIndex = globalIndex++;
152
+ }), /*#__PURE__*/React.createElement(View, {
153
+ style: grs
154
+ }, g.map(o => {
155
+ const ci = gi++;
154
156
  return /*#__PURE__*/React.createElement(ShareSheetOptionItem, {
155
- key: option.key ?? currentIndex,
156
- option: option,
157
- index: currentIndex,
158
- columns: resolvedColumns,
159
- tokens: tokens,
160
- onSelect: handleSelect
157
+ key: o.key ?? ci,
158
+ option: o,
159
+ index: ci,
160
+ columns: rc,
161
+ tokens: t,
162
+ onSelect: hs
161
163
  });
162
164
  }))));
163
- }, [groups, groupRowStyle, handleSelect, resolvedColumns, tokens]);
164
- const headerNode = useMemo(() => {
165
- if (!hasTitle && !hasDescription) return null;
165
+ }, [gs, grs, hs, rc, t]);
166
+ const hn = useMemo(() => {
167
+ if (!ht && !hd) return null;
166
168
  return /*#__PURE__*/React.createElement(View, {
167
- style: [styles.header, {
168
- paddingTop: tokens.spacing.headerPaddingTop,
169
- paddingHorizontal: tokens.spacing.headerPaddingHorizontal,
170
- paddingBottom: tokens.spacing.headerPaddingBottom
171
- }]
172
- }, hasTitle ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
173
- style: [styles.title, {
174
- color: tokens.colors.title,
175
- fontSize: tokens.typography.title,
176
- marginTop: tokens.spacing.titleMarginTop
177
- }]
178
- }, title) : /*#__PURE__*/React.createElement(View, {
179
- style: [styles.node, {
180
- marginTop: tokens.spacing.nodeMarginTop
169
+ style: [S.h, {
170
+ paddingTop: t.spacing.headerPaddingTop,
171
+ paddingHorizontal: t.spacing.headerPaddingHorizontal,
172
+ paddingBottom: t.spacing.headerPaddingBottom
181
173
  }]
182
- }, title) : null, hasDescription ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
183
- style: [styles.description, {
184
- color: tokens.colors.description,
185
- fontSize: tokens.typography.description,
186
- marginTop: tokens.spacing.descriptionMarginTop
174
+ }, ht && (isText(title) ? renderTextOrNode(title, [S.t, {
175
+ color: t.colors.title,
176
+ fontSize: t.typography.title,
177
+ marginTop: t.spacing.titleMarginTop
178
+ }]) : /*#__PURE__*/React.createElement(View, {
179
+ style: [S.n, {
180
+ marginTop: t.spacing.nodeMarginTop
187
181
  }]
188
- }, description) : /*#__PURE__*/React.createElement(View, {
189
- style: [styles.node, {
190
- marginTop: tokens.spacing.nodeMarginTop
182
+ }, title)), hd && (isText(description) ? renderTextOrNode(description, [S.d, {
183
+ color: t.colors.description,
184
+ fontSize: t.typography.description,
185
+ marginTop: t.spacing.descriptionMarginTop
186
+ }]) : /*#__PURE__*/React.createElement(View, {
187
+ style: [S.n, {
188
+ marginTop: t.spacing.nodeMarginTop
191
189
  }]
192
- }, description) : null);
193
- }, [description, hasDescription, hasTitle, title, tokens.colors.description, tokens.colors.title, tokens.spacing.descriptionMarginTop, tokens.spacing.headerPaddingBottom, tokens.spacing.headerPaddingHorizontal, tokens.spacing.headerPaddingTop, tokens.spacing.nodeMarginTop, tokens.spacing.titleMarginTop, tokens.typography.description, tokens.typography.title]);
194
- const popupStyleMemo = useMemo(() => [styles.popupOverride, {
195
- padding: tokens.spacing.popupPadding
196
- }, popupStyle], [popupStyle, tokens.spacing.popupPadding]);
197
- return /*#__PURE__*/React.createElement(Popup, _extends({}, popupProps, {
190
+ }, description)));
191
+ }, [description, hd, ht, title, t.colors.description, t.colors.title, t.spacing.descriptionMarginTop, t.spacing.headerPaddingBottom, t.spacing.headerPaddingHorizontal, t.spacing.headerPaddingTop, t.spacing.nodeMarginTop, t.spacing.titleMarginTop, t.typography.description, t.typography.title]);
192
+ const psm = [{
193
+ padding: t.spacing.popupPadding
194
+ }, ps];
195
+ return /*#__PURE__*/React.createElement(Popup, _extends({}, pp, {
198
196
  visible: visible,
199
197
  placement: "bottom",
200
198
  round: round,
201
199
  safeAreaInsetBottom: safeAreaInsetBottom,
202
200
  overlay: overlay,
203
201
  lockScroll: lockScroll,
204
- onClose: onPopupClose,
205
- style: popupStyleMemo
202
+ onClose: opc,
203
+ style: psm
206
204
  }), /*#__PURE__*/React.createElement(View, {
207
- style: wrapperStyle
208
- }, headerNode, groupNodes, children, hasCancelText ? /*#__PURE__*/React.createElement(ShareSheetCancel, {
205
+ accessibilityRole: "menu",
206
+ style: ws
207
+ }, hn, gn, children, hc && /*#__PURE__*/React.createElement(ShareSheetCancel, {
209
208
  cancelText: cancelText,
210
- tokens: tokens,
211
- onPress: onPopupClose
212
- }) : null));
209
+ tokens: t,
210
+ onPress: opc
211
+ })));
213
212
  };
214
- const styles = StyleSheet.create({
215
- popupOverride: {},
216
- wrapper: {
213
+ const S = StyleSheet.create({
214
+ w: {
217
215
  width: '100%'
218
216
  },
219
- header: {
217
+ h: {
220
218
  alignItems: 'center'
221
219
  },
222
- title: {
220
+ t: {
223
221
  fontWeight: 'normal',
224
222
  textAlign: 'center'
225
223
  },
226
- description: {
224
+ d: {
227
225
  textAlign: 'center'
228
226
  },
229
- node: {
227
+ n: {
230
228
  alignItems: 'center'
231
229
  },
232
- optionsRow: {
230
+ or: {
233
231
  flexDirection: 'row',
234
232
  flexWrap: 'wrap'
235
233
  },
236
- option: {
234
+ o: {
237
235
  alignItems: 'center',
238
236
  justifyContent: 'center'
239
237
  },
240
- icon: {
238
+ ic: {
241
239
  alignItems: 'center',
242
240
  justifyContent: 'center'
243
241
  },
244
- optionText: {
242
+ ot: {
245
243
  fontWeight: '500',
246
244
  textAlign: 'center'
247
245
  },
248
- optionDesc: {
246
+ od: {
249
247
  textAlign: 'center'
250
248
  },
251
- optionDescNode: {
249
+ odn: {
252
250
  alignItems: 'center'
253
251
  },
254
- cancel: {
252
+ c: {
255
253
  alignItems: 'center'
256
254
  },
257
- cancelText: {
255
+ ct: {
258
256
  fontWeight: '500'
259
257
  }
260
258
  });
259
+ const ShareSheet = /*#__PURE__*/React.memo(ShareSheetImpl);
261
260
  ShareSheet.displayName = 'ShareSheet';
262
261
  export default ShareSheet;