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
@@ -19,11 +19,11 @@ const TypographyTextBaseInner = /*#__PURE__*/React.forwardRef((props, ref) => {
19
19
  const {
20
20
  tokensOverride,
21
21
  children,
22
- type: typeProp,
23
- color: colorProp,
24
- size: sizeProp,
22
+ type: typeP,
23
+ color: colorP,
24
+ size: sizeP,
25
25
  level,
26
- disabled: disabledProp,
26
+ disabled: disP,
27
27
  delete: deleted,
28
28
  underline,
29
29
  center,
@@ -34,9 +34,9 @@ const TypographyTextBaseInner = /*#__PURE__*/React.forwardRef((props, ref) => {
34
34
  ...textProps
35
35
  } = props;
36
36
  const tokens = useTypographyTokens(tokensOverride);
37
- const type = typeProp ?? tokens.defaults.type;
38
- const size = sizeProp ?? tokens.defaults.size;
39
- const disabled = disabledProp ?? tokens.defaults.disabled;
37
+ const type = typeP ?? tokens.defaults.type;
38
+ const size = sizeP ?? tokens.defaults.size;
39
+ const disabled = disP ?? tokens.defaults.disabled;
40
40
  const ellipsisRows = resolveEllipsisRows(ellipsis);
41
41
  const ellipsisConfig = isEllipsisObject(ellipsis) ? ellipsis : undefined;
42
42
  const [isTruncated, setIsTruncated] = useState(false);
@@ -48,13 +48,14 @@ const TypographyTextBaseInner = /*#__PURE__*/React.forwardRef((props, ref) => {
48
48
  setIsTruncated(prev => prev === exceeded ? prev : exceeded);
49
49
  }, [ellipsisRows, expanded]);
50
50
  let resolvedColor = tokens.colors[type] ?? tokens.colors.default;
51
- if (colorProp !== undefined && colorProp !== null) {
52
- const colorKey = String(colorProp);
53
- resolvedColor = hasTypographyColorKey(tokens.colors, colorKey) ? tokens.colors[colorKey] : colorKey;
51
+ if (colorP !== undefined && colorP !== null) {
52
+ const ck = String(colorP);
53
+ resolvedColor = hasTypographyColorKey(tokens.colors, ck) ? tokens.colors[ck] : ck;
54
54
  }
55
+ ;
55
56
  const fontSize = level ? tokens.sizing.titles[level].fontSize : tokens.sizing.sizes[size];
56
57
  const lineHeight = level ? tokens.sizing.titles[level].lineHeight : fontSize * tokens.sizing.lineHeightMultiplier;
57
- const textDecorationLine = underline && deleted ? 'underline line-through' : underline ? 'underline' : deleted ? 'line-through' : undefined;
58
+ const textDeco = underline && deleted ? 'underline line-through' : underline ? 'underline' : deleted ? 'line-through' : undefined;
58
59
  const baseStyle = [{
59
60
  color: resolvedColor,
60
61
  fontSize,
@@ -62,12 +63,12 @@ const TypographyTextBaseInner = /*#__PURE__*/React.forwardRef((props, ref) => {
62
63
  fontFamily: tokens.typography.fontFamily,
63
64
  fontWeight: strong ? tokens.typography.weight.strong : tokens.typography.weight.regular,
64
65
  includeFontPadding: false,
65
- textDecorationLine,
66
+ textDecorationLine: textDeco,
66
67
  textAlign: center ? 'center' : undefined,
67
68
  opacity: disabled ? tokens.opacity.disabled : 1
68
69
  }, style];
69
- const hasActionText = !!ellipsisConfig && (ellipsisConfig.expandText || ellipsisConfig.collapseText);
70
- const shouldShowAction = hasActionText && (isTruncated || expanded || isWeb);
70
+ const hasActTxt = !!ellipsisConfig && (ellipsisConfig.expandText || ellipsisConfig.collapseText);
71
+ const showAct = hasActTxt && (isTruncated || expanded || isWeb);
71
72
  const handleToggleEllipsis = useCallback(() => {
72
73
  if (!ellipsisConfig) return;
73
74
  setExpanded(prev => {
@@ -76,35 +77,33 @@ const TypographyTextBaseInner = /*#__PURE__*/React.forwardRef((props, ref) => {
76
77
  return next;
77
78
  });
78
79
  }, [ellipsisConfig]);
79
- const actionLabel = !ellipsisConfig ? undefined : expanded ? ellipsisConfig.collapseText ?? ellipsisConfig.expandText : ellipsisConfig.expandText ?? ellipsisConfig.collapseText;
80
- const actionTextStyle = {
80
+ const actLabel = !ellipsisConfig ? undefined : expanded ? ellipsisConfig.collapseText ?? ellipsisConfig.expandText : ellipsisConfig.expandText ?? ellipsisConfig.collapseText;
81
+ const actTxtStyle = {
81
82
  color: tokens.colors.primary,
82
83
  fontSize: tokens.sizing.sizes.sm,
83
84
  fontWeight: tokens.typography.weight.medium,
84
85
  marginLeft: tokens.sizing.actionMarginLeft,
85
86
  includeFontPadding: false
86
87
  };
87
- const textStyle = shouldShowAction ? [baseStyle, FLEX_SHRINK_STYLE] : baseStyle;
88
+ const textStyle = showAct ? [baseStyle, FLEX_SHRINK_STYLE] : baseStyle;
88
89
  const textNode = /*#__PURE__*/React.createElement(Text, _extends({
89
90
  ref: ref,
90
91
  style: textStyle,
91
92
  onPress: onPress,
92
93
  numberOfLines: !expanded ? ellipsisRows : undefined,
93
94
  ellipsizeMode: "tail",
94
- onTextLayout: hasActionText && ellipsisRows && !expanded && !isWeb ? handleTextLayout : undefined
95
+ onTextLayout: hasActTxt && ellipsisRows && !expanded && !isWeb ? handleTextLayout : undefined
95
96
  }, textProps), children);
96
- if (!shouldShowAction) {
97
- return center ? /*#__PURE__*/React.createElement(View, {
98
- style: tokens.layout.centerWrapper
99
- }, textNode) : textNode;
100
- }
97
+ if (!showAct) return center ? /*#__PURE__*/React.createElement(View, {
98
+ style: tokens.layout.centerWrapper
99
+ }, textNode) : textNode;
101
100
  const actionNode = /*#__PURE__*/React.createElement(View, {
102
101
  style: tokens.layout.actionRow
103
102
  }, textNode, /*#__PURE__*/React.createElement(Text, {
104
103
  onPress: handleToggleEllipsis,
105
104
  suppressHighlighting: true,
106
- style: actionTextStyle
107
- }, actionLabel));
105
+ style: actTxtStyle
106
+ }, actLabel));
108
107
  return center ? /*#__PURE__*/React.createElement(View, {
109
108
  style: tokens.layout.centerWrapper
110
109
  }, actionNode) : actionNode;
@@ -139,6 +138,7 @@ const TypographyLink = /*#__PURE__*/React.forwardRef((props, ref) => {
139
138
  onPress(event);
140
139
  return;
141
140
  }
141
+ ;
142
142
  if (href) {
143
143
  try {
144
144
  await Linking.openURL(href);
@@ -1,11 +1,14 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useEffect, useRef, useState } from 'react';
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { Image, Text, View, useWindowDimensions } from 'react-native';
4
4
  import { isFiniteNumber, isString } from '../../utils';
5
5
  import { useWaterMarkTokens } from './tokens';
6
- const WaterMark = props => {
6
+ const resolveFiniteNumber = (value, fallback) => isFiniteNumber(value) ? value : fallback;
7
+ const resolveNonNegativeNumber = (value, fallback) => Math.max(0, resolveFiniteNumber(value, fallback));
8
+ const resolvePositiveNumber = (value, fallback) => Math.max(1, resolveFiniteNumber(value, fallback));
9
+ const WaterMarkImpl = props => {
7
10
  const {
8
- content: contentProp,
11
+ content: contentP,
9
12
  width,
10
13
  height,
11
14
  gapX,
@@ -16,8 +19,8 @@ const WaterMark = props => {
16
19
  fontSize,
17
20
  color,
18
21
  opacity,
19
- zIndex: zIndexProp,
20
- fullPage: fullPageProp,
22
+ zIndex: zIdxP,
23
+ fullPage: fullP,
21
24
  tokensOverride,
22
25
  style,
23
26
  onLayoutCalculated,
@@ -25,12 +28,9 @@ const WaterMark = props => {
25
28
  ...rest
26
29
  } = props;
27
30
  const tokens = useWaterMarkTokens(tokensOverride);
28
- const resolveFiniteNumber = (value, fallback) => isFiniteNumber(value) ? value : fallback;
29
- const resolveNonNegativeNumber = (value, fallback) => Math.max(0, resolveFiniteNumber(value, fallback));
30
- const resolvePositiveNumber = (value, fallback) => Math.max(1, resolveFiniteNumber(value, fallback));
31
- const content = contentProp ?? tokens.defaults.content;
32
- const zIndex = resolveFiniteNumber(zIndexProp, tokens.defaults.zIndex);
33
- const fullPage = fullPageProp ?? tokens.defaults.fullPage;
31
+ const content = contentP ?? tokens.defaults.content;
32
+ const zIndex = resolveFiniteNumber(zIdxP, tokens.defaults.zIndex);
33
+ const fullPage = fullP ?? tokens.defaults.fullPage;
34
34
  const window = useWindowDimensions();
35
35
  const [layoutSize, setLayoutSize] = useState({
36
36
  width: 0,
@@ -41,98 +41,99 @@ const WaterMark = props => {
41
41
  height: 0
42
42
  });
43
43
  const size = fullPage ? window : layoutSize;
44
- const resolvedGapX = resolveNonNegativeNumber(gapX, tokens.defaults.gapX);
45
- const resolvedGapY = resolveNonNegativeNumber(gapY, tokens.defaults.gapY);
46
- const resolvedRotate = resolveFiniteNumber(rotate, tokens.defaults.rotate);
47
- const resolvedOpacity = Math.max(0, Math.min(1, resolveFiniteNumber(opacity, tokens.defaults.opacity)));
48
- const fontSizeFromFont = isFiniteNumber(font?.size) ? font?.size : isString(font?.size) ? Number.parseFloat(font?.size) : undefined;
49
- const resolvedFontSize = resolveFiniteNumber((Number.isFinite(fontSizeFromFont ?? Number.NaN) ? fontSizeFromFont : undefined) ?? fontSize, tokens.defaults.fontSize);
50
- const normalizedFontSize = Math.max(0, resolvedFontSize);
51
- const resolvedColor = font?.color ?? color ?? tokens.colors.mark;
52
- const markWidth = resolvePositiveNumber(image?.width ?? width, tokens.defaults.width);
53
- const markHeight = resolvePositiveNumber(image?.height ?? height, tokens.defaults.height);
54
- const cellWidth = Math.max(1, markWidth + resolvedGapX);
55
- const cellHeight = Math.max(1, markHeight + resolvedGapY);
56
- const rows = size.height ? Math.ceil(size.height / cellHeight) + 1 : 1;
57
- const cols = size.width ? Math.ceil(size.width / cellWidth) + 1 : 1;
58
- const handleLayout = event => {
44
+ const rGapX = resolveNonNegativeNumber(gapX, tokens.defaults.gapX);
45
+ const rGapY = resolveNonNegativeNumber(gapY, tokens.defaults.gapY);
46
+ const rRotate = resolveFiniteNumber(rotate, tokens.defaults.rotate);
47
+ const rOpacity = Math.max(0, Math.min(1, resolveFiniteNumber(opacity, tokens.defaults.opacity)));
48
+ const fontSzFromFont = isFiniteNumber(font?.size) ? font.size : isString(font?.size) ? Number.parseFloat(font.size) : undefined;
49
+ const normFontSz = Math.max(0, resolveFiniteNumber((Number.isFinite(fontSzFromFont ?? Number.NaN) ? fontSzFromFont : undefined) ?? fontSize, tokens.defaults.fontSize));
50
+ const rColor = font?.color ?? color ?? tokens.colors.mark;
51
+ const markW = resolvePositiveNumber(image?.width ?? width, tokens.defaults.width);
52
+ const markH = resolvePositiveNumber(image?.height ?? height, tokens.defaults.height);
53
+ const cellW = Math.max(1, markW + rGapX);
54
+ const cellH = Math.max(1, markH + rGapY);
55
+ const rows = size.height ? Math.ceil(size.height / cellH) + 1 : 1;
56
+ const cols = size.width ? Math.ceil(size.width / cellW) + 1 : 1;
57
+ const onLayoutCalcRef = useRef(onLayoutCalculated);
58
+ onLayoutCalcRef.current = onLayoutCalculated;
59
+ const handleLayout = useCallback(event => {
59
60
  if (fullPage) return;
60
61
  const {
61
- width,
62
- height
62
+ width: w,
63
+ height: h
63
64
  } = event.nativeEvent.layout;
64
- if (!isFiniteNumber(width) || !isFiniteNumber(height)) return;
65
- const nextWidth = Math.max(0, width);
66
- const nextHeight = Math.max(0, height);
67
- if (lastLayoutRef.current.width === nextWidth && lastLayoutRef.current.height === nextHeight) return;
65
+ if (!isFiniteNumber(w) || !isFiniteNumber(h)) return;
66
+ const nw = Math.max(0, w),
67
+ nh = Math.max(0, h);
68
+ if (lastLayoutRef.current.width === nw && lastLayoutRef.current.height === nh) return;
68
69
  lastLayoutRef.current = {
69
- width: nextWidth,
70
- height: nextHeight
70
+ width: nw,
71
+ height: nh
71
72
  };
72
73
  setLayoutSize({
73
- width: nextWidth,
74
- height: nextHeight
74
+ width: nw,
75
+ height: nh
75
76
  });
76
- onLayoutCalculated?.({
77
- width: nextWidth,
78
- height: nextHeight
77
+ onLayoutCalcRef.current?.({
78
+ width: nw,
79
+ height: nh
79
80
  });
80
- };
81
+ }, [fullPage]);
81
82
  useEffect(() => {
82
- if (!fullPage) return;
83
- if (!isFiniteNumber(window.width) || !isFiniteNumber(window.height)) return;
84
- if (window.width <= 0 || window.height <= 0) return;
85
- onLayoutCalculated?.({
83
+ if (!fullPage || !isFiniteNumber(window.width) || !isFiniteNumber(window.height) || window.width <= 0 || window.height <= 0) return;
84
+ onLayoutCalcRef.current?.({
86
85
  width: window.width,
87
86
  height: window.height
88
87
  });
89
- }, [fullPage, onLayoutCalculated, window.width, window.height]);
90
- const zIndexStyle = {
88
+ }, [fullPage, window.width, window.height]);
89
+ const zIdxStyle = useMemo(() => ({
91
90
  zIndex
92
- };
93
- const cellStyle = {
94
- width: cellWidth,
95
- height: cellHeight
96
- };
97
- const oddRowStyle = {
98
- paddingLeft: cellWidth / 2
99
- };
100
- const markStyle = {
101
- width: markWidth,
102
- height: markHeight,
91
+ }), [zIndex]);
92
+ const cellStyle = useMemo(() => ({
93
+ width: cellW,
94
+ height: cellH
95
+ }), [cellW, cellH]);
96
+ const oddRowStyle = useMemo(() => ({
97
+ paddingLeft: cellW / 2
98
+ }), [cellW]);
99
+ const markStyle = useMemo(() => ({
100
+ width: markW,
101
+ height: markH,
103
102
  transform: [{
104
- rotate: `${resolvedRotate}deg`
103
+ rotate: `${rRotate}deg`
105
104
  }]
106
- };
107
- const imageStyle = {
108
- width: markWidth,
109
- height: markHeight,
110
- opacity: resolvedOpacity
111
- };
112
- const textBaseStyle = {
113
- fontSize: normalizedFontSize,
114
- color: resolvedColor,
115
- opacity: resolvedOpacity,
105
+ }), [markW, markH, rRotate]);
106
+ const imgStyle = useMemo(() => ({
107
+ width: markW,
108
+ height: markH,
109
+ opacity: rOpacity
110
+ }), [markW, markH, rOpacity]);
111
+ const txtBaseStyle = useMemo(() => ({
112
+ fontSize: normFontSz,
113
+ color: rColor,
114
+ opacity: rOpacity,
116
115
  fontFamily: font?.family,
117
116
  fontWeight: font?.weight
118
- };
119
- const rowIndexes = Array.from({
117
+ }), [normFontSz, rColor, rOpacity, font?.family, font?.weight]);
118
+ const rowIdx = Array.from({
120
119
  length: rows
121
120
  }, (_, i) => i);
122
- const colIndexes = Array.from({
121
+ const colIdx = Array.from({
123
122
  length: cols
124
123
  }, (_, i) => i);
125
124
  return /*#__PURE__*/React.createElement(View, _extends({
126
125
  pointerEvents: "none",
127
- style: [fullPage ? tokens.layout.absoluteFill : null, zIndexStyle, style],
126
+ importantForAccessibility: "no-hide-descendants",
127
+ accessibilityElementsHidden: true,
128
+ style: [fullPage ? tokens.layout.absoluteFill : null, zIdxStyle, style],
128
129
  onLayout: handleLayout
129
130
  }, rest), /*#__PURE__*/React.createElement(View, {
130
131
  style: tokens.layout.wrapper
131
- }, rowIndexes.map(rowIndex => /*#__PURE__*/React.createElement(View, {
132
- key: `row-${rowIndex}`,
133
- style: [tokens.layout.row, rowIndex % 2 === 0 ? null : oddRowStyle]
134
- }, colIndexes.map(colIndex => /*#__PURE__*/React.createElement(View, {
135
- key: `col-${rowIndex}-${colIndex}`,
132
+ }, rowIdx.map(ri => /*#__PURE__*/React.createElement(View, {
133
+ key: `row-${ri}`,
134
+ style: [tokens.layout.row, ri % 2 === 0 ? null : oddRowStyle]
135
+ }, colIdx.map(ci => /*#__PURE__*/React.createElement(View, {
136
+ key: `col-${ri}-${ci}`,
136
137
  style: [tokens.layout.cell, cellStyle]
137
138
  }, /*#__PURE__*/React.createElement(View, {
138
139
  style: [tokens.layout.mark, markStyle]
@@ -140,12 +141,13 @@ const WaterMark = props => {
140
141
  source: {
141
142
  uri: image.src
142
143
  },
143
- style: imageStyle,
144
+ style: imgStyle,
144
145
  resizeMode: "contain"
145
146
  }) : /*#__PURE__*/React.createElement(Text, {
146
147
  allowFontScaling: false,
147
- style: [textBaseStyle, textStyle]
148
+ style: [txtBaseStyle, textStyle]
148
149
  }, content))))))));
149
150
  };
151
+ const WaterMark = /*#__PURE__*/React.memo(WaterMarkImpl);
150
152
  WaterMark.displayName = 'WaterMark';
151
153
  export default WaterMark;
@@ -0,0 +1,19 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React from 'react';
3
+ import { Text as RNText } from 'react-native';
4
+ import { useTheme } from './useTheme';
5
+ export const Text = /*#__PURE__*/React.forwardRef(({
6
+ style,
7
+ ...rest
8
+ }, ref) => {
9
+ const {
10
+ foundations
11
+ } = useTheme();
12
+ return /*#__PURE__*/React.createElement(RNText, _extends({
13
+ ref: ref,
14
+ style: [{
15
+ fontFamily: foundations.typography.fontFamily
16
+ }, style]
17
+ }, rest));
18
+ });
19
+ Text.displayName = 'Text';
@@ -2,21 +2,15 @@ import React, { useMemo } from 'react';
2
2
  import { ThemeContext } from './ThemeContext';
3
3
  import { createTokens } from './tokens';
4
4
  import { isObject } from '../utils/validate';
5
- const isThemeTokens = value => {
6
- return Boolean(isObject(value) && 'palette' in value && 'spacing' in value);
7
- };
5
+ const isTokens = v => Boolean(isObject(v) && 'palette' in v && 'spacing' in v);
8
6
  export const ThemeProvider = ({
9
7
  value,
10
8
  children
11
9
  }) => {
12
- const resolved = useMemo(() => {
13
- const foundations = isThemeTokens(value) ? value : createTokens(value?.foundations);
14
- const components = !isThemeTokens(value) ? value?.components : undefined;
15
- return {
16
- foundations,
17
- components
18
- };
19
- }, [value]);
10
+ const resolved = useMemo(() => ({
11
+ foundations: isTokens(value) ? value : createTokens(value?.foundations),
12
+ components: isTokens(value) ? undefined : value?.components
13
+ }), [value]);
20
14
  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
21
15
  value: resolved
22
16
  }, children);
@@ -1,17 +1,15 @@
1
1
  import { useMemo } from 'react';
2
2
  import { deepMerge } from '../utils/deepMerge';
3
3
  import { useTheme } from './useTheme';
4
- export const createComponentTokensHook = (key, createBaseTokens) => {
5
- return overrides => {
6
- const {
7
- foundations,
8
- components
9
- } = useTheme();
10
- const componentOverrides = components?.[key];
11
- return useMemo(() => {
12
- const base = createBaseTokens(foundations);
13
- const merged = componentOverrides && overrides ? deepMerge(componentOverrides, overrides) : componentOverrides ?? overrides;
14
- return merged ? deepMerge(base, merged) : base;
15
- }, [componentOverrides, foundations, overrides]);
16
- };
4
+ export const createComponentTokensHook = (key, createBaseTokens) => overrides => {
5
+ const {
6
+ foundations,
7
+ components
8
+ } = useTheme();
9
+ const co = components?.[key];
10
+ return useMemo(() => {
11
+ const base = createBaseTokens(foundations);
12
+ const m = co && overrides ? deepMerge(co, overrides) : co ?? overrides;
13
+ return m ? deepMerge(base, m) : base;
14
+ }, [co, foundations, overrides]);
17
15
  };
@@ -1,4 +1,5 @@
1
1
  export { ThemeProvider } from './ThemeProvider';
2
+ export { Text } from './Text';
2
3
  export { useTheme } from './useTheme';
3
4
  export { createComponentTokensHook } from './createComponentTokensHook';
4
5
  export { mergeTokensOverride } from './mergeTokensOverride';
@@ -1,5 +1,2 @@
1
1
  import { deepMerge } from '../utils/deepMerge';
2
- export const mergeTokensOverride = (base, override) => {
3
- if (base && override) return deepMerge(base, override);
4
- return base ?? override;
5
- };
2
+ export const mergeTokensOverride = (base, override) => base && override ? deepMerge(base, override) : base ?? override;
@@ -131,10 +131,9 @@ const auroraOverrides = {
131
131
  lineHeightMultiplier: 1.25
132
132
  }
133
133
  };
134
- const buildPreset = overrides => createTokens(overrides);
135
134
  export const themePresets = {
136
135
  light: defaultTokens,
137
- dark: buildPreset(darkOverrides),
138
- aurora: buildPreset(auroraOverrides)
136
+ dark: createTokens(darkOverrides),
137
+ aurora: createTokens(auroraOverrides)
139
138
  };
140
139
  export const getThemePreset = name => themePresets[name];
@@ -124,13 +124,5 @@ export const defaultFoundations = {
124
124
  pressed: 0.85
125
125
  }
126
126
  };
127
- export const buildFoundations = overrides => {
128
- if (!overrides) {
129
- return defaultFoundations;
130
- }
131
- return deepMerge(defaultFoundations, overrides);
132
- };
133
- export const createTokens = overrides => {
134
- return buildFoundations(overrides);
135
- };
127
+ export const createTokens = overrides => overrides ? deepMerge(defaultFoundations, overrides) : defaultFoundations;
136
128
  export const defaultTokens = defaultFoundations;
@@ -0,0 +1,2 @@
1
+ export { useReducedMotion, getReducedMotion } from './useReducedMotion';
2
+ export { useAnimatedTransition } from './useAnimatedTransition';
@@ -0,0 +1,53 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { Animated, Easing } from 'react-native';
3
+ import { nativeDriverEnabled } from '../../platform';
4
+ import { useReducedMotion } from './useReducedMotion';
5
+ const EASE_OUT = Easing.bezier(0.075, 0.82, 0.165, 1.0);
6
+ const EASE_IN = Easing.bezier(0.55, 0.055, 0.675, 0.19);
7
+ export const useAnimatedTransition = ({
8
+ visible,
9
+ duration = 300,
10
+ enterEasing = EASE_OUT,
11
+ exitEasing = EASE_IN,
12
+ useNativeDriver: driver = nativeDriverEnabled
13
+ }) => {
14
+ const reduceMotion = useReducedMotion();
15
+ const [mounted, setMounted] = useState(visible);
16
+ const progress = useRef(new Animated.Value(visible ? 1 : 0)).current;
17
+ const animRef = useRef(null);
18
+ const seqRef = useRef(0);
19
+ const run = useCallback((show, dur, easeIn, easeOut, nd) => {
20
+ seqRef.current += 1;
21
+ const seq = seqRef.current;
22
+ animRef.current?.stop();
23
+ if (show) setMounted(true);
24
+ if (dur <= 0) {
25
+ progress.setValue(show ? 1 : 0);
26
+ if (!show) setMounted(false);
27
+ return;
28
+ }
29
+ const anim = Animated.timing(progress, {
30
+ toValue: show ? 1 : 0,
31
+ duration: dur,
32
+ easing: show ? easeIn : easeOut,
33
+ useNativeDriver: nd,
34
+ isInteraction: false
35
+ });
36
+ animRef.current = anim;
37
+ anim.start(({
38
+ finished
39
+ }) => {
40
+ if (finished && seq === seqRef.current && !show) setMounted(false);
41
+ });
42
+ }, [progress]);
43
+ useEffect(() => {
44
+ run(visible, reduceMotion ? 0 : duration, enterEasing, exitEasing, driver);
45
+ }, [visible, reduceMotion, duration, enterEasing, exitEasing, driver, run]);
46
+ useEffect(() => () => {
47
+ animRef.current?.stop();
48
+ }, []);
49
+ return {
50
+ mounted,
51
+ progress
52
+ };
53
+ };
@@ -0,0 +1,54 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { AccessibilityInfo, Platform } from 'react-native';
3
+ let _reduced = false;
4
+ let _inited = false;
5
+ const _subs = new Set();
6
+ const set = v => {
7
+ if (v === _reduced) return;
8
+ _reduced = v;
9
+ _subs.forEach(fn => fn(v));
10
+ };
11
+ const init = () => {
12
+ if (_inited) return;
13
+ _inited = true;
14
+ if (Platform.OS === 'web') {
15
+ if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {
16
+ try {
17
+ const mql = window.matchMedia('(prefers-reduced-motion: reduce)');
18
+ _reduced = mql.matches;
19
+ const h = e => set(e.matches);
20
+ mql.addEventListener?.('change', h) ?? mql.addListener?.(h);
21
+ } catch {}
22
+ }
23
+ return;
24
+ }
25
+ AccessibilityInfo.isReduceMotionEnabled?.().then(v => set(!!v)).catch(() => {});
26
+ try {
27
+ AccessibilityInfo.addEventListener('reduceMotionChanged', v => set(v));
28
+ } catch {}
29
+ };
30
+ export const useReducedMotion = () => {
31
+ const r = useRef(false);
32
+ if (!r.current) {
33
+ r.current = true;
34
+ init();
35
+ }
36
+ const [v, sv] = useState(_reduced);
37
+ useEffect(() => {
38
+ if (_reduced !== v) sv(_reduced);
39
+ _subs.add(sv);
40
+ return () => {
41
+ _subs.delete(sv);
42
+ };
43
+ }, []);
44
+ return v;
45
+ };
46
+ export const getReducedMotion = () => {
47
+ init();
48
+ return _reduced;
49
+ };
50
+ export const _resetForTesting = () => {
51
+ _reduced = false;
52
+ _inited = false;
53
+ _subs.clear();
54
+ };
@@ -7,27 +7,19 @@ export const useAriaListBox = props => {
7
7
  label,
8
8
  ...rest
9
9
  } = props;
10
- const resolvedProps = useMemo(() => {
11
- if (label == null) return rest;
12
- const ariaLabel = typeof label === 'string' ? label : undefined;
13
- return {
14
- ...rest,
15
- ...(ariaLabel ? {
16
- 'aria-label': ariaLabel
17
- } : null)
18
- };
19
- }, [label, rest]);
20
- const state = useListState(resolvedProps);
10
+ const resolved = typeof label === 'string' ? {
11
+ ...rest,
12
+ 'aria-label': label
13
+ } : rest;
14
+ const state = useListState(resolved);
21
15
  const {
22
16
  listBoxProps,
23
17
  labelProps
24
- } = useListBox(resolvedProps, state, ref);
25
- const resolvedListBoxProps = useMemo(() => listBoxProps, [listBoxProps]);
26
- const resolvedLabelProps = useMemo(() => labelProps, [labelProps]);
18
+ } = useListBox(resolved, state, ref);
27
19
  return {
28
20
  state,
29
- listBoxProps: resolvedListBoxProps,
30
- labelProps: resolvedLabelProps,
21
+ listBoxProps: useMemo(() => listBoxProps, [listBoxProps]),
22
+ labelProps: useMemo(() => labelProps, [labelProps]),
31
23
  ref
32
24
  };
33
25
  };
@@ -6,7 +6,7 @@ export const useAriaOverlay = ({
6
6
  onClose,
7
7
  isDismissable = true,
8
8
  shouldCloseOnInteractOutside,
9
- overlayProps: overlayPropOverrides
9
+ overlayProps: overrides
10
10
  }) => {
11
11
  const overlayRef = useRef(null);
12
12
  const {
@@ -17,9 +17,9 @@ export const useAriaOverlay = ({
17
17
  isDismissable,
18
18
  shouldCloseOnInteractOutside
19
19
  }, overlayRef);
20
- const resolvedOverlayProps = useMemo(() => mergeProps(overlayProps ?? {}, overlayPropOverrides ?? {}), [overlayPropOverrides, overlayProps]);
20
+ const resolved = useMemo(() => mergeProps(overlayProps ?? {}, overrides ?? {}), [overrides, overlayProps]);
21
21
  return {
22
22
  overlayRef,
23
- overlayProps: resolvedOverlayProps
23
+ overlayProps: resolved
24
24
  };
25
25
  };