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
@@ -2,6 +2,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
2
2
  import React, { memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { Animated, Platform, Text, View } from 'react-native';
4
4
  import { clamp, parseNumberLike, parsePercentage, isString, isText } from '../../utils';
5
+ import { useReducedMotion } from '../../hooks/animation';
5
6
  import { useProgressTokens } from './tokens';
6
7
  const GRADIENT_REGEX = /linear-gradient|radial-gradient|conic-gradient/i;
7
8
  const ProgressContext = /*#__PURE__*/React.createContext(null);
@@ -10,20 +11,20 @@ export const ProgressFilledTrack = ({
10
11
  }) => {
11
12
  const context = useContext(ProgressContext);
12
13
  if (!context) return null;
13
- const indicatorSize = useMemo(() => context.animatedValue.interpolate({
14
+ const size = useMemo(() => context.animatedValue.interpolate({
14
15
  inputRange: [0, 100],
15
16
  outputRange: ['0%', '100%']
16
17
  }), [context.animatedValue]);
17
18
  const sizeStyle = useMemo(() => context.orientation === 'vertical' ? {
18
19
  width: context.height,
19
- height: indicatorSize,
20
+ height: size,
20
21
  bottom: 0,
21
22
  left: 0,
22
23
  position: 'absolute'
23
24
  } : {
24
25
  height: context.height,
25
- width: indicatorSize
26
- }, [context.height, context.orientation, indicatorSize]);
26
+ width: size
27
+ }, [context.height, context.orientation, size]);
27
28
  const baseStyle = [context.orientation === 'vertical' ? {
28
29
  position: 'absolute',
29
30
  left: 0,
@@ -42,152 +43,153 @@ export const ProgressFilledTrack = ({
42
43
  export const Progress = /*#__PURE__*/memo(props => {
43
44
  const {
44
45
  tokensOverride,
45
- percentage: percentageProp,
46
+ percentage: pctP,
46
47
  strokeWidth,
47
48
  color,
48
49
  trackColor,
49
50
  pivotText,
50
51
  pivotColor,
51
52
  textColor,
52
- inactive: inactiveProp,
53
- showPivot: showPivotProp,
53
+ inactive: inactP,
54
+ showPivot: showPivotP,
54
55
  animated,
55
- transition: transitionProp,
56
- animationDuration: animationDurationProp,
56
+ transition: transP,
57
+ animationDuration: durP,
57
58
  style,
58
59
  pivotStyle,
59
60
  indicatorStyle,
60
- orientation: orientationProp,
61
+ orientation: oriP,
61
62
  children,
62
63
  ...rest
63
64
  } = props;
64
65
  const tokens = useProgressTokens(tokensOverride);
65
- const percentage = useMemo(() => clamp(parsePercentage(percentageProp ?? tokens.defaults.percentage), 0, 100), [percentageProp, tokens.defaults.percentage]);
66
- const height = useMemo(() => parseNumberLike(strokeWidth, tokens.sizing.height) ?? tokens.sizing.height, [strokeWidth, tokens.sizing.height]);
67
- const inactive = useMemo(() => inactiveProp ?? tokens.defaults.inactive, [inactiveProp, tokens.defaults.inactive]);
68
- const orientation = orientationProp ?? 'horizontal';
69
- const showPivot = useMemo(() => orientation === 'vertical' ? false : showPivotProp ?? tokens.defaults.showPivot, [orientation, showPivotProp, tokens.defaults.showPivot]);
70
- const shouldAnimate = useMemo(() => (animated ?? transitionProp ?? tokens.defaults.transition) && !inactive, [animated, inactive, tokens.defaults.transition, transitionProp]);
71
- const duration = useMemo(() => Math.max(0, animationDurationProp ?? tokens.defaults.animationDuration), [animationDurationProp, tokens.defaults.animationDuration]);
72
- const isGradient = Platform.OS === 'web' && isString(color) && GRADIENT_REGEX.test(color);
73
- const resolvedTrackColor = useMemo(() => trackColor ?? tokens.colors.track, [tokens.colors.track, trackColor]);
74
- const resolvedIndicatorColor = useMemo(() => inactive ? tokens.colors.track : !isGradient ? color ?? tokens.colors.indicator : undefined, [color, inactive, isGradient, tokens.colors.indicator, tokens.colors.track]);
75
- const resolvedPivotBg = useMemo(() => pivotColor ?? (isGradient ? inactive ? tokens.colors.track : tokens.colors.indicator : resolvedIndicatorColor), [inactive, isGradient, pivotColor, resolvedIndicatorColor, tokens.colors.indicator, tokens.colors.track]);
76
- const resolvedPivotTextColor = useMemo(() => textColor ?? tokens.colors.pivotText, [textColor, tokens.colors.pivotText]);
77
- const pivotContent = useMemo(() => pivotText ?? `${percentage}%`, [percentage, pivotText]);
78
- const hasPivot = useMemo(() => showPivot && pivotContent !== null && pivotContent !== false, [pivotContent, showPivot]);
79
- const animatedValue = useRef(new Animated.Value(percentage)).current;
66
+ const reducedMotion = useReducedMotion();
67
+ const pct = clamp(parsePercentage(pctP ?? tokens.defaults.percentage), 0, 100);
68
+ const h = parseNumberLike(strokeWidth, tokens.sizing.height) ?? tokens.sizing.height;
69
+ const inact = inactP ?? tokens.defaults.inactive;
70
+ const ori = oriP ?? 'horizontal';
71
+ const showPivot = ori === 'vertical' ? false : showPivotP ?? tokens.defaults.showPivot;
72
+ const doAnim = (animated ?? transP ?? tokens.defaults.transition) && !inact;
73
+ const dur = Math.max(0, durP ?? tokens.defaults.animationDuration);
74
+ const isGrad = Platform.OS === 'web' && isString(color) && GRADIENT_REGEX.test(color);
75
+ const trackClr = trackColor ?? tokens.colors.track;
76
+ const indClr = inact ? tokens.colors.track : !isGrad ? color ?? tokens.colors.indicator : undefined;
77
+ const pivotBg = pivotColor ?? (isGrad ? inact ? tokens.colors.track : tokens.colors.indicator : indClr);
78
+ const pivotTxtClr = textColor ?? tokens.colors.pivotText;
79
+ const pivotCnt = pivotText ?? `${pct}%`;
80
+ const hasPiv = showPivot && pivotCnt !== null && pivotCnt !== false;
81
+ const animVal = useRef(new Animated.Value(pct)).current;
80
82
  useEffect(() => {
81
- if (shouldAnimate && duration > 0) {
82
- const animation = Animated.timing(animatedValue, {
83
- toValue: percentage,
84
- duration,
85
- useNativeDriver: false
83
+ if (doAnim && dur > 0 && !reducedMotion) {
84
+ const anim = Animated.timing(animVal, {
85
+ toValue: pct,
86
+ duration: dur,
87
+ useNativeDriver: false,
88
+ isInteraction: false
86
89
  });
87
- animation.start();
88
- return () => animation.stop();
89
- } else {
90
- animatedValue.setValue(percentage);
91
- }
92
- }, [percentage, shouldAnimate, duration, animatedValue]);
93
- const [layout, setLayout] = useState({
90
+ anim.start();
91
+ return () => anim.stop();
92
+ } else animVal.setValue(pct);
93
+ }, [pct, doAnim, dur, animVal, reducedMotion]);
94
+ const [lay, setLay] = useState({
94
95
  track: 0,
95
96
  pivot: 0
96
97
  });
97
- const onTrackLayout = useCallback(e => {
98
- const width = e.nativeEvent.layout.width;
99
- setLayout(prev => prev.track === width ? prev : {
98
+ const onTrackLay = useCallback(e => {
99
+ const w = e.nativeEvent.layout.width;
100
+ setLay(prev => prev.track === w ? prev : {
100
101
  ...prev,
101
- track: width
102
+ track: w
102
103
  });
103
104
  }, []);
104
- const onPivotLayout = useCallback(e => {
105
- const width = e.nativeEvent.layout.width;
106
- setLayout(prev => prev.pivot === width ? prev : {
105
+ const onPivotLay = useCallback(e => {
106
+ const w = e.nativeEvent.layout.width;
107
+ setLay(prev => prev.pivot === w ? prev : {
107
108
  ...prev,
108
- pivot: width
109
+ pivot: w
109
110
  });
110
111
  }, []);
111
- const trackStyle = useMemo(() => [tokens.layout.track, orientation === 'vertical' ? {
112
- width: height,
112
+ const trackStyle = [tokens.layout.track, ori === 'vertical' ? {
113
+ width: h,
113
114
  height: '100%',
114
- backgroundColor: resolvedTrackColor,
115
- borderRadius: height / 2
115
+ backgroundColor: trackClr,
116
+ borderRadius: h / 2
116
117
  } : {
117
- height,
118
- backgroundColor: resolvedTrackColor,
119
- borderRadius: height / 2
120
- }], [height, orientation, resolvedTrackColor, tokens.layout.track]);
118
+ height: h,
119
+ backgroundColor: trackClr,
120
+ borderRadius: h / 2
121
+ }];
121
122
  const pivotNode = useMemo(() => {
122
- if (!hasPivot) return null;
123
+ if (!hasPiv) return null;
123
124
  const {
124
- track: trackW,
125
- pivot: pivotW
126
- } = layout;
127
- const pivotContainerStyle = [tokens.layout.pivot, {
128
- bottom: height + tokens.sizing.pivotPaddingVertical * 2,
129
- backgroundColor: resolvedPivotBg,
125
+ track: tw,
126
+ pivot: pw
127
+ } = lay;
128
+ const ctrStyle = [tokens.layout.pivot, {
129
+ bottom: h + tokens.sizing.pivotPaddingVertical * 2,
130
+ backgroundColor: pivotBg,
130
131
  paddingHorizontal: tokens.sizing.pivotPaddingHorizontal,
131
132
  paddingVertical: tokens.sizing.pivotPaddingVertical,
132
- borderRadius: height,
133
- opacity: trackW > 0 ? 1 : 0
133
+ borderRadius: h,
134
+ opacity: tw > 0 ? 1 : 0
134
135
  }];
135
- let transformStyle = null;
136
- if (trackW > 0 && pivotW > 0) {
137
- const p1 = pivotW / 2 / trackW * 100;
138
- const p2 = (trackW - pivotW / 2) / trackW * 100;
139
- if (p1 < p2) {
140
- transformStyle = {
141
- transform: [{
142
- translateX: animatedValue.interpolate({
143
- inputRange: [0, p1, p2, 100],
144
- outputRange: [0, 0, trackW - pivotW, trackW - pivotW],
145
- extrapolate: 'clamp'
146
- })
147
- }]
148
- };
149
- } else {
150
- transformStyle = {
151
- transform: [{
152
- translateX: (trackW - pivotW) / 2
153
- }]
154
- };
155
- }
156
- }
136
+ let transStyle = null;
137
+ if (tw > 0 && pw > 0) {
138
+ const p1 = pw / 2 / tw * 100;
139
+ const p2 = (tw - pw / 2) / tw * 100;
140
+ transStyle = p1 < p2 ? {
141
+ transform: [{
142
+ translateX: animVal.interpolate({
143
+ inputRange: [0, p1, p2, 100],
144
+ outputRange: [0, 0, tw - pw, tw - pw],
145
+ extrapolate: 'clamp'
146
+ })
147
+ }]
148
+ } : {
149
+ transform: [{
150
+ translateX: (tw - pw) / 2
151
+ }]
152
+ };
153
+ } else transStyle = {
154
+ transform: [{
155
+ translateX: (tw - pw) / 2
156
+ }]
157
+ };
157
158
  return /*#__PURE__*/React.createElement(Animated.View, {
158
- style: [pivotContainerStyle, transformStyle],
159
+ style: [ctrStyle, transStyle],
159
160
  pointerEvents: "none",
160
- onLayout: onPivotLayout
161
- }, isText(pivotContent) ? /*#__PURE__*/React.createElement(Text, {
161
+ onLayout: onPivotLay
162
+ }, isText(pivotCnt) ? /*#__PURE__*/React.createElement(Text, {
162
163
  style: [tokens.layout.pivotText, {
163
- color: resolvedPivotTextColor,
164
+ color: pivotTxtClr,
165
+ fontFamily: tokens.typography.fontFamily,
164
166
  fontSize: tokens.typography.pivotFontSize
165
167
  }, pivotStyle]
166
- }, pivotContent) : pivotContent);
167
- }, [animatedValue, hasPivot, height, layout, onPivotLayout, pivotContent, pivotStyle, resolvedPivotBg, resolvedPivotTextColor, tokens.layout.pivot, tokens.layout.pivotText, tokens.sizing.pivotPaddingHorizontal, tokens.sizing.pivotPaddingVertical, tokens.typography.pivotFontSize]);
168
- const progressContextValue = useMemo(() => ({
169
- animatedValue,
170
- orientation,
171
- height,
172
- indicatorColor: resolvedIndicatorColor,
168
+ }, pivotCnt) : pivotCnt);
169
+ }, [animVal, hasPiv, h, lay, onPivotLay, pivotCnt, pivotStyle, pivotBg, pivotTxtClr, tokens.layout.pivot, tokens.layout.pivotText, tokens.sizing.pivotPaddingHorizontal, tokens.sizing.pivotPaddingVertical, tokens.typography.fontFamily, tokens.typography.pivotFontSize]);
170
+ const ctxVal = useMemo(() => ({
171
+ animatedValue: animVal,
172
+ orientation: ori,
173
+ height: h,
174
+ indicatorColor: indClr,
173
175
  indicatorStyle: indicatorStyle,
174
- isGradient,
175
- gradientColor: isGradient ? color : undefined,
176
+ isGradient: isGrad,
177
+ gradientColor: isGrad ? color : undefined,
176
178
  layoutIndicator: tokens.layout.indicator
177
- }), [animatedValue, color, height, indicatorStyle, isGradient, orientation, resolvedIndicatorColor, tokens.layout.indicator]);
179
+ }), [animVal, color, h, indicatorStyle, isGrad, ori, indClr, tokens.layout.indicator]);
178
180
  return /*#__PURE__*/React.createElement(ProgressContext.Provider, {
179
- value: progressContextValue
181
+ value: ctxVal
180
182
  }, /*#__PURE__*/React.createElement(View, _extends({
181
183
  style: style,
182
184
  accessibilityRole: "progressbar",
183
185
  accessibilityValue: {
184
186
  min: 0,
185
187
  max: 100,
186
- now: percentage
188
+ now: pct
187
189
  }
188
190
  }, rest), /*#__PURE__*/React.createElement(View, {
189
191
  style: trackStyle,
190
- onLayout: hasPivot ? onTrackLayout : undefined
192
+ onLayout: hasPiv ? onTrackLay : undefined
191
193
  }, children ?? /*#__PURE__*/React.createElement(ProgressFilledTrack, null)), pivotNode));
192
194
  });
193
195
  Progress.displayName = 'Progress';
@@ -32,6 +32,7 @@ export const createProgressTokens = foundations => {
32
32
  pivotText: onPrimary
33
33
  },
34
34
  typography: {
35
+ fontFamily: foundations.typography.fontFamily,
35
36
  pivotFontSize: foundations.fontSize.xs
36
37
  },
37
38
  sizing: {
@@ -1,11 +1,12 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
2
  import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
3
- import { Platform, Pressable, Text, View } from 'react-native';
3
+ import { Platform, Pressable, View } from 'react-native';
4
4
  import { useRadio } from '@react-native-aria/radio';
5
5
  import { useToggleState } from '@react-stately/toggle';
6
6
  import { RadioGroupContext } from './RadioContext';
7
7
  import { useRadioTokens } from './tokens';
8
- import { parseNumber, isText } from '../../utils';
8
+ import { createHairlineView, parseNumber, renderTextOrNode } from '../../utils';
9
+ import { isRenderable, isText } from '../../utils/validate';
9
10
  export const Radio = /*#__PURE__*/React.memo(props => {
10
11
  const {
11
12
  children,
@@ -16,7 +17,7 @@ export const Radio = /*#__PURE__*/React.memo(props => {
16
17
  iconSize,
17
18
  checkedColor,
18
19
  iconRender,
19
- shape: shapeProp,
20
+ shape: shapeP,
20
21
  labelPosition,
21
22
  labelDisabled,
22
23
  disabled,
@@ -31,124 +32,133 @@ export const Radio = /*#__PURE__*/React.memo(props => {
31
32
  } = props;
32
33
  const tokens = useRadioTokens(tokensOverride);
33
34
  const group = useContext(RadioGroupContext);
34
- const optionValue = value ?? name;
35
- const serializedValue = optionValue == null ? undefined : String(optionValue);
36
- const isGroup = !!group && serializedValue !== undefined;
37
- const resolvedIconSize = parseNumber(iconSize ?? group?.iconSize, tokens.defaults.iconSize);
38
- const resolvedCheckedColor = checkedColor ?? group?.checkedColor ?? tokens.colors.checkedBackground;
39
- const resolvedLabelPosition = labelPosition ?? tokens.defaults.labelPosition;
40
- const resolvedLabelDisabled = labelDisabled ?? group?.labelDisabled ?? tokens.defaults.labelDisabled;
41
- const resolvedDisabled = Boolean(disabled || group?.state.isDisabled);
42
- const shape = shapeProp ?? tokens.defaults.shape;
43
- const standaloneKey = serializedValue ?? 'standalone';
35
+ const optVal = value ?? name;
36
+ const sv = optVal == null ? undefined : String(optVal);
37
+ const isGroup = !!group && sv !== undefined;
38
+ const rIconSz = parseNumber(iconSize ?? group?.iconSize, tokens.defaults.iconSize);
39
+ const rCheckedClr = checkedColor ?? group?.checkedColor ?? tokens.colors.checkedBackground;
40
+ const rLabelPos = labelPosition ?? tokens.defaults.labelPosition;
41
+ const rLabelDis = labelDisabled ?? group?.labelDisabled ?? tokens.defaults.labelDisabled;
42
+ const rDis = Boolean(disabled || group?.state.isDisabled);
43
+ const shape = shapeP ?? tokens.defaults.shape;
44
+ const standKey = sv ?? 'standalone';
44
45
  const inputRef = useRef(null);
45
- const inputElementRef = useRef(null);
46
- const resolvedAccessibilityLabel = useMemo(() => accessibilityLabel ?? ariaLabel ?? (isText(children) ? String(children) : undefined) ?? serializedValue ?? 'radio', [accessibilityLabel, ariaLabel, children, serializedValue]);
46
+ const inputElRef = useRef(null);
47
+ const onChangeRef = useRef(onChange);
48
+ onChangeRef.current = onChange;
49
+ const onClickRef = useRef(onClick);
50
+ onClickRef.current = onClick;
51
+ const rAccLabel = accessibilityLabel ?? ariaLabel ?? (isText(children) ? String(children) : undefined) ?? sv ?? 'radio';
47
52
  const {
48
- isSelected: standaloneSelected,
49
- setSelected: setStandaloneSelected
53
+ isSelected: standSel,
54
+ setSelected: setStandSel
50
55
  } = useToggleState({
51
56
  isSelected: checked,
52
57
  defaultSelected: defaultChecked,
53
58
  onChange: next => onChange?.(next)
54
59
  });
55
60
  const pseudoState = {
56
- selectedValue: standaloneSelected ? standaloneKey : null,
61
+ selectedValue: standSel ? standKey : null,
57
62
  setSelectedValue: next => {
58
- setStandaloneSelected(next === standaloneKey);
63
+ setStandSel(next === standKey);
59
64
  }
60
65
  };
61
66
  useEffect(() => {
62
- if (isGroup && group && serializedValue !== undefined) {
63
- group.registerValue(serializedValue, optionValue ?? serializedValue);
64
- return () => group.unregisterValue(serializedValue);
67
+ if (isGroup && group && sv !== undefined) {
68
+ group.registerValue(sv, optVal ?? sv);
69
+ return () => group.unregisterValue(sv);
65
70
  }
71
+ ;
66
72
  return undefined;
67
- }, [group, isGroup, optionValue, serializedValue]);
73
+ }, [group, isGroup, optVal, sv]);
68
74
  const state = isGroup && group ? group.state : pseudoState;
69
- const radioValue = isGroup ? serializedValue : standaloneKey;
75
+ const radioVal = isGroup ? sv : standKey;
70
76
  const {
71
77
  onBlur,
72
78
  onFocus,
73
- ...compatibleRest
79
+ ...compRest
74
80
  } = rest;
75
- const ariaRef = Platform.OS === 'web' ? inputElementRef : inputRef;
81
+ const ariaRef = Platform.OS === 'web' ? inputElRef : inputRef;
76
82
  const {
77
83
  inputProps
78
84
  } = useRadio({
79
- value: radioValue,
80
- isDisabled: resolvedDisabled,
81
- 'aria-label': resolvedAccessibilityLabel,
82
- accessibilityLabel: resolvedAccessibilityLabel,
83
- ...compatibleRest
85
+ value: radioVal,
86
+ isDisabled: rDis,
87
+ 'aria-label': rAccLabel,
88
+ accessibilityLabel: rAccLabel,
89
+ ...compRest
84
90
  }, state, ariaRef);
85
- const isChecked = isGroup && group && serializedValue !== undefined ? group.state.selectedValue === serializedValue : checked !== undefined ? checked : standaloneSelected;
91
+ const isChecked = isGroup && group && sv !== undefined ? group.state.selectedValue === sv : checked !== undefined ? checked : standSel;
86
92
  const inputOnPress = inputProps?.onPress;
87
93
  const handlePress = useCallback(e => {
88
- onClick?.(e);
89
- if (resolvedDisabled) return;
90
- if (isGroup && group && serializedValue !== undefined) {
91
- if (!isChecked) group.state.setSelectedValue(serializedValue);
94
+ onClickRef.current?.(e);
95
+ if (rDis) return;
96
+ if (isGroup && group && sv !== undefined) {
97
+ if (!isChecked) group.state.setSelectedValue(sv);
92
98
  return;
93
99
  }
100
+ ;
94
101
  if (checked !== undefined) {
95
- onChange?.(!checked);
102
+ onChangeRef.current?.(!checked);
96
103
  return;
97
104
  }
98
- if (onChange) {
99
- setStandaloneSelected(!standaloneSelected);
105
+ ;
106
+ if (onChangeRef.current) {
107
+ setStandSel(!standSel);
100
108
  return;
101
109
  }
110
+ ;
102
111
  inputOnPress?.(e);
103
- }, [checked, group, inputOnPress, isChecked, isGroup, onChange, onClick, resolvedDisabled, serializedValue, setStandaloneSelected, standaloneSelected]);
112
+ }, [checked, group, inputOnPress, isChecked, isGroup, rDis, sv, setStandSel, standSel]);
104
113
  const mergedInputProps = inputProps ? {
105
114
  ...inputProps,
106
115
  onPress: handlePress
107
116
  } : {};
108
- const borderColor = resolvedDisabled ? tokens.colors.disabledBorder : isChecked ? resolvedCheckedColor : tokens.colors.border;
109
- const backgroundColor = resolvedDisabled ? tokens.colors.disabledBackground : tokens.colors.background;
110
- const spacingStyle = useMemo(() => resolvedLabelPosition === 'left' ? {
117
+ const borderClr = rDis ? tokens.colors.disabledBorder : isChecked ? rCheckedClr : tokens.colors.border;
118
+ const bgClr = rDis ? tokens.colors.disabledBackground : tokens.colors.background;
119
+ const spacingStyle = rLabelPos === 'left' ? {
111
120
  marginRight: tokens.spacing.gap
112
121
  } : {
113
122
  marginLeft: tokens.spacing.gap
114
- }, [resolvedLabelPosition, tokens.spacing.gap]);
115
- const labelColor = useMemo(() => resolvedDisabled ? tokens.colors.labelDisabled : tokens.colors.label, [resolvedDisabled, tokens.colors.label, tokens.colors.labelDisabled]);
116
- const borderRadius = useMemo(() => shape === 'square' ? tokens.radii.square : tokens.radii.round, [shape, tokens.radii.round, tokens.radii.square]);
117
- const labelNode = useMemo(() => children === null || children === undefined || children === false ? null : /*#__PURE__*/React.createElement(View, {
123
+ };
124
+ const labelClr = rDis ? tokens.colors.labelDisabled : tokens.colors.label;
125
+ const radius = shape === 'square' ? tokens.radii.square : tokens.radii.round;
126
+ const labelNode = useMemo(() => !isRenderable(children) ? null : /*#__PURE__*/React.createElement(View, {
118
127
  style: [tokens.layout.labelWrapper, spacingStyle],
119
128
  pointerEvents: "none",
120
129
  accessible: false
121
- }, isText(children) ? /*#__PURE__*/React.createElement(Text, {
122
- accessible: false,
123
- style: [tokens.layout.label, {
124
- color: labelColor,
125
- fontSize: tokens.typography.fontSize,
126
- lineHeight: tokens.typography.fontSize * tokens.typography.lineHeightMultiplier,
127
- fontFamily: tokens.typography.fontFamily,
128
- fontWeight: tokens.typography.fontWeight
129
- }, labelStyle]
130
- }, children) : children), [children, labelColor, labelStyle, spacingStyle, tokens.layout.label, tokens.layout.labelWrapper, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.fontWeight, tokens.typography.lineHeightMultiplier]);
131
- const interactive = !resolvedDisabled && !resolvedLabelDisabled;
130
+ }, renderTextOrNode(children, [tokens.layout.label, {
131
+ color: labelClr,
132
+ fontSize: tokens.typography.fontSize,
133
+ lineHeight: tokens.typography.fontSize * tokens.typography.lineHeightMultiplier,
134
+ fontFamily: tokens.typography.fontFamily,
135
+ fontWeight: tokens.typography.fontWeight
136
+ }, labelStyle].filter(Boolean))), [children, labelClr, labelStyle, spacingStyle, tokens.layout.label, tokens.layout.labelWrapper, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.fontWeight, tokens.typography.lineHeightMultiplier]);
137
+ const interactive = !rDis && !rLabelDis;
132
138
  const defaultIcon = useMemo(() => /*#__PURE__*/React.createElement(View, {
133
139
  style: [tokens.layout.icon, {
134
- width: resolvedIconSize,
135
- height: resolvedIconSize,
136
- borderRadius,
137
- borderWidth: tokens.borders.width,
138
- borderColor,
139
- backgroundColor
140
+ width: rIconSz,
141
+ height: rIconSz,
142
+ borderRadius: radius,
143
+ backgroundColor: bgClr
140
144
  }]
141
- }, isChecked ? /*#__PURE__*/React.createElement(View, {
145
+ }, isChecked && /*#__PURE__*/React.createElement(View, {
142
146
  style: {
143
- width: resolvedIconSize * tokens.sizing.dotScale,
144
- height: resolvedIconSize * tokens.sizing.dotScale,
145
- borderRadius,
146
- backgroundColor: resolvedCheckedColor
147
+ width: rIconSz * tokens.sizing.dotScale,
148
+ height: rIconSz * tokens.sizing.dotScale,
149
+ borderRadius: radius,
150
+ backgroundColor: rCheckedClr
147
151
  }
148
- }) : null), [backgroundColor, borderColor, borderRadius, isChecked, resolvedCheckedColor, resolvedIconSize, tokens.borders.width, tokens.layout.icon, tokens.sizing.dotScale]);
152
+ }), /*#__PURE__*/React.createElement(View, {
153
+ style: createHairlineView({
154
+ position: 'all',
155
+ color: borderClr,
156
+ borderRadius: radius
157
+ })
158
+ })), [bgClr, borderClr, radius, isChecked, rCheckedClr, rIconSz, tokens.layout.icon, tokens.sizing.dotScale]);
149
159
  const iconVisual = iconRender ? iconRender({
150
160
  checked: Boolean(isChecked),
151
- disabled: Boolean(resolvedDisabled)
161
+ disabled: Boolean(rDis)
152
162
  }) ?? null : defaultIcon;
153
163
  const webInputStyle = {
154
164
  position: 'absolute',
@@ -167,7 +177,7 @@ export const Radio = /*#__PURE__*/React.memo(props => {
167
177
  ...webInputProps
168
178
  } = inputProps ?? {};
169
179
  const webInputNode = Platform.OS === 'web' ? /*#__PURE__*/React.createElement("input", _extends({
170
- ref: inputElementRef
180
+ ref: inputElRef
171
181
  }, webInputProps, {
172
182
  style: webInputStyle
173
183
  })) : null;
@@ -175,33 +185,30 @@ export const Radio = /*#__PURE__*/React.memo(props => {
175
185
  style: tokens.layout.iconWrapper
176
186
  }, iconVisual, webInputNode) : /*#__PURE__*/React.createElement(Pressable, _extends({}, mergedInputProps, {
177
187
  ref: inputRef,
178
- testID: serializedValue !== undefined ? `radio-icon-${serializedValue}` : undefined,
179
- disabled: resolvedDisabled,
188
+ testID: sv !== undefined ? `radio-icon-${sv}` : undefined,
189
+ disabled: rDis,
180
190
  accessibilityRole: "radio",
181
191
  accessibilityState: {
182
192
  selected: isChecked,
183
- disabled: resolvedDisabled
193
+ disabled: rDis
184
194
  },
185
195
  style: tokens.layout.iconWrapper
186
196
  }), iconVisual, webInputNode);
187
- const left = resolvedLabelPosition === 'left';
188
- const first = left ? labelNode : iconNode;
189
- const second = left ? iconNode : labelNode;
190
- if (interactive) {
191
- return /*#__PURE__*/React.createElement(Pressable, _extends({}, mergedInputProps, {
192
- ref: inputRef,
193
- testID: serializedValue !== undefined ? `radio-icon-${serializedValue}` : undefined,
194
- disabled: resolvedDisabled,
195
- accessibilityRole: "radio",
196
- accessibilityState: {
197
- selected: isChecked,
198
- disabled: resolvedDisabled
199
- },
200
- style: [tokens.layout.container, style]
201
- }), first, second);
202
- }
197
+ const isLeft = rLabelPos === 'left';
198
+ const first = isLeft ? labelNode : iconNode;
199
+ const second = isLeft ? iconNode : labelNode;
200
+ if (interactive) return /*#__PURE__*/React.createElement(Pressable, _extends({}, mergedInputProps, {
201
+ ref: inputRef,
202
+ testID: sv !== undefined ? `radio-icon-${sv}` : undefined,
203
+ disabled: rDis,
204
+ accessibilityRole: "radio",
205
+ accessibilityState: {
206
+ selected: isChecked,
207
+ disabled: rDis
208
+ },
209
+ style: [tokens.layout.container, style]
210
+ }), first, second);
203
211
  return /*#__PURE__*/React.createElement(View, {
204
212
  style: [tokens.layout.container, style]
205
213
  }, first, second);
206
- });
207
- Radio.displayName = 'Radio';
214
+ });