react-native-system-ui 0.0.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +97 -105
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +54 -67
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +25 -23
  7. package/dist/cjs/components/badge/Badge.js +31 -31
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +115 -151
  10. package/dist/cjs/components/button/ButtonGroup.js +8 -42
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +177 -180
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +70 -83
  18. package/dist/cjs/components/cell/CellGroup.js +16 -29
  19. package/dist/cjs/components/checkbox/Checkbox.js +139 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +4 -35
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +25 -24
  23. package/dist/cjs/components/collapse/Collapse.js +75 -91
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +16 -3
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +20 -15
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +61 -84
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +153 -121
  34. package/dist/cjs/components/dialog/imperative.js +17 -30
  35. package/dist/cjs/components/divider/Divider.js +26 -28
  36. package/dist/cjs/components/empty/Empty.js +35 -39
  37. package/dist/cjs/components/error-boundary/ErrorBoundary.js +73 -0
  38. package/dist/cjs/components/error-boundary/index.js +19 -0
  39. package/dist/cjs/components/field/Field.js +109 -106
  40. package/dist/cjs/components/flex/Flex.js +18 -18
  41. package/dist/cjs/components/flex/FlexItem.js +26 -27
  42. package/dist/cjs/components/form/Form.js +142 -161
  43. package/dist/cjs/components/form/FormItem.js +69 -97
  44. package/dist/cjs/components/form/FormList.js +49 -37
  45. package/dist/cjs/components/form/tokens.js +6 -3
  46. package/dist/cjs/components/form/utils.js +15 -34
  47. package/dist/cjs/components/grid/Grid.js +30 -29
  48. package/dist/cjs/components/grid/GridItem.js +84 -85
  49. package/dist/cjs/components/image/Image.js +55 -59
  50. package/dist/cjs/components/image/tokens.js +2 -2
  51. package/dist/cjs/components/image-preview/ImagePreview.js +124 -112
  52. package/dist/cjs/components/image-preview/imperative.js +4 -13
  53. package/dist/cjs/components/index.js +13 -0
  54. package/dist/cjs/components/input/Input.js +30 -22
  55. package/dist/cjs/components/loading/Loading.js +14 -15
  56. package/dist/cjs/components/nav-bar/NavBar.js +68 -83
  57. package/dist/cjs/components/nav-bar/tokens.js +1 -9
  58. package/dist/cjs/components/notice-bar/NoticeBar.js +74 -77
  59. package/dist/cjs/components/notify/Notify.js +88 -84
  60. package/dist/cjs/components/notify/imperative.js +20 -43
  61. package/dist/cjs/components/notify/tokens.js +1 -11
  62. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +187 -209
  63. package/dist/cjs/components/overlay/Overlay.js +37 -52
  64. package/dist/cjs/components/overlay/tokens.js +5 -3
  65. package/dist/cjs/components/password-input/PasswordInput.js +98 -79
  66. package/dist/cjs/components/picker/Picker.js +440 -421
  67. package/dist/cjs/components/picker/tokens.js +1 -1
  68. package/dist/cjs/components/popup/Popup.js +263 -293
  69. package/dist/cjs/components/portal/Portal.js +12 -29
  70. package/dist/cjs/components/portal/PortalHost.js +151 -234
  71. package/dist/cjs/components/progress/Progress.js +51 -48
  72. package/dist/cjs/components/radio/Radio.js +45 -42
  73. package/dist/cjs/components/radio/RadioGroup.js +8 -40
  74. package/dist/cjs/components/radio/tokens.js +7 -10
  75. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  76. package/dist/cjs/components/search/Search.js +51 -43
  77. package/dist/cjs/components/selector/Selector.js +14 -13
  78. package/dist/cjs/components/share-sheet/ShareSheet.js +160 -161
  79. package/dist/cjs/components/sidebar/Sidebar.js +39 -45
  80. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  81. package/dist/cjs/components/sidebar/SidebarItem.js +13 -16
  82. package/dist/cjs/components/sidebar/tokens.js +1 -3
  83. package/dist/cjs/components/skeleton/Skeleton.js +30 -37
  84. package/dist/cjs/components/skeleton/tokens.js +1 -2
  85. package/dist/cjs/components/slider/Slider.js +156 -135
  86. package/dist/cjs/components/space/Space.js +46 -69
  87. package/dist/cjs/components/stepper/Stepper.js +177 -155
  88. package/dist/cjs/components/swiper/Swiper.js +251 -253
  89. package/dist/cjs/components/swiper/SwiperPagIndicator.js +25 -27
  90. package/dist/cjs/components/swiper/tokens.js +10 -3
  91. package/dist/cjs/components/switch/Switch.js +13 -15
  92. package/dist/cjs/components/tabbar/Tabbar.js +35 -27
  93. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  94. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  95. package/dist/cjs/components/tabs/Tabs.js +286 -313
  96. package/dist/cjs/components/tag/Tag.js +46 -37
  97. package/dist/cjs/components/toast/Toast.js +90 -90
  98. package/dist/cjs/components/toast/imperative.js +16 -41
  99. package/dist/cjs/components/typography/Typography.js +3 -5
  100. package/dist/cjs/components/water-mark/WaterMark.js +31 -29
  101. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  102. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  103. package/dist/cjs/design-system/presets.js +2 -3
  104. package/dist/cjs/design-system/tokens.js +2 -11
  105. package/dist/cjs/hooks/animation/index.js +25 -0
  106. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  107. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  108. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  109. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  110. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  111. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  112. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  113. package/dist/cjs/hooks/index.js +12 -0
  114. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  115. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  116. package/dist/cjs/hooks/useControllableValue.js +10 -21
  117. package/dist/cjs/hooks/useCountDown.js +14 -22
  118. package/dist/cjs/hooks/useHairline.js +17 -29
  119. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  120. package/dist/cjs/index.js +67 -1
  121. package/dist/cjs/platform/animation.js +10 -2
  122. package/dist/cjs/platform/measure.js +18 -36
  123. package/dist/cjs/utils/color.js +21 -35
  124. package/dist/cjs/utils/compare.js +7 -12
  125. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  126. package/dist/cjs/utils/date.js +20 -50
  127. package/dist/cjs/utils/deepMerge.js +16 -26
  128. package/dist/cjs/utils/hairline.js +74 -71
  129. package/dist/cjs/utils/index.js +22 -0
  130. package/dist/cjs/utils/number.js +21 -29
  131. package/dist/cjs/utils/render.js +27 -0
  132. package/dist/cjs/utils/rtl.js +25 -0
  133. package/dist/cjs/utils/string.js +8 -25
  134. package/dist/es/components/action-sheet/ActionSheet.js +99 -107
  135. package/dist/es/components/action-sheet/tokens.js +16 -27
  136. package/dist/es/components/area/Area.js +55 -68
  137. package/dist/es/components/area/tokens.js +6 -3
  138. package/dist/es/components/avatar/Avatar.js +25 -23
  139. package/dist/es/components/avatar/index.js +1 -2
  140. package/dist/es/components/badge/Badge.js +33 -33
  141. package/dist/es/components/badge/tokens.js +6 -8
  142. package/dist/es/components/button/Button.js +116 -152
  143. package/dist/es/components/button/ButtonGroup.js +9 -43
  144. package/dist/es/components/button/tokens.js +2 -3
  145. package/dist/es/components/calendar/Calendar.js +214 -225
  146. package/dist/es/components/calendar/tokens.js +3 -3
  147. package/dist/es/components/cascader/Cascader.js +180 -183
  148. package/dist/es/components/cascader/tokens.js +2 -2
  149. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  150. package/dist/es/components/cell/Cell.js +71 -84
  151. package/dist/es/components/cell/CellGroup.js +16 -28
  152. package/dist/es/components/checkbox/Checkbox.js +140 -133
  153. package/dist/es/components/checkbox/CheckboxGroup.js +5 -36
  154. package/dist/es/components/checkbox/tokens.js +7 -10
  155. package/dist/es/components/circle/Circle.js +25 -23
  156. package/dist/es/components/collapse/Collapse.js +77 -92
  157. package/dist/es/components/config-provider/ConfigProvider.js +10 -3
  158. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  159. package/dist/es/components/config-provider/index.js +1 -0
  160. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  161. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  162. package/dist/es/components/config-provider/useDirection.js +3 -0
  163. package/dist/es/components/count-down/CountDown.js +23 -18
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -84
  165. package/dist/es/components/datetime-picker/tokens.js +14 -3
  166. package/dist/es/components/dialog/Dialog.js +154 -121
  167. package/dist/es/components/dialog/imperative.js +17 -30
  168. package/dist/es/components/divider/Divider.js +28 -29
  169. package/dist/es/components/empty/Empty.js +36 -39
  170. package/dist/es/components/error-boundary/ErrorBoundary.js +61 -0
  171. package/dist/es/components/error-boundary/index.js +1 -0
  172. package/dist/es/components/field/Field.js +109 -106
  173. package/dist/es/components/flex/Flex.js +18 -17
  174. package/dist/es/components/flex/FlexItem.js +27 -27
  175. package/dist/es/components/form/Form.js +143 -162
  176. package/dist/es/components/form/FormItem.js +68 -95
  177. package/dist/es/components/form/FormList.js +49 -37
  178. package/dist/es/components/form/tokens.js +6 -3
  179. package/dist/es/components/form/utils.js +15 -34
  180. package/dist/es/components/grid/Grid.js +30 -28
  181. package/dist/es/components/grid/GridItem.js +84 -84
  182. package/dist/es/components/image/Image.js +58 -62
  183. package/dist/es/components/image/tokens.js +2 -2
  184. package/dist/es/components/image-preview/ImagePreview.js +124 -112
  185. package/dist/es/components/image-preview/imperative.js +4 -13
  186. package/dist/es/components/index.js +3 -1
  187. package/dist/es/components/input/Input.js +31 -23
  188. package/dist/es/components/loading/Loading.js +16 -16
  189. package/dist/es/components/nav-bar/NavBar.js +68 -83
  190. package/dist/es/components/nav-bar/tokens.js +1 -3
  191. package/dist/es/components/notice-bar/NoticeBar.js +74 -76
  192. package/dist/es/components/notify/Notify.js +92 -87
  193. package/dist/es/components/notify/imperative.js +21 -44
  194. package/dist/es/components/notify/tokens.js +1 -5
  195. package/dist/es/components/number-keyboard/NumberKeyboard.js +187 -209
  196. package/dist/es/components/overlay/Overlay.js +36 -51
  197. package/dist/es/components/overlay/tokens.js +5 -3
  198. package/dist/es/components/password-input/PasswordInput.js +98 -79
  199. package/dist/es/components/picker/Picker.js +440 -421
  200. package/dist/es/components/picker/tokens.js +1 -1
  201. package/dist/es/components/popup/Popup.js +263 -292
  202. package/dist/es/components/portal/Portal.js +13 -29
  203. package/dist/es/components/portal/PortalHost.js +152 -234
  204. package/dist/es/components/progress/Progress.js +51 -48
  205. package/dist/es/components/radio/Radio.js +47 -44
  206. package/dist/es/components/radio/RadioGroup.js +10 -41
  207. package/dist/es/components/radio/tokens.js +7 -10
  208. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  209. package/dist/es/components/search/Search.js +52 -44
  210. package/dist/es/components/selector/Selector.js +14 -13
  211. package/dist/es/components/share-sheet/ShareSheet.js +162 -163
  212. package/dist/es/components/sidebar/Sidebar.js +41 -47
  213. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  214. package/dist/es/components/sidebar/SidebarItem.js +13 -15
  215. package/dist/es/components/sidebar/tokens.js +1 -3
  216. package/dist/es/components/skeleton/Skeleton.js +30 -37
  217. package/dist/es/components/skeleton/tokens.js +1 -2
  218. package/dist/es/components/slider/Slider.js +156 -134
  219. package/dist/es/components/space/Space.js +48 -71
  220. package/dist/es/components/stepper/Stepper.js +178 -156
  221. package/dist/es/components/swiper/Swiper.js +252 -254
  222. package/dist/es/components/swiper/SwiperPagIndicator.js +25 -27
  223. package/dist/es/components/swiper/tokens.js +10 -3
  224. package/dist/es/components/switch/Switch.js +13 -15
  225. package/dist/es/components/tabbar/Tabbar.js +36 -28
  226. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  227. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  228. package/dist/es/components/tabs/Tabs.js +286 -313
  229. package/dist/es/components/tag/Tag.js +49 -39
  230. package/dist/es/components/toast/Toast.js +93 -91
  231. package/dist/es/components/toast/imperative.js +16 -41
  232. package/dist/es/components/typography/Typography.js +3 -5
  233. package/dist/es/components/water-mark/WaterMark.js +32 -30
  234. package/dist/es/design-system/ThemeProvider.js +5 -11
  235. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  236. package/dist/es/design-system/presets.js +2 -3
  237. package/dist/es/design-system/tokens.js +1 -9
  238. package/dist/es/hooks/animation/index.js +2 -0
  239. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  240. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  241. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  242. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  243. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  244. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  245. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  246. package/dist/es/hooks/index.js +1 -0
  247. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  248. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  249. package/dist/es/hooks/useControllableValue.js +10 -21
  250. package/dist/es/hooks/useCountDown.js +14 -22
  251. package/dist/es/hooks/useHairline.js +16 -28
  252. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  253. package/dist/es/index.js +8 -1
  254. package/dist/es/platform/animation.js +9 -1
  255. package/dist/es/platform/measure.js +18 -36
  256. package/dist/es/utils/color.js +21 -35
  257. package/dist/es/utils/compare.js +7 -12
  258. package/dist/es/utils/createPlatformShadow.js +28 -39
  259. package/dist/es/utils/date.js +20 -50
  260. package/dist/es/utils/deepMerge.js +16 -26
  261. package/dist/es/utils/hairline.js +73 -65
  262. package/dist/es/utils/index.js +2 -0
  263. package/dist/es/utils/number.js +21 -29
  264. package/dist/es/utils/render.js +7 -0
  265. package/dist/es/utils/rtl.js +17 -0
  266. package/dist/es/utils/string.js +8 -25
  267. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  268. package/dist/types/components/area/Area.d.ts +1 -1
  269. package/dist/types/components/area/tokens.d.ts +4 -0
  270. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  271. package/dist/types/components/avatar/index.d.ts +1 -2
  272. package/dist/types/components/badge/Badge.d.ts +1 -1
  273. package/dist/types/components/button/Button.d.ts +1 -1
  274. package/dist/types/components/button/index.d.ts +1 -1
  275. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  276. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  277. package/dist/types/components/cell/Cell.d.ts +1 -1
  278. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  279. package/dist/types/components/cell/index.d.ts +2 -2
  280. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  281. package/dist/types/components/circle/Circle.d.ts +1 -1
  282. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  283. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  284. package/dist/types/components/config-provider/index.d.ts +2 -1
  285. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  286. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  287. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  288. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  289. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  290. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  291. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  292. package/dist/types/components/divider/Divider.d.ts +1 -1
  293. package/dist/types/components/empty/Empty.d.ts +1 -1
  294. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  295. package/dist/types/components/error-boundary/index.d.ts +2 -0
  296. package/dist/types/components/field/Field.d.ts +1 -1
  297. package/dist/types/components/flex/Flex.d.ts +1 -1
  298. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  299. package/dist/types/components/flex/index.d.ts +2 -2
  300. package/dist/types/components/form/Form.d.ts +1 -1
  301. package/dist/types/components/form/FormItem.d.ts +2 -1
  302. package/dist/types/components/form/index.d.ts +2 -2
  303. package/dist/types/components/form/tokens.d.ts +4 -0
  304. package/dist/types/components/grid/Grid.d.ts +1 -1
  305. package/dist/types/components/grid/GridItem.d.ts +1 -1
  306. package/dist/types/components/grid/index.d.ts +2 -2
  307. package/dist/types/components/image/Image.d.ts +1 -1
  308. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  309. package/dist/types/components/index.d.ts +4 -1
  310. package/dist/types/components/input/Input.d.ts +3 -3
  311. package/dist/types/components/loading/Loading.d.ts +1 -1
  312. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  313. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  314. package/dist/types/components/notify/Notify.d.ts +2 -2
  315. package/dist/types/components/notify/index.d.ts +1 -1
  316. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  317. package/dist/types/components/overlay/tokens.d.ts +3 -0
  318. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  319. package/dist/types/components/picker/Picker.d.ts +5 -5
  320. package/dist/types/components/popup/Popup.d.ts +3 -42
  321. package/dist/types/components/portal/Portal.d.ts +9 -6
  322. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  323. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  324. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  325. package/dist/types/components/search/Search.d.ts +1 -1
  326. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  327. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  328. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  329. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  330. package/dist/types/components/sidebar/index.d.ts +2 -2
  331. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  332. package/dist/types/components/slider/Slider.d.ts +1 -1
  333. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  334. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  335. package/dist/types/components/swiper/index.d.ts +1 -1
  336. package/dist/types/components/swiper/tokens.d.ts +8 -0
  337. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  338. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  339. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  340. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  341. package/dist/types/components/tabs/index.d.ts +1 -1
  342. package/dist/types/components/tag/Tag.d.ts +1 -1
  343. package/dist/types/components/toast/Toast.d.ts +2 -2
  344. package/dist/types/components/toast/index.d.ts +1 -1
  345. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  346. package/dist/types/design-system/tokens.d.ts +0 -1
  347. package/dist/types/hooks/animation/index.d.ts +3 -0
  348. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  349. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  350. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  351. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  352. package/dist/types/hooks/index.d.ts +1 -0
  353. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  354. package/dist/types/hooks/useHairline.d.ts +1 -1
  355. package/dist/types/index.d.ts +5 -0
  356. package/dist/types/platform/animation.d.ts +8 -0
  357. package/dist/types/platform/measure.d.ts +1 -1
  358. package/dist/types/utils/compare.d.ts +1 -1
  359. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  360. package/dist/types/utils/date.d.ts +2 -2
  361. package/dist/types/utils/hairline.d.ts +5 -10
  362. package/dist/types/utils/index.d.ts +2 -0
  363. package/dist/types/utils/number.d.ts +2 -2
  364. package/dist/types/utils/render.d.ts +5 -0
  365. package/dist/types/utils/rtl.d.ts +5 -0
  366. package/package.json +9 -2
@@ -1,12 +1,14 @@
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
2
  import React, { useMemo } from 'react';
3
- import { Text, View } from 'react-native';
3
+ import { View } from 'react-native';
4
4
  import { mergeTokensOverride } from '../../design-system';
5
5
  import { useControllableValue } from '../../hooks';
6
+ import { useDirection } from '../config-provider/useDirection';
6
7
  import { SidebarContext } from './SidebarContext';
7
8
  import { useSidebarTokens } from './tokens';
8
- import { isText } from '../../utils';
9
- const SidebarBase = props => {
9
+ import { createHairlineView, renderTextOrNode } from '../../utils';
10
+ import { isRenderable } from '../../utils/validate';
11
+ const SidebarBaseImpl = props => {
10
12
  const {
11
13
  children,
12
14
  sideStyle,
@@ -15,20 +17,18 @@ const SidebarBase = props => {
15
17
  ...rest
16
18
  } = props;
17
19
  const tokens = useSidebarTokens(tokensOverride);
18
- const items = useMemo(() => {
19
- const out = [];
20
- const list = React.Children.toArray(children);
21
- for (let i = 0; i < list.length; i++) {
22
- const child = list[i];
23
- if (! /*#__PURE__*/React.isValidElement(child)) continue;
24
- out.push({
20
+ const dir = useDirection();
21
+ const sidebarItems = useMemo(() => {
22
+ const items = [];
23
+ React.Children.toArray(children).forEach((child, index) => {
24
+ if (/*#__PURE__*/React.isValidElement(child)) items.push({
25
25
  element: child,
26
- index: i
26
+ index
27
27
  });
28
- }
29
- return out;
28
+ });
29
+ return items;
30
30
  }, [children]);
31
- const firstIndex = items[0]?.index ?? 0;
31
+ const firstIndex = sidebarItems[0]?.index ?? 0;
32
32
  const [activeIndex, setActiveIndex] = useControllableValue(props, {
33
33
  defaultValue: firstIndex,
34
34
  valuePropName: 'value',
@@ -36,49 +36,43 @@ const SidebarBase = props => {
36
36
  trigger: 'onChange'
37
37
  });
38
38
  const currentIndex = useMemo(() => {
39
- let next = firstIndex;
40
- for (let i = 0; i < items.length; i++) {
41
- if (items[i].index === activeIndex) {
42
- next = activeIndex;
43
- break;
44
- }
39
+ for (const item of sidebarItems) {
40
+ if (item.index === activeIndex) return activeIndex;
45
41
  }
46
- return next;
47
- }, [activeIndex, firstIndex, items]);
42
+ return firstIndex;
43
+ }, [activeIndex, firstIndex, sidebarItems]);
48
44
  const contextValue = useMemo(() => ({
49
45
  activeIndex: currentIndex,
50
46
  onSelect: setActiveIndex
51
47
  }), [currentIndex, setActiveIndex]);
52
- const clonedItems = useMemo(() => items.map(item => {
53
- const key = item.element.key ?? item.index;
54
- const merged = mergeTokensOverride(tokensOverride, item.element.props.tokensOverride);
55
- return /*#__PURE__*/React.cloneElement(item.element, {
56
- key,
57
- index: item.index,
58
- tokensOverride: merged
59
- });
60
- }), [items, tokensOverride]);
61
- const activeItem = items.find(item => item.index === currentIndex)?.element;
62
- const activeContentStyle = activeItem?.props?.contentStyle;
63
- const activeContent = activeItem?.props?.children;
64
- const activeContentNode = useMemo(() => activeContent == null || activeContent === false ? null : isText(activeContent) ? /*#__PURE__*/React.createElement(Text, null, activeContent) : activeContent, [activeContent]);
65
- const containerStyle = useMemo(() => [tokens.layout.container, {
66
- backgroundColor: tokens.colors.background
67
- }, style], [style, tokens.colors.background, tokens.layout.container]);
68
- const sideContainerStyle = useMemo(() => [tokens.layout.side, {
69
- width: tokens.sizing.width,
70
- borderRightColor: tokens.colors.border
71
- }, sideStyle], [sideStyle, tokens.colors.border, tokens.layout.side, tokens.sizing.width]);
48
+ const clonedItems = useMemo(() => sidebarItems.map(item => /*#__PURE__*/React.cloneElement(item.element, {
49
+ key: item.element.key ?? item.index,
50
+ index: item.index,
51
+ tokensOverride: mergeTokensOverride(tokensOverride, item.element.props.tokensOverride)
52
+ })), [sidebarItems, tokensOverride]);
53
+ const activeItem = sidebarItems.find(item => item.index === currentIndex)?.element;
54
+ const activeContentNode = !isRenderable(activeItem?.props?.children) ? null : renderTextOrNode(activeItem.props.children);
72
55
  return /*#__PURE__*/React.createElement(View, _extends({}, rest, {
73
- style: containerStyle
56
+ style: [tokens.layout.container, {
57
+ backgroundColor: tokens.colors.background
58
+ }, style]
74
59
  }), /*#__PURE__*/React.createElement(View, {
75
- style: sideContainerStyle,
60
+ style: [tokens.layout.side, {
61
+ width: tokens.sizing.width
62
+ }, sideStyle],
76
63
  accessibilityRole: "tablist"
77
64
  }, /*#__PURE__*/React.createElement(SidebarContext.Provider, {
78
65
  value: contextValue
79
- }, clonedItems)), /*#__PURE__*/React.createElement(View, {
80
- style: [tokens.layout.content, activeContentStyle]
66
+ }, clonedItems), /*#__PURE__*/React.createElement(View, {
67
+ style: createHairlineView({
68
+ position: dir === 'rtl' ? 'left' : 'right',
69
+ color: tokens.colors.border,
70
+ top: 0,
71
+ bottom: 0
72
+ })
73
+ })), /*#__PURE__*/React.createElement(View, {
74
+ style: [tokens.layout.content, activeItem?.props?.contentStyle]
81
75
  }, activeContentNode));
82
76
  };
83
- SidebarBase.displayName = 'Sidebar';
77
+ const SidebarBase = /*#__PURE__*/React.memo(SidebarBaseImpl);
84
78
  export default SidebarBase;
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
- import { useContext } from 'react';
1
+ import React, { useContext } from 'react';
3
2
  export const SidebarContext = /*#__PURE__*/React.createContext(null);
4
3
  export const useSidebarContext = () => useContext(SidebarContext);
@@ -1,12 +1,12 @@
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, { useMemo } from 'react';
2
+ import React from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { useAriaPress } from '../../hooks';
5
5
  import { isRenderable, isText } from '../../utils';
6
6
  import Badge from '../badge';
7
7
  import { useSidebarContext } from './SidebarContext';
8
8
  import { useSidebarTokens } from './tokens';
9
- const SidebarItem = props => {
9
+ const SidebarItemImpl = props => {
10
10
  const {
11
11
  title,
12
12
  badge,
@@ -24,12 +24,10 @@ const SidebarItem = props => {
24
24
  } = props;
25
25
  const tokens = useSidebarTokens(tokensOverride);
26
26
  const context = useSidebarContext();
27
- if (!context) {
28
- return null;
29
- }
27
+ if (!context) return null;
30
28
  const disabled = disabledProp ?? tokens.defaults.disabled;
31
29
  const isActive = context.activeIndex === index;
32
- const titleColor = useMemo(() => disabled ? tokens.colors.disabled : isActive ? tokens.colors.titleActive : tokens.colors.title, [disabled, isActive, tokens.colors.disabled, tokens.colors.title, tokens.colors.titleActive]);
30
+ const titleColor = disabled ? tokens.colors.disabled : isActive ? tokens.colors.titleActive : tokens.colors.title;
33
31
  const press = useAriaPress({
34
32
  disabled,
35
33
  onPress: () => {
@@ -45,28 +43,28 @@ const SidebarItem = props => {
45
43
  testID: `rv-sidebar-item-${index}`
46
44
  }
47
45
  });
48
- const indicatorStyle = useMemo(() => [tokens.layout.indicator, {
46
+ const indicatorStyle = [tokens.layout.indicator, {
49
47
  width: tokens.sizing.indicatorWidth,
50
48
  borderRadius: tokens.sizing.indicatorWidth,
51
49
  backgroundColor: tokens.colors.indicator
52
- }], [tokens.colors.indicator, tokens.layout.indicator, tokens.sizing.indicatorWidth]);
53
- const titleNode = useMemo(() => isRenderable(title) ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
50
+ }];
51
+ const titleNode = isRenderable(title) ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
54
52
  style: [tokens.layout.title, {
55
53
  color: titleColor,
56
54
  fontSize: tokens.typography.fontSize,
57
55
  fontWeight: tokens.typography.fontWeight
58
56
  }, textStyle]
59
- }, title) : title : null, [textStyle, title, titleColor, tokens.layout.title, tokens.typography.fontSize, tokens.typography.fontWeight]);
60
- const badgeNode = useMemo(() => isRenderable(badge) ? /*#__PURE__*/React.createElement(View, {
57
+ }, title) : title : null;
58
+ const badgeNode = isRenderable(badge) ? /*#__PURE__*/React.createElement(View, {
61
59
  style: [tokens.layout.badge, badgeStyle]
62
60
  }, isText(badge) ? /*#__PURE__*/React.createElement(Badge, {
63
61
  content: badge
64
- }) : badge) : null, [badge, badgeStyle, tokens.layout.badge]);
65
- const dotNode = useMemo(() => dot ? /*#__PURE__*/React.createElement(View, {
62
+ }) : badge) : null;
63
+ const dotNode = dot ? /*#__PURE__*/React.createElement(View, {
66
64
  style: [tokens.layout.dot, {
67
65
  backgroundColor: tokens.colors.indicator
68
66
  }]
69
- }) : null, [dot, tokens.colors.indicator, tokens.layout.dot]);
67
+ }) : null;
70
68
  return /*#__PURE__*/React.createElement(Pressable, _extends({}, rest, press.interactionProps, {
71
69
  style: [tokens.layout.item, {
72
70
  height: tokens.sizing.itemHeight
@@ -81,5 +79,5 @@ const SidebarItem = props => {
81
79
  style: tokens.layout.titleRow
82
80
  }, titleNode, badgeNode, dotNode)));
83
81
  };
84
- SidebarItem.displayName = 'Sidebar.Item';
82
+ const SidebarItem = /*#__PURE__*/React.memo(SidebarItemImpl);
85
83
  export default SidebarItem;
@@ -15,9 +15,7 @@ export const createSidebarTokens = foundations => {
15
15
  container: {
16
16
  flexDirection: 'row'
17
17
  },
18
- side: {
19
- borderRightWidth: borderWidth
20
- },
18
+ side: {},
21
19
  content: {
22
20
  flex: 1,
23
21
  minWidth: 0
@@ -2,15 +2,14 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
2
2
  import React, { useEffect, useMemo, useRef } from 'react';
3
3
  import { Animated, StyleSheet, View } from 'react-native';
4
4
  import { nativeDriverEnabled } from '../../platform';
5
+ import { useReducedMotion } from '../../hooks/animation';
5
6
  import { isFiniteNumber, isString } from '../../utils';
6
7
  import { useSkeletonTokens } from './tokens';
7
8
  const normalize = (value, fallback) => isFiniteNumber(value) ? Math.max(0, value) : isString(value) && value.trim() ? value.trim() : fallback;
8
- const resolveSeries = (count, input, fallback) => {
9
- return Array.from({
10
- length: count
11
- }, (_, idx) => normalize(Array.isArray(input) ? input[idx] : input, fallback));
12
- };
13
- const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
9
+ const resolveSeries = (count, input, fallback) => Array.from({
10
+ length: count
11
+ }, (_, idx) => normalize(Array.isArray(input) ? input[idx] : input, fallback));
12
+ const SkeletonImpl = (props, ref) => {
14
13
  const {
15
14
  tokensOverride,
16
15
  isLoaded,
@@ -32,6 +31,7 @@ const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
32
31
  ...rest
33
32
  } = props;
34
33
  const tokens = useSkeletonTokens(tokensOverride);
34
+ const reducedMotion = useReducedMotion();
35
35
  const loading = loadingProp ?? (isLoaded != null ? !isLoaded : true);
36
36
  const animate = animateProp ?? true;
37
37
  const avatar = avatarProp ?? false;
@@ -42,22 +42,13 @@ const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
42
42
  const row = rowProp ?? tokens.defaults.rowCount;
43
43
  const rowWidth = rowWidthProp ?? tokens.defaults.rowWidth;
44
44
  const round = roundProp ?? false;
45
- const speed = useMemo(() => {
46
- if (isFiniteNumber(speedProp)) return Math.max(0.01, speedProp);
47
- if (isString(speedProp)) {
48
- const parsed = Number(speedProp);
49
- return Number.isFinite(parsed) && parsed > 0 ? parsed : 1;
50
- }
51
- return 1;
52
- }, [speedProp]);
53
- const duration = useMemo(() => Math.max(0, tokens.animation.duration / speed), [speed, tokens.animation.duration]);
45
+ const speed = isFiniteNumber(speedProp) ? Math.max(0.01, speedProp) : isString(speedProp) && Number.isFinite(Number(speedProp)) && Number(speedProp) > 0 ? Number(speedProp) : 1;
46
+ const duration = Math.max(0, tokens.animation.duration / speed);
54
47
  const blockColor = startColor ?? tokens.colors.block;
55
48
  const rows = isFiniteNumber(row) ? Math.max(0, Math.floor(row)) : 0;
56
49
  const rowWidths = useMemo(() => {
57
50
  const widths = resolveSeries(rows, rowWidth, tokens.defaults.rowWidth);
58
- if (!Array.isArray(rowWidth) && rows > 1 && (props.rowWidth === undefined || isString(props.rowWidth) && props.rowWidth.trim() === '100%')) {
59
- widths[rows - 1] = tokens.defaults.lastRowWidth;
60
- }
51
+ if (!Array.isArray(rowWidth) && rows > 1 && (props.rowWidth === undefined || isString(props.rowWidth) && props.rowWidth.trim() === '100%')) widths[rows - 1] = tokens.defaults.lastRowWidth;
61
52
  return widths;
62
53
  }, [props.rowWidth, rowWidth, rows, tokens.defaults.lastRowWidth, tokens.defaults.rowWidth]);
63
54
  const rowHeights = useMemo(() => resolveSeries(rows, rowHeight, tokens.defaults.rowHeight), [rowHeight, rows, tokens.defaults.rowHeight]);
@@ -66,31 +57,33 @@ const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
66
57
  const resolvedTitleWidth = normalize(titleWidth, tokens.defaults.titleWidth);
67
58
  const animated = useRef(new Animated.Value(0)).current;
68
59
  useEffect(() => {
69
- if (!loading || !animate || duration <= 0) {
60
+ if (!loading || !animate || duration <= 0 || reducedMotion) {
70
61
  animated.setValue(0);
71
62
  return;
72
63
  }
73
64
  const loop = Animated.loop(Animated.sequence([Animated.timing(animated, {
74
65
  toValue: 1,
75
66
  duration: duration / 2,
76
- useNativeDriver: nativeDriverEnabled
67
+ useNativeDriver: nativeDriverEnabled,
68
+ isInteraction: false
77
69
  }), Animated.timing(animated, {
78
70
  toValue: 0,
79
71
  duration: duration / 2,
80
- useNativeDriver: nativeDriverEnabled
72
+ useNativeDriver: nativeDriverEnabled,
73
+ isInteraction: false
81
74
  })]));
82
75
  loop.start();
83
76
  return () => loop.stop();
84
- }, [animate, animated, duration, loading]);
77
+ }, [animate, animated, duration, loading, reducedMotion]);
85
78
  const animatedStyle = useMemo(() => !loading || !animate ? undefined : {
86
79
  opacity: animated.interpolate({
87
80
  inputRange: [0, 1],
88
81
  outputRange: [tokens.animation.minOpacity, tokens.animation.maxOpacity]
89
82
  })
90
83
  }, [animate, animated, loading, tokens.animation.maxOpacity, tokens.animation.minOpacity]);
91
- const containerStyles = useMemo(() => [styles.container, {
84
+ const containerStyles = [S.ctr, {
92
85
  gap: tokens.spacing.containerGap
93
- }, style], [style, tokens.spacing.containerGap]);
86
+ }, style];
94
87
  const avatarNode = useMemo(() => !avatar ? null : /*#__PURE__*/React.createElement(Animated.View, {
95
88
  style: [{
96
89
  width: resolvedAvatarSize,
@@ -108,7 +101,7 @@ const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
108
101
  }, animatedStyle]
109
102
  }), [animatedStyle, blockColor, resolvedTitleWidth, round, title, titleHeight, tokens.radius]);
110
103
  const rowNodes = useMemo(() => rows <= 0 ? null : /*#__PURE__*/React.createElement(View, {
111
- style: styles.rows
104
+ style: S.rows
112
105
  }, rowWidths.map((width, index) => /*#__PURE__*/React.createElement(Animated.View, {
113
106
  key: index,
114
107
  testID: `rv-skeleton-row-${index}`,
@@ -120,30 +113,30 @@ const Skeleton = /*#__PURE__*/React.forwardRef((props, ref) => {
120
113
  borderRadius: round ? tokens.radius : 0
121
114
  }, animatedStyle]
122
115
  }))), [animatedStyle, blockColor, rowHeights, rowWidths, rows, round, title, tokens.radius, tokens.spacing.rowGap]);
123
- if (!loading) {
124
- return /*#__PURE__*/React.createElement(View, _extends({
125
- ref: ref,
126
- style: style
127
- }, rest), children);
128
- }
116
+ if (!loading) return /*#__PURE__*/React.createElement(View, _extends({
117
+ ref: ref,
118
+ style: style
119
+ }, rest), children);
129
120
  return /*#__PURE__*/React.createElement(View, _extends({
130
121
  ref: ref,
131
122
  style: containerStyles
132
123
  }, rest), avatarNode, /*#__PURE__*/React.createElement(View, {
133
- style: styles.content
124
+ style: S.cnt
134
125
  }, titleNode, rowNodes));
135
- });
136
- const styles = StyleSheet.create({
137
- container: {
126
+ };
127
+ const S = StyleSheet.create({
128
+ ctr: {
138
129
  flexDirection: 'row',
139
130
  alignItems: 'flex-start'
140
131
  },
141
- content: {
132
+ cnt: {
142
133
  flex: 1
143
134
  },
144
135
  rows: {
145
136
  width: '100%'
146
137
  }
147
138
  });
148
- Skeleton.displayName = 'Skeleton';
139
+ const SkeletonForwardRef = /*#__PURE__*/React.forwardRef(SkeletonImpl);
140
+ SkeletonForwardRef.displayName = 'Skeleton';
141
+ const Skeleton = /*#__PURE__*/React.memo(SkeletonForwardRef);
149
142
  export default Skeleton;
@@ -5,7 +5,6 @@ const createTokens = foundations => {
5
5
  spacing,
6
6
  radii
7
7
  } = foundations;
8
- const surfaceMuted = palette.default[100];
9
8
  return {
10
9
  defaults: {
11
10
  rowCount: 3,
@@ -16,7 +15,7 @@ const createTokens = foundations => {
16
15
  titleWidth: '40%'
17
16
  },
18
17
  colors: {
19
- block: surfaceMuted,
18
+ block: palette.default[100],
20
19
  highlight: '#ffffff'
21
20
  },
22
21
  radius: radii.sm,