react-native-system-ui 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/README.md +55 -46
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +55 -33
  3. package/dist/cjs/components/area/Area.js +42 -7
  4. package/dist/cjs/components/area/utils.js +37 -33
  5. package/dist/cjs/components/avatar/Avatar.js +4 -4
  6. package/dist/cjs/components/badge/Badge.js +31 -38
  7. package/dist/cjs/components/badge/tokens.js +1 -1
  8. package/dist/cjs/components/button/Button.js +13 -21
  9. package/dist/cjs/components/button/ButtonGroup.js +5 -5
  10. package/dist/cjs/components/button/tokens.js +2 -2
  11. package/dist/cjs/components/calendar/Calendar.js +39 -31
  12. package/dist/cjs/components/cascader/Cascader.js +135 -58
  13. package/dist/cjs/components/cascader/useCascaderExtend.js +19 -19
  14. package/dist/cjs/components/cell/Cell.js +13 -14
  15. package/dist/cjs/components/cell/CellGroup.js +5 -4
  16. package/dist/cjs/components/checkbox/Checkbox.js +24 -27
  17. package/dist/cjs/components/checkbox/CheckboxGroup.js +10 -9
  18. package/dist/cjs/components/circle/Circle.js +56 -78
  19. package/dist/cjs/components/collapse/Collapse.js +66 -60
  20. package/dist/cjs/components/collapse/tokens.js +1 -1
  21. package/dist/cjs/components/config-provider/ConfigProvider.js +7 -6
  22. package/dist/cjs/components/config-provider/useLocale.js +2 -3
  23. package/dist/cjs/components/count-down/CountDown.js +7 -8
  24. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -73
  25. package/dist/cjs/components/dialog/Dialog.js +95 -78
  26. package/dist/cjs/components/dialog/imperative.js +20 -21
  27. package/dist/cjs/components/dialog/index.js +5 -1
  28. package/dist/cjs/components/divider/Divider.js +6 -7
  29. package/dist/cjs/components/dropdown-menu/DropdownItem.js +17 -17
  30. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +79 -57
  31. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +3 -3
  32. package/dist/cjs/components/empty/Empty.js +6 -6
  33. package/dist/cjs/components/field/Field.js +57 -148
  34. package/dist/cjs/components/field/tokens.js +87 -12
  35. package/dist/cjs/components/field/utils.js +24 -0
  36. package/dist/cjs/components/flex/FlexItem.js +10 -10
  37. package/dist/cjs/components/form/Form.js +78 -36
  38. package/dist/cjs/components/form/FormItem.js +19 -15
  39. package/dist/cjs/components/form/FormList.js +6 -6
  40. package/dist/cjs/components/form/index.js +2 -3
  41. package/dist/cjs/components/form/utils.js +36 -13
  42. package/dist/cjs/components/grid/Grid.js +7 -7
  43. package/dist/cjs/components/grid/GridItem.js +11 -11
  44. package/dist/cjs/components/grid/tokens.js +1 -1
  45. package/dist/cjs/components/image/Image.js +93 -60
  46. package/dist/cjs/components/image-preview/ImagePreview.js +95 -71
  47. package/dist/cjs/components/image-preview/imperative.js +7 -6
  48. package/dist/cjs/components/index-bar/IndexBar.js +213 -105
  49. package/dist/cjs/components/index.js +498 -0
  50. package/dist/cjs/components/input/Input.js +25 -25
  51. package/dist/cjs/components/list/List.js +29 -22
  52. package/dist/cjs/components/loading/Loading.js +6 -6
  53. package/dist/cjs/components/nav-bar/NavBar.js +7 -6
  54. package/dist/cjs/components/nav-bar/tokens.js +71 -68
  55. package/dist/cjs/components/notice-bar/NoticeBar.js +46 -50
  56. package/dist/cjs/components/notify/Notify.js +19 -15
  57. package/dist/cjs/components/notify/defaults.js +15 -0
  58. package/dist/cjs/components/notify/imperative.js +9 -8
  59. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +191 -138
  60. package/dist/cjs/components/number-keyboard/tokens.js +7 -7
  61. package/dist/cjs/components/overlay/Overlay.js +19 -20
  62. package/dist/cjs/components/overlay/OverlayStackStore.js +4 -4
  63. package/dist/cjs/components/overlay/tokens.js +25 -2
  64. package/dist/cjs/components/overlay/useOverlayStack.js +9 -9
  65. package/dist/cjs/components/pagination/Pagination.js +10 -10
  66. package/dist/cjs/components/password-input/PasswordInput.js +57 -52
  67. package/dist/cjs/components/picker/Picker.js +219 -89
  68. package/dist/cjs/components/picker/WheelPicker.js +313 -135
  69. package/dist/cjs/components/picker/utils.js +14 -10
  70. package/dist/cjs/components/popup/Popup.js +184 -213
  71. package/dist/cjs/components/portal/Portal.js +6 -16
  72. package/dist/cjs/components/portal/PortalHost.js +103 -73
  73. package/dist/cjs/components/progress/Progress.js +114 -115
  74. package/dist/cjs/components/pull-refresh/PullRefresh.js +87 -52
  75. package/dist/cjs/components/radio/Radio.js +49 -53
  76. package/dist/cjs/components/radio/RadioGroup.js +9 -10
  77. package/dist/cjs/components/radio/tokens.js +1 -1
  78. package/dist/cjs/components/rate/Rate.js +77 -68
  79. package/dist/cjs/components/rate/tokens.js +1 -3
  80. package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
  81. package/dist/cjs/components/safe-area-view/index.js +12 -0
  82. package/dist/cjs/components/search/Search.js +23 -25
  83. package/dist/cjs/components/selector/Selector.js +128 -88
  84. package/dist/cjs/components/selector/tokens.js +1 -1
  85. package/dist/cjs/components/share-sheet/ShareSheet.js +73 -65
  86. package/dist/cjs/components/sidebar/Sidebar.js +36 -24
  87. package/dist/cjs/components/sidebar/SidebarContext.js +4 -3
  88. package/dist/cjs/components/sidebar/SidebarItem.js +9 -9
  89. package/dist/cjs/components/sidebar/tokens.js +3 -2
  90. package/dist/cjs/components/skeleton/Skeleton.js +72 -53
  91. package/dist/cjs/components/slider/Slider.js +200 -165
  92. package/dist/cjs/components/slider/utils.js +60 -0
  93. package/dist/cjs/components/space/Space.js +25 -26
  94. package/dist/cjs/components/stepper/Stepper.js +127 -103
  95. package/dist/cjs/components/swiper/Swiper.js +238 -341
  96. package/dist/cjs/components/swiper/SwiperItem.js +3 -3
  97. package/dist/cjs/components/swiper/SwiperPagIndicator.js +10 -8
  98. package/dist/cjs/components/swiper/useSwiperWeb.js +212 -0
  99. package/dist/cjs/components/swiper/utils.js +49 -0
  100. package/dist/cjs/components/switch/Switch.js +43 -39
  101. package/dist/cjs/components/switch/tokens.js +7 -5
  102. package/dist/cjs/components/tabbar/Tabbar.js +25 -30
  103. package/dist/cjs/components/tabbar/TabbarContext.js +4 -3
  104. package/dist/cjs/components/tabbar/TabbarItem.js +11 -10
  105. package/dist/cjs/components/tabs/Tabs.js +171 -228
  106. package/dist/cjs/components/tabs/tokens.js +4 -3
  107. package/dist/cjs/components/tabs/useTabsAnimation.js +74 -0
  108. package/dist/cjs/components/tabs/useTabsScroll.js +129 -0
  109. package/dist/cjs/components/tabs/utils.js +34 -0
  110. package/dist/cjs/components/tag/Tag.js +5 -5
  111. package/dist/cjs/components/tag/tokens.js +2 -2
  112. package/dist/cjs/components/toast/Toast.js +23 -11
  113. package/dist/cjs/components/toast/imperative.js +10 -9
  114. package/dist/cjs/components/types.js +1 -0
  115. package/dist/cjs/components/typography/Typography.js +57 -38
  116. package/dist/cjs/components/typography/tokens.js +3 -3
  117. package/dist/cjs/components/uploader/Uploader.js +42 -93
  118. package/dist/cjs/components/uploader/utils.js +72 -0
  119. package/dist/cjs/components/water-mark/WaterMark.js +18 -18
  120. package/dist/cjs/design-system/ThemeProvider.js +3 -3
  121. package/dist/cjs/design-system/createComponentTokensHook.js +4 -5
  122. package/dist/cjs/design-system/tokens.js +1 -0
  123. package/dist/cjs/design-system/useTheme.js +2 -3
  124. package/dist/cjs/hooks/aria/useAriaListBox.js +24 -9
  125. package/dist/cjs/hooks/aria/useAriaOverlay.js +13 -9
  126. package/dist/cjs/hooks/aria/useAriaPress.js +47 -21
  127. package/dist/cjs/hooks/aria/useAriaToggle.js +6 -6
  128. package/dist/cjs/hooks/gesture/useGestureScroll.js +22 -23
  129. package/dist/cjs/hooks/index.js +12 -0
  130. package/dist/cjs/hooks/useControllableValue.js +10 -9
  131. package/dist/cjs/hooks/useCountDown.js +17 -18
  132. package/dist/cjs/hooks/useHairline.js +3 -3
  133. package/dist/cjs/hooks/usePresenceAnimation.js +5 -6
  134. package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
  135. package/dist/cjs/index.js +22 -0
  136. package/dist/cjs/platform/index.js +11 -0
  137. package/dist/cjs/platform/measure.js +10 -8
  138. package/dist/cjs/platform/runtime.js +19 -0
  139. package/dist/cjs/utils/deepMerge.js +5 -2
  140. package/dist/cjs/utils/hairline.js +6 -3
  141. package/dist/cjs/utils/index.js +115 -0
  142. package/dist/es/components/action-sheet/ActionSheet.js +43 -22
  143. package/dist/es/components/area/Area.js +41 -7
  144. package/dist/es/components/area/utils.js +37 -33
  145. package/dist/es/components/avatar/Avatar.js +3 -3
  146. package/dist/es/components/badge/Badge.js +27 -34
  147. package/dist/es/components/badge/tokens.js +1 -1
  148. package/dist/es/components/button/Button.js +12 -21
  149. package/dist/es/components/button/ButtonGroup.js +4 -4
  150. package/dist/es/components/button/tokens.js +1 -1
  151. package/dist/es/components/calendar/Calendar.js +38 -31
  152. package/dist/es/components/cascader/Cascader.js +136 -60
  153. package/dist/es/components/cascader/useCascaderExtend.js +17 -16
  154. package/dist/es/components/cell/Cell.js +4 -5
  155. package/dist/es/components/cell/CellGroup.js +3 -2
  156. package/dist/es/components/checkbox/Checkbox.js +22 -25
  157. package/dist/es/components/checkbox/CheckboxGroup.js +9 -8
  158. package/dist/es/components/circle/Circle.js +53 -74
  159. package/dist/es/components/collapse/Collapse.js +61 -55
  160. package/dist/es/components/collapse/tokens.js +1 -1
  161. package/dist/es/components/config-provider/ConfigProvider.js +7 -5
  162. package/dist/es/components/config-provider/useLocale.js +2 -2
  163. package/dist/es/components/count-down/CountDown.js +4 -5
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -55
  165. package/dist/es/components/dialog/Dialog.js +94 -78
  166. package/dist/es/components/dialog/imperative.js +14 -16
  167. package/dist/es/components/dialog/index.js +5 -1
  168. package/dist/es/components/divider/Divider.js +3 -4
  169. package/dist/es/components/dropdown-menu/DropdownItem.js +11 -11
  170. package/dist/es/components/dropdown-menu/DropdownMenu.js +78 -57
  171. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +2 -2
  172. package/dist/es/components/empty/Empty.js +3 -3
  173. package/dist/es/components/field/Field.js +54 -146
  174. package/dist/es/components/field/tokens.js +81 -12
  175. package/dist/es/components/field/utils.js +17 -0
  176. package/dist/es/components/flex/FlexItem.js +3 -3
  177. package/dist/es/components/form/Form.js +77 -35
  178. package/dist/es/components/form/FormItem.js +14 -10
  179. package/dist/es/components/form/FormList.js +5 -5
  180. package/dist/es/components/form/index.js +2 -2
  181. package/dist/es/components/form/utils.js +34 -11
  182. package/dist/es/components/grid/Grid.js +4 -4
  183. package/dist/es/components/grid/GridItem.js +5 -6
  184. package/dist/es/components/grid/tokens.js +1 -1
  185. package/dist/es/components/image/Image.js +88 -55
  186. package/dist/es/components/image-preview/ImagePreview.js +94 -71
  187. package/dist/es/components/image-preview/imperative.js +6 -6
  188. package/dist/es/components/index-bar/IndexBar.js +212 -104
  189. package/dist/es/components/index.js +74 -2
  190. package/dist/es/components/input/Input.js +24 -25
  191. package/dist/es/components/list/List.js +28 -22
  192. package/dist/es/components/loading/Loading.js +5 -5
  193. package/dist/es/components/nav-bar/NavBar.js +6 -5
  194. package/dist/es/components/nav-bar/tokens.js +71 -68
  195. package/dist/es/components/notice-bar/NoticeBar.js +45 -49
  196. package/dist/es/components/notify/Notify.js +19 -15
  197. package/dist/es/components/notify/defaults.js +9 -0
  198. package/dist/es/components/notify/imperative.js +5 -5
  199. package/dist/es/components/number-keyboard/NumberKeyboard.js +191 -139
  200. package/dist/es/components/number-keyboard/tokens.js +7 -7
  201. package/dist/es/components/overlay/Overlay.js +18 -20
  202. package/dist/es/components/overlay/OverlayStackStore.js +2 -2
  203. package/dist/es/components/overlay/tokens.js +25 -2
  204. package/dist/es/components/overlay/useOverlayStack.js +9 -8
  205. package/dist/es/components/pagination/Pagination.js +9 -9
  206. package/dist/es/components/password-input/PasswordInput.js +56 -51
  207. package/dist/es/components/picker/Picker.js +209 -81
  208. package/dist/es/components/picker/WheelPicker.js +304 -126
  209. package/dist/es/components/picker/utils.js +13 -9
  210. package/dist/es/components/popup/Popup.js +184 -214
  211. package/dist/es/components/portal/Portal.js +6 -15
  212. package/dist/es/components/portal/PortalHost.js +103 -73
  213. package/dist/es/components/progress/Progress.js +112 -112
  214. package/dist/es/components/pull-refresh/PullRefresh.js +86 -51
  215. package/dist/es/components/radio/Radio.js +46 -49
  216. package/dist/es/components/radio/RadioGroup.js +8 -9
  217. package/dist/es/components/radio/tokens.js +1 -1
  218. package/dist/es/components/rate/Rate.js +67 -57
  219. package/dist/es/components/rate/tokens.js +1 -3
  220. package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
  221. package/dist/es/components/safe-area-view/index.js +1 -0
  222. package/dist/es/components/search/Search.js +22 -25
  223. package/dist/es/components/selector/Selector.js +128 -87
  224. package/dist/es/components/selector/tokens.js +1 -1
  225. package/dist/es/components/share-sheet/ShareSheet.js +72 -65
  226. package/dist/es/components/sidebar/Sidebar.js +34 -22
  227. package/dist/es/components/sidebar/SidebarContext.js +2 -1
  228. package/dist/es/components/sidebar/SidebarItem.js +7 -7
  229. package/dist/es/components/sidebar/tokens.js +3 -2
  230. package/dist/es/components/skeleton/Skeleton.js +70 -51
  231. package/dist/es/components/slider/Slider.js +197 -162
  232. package/dist/es/components/slider/utils.js +49 -0
  233. package/dist/es/components/space/Space.js +21 -21
  234. package/dist/es/components/stepper/Stepper.js +105 -81
  235. package/dist/es/components/swiper/Swiper.js +229 -332
  236. package/dist/es/components/swiper/SwiperItem.js +2 -2
  237. package/dist/es/components/swiper/SwiperPagIndicator.js +9 -7
  238. package/dist/es/components/swiper/useSwiperWeb.js +193 -0
  239. package/dist/es/components/swiper/utils.js +37 -0
  240. package/dist/es/components/switch/Switch.js +42 -37
  241. package/dist/es/components/switch/tokens.js +7 -5
  242. package/dist/es/components/tabbar/Tabbar.js +25 -30
  243. package/dist/es/components/tabbar/TabbarContext.js +2 -1
  244. package/dist/es/components/tabbar/TabbarItem.js +11 -10
  245. package/dist/es/components/tabs/Tabs.js +170 -227
  246. package/dist/es/components/tabs/tokens.js +4 -3
  247. package/dist/es/components/tabs/useTabsAnimation.js +55 -0
  248. package/dist/es/components/tabs/useTabsScroll.js +110 -0
  249. package/dist/es/components/tabs/utils.js +19 -0
  250. package/dist/es/components/tag/Tag.js +3 -3
  251. package/dist/es/components/tag/tokens.js +1 -1
  252. package/dist/es/components/toast/Toast.js +22 -11
  253. package/dist/es/components/toast/imperative.js +6 -6
  254. package/dist/es/components/types.js +1 -0
  255. package/dist/es/components/typography/Typography.js +54 -35
  256. package/dist/es/components/typography/tokens.js +3 -3
  257. package/dist/es/components/uploader/Uploader.js +35 -87
  258. package/dist/es/components/uploader/utils.js +60 -0
  259. package/dist/es/components/water-mark/WaterMark.js +13 -13
  260. package/dist/es/design-system/ThemeProvider.js +2 -2
  261. package/dist/es/design-system/createComponentTokensHook.js +2 -2
  262. package/dist/es/design-system/tokens.js +1 -0
  263. package/dist/es/design-system/useTheme.js +2 -2
  264. package/dist/es/hooks/aria/useAriaListBox.js +22 -6
  265. package/dist/es/hooks/aria/useAriaOverlay.js +5 -6
  266. package/dist/es/hooks/aria/useAriaPress.js +35 -21
  267. package/dist/es/hooks/aria/useAriaToggle.js +4 -3
  268. package/dist/es/hooks/gesture/useGestureScroll.js +20 -20
  269. package/dist/es/hooks/index.js +1 -0
  270. package/dist/es/hooks/useControllableValue.js +10 -8
  271. package/dist/es/hooks/useCountDown.js +17 -17
  272. package/dist/es/hooks/useHairline.js +2 -2
  273. package/dist/es/hooks/usePresenceAnimation.js +5 -5
  274. package/dist/es/hooks/useSafeAreaPadding.js +23 -0
  275. package/dist/es/index.js +2 -4
  276. package/dist/es/platform/index.js +1 -0
  277. package/dist/es/platform/measure.js +10 -8
  278. package/dist/es/platform/runtime.js +4 -0
  279. package/dist/es/utils/deepMerge.js +5 -2
  280. package/dist/es/utils/hairline.js +6 -3
  281. package/dist/es/utils/index.js +12 -0
  282. package/dist/types/components/action-sheet/ActionSheet.d.ts +4 -0
  283. package/dist/types/components/action-sheet/index.d.ts +4 -0
  284. package/dist/types/components/action-sheet/tokens.d.ts +4 -0
  285. package/dist/types/components/area/Area.d.ts +4 -0
  286. package/dist/types/components/area/index.d.ts +3 -0
  287. package/dist/types/components/area/utils.d.ts +2 -0
  288. package/dist/types/components/avatar/Avatar.d.ts +5 -0
  289. package/dist/types/components/avatar/index.d.ts +3 -0
  290. package/dist/types/components/avatar/tokens.d.ts +4 -0
  291. package/dist/types/components/badge/Badge.d.ts +4 -0
  292. package/dist/types/components/badge/index.d.ts +3 -0
  293. package/dist/types/components/badge/tokens.d.ts +2 -0
  294. package/dist/types/components/button/Button.d.ts +5 -0
  295. package/dist/types/components/button/ButtonContext.d.ts +16 -0
  296. package/dist/types/components/button/ButtonGroup.d.ts +10 -0
  297. package/dist/types/components/button/index.d.ts +6 -0
  298. package/dist/types/components/button/tokens.d.ts +2 -0
  299. package/dist/types/components/calendar/Calendar.d.ts +4 -0
  300. package/dist/types/components/calendar/index.d.ts +3 -0
  301. package/dist/types/components/calendar/tokens.d.ts +4 -0
  302. package/dist/types/components/cascader/Cascader.d.ts +4 -0
  303. package/dist/types/components/cascader/index.d.ts +4 -0
  304. package/dist/types/components/cascader/tokens.d.ts +4 -0
  305. package/dist/types/components/cascader/useCascaderExtend.d.ts +12 -0
  306. package/dist/types/components/cascader/utils.d.ts +6 -0
  307. package/dist/types/components/cell/Cell.d.ts +4 -0
  308. package/dist/types/components/cell/CellContext.d.ts +7 -0
  309. package/dist/types/components/cell/CellGroup.d.ts +3 -0
  310. package/dist/types/components/cell/index.d.ts +8 -0
  311. package/dist/types/components/cell/tokens.d.ts +4 -0
  312. package/dist/types/components/checkbox/Checkbox.d.ts +5 -0
  313. package/dist/types/components/checkbox/CheckboxContext.d.ts +16 -0
  314. package/dist/types/components/checkbox/CheckboxGroup.d.ts +8 -0
  315. package/dist/types/components/checkbox/index.d.ts +7 -0
  316. package/dist/types/components/checkbox/tokens.d.ts +2 -0
  317. package/dist/types/components/circle/Circle.d.ts +5 -0
  318. package/dist/types/components/circle/index.d.ts +3 -0
  319. package/dist/types/components/circle/tokens.d.ts +4 -0
  320. package/dist/types/components/collapse/Collapse.d.ts +45 -0
  321. package/dist/types/components/collapse/index.d.ts +3 -0
  322. package/dist/types/components/collapse/tokens.d.ts +4 -0
  323. package/dist/types/components/config-provider/ConfigProvider.d.ts +3 -0
  324. package/dist/types/components/config-provider/LocaleContext.d.ts +75 -0
  325. package/dist/types/components/config-provider/index.d.ts +5 -0
  326. package/dist/types/components/config-provider/locale/base.d.ts +74 -0
  327. package/dist/types/components/config-provider/locale/en-US.d.ts +74 -0
  328. package/dist/types/components/config-provider/locale/zh-CN.d.ts +74 -0
  329. package/dist/types/components/config-provider/useLocale.d.ts +74 -0
  330. package/dist/types/components/count-down/CountDown.d.ts +4 -0
  331. package/dist/types/components/count-down/index.d.ts +4 -0
  332. package/dist/types/components/count-down/tokens.d.ts +4 -0
  333. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +4 -0
  334. package/dist/types/components/datetime-picker/index.d.ts +3 -0
  335. package/dist/types/components/dialog/Dialog.d.ts +4 -0
  336. package/dist/types/components/dialog/imperative.d.ts +23 -0
  337. package/dist/types/components/dialog/index.d.ts +5 -0
  338. package/dist/types/components/dialog/tokens.d.ts +46 -0
  339. package/dist/types/components/divider/Divider.d.ts +3 -0
  340. package/dist/types/components/divider/index.d.ts +3 -0
  341. package/dist/types/components/divider/tokens.d.ts +4 -0
  342. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +4 -0
  343. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +4 -0
  344. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +17 -0
  345. package/dist/types/components/dropdown-menu/index.d.ts +8 -0
  346. package/dist/types/components/dropdown-menu/tokens.d.ts +35 -0
  347. package/dist/types/components/empty/Empty.d.ts +3 -0
  348. package/dist/types/components/empty/index.d.ts +3 -0
  349. package/dist/types/components/empty/tokens.d.ts +4 -0
  350. package/dist/types/components/field/Field.d.ts +4 -0
  351. package/dist/types/components/field/index.d.ts +7 -0
  352. package/dist/types/components/field/tokens.d.ts +131 -0
  353. package/dist/types/components/field/utils.d.ts +4 -0
  354. package/dist/types/components/flex/Flex.d.ts +3 -0
  355. package/dist/types/components/flex/FlexContext.d.ts +8 -0
  356. package/dist/types/components/flex/FlexItem.d.ts +3 -0
  357. package/dist/types/components/flex/index.d.ts +8 -0
  358. package/dist/types/components/flex/tokens.d.ts +2 -0
  359. package/dist/types/components/form/Form.d.ts +6 -0
  360. package/dist/types/components/form/FormContext.d.ts +17 -0
  361. package/dist/types/components/form/FormItem.d.ts +4 -0
  362. package/dist/types/components/form/FormList.d.ts +18 -0
  363. package/dist/types/components/form/index.d.ts +17 -0
  364. package/dist/types/components/form/utils.d.ts +6 -0
  365. package/dist/types/components/grid/Grid.d.ts +3 -0
  366. package/dist/types/components/grid/GridContext.d.ts +17 -0
  367. package/dist/types/components/grid/GridItem.d.ts +3 -0
  368. package/dist/types/components/grid/index.d.ts +5 -0
  369. package/dist/types/components/grid/tokens.d.ts +4 -0
  370. package/dist/types/components/image/Image.d.ts +5 -0
  371. package/dist/types/components/image/index.d.ts +4 -0
  372. package/dist/types/components/image/tokens.d.ts +2 -0
  373. package/dist/types/components/image-preview/ImagePreview.d.ts +4 -0
  374. package/dist/types/components/image-preview/imperative.d.ts +5 -0
  375. package/dist/types/components/image-preview/index.d.ts +6 -0
  376. package/dist/types/components/image-preview/tokens.d.ts +10 -0
  377. package/dist/types/components/index-bar/IndexAnchor.d.ts +4 -0
  378. package/dist/types/components/index-bar/IndexBar.d.ts +4 -0
  379. package/dist/types/components/index-bar/index.d.ts +9 -0
  380. package/dist/types/components/index-bar/tokens.d.ts +22 -0
  381. package/dist/types/components/index.d.ts +138 -0
  382. package/dist/types/components/input/Input.d.ts +8 -0
  383. package/dist/types/components/input/index.d.ts +4 -0
  384. package/dist/types/components/input/tokens.d.ts +2 -0
  385. package/dist/types/components/list/List.d.ts +4 -0
  386. package/dist/types/components/list/index.d.ts +3 -0
  387. package/dist/types/components/list/tokens.d.ts +4 -0
  388. package/dist/types/components/loading/Loading.d.ts +3 -0
  389. package/dist/types/components/loading/index.d.ts +3 -0
  390. package/dist/types/components/loading/tokens.d.ts +4 -0
  391. package/dist/types/components/nav-bar/NavBar.d.ts +4 -0
  392. package/dist/types/components/nav-bar/index.d.ts +4 -0
  393. package/dist/types/components/nav-bar/tokens.d.ts +4 -0
  394. package/dist/types/components/notice-bar/NoticeBar.d.ts +3 -0
  395. package/dist/types/components/notice-bar/index.d.ts +3 -0
  396. package/dist/types/components/notice-bar/tokens.d.ts +23 -0
  397. package/dist/types/components/notify/Notify.d.ts +5 -0
  398. package/dist/types/components/notify/defaults.d.ts +10 -0
  399. package/dist/types/components/notify/imperative.d.ts +22 -0
  400. package/dist/types/components/notify/index.d.ts +15 -0
  401. package/dist/types/components/notify/tokens.d.ts +4 -0
  402. package/dist/types/components/number-keyboard/NumberKeyboard.d.ts +4 -0
  403. package/dist/types/components/number-keyboard/index.d.ts +4 -0
  404. package/dist/types/components/number-keyboard/tokens.d.ts +36 -0
  405. package/dist/types/components/overlay/Overlay.d.ts +4 -0
  406. package/dist/types/components/overlay/OverlayStackStore.d.ts +39 -0
  407. package/dist/types/components/overlay/index.d.ts +6 -0
  408. package/dist/types/components/overlay/tokens.d.ts +4 -0
  409. package/dist/types/components/overlay/useOverlayStack.d.ts +10 -0
  410. package/dist/types/components/pagination/Pagination.d.ts +5 -0
  411. package/dist/types/components/pagination/index.d.ts +5 -0
  412. package/dist/types/components/pagination/tokens.d.ts +2 -0
  413. package/dist/types/components/password-input/PasswordInput.d.ts +39 -0
  414. package/dist/types/components/password-input/index.d.ts +2 -0
  415. package/dist/types/components/picker/Picker.d.ts +16 -0
  416. package/dist/types/components/picker/WheelPicker.d.ts +21 -0
  417. package/dist/types/components/picker/index.d.ts +4 -0
  418. package/dist/types/components/picker/tokens.d.ts +37 -0
  419. package/dist/types/components/picker/utils.d.ts +17 -0
  420. package/dist/types/components/popup/Popup.d.ts +44 -0
  421. package/dist/types/components/popup/index.d.ts +4 -0
  422. package/dist/types/components/popup/tokens.d.ts +46 -0
  423. package/dist/types/components/portal/Portal.d.ts +13 -0
  424. package/dist/types/components/portal/PortalContext.d.ts +7 -0
  425. package/dist/types/components/portal/PortalHost.d.ts +25 -0
  426. package/dist/types/components/portal/index.d.ts +3 -0
  427. package/dist/types/components/progress/Progress.d.ts +4 -0
  428. package/dist/types/components/progress/index.d.ts +3 -0
  429. package/dist/types/components/progress/tokens.d.ts +4 -0
  430. package/dist/types/components/pull-refresh/PullRefresh.d.ts +5 -0
  431. package/dist/types/components/pull-refresh/index.d.ts +4 -0
  432. package/dist/types/components/pull-refresh/tokens.d.ts +10 -0
  433. package/dist/types/components/radio/Radio.d.ts +3 -0
  434. package/dist/types/components/radio/RadioContext.d.ts +13 -0
  435. package/dist/types/components/radio/RadioGroup.d.ts +3 -0
  436. package/dist/types/components/radio/index.d.ts +7 -0
  437. package/dist/types/components/radio/tokens.d.ts +2 -0
  438. package/dist/types/components/rate/Rate.d.ts +4 -0
  439. package/dist/types/components/rate/index.d.ts +4 -0
  440. package/dist/types/components/rate/tokens.d.ts +4 -0
  441. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
  442. package/dist/types/components/safe-area-view/index.d.ts +2 -0
  443. package/dist/types/components/search/Search.d.ts +4 -0
  444. package/dist/types/components/search/index.d.ts +4 -0
  445. package/dist/types/components/search/tokens.d.ts +40 -0
  446. package/dist/types/components/selector/Selector.d.ts +7 -0
  447. package/dist/types/components/selector/index.d.ts +4 -0
  448. package/dist/types/components/selector/tokens.d.ts +2 -0
  449. package/dist/types/components/share-sheet/ShareSheet.d.ts +4 -0
  450. package/dist/types/components/share-sheet/index.d.ts +4 -0
  451. package/dist/types/components/share-sheet/tokens.d.ts +26 -0
  452. package/dist/types/components/sidebar/Sidebar.d.ts +4 -0
  453. package/dist/types/components/sidebar/SidebarContext.d.ts +7 -0
  454. package/dist/types/components/sidebar/SidebarItem.d.ts +4 -0
  455. package/dist/types/components/sidebar/index.d.ts +8 -0
  456. package/dist/types/components/sidebar/tokens.d.ts +4 -0
  457. package/dist/types/components/skeleton/Skeleton.d.ts +5 -0
  458. package/dist/types/components/skeleton/index.d.ts +5 -0
  459. package/dist/types/components/skeleton/tokens.d.ts +2 -0
  460. package/dist/types/components/slider/Slider.d.ts +4 -0
  461. package/dist/types/components/slider/index.d.ts +3 -0
  462. package/dist/types/components/slider/tokens.d.ts +28 -0
  463. package/dist/types/components/slider/utils.d.ts +42 -0
  464. package/dist/types/components/space/Space.d.ts +3 -0
  465. package/dist/types/components/space/index.d.ts +3 -0
  466. package/dist/types/components/space/tokens.d.ts +3 -0
  467. package/dist/types/components/stepper/Stepper.d.ts +4 -0
  468. package/dist/types/components/stepper/index.d.ts +4 -0
  469. package/dist/types/components/stepper/tokens.d.ts +43 -0
  470. package/dist/types/components/swiper/Swiper.d.ts +7 -0
  471. package/dist/types/components/swiper/SwiperItem.d.ts +5 -0
  472. package/dist/types/components/swiper/SwiperPagIndicator.d.ts +36 -0
  473. package/dist/types/components/swiper/index.d.ts +14 -0
  474. package/dist/types/components/swiper/useSwiperWeb.d.ts +41 -0
  475. package/dist/types/components/swiper/utils.d.ts +17 -0
  476. package/dist/types/components/switch/Switch.d.ts +7 -0
  477. package/dist/types/components/switch/index.d.ts +4 -0
  478. package/dist/types/components/switch/tokens.d.ts +2 -0
  479. package/dist/types/components/tabbar/Tabbar.d.ts +4 -0
  480. package/dist/types/components/tabbar/TabbarContext.d.ts +13 -0
  481. package/dist/types/components/tabbar/TabbarItem.d.ts +4 -0
  482. package/dist/types/components/tabbar/index.d.ts +9 -0
  483. package/dist/types/components/tabbar/tokens.d.ts +28 -0
  484. package/dist/types/components/tabs/TabPane.d.ts +4 -0
  485. package/dist/types/components/tabs/Tabs.d.ts +4 -0
  486. package/dist/types/components/tabs/index.d.ts +8 -0
  487. package/dist/types/components/tabs/tokens.d.ts +87 -0
  488. package/dist/types/components/tabs/useTabsAnimation.d.ts +30 -0
  489. package/dist/types/components/tabs/useTabsScroll.d.ts +23 -0
  490. package/dist/types/components/tabs/utils.d.ts +5 -0
  491. package/dist/types/components/tag/Tag.d.ts +3 -0
  492. package/dist/types/components/tag/index.d.ts +3 -0
  493. package/dist/types/components/tag/tokens.d.ts +4 -0
  494. package/dist/types/components/toast/Toast.d.ts +36 -0
  495. package/dist/types/components/toast/imperative.d.ts +22 -0
  496. package/dist/types/components/toast/index.d.ts +15 -0
  497. package/dist/types/components/toast/tokens.d.ts +24 -0
  498. package/dist/types/components/types.d.ts +59 -0
  499. package/dist/types/components/typography/Typography.d.ts +11 -0
  500. package/dist/types/components/typography/index.d.ts +3 -0
  501. package/dist/types/components/typography/tokens.d.ts +2 -0
  502. package/dist/types/components/uploader/Uploader.d.ts +4 -0
  503. package/dist/types/components/uploader/index.d.ts +5 -0
  504. package/dist/types/components/uploader/tokens.d.ts +17 -0
  505. package/dist/types/components/uploader/utils.d.ts +11 -0
  506. package/dist/types/components/water-mark/WaterMark.d.ts +4 -0
  507. package/dist/types/components/water-mark/index.d.ts +5 -0
  508. package/dist/types/components/water-mark/tokens.d.ts +2 -0
  509. package/dist/types/design-system/ThemeContext.d.ts +14 -0
  510. package/dist/types/design-system/ThemeProvider.d.ts +14 -0
  511. package/dist/types/design-system/createComponentTokensHook.d.ts +4 -0
  512. package/dist/types/design-system/index.d.ts +10 -0
  513. package/dist/types/design-system/mergeTokensOverride.d.ts +2 -0
  514. package/dist/types/design-system/presets.d.ts +8 -0
  515. package/dist/types/design-system/tokens.d.ts +74 -0
  516. package/dist/types/design-system/useTheme.d.ts +1 -0
  517. package/dist/types/hooks/aria/index.d.ts +4 -0
  518. package/dist/types/hooks/aria/useAriaListBox.d.ts +20 -0
  519. package/dist/types/hooks/aria/useAriaOverlay.d.ts +24 -0
  520. package/dist/types/hooks/aria/useAriaPress.d.ts +39 -0
  521. package/dist/types/hooks/aria/useAriaToggle.d.ts +15 -0
  522. package/dist/types/hooks/gesture/index.d.ts +1 -0
  523. package/dist/types/hooks/gesture/useGestureScroll.d.ts +32 -0
  524. package/dist/types/hooks/index.d.ts +8 -0
  525. package/dist/types/hooks/useControllableValue.d.ts +9 -0
  526. package/dist/types/hooks/useCountDown.d.ts +23 -0
  527. package/dist/types/hooks/useHairline.d.ts +31 -0
  528. package/dist/types/hooks/usePresenceAnimation.d.ts +15 -0
  529. package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
  530. package/dist/types/index.d.ts +4 -0
  531. package/dist/types/platform/animation.d.ts +1 -0
  532. package/dist/types/platform/history.d.ts +1 -0
  533. package/dist/types/platform/index.d.ts +5 -0
  534. package/dist/types/platform/measure.d.ts +7 -0
  535. package/dist/types/platform/runtime.d.ts +3 -0
  536. package/dist/types/platform/scrollLock.d.ts +2 -0
  537. package/dist/types/types.d.ts +4 -0
  538. package/dist/types/utils/array.d.ts +1 -0
  539. package/dist/types/utils/color.d.ts +5 -0
  540. package/dist/types/utils/createPlatformShadow.d.ts +11 -0
  541. package/dist/types/utils/date.d.ts +13 -0
  542. package/dist/types/utils/deepMerge.d.ts +3 -0
  543. package/dist/types/utils/hairline.d.ts +20 -0
  544. package/dist/types/utils/index.d.ts +10 -0
  545. package/dist/types/utils/number.d.ts +11 -0
  546. package/dist/types/utils/promise.d.ts +1 -0
  547. package/dist/types/utils/string.d.ts +3 -0
  548. package/dist/types/utils/validate.d.ts +14 -0
  549. package/package.json +411 -14
  550. package/dist/cjs/components/action-sheet/types.d.ts +0 -96
  551. package/dist/cjs/components/area/types.d.ts +0 -27
  552. package/dist/cjs/components/avatar/types.d.ts +0 -64
  553. package/dist/cjs/components/badge/types.d.ts +0 -61
  554. package/dist/cjs/components/button/types.d.ts +0 -145
  555. package/dist/cjs/components/calendar/types.d.ts +0 -115
  556. package/dist/cjs/components/cascader/types.d.ts +0 -159
  557. package/dist/cjs/components/cell/types.d.ts +0 -117
  558. package/dist/cjs/components/checkbox/types.d.ts +0 -108
  559. package/dist/cjs/components/circle/types.d.ts +0 -94
  560. package/dist/cjs/components/collapse/types.d.ts +0 -47
  561. package/dist/cjs/components/config-provider/locale/types.d.ts +0 -3
  562. package/dist/cjs/components/config-provider/types.d.ts +0 -10
  563. package/dist/cjs/components/count-down/types.d.ts +0 -33
  564. package/dist/cjs/components/datetime-picker/types.d.ts +0 -46
  565. package/dist/cjs/components/dialog/types.d.ts +0 -83
  566. package/dist/cjs/components/divider/types.d.ts +0 -50
  567. package/dist/cjs/components/dropdown-menu/types.d.ts +0 -89
  568. package/dist/cjs/components/empty/types.d.ts +0 -48
  569. package/dist/cjs/components/field/types.d.ts +0 -112
  570. package/dist/cjs/components/flex/types.d.ts +0 -42
  571. package/dist/cjs/components/form/types.d.ts +0 -80
  572. package/dist/cjs/components/grid/types.d.ts +0 -82
  573. package/dist/cjs/components/image/types.d.ts +0 -56
  574. package/dist/cjs/components/image-preview/types.d.ts +0 -67
  575. package/dist/cjs/components/index-bar/types.d.ts +0 -43
  576. package/dist/cjs/components/input/types.d.ts +0 -49
  577. package/dist/cjs/components/list/types.d.ts +0 -48
  578. package/dist/cjs/components/loading/types.d.ts +0 -53
  579. package/dist/cjs/components/nav-bar/types.d.ts +0 -69
  580. package/dist/cjs/components/notice-bar/types.d.ts +0 -29
  581. package/dist/cjs/components/notify/types.d.ts +0 -63
  582. package/dist/cjs/components/number-keyboard/types.d.ts +0 -40
  583. package/dist/cjs/components/pagination/types.d.ts +0 -75
  584. package/dist/cjs/components/password-input/types.d.ts +0 -65
  585. package/dist/cjs/components/picker/core.js +0 -41
  586. package/dist/cjs/components/picker/styles.js +0 -75
  587. package/dist/cjs/components/picker/types.d.ts +0 -70
  588. package/dist/cjs/components/picker/usePickerValue.js +0 -74
  589. package/dist/cjs/components/progress/types.d.ts +0 -53
  590. package/dist/cjs/components/pull-refresh/types.d.ts +0 -29
  591. package/dist/cjs/components/radio/types.d.ts +0 -96
  592. package/dist/cjs/components/rate/types.d.ts +0 -54
  593. package/dist/cjs/components/search/types.d.ts +0 -84
  594. package/dist/cjs/components/selector/types.d.ts +0 -80
  595. package/dist/cjs/components/share-sheet/types.d.ts +0 -30
  596. package/dist/cjs/components/sidebar/types.d.ts +0 -66
  597. package/dist/cjs/components/skeleton/types.d.ts +0 -46
  598. package/dist/cjs/components/slider/types.d.ts +0 -39
  599. package/dist/cjs/components/space/types.d.ts +0 -47
  600. package/dist/cjs/components/stepper/types.d.ts +0 -58
  601. package/dist/cjs/components/swipe-cell/SwipeCell.js +0 -399
  602. package/dist/cjs/components/swipe-cell/index.js +0 -9
  603. package/dist/cjs/components/swiper/types.d.ts +0 -83
  604. package/dist/cjs/components/switch/types.d.ts +0 -71
  605. package/dist/cjs/components/tabbar/types.d.ts +0 -51
  606. package/dist/cjs/components/tabs/types.d.ts +0 -71
  607. package/dist/cjs/components/tag/types.d.ts +0 -67
  608. package/dist/cjs/components/theme.d.ts +0 -113
  609. package/dist/cjs/components/typography/types.d.ts +0 -77
  610. package/dist/cjs/components/uploader/types.d.ts +0 -90
  611. package/dist/cjs/components/water-mark/types.d.ts +0 -60
  612. package/dist/cjs/index.d.ts +0 -16
  613. package/dist/client-CDqbgn-w.mjs +0 -31965
  614. package/dist/es/components/action-sheet/types.d.ts +0 -96
  615. package/dist/es/components/area/types.d.ts +0 -27
  616. package/dist/es/components/avatar/types.d.ts +0 -64
  617. package/dist/es/components/badge/types.d.ts +0 -61
  618. package/dist/es/components/button/types.d.ts +0 -145
  619. package/dist/es/components/calendar/types.d.ts +0 -115
  620. package/dist/es/components/cascader/types.d.ts +0 -159
  621. package/dist/es/components/cell/types.d.ts +0 -117
  622. package/dist/es/components/checkbox/types.d.ts +0 -108
  623. package/dist/es/components/circle/types.d.ts +0 -94
  624. package/dist/es/components/collapse/types.d.ts +0 -47
  625. package/dist/es/components/config-provider/locale/types.d.ts +0 -3
  626. package/dist/es/components/config-provider/types.d.ts +0 -10
  627. package/dist/es/components/count-down/types.d.ts +0 -33
  628. package/dist/es/components/datetime-picker/types.d.ts +0 -46
  629. package/dist/es/components/dialog/types.d.ts +0 -83
  630. package/dist/es/components/divider/types.d.ts +0 -50
  631. package/dist/es/components/dropdown-menu/types.d.ts +0 -89
  632. package/dist/es/components/empty/types.d.ts +0 -48
  633. package/dist/es/components/field/types.d.ts +0 -112
  634. package/dist/es/components/flex/types.d.ts +0 -42
  635. package/dist/es/components/form/types.d.ts +0 -80
  636. package/dist/es/components/grid/types.d.ts +0 -82
  637. package/dist/es/components/image/types.d.ts +0 -56
  638. package/dist/es/components/image-preview/types.d.ts +0 -67
  639. package/dist/es/components/index-bar/types.d.ts +0 -43
  640. package/dist/es/components/input/types.d.ts +0 -49
  641. package/dist/es/components/list/types.d.ts +0 -48
  642. package/dist/es/components/loading/types.d.ts +0 -53
  643. package/dist/es/components/nav-bar/types.d.ts +0 -69
  644. package/dist/es/components/notice-bar/types.d.ts +0 -29
  645. package/dist/es/components/notify/types.d.ts +0 -63
  646. package/dist/es/components/number-keyboard/types.d.ts +0 -40
  647. package/dist/es/components/pagination/types.d.ts +0 -75
  648. package/dist/es/components/password-input/types.d.ts +0 -65
  649. package/dist/es/components/picker/core.js +0 -31
  650. package/dist/es/components/picker/styles.js +0 -63
  651. package/dist/es/components/picker/types.d.ts +0 -70
  652. package/dist/es/components/picker/usePickerValue.js +0 -60
  653. package/dist/es/components/progress/types.d.ts +0 -53
  654. package/dist/es/components/pull-refresh/types.d.ts +0 -29
  655. package/dist/es/components/radio/types.d.ts +0 -96
  656. package/dist/es/components/rate/types.d.ts +0 -54
  657. package/dist/es/components/search/types.d.ts +0 -84
  658. package/dist/es/components/selector/types.d.ts +0 -80
  659. package/dist/es/components/share-sheet/types.d.ts +0 -30
  660. package/dist/es/components/sidebar/types.d.ts +0 -66
  661. package/dist/es/components/skeleton/types.d.ts +0 -46
  662. package/dist/es/components/slider/types.d.ts +0 -39
  663. package/dist/es/components/space/types.d.ts +0 -47
  664. package/dist/es/components/stepper/types.d.ts +0 -58
  665. package/dist/es/components/swipe-cell/SwipeCell.js +0 -380
  666. package/dist/es/components/swipe-cell/index.js +0 -2
  667. package/dist/es/components/swiper/types.d.ts +0 -83
  668. package/dist/es/components/switch/types.d.ts +0 -71
  669. package/dist/es/components/tabbar/types.d.ts +0 -51
  670. package/dist/es/components/tabs/types.d.ts +0 -71
  671. package/dist/es/components/tag/types.d.ts +0 -67
  672. package/dist/es/components/theme.d.ts +0 -113
  673. package/dist/es/components/typography/types.d.ts +0 -77
  674. package/dist/es/components/uploader/types.d.ts +0 -90
  675. package/dist/es/components/water-mark/types.d.ts +0 -60
  676. package/dist/es/index.d.ts +0 -16
  677. package/dist/react-native-system-ui.es.mjs +0 -1194
  678. package/dist/react-native-system-ui.js +0 -33977
  679. package/dist/react-native-system-ui.min.js +0 -1
package/README.md CHANGED
@@ -1,13 +1,12 @@
1
1
  # react-native-system-ui
2
2
 
3
- React Native 端的移动组件库,交互与 API 借鉴社区成熟方案,同时借鉴 **react-native-xiaoshu** 的原子化设计,目标是产出“极简、强韧、低心智”体验的系统化 UI 资产。
3
+ 面向 React Native 的设计系统级组件库。Tokens + ThemeProvider 主题体系,按需引入、体积可控;API 统一可组合,支持可访问性与多端一致。
4
4
 
5
- ## 愿景 / Goals
5
+ ## 特性
6
6
 
7
- - 用统一的设计让成熟的移动端交互体验可以在原生端复用,同时尊重 React Native 的运行特性(无 less、依赖 StyleSheet)。
8
- - 提供轻量的设计系统(tokens + provider + hooks),组件不直接耦合具体样式,利于按需复用与主题定制。
9
- - ✅ 默认约束与 API 语义尽量贴近主流移动端组件库,保证迁移成本低。
10
- - ✅ 文档与示例聚焦“如何落地 + 如何扩展”,减少探索成本。
7
+ - **设计系统**:Design Tokens + ThemeProvider,无 less、基于 StyleSheet,组件不耦合具体样式,利于主题定制与按需复用。
8
+ - **体积可控**:支持 Tree Shaking 与按需引入,单组件体积可控;详见文档站「组件体积」。
9
+ - **API 统一**:语义贴近主流移动端组件库,迁移成本低;文档与示例聚焦落地与扩展。
11
10
 
12
11
  ## 快速开始
13
12
 
@@ -18,19 +17,35 @@ pnpm add react-native-system-ui react-native-svg
18
17
  # 如需在业务中直接使用图标组件(可 Tree Shaking)
19
18
  pnpm add react-native-system-icon
20
19
 
21
- # 同时保证项目已安装 react 和 react-native(>=19 / >=0.79)
20
+ # 同时保证项目已安装 react 和 react-native(>=18.2 / >=0.79)
22
21
  ```
23
22
 
23
+ **优先使用 ConfigProvider** 包裹根节点,这样 Button、Toast、Popup、Dialog 等都能直接使用,无需再配弹层挂载点。
24
+
24
25
  ```tsx
25
- import { ThemeProvider, Button } from 'react-native-system-ui'
26
+ import { ConfigProvider, Button, Toast } from 'react-native-system-ui'
26
27
 
27
- export const Demo = () => (
28
- <ThemeProvider>
29
- <Button text="提交" type="primary" shadow />
30
- </ThemeProvider>
28
+ export const App = () => (
29
+ <ConfigProvider>
30
+ <Button text="提交" onPress={() => Toast.show('你好')} type="primary" shadow />
31
+ </ConfigProvider>
31
32
  )
32
33
  ```
33
34
 
35
+ ConfigProvider 内置 **ThemeProvider**(主题)与 **PortalHost**(弹层挂载点)。若只包 ThemeProvider 而没挂 PortalHost,Toast/Popup/Dialog 会无法显示。
36
+
37
+ ### 也可以单独使用 ThemeProvider
38
+
39
+ 仅做主题、且确定不用弹层时,可只用 ThemeProvider;之后若要接 Toast/Popup/Dialog,需再包一层 `<Portal.Host>` 或改用 ConfigProvider。
40
+
41
+ | 能力 | ConfigProvider | ThemeProvider |
42
+ | --- | --- | --- |
43
+ | 主题(tokens) | ✅ 内置 | ✅ |
44
+ | 弹层挂载点(PortalHost) | ✅ 内置 | ❌ 需再包 `<Portal.Host>` |
45
+ | 语言包(locale) | ✅ | ❌ |
46
+
47
+ 详见 [ConfigProvider](./docs/components/config-provider.md) / [Portal](./docs/components/portal.md)。
48
+
34
49
  ### 自定义 Tokens
35
50
 
36
51
  ```tsx
@@ -81,7 +96,7 @@ export const AuroraBranding = () => (
81
96
  )
82
97
  ```
83
98
 
84
- `themePresets.light` 等价于默认主题,`themePresets.dark` 提供深色配色,`themePresets.aurora` 演示品牌化圆角/字体的组合,可直接交由 `ThemeProvider` 或 `ConfigProvider` 注入。
99
+ `themePresets.light` 等价于默认主题,`themePresets.dark` 提供深色配色,`themePresets.aurora` 演示品牌化圆角/字体,通过 `ThemeProvider` 配置。
85
100
 
86
101
  ## 架构总览
87
102
 
@@ -92,36 +107,30 @@ export const AuroraBranding = () => (
92
107
 
93
108
  > 这一层次化结构让“设计语言”与“交互实现”各司其职,可快速扩展到 40+ 组件而不失控。
94
109
 
95
- ## 目前进度
96
-
97
- - ✳️ **Design System v0.1**:仅提供配色/间距/排版等基础变量与 `ThemeProvider` 通道,组件 token 由各自目录维护。
98
- - ✳️ **Button 组件**:完整覆盖常见按钮的 `type/size/plain/block/round/square/shadow` 语义,支持 `color`、`loading`、`icon` 等能力。
99
- - ✳️ **Flex 组件**:提供 24 栅格的 RN 封装,支持 `gutter`/`direction`/`wrap`/`Flex.Item span` 等能力。
100
- - ✳️ **Space 组件**:覆盖 `gap`、`divider`、`direction`、`wrap`、`align`、`justify` 等交互,并提供一套完整文档及 demo。
101
- - ✳️ **Cell 组件**:实现 `Cell`/`Cell.Group` 组合、`icon/isLink/arrowDirection/size` 等语义,兼容必填星号与自定义内容。
102
- - ✳️ **Divider 组件**:支持水平/垂直、虚线、细边框与文本定位 (`left/center/right`),并开放 `lineColor` 与文本样式扩展。
103
- - ✳️ **Tag 组件**:支持 `type/size/plain/round/mark/closeable` API,可自定义 `color/textColor` 及关闭图标。
104
- - ✳️ **Checkbox 组件**:支持受控/非受控、`Checkbox.Group`、`shape/checkedColor/direction/max` 等能力。
105
- - ✳️ **Radio 组件**:基于 `Radio.Group` 实现单选分组,支持 `direction`、`checkedColor`、`labelPosition` 等配置。
106
- - ✳️ **Badge 组件**:提供数字/红点、`max` 截断、`offset` 偏移、自定义 `content`/`color` 与独立展示模式。
107
- - ✳️ **Grid 组件**:支持 `columnNum/gutter/square/border/direction/reverse` 等语义,`Grid.Item` 兼容 `badge/dot` children 自定义内容。
108
- - ✳️ **Typography 组件**:提供 `Text/Title/Link`,支持 `type/size/ellipsis/strong/underline` 以及展开/收起、多语义排版。
109
- - ✳️ **图标**:使用 `react-native-system-icon` 按需引入图标组件(支持 Tree Shaking),支持 RN/Web。
110
- - ✳️ **Loading 组件**:实现 `circular/spinner` 两种指示器、`color/size/text/vertical` 等配置,满足过渡加载场景。
111
- - ✳️ **Empty 组件**:提供 `image/description/children` 语义,占位符支持默认/错误/网络/搜索以及自定义插画。
112
- - ✳️ **Progress 组件**:复刻 `percentage/strokeWidth/color/pivot` 语义,支持文案与置灰配置。
113
- - ✳️ **NoticeBar 组件**:支持滚动/换行、`mode=closeable|link`、自定义左右图标及配色。
114
- - ✳️ **Toast 组件**:提供受控与 `Toast.show/success/fail/loading/clear` 静态调用,支持遮罩、禁止点击与多种状态图标。
115
- - ✳️ **Dialog 组件**:封装确认/取消弹窗、圆角按钮主题、遮罩与关闭按钮,并提供 `Dialog.show/alert/confirm/clear` 静态调用。
116
- - ✳️ **Slider 组件**:支持单/双滑块、滚动/垂直/反向、步长与自定义按钮,拖动事件支持开始/结束回调。
117
- - ✳️ **ConfigProvider**:统一封装主题与多语言,支持 `theme` tokens 覆盖与 `locale` 切换。
118
- - ✳️ **文档**:Quick Start、架构说明、Aria Hooks、Button 指南已经上线(`docs/`)。
119
-
120
- ## 路线图(下一步)
121
-
122
- 1. **基础交互组件**:Cell、Space、Typography —— 打通排版体系;图标使用 `react-native-system-icon`。
123
- 2. **反馈组件**:Toast、Loading、Dialog —— 依赖 Portal 能力(计划内)。
124
- 3. **表单组件**:Field、Switch、Checkbox —— 与 rc-form 生态对接。
125
- 4. **暗色模式**:扩展 tokens palette,支持按需切换。
126
-
127
- 欢迎 issue / PR,一起把高质量的移动端交互体验带到原生世界。
110
+ ## 已交付能力
111
+
112
+ - **设计系统**:ConfigProvider、ThemeProvider、createTokens、themePresets(light/dark/aurora),组件自管 tokens。使用 Toast/Popup/Dialog 等弹层时推荐用 ConfigProvider 包裹根节点(内置 PortalHost)。
113
+ - **基础与展示**:Button、Badge、Cell、Collapse、Divider、Empty、Flex、Grid、Space、Tag、Typography、Loading、NoticeBar、Popup、Portal、Progress、Slider、Toast、Dialog 等,均提供文档与 demo。
114
+ - **表单与输入**:Form、Field、Input、Checkbox、Radio、Switch、Stepper、Rate、Picker、Calendar、Search 等。
115
+ - **导航与反馈**:Tabs、NavBar、Tabbar、ActionSheet、Notify、Overlay 等。
116
+ - **文档**:快速上手、架构设计、路线图及组件文档站(`docs/`)。
117
+
118
+ 详细组件列表与状态见 [指南 / 路线图](./docs/guide/roadmap.md)。
119
+
120
+ ## 组件体积
121
+
122
+ 基于 `dist/es` 各组件目录 gzip 后相加(字节),非实际打包单 chunk 体积。当前体积较大的组件(Top 5):
123
+
124
+ | 组件 | gzip 体积 |
125
+ | --- | --- |
126
+ | picker | ~10 KB |
127
+ | swiper | ~10 KB |
128
+ | tabs | ~9 KB |
129
+ | dropdown-menu | ~6.5 KB |
130
+ | form | ~6.3 KB |
131
+
132
+ 完整列表与口径说明见文档站首页「组件体积」区域。
133
+
134
+ ## 版本与反馈
135
+
136
+ 当前为 v0.0.1,欢迎 issue / PR。
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  function _react() {
8
- const data = _interopRequireDefault(require("react"));
8
+ const data = _interopRequireWildcard(require("react"));
9
9
  _react = function () {
10
10
  return data;
11
11
  };
@@ -26,12 +26,12 @@ function _reactNativeSystemIcon() {
26
26
  return data;
27
27
  }
28
28
  var _hooks = require("../../hooks");
29
- var _hairline = require("../../utils/hairline");
30
- var _validate = require("../../utils/validate");
29
+ var _utils = require("../../utils");
31
30
  var _loading = _interopRequireDefault(require("../loading"));
32
31
  var _popup = _interopRequireDefault(require("../popup"));
33
32
  var _tokens = require("./tokens");
34
33
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
34
+ 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); }
35
35
  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); }
36
36
  const defaultCloseIcon = /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Close, {
37
37
  size: 18
@@ -54,7 +54,7 @@ const ActionSheetHeader = /*#__PURE__*/_react().default.memo(({
54
54
  style: tokens.layout.header
55
55
  }, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
56
56
  style: tokens.layout.titleContainer
57
- }, (0, _validate.isText)(title) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
57
+ }, (0, _utils.isText)(title) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
58
58
  style: [tokens.layout.title, {
59
59
  color: colors.title,
60
60
  fontSize: typography.title
@@ -75,7 +75,7 @@ const ActionSheetItem = /*#__PURE__*/_react().default.memo(({
75
75
  action,
76
76
  index,
77
77
  tokens,
78
- onPress
78
+ onActionPress
79
79
  }) => {
80
80
  const disabled = !!action.disabled;
81
81
  const loading = !!action.loading;
@@ -84,9 +84,10 @@ const ActionSheetItem = /*#__PURE__*/_react().default.memo(({
84
84
  spacing,
85
85
  typography
86
86
  } = tokens;
87
+ const handlePress = (0, _react().useCallback)(() => onActionPress(action, index), [action, index, onActionPress]);
87
88
  const actionPress = (0, _hooks.useAriaPress)({
88
89
  disabled: disabled || loading,
89
- onPress,
90
+ onPress: handlePress,
90
91
  extraProps: {
91
92
  accessibilityRole: 'button',
92
93
  accessibilityState: {
@@ -100,8 +101,8 @@ const ActionSheetItem = /*#__PURE__*/_react().default.memo(({
100
101
  const name = action.name;
101
102
  const subname = action.subname;
102
103
  const hasIcon = !!action.icon;
103
- const hasName = (0, _validate.isRenderable)(name);
104
- const hasSubname = (0, _validate.isRenderable)(subname);
104
+ const hasName = (0, _utils.isRenderable)(name);
105
+ const hasSubname = (0, _utils.isRenderable)(subname);
105
106
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
106
107
  style: ({
107
108
  pressed
@@ -110,18 +111,18 @@ const ActionSheetItem = /*#__PURE__*/_react().default.memo(({
110
111
  paddingHorizontal: spacing.horizontal,
111
112
  backgroundColor: pressed && !disabled && !loading ? colors.itemPressedBackground : colors.itemBackground
112
113
  }, action.style]
113
- }, actionPress.interactionProps), hasIcon ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
114
+ }, actionPress.interactionProps), hasIcon && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
114
115
  style: tokens.layout.icon
115
- }, action.icon) : null, loading ? /*#__PURE__*/_react().default.createElement(_loading.default, {
116
+ }, action.icon), loading ? /*#__PURE__*/_react().default.createElement(_loading.default, {
116
117
  size: 20
117
118
  }) : hasName ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
118
119
  style: tokens.layout.itemTextWrapper
119
- }, (0, _validate.isText)(name) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
120
+ }, (0, _utils.isText)(name) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
120
121
  style: [tokens.layout.itemText, {
121
122
  color: disabled ? colors.disabled : color,
122
123
  fontSize: typography.item
123
124
  }]
124
- }, name) : name, hasSubname ? (0, _validate.isText)(subname) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
125
+ }, name) : name, hasSubname ? (0, _utils.isText)(subname) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
125
126
  style: [tokens.layout.subname, {
126
127
  color: colors.subitem
127
128
  }]
@@ -158,7 +159,7 @@ const ActionSheetCancel = /*#__PURE__*/_react().default.memo(({
158
159
  paddingHorizontal: spacing.horizontal,
159
160
  backgroundColor: colors.cancelBackground
160
161
  }]
161
- }, cancelPress.interactionProps), (0, _validate.isText)(cancelText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
162
+ }, cancelPress.interactionProps), (0, _utils.isText)(cancelText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
162
163
  style: [tokens.layout.cancelText, {
163
164
  color: colors.cancel,
164
165
  fontSize: typography.item
@@ -197,35 +198,55 @@ const ActionSheet = props => {
197
198
  const overlay = overlayProp ?? tokens.defaults.overlay;
198
199
  const lockScroll = lockScrollProp ?? tokens.defaults.lockScroll;
199
200
  const shouldCloseOnClickAction = closeOnClickActionProp ?? closeOnSelect ?? tokens.defaults.closeOnClickAction;
200
- const hasTitle = (0, _validate.isRenderable)(title);
201
- const hasDescription = (0, _validate.isRenderable)(description);
202
- const hasCancelText = (0, _validate.isRenderable)(cancelText);
203
- const runBeforeClose = _react().default.useCallback(async action => {
201
+ const hasTitle = (0, _utils.isRenderable)(title);
202
+ const hasDescription = (0, _utils.isRenderable)(description);
203
+ const hasCancelText = (0, _utils.isRenderable)(cancelText);
204
+ const lastPopupCloseReasonRef = (0, _react().useRef)('close');
205
+ const closingRef = (0, _react().useRef)(false);
206
+ const runBeforeClose = (0, _react().useCallback)(async action => {
204
207
  if (!beforeClose) return true;
205
208
  try {
206
209
  return (await beforeClose(action)) !== false;
207
210
  } catch (error) {
208
- console.error(error);
209
211
  return true;
210
212
  }
211
213
  }, [beforeClose]);
212
- const requestClose = _react().default.useCallback(async action => {
213
- const allowed = await runBeforeClose(action);
214
- if (!allowed) return;
215
- onClose?.();
216
- }, [onClose, runBeforeClose]);
217
- const handlePopupBeforeClose = _react().default.useCallback(reason => {
214
+ const emitClose = (0, _react().useCallback)(reason => {
215
+ if (onClose) {
216
+ if (reason === 'cancel') {
217
+ onCancel?.();
218
+ }
219
+ onClose();
220
+ return;
221
+ }
222
+ onCancel?.();
223
+ }, [onCancel, onClose]);
224
+ const requestClose = (0, _react().useCallback)(async action => {
225
+ if (closingRef.current) return;
226
+ closingRef.current = true;
227
+ try {
228
+ const allowed = await runBeforeClose(action);
229
+ if (!allowed) return;
230
+ emitClose(action);
231
+ } finally {
232
+ closingRef.current = false;
233
+ }
234
+ }, [emitClose, runBeforeClose]);
235
+ const handlePopupBeforeClose = (0, _react().useCallback)(reason => {
218
236
  const action = reason === 'close-icon' ? 'close-icon' : reason === 'overlay' ? 'overlay' : 'close';
237
+ lastPopupCloseReasonRef.current = action;
219
238
  return runBeforeClose(action);
220
239
  }, [runBeforeClose]);
221
- const handleCancel = _react().default.useCallback(() => {
222
- onCancel?.();
240
+ const handlePopupClose = (0, _react().useCallback)(() => {
241
+ emitClose(lastPopupCloseReasonRef.current);
242
+ }, [emitClose]);
243
+ const handleCancel = (0, _react().useCallback)(() => {
223
244
  void requestClose('cancel');
224
- }, [onCancel, requestClose]);
225
- const handleCloseIcon = _react().default.useCallback(() => {
245
+ }, [requestClose]);
246
+ const handleCloseIcon = (0, _react().useCallback)(() => {
226
247
  void requestClose('close-icon');
227
248
  }, [requestClose]);
228
- const handleActionPress = _react().default.useCallback((action, index) => {
249
+ const handleActionPress = (0, _react().useCallback)((action, index) => {
229
250
  if (action.disabled || action.loading) {
230
251
  return;
231
252
  }
@@ -240,11 +261,12 @@ const ActionSheet = props => {
240
261
  visible: visible,
241
262
  placement: "bottom",
242
263
  round: round,
264
+ safeAreaInsetTop: hasTitle && closeable,
243
265
  safeAreaInsetBottom: safeAreaInsetBottom,
244
266
  overlay: overlay,
245
267
  lockScroll: lockScroll,
246
268
  beforeClose: handlePopupBeforeClose,
247
- onClose: onClose,
269
+ onClose: handlePopupClose,
248
270
  style: [tokens.layout.popup, popupStyle]
249
271
  }, popupProps), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
250
272
  style: [tokens.layout.panel, {
@@ -257,8 +279,8 @@ const ActionSheet = props => {
257
279
  tokens: tokens,
258
280
  onClose: handleCloseIcon
259
281
  }) : null, hasDescription ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
260
- style: [tokens.layout.descriptionContainer, (0, _hairline.createHairlineBorderBottom)(tokens.colors.border)]
261
- }, (0, _validate.isText)(description) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
282
+ style: [tokens.layout.descriptionContainer, (0, _utils.createHairlineBorderBottom)(tokens.colors.border)]
283
+ }, (0, _utils.isText)(description) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
262
284
  style: [tokens.layout.description, {
263
285
  color: tokens.colors.description,
264
286
  fontSize: tokens.typography.description
@@ -272,7 +294,7 @@ const ActionSheet = props => {
272
294
  action: action,
273
295
  index: index,
274
296
  tokens: tokens,
275
- onPress: () => handleActionPress(action, index)
297
+ onActionPress: handleActionPress
276
298
  }))), children, hasCancelText ? /*#__PURE__*/_react().default.createElement(ActionSheetCancel, {
277
299
  cancelText: cancelText,
278
300
  tokens: tokens,
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  function _react() {
8
- const data = _interopRequireDefault(require("react"));
8
+ const data = _interopRequireWildcard(require("react"));
9
9
  _react = function () {
10
10
  return data;
11
11
  };
@@ -14,7 +14,23 @@ function _react() {
14
14
  var _picker = _interopRequireDefault(require("../picker"));
15
15
  var _utils = require("./utils");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ 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); }
17
18
  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); }
19
+ const normalizeCascadeValue = (root, raw, depth) => {
20
+ if (!raw) return raw;
21
+ const input = Array.isArray(raw) ? raw.map(String) : [String(raw)];
22
+ const result = [];
23
+ let options = root;
24
+ for (let i = 0; i < depth; i += 1) {
25
+ if (!options?.length) break;
26
+ const wanted = input[i];
27
+ const nextOption = options.find(o => String(o.value) === wanted) ?? options[0];
28
+ if (!nextOption) break;
29
+ result.push(String(nextOption.value));
30
+ options = nextOption.children;
31
+ }
32
+ return result;
33
+ };
18
34
  const Area = props => {
19
35
  const {
20
36
  areaList,
@@ -23,21 +39,40 @@ const Area = props => {
23
39
  defaultValue,
24
40
  onChange,
25
41
  onConfirm,
42
+ interactionMode = 'sync',
26
43
  ...pickerProps
27
44
  } = props;
28
45
  const resolvedColumnsNum = columnsNum === 1 || columnsNum === 2 || columnsNum === 3 ? columnsNum : 3;
29
- const columns = _react().default.useMemo(() => (0, _utils.buildAreaColumns)(areaList, resolvedColumnsNum), [areaList, resolvedColumnsNum]);
30
- const handleChange = _react().default.useCallback((values, options) => {
46
+ const {
47
+ province_list,
48
+ city_list,
49
+ county_list
50
+ } = areaList;
51
+ const columns = (0, _react().useMemo)(() => (0, _utils.buildAreaColumns)({
52
+ province_list,
53
+ city_list,
54
+ county_list
55
+ }, resolvedColumnsNum), [province_list, city_list, county_list, resolvedColumnsNum]);
56
+ const normalizedValue = (0, _react().useMemo)(() => {
57
+ if (value === undefined) return undefined;
58
+ return normalizeCascadeValue(columns, value, resolvedColumnsNum);
59
+ }, [columns, resolvedColumnsNum, value]);
60
+ const normalizedDefaultValue = (0, _react().useMemo)(() => {
61
+ if (defaultValue === undefined) return undefined;
62
+ return normalizeCascadeValue(columns, defaultValue, resolvedColumnsNum);
63
+ }, [columns, defaultValue, resolvedColumnsNum]);
64
+ const handleChange = (0, _react().useCallback)((values, options) => {
31
65
  onChange?.(values.map(String), options);
32
66
  }, [onChange]);
33
- const handleConfirm = _react().default.useCallback((values, options) => {
67
+ const handleConfirm = (0, _react().useCallback)((values, options) => {
34
68
  onConfirm?.(values.map(String), options);
35
69
  }, [onConfirm]);
36
70
  return /*#__PURE__*/_react().default.createElement(_picker.default, _extends({}, pickerProps, {
37
71
  columns: columns,
38
- value: value,
39
- defaultValue: defaultValue,
40
- onChange: handleChange,
72
+ interactionMode: interactionMode,
73
+ value: normalizedValue,
74
+ defaultValue: normalizedDefaultValue,
75
+ onChange: onChange ? handleChange : undefined,
41
76
  onConfirm: onConfirm ? handleConfirm : undefined
42
77
  }));
43
78
  };
@@ -4,14 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildAreaColumns = void 0;
7
+ const compareCode = (a, b) => a < b ? -1 : a > b ? 1 : 0;
7
8
  const sortEntries = records => {
8
9
  if (!records) return [];
9
- return Object.entries(records).sort(([a], [b]) => a.localeCompare(b));
10
+ return Object.entries(records).sort(([a], [b]) => compareCode(a, b));
10
11
  };
11
12
  const getProvinceCode = code => code.slice(0, 2);
12
13
  const getCityCode = code => code.slice(0, 4);
13
14
  const buildAreaColumns = (areaList, columnsNum = 3) => {
14
15
  const provinces = sortEntries(areaList.province_list);
16
+ if (columnsNum === 1) {
17
+ return provinces.map(([code, name]) => ({
18
+ label: name,
19
+ value: code
20
+ }));
21
+ }
15
22
  const citiesByProvince = new Map();
16
23
  sortEntries(areaList.city_list).forEach(([code, name]) => {
17
24
  const provinceKey = getProvinceCode(code);
@@ -26,43 +33,40 @@ const buildAreaColumns = (areaList, columnsNum = 3) => {
26
33
  citiesByProvince.set(provinceKey, [option]);
27
34
  }
28
35
  });
29
- const countyByCity = new Map();
30
- sortEntries(areaList.county_list).forEach(([code, name]) => {
31
- const cityKey = getCityCode(code);
32
- const option = {
33
- label: name,
34
- value: code
35
- };
36
- const existing = countyByCity.get(cityKey);
37
- if (existing) {
38
- existing.push(option);
39
- } else {
40
- countyByCity.set(cityKey, [option]);
41
- }
42
- });
36
+ if (columnsNum === 3) {
37
+ const countiesByCity = new Map();
38
+ sortEntries(areaList.county_list).forEach(([code, name]) => {
39
+ const cityKey = getCityCode(code);
40
+ const option = {
41
+ label: name,
42
+ value: code
43
+ };
44
+ const existing = countiesByCity.get(cityKey);
45
+ if (existing) {
46
+ existing.push(option);
47
+ } else {
48
+ countiesByCity.set(cityKey, [option]);
49
+ }
50
+ });
51
+ citiesByProvince.forEach(cityOptions => {
52
+ cityOptions.forEach(cityOption => {
53
+ const cityKey = getCityCode(cityOption.value);
54
+ const counties = countiesByCity.get(cityKey);
55
+ if (counties && counties.length) {
56
+ cityOption.children = counties;
57
+ }
58
+ });
59
+ });
60
+ }
43
61
  return provinces.map(([code, name]) => {
44
62
  const provinceOption = {
45
63
  label: name,
46
64
  value: code
47
65
  };
48
- if (columnsNum > 1) {
49
- const provinceKey = getProvinceCode(code);
50
- const cityOptions = citiesByProvince.get(provinceKey)?.map(city => ({
51
- ...city
52
- })) ?? [];
53
- provinceOption.children = cityOptions;
54
- if (columnsNum > 2) {
55
- provinceOption.children = cityOptions.map(cityOption => {
56
- const cityKey = getCityCode(cityOption.value);
57
- const counties = countyByCity.get(cityKey)?.map(county => ({
58
- ...county
59
- })) ?? [];
60
- return counties.length ? {
61
- ...cityOption,
62
- children: counties
63
- } : cityOption;
64
- });
65
- }
66
+ const provinceKey = getProvinceCode(code);
67
+ const cities = citiesByProvince.get(provinceKey);
68
+ if (cities && cities.length) {
69
+ provinceOption.children = cities;
66
70
  }
67
71
  return provinceOption;
68
72
  });
@@ -19,7 +19,7 @@ function _reactNative() {
19
19
  return data;
20
20
  }
21
21
  var _image = _interopRequireDefault(require("../image"));
22
- var _validate = require("../../utils/validate");
22
+ var _utils = require("../../utils");
23
23
  var _tokens = require("./tokens");
24
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
25
  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); }
@@ -48,7 +48,7 @@ const Avatar = exports.Avatar = /*#__PURE__*/_react().default.forwardRef((props,
48
48
  const tokens = (0, _tokens.useAvatarTokens)(tokensOverride);
49
49
  const resolvedSize = size ?? tokens.defaults.size;
50
50
  const resolvedShape = shape ?? tokens.defaults.shape;
51
- const baseSize = (0, _validate.isNumber)(resolvedSize) ? resolvedSize : tokens.sizing.sizes[resolvedSize];
51
+ const baseSize = (0, _utils.isNumber)(resolvedSize) ? resolvedSize : tokens.sizing.sizes[resolvedSize];
52
52
  const avatarWidth = width ?? baseSize;
53
53
  const avatarHeight = height ?? baseSize;
54
54
  const borderRadius = resolvedShape === 'circle' ? Math.min(avatarWidth, avatarHeight) / 2 : Math.max(tokens.radii.squareMin, Math.min(avatarWidth, avatarHeight) / tokens.radii.squareDivisor);
@@ -58,14 +58,14 @@ const Avatar = exports.Avatar = /*#__PURE__*/_react().default.forwardRef((props,
58
58
  width: Math.min(avatarWidth, tokens.sizing.iconMaxSize),
59
59
  height: Math.min(avatarHeight, tokens.sizing.iconMaxSize)
60
60
  }, contentStyle]
61
- }, icon) : fallbackText ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
61
+ }, icon) : fallbackText && /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
62
62
  style: [tokens.layout.text, {
63
63
  color: color ?? tokens.colors.text,
64
64
  fontSize: Math.min(avatarWidth, avatarHeight) * tokens.typography.fallbackTextScale,
65
65
  fontWeight: tokens.typography.fontWeight
66
66
  }, textStyle],
67
67
  numberOfLines: 1
68
- }, fallbackText) : null;
68
+ }, fallbackText);
69
69
  const content = src || source ? /*#__PURE__*/_react().default.createElement(_image.default, {
70
70
  src: src,
71
71
  source: source,