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
@@ -26,10 +26,12 @@ function _reactNativeSystemIcon() {
26
26
  return data;
27
27
  }
28
28
  var _utils = require("../../utils");
29
+ var _validate = require("../../utils/validate");
30
+ var _useDirection = require("../config-provider/useDirection");
29
31
  var _tokens = require("./tokens");
30
32
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
31
33
  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); }
32
- const Tag = props => {
34
+ const TagImpl = props => {
33
35
  const {
34
36
  tokensOverride,
35
37
  children,
@@ -50,45 +52,46 @@ const Tag = props => {
50
52
  ...rest
51
53
  } = props;
52
54
  const tokens = (0, _tokens.useTagTokens)(tokensOverride);
55
+ const dir = (0, _useDirection.useDirection)();
53
56
  const type = typeProp ?? tokens.defaults.type;
54
57
  const size = sizeProp ?? tokens.defaults.size;
55
58
  const plain = plainProp ?? tokens.defaults.plain;
56
59
  const round = roundProp ?? tokens.defaults.round;
57
60
  const mark = markProp ?? tokens.defaults.mark;
58
61
  const show = showProp ?? tokens.defaults.show;
59
- if (!show) {
60
- return null;
61
- }
62
+ if (!show) return null;
62
63
  const tone = tokens.colors.toneMap[type] ?? tokens.colors.toneMap.default;
63
64
  const sizeTokens = tokens.sizing.sizes[size];
64
65
  const backgroundColor = plain ? tokens.colors.plainBackground : color ?? tone.background;
65
66
  const resolvedTextColor = textColor ?? (plain ? color ?? tone.background : tone.text);
66
67
  const borderColor = plain ? color ?? tone.background : 'transparent';
67
- const borderWidth = plain ? tokens.borders.width : 0;
68
68
  const borderRadius = round ? tokens.radii.round : sizeTokens.borderRadius;
69
- const containerStyle = [tokens.layout.container, {
70
- backgroundColor,
71
- paddingHorizontal: sizeTokens.paddingHorizontal,
72
- paddingVertical: sizeTokens.paddingVertical,
73
- borderRadius,
74
- borderWidth,
75
- borderColor
76
- }, mark ? {
69
+ const markRadii = mark ? dir === 'rtl' ? {
70
+ borderTopRightRadius: tokens.radii.markLeading,
71
+ borderBottomRightRadius: tokens.radii.markLeading,
72
+ borderTopLeftRadius: tokens.radii.round,
73
+ borderBottomLeftRadius: tokens.radii.round
74
+ } : {
77
75
  borderTopLeftRadius: tokens.radii.markLeading,
78
76
  borderBottomLeftRadius: tokens.radii.markLeading,
79
77
  borderTopRightRadius: tokens.radii.round,
80
78
  borderBottomRightRadius: tokens.radii.round
81
- } : null, style];
82
- const label = children == null || children === false ? null : (0, _utils.isText)(children) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
83
- style: [{
84
- color: resolvedTextColor,
85
- fontSize: sizeTokens.fontSize,
86
- lineHeight: sizeTokens.lineHeight,
87
- fontFamily: tokens.typography.fontFamily,
88
- fontWeight: tokens.typography.fontWeight
89
- }, textStyle]
90
- }, children) : children;
91
- const close = !closeable ? null : /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
79
+ } : null;
80
+ const resolvedRadius = mark ? tokens.radii.round : borderRadius;
81
+ const containerStyle = [tokens.layout.container, {
82
+ backgroundColor,
83
+ paddingHorizontal: sizeTokens.paddingHorizontal,
84
+ paddingVertical: sizeTokens.paddingVertical,
85
+ borderRadius
86
+ }, markRadii, style];
87
+ const label = !(0, _validate.isRenderable)(children) ? null : (0, _utils.renderTextOrNode)(children, [{
88
+ color: resolvedTextColor,
89
+ fontSize: sizeTokens.fontSize,
90
+ lineHeight: sizeTokens.lineHeight,
91
+ fontFamily: tokens.typography.fontFamily,
92
+ fontWeight: tokens.typography.fontWeight
93
+ }, textStyle].filter(Boolean));
94
+ const close = closeable && /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
92
95
  accessibilityRole: "button",
93
96
  hitSlop: tokens.spacing.closeHitSlop,
94
97
  style: [tokens.layout.close, {
@@ -102,20 +105,26 @@ const Tag = props => {
102
105
  color: resolvedTextColor,
103
106
  size: tokens.sizing.closeIconSize
104
107
  }));
105
- const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, label, close);
106
- if (onPress) {
107
- return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
108
- accessibilityRole: "button",
109
- onPress: onPress,
110
- style: ({
111
- pressed
112
- }) => [containerStyle, pressed && {
113
- opacity: tokens.defaults.pressedOpacity
114
- }]
115
- }, rest), content);
116
- }
108
+ const hairlineOverlay = plain ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
109
+ style: (0, _utils.createHairlineView)({
110
+ position: 'all',
111
+ color: borderColor,
112
+ borderRadius: resolvedRadius
113
+ })
114
+ }) : null;
115
+ const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, label, close, hairlineOverlay);
116
+ if (onPress) return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
117
+ accessibilityRole: "button",
118
+ onPress: onPress,
119
+ style: ({
120
+ pressed
121
+ }) => [containerStyle, pressed && {
122
+ opacity: tokens.defaults.pressedOpacity
123
+ }]
124
+ }, rest), content);
117
125
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({
118
126
  style: containerStyle
119
127
  }, rest), content);
120
128
  };
121
- exports.Tag = Tag;
129
+ const Tag = exports.Tag = /*#__PURE__*/_react().default.memo(TagImpl);
130
+ Tag.displayName = 'Tag';
@@ -30,12 +30,16 @@ function _reactNativeSystemIcon() {
30
30
  return data;
31
31
  }
32
32
  var _validate = require("../../utils/validate");
33
+ var _utils = require("../../utils");
33
34
  var _platform = require("../../platform");
35
+ var _animation = require("../../hooks/animation");
36
+ var _useLocale = require("../config-provider/useLocale");
34
37
  var _tokens = require("./tokens");
35
38
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
39
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
37
40
  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); }
38
- const ToastContent = props => {
41
+ const RT = () => true;
42
+ const ToastContentImpl = props => {
39
43
  const {
40
44
  visible,
41
45
  message,
@@ -60,25 +64,35 @@ const ToastContent = props => {
60
64
  onOpened,
61
65
  onClosed
62
66
  } = props;
67
+ const locale = (0, _useLocale.useLocale)();
63
68
  const tokens = (0, _tokens.useToastTokens)(tokensOverride);
69
+ const reducedMotion = (0, _animation.useReducedMotion)();
64
70
  const {
65
71
  colors
66
72
  } = tokens;
67
73
  const {
68
74
  height: windowHeight
69
75
  } = (0, _reactNative().useWindowDimensions)();
70
- const durationMs = (0, _validate.isFiniteNumber)(duration) ? Math.max(0, duration) : 0;
76
+ const resolvedDuration = (0, _validate.isFiniteNumber)(duration) ? Math.max(0, duration) : 0;
71
77
  const [mounted, setMounted] = (0, _react().useState)(visible);
72
- const animated = (0, _react().useRef)(new (_reactNative().Animated.Value)(visible ? 1 : 0)).current;
78
+ const animatedValue = (0, _react().useRef)(new (_reactNative().Animated.Value)(visible ? 1 : 0)).current;
73
79
  const animationRef = (0, _react().useRef)(null);
74
80
  const animationIdRef = (0, _react().useRef)(0);
81
+ const onCloseRef = (0, _react().useRef)(onClose);
82
+ onCloseRef.current = onClose;
83
+ const onOpenRef = (0, _react().useRef)(onOpen);
84
+ onOpenRef.current = onOpen;
85
+ const onOpenedRef = (0, _react().useRef)(onOpened);
86
+ onOpenedRef.current = onOpened;
87
+ const onClosedRef = (0, _react().useRef)(onClosed);
88
+ onClosedRef.current = onClosed;
75
89
  const {
76
90
  zIndex: stackZIndex
77
91
  } = (0, _hooks.useOverlayStack)({
78
92
  visible: mounted,
79
93
  type: 'toast'
80
94
  });
81
- const prevVisibleRef = (0, _react().useRef)(visible);
95
+ const previousVisibleRef = (0, _react().useRef)(visible);
82
96
  const closingRef = (0, _react().useRef)(false);
83
97
  const positionOffset = windowHeight > 0 ? Math.round(windowHeight * tokens.positionOffsetRatio) : tokens.positionOffsetMin;
84
98
  const needsSafeAreaTop = safeAreaInsetTopProp !== undefined ? safeAreaInsetTopProp : position === 'top';
@@ -96,21 +110,21 @@ const ToastContent = props => {
96
110
  animationIdRef.current += 1;
97
111
  const animationId = animationIdRef.current;
98
112
  animationRef.current?.stop();
99
- const durationValue = tokens.animationDuration;
113
+ const d = reducedMotion ? 0 : tokens.animationDuration;
100
114
  if (visible) {
101
115
  setMounted(true);
102
- animationRef.current = _reactNative().Animated.timing(animated, {
116
+ animationRef.current = _reactNative().Animated.timing(animatedValue, {
103
117
  toValue: 1,
104
- duration: durationValue,
118
+ duration: d,
105
119
  easing: _reactNative().Easing.out(_reactNative().Easing.cubic),
106
120
  useNativeDriver: _platform.nativeDriverEnabled,
107
121
  isInteraction: false
108
122
  });
109
123
  animationRef.current.start();
110
124
  } else {
111
- animationRef.current = _reactNative().Animated.timing(animated, {
125
+ animationRef.current = _reactNative().Animated.timing(animatedValue, {
112
126
  toValue: 0,
113
- duration: durationValue,
127
+ duration: d,
114
128
  easing: _reactNative().Easing.out(_reactNative().Easing.cubic),
115
129
  useNativeDriver: _platform.nativeDriverEnabled,
116
130
  isInteraction: false
@@ -122,63 +136,55 @@ const ToastContent = props => {
122
136
  setMounted(false);
123
137
  });
124
138
  }
125
- }, [animated, tokens.animationDuration, visible]);
139
+ }, [animatedValue, reducedMotion, tokens.animationDuration, visible]);
126
140
  (0, _react().useEffect)(() => () => {
127
141
  animationRef.current?.stop();
128
142
  }, []);
129
143
  (0, _react().useEffect)(() => {
130
- let timer = null;
131
- if (visible) {
132
- if (durationMs > 0) {
133
- timer = setTimeout(() => {
134
- onClose?.();
135
- }, durationMs);
136
- }
137
- }
138
- return () => {
139
- if (timer) clearTimeout(timer);
140
- };
141
- }, [durationMs, onClose, visible]);
144
+ if (!visible || resolvedDuration <= 0) return;
145
+ const timeout = setTimeout(() => {
146
+ onCloseRef.current?.();
147
+ }, resolvedDuration);
148
+ return () => clearTimeout(timeout);
149
+ }, [resolvedDuration, visible]);
142
150
  (0, _react().useEffect)(() => {
143
- if (!visible) return;
144
- if (!(0, _validate.isText)(message)) return;
151
+ if (!visible || !(0, _validate.isText)(message)) return;
145
152
  const text = String(message);
146
- if (!text) return;
147
- _reactNative().AccessibilityInfo.announceForAccessibility?.(text);
153
+ if (text) _reactNative().AccessibilityInfo.announceForAccessibility?.(text);
148
154
  }, [message, visible]);
155
+ const resolvedAnimDuration = reducedMotion ? 0 : tokens.animationDuration;
149
156
  (0, _react().useEffect)(() => {
150
- let openedTimer = null;
157
+ let openedTimeout = null;
151
158
  if (visible) {
152
159
  closingRef.current = false;
153
- if (!prevVisibleRef.current) {
154
- onOpen?.();
155
- if (onOpened) {
156
- openedTimer = setTimeout(onOpened, tokens.animationDuration);
160
+ if (!previousVisibleRef.current) {
161
+ onOpenRef.current?.();
162
+ if (onOpenedRef.current) {
163
+ const callback = onOpenedRef.current;
164
+ openedTimeout = setTimeout(callback, resolvedAnimDuration);
157
165
  }
158
166
  }
159
- } else if (prevVisibleRef.current) {
167
+ } else if (previousVisibleRef.current) {
160
168
  closingRef.current = true;
161
169
  }
162
- prevVisibleRef.current = visible;
170
+ previousVisibleRef.current = visible;
163
171
  return () => {
164
- if (openedTimer) clearTimeout(openedTimer);
172
+ if (openedTimeout) clearTimeout(openedTimeout);
165
173
  };
166
- }, [onOpen, onOpened, tokens.animationDuration, visible]);
174
+ }, [resolvedAnimDuration, visible]);
167
175
  (0, _react().useEffect)(() => {
168
176
  if (!mounted && closingRef.current) {
169
177
  closingRef.current = false;
170
- onClosed?.();
178
+ onClosedRef.current?.();
171
179
  }
172
- }, [mounted, onClosed]);
173
- const handleClose = (0, _react().useCallback)(() => {
174
- onClose?.();
175
- }, [onClose]);
176
- const toastPress = (0, _hooks.useAriaPress)({
180
+ }, [mounted]);
181
+ const handleClose = (0, _react().useRef)(() => onCloseRef.current?.()).current;
182
+ const pressProps = (0, _hooks.useAriaPress)({
177
183
  disabled: !closeOnClick,
178
184
  onPress: handleClose,
179
185
  extraProps: {
180
186
  accessibilityRole: closeOnClick ? 'button' : 'alert',
181
- accessibilityHint: closeOnClick ? '双击关闭提示' : undefined,
187
+ accessibilityHint: closeOnClick ? locale?.vanToast?.closeHint ?? 'Double-tap to dismiss' : undefined,
182
188
  accessibilityLiveRegion: 'assertive'
183
189
  }
184
190
  });
@@ -207,8 +213,16 @@ const ToastContent = props => {
207
213
  return null;
208
214
  }
209
215
  }, [colors.text, icon, iconSize, loadingIndicator, tokens.iconSize, type]);
210
- const isTextToast = type === 'info' && !iconNode;
211
- const boxStyle = (0, _react().useMemo)(() => isTextToast ? {
216
+ const iconWrapperStyle = (0, _react().useMemo)(() => ({
217
+ marginBottom: tokens.gap
218
+ }), [tokens.gap]);
219
+ const messageStyle = (0, _react().useMemo)(() => ({
220
+ color: colors.text,
221
+ fontSize: tokens.fontSize,
222
+ lineHeight: tokens.lineHeight
223
+ }), [colors.text, tokens.fontSize, tokens.lineHeight]);
224
+ const isTextOnly = type === 'info' && !iconNode;
225
+ const baseStyle = (0, _react().useMemo)(() => isTextOnly ? {
212
226
  minWidth: tokens.textMinWidth,
213
227
  minHeight: 0,
214
228
  paddingVertical: tokens.textPaddingVertical,
@@ -217,86 +231,72 @@ const ToastContent = props => {
217
231
  minWidth: tokens.defaultWidth,
218
232
  minHeight: tokens.defaultMinHeight,
219
233
  padding: tokens.defaultPadding
220
- }, [isTextToast, tokens.defaultMinHeight, tokens.defaultPadding, tokens.defaultWidth, tokens.textMinWidth, tokens.textPaddingHorizontal, tokens.textPaddingVertical]);
234
+ }, [isTextOnly, tokens.defaultMinHeight, tokens.defaultPadding, tokens.defaultWidth, tokens.textMinWidth, tokens.textPaddingHorizontal, tokens.textPaddingVertical]);
221
235
  const toastStyle = (0, _react().useMemo)(() => ({
222
236
  borderRadius: tokens.radius,
223
- opacity: closeOnClick && toastPress.states.pressed ? tokens.pressedOpacity : animated,
237
+ opacity: closeOnClick && pressProps.states.pressed ? tokens.pressedOpacity : animatedValue,
224
238
  backgroundColor: tokens.colors.variants[type],
225
239
  maxWidth: tokens.maxWidth,
226
- ...boxStyle
227
- }), [animated, boxStyle, closeOnClick, toastPress.states.pressed, tokens.colors.variants, tokens.maxWidth, tokens.pressedOpacity, tokens.radius, type]);
240
+ ...baseStyle
241
+ }), [animatedValue, baseStyle, closeOnClick, pressProps.states.pressed, tokens.colors.variants, tokens.maxWidth, tokens.pressedOpacity, tokens.radius, type]);
228
242
  if (!mounted) return null;
229
- const hasMessage = message !== undefined && message !== null && message !== false && message !== '';
243
+ const hasMessage = (0, _validate.isRenderable)(message) && (typeof message !== 'string' || message !== '');
230
244
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
231
- style: [styles.backdrop, {
245
+ style: [S.b, {
232
246
  backgroundColor: tokens.colors.transparent
233
247
  }, positionStyle, stackZIndex ? {
234
248
  zIndex: stackZIndex
235
249
  } : undefined],
236
250
  pointerEvents: forbidClick || overlay || closeOnClick ? 'auto' : 'none'
237
- }, overlay || forbidClick ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
251
+ }, (overlay || forbidClick) && /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
238
252
  testID: "rv-toast-overlay",
239
- style: [styles.overlay, {
253
+ style: [S.o, {
240
254
  backgroundColor: tokens.colors.transparent
241
255
  }, overlay && {
242
256
  backgroundColor: colors.backdrop
243
257
  }, overlayStyle],
244
258
  pointerEvents: "auto",
245
259
  onPress: overlay && closeOnClickOverlay ? handleClose : undefined,
246
- onStartShouldSetResponder: () => true,
247
- onMoveShouldSetResponder: () => true
248
- }) : null, needsSafeAreaTop && /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
260
+ onStartShouldSetResponder: RT,
261
+ onMoveShouldSetResponder: RT
262
+ }), needsSafeAreaTop && /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
249
263
  edge: "top",
250
264
  pointerEvents: "none"
251
265
  }), /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
252
266
  disabled: !closeOnClick
253
- }, toastPress.interactionProps), /*#__PURE__*/_react().default.createElement(_reactNative().Animated.View, {
254
- style: [styles.toast, toastStyle, style]
255
- }, iconNode ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
256
- style: {
257
- marginBottom: tokens.gap
258
- }
259
- }, iconNode) : null, hasMessage ? (0, _validate.isText)(message) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
260
- style: [styles.message, {
261
- color: colors.text,
262
- fontSize: tokens.fontSize,
263
- lineHeight: tokens.lineHeight
264
- }, textStyle]
265
- }, message) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
266
- style: {
267
- alignItems: 'center'
268
- }
269
- }, message) : null)), needsSafeAreaBottom && /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
267
+ }, pressProps.interactionProps), /*#__PURE__*/_react().default.createElement(_reactNative().Animated.View, {
268
+ renderToHardwareTextureAndroid: true,
269
+ shouldRasterizeIOS: true,
270
+ style: [S.t, toastStyle, style]
271
+ }, iconNode && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
272
+ style: iconWrapperStyle
273
+ }, iconNode), hasMessage && ((0, _validate.isText)(message) ? (0, _utils.renderTextOrNode)(message, [S.m, messageStyle, textStyle]) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
274
+ style: S.mw
275
+ }, message)))), needsSafeAreaBottom && /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
270
276
  edge: "bottom",
271
277
  pointerEvents: "none"
272
278
  }));
273
279
  };
274
- exports.ToastContent = ToastContent;
275
- const Toast = props => /*#__PURE__*/_react().default.createElement(_Portal.default, null, /*#__PURE__*/_react().default.createElement(ToastContent, props));
276
- exports.Toast = Toast;
277
- const styles = _reactNative().StyleSheet.create({
278
- backdrop: {
280
+ const ToastContent = exports.ToastContent = /*#__PURE__*/_react().default.memo(ToastContentImpl);
281
+ const ToastImpl = props => /*#__PURE__*/_react().default.createElement(_Portal.default, null, /*#__PURE__*/_react().default.createElement(ToastContent, props));
282
+ const Toast = exports.Toast = /*#__PURE__*/_react().default.memo(ToastImpl);
283
+ const S = _reactNative().StyleSheet.create({
284
+ b: {
279
285
  flex: 1,
280
- alignItems: 'center',
281
- ...(_reactNative().Platform.OS === 'web' ? {
282
- position: 'fixed',
283
- top: 0,
284
- left: 0,
285
- right: 0,
286
- bottom: 0
287
- } : {})
286
+ alignItems: 'center'
288
287
  },
289
- overlay: {
288
+ o: {
290
289
  ..._reactNative().StyleSheet.absoluteFillObject
291
290
  },
292
- toast: {
291
+ t: {
293
292
  alignItems: 'center',
294
293
  justifyContent: 'center'
295
294
  },
296
- message: {
295
+ m: {
297
296
  textAlign: 'center'
297
+ },
298
+ mw: {
299
+ alignItems: 'center'
298
300
  }
299
301
  });
300
- ToastContent.displayName = 'ToastContent';
301
- Toast.displayName = 'Toast';
302
302
  var _default = exports.default = Toast;
@@ -31,28 +31,18 @@ let currentOptions = {
31
31
  ...baseOptions
32
32
  };
33
33
  const typeDefaults = new Map();
34
- const parseOptions = input => {
35
- if (/*#__PURE__*/_react().default.isValidElement(input) || (0, _utils.isText)(input)) {
36
- return {
37
- message: input
38
- };
39
- }
40
- return input ?? {};
41
- };
34
+ const parseOptions = input => /*#__PURE__*/_react().default.isValidElement(input) || (0, _utils.isText)(input) ? {
35
+ message: input
36
+ } : input ?? {};
42
37
  const mergeOptions = (input, fallbackType) => {
43
38
  const type = input.type ?? fallbackType;
44
- const base = {
45
- ...currentOptions,
46
- ...typeDefaults.get(type)
47
- };
48
39
  const merged = {
49
- ...base,
40
+ ...currentOptions,
41
+ ...typeDefaults.get(type),
50
42
  ...input,
51
43
  type
52
44
  };
53
- if (merged.duration === undefined || merged.duration === null) {
54
- merged.duration = base.duration ?? 2000;
55
- }
45
+ if (merged.duration == null) merged.duration = currentOptions.duration ?? 2000;
56
46
  return merged;
57
47
  };
58
48
  const removeToast = key => {
@@ -62,12 +52,8 @@ const removeToast = key => {
62
52
  toastControllers.delete(key);
63
53
  };
64
54
  const closeToast = key => {
65
- const controller = toastControllers.get(key);
66
- if (controller) {
67
- controller.close();
68
- } else {
69
- removeToast(key);
70
- }
55
+ const c = toastControllers.get(key);
56
+ c ? c.close() : removeToast(key);
71
57
  };
72
58
  const ToastPortal = ({
73
59
  id,
@@ -98,9 +84,7 @@ const ToastPortal = ({
98
84
  };
99
85
  const showToast = (input, fallbackType = 'info') => {
100
86
  const opts = mergeOptions(parseOptions(input), fallbackType);
101
- if (!allowMultiple) {
102
- activeKeys.forEach(key => closeToast(key));
103
- }
87
+ if (!allowMultiple) activeKeys.forEach(key => closeToast(key));
104
88
  const key = _Portal.default.add(null);
105
89
  toastOptions.set(key, opts);
106
90
  _Portal.default.update(key, /*#__PURE__*/_react().default.createElement(ToastPortal, {
@@ -111,17 +95,14 @@ const showToast = (input, fallbackType = 'info') => {
111
95
  const config = next => {
112
96
  const prev = toastOptions.get(key);
113
97
  if (!prev) return;
114
- const nextInput = (0, _utils.isFunction)(next) ? next(prev) : next;
115
- const parsed = parseOptions(nextInput);
98
+ const parsed = parseOptions((0, _utils.isFunction)(next) ? next(prev) : next);
116
99
  const nextType = parsed.type ?? prev.type ?? fallbackType;
117
100
  const merged = {
118
101
  ...prev,
119
102
  ...parsed,
120
103
  type: nextType
121
104
  };
122
- if ('duration' in parsed && (parsed.duration === undefined || parsed.duration === null)) {
123
- merged.duration = typeDefaults.get(nextType)?.duration ?? currentOptions.duration ?? baseOptions.duration ?? 2000;
124
- }
105
+ if ('duration' in parsed && parsed.duration == null) merged.duration = typeDefaults.get(nextType)?.duration ?? currentOptions.duration ?? 2000;
125
106
  toastOptions.set(key, merged);
126
107
  _Portal.default.update(key, /*#__PURE__*/_react().default.createElement(ToastPortal, {
127
108
  id: key,
@@ -147,19 +128,13 @@ const ToastImperative = exports.ToastImperative = {
147
128
  allowMultiple = value;
148
129
  },
149
130
  setDefaultOptions: (typeOrOptions, options) => {
150
- if ((0, _utils.isString)(typeOrOptions)) {
151
- typeDefaults.set(typeOrOptions, options ?? {});
152
- } else {
153
- currentOptions = {
154
- ...currentOptions,
155
- ...typeOrOptions
156
- };
157
- }
131
+ if ((0, _utils.isString)(typeOrOptions)) typeDefaults.set(typeOrOptions, options ?? {});else currentOptions = {
132
+ ...currentOptions,
133
+ ...typeOrOptions
134
+ };
158
135
  },
159
136
  resetDefaultOptions: type => {
160
- if (type) {
161
- typeDefaults.delete(type);
162
- } else {
137
+ if (type) typeDefaults.delete(type);else {
163
138
  currentOptions = {
164
139
  ...baseOptions
165
140
  };
@@ -112,11 +112,9 @@ const TypographyTextBaseInner = /*#__PURE__*/_react().default.forwardRef((props,
112
112
  ellipsizeMode: "tail",
113
113
  onTextLayout: hasActionText && ellipsisRows && !expanded && !isWeb ? handleTextLayout : undefined
114
114
  }, textProps), children);
115
- if (!shouldShowAction) {
116
- return center ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
117
- style: tokens.layout.centerWrapper
118
- }, textNode) : textNode;
119
- }
115
+ if (!shouldShowAction) return center ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
116
+ style: tokens.layout.centerWrapper
117
+ }, textNode) : textNode;
120
118
  const actionNode = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
121
119
  style: tokens.layout.actionRow
122
120
  }, textNode, /*#__PURE__*/_react().default.createElement(_reactNative().Text, {