react-native-system-ui 0.0.7 → 1.0.1

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 (411) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +128 -142
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +57 -70
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +38 -36
  7. package/dist/cjs/components/badge/Badge.js +68 -73
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +135 -176
  10. package/dist/cjs/components/button/ButtonGroup.js +11 -45
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +257 -267
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +94 -104
  18. package/dist/cjs/components/cell/CellGroup.js +37 -49
  19. package/dist/cjs/components/checkbox/Checkbox.js +140 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +21 -51
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +87 -74
  23. package/dist/cjs/components/collapse/Collapse.js +88 -104
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +17 -4
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +32 -27
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -104
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +159 -121
  34. package/dist/cjs/components/dialog/imperative.js +24 -43
  35. package/dist/cjs/components/dialog/tokens.js +1 -0
  36. package/dist/cjs/components/divider/Divider.js +57 -62
  37. package/dist/cjs/components/empty/Empty.js +53 -52
  38. package/dist/cjs/components/error-boundary/ErrorBoundary.js +74 -0
  39. package/dist/cjs/components/error-boundary/index.js +19 -0
  40. package/dist/cjs/components/field/Field.js +109 -106
  41. package/dist/cjs/components/flex/Flex.js +32 -32
  42. package/dist/cjs/components/flex/FlexItem.js +27 -27
  43. package/dist/cjs/components/form/Form.js +178 -196
  44. package/dist/cjs/components/form/FormItem.js +87 -109
  45. package/dist/cjs/components/form/FormList.js +57 -45
  46. package/dist/cjs/components/form/tokens.js +6 -3
  47. package/dist/cjs/components/form/utils.js +15 -34
  48. package/dist/cjs/components/grid/Grid.js +44 -43
  49. package/dist/cjs/components/grid/GridItem.js +92 -86
  50. package/dist/cjs/components/image/Image.js +76 -79
  51. package/dist/cjs/components/image/tokens.js +5 -3
  52. package/dist/cjs/components/image-preview/ImagePreview.js +125 -113
  53. package/dist/cjs/components/image-preview/imperative.js +4 -13
  54. package/dist/cjs/components/image-preview/tokens.js +3 -1
  55. package/dist/cjs/components/index.js +13 -0
  56. package/dist/cjs/components/input/Input.js +40 -35
  57. package/dist/cjs/components/loading/Loading.js +32 -33
  58. package/dist/cjs/components/nav-bar/NavBar.js +88 -100
  59. package/dist/cjs/components/nav-bar/tokens.js +4 -10
  60. package/dist/cjs/components/notice-bar/NoticeBar.js +81 -80
  61. package/dist/cjs/components/notice-bar/tokens.js +3 -1
  62. package/dist/cjs/components/notify/Notify.js +89 -84
  63. package/dist/cjs/components/notify/imperative.js +32 -55
  64. package/dist/cjs/components/notify/tokens.js +2 -11
  65. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +277 -283
  66. package/dist/cjs/components/number-keyboard/tokens.js +7 -1
  67. package/dist/cjs/components/overlay/Overlay.js +37 -52
  68. package/dist/cjs/components/overlay/tokens.js +5 -3
  69. package/dist/cjs/components/password-input/PasswordInput.js +114 -95
  70. package/dist/cjs/components/picker/Picker.js +465 -454
  71. package/dist/cjs/components/picker/tokens.js +1 -1
  72. package/dist/cjs/components/popup/Popup.js +269 -299
  73. package/dist/cjs/components/popup/tokens.js +1 -0
  74. package/dist/cjs/components/portal/Portal.js +12 -30
  75. package/dist/cjs/components/portal/PortalHost.js +151 -234
  76. package/dist/cjs/components/progress/Progress.js +103 -101
  77. package/dist/cjs/components/progress/tokens.js +1 -0
  78. package/dist/cjs/components/radio/Radio.js +98 -91
  79. package/dist/cjs/components/radio/RadioGroup.js +13 -45
  80. package/dist/cjs/components/radio/tokens.js +7 -10
  81. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  82. package/dist/cjs/components/search/Search.js +65 -57
  83. package/dist/cjs/components/selector/Selector.js +21 -27
  84. package/dist/cjs/components/share-sheet/ShareSheet.js +165 -161
  85. package/dist/cjs/components/share-sheet/tokens.js +3 -1
  86. package/dist/cjs/components/sidebar/Sidebar.js +51 -51
  87. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  88. package/dist/cjs/components/sidebar/SidebarItem.js +19 -21
  89. package/dist/cjs/components/sidebar/tokens.js +4 -4
  90. package/dist/cjs/components/skeleton/Skeleton.js +71 -77
  91. package/dist/cjs/components/skeleton/tokens.js +1 -2
  92. package/dist/cjs/components/slider/Slider.js +156 -135
  93. package/dist/cjs/components/space/Space.js +57 -76
  94. package/dist/cjs/components/space/tokens.js +7 -1
  95. package/dist/cjs/components/stepper/Stepper.js +182 -158
  96. package/dist/cjs/components/stepper/tokens.js +1 -0
  97. package/dist/cjs/components/swiper/Swiper.js +256 -255
  98. package/dist/cjs/components/swiper/SwiperPagIndicator.js +26 -27
  99. package/dist/cjs/components/swiper/tokens.js +10 -3
  100. package/dist/cjs/components/switch/Switch.js +23 -25
  101. package/dist/cjs/components/tabbar/Tabbar.js +48 -40
  102. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  103. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  104. package/dist/cjs/components/tabs/Tabs.js +402 -439
  105. package/dist/cjs/components/tabs/tokens.js +3 -1
  106. package/dist/cjs/components/tag/Tag.js +68 -59
  107. package/dist/cjs/components/toast/Toast.js +91 -90
  108. package/dist/cjs/components/toast/imperative.js +16 -41
  109. package/dist/cjs/components/toast/tokens.js +1 -0
  110. package/dist/cjs/components/typography/Typography.js +25 -25
  111. package/dist/cjs/components/water-mark/WaterMark.js +80 -78
  112. package/dist/cjs/design-system/Text.js +38 -0
  113. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  114. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  115. package/dist/cjs/design-system/index.js +7 -0
  116. package/dist/cjs/design-system/mergeTokensOverride.js +1 -4
  117. package/dist/cjs/design-system/presets.js +2 -3
  118. package/dist/cjs/design-system/tokens.js +2 -11
  119. package/dist/cjs/hooks/animation/index.js +25 -0
  120. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  121. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  122. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  123. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  124. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  125. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  126. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  127. package/dist/cjs/hooks/index.js +12 -0
  128. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  129. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  130. package/dist/cjs/hooks/useControllableValue.js +13 -24
  131. package/dist/cjs/hooks/useCountDown.js +30 -38
  132. package/dist/cjs/hooks/useHairline.js +17 -29
  133. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  134. package/dist/cjs/index.js +67 -1
  135. package/dist/cjs/platform/animation.js +10 -2
  136. package/dist/cjs/platform/measure.js +21 -37
  137. package/dist/cjs/utils/color.js +20 -39
  138. package/dist/cjs/utils/compare.js +7 -12
  139. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  140. package/dist/cjs/utils/date.js +20 -50
  141. package/dist/cjs/utils/deepMerge.js +16 -26
  142. package/dist/cjs/utils/hairline.js +75 -71
  143. package/dist/cjs/utils/index.js +22 -0
  144. package/dist/cjs/utils/number.js +21 -29
  145. package/dist/cjs/utils/render.js +21 -0
  146. package/dist/cjs/utils/rtl.js +25 -0
  147. package/dist/cjs/utils/string.js +8 -25
  148. package/dist/cjs/utils/validate.js +2 -4
  149. package/dist/es/components/action-sheet/ActionSheet.js +130 -144
  150. package/dist/es/components/action-sheet/tokens.js +16 -27
  151. package/dist/es/components/area/Area.js +58 -71
  152. package/dist/es/components/area/tokens.js +6 -3
  153. package/dist/es/components/avatar/Avatar.js +38 -36
  154. package/dist/es/components/avatar/index.js +1 -2
  155. package/dist/es/components/badge/Badge.js +70 -75
  156. package/dist/es/components/badge/tokens.js +6 -8
  157. package/dist/es/components/button/Button.js +136 -177
  158. package/dist/es/components/button/ButtonGroup.js +12 -46
  159. package/dist/es/components/button/tokens.js +2 -3
  160. package/dist/es/components/calendar/Calendar.js +214 -225
  161. package/dist/es/components/calendar/tokens.js +3 -3
  162. package/dist/es/components/cascader/Cascader.js +260 -270
  163. package/dist/es/components/cascader/tokens.js +2 -2
  164. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  165. package/dist/es/components/cell/Cell.js +95 -105
  166. package/dist/es/components/cell/CellGroup.js +37 -48
  167. package/dist/es/components/checkbox/Checkbox.js +141 -133
  168. package/dist/es/components/checkbox/CheckboxGroup.js +22 -52
  169. package/dist/es/components/checkbox/tokens.js +7 -10
  170. package/dist/es/components/circle/Circle.js +87 -73
  171. package/dist/es/components/collapse/Collapse.js +90 -105
  172. package/dist/es/components/config-provider/ConfigProvider.js +11 -4
  173. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  174. package/dist/es/components/config-provider/index.js +1 -0
  175. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  176. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  177. package/dist/es/components/config-provider/useDirection.js +3 -0
  178. package/dist/es/components/count-down/CountDown.js +35 -30
  179. package/dist/es/components/datetime-picker/DatetimePicker.js +80 -104
  180. package/dist/es/components/datetime-picker/tokens.js +14 -3
  181. package/dist/es/components/dialog/Dialog.js +160 -121
  182. package/dist/es/components/dialog/imperative.js +24 -43
  183. package/dist/es/components/dialog/tokens.js +1 -0
  184. package/dist/es/components/divider/Divider.js +59 -63
  185. package/dist/es/components/empty/Empty.js +54 -52
  186. package/dist/es/components/error-boundary/ErrorBoundary.js +62 -0
  187. package/dist/es/components/error-boundary/index.js +1 -0
  188. package/dist/es/components/field/Field.js +109 -106
  189. package/dist/es/components/flex/Flex.js +32 -31
  190. package/dist/es/components/flex/FlexItem.js +28 -27
  191. package/dist/es/components/form/Form.js +179 -197
  192. package/dist/es/components/form/FormItem.js +86 -107
  193. package/dist/es/components/form/FormList.js +57 -45
  194. package/dist/es/components/form/tokens.js +6 -3
  195. package/dist/es/components/form/utils.js +15 -34
  196. package/dist/es/components/grid/Grid.js +44 -42
  197. package/dist/es/components/grid/GridItem.js +94 -87
  198. package/dist/es/components/image/Image.js +79 -82
  199. package/dist/es/components/image/tokens.js +5 -3
  200. package/dist/es/components/image-preview/ImagePreview.js +125 -113
  201. package/dist/es/components/image-preview/imperative.js +4 -13
  202. package/dist/es/components/image-preview/tokens.js +3 -1
  203. package/dist/es/components/index.js +3 -1
  204. package/dist/es/components/input/Input.js +41 -36
  205. package/dist/es/components/loading/Loading.js +34 -34
  206. package/dist/es/components/nav-bar/NavBar.js +88 -100
  207. package/dist/es/components/nav-bar/tokens.js +4 -4
  208. package/dist/es/components/notice-bar/NoticeBar.js +81 -79
  209. package/dist/es/components/notice-bar/tokens.js +3 -1
  210. package/dist/es/components/notify/Notify.js +93 -87
  211. package/dist/es/components/notify/imperative.js +33 -56
  212. package/dist/es/components/notify/tokens.js +2 -5
  213. package/dist/es/components/number-keyboard/NumberKeyboard.js +277 -283
  214. package/dist/es/components/number-keyboard/tokens.js +7 -1
  215. package/dist/es/components/overlay/Overlay.js +36 -51
  216. package/dist/es/components/overlay/tokens.js +5 -3
  217. package/dist/es/components/password-input/PasswordInput.js +114 -95
  218. package/dist/es/components/picker/Picker.js +465 -454
  219. package/dist/es/components/picker/tokens.js +1 -1
  220. package/dist/es/components/popup/Popup.js +269 -298
  221. package/dist/es/components/popup/tokens.js +1 -0
  222. package/dist/es/components/portal/Portal.js +13 -30
  223. package/dist/es/components/portal/PortalHost.js +152 -234
  224. package/dist/es/components/progress/Progress.js +103 -101
  225. package/dist/es/components/progress/tokens.js +1 -0
  226. package/dist/es/components/radio/Radio.js +100 -93
  227. package/dist/es/components/radio/RadioGroup.js +15 -46
  228. package/dist/es/components/radio/tokens.js +7 -10
  229. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  230. package/dist/es/components/search/Search.js +66 -58
  231. package/dist/es/components/selector/Selector.js +21 -27
  232. package/dist/es/components/share-sheet/ShareSheet.js +167 -163
  233. package/dist/es/components/share-sheet/tokens.js +3 -1
  234. package/dist/es/components/sidebar/Sidebar.js +53 -53
  235. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  236. package/dist/es/components/sidebar/SidebarItem.js +19 -20
  237. package/dist/es/components/sidebar/tokens.js +4 -4
  238. package/dist/es/components/skeleton/Skeleton.js +71 -77
  239. package/dist/es/components/skeleton/tokens.js +1 -2
  240. package/dist/es/components/slider/Slider.js +156 -134
  241. package/dist/es/components/space/Space.js +59 -78
  242. package/dist/es/components/space/tokens.js +7 -1
  243. package/dist/es/components/stepper/Stepper.js +183 -159
  244. package/dist/es/components/stepper/tokens.js +1 -0
  245. package/dist/es/components/swiper/Swiper.js +258 -257
  246. package/dist/es/components/swiper/SwiperPagIndicator.js +26 -27
  247. package/dist/es/components/swiper/tokens.js +10 -3
  248. package/dist/es/components/switch/Switch.js +23 -25
  249. package/dist/es/components/tabbar/Tabbar.js +49 -41
  250. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  251. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  252. package/dist/es/components/tabs/Tabs.js +403 -440
  253. package/dist/es/components/tabs/tokens.js +3 -1
  254. package/dist/es/components/tag/Tag.js +71 -61
  255. package/dist/es/components/toast/Toast.js +94 -91
  256. package/dist/es/components/toast/imperative.js +16 -41
  257. package/dist/es/components/toast/tokens.js +1 -0
  258. package/dist/es/components/typography/Typography.js +25 -25
  259. package/dist/es/components/water-mark/WaterMark.js +81 -79
  260. package/dist/es/design-system/Text.js +19 -0
  261. package/dist/es/design-system/ThemeProvider.js +5 -11
  262. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  263. package/dist/es/design-system/index.js +1 -0
  264. package/dist/es/design-system/mergeTokensOverride.js +1 -4
  265. package/dist/es/design-system/presets.js +2 -3
  266. package/dist/es/design-system/tokens.js +1 -9
  267. package/dist/es/hooks/animation/index.js +2 -0
  268. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  269. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  270. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  271. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  272. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  273. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  274. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  275. package/dist/es/hooks/index.js +1 -0
  276. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  277. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  278. package/dist/es/hooks/useControllableValue.js +13 -24
  279. package/dist/es/hooks/useCountDown.js +30 -38
  280. package/dist/es/hooks/useHairline.js +16 -28
  281. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  282. package/dist/es/index.js +8 -1
  283. package/dist/es/platform/animation.js +9 -1
  284. package/dist/es/platform/measure.js +21 -37
  285. package/dist/es/utils/color.js +18 -35
  286. package/dist/es/utils/compare.js +7 -12
  287. package/dist/es/utils/createPlatformShadow.js +28 -39
  288. package/dist/es/utils/date.js +20 -50
  289. package/dist/es/utils/deepMerge.js +16 -26
  290. package/dist/es/utils/hairline.js +74 -65
  291. package/dist/es/utils/index.js +2 -0
  292. package/dist/es/utils/number.js +21 -29
  293. package/dist/es/utils/render.js +7 -0
  294. package/dist/es/utils/rtl.js +17 -0
  295. package/dist/es/utils/string.js +8 -25
  296. package/dist/es/utils/validate.js +1 -2
  297. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  298. package/dist/types/components/area/Area.d.ts +1 -1
  299. package/dist/types/components/area/tokens.d.ts +4 -0
  300. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  301. package/dist/types/components/avatar/index.d.ts +1 -2
  302. package/dist/types/components/badge/Badge.d.ts +1 -1
  303. package/dist/types/components/button/Button.d.ts +1 -1
  304. package/dist/types/components/button/index.d.ts +1 -1
  305. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  306. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  307. package/dist/types/components/cell/Cell.d.ts +1 -1
  308. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  309. package/dist/types/components/cell/index.d.ts +2 -2
  310. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  311. package/dist/types/components/circle/Circle.d.ts +1 -1
  312. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  313. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  314. package/dist/types/components/config-provider/index.d.ts +2 -1
  315. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  316. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  317. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  318. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  319. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  320. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  321. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  322. package/dist/types/components/dialog/tokens.d.ts +1 -0
  323. package/dist/types/components/divider/Divider.d.ts +1 -1
  324. package/dist/types/components/empty/Empty.d.ts +1 -1
  325. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  326. package/dist/types/components/error-boundary/index.d.ts +2 -0
  327. package/dist/types/components/field/Field.d.ts +1 -1
  328. package/dist/types/components/flex/Flex.d.ts +1 -1
  329. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  330. package/dist/types/components/flex/index.d.ts +2 -2
  331. package/dist/types/components/form/Form.d.ts +1 -1
  332. package/dist/types/components/form/FormItem.d.ts +2 -1
  333. package/dist/types/components/form/index.d.ts +2 -2
  334. package/dist/types/components/form/tokens.d.ts +4 -0
  335. package/dist/types/components/grid/Grid.d.ts +1 -1
  336. package/dist/types/components/grid/GridItem.d.ts +1 -1
  337. package/dist/types/components/grid/index.d.ts +2 -2
  338. package/dist/types/components/image/Image.d.ts +1 -1
  339. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  340. package/dist/types/components/image-preview/tokens.d.ts +1 -0
  341. package/dist/types/components/index.d.ts +4 -1
  342. package/dist/types/components/input/Input.d.ts +3 -3
  343. package/dist/types/components/loading/Loading.d.ts +1 -1
  344. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  345. package/dist/types/components/nav-bar/tokens.d.ts +1 -1
  346. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  347. package/dist/types/components/notice-bar/tokens.d.ts +1 -0
  348. package/dist/types/components/notify/Notify.d.ts +2 -2
  349. package/dist/types/components/notify/index.d.ts +1 -1
  350. package/dist/types/components/number-keyboard/tokens.d.ts +5 -0
  351. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  352. package/dist/types/components/overlay/tokens.d.ts +3 -0
  353. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  354. package/dist/types/components/picker/Picker.d.ts +6 -6
  355. package/dist/types/components/popup/Popup.d.ts +3 -42
  356. package/dist/types/components/popup/tokens.d.ts +1 -0
  357. package/dist/types/components/portal/Portal.d.ts +9 -6
  358. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  359. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  360. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  361. package/dist/types/components/search/Search.d.ts +1 -1
  362. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  363. package/dist/types/components/share-sheet/tokens.d.ts +1 -0
  364. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  365. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  366. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  367. package/dist/types/components/sidebar/index.d.ts +2 -2
  368. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  369. package/dist/types/components/slider/Slider.d.ts +1 -1
  370. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  371. package/dist/types/components/stepper/tokens.d.ts +1 -0
  372. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  373. package/dist/types/components/swiper/index.d.ts +1 -1
  374. package/dist/types/components/swiper/tokens.d.ts +8 -0
  375. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  376. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  377. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  378. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  379. package/dist/types/components/tabs/index.d.ts +1 -1
  380. package/dist/types/components/tabs/tokens.d.ts +1 -0
  381. package/dist/types/components/tag/Tag.d.ts +1 -1
  382. package/dist/types/components/toast/Toast.d.ts +2 -2
  383. package/dist/types/components/toast/index.d.ts +1 -1
  384. package/dist/types/components/toast/tokens.d.ts +1 -0
  385. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  386. package/dist/types/design-system/Text.d.ts +3 -0
  387. package/dist/types/design-system/index.d.ts +1 -0
  388. package/dist/types/design-system/tokens.d.ts +0 -1
  389. package/dist/types/hooks/animation/index.d.ts +3 -0
  390. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  391. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  392. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  393. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  394. package/dist/types/hooks/index.d.ts +1 -0
  395. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  396. package/dist/types/hooks/useCountDown.d.ts +1 -1
  397. package/dist/types/hooks/useHairline.d.ts +1 -1
  398. package/dist/types/index.d.ts +5 -0
  399. package/dist/types/platform/animation.d.ts +8 -0
  400. package/dist/types/platform/measure.d.ts +1 -1
  401. package/dist/types/utils/color.d.ts +0 -2
  402. package/dist/types/utils/compare.d.ts +1 -1
  403. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  404. package/dist/types/utils/date.d.ts +2 -2
  405. package/dist/types/utils/hairline.d.ts +5 -10
  406. package/dist/types/utils/index.d.ts +2 -0
  407. package/dist/types/utils/number.d.ts +2 -2
  408. package/dist/types/utils/render.d.ts +5 -0
  409. package/dist/types/utils/rtl.d.ts +5 -0
  410. package/dist/types/utils/validate.d.ts +0 -1
  411. package/package.json +25 -4
@@ -6,7 +6,7 @@ export const createCascaderTokens = foundations => {
6
6
  radii
7
7
  } = foundations;
8
8
  const surfaceMuted = palette.default[100];
9
- const placeholderText = "请选择";
9
+ const placeholderText = "Select";
10
10
  return {
11
11
  defaults: {
12
12
  placeholder: placeholderText,
@@ -19,7 +19,7 @@ export const createCascaderTokens = foundations => {
19
19
  closeOnFinish: true,
20
20
  popupPlacement: "bottom",
21
21
  popupRound: true,
22
- loadingText: "加载中..."
22
+ loadingText: "Loading..."
23
23
  },
24
24
  layout: {
25
25
  container: {
@@ -1,33 +1,29 @@
1
+ const getDepth = (options, childrenKey) => {
2
+ let max = 1;
3
+ const traverse = (opts, level) => {
4
+ if (!opts?.length) return;
5
+ if (level > max) max = level;
6
+ opts.forEach(o => {
7
+ const has = Object.prototype.hasOwnProperty.call(o, childrenKey);
8
+ if (has && level + 1 > max) max = level + 1;
9
+ const ch = o[childrenKey];
10
+ if (ch?.length) traverse(ch, level + 1);
11
+ });
12
+ };
13
+ traverse(options, 1);
14
+ return max;
15
+ };
1
16
  export const useCascaderExtend = (options = [], keys, value) => {
2
- const depth = (() => {
3
- let maxDepth = 1;
4
- const traverse = (opts, level) => {
5
- if (!opts || !opts.length) return;
6
- if (level > maxDepth) maxDepth = level;
7
- const next = level + 1;
8
- opts.forEach(option => {
9
- const hasChildrenProp = Object.prototype.hasOwnProperty.call(option, keys.childrenKey);
10
- if (hasChildrenProp && next > maxDepth) maxDepth = next;
11
- const children = option[keys.childrenKey];
12
- if (children && children.length) traverse(children, next);
13
- });
14
- };
15
- traverse(options, 1);
16
- return maxDepth;
17
- })();
18
- const tabs = (() => {
19
- if (!value || !value.length) return [options];
20
- return value.reduce((acc, val, index) => {
21
- if (val == null) return acc;
22
- const current = acc[index];
23
- if (!current) return acc;
24
- const next = current.find(option => option[keys.valueKey] === value[index]);
25
- const children = next?.[keys.childrenKey];
26
- if (children) acc.push(children);
27
- return acc;
28
- }, [options]);
29
- })();
30
- const items = !value || !value.length ? [] : value.map((val, index) => tabs[index]?.find(option => option[keys.valueKey] === val));
17
+ const depth = getDepth(options, keys.childrenKey);
18
+ const tabs = !value?.length ? [options] : value.reduce((acc, val, i) => {
19
+ if (val == null) return acc;
20
+ const cur = acc[i];
21
+ if (!cur) return acc;
22
+ const ch = cur.find(o => o[keys.valueKey] === value[i])?.[keys.childrenKey];
23
+ if (ch) acc.push(ch);
24
+ return acc;
25
+ }, [options]);
26
+ const items = !value?.length ? [] : value.map((val, i) => tabs[i]?.find(o => o[keys.valueKey] === val));
31
27
  return {
32
28
  tabs,
33
29
  items,
@@ -3,26 +3,11 @@ import React, { useContext, useMemo } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { Arrow } from 'react-native-system-icon';
5
5
  import { useAriaPress, useHairline } from '../../hooks';
6
- import { isRenderable, isText } from '../../utils';
6
+ import { isRenderable, isText, renderTextOrNode } from '../../utils';
7
+ import { useDirection } from '../config-provider/useDirection';
7
8
  import { CellGroupContext } from './CellContext';
8
9
  import { useCellTokens } from './tokens';
9
- const TextOrView = ({
10
- children,
11
- textStyle,
12
- viewStyle,
13
- numberOfLines
14
- }) => {
15
- if (isText(children)) {
16
- return /*#__PURE__*/React.createElement(Text, {
17
- style: textStyle,
18
- numberOfLines: numberOfLines
19
- }, children);
20
- }
21
- return /*#__PURE__*/React.createElement(View, {
22
- style: viewStyle
23
- }, children);
24
- };
25
- export const Cell = /*#__PURE__*/React.forwardRef((props, ref) => {
10
+ const CellImpl = (props, ref) => {
26
11
  const {
27
12
  title,
28
13
  value,
@@ -30,13 +15,13 @@ export const Cell = /*#__PURE__*/React.forwardRef((props, ref) => {
30
15
  extra,
31
16
  icon,
32
17
  rightIcon,
33
- border: borderProp,
18
+ border: borderP,
34
19
  clickable,
35
20
  isLink,
36
21
  required,
37
22
  center,
38
- size: sizeProp,
39
- arrowDirection: arrowDirectionProp,
23
+ size: sizeP,
24
+ arrowDirection: arrP,
40
25
  tokensOverride,
41
26
  children,
42
27
  style,
@@ -50,34 +35,57 @@ export const Cell = /*#__PURE__*/React.forwardRef((props, ref) => {
50
35
  ...rest
51
36
  } = props;
52
37
  const tokens = useCellTokens(tokensOverride);
53
- const group = useContext(CellGroupContext);
54
- const border = borderProp ?? tokens.defaults.border;
55
- const size = sizeProp ?? tokens.defaults.size;
56
- const arrowDirection = arrowDirectionProp ?? tokens.defaults.arrowDirection;
57
- const lineHeight = tokens.typography.lineHeight;
58
- const hasTitle = isRenderable(title);
59
- const hasValue = isRenderable(value);
60
- const hasLabel = isRenderable(label);
61
- const hasExtra = isRenderable(extra);
62
- const hasChildren = isRenderable(children);
63
- const hasIcon = isRenderable(icon);
64
- const hasRightIcon = isRenderable(rightIcon);
65
- const onlyValue = !hasTitle && !hasChildren;
66
- const showBorder = border && group.border && !group.isLast;
67
- const showArrow = !!isLink || !!clickable;
68
- const isInteractive = !disabled && (clickable || !!onPress || !!rest.onLongPress || !!rest.onPressIn || !!rest.onPressOut);
69
- const containerStyles = useMemo(() => [size === 'large' ? tokens.layout.containerLarge : tokens.layout.container, center && tokens.layout.center, style], [center, size, style, tokens.layout.center, tokens.layout.container, tokens.layout.containerLarge]);
70
- const hairline = useHairline({
71
- show: showBorder,
72
- containerStyle: containerStyles,
38
+ const dir = useDirection();
39
+ const grp = useContext(CellGroupContext);
40
+ const border = borderP ?? tokens.defaults.border;
41
+ const size = sizeP ?? tokens.defaults.size;
42
+ const arrRaw = arrP ?? tokens.defaults.arrowDirection;
43
+ const arr = dir === 'rtl' ? arrRaw === 'left' ? 'right' : arrRaw === 'right' ? 'left' : arrRaw : arrRaw;
44
+ const lh = tokens.typography.lineHeight;
45
+ const hasT = isRenderable(title);
46
+ const hasV = isRenderable(value);
47
+ const hasL = isRenderable(label);
48
+ const hasE = isRenderable(extra);
49
+ const hasCh = isRenderable(children);
50
+ const hasI = isRenderable(icon);
51
+ const hasRI = isRenderable(rightIcon);
52
+ const onlyV = !hasT && !hasCh;
53
+ const showB = border && grp.border && !grp.isLast;
54
+ const showArr = !!isLink || !!clickable;
55
+ const inter = !disabled && (clickable || !!onPress || !!rest.onLongPress || !!rest.onPressIn || !!rest.onPressOut);
56
+ const large = size === 'large';
57
+ const ctrStyle = useMemo(() => [large ? tokens.layout.containerLarge : tokens.layout.container, center && tokens.layout.center, style], [size, center, tokens.layout, style]);
58
+ const hair = useHairline({
59
+ show: showB,
60
+ containerStyle: ctrStyle,
73
61
  color: tokens.colors.border,
74
62
  width: tokens.borders.width,
75
63
  defaultPaddingHorizontal: tokens.sizing.paddingHorizontal
76
64
  });
77
- const customContentStyle = useMemo(() => [tokens.layout.customContent, {
65
+ const cntStyle = useMemo(() => [tokens.layout.customContent, {
78
66
  justifyContent: center ? 'center' : 'flex-start'
79
- }, contentStyle], [center, contentStyle, tokens.layout.customContent]);
80
- const bodyContent = /*#__PURE__*/React.createElement(React.Fragment, null, hasIcon && /*#__PURE__*/React.createElement(View, {
67
+ }, contentStyle], [center, tokens.layout.customContent, contentStyle]);
68
+ const {
69
+ interactionProps,
70
+ states
71
+ } = useAriaPress({
72
+ disabled: !inter,
73
+ onPress: onPress ?? undefined
74
+ });
75
+ const Comp = inter ? Pressable : View;
76
+ const compProps = inter ? {
77
+ android_ripple: android_ripple ?? {
78
+ color: tokens.colors.ripple
79
+ },
80
+ accessibilityRole: 'button',
81
+ ...interactionProps
82
+ } : {};
83
+ return /*#__PURE__*/React.createElement(Comp, _extends({
84
+ ref: ref,
85
+ style: [ctrStyle, inter && states.pressed && {
86
+ opacity: tokens.defaults.activeOpacity
87
+ }]
88
+ }, compProps, rest), hasI && /*#__PURE__*/React.createElement(View, {
81
89
  style: [tokens.layout.iconWrapper, {
82
90
  marginRight: tokens.spacing.iconGap,
83
91
  minHeight: tokens.sizing.iconSize,
@@ -85,82 +93,64 @@ export const Cell = /*#__PURE__*/React.forwardRef((props, ref) => {
85
93
  }]
86
94
  }, icon), /*#__PURE__*/React.createElement(View, {
87
95
  style: tokens.layout.body
88
- }, (hasTitle || required) && /*#__PURE__*/React.createElement(View, {
96
+ }, (hasT || required) && /*#__PURE__*/React.createElement(View, {
89
97
  style: [tokens.layout.titleRow, {
90
- minHeight: lineHeight
98
+ minHeight: lh
91
99
  }]
92
100
  }, required && /*#__PURE__*/React.createElement(Text, {
93
101
  style: {
94
102
  color: tokens.colors.required,
95
103
  marginRight: tokens.spacing.iconGap / 2
96
104
  }
97
- }, "*"), hasTitle && /*#__PURE__*/React.createElement(TextOrView, {
98
- textStyle: [{
99
- color: tokens.colors.title,
100
- fontSize: size === 'large' ? tokens.typography.largeTitleSize : tokens.typography.titleSize,
101
- fontWeight: tokens.typography.titleWeight
102
- }, titleStyle],
103
- viewStyle: titleStyle,
105
+ }, "*"), hasT && /*#__PURE__*/React.createElement(View, {
106
+ style: titleStyle
107
+ }, renderTextOrNode(title, [{
108
+ color: tokens.colors.title,
109
+ fontSize: large ? tokens.typography.largeTitleSize : tokens.typography.titleSize,
110
+ fontWeight: tokens.typography.titleWeight
111
+ }, titleStyle], {
104
112
  numberOfLines: 1
105
- }, title)), hasLabel && /*#__PURE__*/React.createElement(TextOrView, {
106
- textStyle: [{
107
- marginTop: tokens.spacing.labelMarginTop,
108
- color: tokens.colors.label,
109
- fontSize: size === 'large' ? tokens.typography.largeLabelSize : tokens.typography.labelSize
110
- }, labelStyle],
111
- viewStyle: [{
113
+ }))), hasL && /*#__PURE__*/React.createElement(View, {
114
+ style: [{
112
115
  marginTop: tokens.spacing.labelMarginTop
113
- }, labelStyle],
116
+ }, labelStyle]
117
+ }, renderTextOrNode(label, [{
118
+ color: tokens.colors.label,
119
+ fontSize: large ? tokens.typography.largeLabelSize : tokens.typography.labelSize
120
+ }, labelStyle], {
114
121
  numberOfLines: 2
115
- }, label)), /*#__PURE__*/React.createElement(View, {
122
+ }))), /*#__PURE__*/React.createElement(View, {
116
123
  style: [tokens.layout.valueContainer, {
117
- minHeight: lineHeight,
124
+ minHeight: lh,
118
125
  marginLeft: tokens.spacing.valueGap
119
- }, !center && onlyValue && tokens.layout.valueOnlyContainer, center && tokens.layout.valueCenter]
120
- }, hasValue ? /*#__PURE__*/React.createElement(TextOrView, {
121
- textStyle: [tokens.layout.value, onlyValue && tokens.layout.valueOnly, {
122
- color: tokens.colors.value,
123
- fontSize: size === 'large' ? tokens.typography.largeValueSize : tokens.typography.valueSize
124
- }, valueStyle],
125
- viewStyle: customContentStyle,
126
+ }, !center && onlyV && tokens.layout.valueOnlyContainer, center && tokens.layout.valueCenter]
127
+ }, hasV ? /*#__PURE__*/React.createElement(View, {
128
+ style: cntStyle
129
+ }, renderTextOrNode(value, [tokens.layout.value, onlyV && tokens.layout.valueOnly, {
130
+ color: tokens.colors.value,
131
+ fontSize: large ? tokens.typography.largeValueSize : tokens.typography.valueSize
132
+ }, valueStyle], {
126
133
  numberOfLines: 1
127
- }, value) : hasChildren ? /*#__PURE__*/React.createElement(View, {
128
- style: customContentStyle
129
- }, children) : null), hasExtra && /*#__PURE__*/React.createElement(TextOrView, {
130
- textStyle: {
131
- marginLeft: tokens.spacing.extraGap,
132
- color: tokens.colors.value,
133
- fontSize: size === 'large' ? tokens.typography.largeValueSize : tokens.typography.valueSize
134
- },
135
- viewStyle: {
134
+ })) : hasCh && /*#__PURE__*/React.createElement(View, {
135
+ style: cntStyle
136
+ }, isText(children) ? renderTextOrNode(children, [tokens.layout.value, {
137
+ color: tokens.colors.value,
138
+ fontSize: large ? tokens.typography.largeValueSize : tokens.typography.valueSize
139
+ }, valueStyle]) : children)), hasE && /*#__PURE__*/React.createElement(View, {
140
+ style: {
136
141
  marginLeft: tokens.spacing.extraGap
137
142
  }
138
- }, extra), hasRightIcon ? rightIcon : showArrow ? /*#__PURE__*/React.createElement(View, {
139
- style: [tokens.layout.rightIconWrapper, tokens.layout.arrowTransforms[arrowDirection]]
143
+ }, renderTextOrNode(extra, {
144
+ marginLeft: tokens.spacing.extraGap,
145
+ color: tokens.colors.value,
146
+ fontSize: large ? tokens.typography.largeValueSize : tokens.typography.valueSize
147
+ })), hasRI ? rightIcon : showArr && /*#__PURE__*/React.createElement(View, {
148
+ style: [tokens.layout.rightIconWrapper, tokens.layout.arrowTransforms[arr]]
140
149
  }, /*#__PURE__*/React.createElement(Arrow, {
141
150
  size: tokens.sizing.arrowSize,
142
151
  fill: tokens.colors.arrow
143
- })) : null);
144
- const {
145
- interactionProps,
146
- states
147
- } = useAriaPress({
148
- disabled: !isInteractive,
149
- onPress: onPress ?? undefined
150
- });
151
- const Component = isInteractive ? Pressable : View;
152
- const componentProps = isInteractive ? {
153
- android_ripple: android_ripple ?? {
154
- color: tokens.colors.ripple
155
- },
156
- accessibilityRole: 'button',
157
- ...interactionProps
158
- } : {};
159
- return /*#__PURE__*/React.createElement(Component, _extends({
160
- ref: ref,
161
- style: [containerStyles, isInteractive && states.pressed && {
162
- opacity: tokens.defaults.activeOpacity
163
- }]
164
- }, componentProps, rest), bodyContent, hairline);
165
- });
166
- Cell.displayName = 'Cell';
152
+ })), hair);
153
+ };
154
+ const CellForwardRef = /*#__PURE__*/React.forwardRef(CellImpl);
155
+ CellForwardRef.displayName = 'Cell';
156
+ export const Cell = /*#__PURE__*/React.memo(CellForwardRef);
@@ -4,7 +4,12 @@ import { createHairlineView } from '../../utils';
4
4
  import { Cell as CellBase } from './Cell';
5
5
  import { CellGroupContext } from './CellContext';
6
6
  import { useCellTokens } from './tokens';
7
- export const CellGroup = ({
7
+ const isCellElement = child => {
8
+ if (! /*#__PURE__*/React.isValidElement(child)) return false;
9
+ if (child.type === CellBase) return true;
10
+ return child.type.displayName === 'Cell';
11
+ };
12
+ export const CellGroup = /*#__PURE__*/React.memo(({
8
13
  children,
9
14
  title,
10
15
  border,
@@ -15,38 +20,31 @@ export const CellGroup = ({
15
20
  tokensOverride
16
21
  }) => {
17
22
  const tokens = useCellTokens(tokensOverride);
18
- const resolvedBorder = border ?? tokens.defaults.groupBorder;
19
- const resolvedInset = inset ?? tokens.defaults.groupInset;
20
- const resolvedCard = card ?? tokens.defaults.groupCard;
21
- const showInset = resolvedInset || resolvedCard;
22
- const showOuterBorder = resolvedBorder && !showInset;
23
- const childArray = useMemo(() => React.Children.toArray(children), [children]);
24
- const isCellElement = child => {
25
- if (! /*#__PURE__*/React.isValidElement(child)) return false;
26
- if (child.type === CellBase) return true;
27
- const type = child.type;
28
- return type.displayName === 'Cell';
29
- };
30
- const lastCellIndex = useMemo(() => {
31
- for (let i = childArray.length - 1; i >= 0; i--) {
32
- const child = childArray[i];
33
- if (isCellElement(child)) return i;
23
+ const rBorder = border ?? tokens.defaults.groupBorder;
24
+ const showInset = (inset ?? tokens.defaults.groupInset) || (card ?? tokens.defaults.groupCard);
25
+ const rCard = card ?? tokens.defaults.groupCard;
26
+ const showOuter = rBorder && !showInset;
27
+ const chArr = useMemo(() => React.Children.toArray(children), [children]);
28
+ const lastIdx = useMemo(() => {
29
+ for (let i = chArr.length - 1; i >= 0; i--) {
30
+ if (isCellElement(chArr[i])) return i;
34
31
  }
32
+ ;
35
33
  return -1;
36
- }, [childArray]);
37
- const containerStyle = useMemo(() => [{
38
- marginBottom: resolvedCard ? 0 : tokens.sizing.groupMarginBottom
39
- }, style], [resolvedCard, style, tokens.sizing.groupMarginBottom]);
40
- const insetStyle = useMemo(() => ({
34
+ }, [chArr]);
35
+ const ctrStyle = useMemo(() => [{
36
+ marginBottom: rCard ? 0 : tokens.sizing.groupMarginBottom
37
+ }, style], [rCard, style, tokens.sizing.groupMarginBottom]);
38
+ const insStyle = useMemo(() => ({
41
39
  overflow: 'hidden',
42
40
  borderRadius: tokens.radii.groupInset,
43
41
  marginHorizontal: tokens.sizing.groupInsetMarginHorizontal,
44
42
  backgroundColor: tokens.colors.background
45
43
  }), [tokens.colors.background, tokens.radii.groupInset, tokens.sizing.groupInsetMarginHorizontal]);
46
- const bodyContainerStyle = useMemo(() => [{
44
+ const bodyStyleArr = [{
47
45
  backgroundColor: tokens.colors.groupBodyBackground
48
- }, showInset ? insetStyle : null, resolvedCard ? tokens.layout.groupCardShadow : null, bodyStyle], [bodyStyle, resolvedCard, showInset, tokens.colors.background, tokens.colors.groupBodyBackground, tokens.layout.groupCardShadow, tokens.radii.groupInset, tokens.sizing.groupInsetMarginHorizontal, insetStyle]);
49
- const renderedTitle = useMemo(() => title ? /*#__PURE__*/React.createElement(Text, {
46
+ }, showInset ? insStyle : null, rCard ? tokens.layout.groupCardShadow : null, bodyStyle];
47
+ const rTitle = useMemo(() => title ? /*#__PURE__*/React.createElement(Text, {
50
48
  style: {
51
49
  color: tokens.colors.groupTitle,
52
50
  fontSize: tokens.typography.groupTitleSize,
@@ -54,39 +52,30 @@ export const CellGroup = ({
54
52
  paddingVertical: tokens.sizing.groupTitlePaddingVertical
55
53
  }
56
54
  }, title) : null, [title, tokens.colors.groupTitle, tokens.sizing.groupTitlePaddingHorizontal, tokens.sizing.groupTitlePaddingVertical, tokens.typography.groupTitleSize]);
57
- const renderedChildren = useMemo(() => childArray.map((child, index) => {
58
- const key = /*#__PURE__*/React.isValidElement(child) && child.key != null ? child.key : index;
59
- const isCell = isCellElement(child);
55
+ const rCh = useMemo(() => chArr.map((ch, i) => {
56
+ const key = /*#__PURE__*/React.isValidElement(ch) && ch.key != null ? ch.key : i;
60
57
  return /*#__PURE__*/React.createElement(CellGroupContext.Provider, {
61
58
  key: key,
62
59
  value: {
63
- border: resolvedBorder,
60
+ border: rBorder,
64
61
  inset: showInset,
65
- isLast: isCell ? index === lastCellIndex : false
62
+ isLast: isCellElement(ch) ? i === lastIdx : false
66
63
  }
67
- }, child);
68
- }), [childArray, lastCellIndex, resolvedBorder, showInset]);
64
+ }, ch);
65
+ }), [chArr, lastIdx, rBorder, showInset]);
69
66
  return /*#__PURE__*/React.createElement(View, {
70
- style: containerStyle
71
- }, renderedTitle, /*#__PURE__*/React.createElement(View, {
72
- style: bodyContainerStyle
73
- }, renderedChildren, showOuterBorder ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
67
+ style: ctrStyle
68
+ }, rTitle, /*#__PURE__*/React.createElement(View, {
69
+ style: bodyStyleArr
70
+ }, rCh, showOuter ? /*#__PURE__*/React.createElement(React.Fragment, null, ['top', 'bottom'].map(pos => /*#__PURE__*/React.createElement(View, {
71
+ key: pos,
74
72
  style: createHairlineView({
75
- position: 'top',
73
+ position: pos,
76
74
  color: tokens.colors.border,
77
75
  left: 0,
78
76
  right: 0,
79
77
  enabled: tokens.borders.width > 0,
80
78
  width: tokens.borders.width
81
79
  })
82
- }), /*#__PURE__*/React.createElement(View, {
83
- style: createHairlineView({
84
- position: 'bottom',
85
- color: tokens.colors.border,
86
- left: 0,
87
- right: 0,
88
- enabled: tokens.borders.width > 0,
89
- width: tokens.borders.width
90
- })
91
- })) : null));
92
- };
80
+ }))) : null));
81
+ });