react-native-system-ui 0.0.4 → 0.0.6

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 (371) hide show
  1. package/dist/cjs/components/action-sheet/ActionSheet.js +28 -22
  2. package/dist/cjs/components/area/Area.js +72 -6
  3. package/dist/cjs/components/area/tokens.js +11 -0
  4. package/dist/cjs/components/avatar/Avatar.js +42 -10
  5. package/dist/cjs/components/badge/Badge.js +10 -10
  6. package/dist/cjs/components/badge/tokens.js +4 -0
  7. package/dist/cjs/components/button/Button.js +16 -65
  8. package/dist/cjs/components/button/ButtonContext.js +7 -10
  9. package/dist/cjs/components/button/ButtonGroup.js +13 -15
  10. package/dist/cjs/components/button/tokens.js +1 -5
  11. package/dist/cjs/components/calendar/Calendar.js +23 -12
  12. package/dist/cjs/components/cascader/Cascader.js +18 -13
  13. package/dist/cjs/components/cell/Cell.js +3 -3
  14. package/dist/cjs/components/cell/CellGroup.js +26 -21
  15. package/dist/cjs/components/checkbox/Checkbox.js +5 -4
  16. package/dist/cjs/components/checkbox/CheckboxContext.js +7 -10
  17. package/dist/cjs/components/checkbox/CheckboxGroup.js +24 -21
  18. package/dist/cjs/components/circle/Circle.js +6 -6
  19. package/dist/cjs/components/collapse/Collapse.js +10 -10
  20. package/dist/cjs/components/config-provider/locale/en-US.js +66 -4
  21. package/dist/cjs/components/config-provider/locale/zh-CN.js +74 -2
  22. package/dist/cjs/components/config-provider/tokens.js +11 -0
  23. package/dist/cjs/components/count-down/CountDown.js +6 -6
  24. package/dist/cjs/components/datetime-picker/DatetimePicker.js +6 -6
  25. package/dist/cjs/components/datetime-picker/tokens.js +11 -0
  26. package/dist/cjs/components/dialog/Dialog.js +39 -34
  27. package/dist/cjs/components/dialog/tokens.js +1 -4
  28. package/dist/cjs/components/divider/Divider.js +36 -1
  29. package/dist/cjs/components/field/Field.js +303 -201
  30. package/dist/cjs/components/flex/Flex.js +7 -3
  31. package/dist/cjs/components/flex/FlexContext.js +7 -14
  32. package/dist/cjs/components/form/Form.js +112 -122
  33. package/dist/cjs/components/form/FormContext.js +7 -10
  34. package/dist/cjs/components/form/FormItem.js +30 -4
  35. package/dist/cjs/components/form/FormList.js +16 -3
  36. package/dist/cjs/components/form/tokens.js +11 -0
  37. package/dist/cjs/components/form/utils.js +2 -1
  38. package/dist/cjs/components/grid/Grid.js +45 -31
  39. package/dist/cjs/components/grid/GridContext.js +7 -10
  40. package/dist/cjs/components/grid/GridItem.js +22 -22
  41. package/dist/cjs/components/image/Image.js +17 -13
  42. package/dist/cjs/components/image-preview/ImagePreview.js +43 -41
  43. package/dist/cjs/components/index.js +43 -141
  44. package/dist/cjs/components/input/Input.js +19 -5
  45. package/dist/cjs/components/loading/Loading.js +10 -139
  46. package/dist/cjs/components/loading/tokens.js +0 -24
  47. package/dist/cjs/components/notice-bar/NoticeBar.js +45 -41
  48. package/dist/cjs/components/notify/Notify.js +72 -30
  49. package/dist/cjs/components/notify/imperative.js +2 -2
  50. package/dist/cjs/components/notify/tokens.js +11 -1
  51. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +6 -6
  52. package/dist/cjs/components/overlay/Overlay.js +70 -77
  53. package/dist/cjs/components/overlay/index.js +13 -27
  54. package/dist/cjs/components/overlay/tokens.js +4 -31
  55. package/dist/cjs/components/password-input/PasswordInput.js +2 -41
  56. package/dist/cjs/components/password-input/tokens.js +53 -0
  57. package/dist/cjs/components/picker/Picker.js +618 -38
  58. package/dist/cjs/components/popup/Popup.js +60 -47
  59. package/dist/cjs/components/portal/Portal.js +39 -31
  60. package/dist/cjs/components/portal/PortalHost.js +258 -213
  61. package/dist/cjs/components/portal/tokens.js +11 -0
  62. package/dist/cjs/components/progress/Progress.js +77 -36
  63. package/dist/cjs/components/progress/index.js +6 -0
  64. package/dist/cjs/components/radio/Radio.js +35 -12
  65. package/dist/cjs/components/radio/RadioContext.js +7 -10
  66. package/dist/cjs/components/radio/RadioGroup.js +23 -20
  67. package/dist/cjs/components/safe-area-view/tokens.js +11 -0
  68. package/dist/cjs/components/search/Search.js +16 -16
  69. package/dist/cjs/components/selector/Selector.js +6 -6
  70. package/dist/cjs/components/share-sheet/ShareSheet.js +50 -46
  71. package/dist/cjs/components/sidebar/Sidebar.js +27 -22
  72. package/dist/cjs/components/sidebar/SidebarItem.js +27 -22
  73. package/dist/cjs/components/skeleton/Skeleton.js +34 -21
  74. package/dist/cjs/components/slider/Slider.js +135 -78
  75. package/dist/cjs/components/stepper/Stepper.js +12 -10
  76. package/dist/cjs/components/swiper/Swiper.js +247 -710
  77. package/dist/cjs/components/swiper/SwiperItem.js +5 -33
  78. package/dist/cjs/components/swiper/tokens.js +11 -0
  79. package/dist/cjs/components/switch/Switch.js +46 -98
  80. package/dist/cjs/components/switch/tokens.js +1 -55
  81. package/dist/cjs/components/tabbar/Tabbar.js +26 -22
  82. package/dist/cjs/components/tabbar/TabbarItem.js +23 -22
  83. package/dist/cjs/components/tabbar/tokens.js +0 -2
  84. package/dist/cjs/components/tabs/Tabs.js +268 -94
  85. package/dist/cjs/components/tabs/index.js +4 -5
  86. package/dist/cjs/components/toast/Toast.js +72 -27
  87. package/dist/cjs/components/toast/imperative.js +2 -2
  88. package/dist/cjs/hooks/gesture/useGestureScroll.js +1 -2
  89. package/dist/cjs/hooks/index.js +12 -12
  90. package/dist/cjs/hooks/overlay/index.js +27 -0
  91. package/dist/cjs/hooks/useHairline.js +0 -4
  92. package/dist/cjs/platform/scrollLock.js +1 -1
  93. package/dist/cjs/utils/compare.js +26 -0
  94. package/dist/cjs/utils/index.js +11 -0
  95. package/dist/es/components/action-sheet/ActionSheet.js +29 -23
  96. package/dist/es/components/area/Area.js +73 -7
  97. package/dist/es/components/area/tokens.js +5 -0
  98. package/dist/es/components/avatar/Avatar.js +42 -10
  99. package/dist/es/components/badge/Badge.js +11 -11
  100. package/dist/es/components/badge/tokens.js +4 -0
  101. package/dist/es/components/button/Button.js +17 -65
  102. package/dist/es/components/button/ButtonContext.js +1 -2
  103. package/dist/es/components/button/ButtonGroup.js +10 -12
  104. package/dist/es/components/button/tokens.js +1 -5
  105. package/dist/es/components/calendar/Calendar.js +24 -13
  106. package/dist/es/components/cascader/Cascader.js +16 -11
  107. package/dist/es/components/cell/Cell.js +4 -4
  108. package/dist/es/components/cell/CellGroup.js +25 -20
  109. package/dist/es/components/checkbox/Checkbox.js +5 -4
  110. package/dist/es/components/checkbox/CheckboxContext.js +1 -2
  111. package/dist/es/components/checkbox/CheckboxGroup.js +24 -21
  112. package/dist/es/components/circle/Circle.js +7 -7
  113. package/dist/es/components/collapse/Collapse.js +11 -11
  114. package/dist/es/components/config-provider/locale/en-US.js +66 -4
  115. package/dist/es/components/config-provider/locale/zh-CN.js +74 -2
  116. package/dist/es/components/config-provider/tokens.js +5 -0
  117. package/dist/es/components/count-down/CountDown.js +7 -7
  118. package/dist/es/components/datetime-picker/DatetimePicker.js +7 -7
  119. package/dist/es/components/datetime-picker/tokens.js +5 -0
  120. package/dist/es/components/dialog/Dialog.js +40 -35
  121. package/dist/es/components/dialog/tokens.js +1 -4
  122. package/dist/es/components/divider/Divider.js +36 -1
  123. package/dist/es/components/field/Field.js +304 -202
  124. package/dist/es/components/flex/Flex.js +5 -1
  125. package/dist/es/components/flex/FlexContext.js +1 -6
  126. package/dist/es/components/form/Form.js +89 -99
  127. package/dist/es/components/form/FormContext.js +1 -2
  128. package/dist/es/components/form/FormItem.js +32 -6
  129. package/dist/es/components/form/FormList.js +18 -5
  130. package/dist/es/components/form/tokens.js +5 -0
  131. package/dist/es/components/form/utils.js +1 -0
  132. package/dist/es/components/grid/Grid.js +43 -29
  133. package/dist/es/components/grid/GridContext.js +1 -2
  134. package/dist/es/components/grid/GridItem.js +24 -24
  135. package/dist/es/components/image/Image.js +18 -14
  136. package/dist/es/components/image-preview/ImagePreview.js +44 -42
  137. package/dist/es/components/index.js +2 -17
  138. package/dist/es/components/input/Input.js +20 -6
  139. package/dist/es/components/loading/Loading.js +10 -139
  140. package/dist/es/components/loading/tokens.js +0 -24
  141. package/dist/es/components/notice-bar/NoticeBar.js +46 -42
  142. package/dist/es/components/notify/Notify.js +72 -30
  143. package/dist/es/components/notify/imperative.js +2 -2
  144. package/dist/es/components/notify/tokens.js +5 -1
  145. package/dist/es/components/number-keyboard/NumberKeyboard.js +7 -7
  146. package/dist/es/components/overlay/Overlay.js +58 -75
  147. package/dist/es/components/overlay/index.js +3 -4
  148. package/dist/es/components/overlay/tokens.js +3 -29
  149. package/dist/es/components/password-input/PasswordInput.js +1 -40
  150. package/dist/es/components/password-input/tokens.js +41 -0
  151. package/dist/es/components/picker/Picker.js +610 -34
  152. package/dist/es/components/popup/Popup.js +62 -49
  153. package/dist/es/components/portal/Portal.js +37 -31
  154. package/dist/es/components/portal/PortalHost.js +257 -211
  155. package/dist/es/components/portal/tokens.js +5 -0
  156. package/dist/es/components/progress/Progress.js +76 -36
  157. package/dist/es/components/progress/index.js +2 -1
  158. package/dist/es/components/radio/Radio.js +37 -14
  159. package/dist/es/components/radio/RadioContext.js +1 -2
  160. package/dist/es/components/radio/RadioGroup.js +23 -20
  161. package/dist/es/components/safe-area-view/tokens.js +5 -0
  162. package/dist/es/components/search/Search.js +17 -17
  163. package/dist/es/components/selector/Selector.js +7 -7
  164. package/dist/es/components/share-sheet/ShareSheet.js +51 -47
  165. package/dist/es/components/sidebar/Sidebar.js +26 -21
  166. package/dist/es/components/sidebar/SidebarItem.js +26 -22
  167. package/dist/es/components/skeleton/Skeleton.js +35 -22
  168. package/dist/es/components/slider/Slider.js +132 -75
  169. package/dist/es/components/stepper/Stepper.js +13 -11
  170. package/dist/es/components/swiper/Swiper.js +248 -711
  171. package/dist/es/components/swiper/SwiperItem.js +1 -21
  172. package/dist/es/components/swiper/tokens.js +5 -0
  173. package/dist/es/components/switch/Switch.js +49 -101
  174. package/dist/es/components/switch/tokens.js +1 -49
  175. package/dist/es/components/tabbar/Tabbar.js +27 -23
  176. package/dist/es/components/tabbar/TabbarItem.js +22 -22
  177. package/dist/es/components/tabbar/tokens.js +0 -2
  178. package/dist/es/components/tabs/Tabs.js +264 -90
  179. package/dist/es/components/tabs/index.js +1 -2
  180. package/dist/es/components/toast/Toast.js +72 -28
  181. package/dist/es/components/toast/imperative.js +2 -2
  182. package/dist/es/hooks/gesture/useGestureScroll.js +1 -2
  183. package/dist/es/hooks/index.js +1 -1
  184. package/dist/es/hooks/overlay/index.js +3 -0
  185. package/dist/es/hooks/useHairline.js +0 -4
  186. package/dist/es/platform/scrollLock.js +1 -1
  187. package/dist/es/utils/compare.js +18 -0
  188. package/dist/es/utils/index.js +1 -1
  189. package/dist/types/components/area/tokens.d.ts +3 -0
  190. package/dist/types/components/avatar/Avatar.d.ts +4 -2
  191. package/dist/types/components/button/ButtonContext.d.ts +2 -16
  192. package/dist/types/components/button/ButtonGroup.d.ts +14 -1
  193. package/dist/types/components/button/index.d.ts +1 -1
  194. package/dist/types/components/checkbox/CheckboxContext.d.ts +2 -16
  195. package/dist/types/components/checkbox/CheckboxGroup.d.ts +15 -1
  196. package/dist/types/components/collapse/Collapse.d.ts +0 -1
  197. package/dist/types/components/config-provider/LocaleContext.d.ts +2 -74
  198. package/dist/types/components/config-provider/tokens.d.ts +3 -0
  199. package/dist/types/components/config-provider/useLocale.d.ts +1 -74
  200. package/dist/types/components/datetime-picker/tokens.d.ts +3 -0
  201. package/dist/types/components/flex/Flex.d.ts +6 -0
  202. package/dist/types/components/flex/FlexContext.d.ts +2 -8
  203. package/dist/types/components/form/Form.d.ts +15 -1
  204. package/dist/types/components/form/FormContext.d.ts +2 -17
  205. package/dist/types/components/form/tokens.d.ts +3 -0
  206. package/dist/types/components/form/utils.d.ts +1 -0
  207. package/dist/types/components/grid/Grid.d.ts +16 -1
  208. package/dist/types/components/grid/GridContext.d.ts +2 -17
  209. package/dist/types/components/index.d.ts +3 -33
  210. package/dist/types/components/loading/index.d.ts +1 -1
  211. package/dist/types/components/notify/Notify.d.ts +1 -0
  212. package/dist/types/components/overlay/Overlay.d.ts +6 -1
  213. package/dist/types/components/overlay/index.d.ts +2 -3
  214. package/dist/types/components/overlay/tokens.d.ts +2 -3
  215. package/dist/types/components/password-input/PasswordInput.d.ts +0 -39
  216. package/dist/types/components/password-input/tokens.d.ts +40 -0
  217. package/dist/types/components/picker/Picker.d.ts +18 -2
  218. package/dist/types/components/picker/index.d.ts +1 -1
  219. package/dist/types/components/portal/Portal.d.ts +4 -6
  220. package/dist/types/components/portal/PortalHost.d.ts +1 -15
  221. package/dist/types/components/portal/tokens.d.ts +3 -0
  222. package/dist/types/components/progress/Progress.d.ts +4 -0
  223. package/dist/types/components/progress/index.d.ts +2 -1
  224. package/dist/types/components/radio/RadioContext.d.ts +2 -13
  225. package/dist/types/components/radio/RadioGroup.d.ts +12 -1
  226. package/dist/types/components/safe-area-view/tokens.d.ts +3 -0
  227. package/dist/types/components/swiper/Swiper.d.ts +4 -2
  228. package/dist/types/components/swiper/SwiperItem.d.ts +1 -5
  229. package/dist/types/components/swiper/tokens.d.ts +3 -0
  230. package/dist/types/components/tabs/Tabs.d.ts +8 -4
  231. package/dist/types/components/tabs/index.d.ts +3 -1
  232. package/dist/types/components/toast/Toast.d.ts +1 -4
  233. package/dist/types/hooks/aria/useAriaListBox.d.ts +0 -6
  234. package/dist/types/hooks/aria/useAriaOverlay.d.ts +0 -10
  235. package/dist/types/hooks/aria/useAriaPress.d.ts +0 -20
  236. package/dist/types/hooks/aria/useAriaToggle.d.ts +0 -3
  237. package/dist/types/hooks/index.d.ts +1 -1
  238. package/dist/types/hooks/overlay/index.d.ts +2 -0
  239. package/dist/types/hooks/useHairline.d.ts +0 -21
  240. package/dist/types/utils/compare.d.ts +2 -0
  241. package/dist/types/utils/index.d.ts +1 -0
  242. package/package.json +10 -48
  243. package/dist/cjs/components/area/utils.js +0 -74
  244. package/dist/cjs/components/cascader/utils.js +0 -20
  245. package/dist/cjs/components/config-provider/locale/base.js +0 -80
  246. package/dist/cjs/components/dropdown-menu/DropdownItem.js +0 -288
  247. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +0 -340
  248. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +0 -21
  249. package/dist/cjs/components/dropdown-menu/index.js +0 -25
  250. package/dist/cjs/components/dropdown-menu/tokens.js +0 -67
  251. package/dist/cjs/components/field/utils.js +0 -24
  252. package/dist/cjs/components/index-bar/IndexAnchor.js +0 -74
  253. package/dist/cjs/components/index-bar/IndexBar.js +0 -436
  254. package/dist/cjs/components/index-bar/index.js +0 -25
  255. package/dist/cjs/components/index-bar/tokens.js +0 -45
  256. package/dist/cjs/components/list/List.js +0 -165
  257. package/dist/cjs/components/list/index.js +0 -9
  258. package/dist/cjs/components/list/tokens.js +0 -39
  259. package/dist/cjs/components/notify/defaults.js +0 -15
  260. package/dist/cjs/components/pagination/Pagination.js +0 -160
  261. package/dist/cjs/components/pagination/index.js +0 -22
  262. package/dist/cjs/components/pagination/tokens.js +0 -103
  263. package/dist/cjs/components/picker/WheelPicker.js +0 -492
  264. package/dist/cjs/components/picker/utils.js +0 -138
  265. package/dist/cjs/components/pull-refresh/PullRefresh.js +0 -378
  266. package/dist/cjs/components/pull-refresh/index.js +0 -16
  267. package/dist/cjs/components/pull-refresh/tokens.js +0 -22
  268. package/dist/cjs/components/rate/Rate.js +0 -269
  269. package/dist/cjs/components/rate/index.js +0 -15
  270. package/dist/cjs/components/rate/tokens.js +0 -60
  271. package/dist/cjs/components/slider/utils.js +0 -60
  272. package/dist/cjs/components/swiper/useSwiperWeb.js +0 -209
  273. package/dist/cjs/components/swiper/utils.js +0 -49
  274. package/dist/cjs/components/tabs/TabPane.js +0 -9
  275. package/dist/cjs/components/tabs/useTabsAnimation.js +0 -74
  276. package/dist/cjs/components/tabs/useTabsScroll.js +0 -133
  277. package/dist/cjs/components/tabs/utils.js +0 -34
  278. package/dist/cjs/components/types.js +0 -1
  279. package/dist/cjs/components/uploader/Uploader.js +0 -557
  280. package/dist/cjs/components/uploader/index.js +0 -22
  281. package/dist/cjs/components/uploader/tokens.js +0 -58
  282. package/dist/cjs/components/uploader/utils.js +0 -72
  283. package/dist/cjs/hooks/usePresenceAnimation.js +0 -70
  284. package/dist/es/components/area/utils.js +0 -67
  285. package/dist/es/components/cascader/utils.js +0 -13
  286. package/dist/es/components/config-provider/locale/base.js +0 -74
  287. package/dist/es/components/dropdown-menu/DropdownItem.js +0 -269
  288. package/dist/es/components/dropdown-menu/DropdownMenu.js +0 -320
  289. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +0 -7
  290. package/dist/es/components/dropdown-menu/index.js +0 -7
  291. package/dist/es/components/dropdown-menu/tokens.js +0 -61
  292. package/dist/es/components/field/utils.js +0 -17
  293. package/dist/es/components/index-bar/IndexAnchor.js +0 -55
  294. package/dist/es/components/index-bar/IndexBar.js +0 -417
  295. package/dist/es/components/index-bar/index.js +0 -7
  296. package/dist/es/components/index-bar/tokens.js +0 -39
  297. package/dist/es/components/list/List.js +0 -145
  298. package/dist/es/components/list/index.js +0 -2
  299. package/dist/es/components/list/tokens.js +0 -32
  300. package/dist/es/components/notify/defaults.js +0 -9
  301. package/dist/es/components/pagination/Pagination.js +0 -141
  302. package/dist/es/components/pagination/index.js +0 -4
  303. package/dist/es/components/pagination/tokens.js +0 -91
  304. package/dist/es/components/picker/WheelPicker.js +0 -473
  305. package/dist/es/components/picker/utils.js +0 -127
  306. package/dist/es/components/pull-refresh/PullRefresh.js +0 -359
  307. package/dist/es/components/pull-refresh/index.js +0 -3
  308. package/dist/es/components/pull-refresh/tokens.js +0 -16
  309. package/dist/es/components/rate/Rate.js +0 -250
  310. package/dist/es/components/rate/index.js +0 -3
  311. package/dist/es/components/rate/tokens.js +0 -53
  312. package/dist/es/components/slider/utils.js +0 -49
  313. package/dist/es/components/swiper/useSwiperWeb.js +0 -190
  314. package/dist/es/components/swiper/utils.js +0 -37
  315. package/dist/es/components/tabs/TabPane.js +0 -3
  316. package/dist/es/components/tabs/useTabsAnimation.js +0 -55
  317. package/dist/es/components/tabs/useTabsScroll.js +0 -114
  318. package/dist/es/components/tabs/utils.js +0 -19
  319. package/dist/es/components/types.js +0 -1
  320. package/dist/es/components/uploader/Uploader.js +0 -537
  321. package/dist/es/components/uploader/index.js +0 -4
  322. package/dist/es/components/uploader/tokens.js +0 -52
  323. package/dist/es/components/uploader/utils.js +0 -60
  324. package/dist/es/hooks/usePresenceAnimation.js +0 -51
  325. package/dist/types/components/area/utils.d.ts +0 -2
  326. package/dist/types/components/cascader/utils.d.ts +0 -6
  327. package/dist/types/components/config-provider/locale/base.d.ts +0 -74
  328. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +0 -4
  329. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +0 -4
  330. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +0 -17
  331. package/dist/types/components/dropdown-menu/index.d.ts +0 -8
  332. package/dist/types/components/dropdown-menu/tokens.d.ts +0 -52
  333. package/dist/types/components/field/utils.d.ts +0 -4
  334. package/dist/types/components/index-bar/IndexAnchor.d.ts +0 -4
  335. package/dist/types/components/index-bar/IndexBar.d.ts +0 -4
  336. package/dist/types/components/index-bar/index.d.ts +0 -9
  337. package/dist/types/components/index-bar/tokens.d.ts +0 -31
  338. package/dist/types/components/list/List.d.ts +0 -4
  339. package/dist/types/components/list/index.d.ts +0 -3
  340. package/dist/types/components/list/tokens.d.ts +0 -4
  341. package/dist/types/components/notify/defaults.d.ts +0 -10
  342. package/dist/types/components/pagination/Pagination.d.ts +0 -5
  343. package/dist/types/components/pagination/index.d.ts +0 -5
  344. package/dist/types/components/pagination/tokens.d.ts +0 -2
  345. package/dist/types/components/picker/WheelPicker.d.ts +0 -21
  346. package/dist/types/components/picker/utils.d.ts +0 -17
  347. package/dist/types/components/pull-refresh/PullRefresh.d.ts +0 -5
  348. package/dist/types/components/pull-refresh/index.d.ts +0 -4
  349. package/dist/types/components/pull-refresh/tokens.d.ts +0 -10
  350. package/dist/types/components/rate/Rate.d.ts +0 -4
  351. package/dist/types/components/rate/index.d.ts +0 -4
  352. package/dist/types/components/rate/tokens.d.ts +0 -4
  353. package/dist/types/components/slider/utils.d.ts +0 -42
  354. package/dist/types/components/swiper/useSwiperWeb.d.ts +0 -41
  355. package/dist/types/components/swiper/utils.d.ts +0 -17
  356. package/dist/types/components/tabs/TabPane.d.ts +0 -4
  357. package/dist/types/components/tabs/useTabsAnimation.d.ts +0 -30
  358. package/dist/types/components/tabs/useTabsScroll.d.ts +0 -23
  359. package/dist/types/components/tabs/utils.d.ts +0 -5
  360. package/dist/types/components/types.d.ts +0 -59
  361. package/dist/types/components/uploader/Uploader.d.ts +0 -4
  362. package/dist/types/components/uploader/index.d.ts +0 -5
  363. package/dist/types/components/uploader/tokens.d.ts +0 -42
  364. package/dist/types/components/uploader/utils.d.ts +0 -11
  365. package/dist/types/hooks/usePresenceAnimation.d.ts +0 -20
  366. /package/dist/cjs/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  367. /package/dist/cjs/{components → hooks}/overlay/useOverlayStack.js +0 -0
  368. /package/dist/es/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  369. /package/dist/es/{components → hooks}/overlay/useOverlayStack.js +0 -0
  370. /package/dist/types/{components → hooks}/overlay/OverlayStackStore.d.ts +0 -0
  371. /package/dist/types/{components → hooks}/overlay/useOverlayStack.d.ts +0 -0
@@ -1,6 +1,6 @@
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, useContext, useEffect, useRef } from 'react';
3
- import { Pressable, Text, View } from 'react-native';
2
+ import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
3
+ import { Platform, Pressable, Text, View } from 'react-native';
4
4
  import { useRadio } from '@react-native-aria/radio';
5
5
  import { useToggleState } from '@react-stately/toggle';
6
6
  import { RadioGroupContext } from './RadioContext';
@@ -42,7 +42,8 @@ export const Radio = /*#__PURE__*/React.memo(props => {
42
42
  const shape = shapeProp ?? tokens.defaults.shape;
43
43
  const standaloneKey = serializedValue ?? 'standalone';
44
44
  const inputRef = useRef(null);
45
- const resolvedAccessibilityLabel = accessibilityLabel ?? ariaLabel ?? (isText(children) ? String(children) : undefined) ?? serializedValue ?? 'radio';
45
+ const inputElementRef = useRef(null);
46
+ const resolvedAccessibilityLabel = useMemo(() => accessibilityLabel ?? ariaLabel ?? (isText(children) ? String(children) : undefined) ?? serializedValue ?? 'radio', [accessibilityLabel, ariaLabel, children, serializedValue]);
46
47
  const {
47
48
  isSelected: standaloneSelected,
48
49
  setSelected: setStandaloneSelected
@@ -71,6 +72,7 @@ export const Radio = /*#__PURE__*/React.memo(props => {
71
72
  onFocus,
72
73
  ...compatibleRest
73
74
  } = rest;
75
+ const ariaRef = Platform.OS === 'web' ? inputElementRef : inputRef;
74
76
  const {
75
77
  inputProps
76
78
  } = useRadio({
@@ -79,7 +81,7 @@ export const Radio = /*#__PURE__*/React.memo(props => {
79
81
  'aria-label': resolvedAccessibilityLabel,
80
82
  accessibilityLabel: resolvedAccessibilityLabel,
81
83
  ...compatibleRest
82
- }, state, inputRef);
84
+ }, state, ariaRef);
83
85
  const isChecked = isGroup && group && serializedValue !== undefined ? group.state.selectedValue === serializedValue : checked !== undefined ? checked : standaloneSelected;
84
86
  const inputOnPress = inputProps?.onPress;
85
87
  const handlePress = useCallback(e => {
@@ -105,14 +107,14 @@ export const Radio = /*#__PURE__*/React.memo(props => {
105
107
  } : {};
106
108
  const borderColor = resolvedDisabled ? tokens.colors.disabledBorder : isChecked ? resolvedCheckedColor : tokens.colors.border;
107
109
  const backgroundColor = resolvedDisabled ? tokens.colors.disabledBackground : tokens.colors.background;
108
- const spacingStyle = resolvedLabelPosition === 'left' ? {
110
+ const spacingStyle = useMemo(() => resolvedLabelPosition === 'left' ? {
109
111
  marginRight: tokens.spacing.gap
110
112
  } : {
111
113
  marginLeft: tokens.spacing.gap
112
- };
113
- const labelColor = resolvedDisabled ? tokens.colors.labelDisabled : tokens.colors.label;
114
- const borderRadius = shape === 'square' ? tokens.radii.square : tokens.radii.round;
115
- const labelNode = children === null || children === undefined || children === false ? null : /*#__PURE__*/React.createElement(View, {
114
+ }, [resolvedLabelPosition, tokens.spacing.gap]);
115
+ const labelColor = useMemo(() => resolvedDisabled ? tokens.colors.labelDisabled : tokens.colors.label, [resolvedDisabled, tokens.colors.label, tokens.colors.labelDisabled]);
116
+ const borderRadius = useMemo(() => shape === 'square' ? tokens.radii.square : tokens.radii.round, [shape, tokens.radii.round, tokens.radii.square]);
117
+ const labelNode = useMemo(() => children === null || children === undefined || children === false ? null : /*#__PURE__*/React.createElement(View, {
116
118
  style: [tokens.layout.labelWrapper, spacingStyle],
117
119
  pointerEvents: "none",
118
120
  accessible: false
@@ -125,9 +127,9 @@ export const Radio = /*#__PURE__*/React.memo(props => {
125
127
  fontFamily: tokens.typography.fontFamily,
126
128
  fontWeight: tokens.typography.fontWeight
127
129
  }, labelStyle]
128
- }, children) : children);
130
+ }, children) : children), [children, labelColor, labelStyle, spacingStyle, tokens.layout.label, tokens.layout.labelWrapper, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.fontWeight, tokens.typography.lineHeightMultiplier]);
129
131
  const interactive = !resolvedDisabled && !resolvedLabelDisabled;
130
- const defaultIcon = /*#__PURE__*/React.createElement(View, {
132
+ const defaultIcon = useMemo(() => /*#__PURE__*/React.createElement(View, {
131
133
  style: [tokens.layout.icon, {
132
134
  width: resolvedIconSize,
133
135
  height: resolvedIconSize,
@@ -143,14 +145,35 @@ export const Radio = /*#__PURE__*/React.memo(props => {
143
145
  borderRadius,
144
146
  backgroundColor: resolvedCheckedColor
145
147
  }
146
- }) : null);
148
+ }) : null), [backgroundColor, borderColor, borderRadius, isChecked, resolvedCheckedColor, resolvedIconSize, tokens.borders.width, tokens.layout.icon, tokens.sizing.dotScale]);
147
149
  const iconVisual = iconRender ? iconRender({
148
150
  checked: Boolean(isChecked),
149
151
  disabled: Boolean(resolvedDisabled)
150
152
  }) ?? null : defaultIcon;
153
+ const webInputStyle = {
154
+ position: 'absolute',
155
+ width: 1,
156
+ height: 1,
157
+ margin: -1,
158
+ border: 0,
159
+ padding: 0,
160
+ overflow: 'hidden',
161
+ clip: 'rect(0 0 0 0)',
162
+ clipPath: 'inset(50%)',
163
+ whiteSpace: 'nowrap'
164
+ };
165
+ const {
166
+ ref: _ignoredAriaRefProp,
167
+ ...webInputProps
168
+ } = inputProps ?? {};
169
+ const webInputNode = Platform.OS === 'web' ? /*#__PURE__*/React.createElement("input", _extends({
170
+ ref: inputElementRef
171
+ }, webInputProps, {
172
+ style: webInputStyle
173
+ })) : null;
151
174
  const iconNode = interactive ? /*#__PURE__*/React.createElement(View, {
152
175
  style: tokens.layout.iconWrapper
153
- }, iconVisual) : /*#__PURE__*/React.createElement(Pressable, _extends({}, mergedInputProps, {
176
+ }, iconVisual, webInputNode) : /*#__PURE__*/React.createElement(Pressable, _extends({}, mergedInputProps, {
154
177
  ref: inputRef,
155
178
  testID: serializedValue !== undefined ? `radio-icon-${serializedValue}` : undefined,
156
179
  disabled: resolvedDisabled,
@@ -160,7 +183,7 @@ export const Radio = /*#__PURE__*/React.memo(props => {
160
183
  disabled: resolvedDisabled
161
184
  },
162
185
  style: tokens.layout.iconWrapper
163
- }), iconVisual);
186
+ }), iconVisual, webInputNode);
164
187
  const left = resolvedLabelPosition === 'left';
165
188
  const first = left ? labelNode : iconNode;
166
189
  const second = left ? iconNode : labelNode;
@@ -1,2 +1 @@
1
- import React from 'react';
2
- export const RadioGroupContext = /*#__PURE__*/React.createContext(null);
1
+ export { RadioGroupContext } from './RadioGroup';
@@ -1,10 +1,10 @@
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, useRef } from 'react';
2
+ import React, { useCallback, useMemo, useRef } from 'react';
3
3
  import { Platform, View } from 'react-native';
4
4
  import { useRadioGroup } from '@react-native-aria/radio';
5
5
  import { useRadioGroupState } from '@react-stately/radio';
6
- import { RadioGroupContext } from './RadioContext';
7
6
  import { useRadioTokens } from './tokens';
7
+ export const RadioGroupContext = /*#__PURE__*/React.createContext(null);
8
8
  export const RadioGroup = props => {
9
9
  const {
10
10
  value,
@@ -52,18 +52,19 @@ export const RadioGroup = props => {
52
52
  'aria-label': accessibilityLabel,
53
53
  name
54
54
  }, state);
55
- const resolvedRadioGroupProps = {
55
+ const resolvedRadioGroupProps = useMemo(() => ({
56
56
  ...(radioGroupProps ?? {}),
57
57
  ...(accessibilityHint && {
58
58
  'aria-describedby': accessibilityHint
59
59
  }),
60
60
  'aria-disabled': disabled
61
- };
61
+ }), [accessibilityHint, disabled, radioGroupProps]);
62
62
  const supportsGap = Platform.OS === 'web';
63
- const childrenArray = React.Children.toArray(children).filter(child => child != null && typeof child !== 'boolean');
64
- const itemStyleForIndex = index => {
63
+ const childrenArray = useMemo(() => React.Children.toArray(children).filter(child => child != null && typeof child !== 'boolean'), [children]);
64
+ const childrenLength = childrenArray.length;
65
+ const itemStyleForIndex = useCallback(index => {
65
66
  if (supportsGap) return tokens.layout.groupItem;
66
- const isLast = index === childrenArray.length - 1;
67
+ const isLast = index === childrenLength - 1;
67
68
  if (direction === 'horizontal') {
68
69
  return [tokens.layout.groupItem, !isLast && {
69
70
  marginRight: gap
@@ -72,12 +73,12 @@ export const RadioGroup = props => {
72
73
  return isLast ? tokens.layout.groupItem : [tokens.layout.groupItem, {
73
74
  marginBottom: gap
74
75
  }];
75
- };
76
- const containerGapStyle = supportsGap ? {
76
+ }, [childrenLength, direction, gap, supportsGap, tokens.layout.groupItem]);
77
+ const containerGapStyle = useMemo(() => supportsGap ? {
77
78
  columnGap: direction === 'horizontal' ? gap : undefined,
78
79
  rowGap: gap
79
- } : null;
80
- const contextValue = {
80
+ } : null, [direction, gap, supportsGap]);
81
+ const contextValue = useMemo(() => ({
81
82
  state,
82
83
  direction,
83
84
  iconSize,
@@ -85,14 +86,9 @@ export const RadioGroup = props => {
85
86
  labelDisabled,
86
87
  registerValue,
87
88
  unregisterValue
88
- };
89
- return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {
90
- value: contextValue
91
- }, /*#__PURE__*/React.createElement(View, _extends({}, resolvedRadioGroupProps, viewProps, {
92
- accessibilityLabel: accessibilityLabel,
93
- accessibilityHint: accessibilityHint,
94
- style: [direction === 'horizontal' ? tokens.layout.groupHorizontal : tokens.layout.groupVertical, containerGapStyle, style]
95
- }), supportsGap ? childrenArray : childrenArray.map((child, index) => {
89
+ }), [checkedColor, direction, iconSize, labelDisabled, registerValue, state, unregisterValue]);
90
+ const containerStyle = useMemo(() => [direction === 'horizontal' ? tokens.layout.groupHorizontal : tokens.layout.groupVertical, containerGapStyle, style], [containerGapStyle, direction, style, tokens.layout.groupHorizontal, tokens.layout.groupVertical]);
91
+ const renderedChildren = useMemo(() => supportsGap ? childrenArray : childrenArray.map((child, index) => {
96
92
  const key = /*#__PURE__*/React.isValidElement(child) && child.key !== null ? child.key : index;
97
93
  const itemStyle = itemStyleForIndex(index);
98
94
  if (/*#__PURE__*/React.isValidElement(child) && child.type !== React.Fragment) {
@@ -106,5 +102,12 @@ export const RadioGroup = props => {
106
102
  key: key,
107
103
  style: itemStyle
108
104
  }, child);
109
- })));
105
+ }), [childrenArray, itemStyleForIndex, supportsGap]);
106
+ return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {
107
+ value: contextValue
108
+ }, /*#__PURE__*/React.createElement(View, _extends({}, resolvedRadioGroupProps, viewProps, {
109
+ accessibilityLabel: accessibilityLabel,
110
+ accessibilityHint: accessibilityHint,
111
+ style: containerStyle
112
+ }), renderedChildren));
110
113
  };
@@ -0,0 +1,5 @@
1
+ import { createComponentTokensHook } from '../../design-system';
2
+ const createSafeAreaViewTokens = _foundations => {
3
+ return {};
4
+ };
5
+ export const useSafeAreaViewTokens = createComponentTokensHook('safeAreaView', createSafeAreaViewTokens);
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useImperativeHandle, useRef } from 'react';
2
+ import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
3
3
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { Search as SearchIcon } from 'react-native-system-icon';
5
5
  import { useAriaPress, useControllableValue } from '../../hooks';
@@ -41,7 +41,7 @@ const SearchComponent = (props, ref) => {
41
41
  defaultValue: ''
42
42
  });
43
43
  const inputValue = value ?? '';
44
- const resolvedInputAlign = align ?? inputAlign;
44
+ const resolvedInputAlign = useMemo(() => align ?? inputAlign, [align, inputAlign]);
45
45
  const handleChange = useCallback(next => {
46
46
  triggerChange(next);
47
47
  onChangeText?.(next);
@@ -54,18 +54,18 @@ const SearchComponent = (props, ref) => {
54
54
  onSearch?.(inputValue);
55
55
  onSubmitEditing?.(event);
56
56
  }, [inputValue, onSearch, onSubmitEditing]);
57
- const resolvedBackground = background ?? tokens.colors.background;
58
- const resolvedLeftIcon = leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
57
+ const resolvedBackground = useMemo(() => background ?? tokens.colors.background, [background, tokens.colors.background]);
58
+ const resolvedLeftIcon = useMemo(() => leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
59
59
  size: tokens.icon.size,
60
60
  fill: tokens.colors.icon,
61
61
  color: tokens.colors.icon
62
- });
63
- const resolvedClearTrigger = clearTrigger ?? tokens.defaults.clearTrigger;
64
- const resolvedReturnKeyType = returnKeyType ?? 'search';
65
- const shouldShowAction = !!action || showAction;
66
- const isCustomActionText = /*#__PURE__*/React.isValidElement(actionText);
67
- const shouldRenderCancelAction = shouldShowAction && !action && !isCustomActionText;
68
- const radius = shape === 'round' ? tokens.radius.round : tokens.radius.square;
62
+ }), [leftIcon, tokens.colors.icon, tokens.icon.size]);
63
+ const resolvedClearTrigger = useMemo(() => clearTrigger ?? tokens.defaults.clearTrigger, [clearTrigger, tokens.defaults.clearTrigger]);
64
+ const resolvedReturnKeyType = useMemo(() => returnKeyType ?? 'search', [returnKeyType]);
65
+ const shouldShowAction = useMemo(() => !!action || showAction, [action, showAction]);
66
+ const isCustomActionText = useMemo(() => /*#__PURE__*/React.isValidElement(actionText), [actionText]);
67
+ const shouldRenderCancelAction = useMemo(() => shouldShowAction && !action && !isCustomActionText, [action, isCustomActionText, shouldShowAction]);
68
+ const radius = useMemo(() => shape === 'round' ? tokens.radius.round : tokens.radius.square, [shape, tokens.radius.round, tokens.radius.square]);
69
69
  const inputRef = useRef(null);
70
70
  useImperativeHandle(ref, () => ({
71
71
  focus: () => inputRef.current?.focus(),
@@ -80,18 +80,18 @@ const SearchComponent = (props, ref) => {
80
80
  testID: 'rnsu-search-action'
81
81
  }
82
82
  });
83
- const containerStyles = [styles.container, {
83
+ const containerStyles = useMemo(() => [styles.container, {
84
84
  paddingHorizontal: tokens.spacing.paddingHorizontal,
85
85
  paddingVertical: tokens.spacing.paddingVertical,
86
86
  backgroundColor: resolvedBackground
87
- }, containerStyle];
88
- const contentStyles = [styles.content, {
87
+ }, containerStyle], [containerStyle, resolvedBackground, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical]);
88
+ const contentStyles = useMemo(() => [styles.content, {
89
89
  borderRadius: radius,
90
90
  paddingHorizontal: tokens.spacing.contentPaddingHorizontal,
91
91
  paddingVertical: tokens.spacing.contentPaddingVertical,
92
92
  backgroundColor: tokens.colors.contentBackground
93
- }];
94
- const labelNode = !label ? null : isText(label) ? /*#__PURE__*/React.createElement(Text, {
93
+ }], [radius, tokens.colors.contentBackground, tokens.spacing.contentPaddingHorizontal, tokens.spacing.contentPaddingVertical]);
94
+ const labelNode = useMemo(() => !label ? null : isText(label) ? /*#__PURE__*/React.createElement(Text, {
95
95
  style: {
96
96
  marginRight: tokens.spacing.labelGap,
97
97
  color: tokens.colors.label,
@@ -102,7 +102,7 @@ const SearchComponent = (props, ref) => {
102
102
  style: {
103
103
  marginRight: tokens.spacing.labelGap
104
104
  }
105
- }, label);
105
+ }, label), [label, tokens.colors.label, tokens.spacing.labelGap, tokens.typography.label, tokens.typography.labelWeight]);
106
106
  const actionNode = action ? /*#__PURE__*/React.createElement(View, {
107
107
  style: [styles.actionWrapper, {
108
108
  marginLeft: tokens.spacing.actionGap
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback } from 'react';
2
+ import React, { useCallback, useMemo } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { useSelectorTokens } from './tokens';
5
5
  import { useAriaPress, useControllableValue } from '../../hooks';
@@ -122,15 +122,15 @@ const SelectorImpl = props => {
122
122
  const [value = [], triggerChange] = useControllableValue(props, {
123
123
  defaultValue: []
124
124
  });
125
- const optionByValue = (() => {
125
+ const optionByValue = useMemo(() => {
126
126
  const map = new Map();
127
127
  for (const option of options) map.set(option.value, option);
128
128
  return map;
129
- })();
130
- const resolvedColumns = Math.max(1, Math.floor(columns));
131
- const basis = `${100 / resolvedColumns}%`;
132
- const itemMargin = tokens.spacing.gap / 2;
133
- const selectedSet = new Set(value);
129
+ }, [options]);
130
+ const resolvedColumns = useMemo(() => Math.max(1, Math.floor(columns)), [columns]);
131
+ const basis = useMemo(() => `${100 / resolvedColumns}%`, [resolvedColumns]);
132
+ const itemMargin = useMemo(() => tokens.spacing.gap / 2, [tokens.spacing.gap]);
133
+ const selectedSet = useMemo(() => new Set(value), [value]);
134
134
  const toggleOption = useCallback(option => {
135
135
  if (disabled || option.disabled) return;
136
136
  const active = selectedSet.has(option.value);
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback } from 'react';
2
+ import React, { useCallback, useMemo } from 'react';
3
3
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { useAriaPress } from '../../hooks';
5
5
  import { createHairlineView } from '../../utils/hairline';
@@ -13,20 +13,20 @@ const normalizeOptions = options => {
13
13
  }
14
14
  return [options];
15
15
  };
16
- const ShareSheetOptionItem = ({
16
+ const ShareSheetOptionItem = /*#__PURE__*/React.memo(({
17
17
  option,
18
18
  index,
19
19
  columns,
20
20
  tokens,
21
21
  onSelect
22
22
  }) => {
23
- const optionWidthStyle = {
23
+ const optionWidthStyle = useMemo(() => ({
24
24
  width: `${100 / columns}%`
25
- };
26
- const iconStyle = {
25
+ }), [columns]);
26
+ const iconStyle = useMemo(() => ({
27
27
  width: tokens.sizing.icon,
28
28
  height: tokens.sizing.icon
29
- };
29
+ }), [tokens.sizing.icon]);
30
30
  const press = useAriaPress({
31
31
  onPress: () => onSelect(option, index),
32
32
  extraProps: {
@@ -59,8 +59,8 @@ const ShareSheetOptionItem = ({
59
59
  paddingHorizontal: tokens.spacing.optionDescPaddingHorizontal
60
60
  }]
61
61
  }, option.description) : null);
62
- };
63
- const ShareSheetCancel = ({
62
+ });
63
+ const ShareSheetCancel = /*#__PURE__*/React.memo(({
64
64
  cancelText,
65
65
  tokens,
66
66
  onPress
@@ -88,7 +88,7 @@ const ShareSheetCancel = ({
88
88
  fontSize: tokens.typography.cancel
89
89
  }]
90
90
  }, cancelText) : cancelText));
91
- };
91
+ });
92
92
  const ShareSheet = props => {
93
93
  const {
94
94
  visible,
@@ -113,8 +113,8 @@ const ShareSheet = props => {
113
113
  ...popupProps
114
114
  } = props;
115
115
  const tokens = useShareSheetTokens(tokensOverride);
116
- const groups = normalizeOptions(options);
117
- const resolvedColumns = isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4;
116
+ const groups = useMemo(() => normalizeOptions(options), [options]);
117
+ const resolvedColumns = useMemo(() => isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4, [columns]);
118
118
  const hasTitle = isValidNode(title);
119
119
  const hasDescription = isValidNode(description);
120
120
  const hasCancelText = isValidNode(cancelText);
@@ -128,14 +128,14 @@ const ShareSheet = props => {
128
128
  if (closeOnSelect) close();
129
129
  }, [close, closeOnSelect, onSelect]);
130
130
  const onPopupClose = useCallback(() => close(true), [close]);
131
- const wrapperStyle = [styles.wrapper, {
131
+ const wrapperStyle = useMemo(() => [styles.wrapper, {
132
132
  backgroundColor: tokens.colors.background
133
- }];
134
- const groupRowStyle = [styles.optionsRow, {
133
+ }], [tokens.colors.background]);
134
+ const groupRowStyle = useMemo(() => [styles.optionsRow, {
135
135
  paddingLeft: tokens.spacing.gap,
136
136
  paddingVertical: 12
137
- }];
138
- const groupNodes = (() => {
137
+ }], [tokens.spacing.gap]);
138
+ const groupNodes = useMemo(() => {
139
139
  if (!groups.length) return null;
140
140
  let globalIndex = 0;
141
141
  return groups.map((group, groupIndex) => /*#__PURE__*/React.createElement(View, {
@@ -160,34 +160,40 @@ const ShareSheet = props => {
160
160
  onSelect: handleSelect
161
161
  });
162
162
  }))));
163
- })();
164
- const headerNode = !hasTitle && !hasDescription ? null : /*#__PURE__*/React.createElement(View, {
165
- style: [styles.header, {
166
- paddingTop: tokens.spacing.headerPaddingTop,
167
- paddingHorizontal: tokens.spacing.headerPaddingHorizontal,
168
- paddingBottom: tokens.spacing.headerPaddingBottom
169
- }]
170
- }, hasTitle ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
171
- style: [styles.title, {
172
- color: tokens.colors.title,
173
- fontSize: tokens.typography.title,
174
- marginTop: tokens.spacing.titleMarginTop
175
- }]
176
- }, title) : /*#__PURE__*/React.createElement(View, {
177
- style: [styles.node, {
178
- marginTop: tokens.spacing.nodeMarginTop
179
- }]
180
- }, title) : null, hasDescription ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
181
- style: [styles.description, {
182
- color: tokens.colors.description,
183
- fontSize: tokens.typography.description,
184
- marginTop: tokens.spacing.descriptionMarginTop
185
- }]
186
- }, description) : /*#__PURE__*/React.createElement(View, {
187
- style: [styles.node, {
188
- marginTop: tokens.spacing.nodeMarginTop
189
- }]
190
- }, description) : null);
163
+ }, [groups, groupRowStyle, handleSelect, resolvedColumns, tokens]);
164
+ const headerNode = useMemo(() => {
165
+ if (!hasTitle && !hasDescription) return null;
166
+ return /*#__PURE__*/React.createElement(View, {
167
+ style: [styles.header, {
168
+ paddingTop: tokens.spacing.headerPaddingTop,
169
+ paddingHorizontal: tokens.spacing.headerPaddingHorizontal,
170
+ paddingBottom: tokens.spacing.headerPaddingBottom
171
+ }]
172
+ }, hasTitle ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
173
+ style: [styles.title, {
174
+ color: tokens.colors.title,
175
+ fontSize: tokens.typography.title,
176
+ marginTop: tokens.spacing.titleMarginTop
177
+ }]
178
+ }, title) : /*#__PURE__*/React.createElement(View, {
179
+ style: [styles.node, {
180
+ marginTop: tokens.spacing.nodeMarginTop
181
+ }]
182
+ }, title) : null, hasDescription ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
183
+ style: [styles.description, {
184
+ color: tokens.colors.description,
185
+ fontSize: tokens.typography.description,
186
+ marginTop: tokens.spacing.descriptionMarginTop
187
+ }]
188
+ }, description) : /*#__PURE__*/React.createElement(View, {
189
+ style: [styles.node, {
190
+ marginTop: tokens.spacing.nodeMarginTop
191
+ }]
192
+ }, description) : null);
193
+ }, [description, hasDescription, hasTitle, title, tokens.colors.description, tokens.colors.title, tokens.spacing.descriptionMarginTop, tokens.spacing.headerPaddingBottom, tokens.spacing.headerPaddingHorizontal, tokens.spacing.headerPaddingTop, tokens.spacing.nodeMarginTop, tokens.spacing.titleMarginTop, tokens.typography.description, tokens.typography.title]);
194
+ const popupStyleMemo = useMemo(() => [styles.popupOverride, {
195
+ padding: tokens.spacing.popupPadding
196
+ }, popupStyle], [popupStyle, tokens.spacing.popupPadding]);
191
197
  return /*#__PURE__*/React.createElement(Popup, _extends({}, popupProps, {
192
198
  visible: visible,
193
199
  placement: "bottom",
@@ -196,9 +202,7 @@ const ShareSheet = props => {
196
202
  overlay: overlay,
197
203
  lockScroll: lockScroll,
198
204
  onClose: onPopupClose,
199
- style: [styles.popupOverride, {
200
- padding: tokens.spacing.popupPadding
201
- }, popupStyle]
205
+ style: popupStyleMemo
202
206
  }), /*#__PURE__*/React.createElement(View, {
203
207
  style: wrapperStyle
204
208
  }, headerNode, groupNodes, children, hasCancelText ? /*#__PURE__*/React.createElement(ShareSheetCancel, {
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React from 'react';
2
+ import React, { useMemo } from 'react';
3
3
  import { Text, View } from 'react-native';
4
4
  import { mergeTokensOverride } from '../../design-system';
5
5
  import { useControllableValue } from '../../hooks';
@@ -15,7 +15,7 @@ const SidebarBase = props => {
15
15
  ...rest
16
16
  } = props;
17
17
  const tokens = useSidebarTokens(tokensOverride);
18
- const items = (() => {
18
+ const items = useMemo(() => {
19
19
  const out = [];
20
20
  const list = React.Children.toArray(children);
21
21
  for (let i = 0; i < list.length; i++) {
@@ -27,7 +27,7 @@ const SidebarBase = props => {
27
27
  });
28
28
  }
29
29
  return out;
30
- })();
30
+ }, [children]);
31
31
  const firstIndex = items[0]?.index ?? 0;
32
32
  const [activeIndex, setActiveIndex] = useControllableValue(props, {
33
33
  defaultValue: firstIndex,
@@ -35,18 +35,21 @@ const SidebarBase = props => {
35
35
  defaultValuePropName: 'defaultValue',
36
36
  trigger: 'onChange'
37
37
  });
38
- let currentIndex = firstIndex;
39
- for (let i = 0; i < items.length; i++) {
40
- if (items[i].index === activeIndex) {
41
- currentIndex = activeIndex;
42
- break;
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
+ }
43
45
  }
44
- }
45
- const contextValue = {
46
+ return next;
47
+ }, [activeIndex, firstIndex, items]);
48
+ const contextValue = useMemo(() => ({
46
49
  activeIndex: currentIndex,
47
50
  onSelect: setActiveIndex
48
- };
49
- const clonedItems = items.map(item => {
51
+ }), [currentIndex, setActiveIndex]);
52
+ const clonedItems = useMemo(() => items.map(item => {
50
53
  const key = item.element.key ?? item.index;
51
54
  const merged = mergeTokensOverride(tokensOverride, item.element.props.tokensOverride);
52
55
  return /*#__PURE__*/React.cloneElement(item.element, {
@@ -54,20 +57,22 @@ const SidebarBase = props => {
54
57
  index: item.index,
55
58
  tokensOverride: merged
56
59
  });
57
- });
60
+ }), [items, tokensOverride]);
58
61
  const activeItem = items.find(item => item.index === currentIndex)?.element;
59
62
  const activeContentStyle = activeItem?.props?.contentStyle;
60
63
  const activeContent = activeItem?.props?.children;
61
- const activeContentNode = activeContent == null || activeContent === false ? null : isText(activeContent) ? /*#__PURE__*/React.createElement(Text, null, activeContent) : activeContent;
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]);
62
72
  return /*#__PURE__*/React.createElement(View, _extends({}, rest, {
63
- style: [tokens.layout.container, {
64
- backgroundColor: tokens.colors.background
65
- }, style]
73
+ style: containerStyle
66
74
  }), /*#__PURE__*/React.createElement(View, {
67
- style: [tokens.layout.side, {
68
- width: tokens.sizing.width,
69
- borderRightColor: tokens.colors.border
70
- }, sideStyle],
75
+ style: sideContainerStyle,
71
76
  accessibilityRole: "tablist"
72
77
  }, /*#__PURE__*/React.createElement(SidebarContext.Provider, {
73
78
  value: contextValue
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React from 'react';
2
+ import React, { useMemo } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { useAriaPress } from '../../hooks';
5
5
  import { isRenderable, isText } from '../../utils';
@@ -29,7 +29,7 @@ const SidebarItem = props => {
29
29
  }
30
30
  const disabled = disabledProp ?? tokens.defaults.disabled;
31
31
  const isActive = context.activeIndex === index;
32
- const titleColor = disabled ? tokens.colors.disabled : isActive ? tokens.colors.titleActive : tokens.colors.title;
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]);
33
33
  const press = useAriaPress({
34
34
  disabled,
35
35
  onPress: () => {
@@ -45,37 +45,41 @@ const SidebarItem = props => {
45
45
  testID: `rv-sidebar-item-${index}`
46
46
  }
47
47
  });
48
- return /*#__PURE__*/React.createElement(Pressable, _extends({}, rest, press.interactionProps, {
49
- style: [tokens.layout.item, {
50
- height: tokens.sizing.itemHeight
51
- }, style]
52
- }), /*#__PURE__*/React.createElement(View, {
53
- style: tokens.layout.indicatorWrapper
54
- }, isActive && /*#__PURE__*/React.createElement(View, {
55
- style: [tokens.layout.indicator, {
56
- width: tokens.sizing.indicatorWidth,
57
- borderRadius: tokens.sizing.indicatorWidth,
58
- backgroundColor: tokens.colors.indicator
59
- }]
60
- })), /*#__PURE__*/React.createElement(View, {
61
- style: tokens.layout.itemContent
62
- }, /*#__PURE__*/React.createElement(View, {
63
- style: tokens.layout.titleRow
64
- }, isRenderable(title) ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
48
+ const indicatorStyle = useMemo(() => [tokens.layout.indicator, {
49
+ width: tokens.sizing.indicatorWidth,
50
+ borderRadius: tokens.sizing.indicatorWidth,
51
+ 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, {
65
54
  style: [tokens.layout.title, {
66
55
  color: titleColor,
67
56
  fontSize: tokens.typography.fontSize,
68
57
  fontWeight: tokens.typography.fontWeight
69
58
  }, textStyle]
70
- }, title) : title : null, isRenderable(badge) && /*#__PURE__*/React.createElement(View, {
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, {
71
61
  style: [tokens.layout.badge, badgeStyle]
72
62
  }, isText(badge) ? /*#__PURE__*/React.createElement(Badge, {
73
63
  content: badge
74
- }) : badge), dot && /*#__PURE__*/React.createElement(View, {
64
+ }) : badge) : null, [badge, badgeStyle, tokens.layout.badge]);
65
+ const dotNode = useMemo(() => dot ? /*#__PURE__*/React.createElement(View, {
75
66
  style: [tokens.layout.dot, {
76
67
  backgroundColor: tokens.colors.indicator
77
68
  }]
78
- }))));
69
+ }) : null, [dot, tokens.colors.indicator, tokens.layout.dot]);
70
+ return /*#__PURE__*/React.createElement(Pressable, _extends({}, rest, press.interactionProps, {
71
+ style: [tokens.layout.item, {
72
+ height: tokens.sizing.itemHeight
73
+ }, style]
74
+ }), /*#__PURE__*/React.createElement(View, {
75
+ style: tokens.layout.indicatorWrapper
76
+ }, isActive && /*#__PURE__*/React.createElement(View, {
77
+ style: indicatorStyle
78
+ })), /*#__PURE__*/React.createElement(View, {
79
+ style: tokens.layout.itemContent
80
+ }, /*#__PURE__*/React.createElement(View, {
81
+ style: tokens.layout.titleRow
82
+ }, titleNode, badgeNode, dotNode)));
79
83
  };
80
84
  SidebarItem.displayName = 'Sidebar.Item';
81
85
  export default SidebarItem;