react-native-system-ui 0.0.5 → 0.0.7

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 (372) hide show
  1. package/README.md +12 -4
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +28 -22
  3. package/dist/cjs/components/area/Area.js +72 -6
  4. package/dist/cjs/components/area/tokens.js +11 -0
  5. package/dist/cjs/components/avatar/Avatar.js +42 -10
  6. package/dist/cjs/components/badge/Badge.js +10 -10
  7. package/dist/cjs/components/badge/tokens.js +4 -0
  8. package/dist/cjs/components/button/Button.js +16 -65
  9. package/dist/cjs/components/button/ButtonContext.js +7 -10
  10. package/dist/cjs/components/button/ButtonGroup.js +13 -15
  11. package/dist/cjs/components/button/tokens.js +1 -5
  12. package/dist/cjs/components/calendar/Calendar.js +23 -12
  13. package/dist/cjs/components/cascader/Cascader.js +18 -13
  14. package/dist/cjs/components/cell/Cell.js +3 -3
  15. package/dist/cjs/components/cell/CellGroup.js +26 -21
  16. package/dist/cjs/components/checkbox/Checkbox.js +5 -4
  17. package/dist/cjs/components/checkbox/CheckboxContext.js +7 -10
  18. package/dist/cjs/components/checkbox/CheckboxGroup.js +24 -21
  19. package/dist/cjs/components/circle/Circle.js +6 -6
  20. package/dist/cjs/components/collapse/Collapse.js +10 -10
  21. package/dist/cjs/components/config-provider/locale/en-US.js +66 -4
  22. package/dist/cjs/components/config-provider/locale/zh-CN.js +74 -2
  23. package/dist/cjs/components/config-provider/tokens.js +11 -0
  24. package/dist/cjs/components/count-down/CountDown.js +6 -6
  25. package/dist/cjs/components/datetime-picker/DatetimePicker.js +6 -6
  26. package/dist/cjs/components/datetime-picker/tokens.js +11 -0
  27. package/dist/cjs/components/dialog/Dialog.js +39 -34
  28. package/dist/cjs/components/dialog/tokens.js +1 -4
  29. package/dist/cjs/components/divider/Divider.js +36 -1
  30. package/dist/cjs/components/field/Field.js +303 -201
  31. package/dist/cjs/components/flex/Flex.js +7 -3
  32. package/dist/cjs/components/flex/FlexContext.js +7 -14
  33. package/dist/cjs/components/form/Form.js +112 -122
  34. package/dist/cjs/components/form/FormContext.js +7 -10
  35. package/dist/cjs/components/form/FormItem.js +30 -4
  36. package/dist/cjs/components/form/FormList.js +16 -3
  37. package/dist/cjs/components/form/tokens.js +11 -0
  38. package/dist/cjs/components/form/utils.js +2 -1
  39. package/dist/cjs/components/grid/Grid.js +45 -31
  40. package/dist/cjs/components/grid/GridContext.js +7 -10
  41. package/dist/cjs/components/grid/GridItem.js +22 -22
  42. package/dist/cjs/components/image/Image.js +17 -13
  43. package/dist/cjs/components/image-preview/ImagePreview.js +43 -41
  44. package/dist/cjs/components/index.js +43 -141
  45. package/dist/cjs/components/input/Input.js +19 -5
  46. package/dist/cjs/components/loading/Loading.js +10 -139
  47. package/dist/cjs/components/loading/tokens.js +0 -24
  48. package/dist/cjs/components/notice-bar/NoticeBar.js +45 -41
  49. package/dist/cjs/components/notify/Notify.js +63 -22
  50. package/dist/cjs/components/notify/imperative.js +2 -2
  51. package/dist/cjs/components/notify/tokens.js +11 -1
  52. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +6 -6
  53. package/dist/cjs/components/overlay/Overlay.js +70 -77
  54. package/dist/cjs/components/overlay/index.js +13 -27
  55. package/dist/cjs/components/overlay/tokens.js +4 -31
  56. package/dist/cjs/components/password-input/PasswordInput.js +2 -41
  57. package/dist/cjs/components/password-input/tokens.js +53 -0
  58. package/dist/cjs/components/picker/Picker.js +618 -38
  59. package/dist/cjs/components/popup/Popup.js +60 -47
  60. package/dist/cjs/components/portal/Portal.js +39 -31
  61. package/dist/cjs/components/portal/PortalHost.js +258 -213
  62. package/dist/cjs/components/portal/tokens.js +11 -0
  63. package/dist/cjs/components/progress/Progress.js +77 -36
  64. package/dist/cjs/components/progress/index.js +6 -0
  65. package/dist/cjs/components/radio/Radio.js +35 -12
  66. package/dist/cjs/components/radio/RadioContext.js +7 -10
  67. package/dist/cjs/components/radio/RadioGroup.js +23 -20
  68. package/dist/cjs/components/safe-area-view/tokens.js +11 -0
  69. package/dist/cjs/components/search/Search.js +16 -16
  70. package/dist/cjs/components/selector/Selector.js +6 -6
  71. package/dist/cjs/components/share-sheet/ShareSheet.js +50 -46
  72. package/dist/cjs/components/sidebar/Sidebar.js +27 -22
  73. package/dist/cjs/components/sidebar/SidebarItem.js +27 -22
  74. package/dist/cjs/components/skeleton/Skeleton.js +34 -21
  75. package/dist/cjs/components/slider/Slider.js +135 -78
  76. package/dist/cjs/components/stepper/Stepper.js +12 -10
  77. package/dist/cjs/components/swiper/Swiper.js +247 -710
  78. package/dist/cjs/components/swiper/SwiperItem.js +5 -33
  79. package/dist/cjs/components/swiper/tokens.js +11 -0
  80. package/dist/cjs/components/switch/Switch.js +46 -98
  81. package/dist/cjs/components/switch/tokens.js +1 -55
  82. package/dist/cjs/components/tabbar/Tabbar.js +26 -22
  83. package/dist/cjs/components/tabbar/TabbarItem.js +23 -22
  84. package/dist/cjs/components/tabbar/tokens.js +0 -2
  85. package/dist/cjs/components/tabs/Tabs.js +268 -94
  86. package/dist/cjs/components/tabs/index.js +4 -5
  87. package/dist/cjs/components/toast/Toast.js +72 -27
  88. package/dist/cjs/components/toast/imperative.js +2 -2
  89. package/dist/cjs/hooks/gesture/useGestureScroll.js +1 -2
  90. package/dist/cjs/hooks/index.js +12 -12
  91. package/dist/cjs/hooks/overlay/index.js +27 -0
  92. package/dist/cjs/hooks/useHairline.js +0 -4
  93. package/dist/cjs/platform/scrollLock.js +1 -1
  94. package/dist/cjs/utils/compare.js +26 -0
  95. package/dist/cjs/utils/index.js +11 -0
  96. package/dist/es/components/action-sheet/ActionSheet.js +29 -23
  97. package/dist/es/components/area/Area.js +73 -7
  98. package/dist/es/components/area/tokens.js +5 -0
  99. package/dist/es/components/avatar/Avatar.js +42 -10
  100. package/dist/es/components/badge/Badge.js +11 -11
  101. package/dist/es/components/badge/tokens.js +4 -0
  102. package/dist/es/components/button/Button.js +17 -65
  103. package/dist/es/components/button/ButtonContext.js +1 -2
  104. package/dist/es/components/button/ButtonGroup.js +10 -12
  105. package/dist/es/components/button/tokens.js +1 -5
  106. package/dist/es/components/calendar/Calendar.js +24 -13
  107. package/dist/es/components/cascader/Cascader.js +16 -11
  108. package/dist/es/components/cell/Cell.js +4 -4
  109. package/dist/es/components/cell/CellGroup.js +25 -20
  110. package/dist/es/components/checkbox/Checkbox.js +5 -4
  111. package/dist/es/components/checkbox/CheckboxContext.js +1 -2
  112. package/dist/es/components/checkbox/CheckboxGroup.js +24 -21
  113. package/dist/es/components/circle/Circle.js +7 -7
  114. package/dist/es/components/collapse/Collapse.js +11 -11
  115. package/dist/es/components/config-provider/locale/en-US.js +66 -4
  116. package/dist/es/components/config-provider/locale/zh-CN.js +74 -2
  117. package/dist/es/components/config-provider/tokens.js +5 -0
  118. package/dist/es/components/count-down/CountDown.js +7 -7
  119. package/dist/es/components/datetime-picker/DatetimePicker.js +7 -7
  120. package/dist/es/components/datetime-picker/tokens.js +5 -0
  121. package/dist/es/components/dialog/Dialog.js +40 -35
  122. package/dist/es/components/dialog/tokens.js +1 -4
  123. package/dist/es/components/divider/Divider.js +36 -1
  124. package/dist/es/components/field/Field.js +304 -202
  125. package/dist/es/components/flex/Flex.js +5 -1
  126. package/dist/es/components/flex/FlexContext.js +1 -6
  127. package/dist/es/components/form/Form.js +89 -99
  128. package/dist/es/components/form/FormContext.js +1 -2
  129. package/dist/es/components/form/FormItem.js +32 -6
  130. package/dist/es/components/form/FormList.js +18 -5
  131. package/dist/es/components/form/tokens.js +5 -0
  132. package/dist/es/components/form/utils.js +1 -0
  133. package/dist/es/components/grid/Grid.js +43 -29
  134. package/dist/es/components/grid/GridContext.js +1 -2
  135. package/dist/es/components/grid/GridItem.js +24 -24
  136. package/dist/es/components/image/Image.js +18 -14
  137. package/dist/es/components/image-preview/ImagePreview.js +44 -42
  138. package/dist/es/components/index.js +2 -17
  139. package/dist/es/components/input/Input.js +20 -6
  140. package/dist/es/components/loading/Loading.js +10 -139
  141. package/dist/es/components/loading/tokens.js +0 -24
  142. package/dist/es/components/notice-bar/NoticeBar.js +46 -42
  143. package/dist/es/components/notify/Notify.js +63 -22
  144. package/dist/es/components/notify/imperative.js +2 -2
  145. package/dist/es/components/notify/tokens.js +5 -1
  146. package/dist/es/components/number-keyboard/NumberKeyboard.js +7 -7
  147. package/dist/es/components/overlay/Overlay.js +58 -75
  148. package/dist/es/components/overlay/index.js +3 -4
  149. package/dist/es/components/overlay/tokens.js +3 -29
  150. package/dist/es/components/password-input/PasswordInput.js +1 -40
  151. package/dist/es/components/password-input/tokens.js +41 -0
  152. package/dist/es/components/picker/Picker.js +610 -34
  153. package/dist/es/components/popup/Popup.js +62 -49
  154. package/dist/es/components/portal/Portal.js +37 -31
  155. package/dist/es/components/portal/PortalHost.js +257 -211
  156. package/dist/es/components/portal/tokens.js +5 -0
  157. package/dist/es/components/progress/Progress.js +76 -36
  158. package/dist/es/components/progress/index.js +2 -1
  159. package/dist/es/components/radio/Radio.js +37 -14
  160. package/dist/es/components/radio/RadioContext.js +1 -2
  161. package/dist/es/components/radio/RadioGroup.js +23 -20
  162. package/dist/es/components/safe-area-view/tokens.js +5 -0
  163. package/dist/es/components/search/Search.js +17 -17
  164. package/dist/es/components/selector/Selector.js +7 -7
  165. package/dist/es/components/share-sheet/ShareSheet.js +51 -47
  166. package/dist/es/components/sidebar/Sidebar.js +26 -21
  167. package/dist/es/components/sidebar/SidebarItem.js +26 -22
  168. package/dist/es/components/skeleton/Skeleton.js +35 -22
  169. package/dist/es/components/slider/Slider.js +132 -75
  170. package/dist/es/components/stepper/Stepper.js +13 -11
  171. package/dist/es/components/swiper/Swiper.js +248 -711
  172. package/dist/es/components/swiper/SwiperItem.js +1 -21
  173. package/dist/es/components/swiper/tokens.js +5 -0
  174. package/dist/es/components/switch/Switch.js +49 -101
  175. package/dist/es/components/switch/tokens.js +1 -49
  176. package/dist/es/components/tabbar/Tabbar.js +27 -23
  177. package/dist/es/components/tabbar/TabbarItem.js +22 -22
  178. package/dist/es/components/tabbar/tokens.js +0 -2
  179. package/dist/es/components/tabs/Tabs.js +264 -90
  180. package/dist/es/components/tabs/index.js +1 -2
  181. package/dist/es/components/toast/Toast.js +72 -28
  182. package/dist/es/components/toast/imperative.js +2 -2
  183. package/dist/es/hooks/gesture/useGestureScroll.js +1 -2
  184. package/dist/es/hooks/index.js +1 -1
  185. package/dist/es/hooks/overlay/index.js +3 -0
  186. package/dist/es/hooks/useHairline.js +0 -4
  187. package/dist/es/platform/scrollLock.js +1 -1
  188. package/dist/es/utils/compare.js +18 -0
  189. package/dist/es/utils/index.js +1 -1
  190. package/dist/types/components/area/tokens.d.ts +3 -0
  191. package/dist/types/components/avatar/Avatar.d.ts +4 -2
  192. package/dist/types/components/button/ButtonContext.d.ts +2 -16
  193. package/dist/types/components/button/ButtonGroup.d.ts +14 -1
  194. package/dist/types/components/button/index.d.ts +1 -1
  195. package/dist/types/components/checkbox/CheckboxContext.d.ts +2 -16
  196. package/dist/types/components/checkbox/CheckboxGroup.d.ts +15 -1
  197. package/dist/types/components/collapse/Collapse.d.ts +0 -1
  198. package/dist/types/components/config-provider/LocaleContext.d.ts +2 -74
  199. package/dist/types/components/config-provider/tokens.d.ts +3 -0
  200. package/dist/types/components/config-provider/useLocale.d.ts +1 -74
  201. package/dist/types/components/datetime-picker/tokens.d.ts +3 -0
  202. package/dist/types/components/flex/Flex.d.ts +6 -0
  203. package/dist/types/components/flex/FlexContext.d.ts +2 -8
  204. package/dist/types/components/form/Form.d.ts +15 -1
  205. package/dist/types/components/form/FormContext.d.ts +2 -17
  206. package/dist/types/components/form/tokens.d.ts +3 -0
  207. package/dist/types/components/form/utils.d.ts +1 -0
  208. package/dist/types/components/grid/Grid.d.ts +16 -1
  209. package/dist/types/components/grid/GridContext.d.ts +2 -17
  210. package/dist/types/components/index.d.ts +3 -33
  211. package/dist/types/components/loading/index.d.ts +1 -1
  212. package/dist/types/components/notify/Notify.d.ts +1 -0
  213. package/dist/types/components/overlay/Overlay.d.ts +6 -1
  214. package/dist/types/components/overlay/index.d.ts +2 -3
  215. package/dist/types/components/overlay/tokens.d.ts +2 -3
  216. package/dist/types/components/password-input/PasswordInput.d.ts +0 -39
  217. package/dist/types/components/password-input/tokens.d.ts +40 -0
  218. package/dist/types/components/picker/Picker.d.ts +18 -2
  219. package/dist/types/components/picker/index.d.ts +1 -1
  220. package/dist/types/components/portal/Portal.d.ts +4 -6
  221. package/dist/types/components/portal/PortalHost.d.ts +1 -15
  222. package/dist/types/components/portal/tokens.d.ts +3 -0
  223. package/dist/types/components/progress/Progress.d.ts +4 -0
  224. package/dist/types/components/progress/index.d.ts +2 -1
  225. package/dist/types/components/radio/RadioContext.d.ts +2 -13
  226. package/dist/types/components/radio/RadioGroup.d.ts +12 -1
  227. package/dist/types/components/safe-area-view/tokens.d.ts +3 -0
  228. package/dist/types/components/swiper/Swiper.d.ts +4 -2
  229. package/dist/types/components/swiper/SwiperItem.d.ts +1 -5
  230. package/dist/types/components/swiper/tokens.d.ts +3 -0
  231. package/dist/types/components/tabs/Tabs.d.ts +8 -4
  232. package/dist/types/components/tabs/index.d.ts +3 -1
  233. package/dist/types/components/toast/Toast.d.ts +1 -4
  234. package/dist/types/hooks/aria/useAriaListBox.d.ts +0 -6
  235. package/dist/types/hooks/aria/useAriaOverlay.d.ts +0 -10
  236. package/dist/types/hooks/aria/useAriaPress.d.ts +0 -20
  237. package/dist/types/hooks/aria/useAriaToggle.d.ts +0 -3
  238. package/dist/types/hooks/index.d.ts +1 -1
  239. package/dist/types/hooks/overlay/index.d.ts +2 -0
  240. package/dist/types/hooks/useHairline.d.ts +0 -21
  241. package/dist/types/utils/compare.d.ts +2 -0
  242. package/dist/types/utils/index.d.ts +1 -0
  243. package/package.json +10 -48
  244. package/dist/cjs/components/area/utils.js +0 -74
  245. package/dist/cjs/components/cascader/utils.js +0 -20
  246. package/dist/cjs/components/config-provider/locale/base.js +0 -80
  247. package/dist/cjs/components/dropdown-menu/DropdownItem.js +0 -288
  248. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +0 -340
  249. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +0 -21
  250. package/dist/cjs/components/dropdown-menu/index.js +0 -25
  251. package/dist/cjs/components/dropdown-menu/tokens.js +0 -67
  252. package/dist/cjs/components/field/utils.js +0 -24
  253. package/dist/cjs/components/index-bar/IndexAnchor.js +0 -74
  254. package/dist/cjs/components/index-bar/IndexBar.js +0 -436
  255. package/dist/cjs/components/index-bar/index.js +0 -25
  256. package/dist/cjs/components/index-bar/tokens.js +0 -45
  257. package/dist/cjs/components/list/List.js +0 -165
  258. package/dist/cjs/components/list/index.js +0 -9
  259. package/dist/cjs/components/list/tokens.js +0 -39
  260. package/dist/cjs/components/notify/defaults.js +0 -15
  261. package/dist/cjs/components/pagination/Pagination.js +0 -160
  262. package/dist/cjs/components/pagination/index.js +0 -22
  263. package/dist/cjs/components/pagination/tokens.js +0 -103
  264. package/dist/cjs/components/picker/WheelPicker.js +0 -492
  265. package/dist/cjs/components/picker/utils.js +0 -138
  266. package/dist/cjs/components/pull-refresh/PullRefresh.js +0 -378
  267. package/dist/cjs/components/pull-refresh/index.js +0 -16
  268. package/dist/cjs/components/pull-refresh/tokens.js +0 -22
  269. package/dist/cjs/components/rate/Rate.js +0 -269
  270. package/dist/cjs/components/rate/index.js +0 -15
  271. package/dist/cjs/components/rate/tokens.js +0 -60
  272. package/dist/cjs/components/slider/utils.js +0 -60
  273. package/dist/cjs/components/swiper/useSwiperWeb.js +0 -209
  274. package/dist/cjs/components/swiper/utils.js +0 -49
  275. package/dist/cjs/components/tabs/TabPane.js +0 -9
  276. package/dist/cjs/components/tabs/useTabsAnimation.js +0 -74
  277. package/dist/cjs/components/tabs/useTabsScroll.js +0 -133
  278. package/dist/cjs/components/tabs/utils.js +0 -34
  279. package/dist/cjs/components/types.js +0 -1
  280. package/dist/cjs/components/uploader/Uploader.js +0 -557
  281. package/dist/cjs/components/uploader/index.js +0 -22
  282. package/dist/cjs/components/uploader/tokens.js +0 -58
  283. package/dist/cjs/components/uploader/utils.js +0 -72
  284. package/dist/cjs/hooks/usePresenceAnimation.js +0 -70
  285. package/dist/es/components/area/utils.js +0 -67
  286. package/dist/es/components/cascader/utils.js +0 -13
  287. package/dist/es/components/config-provider/locale/base.js +0 -74
  288. package/dist/es/components/dropdown-menu/DropdownItem.js +0 -269
  289. package/dist/es/components/dropdown-menu/DropdownMenu.js +0 -320
  290. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +0 -7
  291. package/dist/es/components/dropdown-menu/index.js +0 -7
  292. package/dist/es/components/dropdown-menu/tokens.js +0 -61
  293. package/dist/es/components/field/utils.js +0 -17
  294. package/dist/es/components/index-bar/IndexAnchor.js +0 -55
  295. package/dist/es/components/index-bar/IndexBar.js +0 -417
  296. package/dist/es/components/index-bar/index.js +0 -7
  297. package/dist/es/components/index-bar/tokens.js +0 -39
  298. package/dist/es/components/list/List.js +0 -145
  299. package/dist/es/components/list/index.js +0 -2
  300. package/dist/es/components/list/tokens.js +0 -32
  301. package/dist/es/components/notify/defaults.js +0 -9
  302. package/dist/es/components/pagination/Pagination.js +0 -141
  303. package/dist/es/components/pagination/index.js +0 -4
  304. package/dist/es/components/pagination/tokens.js +0 -91
  305. package/dist/es/components/picker/WheelPicker.js +0 -473
  306. package/dist/es/components/picker/utils.js +0 -127
  307. package/dist/es/components/pull-refresh/PullRefresh.js +0 -359
  308. package/dist/es/components/pull-refresh/index.js +0 -3
  309. package/dist/es/components/pull-refresh/tokens.js +0 -16
  310. package/dist/es/components/rate/Rate.js +0 -250
  311. package/dist/es/components/rate/index.js +0 -3
  312. package/dist/es/components/rate/tokens.js +0 -53
  313. package/dist/es/components/slider/utils.js +0 -49
  314. package/dist/es/components/swiper/useSwiperWeb.js +0 -190
  315. package/dist/es/components/swiper/utils.js +0 -37
  316. package/dist/es/components/tabs/TabPane.js +0 -3
  317. package/dist/es/components/tabs/useTabsAnimation.js +0 -55
  318. package/dist/es/components/tabs/useTabsScroll.js +0 -114
  319. package/dist/es/components/tabs/utils.js +0 -19
  320. package/dist/es/components/types.js +0 -1
  321. package/dist/es/components/uploader/Uploader.js +0 -537
  322. package/dist/es/components/uploader/index.js +0 -4
  323. package/dist/es/components/uploader/tokens.js +0 -52
  324. package/dist/es/components/uploader/utils.js +0 -60
  325. package/dist/es/hooks/usePresenceAnimation.js +0 -51
  326. package/dist/types/components/area/utils.d.ts +0 -2
  327. package/dist/types/components/cascader/utils.d.ts +0 -6
  328. package/dist/types/components/config-provider/locale/base.d.ts +0 -74
  329. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +0 -4
  330. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +0 -4
  331. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +0 -17
  332. package/dist/types/components/dropdown-menu/index.d.ts +0 -8
  333. package/dist/types/components/dropdown-menu/tokens.d.ts +0 -52
  334. package/dist/types/components/field/utils.d.ts +0 -4
  335. package/dist/types/components/index-bar/IndexAnchor.d.ts +0 -4
  336. package/dist/types/components/index-bar/IndexBar.d.ts +0 -4
  337. package/dist/types/components/index-bar/index.d.ts +0 -9
  338. package/dist/types/components/index-bar/tokens.d.ts +0 -31
  339. package/dist/types/components/list/List.d.ts +0 -4
  340. package/dist/types/components/list/index.d.ts +0 -3
  341. package/dist/types/components/list/tokens.d.ts +0 -4
  342. package/dist/types/components/notify/defaults.d.ts +0 -10
  343. package/dist/types/components/pagination/Pagination.d.ts +0 -5
  344. package/dist/types/components/pagination/index.d.ts +0 -5
  345. package/dist/types/components/pagination/tokens.d.ts +0 -2
  346. package/dist/types/components/picker/WheelPicker.d.ts +0 -21
  347. package/dist/types/components/picker/utils.d.ts +0 -17
  348. package/dist/types/components/pull-refresh/PullRefresh.d.ts +0 -5
  349. package/dist/types/components/pull-refresh/index.d.ts +0 -4
  350. package/dist/types/components/pull-refresh/tokens.d.ts +0 -10
  351. package/dist/types/components/rate/Rate.d.ts +0 -4
  352. package/dist/types/components/rate/index.d.ts +0 -4
  353. package/dist/types/components/rate/tokens.d.ts +0 -4
  354. package/dist/types/components/slider/utils.d.ts +0 -42
  355. package/dist/types/components/swiper/useSwiperWeb.d.ts +0 -41
  356. package/dist/types/components/swiper/utils.d.ts +0 -17
  357. package/dist/types/components/tabs/TabPane.d.ts +0 -4
  358. package/dist/types/components/tabs/useTabsAnimation.d.ts +0 -30
  359. package/dist/types/components/tabs/useTabsScroll.d.ts +0 -23
  360. package/dist/types/components/tabs/utils.d.ts +0 -5
  361. package/dist/types/components/types.d.ts +0 -59
  362. package/dist/types/components/uploader/Uploader.d.ts +0 -4
  363. package/dist/types/components/uploader/index.d.ts +0 -5
  364. package/dist/types/components/uploader/tokens.d.ts +0 -42
  365. package/dist/types/components/uploader/utils.d.ts +0 -11
  366. package/dist/types/hooks/usePresenceAnimation.d.ts +0 -20
  367. /package/dist/cjs/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  368. /package/dist/cjs/{components → hooks}/overlay/useOverlayStack.js +0 -0
  369. /package/dist/es/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  370. /package/dist/es/{components → hooks}/overlay/useOverlayStack.js +0 -0
  371. /package/dist/types/{components → hooks}/overlay/OverlayStackStore.d.ts +0 -0
  372. /package/dist/types/{components → hooks}/overlay/useOverlayStack.d.ts +0 -0
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.Toast = void 0;
6
+ exports.default = exports.ToastContent = exports.Toast = void 0;
7
7
  function _react() {
8
8
  const data = _interopRequireWildcard(require("react"));
9
9
  _react = function () {
@@ -21,7 +21,6 @@ function _reactNative() {
21
21
  var _Portal = _interopRequireDefault(require("../portal/Portal"));
22
22
  var _safeAreaView = require("../safe-area-view");
23
23
  var _hooks = require("../../hooks");
24
- var _usePresenceAnimation = require("../../hooks/usePresenceAnimation");
25
24
  var _loading = _interopRequireDefault(require("../loading"));
26
25
  function _reactNativeSystemIcon() {
27
26
  const data = require("react-native-system-icon");
@@ -30,20 +29,19 @@ function _reactNativeSystemIcon() {
30
29
  };
31
30
  return data;
32
31
  }
33
- var _overlay = require("../overlay");
34
32
  var _validate = require("../../utils/validate");
33
+ var _platform = require("../../platform");
35
34
  var _tokens = require("./tokens");
36
35
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
37
36
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
38
37
  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); }
39
- const Toast = props => {
38
+ const ToastContent = props => {
40
39
  const {
41
40
  visible,
42
41
  message,
43
42
  icon,
44
43
  type = 'info',
45
44
  iconSize,
46
- loadingType = 'circular',
47
45
  duration = 2000,
48
46
  position = 'middle',
49
47
  forbidClick = false,
@@ -70,15 +68,13 @@ const Toast = props => {
70
68
  height: windowHeight
71
69
  } = (0, _reactNative().useWindowDimensions)();
72
70
  const durationMs = (0, _validate.isFiniteNumber)(duration) ? Math.max(0, duration) : 0;
73
- const {
74
- mounted,
75
- animated
76
- } = (0, _usePresenceAnimation.usePresenceAnimation)(visible, {
77
- duration: tokens.animationDuration
78
- });
71
+ const [mounted, setMounted] = (0, _react().useState)(visible);
72
+ const animated = (0, _react().useRef)(new (_reactNative().Animated.Value)(visible ? 1 : 0)).current;
73
+ const animationRef = (0, _react().useRef)(null);
74
+ const animationIdRef = (0, _react().useRef)(0);
79
75
  const {
80
76
  zIndex: stackZIndex
81
- } = (0, _overlay.useOverlayStack)({
77
+ } = (0, _hooks.useOverlayStack)({
82
78
  visible: mounted,
83
79
  type: 'toast'
84
80
  });
@@ -87,7 +83,7 @@ const Toast = props => {
87
83
  const positionOffset = windowHeight > 0 ? Math.round(windowHeight * tokens.positionOffsetRatio) : tokens.positionOffsetMin;
88
84
  const needsSafeAreaTop = safeAreaInsetTopProp !== undefined ? safeAreaInsetTopProp : position === 'top';
89
85
  const needsSafeAreaBottom = safeAreaInsetBottomProp !== undefined ? safeAreaInsetBottomProp : position === 'bottom';
90
- const positionStyle = position === 'top' ? {
86
+ const positionStyle = (0, _react().useMemo)(() => position === 'top' ? {
91
87
  justifyContent: 'flex-start',
92
88
  paddingTop: positionOffset
93
89
  } : position === 'bottom' ? {
@@ -95,7 +91,41 @@ const Toast = props => {
95
91
  paddingBottom: positionOffset
96
92
  } : {
97
93
  justifyContent: 'center'
98
- };
94
+ }, [position, positionOffset]);
95
+ (0, _react().useEffect)(() => {
96
+ animationIdRef.current += 1;
97
+ const animationId = animationIdRef.current;
98
+ animationRef.current?.stop();
99
+ const durationValue = tokens.animationDuration;
100
+ if (visible) {
101
+ setMounted(true);
102
+ animationRef.current = _reactNative().Animated.timing(animated, {
103
+ toValue: 1,
104
+ duration: durationValue,
105
+ easing: _reactNative().Easing.out(_reactNative().Easing.cubic),
106
+ useNativeDriver: _platform.nativeDriverEnabled,
107
+ isInteraction: false
108
+ });
109
+ animationRef.current.start();
110
+ } else {
111
+ animationRef.current = _reactNative().Animated.timing(animated, {
112
+ toValue: 0,
113
+ duration: durationValue,
114
+ easing: _reactNative().Easing.out(_reactNative().Easing.cubic),
115
+ useNativeDriver: _platform.nativeDriverEnabled,
116
+ isInteraction: false
117
+ });
118
+ animationRef.current.start(({
119
+ finished
120
+ }) => {
121
+ if (!finished || animationId !== animationIdRef.current) return;
122
+ setMounted(false);
123
+ });
124
+ }
125
+ }, [animated, tokens.animationDuration, visible]);
126
+ (0, _react().useEffect)(() => () => {
127
+ animationRef.current?.stop();
128
+ }, []);
99
129
  (0, _react().useEffect)(() => {
100
130
  let timer = null;
101
131
  if (visible) {
@@ -109,6 +139,13 @@ const Toast = props => {
109
139
  if (timer) clearTimeout(timer);
110
140
  };
111
141
  }, [durationMs, onClose, visible]);
142
+ (0, _react().useEffect)(() => {
143
+ if (!visible) return;
144
+ if (!(0, _validate.isText)(message)) return;
145
+ const text = String(message);
146
+ if (!text) return;
147
+ _reactNative().AccessibilityInfo.announceForAccessibility?.(text);
148
+ }, [message, visible]);
112
149
  (0, _react().useEffect)(() => {
113
150
  let openedTimer = null;
114
151
  if (visible) {
@@ -133,9 +170,9 @@ const Toast = props => {
133
170
  onClosed?.();
134
171
  }
135
172
  }, [mounted, onClosed]);
136
- const handleClose = () => {
173
+ const handleClose = (0, _react().useCallback)(() => {
137
174
  onClose?.();
138
- };
175
+ }, [onClose]);
139
176
  const toastPress = (0, _hooks.useAriaPress)({
140
177
  disabled: !closeOnClick,
141
178
  onPress: handleClose,
@@ -145,7 +182,7 @@ const Toast = props => {
145
182
  accessibilityLiveRegion: 'assertive'
146
183
  }
147
184
  });
148
- const renderIcon = () => {
185
+ const iconNode = (0, _react().useMemo)(() => {
149
186
  if (icon) return icon;
150
187
  const resolvedIconSize = iconSize ?? tokens.iconSize;
151
188
  switch (type) {
@@ -163,17 +200,15 @@ const Toast = props => {
163
200
  });
164
201
  case 'loading':
165
202
  return loadingIndicator ?? /*#__PURE__*/_react().default.createElement(_loading.default, {
166
- type: loadingType,
167
203
  color: colors.text,
168
204
  size: resolvedIconSize
169
205
  });
170
206
  default:
171
207
  return null;
172
208
  }
173
- };
174
- const iconNode = renderIcon();
209
+ }, [colors.text, icon, iconSize, loadingIndicator, tokens.iconSize, type]);
175
210
  const isTextToast = type === 'info' && !iconNode;
176
- const boxStyle = isTextToast ? {
211
+ const boxStyle = (0, _react().useMemo)(() => isTextToast ? {
177
212
  minWidth: tokens.textMinWidth,
178
213
  minHeight: 0,
179
214
  paddingVertical: tokens.textPaddingVertical,
@@ -182,17 +217,17 @@ const Toast = props => {
182
217
  minWidth: tokens.defaultWidth,
183
218
  minHeight: tokens.defaultMinHeight,
184
219
  padding: tokens.defaultPadding
185
- };
186
- const toastStyle = {
220
+ }, [isTextToast, tokens.defaultMinHeight, tokens.defaultPadding, tokens.defaultWidth, tokens.textMinWidth, tokens.textPaddingHorizontal, tokens.textPaddingVertical]);
221
+ const toastStyle = (0, _react().useMemo)(() => ({
187
222
  borderRadius: tokens.radius,
188
223
  opacity: closeOnClick && toastPress.states.pressed ? tokens.pressedOpacity : animated,
189
224
  backgroundColor: tokens.colors.variants[type],
190
225
  maxWidth: tokens.maxWidth,
191
226
  ...boxStyle
192
- };
227
+ }), [animated, boxStyle, closeOnClick, toastPress.states.pressed, tokens.colors.variants, tokens.maxWidth, tokens.pressedOpacity, tokens.radius, type]);
193
228
  if (!mounted) return null;
194
229
  const hasMessage = message !== undefined && message !== null && message !== false && message !== '';
195
- return /*#__PURE__*/_react().default.createElement(_Portal.default, null, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
230
+ return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
196
231
  style: [styles.backdrop, {
197
232
  backgroundColor: tokens.colors.transparent
198
233
  }, positionStyle, stackZIndex ? {
@@ -234,13 +269,22 @@ const Toast = props => {
234
269
  }, message) : null)), needsSafeAreaBottom && /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
235
270
  edge: "bottom",
236
271
  pointerEvents: "none"
237
- })));
272
+ }));
238
273
  };
274
+ exports.ToastContent = ToastContent;
275
+ const Toast = props => /*#__PURE__*/_react().default.createElement(_Portal.default, null, /*#__PURE__*/_react().default.createElement(ToastContent, props));
239
276
  exports.Toast = Toast;
240
277
  const styles = _reactNative().StyleSheet.create({
241
278
  backdrop: {
242
279
  flex: 1,
243
- alignItems: 'center'
280
+ alignItems: 'center',
281
+ ...(_reactNative().Platform.OS === 'web' ? {
282
+ position: 'fixed',
283
+ top: 0,
284
+ left: 0,
285
+ right: 0,
286
+ bottom: 0
287
+ } : {})
244
288
  },
245
289
  overlay: {
246
290
  ..._reactNative().StyleSheet.absoluteFillObject
@@ -253,5 +297,6 @@ const styles = _reactNative().StyleSheet.create({
253
297
  textAlign: 'center'
254
298
  }
255
299
  });
300
+ ToastContent.displayName = 'ToastContent';
256
301
  Toast.displayName = 'Toast';
257
302
  var _default = exports.default = Toast;
@@ -13,7 +13,7 @@ function _react() {
13
13
  }
14
14
  var _Portal = _interopRequireDefault(require("../portal/Portal"));
15
15
  var _utils = require("../../utils");
16
- var _Toast = _interopRequireDefault(require("./Toast"));
16
+ var _Toast = require("./Toast");
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
19
  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); }
@@ -90,7 +90,7 @@ const ToastPortal = ({
90
90
  options.onClosed?.();
91
91
  removeToast(id);
92
92
  }, [id, options]);
93
- return /*#__PURE__*/_react().default.createElement(_Toast.default, _extends({}, options, {
93
+ return /*#__PURE__*/_react().default.createElement(_Toast.ToastContent, _extends({}, options, {
94
94
  visible: visible,
95
95
  onClose: handleClose,
96
96
  onClosed: handleClosed
@@ -19,8 +19,7 @@ function _reactNative() {
19
19
  return data;
20
20
  }
21
21
  const DEFAULT_THROTTLE = 16;
22
- const VELOCITY_NORMALIZER = 1000; // convert delta/ms to px per second
23
-
22
+ const VELOCITY_NORMALIZER = 1000;
24
23
  const useGestureScroll = (options = {}) => {
25
24
  const {
26
25
  axis = 'y',
@@ -19,18 +19,6 @@ Object.defineProperty(exports, "useCountDown", {
19
19
  return _useCountDown.default;
20
20
  }
21
21
  });
22
- var _usePresenceAnimation = require("./usePresenceAnimation");
23
- Object.keys(_usePresenceAnimation).forEach(function (key) {
24
- if (key === "default" || key === "__esModule") return;
25
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
- if (key in exports && exports[key] === _usePresenceAnimation[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _usePresenceAnimation[key];
31
- }
32
- });
33
- });
34
22
  var _useSafeAreaPadding = require("./useSafeAreaPadding");
35
23
  Object.keys(_useSafeAreaPadding).forEach(function (key) {
36
24
  if (key === "default" || key === "__esModule") return;
@@ -67,6 +55,18 @@ Object.keys(_gesture).forEach(function (key) {
67
55
  }
68
56
  });
69
57
  });
58
+ var _overlay = require("./overlay");
59
+ Object.keys(_overlay).forEach(function (key) {
60
+ if (key === "default" || key === "__esModule") return;
61
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
62
+ if (key in exports && exports[key] === _overlay[key]) return;
63
+ Object.defineProperty(exports, key, {
64
+ enumerable: true,
65
+ get: function () {
66
+ return _overlay[key];
67
+ }
68
+ });
69
+ });
70
70
  var _useControllableValue = _interopRequireDefault(require("./useControllableValue"));
71
71
  var _useCountDown = _interopRequireDefault(require("./useCountDown"));
72
72
  var _useHairline = require("./useHairline");
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _OverlayStackStore = require("./OverlayStackStore");
7
+ Object.keys(_OverlayStackStore).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _OverlayStackStore[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _OverlayStackStore[key];
14
+ }
15
+ });
16
+ });
17
+ var _useOverlayStack = require("./useOverlayStack");
18
+ Object.keys(_useOverlayStack).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _useOverlayStack[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _useOverlayStack[key];
25
+ }
26
+ });
27
+ });
@@ -21,10 +21,6 @@ function _reactNative() {
21
21
  var _hairline = require("../utils/hairline");
22
22
  var _validate = require("../utils/validate");
23
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
- /**
25
- * A hook to generate a hairline (separator) view that respects the container's padding.
26
- * Useful for list items, cells, etc.
27
- */
28
24
  const useHairline = ({
29
25
  show = true,
30
26
  containerStyle,
@@ -15,7 +15,7 @@ const setBodyScrollLocked = nextLocked => {
15
15
  return;
16
16
  }
17
17
  if (!nextLocked && locked) {
18
- document.body.style.overflow = previousOverflow;
18
+ document.body.style.overflow = previousOverflow || 'auto';
19
19
  locked = false;
20
20
  }
21
21
  };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shallowEqualObject = exports.shallowEqualArray = void 0;
7
+ const shallowEqualArray = (a = [], b = []) => {
8
+ if (a.length !== b.length) return false;
9
+ for (let i = 0; i < a.length; i += 1) {
10
+ if (a[i] !== b[i]) return false;
11
+ }
12
+ return true;
13
+ };
14
+ exports.shallowEqualArray = shallowEqualArray;
15
+ const shallowEqualObject = (prev, next) => {
16
+ if (prev === next) return true;
17
+ if (!prev || !next) return false;
18
+ const prevKeys = Object.keys(prev);
19
+ const nextKeys = Object.keys(next);
20
+ if (prevKeys.length !== nextKeys.length) return false;
21
+ for (const key of prevKeys) {
22
+ if (prev[key] !== next[key]) return false;
23
+ }
24
+ return true;
25
+ };
26
+ exports.shallowEqualObject = shallowEqualObject;
@@ -25,6 +25,17 @@ Object.keys(_color).forEach(function (key) {
25
25
  }
26
26
  });
27
27
  });
28
+ var _compare = require("./compare");
29
+ Object.keys(_compare).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _compare[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _compare[key];
36
+ }
37
+ });
38
+ });
28
39
  var _createPlatformShadow = require("./createPlatformShadow");
29
40
  Object.keys(_createPlatformShadow).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
@@ -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, useRef } from 'react';
2
+ import React, { useCallback, useMemo, useRef } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { Close } from 'react-native-system-icon';
5
5
  import { useAriaPress } from '../../hooks';
@@ -231,28 +231,18 @@ const ActionSheet = props => {
231
231
  void requestClose('action');
232
232
  }
233
233
  }, [onSelect, requestClose, shouldCloseOnClickAction]);
234
- return /*#__PURE__*/React.createElement(Popup, _extends({
235
- visible: visible,
236
- placement: "bottom",
237
- round: round,
238
- safeAreaInsetTop: hasTitle && closeable,
239
- safeAreaInsetBottom: safeAreaInsetBottom,
240
- overlay: overlay,
241
- lockScroll: lockScroll,
242
- beforeClose: handlePopupBeforeClose,
243
- onClose: handlePopupClose,
244
- style: [tokens.layout.popup, popupStyle]
245
- }, popupProps), /*#__PURE__*/React.createElement(View, {
246
- style: [tokens.layout.panel, {
247
- backgroundColor: tokens.colors.background
248
- }]
249
- }, hasTitle ? /*#__PURE__*/React.createElement(ActionSheetHeader, {
234
+ const popupStyleMemo = useMemo(() => [tokens.layout.popup, popupStyle], [popupStyle, tokens.layout.popup]);
235
+ const panelStyle = useMemo(() => [tokens.layout.panel, {
236
+ backgroundColor: tokens.colors.background
237
+ }], [tokens.colors.background, tokens.layout.panel]);
238
+ const headerNode = useMemo(() => hasTitle ? /*#__PURE__*/React.createElement(ActionSheetHeader, {
250
239
  title: title,
251
240
  closeable: closeable,
252
241
  closeIcon: closeIcon,
253
242
  tokens: tokens,
254
243
  onClose: handleCloseIcon
255
- }) : null, hasDescription ? /*#__PURE__*/React.createElement(View, {
244
+ }) : null, [closeIcon, closeable, handleCloseIcon, hasTitle, title, tokens]);
245
+ const descriptionNode = useMemo(() => hasDescription ? /*#__PURE__*/React.createElement(View, {
256
246
  style: [tokens.layout.descriptionContainer, createHairlineBorderBottom(tokens.colors.border)]
257
247
  }, isText(description) ? /*#__PURE__*/React.createElement(Text, {
258
248
  style: [tokens.layout.description, {
@@ -261,19 +251,35 @@ const ActionSheet = props => {
261
251
  }]
262
252
  }, description) : /*#__PURE__*/React.createElement(View, {
263
253
  style: tokens.layout.descriptionNode
264
- }, description)) : null, /*#__PURE__*/React.createElement(View, {
265
- style: tokens.layout.actions
266
- }, actions.map((action, index) => /*#__PURE__*/React.createElement(ActionSheetItem, {
254
+ }, description)) : null, [description, hasDescription, tokens.colors.border, tokens.colors.description, tokens.layout.description, tokens.layout.descriptionContainer, tokens.layout.descriptionNode, tokens.typography.description]);
255
+ const actionNodes = useMemo(() => actions.map((action, index) => /*#__PURE__*/React.createElement(ActionSheetItem, {
267
256
  key: action.key ?? index,
268
257
  action: action,
269
258
  index: index,
270
259
  tokens: tokens,
271
260
  onActionPress: handleActionPress
272
- }))), children, hasCancelText ? /*#__PURE__*/React.createElement(ActionSheetCancel, {
261
+ })), [actions, handleActionPress, tokens]);
262
+ const cancelNode = useMemo(() => hasCancelText ? /*#__PURE__*/React.createElement(ActionSheetCancel, {
273
263
  cancelText: cancelText,
274
264
  tokens: tokens,
275
265
  onPress: handleCancel
276
- }) : null));
266
+ }) : null, [cancelText, handleCancel, hasCancelText, tokens]);
267
+ return /*#__PURE__*/React.createElement(Popup, _extends({
268
+ visible: visible,
269
+ placement: "bottom",
270
+ round: round,
271
+ safeAreaInsetTop: hasTitle && closeable,
272
+ safeAreaInsetBottom: safeAreaInsetBottom,
273
+ overlay: overlay,
274
+ lockScroll: lockScroll,
275
+ beforeClose: handlePopupBeforeClose,
276
+ onClose: handlePopupClose,
277
+ style: popupStyleMemo
278
+ }, popupProps), /*#__PURE__*/React.createElement(View, {
279
+ style: panelStyle
280
+ }, headerNode, descriptionNode, /*#__PURE__*/React.createElement(View, {
281
+ style: tokens.layout.actions
282
+ }, actionNodes), children, cancelNode));
277
283
  };
278
284
  ActionSheet.displayName = 'ActionSheet';
279
285
  export default ActionSheet;
@@ -1,7 +1,73 @@
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 Picker from '../picker';
4
- import { buildAreaColumns } from './utils';
4
+ const compareCode = (a, b) => a < b ? -1 : a > b ? 1 : 0;
5
+ const sortEntries = records => {
6
+ if (!records) return [];
7
+ return Object.entries(records).sort(([a], [b]) => compareCode(a, b));
8
+ };
9
+ const getProvinceCode = code => code.slice(0, 2);
10
+ const getCityCode = code => code.slice(0, 4);
11
+ const buildAreaColumns = (areaList, columnsNum = 3) => {
12
+ const provinces = sortEntries(areaList.province_list);
13
+ if (columnsNum === 1) {
14
+ return provinces.map(([code, name]) => ({
15
+ label: name,
16
+ value: code
17
+ }));
18
+ }
19
+ const citiesByProvince = new Map();
20
+ sortEntries(areaList.city_list).forEach(([code, name]) => {
21
+ const provinceKey = getProvinceCode(code);
22
+ const option = {
23
+ label: name,
24
+ value: code
25
+ };
26
+ const existing = citiesByProvince.get(provinceKey);
27
+ if (existing) {
28
+ existing.push(option);
29
+ } else {
30
+ citiesByProvince.set(provinceKey, [option]);
31
+ }
32
+ });
33
+ if (columnsNum === 3) {
34
+ const countiesByCity = new Map();
35
+ sortEntries(areaList.county_list).forEach(([code, name]) => {
36
+ const cityKey = getCityCode(code);
37
+ const option = {
38
+ label: name,
39
+ value: code
40
+ };
41
+ const existing = countiesByCity.get(cityKey);
42
+ if (existing) {
43
+ existing.push(option);
44
+ } else {
45
+ countiesByCity.set(cityKey, [option]);
46
+ }
47
+ });
48
+ citiesByProvince.forEach(cityOptions => {
49
+ cityOptions.forEach(cityOption => {
50
+ const cityKey = getCityCode(cityOption.value);
51
+ const counties = countiesByCity.get(cityKey);
52
+ if (counties && counties.length) {
53
+ cityOption.children = counties;
54
+ }
55
+ });
56
+ });
57
+ }
58
+ return provinces.map(([code, name]) => {
59
+ const provinceOption = {
60
+ label: name,
61
+ value: code
62
+ };
63
+ const provinceKey = getProvinceCode(code);
64
+ const cities = citiesByProvince.get(provinceKey);
65
+ if (cities && cities.length) {
66
+ provinceOption.children = cities;
67
+ }
68
+ return provinceOption;
69
+ });
70
+ };
5
71
  const normalizeCascadeValue = (root, raw, depth) => {
6
72
  if (!raw) return raw;
7
73
  const input = Array.isArray(raw) ? raw.map(String) : [String(raw)];
@@ -28,19 +94,19 @@ const Area = props => {
28
94
  interactionMode = 'sync',
29
95
  ...pickerProps
30
96
  } = props;
31
- const resolvedColumnsNum = columnsNum === 1 || columnsNum === 2 || columnsNum === 3 ? columnsNum : 3;
97
+ const resolvedColumnsNum = useMemo(() => columnsNum === 1 || columnsNum === 2 || columnsNum === 3 ? columnsNum : 3, [columnsNum]);
32
98
  const {
33
99
  province_list,
34
100
  city_list,
35
101
  county_list
36
102
  } = areaList;
37
- const columns = buildAreaColumns({
103
+ const columns = useMemo(() => buildAreaColumns({
38
104
  province_list,
39
105
  city_list,
40
106
  county_list
41
- }, resolvedColumnsNum);
42
- const normalizedValue = value === undefined ? undefined : normalizeCascadeValue(columns, value, resolvedColumnsNum);
43
- const normalizedDefaultValue = defaultValue === undefined ? undefined : normalizeCascadeValue(columns, defaultValue, resolvedColumnsNum);
107
+ }, resolvedColumnsNum), [city_list, county_list, province_list, resolvedColumnsNum]);
108
+ const normalizedValue = useMemo(() => value === undefined ? undefined : normalizeCascadeValue(columns, value, resolvedColumnsNum), [columns, resolvedColumnsNum, value]);
109
+ const normalizedDefaultValue = useMemo(() => defaultValue === undefined ? undefined : normalizeCascadeValue(columns, defaultValue, resolvedColumnsNum), [columns, defaultValue, resolvedColumnsNum]);
44
110
  const handleChange = useCallback((values, options) => {
45
111
  onChange?.(values.map(String), options);
46
112
  }, [onChange]);
@@ -0,0 +1,5 @@
1
+ import { createComponentTokensHook } from '../../design-system';
2
+ const createAreaTokens = _foundations => {
3
+ return {};
4
+ };
5
+ export const useAreaTokens = createComponentTokensHook('area', createAreaTokens);
@@ -1,9 +1,42 @@
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 from 'react';
3
- import { Pressable, Text, View } from 'react-native';
3
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import Image from '../image';
5
5
  import { isNumber } from '../../utils';
6
6
  import { useAvatarTokens } from './tokens';
7
+ export const AvatarFallbackText = /*#__PURE__*/React.forwardRef(({
8
+ children,
9
+ color,
10
+ style
11
+ }, ref) => {
12
+ const tokens = useAvatarTokens();
13
+ const resolvedStyle = StyleSheet.flatten([tokens.layout.text, {
14
+ color: color ?? tokens.colors.text,
15
+ fontWeight: tokens.typography.fontWeight
16
+ }, style]);
17
+ return /*#__PURE__*/React.createElement(Text, {
18
+ ref: ref,
19
+ style: resolvedStyle,
20
+ numberOfLines: 1
21
+ }, children);
22
+ });
23
+ AvatarFallbackText.displayName = 'Avatar.FallbackText';
24
+ export const AvatarImage = /*#__PURE__*/React.forwardRef((props, ref) => {
25
+ const tokens = useAvatarTokens();
26
+ return /*#__PURE__*/React.createElement(Image, _extends({
27
+ ref: ref
28
+ }, props, {
29
+ containerStyle: [{
30
+ backgroundColor: tokens.colors.transparent
31
+ }, props.containerStyle],
32
+ style: [tokens.layout.image, props.style],
33
+ fit: props.fit ?? 'cover',
34
+ loadingText: props.loadingText ?? null,
35
+ loadingSize: props.loadingSize ?? tokens.sizing.loadingSize,
36
+ showError: props.showError ?? true
37
+ }));
38
+ });
39
+ AvatarImage.displayName = 'Avatar.Image';
7
40
  export const Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
8
41
  const {
9
42
  src,
@@ -20,6 +53,7 @@ export const Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
20
53
  style,
21
54
  textStyle,
22
55
  contentStyle,
56
+ children,
23
57
  tokensOverride,
24
58
  ...pressableProps
25
59
  } = props;
@@ -39,15 +73,13 @@ export const Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
39
73
  width: Math.min(avatarWidth, tokens.sizing.iconMaxSize),
40
74
  height: Math.min(avatarHeight, tokens.sizing.iconMaxSize)
41
75
  }, contentStyle]
42
- }, icon) : fallbackText && /*#__PURE__*/React.createElement(Text, {
43
- style: [tokens.layout.text, {
44
- color: color ?? tokens.colors.text,
45
- fontSize: Math.min(avatarWidth, avatarHeight) * tokens.typography.fallbackTextScale,
46
- fontWeight: tokens.typography.fontWeight
47
- }, textStyle],
48
- numberOfLines: 1
76
+ }, icon) : fallbackText && /*#__PURE__*/React.createElement(AvatarFallbackText, {
77
+ color: color,
78
+ style: [{
79
+ fontSize: Math.min(avatarWidth, avatarHeight) * tokens.typography.fallbackTextScale
80
+ }, textStyle]
49
81
  }, fallbackText);
50
- const content = src || source ? /*#__PURE__*/React.createElement(Image, {
82
+ const content = children ?? (src || source ? /*#__PURE__*/React.createElement(AvatarImage, {
51
83
  src: src,
52
84
  source: source,
53
85
  containerStyle: transparentContainerStyle,
@@ -57,7 +89,7 @@ export const Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
57
89
  loadingSize: tokens.sizing.loadingSize,
58
90
  showError: true,
59
91
  fallback: fallbackContent
60
- }) : fallbackContent;
92
+ }) : fallbackContent);
61
93
  return /*#__PURE__*/React.createElement(Pressable, _extends({
62
94
  ref: ref,
63
95
  style: [tokens.layout.container, {