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
@@ -3,11 +3,13 @@ import React, { useCallback, useState } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { ArrowLeft } from 'react-native-system-icon';
5
5
  import { useAriaPress } from '../../hooks';
6
- import { createHairlineBorderBottom } from '../../utils/hairline';
7
- import { isRenderable, isText } from '../../utils/validate';
6
+ import { useLocale } from '../config-provider/useLocale';
7
+ import { useDirection } from '../config-provider/useDirection';
8
+ import { createHairlineView } from '../../utils/hairline';
9
+ import { isRenderable, isText, renderTextOrNode } from '../../utils';
8
10
  import { SafeAreaView } from '../safe-area-view';
9
11
  import { useNavBarTokens } from './tokens';
10
- const NavBarBase = props => {
12
+ const NavBarBaseImpl = props => {
11
13
  const {
12
14
  tokensOverride,
13
15
  title,
@@ -35,6 +37,8 @@ const NavBarBase = props => {
35
37
  style,
36
38
  ...rest
37
39
  } = props;
40
+ const locale = useLocale();
41
+ const dir = useDirection();
38
42
  const tokens = useNavBarTokens(tokensOverride);
39
43
  const leftArrow = leftArrowProp ?? tokens.defaults.leftArrow;
40
44
  const fixed = fixedProp ?? tokens.defaults.fixed;
@@ -54,14 +58,12 @@ const NavBarBase = props => {
54
58
  }, [enablePlaceholder]);
55
59
  const resolvedColor = tintColor ?? tokens.colors.text;
56
60
  const sideColor = tintColor ?? tokens.colors.icon;
57
- const leftAccessibilityLabel = isText(leftText) ? String(leftText) : '返回';
58
- const rightAccessibilityLabel = isText(rightText) ? String(rightText) : '操作';
59
61
  const leftPress = useAriaPress({
60
62
  disabled: !handlePressLeft,
61
63
  onPress: handlePressLeft,
62
64
  extraProps: {
63
65
  accessibilityRole: 'button',
64
- accessibilityLabel: leftAccessibilityLabel
66
+ accessibilityLabel: isText(leftText) ? `${leftText}` : locale?.vanNavBar?.back ?? 'Back'
65
67
  }
66
68
  });
67
69
  const rightPress = useAriaPress({
@@ -69,63 +71,40 @@ const NavBarBase = props => {
69
71
  onPress: handlePressRight,
70
72
  extraProps: {
71
73
  accessibilityRole: 'button',
72
- accessibilityLabel: rightAccessibilityLabel
74
+ accessibilityLabel: isText(rightText) ? `${rightText}` : locale?.vanNavBar?.action ?? 'Actions'
73
75
  }
74
76
  });
75
- const renderLeft = () => {
76
- const arrowNode = leftArrow === true ? /*#__PURE__*/React.createElement(ArrowLeft, {
77
+ const renderSide = side => {
78
+ const isLeft = side === 'left';
79
+ const sideText = isLeft ? leftText : rightText;
80
+ const sideIcon = isLeft ? leftIcon : rightIcon;
81
+ const press = isLeft ? leftPress : rightPress;
82
+ const handler = isLeft ? handlePressLeft : handlePressRight;
83
+ const arrowNode = isLeft ? leftArrow === true ? /*#__PURE__*/React.createElement(ArrowLeft, {
77
84
  size: 18,
78
85
  fill: sideColor,
79
- color: sideColor
80
- }) : isRenderable(leftArrow) && leftArrow;
81
- const hasAction = !!handlePressLeft || isRenderable(arrowNode) || isRenderable(leftText) || isRenderable(leftIcon);
82
- if (!hasAction) {
83
- return /*#__PURE__*/React.createElement(View, {
84
- style: tokens.layout.sidePlaceholder
85
- });
86
- }
87
- const content = /*#__PURE__*/React.createElement(React.Fragment, null, arrowNode, leftIcon, isRenderable(leftText) ? isText(leftText) ? /*#__PURE__*/React.createElement(Text, {
88
- numberOfLines: 1,
89
- style: [tokens.layout.sideText, {
90
- color: sideColor
91
- }]
92
- }, leftText) : leftText : null);
93
- if (!handlePressLeft) {
94
- return /*#__PURE__*/React.createElement(View, {
95
- testID: "rv-navbar-left",
96
- style: [tokens.layout.side, sideStyle]
97
- }, content);
98
- }
99
- return /*#__PURE__*/React.createElement(Pressable, _extends({
100
- hitSlop: {
101
- top: 8,
102
- right: 8,
103
- bottom: 8,
104
- left: 8
105
- },
106
- testID: "rv-navbar-left",
107
- style: [tokens.layout.side, sideStyle]
108
- }, leftPress.interactionProps), content);
109
- };
110
- const renderRight = () => {
111
- const hasAction = !!handlePressRight || isRenderable(rightText) || isRenderable(rightIcon);
112
- if (!hasAction) {
113
- return /*#__PURE__*/React.createElement(View, {
114
- style: tokens.layout.sidePlaceholder
115
- });
116
- }
117
- const content = /*#__PURE__*/React.createElement(React.Fragment, null, isRenderable(rightText) ? isText(rightText) ? /*#__PURE__*/React.createElement(Text, {
86
+ color: sideColor,
87
+ style: dir === 'rtl' ? {
88
+ transform: [{
89
+ scaleX: -1
90
+ }]
91
+ } : undefined
92
+ }) : isRenderable(leftArrow) && leftArrow : null;
93
+ const hasAction = !!handler || isRenderable(arrowNode) || isRenderable(sideText) || isRenderable(sideIcon);
94
+ if (!hasAction) return /*#__PURE__*/React.createElement(View, {
95
+ style: tokens.layout.sidePlaceholder
96
+ });
97
+ const content = /*#__PURE__*/React.createElement(React.Fragment, null, arrowNode, sideIcon, isRenderable(sideText) ? isText(sideText) ? /*#__PURE__*/React.createElement(Text, {
118
98
  numberOfLines: 1,
119
99
  style: [tokens.layout.sideText, {
120
100
  color: sideColor
121
101
  }]
122
- }, rightText) : rightText : null, rightIcon);
123
- if (!handlePressRight) {
124
- return /*#__PURE__*/React.createElement(View, {
125
- testID: "rv-navbar-right",
126
- style: [tokens.layout.side, tokens.layout.rightAlign, sideStyle]
127
- }, content);
128
- }
102
+ }, sideText) : sideText : null);
103
+ const sideStyles = [tokens.layout.side, !isLeft && tokens.layout.rightAlign, sideStyle];
104
+ if (!handler) return /*#__PURE__*/React.createElement(View, {
105
+ testID: `rv-navbar-${side}`,
106
+ style: sideStyles
107
+ }, content);
129
108
  return /*#__PURE__*/React.createElement(Pressable, _extends({
130
109
  hitSlop: {
131
110
  top: 8,
@@ -133,51 +112,57 @@ const NavBarBase = props => {
133
112
  bottom: 8,
134
113
  left: 8
135
114
  },
136
- testID: "rv-navbar-right",
137
- style: [tokens.layout.side, tokens.layout.rightAlign, sideStyle]
138
- }, rightPress.interactionProps), content);
115
+ testID: `rv-navbar-${side}`,
116
+ style: sideStyles
117
+ }, press.interactionProps), content);
139
118
  };
140
119
  const centerContent = isRenderable(children) ? children : /*#__PURE__*/React.createElement(View, {
141
120
  style: tokens.layout.titleWrapper
142
- }, isRenderable(title) ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
143
- style: [tokens.layout.title, {
144
- color: resolvedColor,
145
- fontSize: tokens.typography.titleSize,
146
- fontWeight: tokens.typography.titleWeight
147
- }, titleStyle],
121
+ }, isRenderable(title) && renderTextOrNode(title, [tokens.layout.title, {
122
+ color: resolvedColor,
123
+ fontSize: tokens.typography.titleSize,
124
+ fontWeight: tokens.typography.titleWeight
125
+ }, titleStyle], {
148
126
  numberOfLines: 1
149
- }, title) : title : null, isRenderable(description) ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
150
- style: [tokens.layout.description, {
151
- color: tintColor ?? tokens.colors.description,
152
- fontSize: tokens.typography.descriptionSize
153
- }, descriptionStyle],
127
+ }), isRenderable(description) && renderTextOrNode(description, [tokens.layout.description, {
128
+ color: tintColor ?? tokens.colors.description,
129
+ fontSize: tokens.typography.descriptionSize
130
+ }, descriptionStyle], {
154
131
  numberOfLines: 1
155
- }, description) : description : null);
156
- const bar = /*#__PURE__*/React.createElement(View, {
132
+ }));
133
+ const navbarBar = /*#__PURE__*/React.createElement(View, {
157
134
  style: [tokens.layout.bar, {
158
135
  backgroundColor: background
159
- }, border ? createHairlineBorderBottom(tokens.colors.border) : null],
136
+ }],
160
137
  onLayout: safeAreaInsetTop ? undefined : handleLayout
161
- }, renderLeft(), /*#__PURE__*/React.createElement(View, {
138
+ }, renderSide('left'), /*#__PURE__*/React.createElement(View, {
162
139
  style: tokens.layout.center
163
- }, centerContent), renderRight());
164
- const wrapped = safeAreaInsetTop ? /*#__PURE__*/React.createElement(SafeAreaView, {
140
+ }, centerContent), renderSide('right'), border && /*#__PURE__*/React.createElement(View, {
141
+ style: createHairlineView({
142
+ position: 'bottom',
143
+ color: tokens.colors.border,
144
+ left: 0,
145
+ right: 0
146
+ })
147
+ }));
148
+ const wrappedBar = safeAreaInsetTop ? /*#__PURE__*/React.createElement(SafeAreaView, {
165
149
  onLayout: handleLayout,
166
150
  style: {
167
151
  backgroundColor: background
168
152
  }
169
- }, bar) : bar;
170
- const navContent = /*#__PURE__*/React.createElement(View, _extends({}, rest, {
171
- style: [tokens.layout.container, fixed && [tokens.layout.fixed, {
172
- zIndex
173
- }], style]
174
- }), wrapped);
175
- return /*#__PURE__*/React.createElement(React.Fragment, null, enablePlaceholder ? /*#__PURE__*/React.createElement(View, {
153
+ }, navbarBar) : navbarBar;
154
+ return /*#__PURE__*/React.createElement(React.Fragment, null, enablePlaceholder && /*#__PURE__*/React.createElement(View, {
176
155
  testID: "rv-navbar-placeholder",
177
156
  style: {
178
157
  height
179
158
  }
180
- }) : null, navContent);
159
+ }), /*#__PURE__*/React.createElement(View, _extends({}, rest, {
160
+ accessibilityRole: 'navigation',
161
+ style: [tokens.layout.container, fixed && [tokens.layout.fixed, {
162
+ zIndex
163
+ }], style]
164
+ }), wrappedBar));
181
165
  };
166
+ const NavBarBase = /*#__PURE__*/React.memo(NavBarBaseImpl);
182
167
  NavBarBase.displayName = 'NavBar';
183
168
  export default NavBarBase;
@@ -1,11 +1,9 @@
1
- import { Platform } from 'react-native';
2
1
  import { createComponentTokensHook } from '../../design-system';
3
2
  export const createNavBarTokens = ({
4
3
  palette,
5
4
  spacing,
6
5
  fontSize
7
6
  }) => {
8
- const fixedPosition = Platform.OS === 'web' ? 'fixed' : 'absolute';
9
7
  return {
10
8
  defaults: {
11
9
  fixed: false,
@@ -57,7 +55,7 @@ export const createNavBarTokens = ({
57
55
  includeFontPadding: false
58
56
  },
59
57
  fixed: {
60
- position: fixedPosition,
58
+ position: 'absolute',
61
59
  top: 0,
62
60
  left: 0,
63
61
  right: 0
@@ -3,19 +3,21 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
3
3
  import { Animated, Easing, Pressable, StyleSheet, Text, View, Platform } from 'react-native';
4
4
  import { Arrow, Close } from 'react-native-system-icon';
5
5
  import { useAriaPress } from '../../hooks';
6
+ import { useLocale } from '../config-provider/useLocale';
7
+ import { useDirection } from '../config-provider/useDirection';
6
8
  import { parseNumber } from '../../utils/number';
7
9
  import { isRenderable, isText } from '../../utils/validate';
10
+ import { renderTextOrNode } from '../../utils';
8
11
  import { nativeDriverEnabled } from '../../platform';
12
+ import { useReducedMotion } from '../../hooks/animation';
9
13
  import { useNoticeBarTokens } from './tokens';
10
14
  const AnimatedText = Animated.createAnimatedComponent(Text);
11
15
  const IS_WEB = Platform.OS === 'web';
12
16
  if (IS_WEB) {
13
17
  const globalObj = typeof globalThis !== 'undefined' ? globalThis : window;
14
- if (globalObj.global === undefined) {
15
- globalObj.global = globalObj;
16
- }
18
+ if (globalObj.global === undefined) globalObj.global = globalObj;
17
19
  }
18
- export const NoticeBar = props => {
20
+ const NoticeBarImpl = props => {
19
21
  const {
20
22
  text,
21
23
  children,
@@ -40,6 +42,9 @@ export const NoticeBar = props => {
40
42
  style,
41
43
  ...rest
42
44
  } = props;
45
+ const locale = useLocale();
46
+ const layoutDir = useDirection();
47
+ const reducedMotion = useReducedMotion();
43
48
  const tokens = useNoticeBarTokens(tokensOverride);
44
49
  const resolvedColor = color ?? tokens.colors.text;
45
50
  const resolvedBackground = background ?? tokens.colors.background;
@@ -65,7 +70,7 @@ export const NoticeBar = props => {
65
70
  if (childArray.length) return childArray;
66
71
  return text !== undefined ? [text] : [];
67
72
  }, [children, isVertical, items, text]);
68
- const hasVerticalLoop = isVertical && verticalItems.length > 1;
73
+ const hasVerticalLoop = !reducedMotion && isVertical && verticalItems.length > 1;
69
74
  const verticalTrackItems = useMemo(() => hasVerticalLoop ? [...verticalItems, verticalItems[0]] : verticalItems, [hasVerticalLoop, verticalItems]);
70
75
  const verticalTranslateY = useRef(new Animated.Value(0)).current;
71
76
  const [itemHeight, setItemHeight] = useState(0);
@@ -75,16 +80,20 @@ export const NoticeBar = props => {
75
80
  const setContainerWidthSafe = useCallback(next => {
76
81
  setContainerWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
77
82
  }, []);
83
+ const onCloseRef = useRef(onClose);
84
+ onCloseRef.current = onClose;
85
+ const onReplayRef = useRef(onReplay);
86
+ onReplayRef.current = onReplay;
78
87
  const handleClose = useCallback(() => {
79
88
  setVisible(false);
80
- onClose?.();
81
- }, [onClose]);
89
+ onCloseRef.current?.();
90
+ }, []);
82
91
  const closePress = useAriaPress({
83
92
  disabled: mode !== 'closeable' || !visible,
84
93
  onPress: handleClose,
85
94
  extraProps: {
86
95
  accessibilityRole: 'button',
87
- accessibilityLabel: '关闭'
96
+ accessibilityLabel: locale?.vanNoticeBar?.close ?? 'Close'
88
97
  }
89
98
  });
90
99
  const barPress = useAriaPress({
@@ -94,7 +103,7 @@ export const NoticeBar = props => {
94
103
  accessibilityRole: 'button'
95
104
  } : undefined
96
105
  });
97
- const rightNode = useMemo(() => mode === 'closeable' ? /*#__PURE__*/React.createElement(Pressable, _extends({
106
+ const rightNode = mode === 'closeable' ? /*#__PURE__*/React.createElement(Pressable, _extends({
98
107
  hitSlop: 8
99
108
  }, closePress.interactionProps), /*#__PURE__*/React.createElement(Close, {
100
109
  size: 16,
@@ -104,42 +113,36 @@ export const NoticeBar = props => {
104
113
  size: 16,
105
114
  fill: resolvedColor,
106
115
  color: resolvedColor
107
- }) : rightIcon || null, [closePress.interactionProps, mode, resolvedColor, rightIcon]);
116
+ }) : rightIcon || null;
108
117
  const hasLeft = isRenderable(leftIcon);
109
118
  const hasRight = Boolean(rightNode);
110
119
  const effectiveContainerWidth = Math.max(0, containerWidth - (hasLeft ? tokens.spacing.sidePadding : 0) - (hasRight ? tokens.spacing.sidePadding : 0));
111
- const shouldScroll = !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
120
+ const shouldScroll = !reducedMotion && !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
112
121
  useEffect(() => {
113
- if (!visible) {
114
- translateX.stopAnimation();
115
- return;
116
- }
117
- if (isVertical) {
122
+ if (!visible || isVertical) {
118
123
  translateX.stopAnimation();
119
124
  return;
120
125
  }
121
- if (!shouldScroll || contentWidth === 0 || containerWidth === 0) {
122
- translateX.setValue(0);
123
- return;
124
- }
125
- if (resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
126
+ if (!shouldScroll || contentWidth === 0 || containerWidth === 0 || resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
126
127
  translateX.setValue(0);
127
128
  return;
128
129
  }
129
130
  let cancelled = false;
130
131
  const duration = (contentWidth + containerWidth) / resolvedSpeed * 1000;
132
+ const rtlSign = layoutDir === 'rtl' ? -1 : 1;
131
133
  const run = initial => {
132
- translateX.setValue(initial ? 0 : containerWidth);
134
+ translateX.setValue(initial ? 0 : rtlSign * containerWidth);
133
135
  Animated.sequence([Animated.delay(resolvedDelay * 1000), Animated.timing(translateX, {
134
- toValue: -contentWidth,
136
+ toValue: -rtlSign * contentWidth,
135
137
  duration,
136
138
  easing: Easing.linear,
137
- useNativeDriver: nativeDriverEnabled
139
+ useNativeDriver: nativeDriverEnabled,
140
+ isInteraction: false
138
141
  })]).start(({
139
142
  finished
140
143
  }) => {
141
144
  if (finished && !cancelled) {
142
- onReplay?.();
145
+ onReplayRef.current?.();
143
146
  run(false);
144
147
  }
145
148
  });
@@ -149,7 +152,7 @@ export const NoticeBar = props => {
149
152
  cancelled = true;
150
153
  translateX.stopAnimation();
151
154
  };
152
- }, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, onReplay, isVertical]);
155
+ }, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, isVertical, layoutDir]);
153
156
  useEffect(() => {
154
157
  if (!visible) {
155
158
  verticalTranslateY.stopAnimation();
@@ -165,13 +168,15 @@ export const NoticeBar = props => {
165
168
  toValue: -itemHeight * i,
166
169
  duration: resolvedVerticalDuration,
167
170
  easing: Easing.linear,
168
- useNativeDriver: nativeDriverEnabled
171
+ useNativeDriver: nativeDriverEnabled,
172
+ isInteraction: false
169
173
  }));
170
174
  }
171
175
  steps.push(Animated.timing(verticalTranslateY, {
172
176
  toValue: 0,
173
177
  duration: 0,
174
- useNativeDriver: nativeDriverEnabled
178
+ useNativeDriver: nativeDriverEnabled,
179
+ isInteraction: false
175
180
  }));
176
181
  const loopAnimation = Animated.loop(Animated.sequence(steps));
177
182
  loopAnimation.start();
@@ -187,28 +192,22 @@ export const NoticeBar = props => {
187
192
  }, []);
188
193
  const verticalContentNode = useMemo(() => {
189
194
  if (!isVertical || verticalTrackItems.length === 0) return null;
190
- if (!hasVerticalLoop) {
191
- const single = verticalTrackItems[0];
192
- if (isText(single)) {
193
- return /*#__PURE__*/React.createElement(Text, _extends({
194
- onLayout: textOnLayout,
195
- style: [styles.text, {
196
- color: resolvedColor,
197
- fontSize: tokens.typography.fontSize
198
- }],
199
- numberOfLines: 1,
200
- ellipsizeMode: "tail"
201
- }, restTextProps), single);
202
- }
203
- return single;
204
- }
195
+ if (!hasVerticalLoop) return renderTextOrNode(verticalTrackItems[0], [S.text, {
196
+ color: resolvedColor,
197
+ fontSize: tokens.typography.fontSize
198
+ }], {
199
+ numberOfLines: 1,
200
+ ...restTextProps
201
+ });
205
202
  return /*#__PURE__*/React.createElement(View, {
206
- style: [styles.verticalViewport, itemHeight ? {
203
+ style: [S.vViewport, itemHeight ? {
207
204
  height: itemHeight
208
205
  } : undefined],
209
206
  pointerEvents: "none"
210
207
  }, /*#__PURE__*/React.createElement(Animated.View, {
211
- style: [styles.verticalTrack, {
208
+ renderToHardwareTextureAndroid: true,
209
+ shouldRasterizeIOS: true,
210
+ style: [S.vTrack, {
212
211
  transform: [{
213
212
  translateY: verticalTranslateY
214
213
  }]
@@ -216,16 +215,14 @@ export const NoticeBar = props => {
216
215
  }, verticalTrackItems.map((item, index) => /*#__PURE__*/React.createElement(View, {
217
216
  key: index,
218
217
  onLayout: index === 0 ? handleItemLayout : undefined,
219
- style: styles.verticalItem
220
- }, isText(item) ? /*#__PURE__*/React.createElement(Text, _extends({
221
- onLayout: textOnLayout,
222
- style: [styles.text, {
223
- color: resolvedColor,
224
- fontSize: tokens.typography.fontSize
225
- }],
218
+ style: S.vItem
219
+ }, renderTextOrNode(item, [S.text, {
220
+ color: resolvedColor,
221
+ fontSize: tokens.typography.fontSize
222
+ }], {
226
223
  numberOfLines: 1,
227
- ellipsizeMode: "tail"
228
- }, restTextProps), item) : item))));
224
+ ...restTextProps
225
+ })))));
229
226
  }, [handleItemLayout, hasVerticalLoop, isVertical, itemHeight, resolvedColor, restTextProps, textOnLayout, tokens.typography.fontSize, verticalTrackItems, verticalTranslateY]);
230
227
  const handleContainerLayout = useCallback(event => {
231
228
  setContainerWidthSafe(event.nativeEvent.layout.width);
@@ -235,11 +232,9 @@ export const NoticeBar = props => {
235
232
  textOnLayout?.(event);
236
233
  }, [setContentWidthSafe, textOnLayout]);
237
234
  const handleNodeLayout = useCallback(event => setContentWidthSafe(event.nativeEvent.layout.width), [setContentWidthSafe]);
238
- if (!visible) {
239
- return null;
240
- }
235
+ if (!visible) return null;
241
236
  return /*#__PURE__*/React.createElement(Pressable, _extends({
242
- style: [styles.container, {
237
+ style: [S.ctr, {
243
238
  backgroundColor: resolvedBackground,
244
239
  paddingHorizontal: tokens.spacing.paddingHorizontal,
245
240
  paddingVertical: wrapable ? tokens.spacing.wrapPaddingVertical : tokens.spacing.paddingVertical,
@@ -247,13 +242,13 @@ export const NoticeBar = props => {
247
242
  borderRadius: tokens.layout.radius
248
243
  }, style],
249
244
  disabled: barPress.states.disabled
250
- }, barPress.interactionProps, rest), hasLeft ? /*#__PURE__*/React.createElement(View, {
251
- style: [styles.sideSection, {
245
+ }, barPress.interactionProps, rest), hasLeft && /*#__PURE__*/React.createElement(View, {
246
+ style: [S.side, {
252
247
  minWidth: tokens.layout.sideMinWidth
253
248
  }]
254
- }, leftIcon) : null, /*#__PURE__*/React.createElement(View, {
249
+ }, leftIcon), /*#__PURE__*/React.createElement(View, {
255
250
  onLayout: handleContainerLayout,
256
- style: [styles.content, wrapable && styles.contentWrap, hasLeft && {
251
+ style: [S.content, wrapable && S.contentWrap, hasLeft && {
257
252
  paddingLeft: tokens.spacing.sidePadding
258
253
  }, hasRight && {
259
254
  paddingRight: tokens.spacing.sidePadding
@@ -261,7 +256,7 @@ export const NoticeBar = props => {
261
256
  pointerEvents: "none"
262
257
  }, isVertical ? verticalContentNode : shouldScroll ? isTextContent ? /*#__PURE__*/React.createElement(AnimatedText, _extends({
263
258
  onLayout: handleTextLayout,
264
- style: [styles.text, styles.scrollText, {
259
+ style: [S.text, S.scrollText, {
265
260
  color: resolvedColor,
266
261
  fontSize: tokens.typography.fontSize,
267
262
  transform: [{
@@ -273,34 +268,36 @@ export const NoticeBar = props => {
273
268
  ellipsizeMode: 'clip'
274
269
  }, restTextProps), content) : /*#__PURE__*/React.createElement(Animated.View, {
275
270
  onLayout: handleNodeLayout,
276
- style: [styles.text, {
271
+ renderToHardwareTextureAndroid: true,
272
+ shouldRasterizeIOS: true,
273
+ style: [S.text, {
277
274
  transform: [{
278
275
  translateX
279
276
  }]
280
277
  }]
281
278
  }, content) : isTextContent ? /*#__PURE__*/React.createElement(Text, _extends({
282
279
  onLayout: handleTextLayout,
283
- style: [styles.text, {
280
+ style: [S.text, {
284
281
  color: resolvedColor,
285
282
  fontSize: tokens.typography.fontSize
286
- }, wrapable && styles.wrapText],
283
+ }, wrapable && S.wrapText],
287
284
  numberOfLines: wrapable ? undefined : 1,
288
285
  ellipsizeMode: wrapable ? 'tail' : 'clip'
289
286
  }, restTextProps), content) : /*#__PURE__*/React.createElement(View, {
290
287
  onLayout: handleNodeLayout,
291
- style: [styles.text, wrapable && styles.wrapText]
292
- }, content)), rightNode ? /*#__PURE__*/React.createElement(View, {
293
- style: [styles.sideSection, {
288
+ style: [S.text, wrapable && S.wrapText]
289
+ }, content)), rightNode && /*#__PURE__*/React.createElement(View, {
290
+ style: [S.side, {
294
291
  minWidth: tokens.layout.sideMinWidth
295
292
  }]
296
- }, rightNode) : null);
293
+ }, rightNode));
297
294
  };
298
- const styles = StyleSheet.create({
299
- container: {
295
+ const S = StyleSheet.create({
296
+ ctr: {
300
297
  flexDirection: 'row',
301
298
  alignItems: 'center'
302
299
  },
303
- sideSection: {
300
+ side: {
304
301
  alignItems: 'center',
305
302
  justifyContent: 'center'
306
303
  },
@@ -326,17 +323,18 @@ const styles = StyleSheet.create({
326
323
  contentWrap: {
327
324
  flexDirection: 'column'
328
325
  },
329
- verticalViewport: {
326
+ vViewport: {
330
327
  width: '100%',
331
328
  overflow: 'hidden'
332
329
  },
333
- verticalTrack: {
330
+ vTrack: {
334
331
  flexDirection: 'column',
335
332
  width: '100%'
336
333
  },
337
- verticalItem: {
334
+ vItem: {
338
335
  width: '100%',
339
336
  justifyContent: 'center'
340
337
  }
341
338
  });
339
+ export const NoticeBar = /*#__PURE__*/React.memo(NoticeBarImpl);
342
340
  NoticeBar.displayName = 'NoticeBar';