react-native-system-ui 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/README.md +44 -24
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +1 -297
  3. package/dist/cjs/components/action-sheet/index.js +1 -16
  4. package/dist/cjs/components/action-sheet/tokens.js +1 -133
  5. package/dist/cjs/components/area/Area.js +1 -127
  6. package/dist/cjs/components/area/index.js +1 -9
  7. package/dist/cjs/components/area/tokens.js +1 -14
  8. package/dist/cjs/components/avatar/Avatar.js +1 -125
  9. package/dist/cjs/components/avatar/index.js +1 -18
  10. package/dist/cjs/components/avatar/tokens.js +1 -56
  11. package/dist/cjs/components/badge/Badge.js +1 -166
  12. package/dist/cjs/components/badge/index.js +1 -8
  13. package/dist/cjs/components/badge/tokens.js +1 -81
  14. package/dist/cjs/components/button/Button.js +1 -203
  15. package/dist/cjs/components/button/ButtonContext.js +1 -12
  16. package/dist/cjs/components/button/ButtonGroup.js +1 -65
  17. package/dist/cjs/components/button/index.js +1 -12
  18. package/dist/cjs/components/button/tokens.js +1 -176
  19. package/dist/cjs/components/calendar/Calendar.js +1 -452
  20. package/dist/cjs/components/calendar/index.js +1 -9
  21. package/dist/cjs/components/calendar/tokens.js +1 -129
  22. package/dist/cjs/components/cascader/Cascader.js +1 -481
  23. package/dist/cjs/components/cascader/index.js +1 -15
  24. package/dist/cjs/components/cascader/tokens.js +1 -138
  25. package/dist/cjs/components/cascader/useCascaderExtend.js +1 -39
  26. package/dist/cjs/components/cell/Cell.js +1 -181
  27. package/dist/cjs/components/cell/CellContext.js +1 -19
  28. package/dist/cjs/components/cell/CellGroup.js +1 -100
  29. package/dist/cjs/components/cell/index.js +1 -19
  30. package/dist/cjs/components/cell/tokens.js +1 -173
  31. package/dist/cjs/components/checkbox/Checkbox.js +1 -251
  32. package/dist/cjs/components/checkbox/CheckboxContext.js +1 -12
  33. package/dist/cjs/components/checkbox/CheckboxGroup.js +1 -148
  34. package/dist/cjs/components/checkbox/index.js +1 -16
  35. package/dist/cjs/components/checkbox/tokens.js +1 -97
  36. package/dist/cjs/components/circle/Circle.js +1 -212
  37. package/dist/cjs/components/circle/index.js +1 -9
  38. package/dist/cjs/components/circle/tokens.js +1 -55
  39. package/dist/cjs/components/collapse/Collapse.js +1 -311
  40. package/dist/cjs/components/collapse/index.js +1 -8
  41. package/dist/cjs/components/collapse/tokens.js +1 -81
  42. package/dist/cjs/components/config-provider/ConfigProvider.js +1 -44
  43. package/dist/cjs/components/config-provider/DirectionContext.js +1 -15
  44. package/dist/cjs/components/config-provider/LocaleContext.js +1 -16
  45. package/dist/cjs/components/config-provider/index.js +1 -40
  46. package/dist/cjs/components/config-provider/locale/en-US.js +1 -112
  47. package/dist/cjs/components/config-provider/locale/zh-CN.js +1 -112
  48. package/dist/cjs/components/config-provider/tokens.js +1 -11
  49. package/dist/cjs/components/config-provider/useDirection.js +1 -16
  50. package/dist/cjs/components/config-provider/useLocale.js +1 -16
  51. package/dist/cjs/components/count-down/CountDown.js +1 -88
  52. package/dist/cjs/components/count-down/index.js +1 -15
  53. package/dist/cjs/components/count-down/tokens.js +1 -34
  54. package/dist/cjs/components/datetime-picker/DatetimePicker.js +1 -319
  55. package/dist/cjs/components/datetime-picker/index.js +1 -9
  56. package/dist/cjs/components/datetime-picker/tokens.js +1 -22
  57. package/dist/cjs/components/dialog/Dialog.js +1 -433
  58. package/dist/cjs/components/dialog/imperative.js +1 -199
  59. package/dist/cjs/components/dialog/index.js +1 -23
  60. package/dist/cjs/components/dialog/tokens.js +1 -64
  61. package/dist/cjs/components/divider/Divider.js +1 -126
  62. package/dist/cjs/components/divider/index.js +1 -8
  63. package/dist/cjs/components/divider/tokens.js +1 -62
  64. package/dist/cjs/components/empty/Empty.js +1 -125
  65. package/dist/cjs/components/empty/index.js +1 -8
  66. package/dist/cjs/components/empty/tokens.js +1 -55
  67. package/dist/cjs/components/error-boundary/ErrorBoundary.js +1 -74
  68. package/dist/cjs/components/error-boundary/index.js +1 -19
  69. package/dist/cjs/components/field/Field.js +1 -565
  70. package/dist/cjs/components/field/index.js +1 -29
  71. package/dist/cjs/components/field/tokens.js +1 -150
  72. package/dist/cjs/components/flex/Flex.js +1 -85
  73. package/dist/cjs/components/flex/FlexContext.js +1 -12
  74. package/dist/cjs/components/flex/FlexItem.js +1 -95
  75. package/dist/cjs/components/flex/index.js +1 -19
  76. package/dist/cjs/components/flex/tokens.js +1 -21
  77. package/dist/cjs/components/form/Form.js +1 -340
  78. package/dist/cjs/components/form/FormContext.js +1 -12
  79. package/dist/cjs/components/form/FormItem.js +1 -151
  80. package/dist/cjs/components/form/FormList.js +1 -95
  81. package/dist/cjs/components/form/index.js +1 -50
  82. package/dist/cjs/components/form/tokens.js +1 -14
  83. package/dist/cjs/components/form/utils.js +1 -56
  84. package/dist/cjs/components/grid/Grid.js +1 -118
  85. package/dist/cjs/components/grid/GridContext.js +1 -12
  86. package/dist/cjs/components/grid/GridItem.js +1 -158
  87. package/dist/cjs/components/grid/index.js +1 -12
  88. package/dist/cjs/components/grid/tokens.js +1 -105
  89. package/dist/cjs/components/image/Image.js +1 -263
  90. package/dist/cjs/components/image/index.js +1 -16
  91. package/dist/cjs/components/image/tokens.js +1 -66
  92. package/dist/cjs/components/image-preview/ImagePreview.js +1 -398
  93. package/dist/cjs/components/image-preview/imperative.js +1 -72
  94. package/dist/cjs/components/image-preview/index.js +1 -17
  95. package/dist/cjs/components/image-preview/tokens.js +1 -43
  96. package/dist/cjs/components/index.js +1 -769
  97. package/dist/cjs/components/input/Input.js +1 -122
  98. package/dist/cjs/components/input/index.js +1 -15
  99. package/dist/cjs/components/input/tokens.js +1 -22
  100. package/dist/cjs/components/loading/Loading.js +1 -76
  101. package/dist/cjs/components/loading/index.js +1 -8
  102. package/dist/cjs/components/loading/tokens.js +1 -32
  103. package/dist/cjs/components/nav-bar/NavBar.js +1 -196
  104. package/dist/cjs/components/nav-bar/index.js +1 -16
  105. package/dist/cjs/components/nav-bar/tokens.js +1 -90
  106. package/dist/cjs/components/notice-bar/NoticeBar.js +1 -369
  107. package/dist/cjs/components/notice-bar/index.js +1 -8
  108. package/dist/cjs/components/notice-bar/tokens.js +1 -39
  109. package/dist/cjs/components/notify/Notify.js +1 -262
  110. package/dist/cjs/components/notify/imperative.js +1 -145
  111. package/dist/cjs/components/notify/index.js +1 -10
  112. package/dist/cjs/components/notify/tokens.js +1 -74
  113. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +1 -487
  114. package/dist/cjs/components/number-keyboard/index.js +1 -15
  115. package/dist/cjs/components/number-keyboard/tokens.js +1 -59
  116. package/dist/cjs/components/overlay/Overlay.js +1 -81
  117. package/dist/cjs/components/overlay/index.js +1 -28
  118. package/dist/cjs/components/overlay/tokens.js +1 -13
  119. package/dist/cjs/components/password-input/PasswordInput.js +1 -346
  120. package/dist/cjs/components/password-input/index.js +1 -13
  121. package/dist/cjs/components/password-input/tokens.js +1 -53
  122. package/dist/cjs/components/picker/Picker.js +1 -1056
  123. package/dist/cjs/components/picker/index.js +1 -15
  124. package/dist/cjs/components/picker/tokens.js +1 -53
  125. package/dist/cjs/components/popup/Popup.js +1 -518
  126. package/dist/cjs/components/popup/index.js +1 -15
  127. package/dist/cjs/components/popup/tokens.js +1 -62
  128. package/dist/cjs/components/portal/Portal.js +1 -50
  129. package/dist/cjs/components/portal/PortalContext.js +1 -15
  130. package/dist/cjs/components/portal/PortalHost.js +1 -253
  131. package/dist/cjs/components/portal/index.js +1 -25
  132. package/dist/cjs/components/portal/tokens.js +1 -11
  133. package/dist/cjs/components/progress/Progress.js +1 -216
  134. package/dist/cjs/components/progress/index.js +1 -14
  135. package/dist/cjs/components/progress/tokens.js +1 -52
  136. package/dist/cjs/components/radio/Radio.js +1 -245
  137. package/dist/cjs/components/radio/RadioContext.js +1 -12
  138. package/dist/cjs/components/radio/RadioGroup.js +1 -113
  139. package/dist/cjs/components/radio/index.js +1 -16
  140. package/dist/cjs/components/radio/tokens.js +1 -92
  141. package/dist/cjs/components/safe-area-view/SafeAreaView.js +1 -59
  142. package/dist/cjs/components/safe-area-view/index.js +1 -12
  143. package/dist/cjs/components/safe-area-view/tokens.js +1 -11
  144. package/dist/cjs/components/search/Search.js +1 -215
  145. package/dist/cjs/components/search/index.js +1 -15
  146. package/dist/cjs/components/search/tokens.js +1 -54
  147. package/dist/cjs/components/selector/Selector.js +1 -185
  148. package/dist/cjs/components/selector/index.js +1 -15
  149. package/dist/cjs/components/selector/tokens.js +1 -100
  150. package/dist/cjs/components/share-sheet/ShareSheet.js +1 -286
  151. package/dist/cjs/components/share-sheet/index.js +1 -16
  152. package/dist/cjs/components/share-sheet/tokens.js +1 -55
  153. package/dist/cjs/components/sidebar/Sidebar.js +1 -103
  154. package/dist/cjs/components/sidebar/SidebarContext.js +1 -17
  155. package/dist/cjs/components/sidebar/SidebarItem.js +1 -103
  156. package/dist/cjs/components/sidebar/index.js +1 -26
  157. package/dist/cjs/components/sidebar/tokens.js +1 -93
  158. package/dist/cjs/components/skeleton/Skeleton.js +1 -162
  159. package/dist/cjs/components/skeleton/index.js +1 -22
  160. package/dist/cjs/components/skeleton/tokens.js +1 -39
  161. package/dist/cjs/components/slider/Slider.js +1 -633
  162. package/dist/cjs/components/slider/index.js +1 -8
  163. package/dist/cjs/components/slider/tokens.js +1 -37
  164. package/dist/cjs/components/space/Space.js +1 -134
  165. package/dist/cjs/components/space/index.js +1 -18
  166. package/dist/cjs/components/space/tokens.js +1 -39
  167. package/dist/cjs/components/stepper/Stepper.js +1 -484
  168. package/dist/cjs/components/stepper/index.js +1 -15
  169. package/dist/cjs/components/stepper/tokens.js +1 -60
  170. package/dist/cjs/components/swiper/Swiper.js +1 -364
  171. package/dist/cjs/components/swiper/SwiperItem.js +1 -12
  172. package/dist/cjs/components/swiper/SwiperPagIndicator.js +1 -106
  173. package/dist/cjs/components/swiper/index.js +1 -40
  174. package/dist/cjs/components/swiper/tokens.js +1 -18
  175. package/dist/cjs/components/switch/Switch.js +1 -102
  176. package/dist/cjs/components/switch/index.js +1 -15
  177. package/dist/cjs/components/switch/tokens.js +1 -31
  178. package/dist/cjs/components/tabbar/Tabbar.js +1 -149
  179. package/dist/cjs/components/tabbar/TabbarContext.js +1 -17
  180. package/dist/cjs/components/tabbar/TabbarItem.js +1 -153
  181. package/dist/cjs/components/tabbar/index.js +1 -25
  182. package/dist/cjs/components/tabbar/tokens.js +1 -41
  183. package/dist/cjs/components/tabs/Tabs.js +1 -860
  184. package/dist/cjs/components/tabs/index.js +1 -25
  185. package/dist/cjs/components/tabs/tokens.js +1 -111
  186. package/dist/cjs/components/tag/Tag.js +1 -130
  187. package/dist/cjs/components/tag/index.js +1 -8
  188. package/dist/cjs/components/tag/tokens.js +1 -104
  189. package/dist/cjs/components/toast/Toast.js +1 -303
  190. package/dist/cjs/components/toast/imperative.js +1 -144
  191. package/dist/cjs/components/toast/index.js +1 -10
  192. package/dist/cjs/components/toast/tokens.js +1 -43
  193. package/dist/cjs/components/typography/Typography.js +1 -181
  194. package/dist/cjs/components/typography/index.js +1 -9
  195. package/dist/cjs/components/typography/tokens.js +1 -88
  196. package/dist/cjs/components/water-mark/WaterMark.js +1 -172
  197. package/dist/cjs/components/water-mark/index.js +1 -22
  198. package/dist/cjs/components/water-mark/tokens.js +1 -54
  199. package/dist/cjs/design-system/Text.js +1 -38
  200. package/dist/cjs/design-system/ThemeContext.js +1 -19
  201. package/dist/cjs/design-system/ThemeProvider.js +1 -31
  202. package/dist/cjs/design-system/createComponentTokensHook.js +1 -28
  203. package/dist/cjs/design-system/index.js +1 -66
  204. package/dist/cjs/design-system/mergeTokensOverride.js +1 -9
  205. package/dist/cjs/design-system/presets.js +1 -146
  206. package/dist/cjs/design-system/tokens.js +1 -135
  207. package/dist/cjs/design-system/useTheme.js +1 -16
  208. package/dist/cjs/hooks/animation/index.js +1 -25
  209. package/dist/cjs/hooks/animation/useAnimatedTransition.js +1 -72
  210. package/dist/cjs/hooks/animation/useReducedMotion.js +1 -75
  211. package/dist/cjs/hooks/aria/index.js +1 -49
  212. package/dist/cjs/hooks/aria/useAriaListBox.js +1 -50
  213. package/dist/cjs/hooks/aria/useAriaOverlay.js +1 -50
  214. package/dist/cjs/hooks/aria/useAriaPress.js +1 -94
  215. package/dist/cjs/hooks/aria/useAriaToggle.js +1 -41
  216. package/dist/cjs/hooks/gesture/index.js +1 -16
  217. package/dist/cjs/hooks/gesture/useGestureScroll.js +1 -129
  218. package/dist/cjs/hooks/index.js +1 -96
  219. package/dist/cjs/hooks/overlay/OverlayStackStore.js +1 -106
  220. package/dist/cjs/hooks/overlay/index.js +1 -27
  221. package/dist/cjs/hooks/overlay/useOverlayStack.js +1 -53
  222. package/dist/cjs/hooks/useControllableValue.js +1 -41
  223. package/dist/cjs/hooks/useCountDown.js +1 -99
  224. package/dist/cjs/hooks/useHairline.js +1 -46
  225. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -38
  226. package/dist/cjs/index.js +1 -104
  227. package/dist/cjs/nativewind.js +1 -0
  228. package/dist/cjs/platform/animation.js +1 -22
  229. package/dist/cjs/platform/history.js +1 -14
  230. package/dist/cjs/platform/index.js +1 -60
  231. package/dist/cjs/platform/measure.js +1 -39
  232. package/dist/cjs/platform/runtime.js +1 -19
  233. package/dist/cjs/platform/scrollLock.js +1 -24
  234. package/dist/cjs/utils/array.js +1 -12
  235. package/dist/cjs/utils/color.js +1 -33
  236. package/dist/cjs/utils/compare.js +1 -21
  237. package/dist/cjs/utils/createPlatformShadow.js +1 -52
  238. package/dist/cjs/utils/date.js +1 -45
  239. package/dist/cjs/utils/deepMerge.js +1 -27
  240. package/dist/cjs/utils/hairline.js +1 -107
  241. package/dist/cjs/utils/index.js +1 -148
  242. package/dist/cjs/utils/number.js +1 -65
  243. package/dist/cjs/utils/promise.js +1 -9
  244. package/dist/cjs/utils/render.js +1 -21
  245. package/dist/cjs/utils/rtl.js +1 -25
  246. package/dist/cjs/utils/string.js +1 -22
  247. package/dist/cjs/utils/validate.js +1 -39
  248. package/dist/es/components/action-sheet/ActionSheet.js +1 -271
  249. package/dist/es/components/action-sheet/index.js +1 -3
  250. package/dist/es/components/action-sheet/tokens.js +1 -126
  251. package/dist/es/components/area/Area.js +1 -113
  252. package/dist/es/components/area/index.js +1 -2
  253. package/dist/es/components/area/tokens.js +1 -8
  254. package/dist/es/components/avatar/Avatar.js +1 -106
  255. package/dist/es/components/avatar/index.js +1 -1
  256. package/dist/es/components/avatar/tokens.js +1 -49
  257. package/dist/es/components/badge/Badge.js +1 -147
  258. package/dist/es/components/badge/index.js +1 -2
  259. package/dist/es/components/badge/tokens.js +1 -75
  260. package/dist/es/components/button/Button.js +1 -184
  261. package/dist/es/components/button/ButtonContext.js +1 -1
  262. package/dist/es/components/button/ButtonGroup.js +1 -46
  263. package/dist/es/components/button/index.js +1 -7
  264. package/dist/es/components/button/tokens.js +1 -170
  265. package/dist/es/components/calendar/Calendar.js +1 -432
  266. package/dist/es/components/calendar/index.js +1 -2
  267. package/dist/es/components/calendar/tokens.js +1 -122
  268. package/dist/es/components/cascader/Cascader.js +1 -455
  269. package/dist/es/components/cascader/index.js +1 -3
  270. package/dist/es/components/cascader/tokens.js +1 -131
  271. package/dist/es/components/cascader/useCascaderExtend.js +1 -32
  272. package/dist/es/components/cell/Cell.js +1 -156
  273. package/dist/es/components/cell/CellContext.js +1 -6
  274. package/dist/es/components/cell/CellGroup.js +1 -81
  275. package/dist/es/components/cell/index.js +1 -8
  276. package/dist/es/components/cell/tokens.js +1 -160
  277. package/dist/es/components/checkbox/Checkbox.js +1 -220
  278. package/dist/es/components/checkbox/CheckboxContext.js +1 -1
  279. package/dist/es/components/checkbox/CheckboxGroup.js +1 -117
  280. package/dist/es/components/checkbox/index.js +1 -5
  281. package/dist/es/components/checkbox/tokens.js +1 -85
  282. package/dist/es/components/circle/Circle.js +1 -187
  283. package/dist/es/components/circle/index.js +1 -2
  284. package/dist/es/components/circle/tokens.js +1 -48
  285. package/dist/es/components/collapse/Collapse.js +1 -286
  286. package/dist/es/components/collapse/index.js +1 -2
  287. package/dist/es/components/collapse/tokens.js +1 -74
  288. package/dist/es/components/config-provider/ConfigProvider.js +1 -25
  289. package/dist/es/components/config-provider/DirectionContext.js +1 -2
  290. package/dist/es/components/config-provider/LocaleContext.js +1 -3
  291. package/dist/es/components/config-provider/index.js +1 -5
  292. package/dist/es/components/config-provider/locale/en-US.js +1 -106
  293. package/dist/es/components/config-provider/locale/zh-CN.js +1 -106
  294. package/dist/es/components/config-provider/tokens.js +1 -5
  295. package/dist/es/components/config-provider/useDirection.js +1 -3
  296. package/dist/es/components/config-provider/useLocale.js +1 -3
  297. package/dist/es/components/count-down/CountDown.js +1 -69
  298. package/dist/es/components/count-down/index.js +1 -3
  299. package/dist/es/components/count-down/tokens.js +1 -27
  300. package/dist/es/components/datetime-picker/DatetimePicker.js +1 -305
  301. package/dist/es/components/datetime-picker/index.js +1 -2
  302. package/dist/es/components/datetime-picker/tokens.js +1 -16
  303. package/dist/es/components/dialog/Dialog.js +1 -407
  304. package/dist/es/components/dialog/imperative.js +1 -185
  305. package/dist/es/components/dialog/index.js +1 -17
  306. package/dist/es/components/dialog/tokens.js +1 -57
  307. package/dist/es/components/divider/Divider.js +1 -107
  308. package/dist/es/components/divider/index.js +1 -2
  309. package/dist/es/components/divider/tokens.js +1 -55
  310. package/dist/es/components/empty/Empty.js +1 -100
  311. package/dist/es/components/empty/index.js +1 -2
  312. package/dist/es/components/empty/tokens.js +1 -48
  313. package/dist/es/components/error-boundary/ErrorBoundary.js +1 -62
  314. package/dist/es/components/error-boundary/index.js +1 -1
  315. package/dist/es/components/field/Field.js +1 -539
  316. package/dist/es/components/field/index.js +1 -6
  317. package/dist/es/components/field/tokens.js +1 -138
  318. package/dist/es/components/flex/Flex.js +1 -66
  319. package/dist/es/components/flex/FlexContext.js +1 -1
  320. package/dist/es/components/flex/FlexItem.js +1 -76
  321. package/dist/es/components/flex/index.js +1 -8
  322. package/dist/es/components/flex/tokens.js +1 -15
  323. package/dist/es/components/form/Form.js +1 -319
  324. package/dist/es/components/form/FormContext.js +1 -1
  325. package/dist/es/components/form/FormItem.js +1 -138
  326. package/dist/es/components/form/FormList.js +1 -81
  327. package/dist/es/components/form/index.js +1 -13
  328. package/dist/es/components/form/tokens.js +1 -8
  329. package/dist/es/components/form/utils.js +1 -45
  330. package/dist/es/components/grid/Grid.js +1 -99
  331. package/dist/es/components/grid/GridContext.js +1 -1
  332. package/dist/es/components/grid/GridItem.js +1 -138
  333. package/dist/es/components/grid/index.js +1 -6
  334. package/dist/es/components/grid/tokens.js +1 -98
  335. package/dist/es/components/image/Image.js +1 -238
  336. package/dist/es/components/image/index.js +1 -3
  337. package/dist/es/components/image/tokens.js +1 -60
  338. package/dist/es/components/image-preview/ImagePreview.js +1 -378
  339. package/dist/es/components/image-preview/imperative.js +1 -58
  340. package/dist/es/components/image-preview/index.js +1 -11
  341. package/dist/es/components/image-preview/tokens.js +1 -37
  342. package/dist/es/components/index.js +1 -110
  343. package/dist/es/components/input/Input.js +1 -109
  344. package/dist/es/components/input/index.js +1 -3
  345. package/dist/es/components/input/tokens.js +1 -16
  346. package/dist/es/components/loading/Loading.js +1 -57
  347. package/dist/es/components/loading/index.js +1 -2
  348. package/dist/es/components/loading/tokens.js +1 -25
  349. package/dist/es/components/nav-bar/NavBar.js +1 -171
  350. package/dist/es/components/nav-bar/index.js +1 -3
  351. package/dist/es/components/nav-bar/tokens.js +1 -83
  352. package/dist/es/components/notice-bar/NoticeBar.js +1 -344
  353. package/dist/es/components/notice-bar/index.js +1 -2
  354. package/dist/es/components/notice-bar/tokens.js +1 -32
  355. package/dist/es/components/notify/Notify.js +1 -242
  356. package/dist/es/components/notify/imperative.js +1 -131
  357. package/dist/es/components/notify/index.js +1 -5
  358. package/dist/es/components/notify/tokens.js +1 -67
  359. package/dist/es/components/number-keyboard/NumberKeyboard.js +1 -467
  360. package/dist/es/components/number-keyboard/index.js +1 -3
  361. package/dist/es/components/number-keyboard/tokens.js +1 -53
  362. package/dist/es/components/overlay/Overlay.js +1 -50
  363. package/dist/es/components/overlay/index.js +1 -4
  364. package/dist/es/components/overlay/tokens.js +1 -7
  365. package/dist/es/components/password-input/PasswordInput.js +1 -327
  366. package/dist/es/components/password-input/index.js +1 -1
  367. package/dist/es/components/password-input/tokens.js +1 -41
  368. package/dist/es/components/picker/Picker.js +1 -1031
  369. package/dist/es/components/picker/index.js +1 -3
  370. package/dist/es/components/picker/tokens.js +1 -47
  371. package/dist/es/components/popup/Popup.js +1 -492
  372. package/dist/es/components/popup/index.js +1 -3
  373. package/dist/es/components/popup/tokens.js +1 -55
  374. package/dist/es/components/portal/Portal.js +1 -37
  375. package/dist/es/components/portal/PortalContext.js +1 -2
  376. package/dist/es/components/portal/PortalHost.js +1 -234
  377. package/dist/es/components/portal/index.js +1 -3
  378. package/dist/es/components/portal/tokens.js +1 -5
  379. package/dist/es/components/progress/Progress.js +1 -196
  380. package/dist/es/components/progress/index.js +1 -3
  381. package/dist/es/components/progress/tokens.js +1 -45
  382. package/dist/es/components/radio/Radio.js +1 -214
  383. package/dist/es/components/radio/RadioContext.js +1 -1
  384. package/dist/es/components/radio/RadioGroup.js +1 -82
  385. package/dist/es/components/radio/index.js +1 -5
  386. package/dist/es/components/radio/tokens.js +1 -80
  387. package/dist/es/components/safe-area-view/SafeAreaView.js +1 -40
  388. package/dist/es/components/safe-area-view/index.js +1 -1
  389. package/dist/es/components/safe-area-view/tokens.js +1 -5
  390. package/dist/es/components/search/Search.js +1 -189
  391. package/dist/es/components/search/index.js +1 -3
  392. package/dist/es/components/search/tokens.js +1 -48
  393. package/dist/es/components/selector/Selector.js +1 -166
  394. package/dist/es/components/selector/index.js +1 -3
  395. package/dist/es/components/selector/tokens.js +1 -88
  396. package/dist/es/components/share-sheet/ShareSheet.js +1 -266
  397. package/dist/es/components/share-sheet/index.js +1 -3
  398. package/dist/es/components/share-sheet/tokens.js +1 -49
  399. package/dist/es/components/sidebar/Sidebar.js +1 -84
  400. package/dist/es/components/sidebar/SidebarContext.js +1 -3
  401. package/dist/es/components/sidebar/SidebarItem.js +1 -84
  402. package/dist/es/components/sidebar/index.js +1 -8
  403. package/dist/es/components/sidebar/tokens.js +1 -80
  404. package/dist/es/components/skeleton/Skeleton.js +1 -143
  405. package/dist/es/components/skeleton/index.js +1 -4
  406. package/dist/es/components/skeleton/tokens.js +1 -33
  407. package/dist/es/components/slider/Slider.js +1 -596
  408. package/dist/es/components/slider/index.js +1 -2
  409. package/dist/es/components/slider/tokens.js +1 -31
  410. package/dist/es/components/space/Space.js +1 -115
  411. package/dist/es/components/space/index.js +1 -2
  412. package/dist/es/components/space/tokens.js +1 -32
  413. package/dist/es/components/stepper/Stepper.js +1 -465
  414. package/dist/es/components/stepper/index.js +1 -3
  415. package/dist/es/components/stepper/tokens.js +1 -54
  416. package/dist/es/components/swiper/Swiper.js +1 -344
  417. package/dist/es/components/swiper/SwiperItem.js +1 -1
  418. package/dist/es/components/swiper/SwiperPagIndicator.js +1 -87
  419. package/dist/es/components/swiper/index.js +1 -10
  420. package/dist/es/components/swiper/tokens.js +1 -12
  421. package/dist/es/components/switch/Switch.js +1 -83
  422. package/dist/es/components/switch/index.js +1 -3
  423. package/dist/es/components/switch/tokens.js +1 -25
  424. package/dist/es/components/tabbar/Tabbar.js +1 -130
  425. package/dist/es/components/tabbar/TabbarContext.js +1 -3
  426. package/dist/es/components/tabbar/TabbarItem.js +1 -133
  427. package/dist/es/components/tabbar/index.js +1 -7
  428. package/dist/es/components/tabbar/tokens.js +1 -35
  429. package/dist/es/components/tabs/Tabs.js +1 -841
  430. package/dist/es/components/tabs/index.js +1 -7
  431. package/dist/es/components/tabs/tokens.js +1 -105
  432. package/dist/es/components/tag/Tag.js +1 -105
  433. package/dist/es/components/tag/index.js +1 -2
  434. package/dist/es/components/tag/tokens.js +1 -97
  435. package/dist/es/components/toast/Toast.js +1 -277
  436. package/dist/es/components/toast/imperative.js +1 -130
  437. package/dist/es/components/toast/index.js +1 -5
  438. package/dist/es/components/toast/tokens.js +1 -36
  439. package/dist/es/components/typography/Typography.js +1 -162
  440. package/dist/es/components/typography/index.js +1 -2
  441. package/dist/es/components/typography/tokens.js +1 -82
  442. package/dist/es/components/water-mark/WaterMark.js +1 -153
  443. package/dist/es/components/water-mark/index.js +1 -4
  444. package/dist/es/components/water-mark/tokens.js +1 -42
  445. package/dist/es/design-system/Text.js +1 -19
  446. package/dist/es/design-system/ThemeContext.js +1 -6
  447. package/dist/es/design-system/ThemeProvider.js +1 -17
  448. package/dist/es/design-system/createComponentTokensHook.js +1 -15
  449. package/dist/es/design-system/index.js +1 -7
  450. package/dist/es/design-system/mergeTokensOverride.js +1 -2
  451. package/dist/es/design-system/presets.js +1 -139
  452. package/dist/es/design-system/tokens.js +1 -128
  453. package/dist/es/design-system/useTheme.js +1 -3
  454. package/dist/es/hooks/animation/index.js +1 -2
  455. package/dist/es/hooks/animation/useAnimatedTransition.js +1 -53
  456. package/dist/es/hooks/animation/useReducedMotion.js +1 -54
  457. package/dist/es/hooks/aria/index.js +1 -5
  458. package/dist/es/hooks/aria/useAriaListBox.js +1 -25
  459. package/dist/es/hooks/aria/useAriaOverlay.js +1 -25
  460. package/dist/es/hooks/aria/useAriaPress.js +1 -57
  461. package/dist/es/hooks/aria/useAriaToggle.js +1 -16
  462. package/dist/es/hooks/gesture/index.js +1 -2
  463. package/dist/es/hooks/gesture/useGestureScroll.js +1 -110
  464. package/dist/es/hooks/index.js +1 -8
  465. package/dist/es/hooks/overlay/OverlayStackStore.js +1 -93
  466. package/dist/es/hooks/overlay/index.js +1 -3
  467. package/dist/es/hooks/overlay/useOverlayStack.js +1 -40
  468. package/dist/es/hooks/useControllableValue.js +1 -29
  469. package/dist/es/hooks/useCountDown.js +1 -87
  470. package/dist/es/hooks/useHairline.js +1 -26
  471. package/dist/es/hooks/useSafeAreaPadding.js +1 -20
  472. package/dist/es/index.js +1 -11
  473. package/dist/es/nativewind.js +1 -0
  474. package/dist/es/platform/animation.js +1 -10
  475. package/dist/es/platform/history.js +1 -7
  476. package/dist/es/platform/index.js +1 -6
  477. package/dist/es/platform/measure.js +1 -32
  478. package/dist/es/platform/runtime.js +1 -4
  479. package/dist/es/platform/scrollLock.js +1 -16
  480. package/dist/es/types.js +1 -1
  481. package/dist/es/utils/array.js +1 -5
  482. package/dist/es/utils/color.js +1 -25
  483. package/dist/es/utils/compare.js +1 -13
  484. package/dist/es/utils/createPlatformShadow.js +1 -39
  485. package/dist/es/utils/date.js +1 -33
  486. package/dist/es/utils/deepMerge.js +1 -21
  487. package/dist/es/utils/hairline.js +1 -93
  488. package/dist/es/utils/index.js +1 -14
  489. package/dist/es/utils/number.js +1 -48
  490. package/dist/es/utils/promise.js +1 -2
  491. package/dist/es/utils/render.js +1 -7
  492. package/dist/es/utils/rtl.js +1 -17
  493. package/dist/es/utils/string.js +1 -13
  494. package/dist/es/utils/validate.js +1 -14
  495. package/dist/types/nativewind.d.ts +4 -0
  496. package/package.json +15 -3
@@ -1,344 +1 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
- import { Animated, Easing, Pressable, StyleSheet, Text, View, Platform } from 'react-native';
4
- import { Arrow, Close } from 'react-native-system-icon';
5
- import { useAriaPress } from '../../hooks';
6
- import { useLocale } from '../config-provider/useLocale';
7
- import { useDirection } from '../config-provider/useDirection';
8
- import { parseNumber } from '../../utils/number';
9
- import { isRenderable, isText } from '../../utils/validate';
10
- import { renderTextOrNode } from '../../utils';
11
- import { nativeDriverEnabled } from '../../platform';
12
- import { useReducedMotion } from '../../hooks/animation';
13
- import { useNoticeBarTokens } from './tokens';
14
- const AnimatedText = Animated.createAnimatedComponent(Text);
15
- const IS_WEB = Platform.OS === 'web';
16
- if (IS_WEB) {
17
- const globalObj = typeof globalThis !== 'undefined' ? globalThis : window;
18
- if (globalObj.global === undefined) globalObj.global = globalObj;
19
- }
20
- const NoticeBarImpl = props => {
21
- const {
22
- text,
23
- children,
24
- color,
25
- background,
26
- leftIcon,
27
- rightIcon,
28
- mode,
29
- tokensOverride,
30
- delay = 1,
31
- speed = 60,
32
- scrollable,
33
- wrapable = false,
34
- direction = 'horizontal',
35
- items,
36
- verticalInterval = 3000,
37
- verticalDuration = 300,
38
- onPress,
39
- onClose,
40
- onReplay,
41
- textProps,
42
- style,
43
- ...rest
44
- } = props;
45
- const locale = useLocale();
46
- const layoutDir = useDirection();
47
- const reducedMotion = useReducedMotion();
48
- const tokens = useNoticeBarTokens(tokensOverride);
49
- const resolvedColor = color ?? tokens.colors.text;
50
- const resolvedBackground = background ?? tokens.colors.background;
51
- const content = text ?? children;
52
- const isTextContent = isText(content);
53
- const isVertical = direction === 'vertical';
54
- const [visible, setVisible] = useState(true);
55
- const {
56
- onLayout: textOnLayout,
57
- ...restTextProps
58
- } = textProps ?? {};
59
- const [contentWidth, setContentWidth] = useState(0);
60
- const [containerWidth, setContainerWidth] = useState(0);
61
- const translateX = useRef(new Animated.Value(0)).current;
62
- const resolvedDelay = Math.max(0, parseNumber(delay, 1));
63
- const resolvedSpeed = parseNumber(speed, 60);
64
- const resolvedVerticalInterval = Math.max(0, parseNumber(verticalInterval, 3000));
65
- const resolvedVerticalDuration = Math.max(0, parseNumber(verticalDuration, 300));
66
- const verticalItems = useMemo(() => {
67
- if (!isVertical) return [];
68
- if (items && items.length) return items;
69
- const arr = React.Children.toArray(children);
70
- if (arr.length) return arr;
71
- return text !== undefined ? [text] : [];
72
- }, [children, isVertical, items, text]);
73
- const hasVerticalLoop = !reducedMotion && isVertical && verticalItems.length > 1;
74
- const verticalTrackItems = useMemo(() => hasVerticalLoop ? [...verticalItems, verticalItems[0]] : verticalItems, [hasVerticalLoop, verticalItems]);
75
- const verticalTranslateY = useRef(new Animated.Value(0)).current;
76
- const [itemHeight, setItemHeight] = useState(0);
77
- const setContentWidthSafe = useCallback(next => {
78
- setContentWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
79
- }, []);
80
- const setContainerWidthSafe = useCallback(next => {
81
- setContainerWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
82
- }, []);
83
- const onCloseRef = useRef(onClose);
84
- onCloseRef.current = onClose;
85
- const onReplayRef = useRef(onReplay);
86
- onReplayRef.current = onReplay;
87
- const handleClose = useCallback(() => {
88
- setVisible(false);
89
- onCloseRef.current?.();
90
- }, []);
91
- const closePress = useAriaPress({
92
- disabled: mode !== 'closeable' || !visible,
93
- onPress: handleClose,
94
- extraProps: {
95
- accessibilityRole: 'button',
96
- accessibilityLabel: locale?.vanNoticeBar?.close ?? 'Close'
97
- }
98
- });
99
- const barPress = useAriaPress({
100
- disabled: !onPress || !visible,
101
- onPress,
102
- extraProps: onPress ? {
103
- accessibilityRole: 'button'
104
- } : undefined
105
- });
106
- const rightNode = mode === 'closeable' ? /*#__PURE__*/React.createElement(Pressable, _extends({
107
- hitSlop: 8
108
- }, closePress.interactionProps), /*#__PURE__*/React.createElement(Close, {
109
- size: 16,
110
- fill: resolvedColor,
111
- color: resolvedColor
112
- })) : mode === 'link' ? /*#__PURE__*/React.createElement(Arrow, {
113
- size: 16,
114
- fill: resolvedColor,
115
- color: resolvedColor
116
- }) : rightIcon || null;
117
- const hasLeft = isRenderable(leftIcon);
118
- const hasRight = Boolean(rightNode);
119
- const effectiveContainerWidth = Math.max(0, containerWidth - (hasLeft ? tokens.spacing.sidePadding : 0) - (hasRight ? tokens.spacing.sidePadding : 0));
120
- const shouldScroll = !reducedMotion && !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
121
- useEffect(() => {
122
- if (!visible || isVertical) {
123
- translateX.stopAnimation();
124
- return;
125
- }
126
- if (!shouldScroll || contentWidth === 0 || containerWidth === 0 || resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
127
- translateX.setValue(0);
128
- return;
129
- }
130
- let cancelled = false;
131
- const duration = (contentWidth + containerWidth) / resolvedSpeed * 1000;
132
- const rtlSign = layoutDir === 'rtl' ? -1 : 1;
133
- const run = initial => {
134
- translateX.setValue(initial ? 0 : rtlSign * containerWidth);
135
- Animated.sequence([Animated.delay(resolvedDelay * 1000), Animated.timing(translateX, {
136
- toValue: -rtlSign * contentWidth,
137
- duration,
138
- easing: Easing.linear,
139
- useNativeDriver: nativeDriverEnabled,
140
- isInteraction: false
141
- })]).start(({
142
- finished
143
- }) => {
144
- if (finished && !cancelled) {
145
- onReplayRef.current?.();
146
- run(false);
147
- }
148
- });
149
- };
150
- run(true);
151
- return () => {
152
- cancelled = true;
153
- translateX.stopAnimation();
154
- };
155
- }, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, isVertical, layoutDir]);
156
- useEffect(() => {
157
- if (!visible) {
158
- verticalTranslateY.stopAnimation();
159
- return;
160
- }
161
- if (!hasVerticalLoop || itemHeight === 0) {
162
- verticalTranslateY.setValue(0);
163
- return;
164
- }
165
- const steps = [];
166
- for (let i = 1; i <= verticalItems.length; i += 1) {
167
- steps.push(Animated.delay(resolvedVerticalInterval), Animated.timing(verticalTranslateY, {
168
- toValue: -itemHeight * i,
169
- duration: resolvedVerticalDuration,
170
- easing: Easing.linear,
171
- useNativeDriver: nativeDriverEnabled,
172
- isInteraction: false
173
- }));
174
- }
175
- steps.push(Animated.timing(verticalTranslateY, {
176
- toValue: 0,
177
- duration: 0,
178
- useNativeDriver: nativeDriverEnabled,
179
- isInteraction: false
180
- }));
181
- const loopAnimation = Animated.loop(Animated.sequence(steps));
182
- loopAnimation.start();
183
- return () => {
184
- loopAnimation.stop();
185
- verticalTranslateY.stopAnimation();
186
- };
187
- }, [visible, hasVerticalLoop, itemHeight, resolvedVerticalDuration, resolvedVerticalInterval, verticalItems, verticalTranslateY]);
188
- const handleItemLayout = useCallback(event => {
189
- const height = event?.nativeEvent?.layout?.height;
190
- if (!height) return;
191
- setItemHeight(prev => prev === 0 || Math.abs(prev - height) >= 0.5 ? height : prev);
192
- }, []);
193
- const verticalContentNode = useMemo(() => {
194
- if (!isVertical || verticalTrackItems.length === 0) return null;
195
- if (!hasVerticalLoop) return renderTextOrNode(verticalTrackItems[0], [S.text, {
196
- color: resolvedColor,
197
- fontFamily: tokens.typography.fontFamily,
198
- fontSize: tokens.typography.fontSize
199
- }], {
200
- numberOfLines: 1,
201
- ...restTextProps
202
- });
203
- return /*#__PURE__*/React.createElement(View, {
204
- style: [S.vViewport, itemHeight ? {
205
- height: itemHeight
206
- } : undefined],
207
- pointerEvents: "none"
208
- }, /*#__PURE__*/React.createElement(Animated.View, {
209
- renderToHardwareTextureAndroid: true,
210
- shouldRasterizeIOS: true,
211
- style: [S.vTrack, {
212
- transform: [{
213
- translateY: verticalTranslateY
214
- }]
215
- }]
216
- }, verticalTrackItems.map((item, index) => /*#__PURE__*/React.createElement(View, {
217
- key: index,
218
- onLayout: index === 0 ? handleItemLayout : undefined,
219
- style: S.vItem
220
- }, renderTextOrNode(item, [S.text, {
221
- color: resolvedColor,
222
- fontFamily: tokens.typography.fontFamily,
223
- fontSize: tokens.typography.fontSize
224
- }], {
225
- numberOfLines: 1,
226
- ...restTextProps
227
- })))));
228
- }, [handleItemLayout, hasVerticalLoop, isVertical, itemHeight, resolvedColor, restTextProps, textOnLayout, tokens.typography.fontFamily, tokens.typography.fontSize, verticalTrackItems, verticalTranslateY]);
229
- const handleContainerLayout = useCallback(event => {
230
- setContainerWidthSafe(event.nativeEvent.layout.width);
231
- }, [setContainerWidthSafe]);
232
- const handleTextLayout = useCallback(event => {
233
- setContentWidthSafe(event.nativeEvent.layout.width);
234
- textOnLayout?.(event);
235
- }, [setContentWidthSafe, textOnLayout]);
236
- const handleNodeLayout = useCallback(event => setContentWidthSafe(event.nativeEvent.layout.width), [setContentWidthSafe]);
237
- if (!visible) return null;
238
- return /*#__PURE__*/React.createElement(Pressable, _extends({
239
- style: [S.ctr, {
240
- backgroundColor: resolvedBackground,
241
- paddingHorizontal: tokens.spacing.paddingHorizontal,
242
- paddingVertical: wrapable ? tokens.spacing.wrapPaddingVertical : tokens.spacing.paddingVertical,
243
- minHeight: tokens.layout.minHeight,
244
- borderRadius: tokens.layout.radius
245
- }, style],
246
- disabled: barPress.states.disabled
247
- }, barPress.interactionProps, rest), hasLeft && /*#__PURE__*/React.createElement(View, {
248
- style: [S.side, {
249
- minWidth: tokens.layout.sideMinWidth
250
- }]
251
- }, leftIcon), /*#__PURE__*/React.createElement(View, {
252
- onLayout: handleContainerLayout,
253
- style: [S.content, wrapable && S.contentWrap, hasLeft && {
254
- paddingLeft: tokens.spacing.sidePadding
255
- }, hasRight && {
256
- paddingRight: tokens.spacing.sidePadding
257
- }],
258
- pointerEvents: "none"
259
- }, isVertical ? verticalContentNode : shouldScroll ? isTextContent ? /*#__PURE__*/React.createElement(AnimatedText, _extends({
260
- onLayout: handleTextLayout,
261
- style: [S.text, S.scrollText, {
262
- color: resolvedColor,
263
- fontFamily: tokens.typography.fontFamily,
264
- fontSize: tokens.typography.fontSize,
265
- transform: [{
266
- translateX
267
- }]
268
- }]
269
- }, IS_WEB ? {} : {
270
- numberOfLines: 1,
271
- ellipsizeMode: 'clip'
272
- }, restTextProps), content) : /*#__PURE__*/React.createElement(Animated.View, {
273
- onLayout: handleNodeLayout,
274
- renderToHardwareTextureAndroid: true,
275
- shouldRasterizeIOS: true,
276
- style: [S.text, {
277
- transform: [{
278
- translateX
279
- }]
280
- }]
281
- }, content) : isTextContent ? /*#__PURE__*/React.createElement(Text, _extends({
282
- onLayout: handleTextLayout,
283
- style: [S.text, {
284
- color: resolvedColor,
285
- fontFamily: tokens.typography.fontFamily,
286
- fontSize: tokens.typography.fontSize
287
- }, wrapable && S.wrapText],
288
- numberOfLines: wrapable ? undefined : 1,
289
- ellipsizeMode: wrapable ? 'tail' : 'clip'
290
- }, restTextProps), content) : /*#__PURE__*/React.createElement(View, {
291
- onLayout: handleNodeLayout,
292
- style: [S.text, wrapable && S.wrapText]
293
- }, content)), rightNode && /*#__PURE__*/React.createElement(View, {
294
- style: [S.side, {
295
- minWidth: tokens.layout.sideMinWidth
296
- }]
297
- }, rightNode));
298
- };
299
- const S = StyleSheet.create({
300
- ctr: {
301
- flexDirection: 'row',
302
- alignItems: 'center'
303
- },
304
- side: {
305
- alignItems: 'center',
306
- justifyContent: 'center'
307
- },
308
- content: {
309
- flex: 1,
310
- flexDirection: 'row',
311
- overflow: 'hidden'
312
- },
313
- text: {
314
- flexShrink: 0
315
- },
316
- scrollText: Platform.select({
317
- web: {
318
- whiteSpace: 'nowrap',
319
- textOverflow: 'clip'
320
- },
321
- default: {}
322
- }),
323
- wrapText: {
324
- flexWrap: 'wrap',
325
- flexShrink: 1
326
- },
327
- contentWrap: {
328
- flexDirection: 'column'
329
- },
330
- vViewport: {
331
- width: '100%',
332
- overflow: 'hidden'
333
- },
334
- vTrack: {
335
- flexDirection: 'column',
336
- width: '100%'
337
- },
338
- vItem: {
339
- width: '100%',
340
- justifyContent: 'center'
341
- }
342
- });
343
- export const NoticeBar = /*#__PURE__*/React.memo(NoticeBarImpl);
344
- NoticeBar.displayName = 'NoticeBar';
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>{if(!C)return[];if(f&&f.length)return f;const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]},[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
@@ -1,2 +1 @@
1
- import { NoticeBar } from './NoticeBar';
2
- export default NoticeBar;
1
+ import{NoticeBar}from"./NoticeBar";export default NoticeBar;
@@ -1,32 +1 @@
1
- import { createComponentTokensHook } from '../../design-system';
2
- export const createNoticeBarTokens = foundations => {
3
- const {
4
- palette,
5
- fontSize,
6
- spacing,
7
- radii,
8
- typography
9
- } = foundations;
10
- return {
11
- colors: {
12
- text: palette.warning[600],
13
- background: palette.warning[50]
14
- },
15
- typography: {
16
- fontFamily: typography.fontFamily,
17
- fontSize: fontSize.sm
18
- },
19
- layout: {
20
- minHeight: 40,
21
- radius: radii.lg,
22
- sideMinWidth: 24
23
- },
24
- spacing: {
25
- paddingHorizontal: spacing.lg,
26
- paddingVertical: spacing.sm,
27
- wrapPaddingVertical: spacing.md,
28
- sidePadding: spacing.sm
29
- }
30
- };
31
- };
32
- export const useNoticeBarTokens = createComponentTokensHook('noticeBar', createNoticeBarTokens);
1
+ import{createComponentTokensHook}from"../../design-system";export const createNoticeBarTokens=o=>{const{palette:e,fontSize:t,spacing:n,radii:i,typography:a}=o;return{colors:{text:e.warning[600],background:e.warning[50]},typography:{fontFamily:a.fontFamily,fontSize:t.sm},layout:{minHeight:40,radius:i.lg,sideMinWidth:24},spacing:{paddingHorizontal:n.lg,paddingVertical:n.sm,wrapPaddingVertical:n.md,sidePadding:n.sm}}};export const useNoticeBarTokens=createComponentTokensHook("noticeBar",createNoticeBarTokens);
@@ -1,242 +1 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
- import { Animated, Easing, Platform, Pressable, View } from 'react-native';
4
- import { isFunction, isText, renderTextOrNode } from '../../utils';
5
- import { isRenderable } from '../../utils/validate';
6
- import { useAriaPress, useSafeAreaPadding, useOverlayStack } from '../../hooks';
7
- import Portal from '../portal/Portal';
8
- import { nativeDriverEnabled } from '../../platform';
9
- import { useReducedMotion } from '../../hooks/animation';
10
- import { useNotifyTokens } from './tokens';
11
- const NotifyContentImpl = props => {
12
- const {
13
- visible,
14
- message,
15
- type: typeProp,
16
- duration: durationProp,
17
- position: positionProp,
18
- offset: offsetProp,
19
- color,
20
- background,
21
- zIndex,
22
- closeOnClick: closeOnClickProp,
23
- style,
24
- textStyle,
25
- tokensOverride,
26
- onClick,
27
- onClose,
28
- onOpen,
29
- onOpened,
30
- onClosed
31
- } = props;
32
- const tokens = useNotifyTokens(tokensOverride);
33
- const reducedMotion = useReducedMotion();
34
- const safeAreaPadding = useSafeAreaPadding({
35
- top: 0,
36
- bottom: 0
37
- });
38
- const type = typeProp ?? tokens.defaults.type;
39
- const position = positionProp ?? tokens.defaults.position;
40
- const closeOnClick = closeOnClickProp ?? tokens.defaults.closeOnClick;
41
- const safeAreaInsetTop = props.safeAreaInsetTop ?? (position === 'top' ? tokens.defaults.safeAreaInsetTop : false);
42
- const safeAreaInsetBottom = props.safeAreaInsetBottom ?? (position === 'bottom' ? tokens.defaults.safeAreaInsetBottom : false);
43
- const safeAreaTopValue = safeAreaInsetTop && position === 'top' ? safeAreaPadding.paddingTop : 0;
44
- const safeAreaBottomValue = safeAreaInsetBottom && position === 'bottom' ? safeAreaPadding.paddingBottom : 0;
45
- const offset = typeof offsetProp === 'number' && Number.isFinite(offsetProp) ? Math.max(0, offsetProp) : 0;
46
- const addOffset = (value, delta) => typeof value === 'string' ? `calc(${value} + ${delta}px)` : value + delta;
47
- const safeAreaBottomInset = safeAreaInsetBottom && position === 'bottom' && typeof safeAreaBottomValue === 'number' ? safeAreaBottomValue + offset : offset;
48
- const webTopPadding = Platform.OS === 'web' && position === 'top' ? addOffset(safeAreaTopValue, offset) : undefined;
49
- const webBottomPadding = Platform.OS === 'web' && safeAreaInsetBottom && position === 'bottom' ? addOffset(safeAreaBottomValue, offset) : undefined;
50
- const variant = tokens.colors.variants[type];
51
- const resolvedBackground = background ?? variant.background;
52
- const resolvedTextColor = color ?? variant.text;
53
- const resolvedDuration = durationProp ?? tokens.defaults.duration;
54
- const onCloseRef = useRef(onClose);
55
- onCloseRef.current = onClose;
56
- const onOpenRef = useRef(onOpen);
57
- onOpenRef.current = onOpen;
58
- const onOpenedRef = useRef(onOpened);
59
- onOpenedRef.current = onOpened;
60
- const onClosedRef = useRef(onClosed);
61
- onClosedRef.current = onClosed;
62
- const onClickRef = useRef(onClick);
63
- onClickRef.current = onClick;
64
- const [barHeight, setBarHeight] = useState(0);
65
- const handleLayout = useCallback(e => {
66
- const height = e.nativeEvent.layout.height;
67
- if (!height) return;
68
- setBarHeight(prev => prev === height ? prev : height);
69
- }, []);
70
- const canAnimate = barHeight > 0;
71
- const [mounted, setMounted] = useState(visible);
72
- const animatedValue = useRef(new Animated.Value(0)).current;
73
- const animationRef = useRef(null);
74
- const animationIdRef = useRef(0);
75
- const {
76
- zIndex: stackZIndex
77
- } = useOverlayStack({
78
- visible: mounted,
79
- type: 'notify',
80
- zIndex
81
- });
82
- const resolvedZIndex = stackZIndex ?? zIndex;
83
- const previousVisibleRef = useRef(visible);
84
- const closingRef = useRef(false);
85
- useEffect(() => {
86
- animationIdRef.current += 1;
87
- const animationId = animationIdRef.current;
88
- animationRef.current?.stop();
89
- const d = reducedMotion ? 0 : tokens.defaults.animationDuration;
90
- if (visible) {
91
- setMounted(true);
92
- if (!canAnimate) {
93
- animatedValue.setValue(0);
94
- return;
95
- }
96
- animationRef.current = Animated.timing(animatedValue, {
97
- toValue: 1,
98
- duration: d,
99
- easing: Easing.out(Easing.cubic),
100
- useNativeDriver: nativeDriverEnabled,
101
- isInteraction: false
102
- });
103
- animationRef.current.start();
104
- } else {
105
- if (!canAnimate) {
106
- animatedValue.setValue(0);
107
- setMounted(false);
108
- return;
109
- }
110
- animationRef.current = Animated.timing(animatedValue, {
111
- toValue: 0,
112
- duration: d,
113
- easing: Easing.out(Easing.cubic),
114
- useNativeDriver: nativeDriverEnabled,
115
- isInteraction: false
116
- });
117
- animationRef.current.start(({
118
- finished
119
- }) => {
120
- if (!finished || animationId !== animationIdRef.current) return;
121
- setMounted(false);
122
- });
123
- }
124
- }, [animatedValue, canAnimate, reducedMotion, tokens.defaults.animationDuration, visible]);
125
- useEffect(() => () => {
126
- animationRef.current?.stop();
127
- }, []);
128
- const resolvedAnimDuration = reducedMotion ? 0 : tokens.defaults.animationDuration;
129
- useEffect(() => {
130
- if (visible) {
131
- closingRef.current = false;
132
- if (!previousVisibleRef.current) {
133
- onOpenRef.current?.();
134
- if (onOpenedRef.current) {
135
- const cb = onOpenedRef.current;
136
- const t = setTimeout(cb, resolvedAnimDuration);
137
- previousVisibleRef.current = visible;
138
- return () => clearTimeout(t);
139
- }
140
- }
141
- } else if (previousVisibleRef.current) closingRef.current = true;
142
- previousVisibleRef.current = visible;
143
- }, [resolvedAnimDuration, visible]);
144
- useEffect(() => {
145
- if (!mounted && closingRef.current) {
146
- closingRef.current = false;
147
- onClosedRef.current?.();
148
- }
149
- }, [mounted]);
150
- useEffect(() => {
151
- if (!visible || resolvedDuration <= 0) return;
152
- const timeout = setTimeout(() => {
153
- onCloseRef.current?.();
154
- }, resolvedDuration);
155
- return () => clearTimeout(timeout);
156
- }, [resolvedDuration, visible]);
157
- const contentHeight = barHeight > 0 ? barHeight : tokens.sizing.minHeight;
158
- const interactive = closeOnClick || isFunction(onClick);
159
- const handlePress = useCallback(() => {
160
- onClickRef.current?.();
161
- if (closeOnClick) onCloseRef.current?.();
162
- }, [closeOnClick]);
163
- const accessibilityRole = interactive ? 'button' : 'alert';
164
- const pressProps = useAriaPress({
165
- disabled: !interactive,
166
- onPress: handlePress,
167
- extraProps: {
168
- accessibilityRole,
169
- accessibilityLiveRegion: 'assertive'
170
- }
171
- });
172
- const translateY = useMemo(() => position === 'bottom' ? animatedValue.interpolate({
173
- inputRange: [0, 1],
174
- outputRange: [contentHeight, 0]
175
- }) : animatedValue.interpolate({
176
- inputRange: [0, 1],
177
- outputRange: [-contentHeight, 0]
178
- }), [animatedValue, contentHeight, position]);
179
- const hasMessage = isRenderable(message) && (typeof message !== 'string' || message !== '');
180
- const barRender = useMemo(() => /*#__PURE__*/React.createElement(View, {
181
- style: [tokens.layout.container, position === 'top' ? {
182
- paddingTop: webTopPadding ?? addOffset(safeAreaTopValue, offset)
183
- } : null, webBottomPadding !== undefined ? {
184
- paddingBottom: webBottomPadding
185
- } : null]
186
- }, /*#__PURE__*/React.createElement(View, {
187
- style: {
188
- height: contentHeight,
189
- overflow: 'hidden'
190
- }
191
- }, /*#__PURE__*/React.createElement(Animated.View, {
192
- testID: "rv-notify-bar",
193
- accessibilityRole: !interactive ? accessibilityRole : undefined,
194
- accessibilityLiveRegion: !interactive ? 'assertive' : undefined,
195
- renderToHardwareTextureAndroid: true,
196
- shouldRasterizeIOS: true,
197
- onLayout: handleLayout,
198
- style: [tokens.layout.container, {
199
- opacity: animatedValue,
200
- transform: [{
201
- translateY
202
- }]
203
- }, style]
204
- }, /*#__PURE__*/React.createElement(View, {
205
- style: {
206
- backgroundColor: resolvedBackground
207
- }
208
- }, /*#__PURE__*/React.createElement(View, {
209
- style: [tokens.layout.content, {
210
- paddingHorizontal: tokens.spacing.paddingHorizontal,
211
- paddingVertical: tokens.spacing.paddingVertical,
212
- minHeight: tokens.sizing.minHeight
213
- }]
214
- }, hasMessage && (isText(message) ? renderTextOrNode(message, [tokens.layout.text, {
215
- color: resolvedTextColor,
216
- fontFamily: tokens.typography.fontFamily,
217
- fontSize: tokens.typography.fontSize,
218
- lineHeight: tokens.typography.lineHeight
219
- }, textStyle]) : message))))), position === 'bottom' && /*#__PURE__*/React.createElement(View, {
220
- style: {
221
- height: safeAreaBottomInset
222
- }
223
- })), [accessibilityRole, animatedValue, contentHeight, handleLayout, hasMessage, interactive, message, offset, resolvedBackground, resolvedTextColor, safeAreaBottomInset, safeAreaTopValue, style, textStyle, tokens.layout.container, tokens.layout.content, tokens.layout.text, tokens.sizing.minHeight, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.lineHeight, translateY, webBottomPadding, webTopPadding, position]);
224
- if (!mounted) return null;
225
- return /*#__PURE__*/React.createElement(View, {
226
- testID: "rv-notify",
227
- pointerEvents: interactive ? 'box-none' : 'none',
228
- style: [tokens.layout.portal, position === 'bottom' ? {
229
- bottom: 0
230
- } : {
231
- top: 0
232
- }, resolvedZIndex != null ? {
233
- zIndex: resolvedZIndex
234
- } : null]
235
- }, interactive ? /*#__PURE__*/React.createElement(Pressable, _extends({}, pressProps.interactionProps, {
236
- disabled: !interactive
237
- }), barRender) : barRender);
238
- };
239
- export const NotifyContent = /*#__PURE__*/React.memo(NotifyContentImpl);
240
- const NotifyImpl = props => /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(NotifyContent, props));
241
- export const Notify = /*#__PURE__*/React.memo(NotifyImpl);
242
- export default Notify;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Platform,Pressable,View}from"react-native";import{isFunction,isText,renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import{useAriaPress,useSafeAreaPadding,useOverlayStack}from"../../hooks";import Portal from"../portal/Portal";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNotifyTokens}from"./tokens";const NotifyContentImpl=e=>{const{visible:t,message:n,type:o,duration:r,position:i,offset:a,color:s,background:u,zIndex:l,closeOnClick:c,style:d,textStyle:f,tokensOverride:m,onClick:p,onClose:y,onOpen:g,onOpened:b,onClosed:v}=e,R=useNotifyTokens(m),h=useReducedMotion(),E=useSafeAreaPadding({top:0,bottom:0}),x=o??R.defaults.type,k=i??R.defaults.position,I=c??R.defaults.closeOnClick,P=e.safeAreaInsetTop??("top"===k&&R.defaults.safeAreaInsetTop),T=e.safeAreaInsetBottom??("bottom"===k&&R.defaults.safeAreaInsetBottom),V=P&&"top"===k?E.paddingTop:0,N=T&&"bottom"===k?E.paddingBottom:0,O="number"==typeof a&&Number.isFinite(a)?Math.max(0,a):0,w=(e,t)=>"string"==typeof e?`calc(${e} + ${t}px)`:e+t,z=T&&"bottom"===k&&"number"==typeof N?N+O:O,A="web"===Platform.OS&&"top"===k?w(V,O):void 0,S="web"===Platform.OS&&T&&"bottom"===k?w(N,O):void 0,C=R.colors.variants[x],H=u??C.background,D=s??C.text,F=r??R.defaults.duration,M=useRef(y);M.current=y;const B=useRef(g);B.current=g;const _=useRef(b);_.current=b;const L=useRef(v);L.current=v;const j=useRef(p);j.current=p;const[$,Y]=useState(0),q=useCallback(e=>{const t=e.nativeEvent.layout.height;t&&Y(e=>e===t?e:t)},[]),G=$>0,[J,K]=useState(t),Q=useRef(new Animated.Value(0)).current,U=useRef(null),W=useRef(0),{zIndex:X}=useOverlayStack({visible:J,type:"notify",zIndex:l}),Z=X??l,ee=useRef(t),te=useRef(!1);useEffect(()=>{W.current+=1;const e=W.current;U.current?.stop();const n=h?0:R.defaults.animationDuration;if(t){if(K(!0),!G)return void Q.setValue(0);U.current=Animated.timing(Q,{toValue:1,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),U.current.start()}else{if(!G)return Q.setValue(0),void K(!1);U.current=Animated.timing(Q,{toValue:0,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),U.current.start(({finished:t})=>{t&&e===W.current&&K(!1)})}},[Q,G,h,R.defaults.animationDuration,t]),useEffect(()=>()=>{U.current?.stop()},[]);const ne=h?0:R.defaults.animationDuration;useEffect(()=>{if(t){if(te.current=!1,!ee.current&&(B.current?.(),_.current)){const e=_.current,n=setTimeout(e,ne);return ee.current=t,()=>clearTimeout(n)}}else ee.current&&(te.current=!0);ee.current=t},[ne,t]),useEffect(()=>{!J&&te.current&&(te.current=!1,L.current?.())},[J]),useEffect(()=>{if(!t||F<=0)return;const e=setTimeout(()=>{M.current?.()},F);return()=>clearTimeout(e)},[F,t]);const oe=$>0?$:R.sizing.minHeight,re=I||isFunction(p),ie=useCallback(()=>{j.current?.(),I&&M.current?.()},[I]),ae=re?"button":"alert",se=useAriaPress({disabled:!re,onPress:ie,extraProps:{accessibilityRole:ae,accessibilityLiveRegion:"assertive"}}),ue=useMemo(()=>"bottom"===k?Q.interpolate({inputRange:[0,1],outputRange:[oe,0]}):Q.interpolate({inputRange:[0,1],outputRange:[-oe,0]}),[Q,oe,k]),le=isRenderable(n)&&("string"!=typeof n||""!==n),ce=useMemo(()=>React.createElement(View,{style:[R.layout.container,"top"===k?{paddingTop:A??w(V,O)}:null,void 0!==S?{paddingBottom:S}:null]},React.createElement(View,{style:{height:oe,overflow:"hidden"}},React.createElement(Animated.View,{testID:"rv-notify-bar",accessibilityRole:re?void 0:ae,accessibilityLiveRegion:re?void 0:"assertive",renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:q,style:[R.layout.container,{opacity:Q,transform:[{translateY:ue}]},d]},React.createElement(View,{style:{backgroundColor:H}},React.createElement(View,{style:[R.layout.content,{paddingHorizontal:R.spacing.paddingHorizontal,paddingVertical:R.spacing.paddingVertical,minHeight:R.sizing.minHeight}]},le&&(isText(n)?renderTextOrNode(n,[R.layout.text,{color:D,fontFamily:R.typography.fontFamily,fontSize:R.typography.fontSize,lineHeight:R.typography.lineHeight},f]):n))))),"bottom"===k&&React.createElement(View,{style:{height:z}})),[ae,Q,oe,q,le,re,n,O,H,D,z,V,d,f,R.layout.container,R.layout.content,R.layout.text,R.sizing.minHeight,R.spacing.paddingHorizontal,R.spacing.paddingVertical,R.typography.fontFamily,R.typography.fontSize,R.typography.lineHeight,ue,S,A,k]);return J?React.createElement(View,{testID:"rv-notify",pointerEvents:re?"box-none":"none",style:[R.layout.portal,"bottom"===k?{bottom:0}:{top:0},null!=Z?{zIndex:Z}:null]},re?React.createElement(Pressable,_extends({},se.interactionProps,{disabled:!re}),ce):ce):null};export const NotifyContent=React.memo(NotifyContentImpl);const NotifyImpl=e=>React.createElement(Portal,null,React.createElement(NotifyContent,e));export const Notify=React.memo(NotifyImpl);export default Notify;