react-native-system-ui 0.0.7 → 1.0.0

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 (366) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +97 -105
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +54 -67
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +25 -23
  7. package/dist/cjs/components/badge/Badge.js +31 -31
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +115 -151
  10. package/dist/cjs/components/button/ButtonGroup.js +8 -42
  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 +177 -180
  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 +70 -83
  18. package/dist/cjs/components/cell/CellGroup.js +16 -29
  19. package/dist/cjs/components/checkbox/Checkbox.js +139 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +4 -35
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +25 -24
  23. package/dist/cjs/components/collapse/Collapse.js +75 -91
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +16 -3
  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 +20 -15
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +61 -84
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +153 -121
  34. package/dist/cjs/components/dialog/imperative.js +17 -30
  35. package/dist/cjs/components/divider/Divider.js +26 -28
  36. package/dist/cjs/components/empty/Empty.js +35 -39
  37. package/dist/cjs/components/error-boundary/ErrorBoundary.js +73 -0
  38. package/dist/cjs/components/error-boundary/index.js +19 -0
  39. package/dist/cjs/components/field/Field.js +109 -106
  40. package/dist/cjs/components/flex/Flex.js +18 -18
  41. package/dist/cjs/components/flex/FlexItem.js +26 -27
  42. package/dist/cjs/components/form/Form.js +142 -161
  43. package/dist/cjs/components/form/FormItem.js +69 -97
  44. package/dist/cjs/components/form/FormList.js +49 -37
  45. package/dist/cjs/components/form/tokens.js +6 -3
  46. package/dist/cjs/components/form/utils.js +15 -34
  47. package/dist/cjs/components/grid/Grid.js +30 -29
  48. package/dist/cjs/components/grid/GridItem.js +84 -85
  49. package/dist/cjs/components/image/Image.js +55 -59
  50. package/dist/cjs/components/image/tokens.js +2 -2
  51. package/dist/cjs/components/image-preview/ImagePreview.js +124 -112
  52. package/dist/cjs/components/image-preview/imperative.js +4 -13
  53. package/dist/cjs/components/index.js +13 -0
  54. package/dist/cjs/components/input/Input.js +30 -22
  55. package/dist/cjs/components/loading/Loading.js +14 -15
  56. package/dist/cjs/components/nav-bar/NavBar.js +68 -83
  57. package/dist/cjs/components/nav-bar/tokens.js +1 -9
  58. package/dist/cjs/components/notice-bar/NoticeBar.js +74 -77
  59. package/dist/cjs/components/notify/Notify.js +88 -84
  60. package/dist/cjs/components/notify/imperative.js +20 -43
  61. package/dist/cjs/components/notify/tokens.js +1 -11
  62. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +187 -209
  63. package/dist/cjs/components/overlay/Overlay.js +37 -52
  64. package/dist/cjs/components/overlay/tokens.js +5 -3
  65. package/dist/cjs/components/password-input/PasswordInput.js +98 -79
  66. package/dist/cjs/components/picker/Picker.js +440 -421
  67. package/dist/cjs/components/picker/tokens.js +1 -1
  68. package/dist/cjs/components/popup/Popup.js +263 -293
  69. package/dist/cjs/components/portal/Portal.js +12 -29
  70. package/dist/cjs/components/portal/PortalHost.js +151 -234
  71. package/dist/cjs/components/progress/Progress.js +51 -48
  72. package/dist/cjs/components/radio/Radio.js +45 -42
  73. package/dist/cjs/components/radio/RadioGroup.js +8 -40
  74. package/dist/cjs/components/radio/tokens.js +7 -10
  75. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  76. package/dist/cjs/components/search/Search.js +51 -43
  77. package/dist/cjs/components/selector/Selector.js +14 -13
  78. package/dist/cjs/components/share-sheet/ShareSheet.js +160 -161
  79. package/dist/cjs/components/sidebar/Sidebar.js +39 -45
  80. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  81. package/dist/cjs/components/sidebar/SidebarItem.js +13 -16
  82. package/dist/cjs/components/sidebar/tokens.js +1 -3
  83. package/dist/cjs/components/skeleton/Skeleton.js +30 -37
  84. package/dist/cjs/components/skeleton/tokens.js +1 -2
  85. package/dist/cjs/components/slider/Slider.js +156 -135
  86. package/dist/cjs/components/space/Space.js +46 -69
  87. package/dist/cjs/components/stepper/Stepper.js +177 -155
  88. package/dist/cjs/components/swiper/Swiper.js +251 -253
  89. package/dist/cjs/components/swiper/SwiperPagIndicator.js +25 -27
  90. package/dist/cjs/components/swiper/tokens.js +10 -3
  91. package/dist/cjs/components/switch/Switch.js +13 -15
  92. package/dist/cjs/components/tabbar/Tabbar.js +35 -27
  93. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  94. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  95. package/dist/cjs/components/tabs/Tabs.js +286 -313
  96. package/dist/cjs/components/tag/Tag.js +46 -37
  97. package/dist/cjs/components/toast/Toast.js +90 -90
  98. package/dist/cjs/components/toast/imperative.js +16 -41
  99. package/dist/cjs/components/typography/Typography.js +3 -5
  100. package/dist/cjs/components/water-mark/WaterMark.js +31 -29
  101. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  102. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  103. package/dist/cjs/design-system/presets.js +2 -3
  104. package/dist/cjs/design-system/tokens.js +2 -11
  105. package/dist/cjs/hooks/animation/index.js +25 -0
  106. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  107. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  108. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  109. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  110. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  111. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  112. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  113. package/dist/cjs/hooks/index.js +12 -0
  114. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  115. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  116. package/dist/cjs/hooks/useControllableValue.js +10 -21
  117. package/dist/cjs/hooks/useCountDown.js +14 -22
  118. package/dist/cjs/hooks/useHairline.js +17 -29
  119. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  120. package/dist/cjs/index.js +67 -1
  121. package/dist/cjs/platform/animation.js +10 -2
  122. package/dist/cjs/platform/measure.js +18 -36
  123. package/dist/cjs/utils/color.js +21 -35
  124. package/dist/cjs/utils/compare.js +7 -12
  125. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  126. package/dist/cjs/utils/date.js +20 -50
  127. package/dist/cjs/utils/deepMerge.js +16 -26
  128. package/dist/cjs/utils/hairline.js +74 -71
  129. package/dist/cjs/utils/index.js +22 -0
  130. package/dist/cjs/utils/number.js +21 -29
  131. package/dist/cjs/utils/render.js +27 -0
  132. package/dist/cjs/utils/rtl.js +25 -0
  133. package/dist/cjs/utils/string.js +8 -25
  134. package/dist/es/components/action-sheet/ActionSheet.js +99 -107
  135. package/dist/es/components/action-sheet/tokens.js +16 -27
  136. package/dist/es/components/area/Area.js +55 -68
  137. package/dist/es/components/area/tokens.js +6 -3
  138. package/dist/es/components/avatar/Avatar.js +25 -23
  139. package/dist/es/components/avatar/index.js +1 -2
  140. package/dist/es/components/badge/Badge.js +33 -33
  141. package/dist/es/components/badge/tokens.js +6 -8
  142. package/dist/es/components/button/Button.js +116 -152
  143. package/dist/es/components/button/ButtonGroup.js +9 -43
  144. package/dist/es/components/button/tokens.js +2 -3
  145. package/dist/es/components/calendar/Calendar.js +214 -225
  146. package/dist/es/components/calendar/tokens.js +3 -3
  147. package/dist/es/components/cascader/Cascader.js +180 -183
  148. package/dist/es/components/cascader/tokens.js +2 -2
  149. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  150. package/dist/es/components/cell/Cell.js +71 -84
  151. package/dist/es/components/cell/CellGroup.js +16 -28
  152. package/dist/es/components/checkbox/Checkbox.js +140 -133
  153. package/dist/es/components/checkbox/CheckboxGroup.js +5 -36
  154. package/dist/es/components/checkbox/tokens.js +7 -10
  155. package/dist/es/components/circle/Circle.js +25 -23
  156. package/dist/es/components/collapse/Collapse.js +77 -92
  157. package/dist/es/components/config-provider/ConfigProvider.js +10 -3
  158. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  159. package/dist/es/components/config-provider/index.js +1 -0
  160. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  161. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  162. package/dist/es/components/config-provider/useDirection.js +3 -0
  163. package/dist/es/components/count-down/CountDown.js +23 -18
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -84
  165. package/dist/es/components/datetime-picker/tokens.js +14 -3
  166. package/dist/es/components/dialog/Dialog.js +154 -121
  167. package/dist/es/components/dialog/imperative.js +17 -30
  168. package/dist/es/components/divider/Divider.js +28 -29
  169. package/dist/es/components/empty/Empty.js +36 -39
  170. package/dist/es/components/error-boundary/ErrorBoundary.js +61 -0
  171. package/dist/es/components/error-boundary/index.js +1 -0
  172. package/dist/es/components/field/Field.js +109 -106
  173. package/dist/es/components/flex/Flex.js +18 -17
  174. package/dist/es/components/flex/FlexItem.js +27 -27
  175. package/dist/es/components/form/Form.js +143 -162
  176. package/dist/es/components/form/FormItem.js +68 -95
  177. package/dist/es/components/form/FormList.js +49 -37
  178. package/dist/es/components/form/tokens.js +6 -3
  179. package/dist/es/components/form/utils.js +15 -34
  180. package/dist/es/components/grid/Grid.js +30 -28
  181. package/dist/es/components/grid/GridItem.js +84 -84
  182. package/dist/es/components/image/Image.js +58 -62
  183. package/dist/es/components/image/tokens.js +2 -2
  184. package/dist/es/components/image-preview/ImagePreview.js +124 -112
  185. package/dist/es/components/image-preview/imperative.js +4 -13
  186. package/dist/es/components/index.js +3 -1
  187. package/dist/es/components/input/Input.js +31 -23
  188. package/dist/es/components/loading/Loading.js +16 -16
  189. package/dist/es/components/nav-bar/NavBar.js +68 -83
  190. package/dist/es/components/nav-bar/tokens.js +1 -3
  191. package/dist/es/components/notice-bar/NoticeBar.js +74 -76
  192. package/dist/es/components/notify/Notify.js +92 -87
  193. package/dist/es/components/notify/imperative.js +21 -44
  194. package/dist/es/components/notify/tokens.js +1 -5
  195. package/dist/es/components/number-keyboard/NumberKeyboard.js +187 -209
  196. package/dist/es/components/overlay/Overlay.js +36 -51
  197. package/dist/es/components/overlay/tokens.js +5 -3
  198. package/dist/es/components/password-input/PasswordInput.js +98 -79
  199. package/dist/es/components/picker/Picker.js +440 -421
  200. package/dist/es/components/picker/tokens.js +1 -1
  201. package/dist/es/components/popup/Popup.js +263 -292
  202. package/dist/es/components/portal/Portal.js +13 -29
  203. package/dist/es/components/portal/PortalHost.js +152 -234
  204. package/dist/es/components/progress/Progress.js +51 -48
  205. package/dist/es/components/radio/Radio.js +47 -44
  206. package/dist/es/components/radio/RadioGroup.js +10 -41
  207. package/dist/es/components/radio/tokens.js +7 -10
  208. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  209. package/dist/es/components/search/Search.js +52 -44
  210. package/dist/es/components/selector/Selector.js +14 -13
  211. package/dist/es/components/share-sheet/ShareSheet.js +162 -163
  212. package/dist/es/components/sidebar/Sidebar.js +41 -47
  213. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  214. package/dist/es/components/sidebar/SidebarItem.js +13 -15
  215. package/dist/es/components/sidebar/tokens.js +1 -3
  216. package/dist/es/components/skeleton/Skeleton.js +30 -37
  217. package/dist/es/components/skeleton/tokens.js +1 -2
  218. package/dist/es/components/slider/Slider.js +156 -134
  219. package/dist/es/components/space/Space.js +48 -71
  220. package/dist/es/components/stepper/Stepper.js +178 -156
  221. package/dist/es/components/swiper/Swiper.js +252 -254
  222. package/dist/es/components/swiper/SwiperPagIndicator.js +25 -27
  223. package/dist/es/components/swiper/tokens.js +10 -3
  224. package/dist/es/components/switch/Switch.js +13 -15
  225. package/dist/es/components/tabbar/Tabbar.js +36 -28
  226. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  227. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  228. package/dist/es/components/tabs/Tabs.js +286 -313
  229. package/dist/es/components/tag/Tag.js +49 -39
  230. package/dist/es/components/toast/Toast.js +93 -91
  231. package/dist/es/components/toast/imperative.js +16 -41
  232. package/dist/es/components/typography/Typography.js +3 -5
  233. package/dist/es/components/water-mark/WaterMark.js +32 -30
  234. package/dist/es/design-system/ThemeProvider.js +5 -11
  235. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  236. package/dist/es/design-system/presets.js +2 -3
  237. package/dist/es/design-system/tokens.js +1 -9
  238. package/dist/es/hooks/animation/index.js +2 -0
  239. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  240. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  241. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  242. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  243. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  244. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  245. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  246. package/dist/es/hooks/index.js +1 -0
  247. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  248. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  249. package/dist/es/hooks/useControllableValue.js +10 -21
  250. package/dist/es/hooks/useCountDown.js +14 -22
  251. package/dist/es/hooks/useHairline.js +16 -28
  252. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  253. package/dist/es/index.js +8 -1
  254. package/dist/es/platform/animation.js +9 -1
  255. package/dist/es/platform/measure.js +18 -36
  256. package/dist/es/utils/color.js +21 -35
  257. package/dist/es/utils/compare.js +7 -12
  258. package/dist/es/utils/createPlatformShadow.js +28 -39
  259. package/dist/es/utils/date.js +20 -50
  260. package/dist/es/utils/deepMerge.js +16 -26
  261. package/dist/es/utils/hairline.js +73 -65
  262. package/dist/es/utils/index.js +2 -0
  263. package/dist/es/utils/number.js +21 -29
  264. package/dist/es/utils/render.js +7 -0
  265. package/dist/es/utils/rtl.js +17 -0
  266. package/dist/es/utils/string.js +8 -25
  267. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  268. package/dist/types/components/area/Area.d.ts +1 -1
  269. package/dist/types/components/area/tokens.d.ts +4 -0
  270. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  271. package/dist/types/components/avatar/index.d.ts +1 -2
  272. package/dist/types/components/badge/Badge.d.ts +1 -1
  273. package/dist/types/components/button/Button.d.ts +1 -1
  274. package/dist/types/components/button/index.d.ts +1 -1
  275. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  276. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  277. package/dist/types/components/cell/Cell.d.ts +1 -1
  278. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  279. package/dist/types/components/cell/index.d.ts +2 -2
  280. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  281. package/dist/types/components/circle/Circle.d.ts +1 -1
  282. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  283. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  284. package/dist/types/components/config-provider/index.d.ts +2 -1
  285. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  286. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  287. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  288. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  289. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  290. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  291. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  292. package/dist/types/components/divider/Divider.d.ts +1 -1
  293. package/dist/types/components/empty/Empty.d.ts +1 -1
  294. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  295. package/dist/types/components/error-boundary/index.d.ts +2 -0
  296. package/dist/types/components/field/Field.d.ts +1 -1
  297. package/dist/types/components/flex/Flex.d.ts +1 -1
  298. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  299. package/dist/types/components/flex/index.d.ts +2 -2
  300. package/dist/types/components/form/Form.d.ts +1 -1
  301. package/dist/types/components/form/FormItem.d.ts +2 -1
  302. package/dist/types/components/form/index.d.ts +2 -2
  303. package/dist/types/components/form/tokens.d.ts +4 -0
  304. package/dist/types/components/grid/Grid.d.ts +1 -1
  305. package/dist/types/components/grid/GridItem.d.ts +1 -1
  306. package/dist/types/components/grid/index.d.ts +2 -2
  307. package/dist/types/components/image/Image.d.ts +1 -1
  308. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  309. package/dist/types/components/index.d.ts +4 -1
  310. package/dist/types/components/input/Input.d.ts +3 -3
  311. package/dist/types/components/loading/Loading.d.ts +1 -1
  312. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  313. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  314. package/dist/types/components/notify/Notify.d.ts +2 -2
  315. package/dist/types/components/notify/index.d.ts +1 -1
  316. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  317. package/dist/types/components/overlay/tokens.d.ts +3 -0
  318. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  319. package/dist/types/components/picker/Picker.d.ts +5 -5
  320. package/dist/types/components/popup/Popup.d.ts +3 -42
  321. package/dist/types/components/portal/Portal.d.ts +9 -6
  322. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  323. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  324. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  325. package/dist/types/components/search/Search.d.ts +1 -1
  326. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  327. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  328. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  329. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  330. package/dist/types/components/sidebar/index.d.ts +2 -2
  331. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  332. package/dist/types/components/slider/Slider.d.ts +1 -1
  333. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  334. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  335. package/dist/types/components/swiper/index.d.ts +1 -1
  336. package/dist/types/components/swiper/tokens.d.ts +8 -0
  337. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  338. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  339. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  340. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  341. package/dist/types/components/tabs/index.d.ts +1 -1
  342. package/dist/types/components/tag/Tag.d.ts +1 -1
  343. package/dist/types/components/toast/Toast.d.ts +2 -2
  344. package/dist/types/components/toast/index.d.ts +1 -1
  345. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  346. package/dist/types/design-system/tokens.d.ts +0 -1
  347. package/dist/types/hooks/animation/index.d.ts +3 -0
  348. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  349. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  350. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  351. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  352. package/dist/types/hooks/index.d.ts +1 -0
  353. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  354. package/dist/types/hooks/useHairline.d.ts +1 -1
  355. package/dist/types/index.d.ts +5 -0
  356. package/dist/types/platform/animation.d.ts +8 -0
  357. package/dist/types/platform/measure.d.ts +1 -1
  358. package/dist/types/utils/compare.d.ts +1 -1
  359. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  360. package/dist/types/utils/date.d.ts +2 -2
  361. package/dist/types/utils/hairline.d.ts +5 -10
  362. package/dist/types/utils/index.d.ts +2 -0
  363. package/dist/types/utils/number.d.ts +2 -2
  364. package/dist/types/utils/render.d.ts +5 -0
  365. package/dist/types/utils/rtl.d.ts +5 -0
  366. package/package.json +9 -2
@@ -12,60 +12,42 @@ function _react() {
12
12
  return data;
13
13
  }
14
14
  var _picker = _interopRequireDefault(require("../picker"));
15
+ var _tokens = require("./tokens");
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
18
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
18
- const compareCode = (a, b) => a < b ? -1 : a > b ? 1 : 0;
19
- const sortEntries = records => {
20
- if (!records) return [];
21
- return Object.entries(records).sort(([a], [b]) => compareCode(a, b));
22
- };
19
+ const sortEntries = record => record ? Object.entries(record).sort(([a], [b]) => a.localeCompare(b)) : [];
23
20
  const getProvinceCode = code => code.slice(0, 2);
24
21
  const getCityCode = code => code.slice(0, 4);
25
- const buildAreaColumns = (areaList, columnsNum = 3) => {
26
- const provinces = sortEntries(areaList.province_list);
27
- if (columnsNum === 1) {
28
- return provinces.map(([code, name]) => ({
22
+ const groupBy = (list, getKey) => {
23
+ const map = new Map();
24
+ sortEntries(list).forEach(([code, name]) => {
25
+ const key = getKey(code);
26
+ const array = map.get(key);
27
+ if (array) array.push({
29
28
  label: name,
30
29
  value: code
31
- }));
32
- }
33
- const citiesByProvince = new Map();
34
- sortEntries(areaList.city_list).forEach(([code, name]) => {
35
- const provinceKey = getProvinceCode(code);
36
- const option = {
30
+ });else map.set(key, [{
37
31
  label: name,
38
32
  value: code
39
- };
40
- const existing = citiesByProvince.get(provinceKey);
41
- if (existing) {
42
- existing.push(option);
43
- } else {
44
- citiesByProvince.set(provinceKey, [option]);
45
- }
33
+ }]);
46
34
  });
35
+ return map;
36
+ };
37
+ const buildAreaColumns = (areaList, columnsNum = 3) => {
38
+ const provinces = sortEntries(areaList.province_list);
39
+ if (columnsNum === 1) return provinces.map(([code, name]) => ({
40
+ label: name,
41
+ value: code
42
+ }));
43
+ const citiesByProvince = groupBy(areaList.city_list, getProvinceCode);
47
44
  if (columnsNum === 3) {
48
- const countiesByCity = new Map();
49
- sortEntries(areaList.county_list).forEach(([code, name]) => {
50
- const cityKey = getCityCode(code);
51
- const option = {
52
- label: name,
53
- value: code
54
- };
55
- const existing = countiesByCity.get(cityKey);
56
- if (existing) {
57
- existing.push(option);
58
- } else {
59
- countiesByCity.set(cityKey, [option]);
60
- }
61
- });
62
- citiesByProvince.forEach(cityOptions => {
63
- cityOptions.forEach(cityOption => {
64
- const cityKey = getCityCode(cityOption.value);
45
+ const countiesByCity = groupBy(areaList.county_list, getCityCode);
46
+ citiesByProvince.forEach(cityOption => {
47
+ cityOption.forEach(cityOption2 => {
48
+ const cityKey = getCityCode(cityOption2.value);
65
49
  const counties = countiesByCity.get(cityKey);
66
- if (counties && counties.length) {
67
- cityOption.children = counties;
68
- }
50
+ if (counties && counties.length) cityOption2.children = counties;
69
51
  });
70
52
  });
71
53
  }
@@ -76,39 +58,38 @@ const buildAreaColumns = (areaList, columnsNum = 3) => {
76
58
  };
77
59
  const provinceKey = getProvinceCode(code);
78
60
  const cities = citiesByProvince.get(provinceKey);
79
- if (cities && cities.length) {
80
- provinceOption.children = cities;
81
- }
61
+ if (cities && cities.length) provinceOption.children = cities;
82
62
  return provinceOption;
83
63
  });
84
64
  };
85
- const normalizeCascadeValue = (root, raw, depth) => {
86
- if (!raw) return raw;
87
- const input = Array.isArray(raw) ? raw.map(String) : [String(raw)];
65
+ const normalizeCascadeValue = (root, rawValue, depth) => {
66
+ if (!rawValue) return rawValue;
67
+ const inputArray = Array.isArray(rawValue) ? rawValue.map(String) : [String(rawValue)];
88
68
  const result = [];
89
69
  let options = root;
90
70
  for (let i = 0; i < depth; i += 1) {
91
71
  if (!options?.length) break;
92
- const wanted = input[i];
93
- const nextOption = options.find(o => String(o.value) === wanted) ?? options[0];
72
+ const wantedValue = inputArray[i];
73
+ const nextOption = options.find(option => String(option.value) === wantedValue) ?? options[0];
94
74
  if (!nextOption) break;
95
75
  result.push(String(nextOption.value));
96
76
  options = nextOption.children;
97
77
  }
98
78
  return result;
99
79
  };
100
- const Area = props => {
80
+ const AreaImpl = props => {
81
+ const tokens = (0, _tokens.useAreaTokens)();
101
82
  const {
102
83
  areaList,
103
- columnsNum = 3,
84
+ columnsNum: columnsNumProp = tokens.defaults.columnsNum,
104
85
  value,
105
86
  defaultValue,
106
87
  onChange,
107
88
  onConfirm,
108
- interactionMode = 'sync',
109
- ...pickerProps
89
+ interactionMode: interactionModeProp = tokens.defaults.interactionMode,
90
+ ...rest
110
91
  } = props;
111
- const resolvedColumnsNum = (0, _react().useMemo)(() => columnsNum === 1 || columnsNum === 2 || columnsNum === 3 ? columnsNum : 3, [columnsNum]);
92
+ const resolvedColumnsNum = (0, _react().useMemo)(() => columnsNumProp >= 1 && columnsNumProp <= 3 ? columnsNumProp : tokens.defaults.columnsNum, [columnsNumProp]);
112
93
  const {
113
94
  province_list,
114
95
  city_list,
@@ -119,22 +100,28 @@ const Area = props => {
119
100
  city_list,
120
101
  county_list
121
102
  }, resolvedColumnsNum), [city_list, county_list, province_list, resolvedColumnsNum]);
122
- const normalizedValue = (0, _react().useMemo)(() => value === undefined ? undefined : normalizeCascadeValue(columns, value, resolvedColumnsNum), [columns, resolvedColumnsNum, value]);
123
- const normalizedDefaultValue = (0, _react().useMemo)(() => defaultValue === undefined ? undefined : normalizeCascadeValue(columns, defaultValue, resolvedColumnsNum), [columns, defaultValue, resolvedColumnsNum]);
124
- const handleChange = (0, _react().useCallback)((values, options) => {
125
- onChange?.(values.map(String), options);
126
- }, [onChange]);
127
- const handleConfirm = (0, _react().useCallback)((values, options) => {
128
- onConfirm?.(values.map(String), options);
129
- }, [onConfirm]);
130
- return /*#__PURE__*/_react().default.createElement(_picker.default, _extends({}, pickerProps, {
103
+ const normalize = (0, _react().useCallback)(val => val === undefined ? undefined : normalizeCascadeValue(columns, val, resolvedColumnsNum), [columns, resolvedColumnsNum]);
104
+ const normalizedValue = (0, _react().useMemo)(() => normalize(value), [normalize, value]);
105
+ const normalizedDefaultValue = (0, _react().useMemo)(() => normalize(defaultValue), [normalize, defaultValue]);
106
+ const onChangeRef = (0, _react().useRef)(onChange);
107
+ onChangeRef.current = onChange;
108
+ const onConfirmRef = (0, _react().useRef)(onConfirm);
109
+ onConfirmRef.current = onConfirm;
110
+ const wrappedOnChange = (0, _react().useCallback)((values, options) => {
111
+ onChangeRef.current?.(values.map(String), options);
112
+ }, []);
113
+ const wrappedOnConfirm = (0, _react().useCallback)((values, options) => {
114
+ onConfirmRef.current?.(values.map(String), options);
115
+ }, []);
116
+ return /*#__PURE__*/_react().default.createElement(_picker.default, _extends({}, rest, {
131
117
  columns: columns,
132
- interactionMode: interactionMode,
118
+ interactionMode: interactionModeProp,
133
119
  value: normalizedValue,
134
120
  defaultValue: normalizedDefaultValue,
135
- onChange: onChange ? handleChange : undefined,
136
- onConfirm: onConfirm ? handleConfirm : undefined
121
+ onChange: onChange ? wrappedOnChange : undefined,
122
+ onConfirm: onConfirm ? wrappedOnConfirm : undefined
137
123
  }));
138
124
  };
125
+ const Area = /*#__PURE__*/_react().default.memo(AreaImpl);
139
126
  Area.displayName = 'Area';
140
127
  var _default = exports.default = Area;
@@ -5,7 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useAreaTokens = void 0;
7
7
  var _designSystem = require("../../design-system");
8
- const createAreaTokens = _foundations => {
9
- return {};
10
- };
8
+ const createAreaTokens = _foundations => ({
9
+ defaults: {
10
+ columnsNum: 3,
11
+ interactionMode: 'sync'
12
+ }
13
+ });
11
14
  const useAreaTokens = exports.useAreaTokens = (0, _designSystem.createComponentTokensHook)('area', createAreaTokens);
@@ -29,13 +29,12 @@ const AvatarFallbackText = exports.AvatarFallbackText = /*#__PURE__*/_react().de
29
29
  style
30
30
  }, ref) => {
31
31
  const tokens = (0, _tokens.useAvatarTokens)();
32
- const resolvedStyle = _reactNative().StyleSheet.flatten([tokens.layout.text, {
33
- color: color ?? tokens.colors.text,
34
- fontWeight: tokens.typography.fontWeight
35
- }, style]);
36
32
  return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
37
33
  ref: ref,
38
- style: resolvedStyle,
34
+ style: _reactNative().StyleSheet.flatten([tokens.layout.text, {
35
+ color: color ?? tokens.colors.text,
36
+ fontWeight: tokens.typography.fontWeight
37
+ }, style]),
39
38
  numberOfLines: 1
40
39
  }, children);
41
40
  });
@@ -56,17 +55,17 @@ const AvatarImage = exports.AvatarImage = /*#__PURE__*/_react().default.forwardR
56
55
  }));
57
56
  });
58
57
  AvatarImage.displayName = 'Avatar.Image';
59
- const Avatar = exports.Avatar = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
58
+ const AvatarImpl = (props, ref) => {
60
59
  const {
61
60
  src,
62
61
  source,
63
62
  icon,
64
63
  text,
65
- size,
66
- width,
67
- height,
68
- shape,
69
- fit,
64
+ size: sizeProp,
65
+ width: widthProp,
66
+ height: heightProp,
67
+ shape: shapeProp,
68
+ fit: fitProp,
70
69
  color,
71
70
  backgroundColor,
72
71
  style,
@@ -74,36 +73,35 @@ const Avatar = exports.Avatar = /*#__PURE__*/_react().default.forwardRef((props,
74
73
  contentStyle,
75
74
  children,
76
75
  tokensOverride,
77
- ...pressableProps
76
+ ...rest
78
77
  } = props;
79
78
  const tokens = (0, _tokens.useAvatarTokens)(tokensOverride);
80
- const resolvedSize = size ?? tokens.defaults.size;
81
- const resolvedShape = shape ?? tokens.defaults.shape;
79
+ const resolvedSize = sizeProp ?? tokens.defaults.size;
80
+ const resolvedShape = shapeProp ?? tokens.defaults.shape;
82
81
  const baseSize = (0, _utils.isNumber)(resolvedSize) ? resolvedSize : tokens.sizing.sizes[resolvedSize];
83
- const avatarWidth = width ?? baseSize;
84
- const avatarHeight = height ?? baseSize;
82
+ const avatarWidth = widthProp ?? baseSize;
83
+ const avatarHeight = heightProp ?? baseSize;
85
84
  const borderRadius = resolvedShape === 'circle' ? Math.min(avatarWidth, avatarHeight) / 2 : Math.max(tokens.radii.squareMin, Math.min(avatarWidth, avatarHeight) / tokens.radii.squareDivisor);
86
85
  const transparentContainerStyle = {
87
86
  backgroundColor: tokens.colors.transparent
88
87
  };
89
- const fallbackText = text ? text.trim().slice(0, 2).toUpperCase() : undefined;
90
88
  const fallbackContent = icon ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
91
89
  style: [tokens.layout.iconWrapper, {
92
90
  width: Math.min(avatarWidth, tokens.sizing.iconMaxSize),
93
91
  height: Math.min(avatarHeight, tokens.sizing.iconMaxSize)
94
92
  }, contentStyle]
95
- }, icon) : fallbackText && /*#__PURE__*/_react().default.createElement(AvatarFallbackText, {
93
+ }, icon) : text && /*#__PURE__*/_react().default.createElement(AvatarFallbackText, {
96
94
  color: color,
97
95
  style: [{
98
96
  fontSize: Math.min(avatarWidth, avatarHeight) * tokens.typography.fallbackTextScale
99
97
  }, textStyle]
100
- }, fallbackText);
98
+ }, text.trim().slice(0, 2).toUpperCase());
101
99
  const content = children ?? (src || source ? /*#__PURE__*/_react().default.createElement(AvatarImage, {
102
100
  src: src,
103
101
  source: source,
104
102
  containerStyle: transparentContainerStyle,
105
103
  style: tokens.layout.image,
106
- fit: fit ?? 'cover',
104
+ fit: fitProp ?? 'cover',
107
105
  loadingText: null,
108
106
  loadingSize: tokens.sizing.loadingSize,
109
107
  showError: true,
@@ -111,13 +109,17 @@ const Avatar = exports.Avatar = /*#__PURE__*/_react().default.forwardRef((props,
111
109
  }) : fallbackContent);
112
110
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
113
111
  ref: ref,
112
+ accessibilityRole: "image",
113
+ accessibilityLabel: text ?? (src ? 'avatar' : undefined),
114
114
  style: [tokens.layout.container, {
115
115
  width: avatarWidth,
116
116
  height: avatarHeight,
117
117
  borderRadius,
118
118
  backgroundColor: backgroundColor ?? tokens.colors.background
119
119
  }, style]
120
- }, pressableProps), content);
121
- });
122
- Avatar.displayName = 'Avatar';
120
+ }, rest), content);
121
+ };
122
+ const AvatarForwardRef = /*#__PURE__*/_react().default.forwardRef(AvatarImpl);
123
+ AvatarForwardRef.displayName = 'Avatar';
124
+ const Avatar = exports.Avatar = /*#__PURE__*/_react().default.memo(AvatarForwardRef);
123
125
  var _default = exports.default = Avatar;
@@ -22,7 +22,7 @@ var _utils = require("../../utils");
22
22
  var _tokens = require("./tokens");
23
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
24
  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); }
25
- const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
25
+ const BadgeImpl = (props, ref) => {
26
26
  const {
27
27
  children,
28
28
  content,
@@ -31,9 +31,9 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
31
31
  dot: dotProp,
32
32
  max,
33
33
  offset,
34
- showZero,
34
+ showZero: showZeroProp,
35
35
  badgeStyle,
36
- textStyle: userTextStyle,
36
+ textStyle,
37
37
  onPress,
38
38
  style,
39
39
  tokensOverride,
@@ -41,51 +41,49 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
41
41
  } = props;
42
42
  const tokens = (0, _tokens.useBadgeTokens)(tokensOverride);
43
43
  const dot = dotProp ?? tokens.defaults.dot;
44
- const resolvedShowZero = showZero ?? tokens.defaults.showZero;
44
+ const showZero = showZeroProp ?? tokens.defaults.showZero;
45
45
  const hasChildren = _react().default.Children.count(children) > 0;
46
46
  const {
47
47
  visible,
48
48
  formattedContent
49
49
  } = (0, _react().useMemo)(() => {
50
50
  const numericContent = (0, _utils.isNumericLike)(content) ? Number(content) : null;
51
- const shouldHide = numericContent === 0 && !resolvedShowZero;
51
+ const shouldHide = numericContent === 0 && !showZero;
52
52
  const isVisible = dot || (0, _utils.isRenderable)(content) && !shouldHide;
53
53
  if (!isVisible || dot) return {
54
54
  visible: isVisible,
55
55
  formattedContent: null
56
56
  };
57
57
  const numericMax = (0, _utils.isNumericLike)(max) ? Number(max) : null;
58
- const finalContent = numericContent !== null && numericMax !== null && numericContent > numericMax ? `${numericMax}+` : content;
58
+ const formatted = numericContent !== null && numericMax !== null && numericContent > numericMax ? `${numericMax}+` : content;
59
59
  return {
60
60
  visible: true,
61
- formattedContent: finalContent
61
+ formattedContent: formatted
62
62
  };
63
- }, [content, dot, max, resolvedShowZero]);
63
+ }, [content, dot, max, showZero]);
64
64
  const [size, setSize] = (0, _react().useState)({
65
65
  width: 0,
66
66
  height: 0
67
67
  });
68
- const handleLayout = (0, _react().useCallback)(e => {
68
+ const handleLayout = (0, _react().useCallback)(event => {
69
69
  const {
70
70
  width,
71
71
  height
72
- } = e.nativeEvent.layout;
73
- if (width !== size.width || height !== size.height) {
74
- setSize({
75
- width,
76
- height
77
- });
78
- }
79
- }, [size.width, size.height]);
72
+ } = event.nativeEvent.layout;
73
+ setSize(prev => prev.width === width && prev.height === height ? prev : {
74
+ width,
75
+ height
76
+ });
77
+ }, []);
80
78
  const transformStyle = (0, _react().useMemo)(() => {
81
79
  if (!hasChildren) return undefined;
82
80
  if (dot) {
83
- const half = tokens.sizing.dotSize / 2;
81
+ const halfSize = tokens.sizing.dotSize / 2;
84
82
  return {
85
83
  transform: [{
86
- translateX: half
84
+ translateX: halfSize
87
85
  }, {
88
- translateY: -half
86
+ translateY: -halfSize
89
87
  }]
90
88
  };
91
89
  }
@@ -100,7 +98,7 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
100
98
  }]
101
99
  };
102
100
  }, [dot, hasChildren, size.height, size.width, tokens.sizing.dotSize]);
103
- const baseBadgeStyle = (0, _react().useMemo)(() => dot ? {
101
+ const badgeBoxStyle = (0, _react().useMemo)(() => dot ? {
104
102
  width: tokens.sizing.dotSize,
105
103
  height: tokens.sizing.dotSize,
106
104
  borderRadius: tokens.radii.dot,
@@ -115,13 +113,13 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
115
113
  borderColor: tokens.colors.border,
116
114
  backgroundColor: color ?? tokens.colors.background
117
115
  }, [color, dot, tokens.borders.width, tokens.colors.background, tokens.colors.border, tokens.colors.dot, tokens.radii.badge, tokens.radii.dot, tokens.sizing.dotSize, tokens.sizing.height, tokens.sizing.minWidth, tokens.sizing.paddingHorizontal, tokens.sizing.paddingVertical]);
118
- const mergedTextStyle = (0, _react().useMemo)(() => [tokens.layout.text, {
116
+ const mergedTextStyle = [tokens.layout.text, {
119
117
  color: textColor ?? tokens.colors.text,
120
118
  fontSize: tokens.typography.fontSize,
121
119
  lineHeight: tokens.typography.lineHeight,
122
120
  fontFamily: tokens.typography.fontFamily,
123
121
  fontWeight: tokens.typography.fontWeight
124
- }, userTextStyle], [textColor, tokens.colors.text, tokens.layout.text, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.fontWeight, tokens.typography.lineHeight, userTextStyle]);
122
+ }, textStyle];
125
123
  const offsetStyle = (0, _react().useMemo)(() => {
126
124
  if (!offset) return undefined;
127
125
  const [x, y] = offset;
@@ -136,14 +134,14 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
136
134
  const badgeElement = !visible ? null : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
137
135
  pointerEvents: hasChildren ? 'none' : 'auto',
138
136
  onLayout: hasChildren && !dot ? handleLayout : undefined,
139
- style: [hasChildren ? tokens.layout.badgeAbsolute : tokens.layout.badgeStandalone, baseBadgeStyle, transformStyle, offsetStyle, badgeStyle, !hasChildren ? style : undefined]
140
- }, !dot && (/*#__PURE__*/_react().default.isValidElement(formattedContent) ? formattedContent : /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
141
- style: mergedTextStyle
142
- }, formattedContent)));
137
+ style: [hasChildren ? tokens.layout.badgeAbsolute : tokens.layout.badgeStandalone, badgeBoxStyle, transformStyle, offsetStyle, badgeStyle, !hasChildren ? style : undefined]
138
+ }, !dot && (0, _utils.renderTextOrNode)(formattedContent, mergedTextStyle));
139
+ const accessibilityLabel = visible ? dot ? 'has new content' : `${formattedContent}` : undefined;
143
140
  if (hasChildren) {
144
141
  return onPress ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
145
142
  ref: ref,
146
143
  onPress: onPress,
144
+ accessibilityLabel: accessibilityLabel,
147
145
  style: ({
148
146
  pressed
149
147
  }) => [tokens.layout.wrapper, style, pressed && {
@@ -163,9 +161,11 @@ const Badge = exports.Badge = /*#__PURE__*/_react().default.forwardRef((props, r
163
161
  }) => [tokens.layout.pressableStandalone, pressed && {
164
162
  opacity: tokens.defaults.pressedOpacity
165
163
  }]
166
- }, rest), badgeElement) : (/*#__PURE__*/_react().default.cloneElement(badgeElement, {
164
+ }, rest), badgeElement) : /*#__PURE__*/_react().default.cloneElement(badgeElement, {
167
165
  ref,
168
166
  ...rest
169
- }));
170
- });
171
- Badge.displayName = 'Badge';
167
+ });
168
+ };
169
+ const BadgeForwardRef = /*#__PURE__*/_react().default.forwardRef(BadgeImpl);
170
+ BadgeForwardRef.displayName = 'Badge';
171
+ const Badge = exports.Badge = /*#__PURE__*/_react().default.memo(BadgeForwardRef);
@@ -5,6 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useBadgeTokens = void 0;
7
7
  var _designSystem = require("../../design-system");
8
+ const centered = {
9
+ alignItems: 'center',
10
+ justifyContent: 'center'
11
+ };
8
12
  const createBadgeTokens = ({
9
13
  palette,
10
14
  spacing,
@@ -28,15 +32,13 @@ const createBadgeTokens = ({
28
32
  position: 'absolute',
29
33
  top: 0,
30
34
  right: 0,
31
- alignItems: 'center',
32
- justifyContent: 'center',
35
+ ...centered,
33
36
  zIndex: 1
34
37
  },
35
38
  badgeStandalone: {
36
39
  alignSelf: 'flex-start',
37
40
  flexDirection: 'row',
38
- alignItems: 'center',
39
- justifyContent: 'center'
41
+ ...centered
40
42
  },
41
43
  pressableStandalone: {
42
44
  alignSelf: 'flex-start',
@@ -46,10 +48,6 @@ const createBadgeTokens = ({
46
48
  textAlign: 'center',
47
49
  includeFontPadding: false,
48
50
  textAlignVertical: 'center'
49
- },
50
- icon: {
51
- alignItems: 'center',
52
- justifyContent: 'center'
53
51
  }
54
52
  },
55
53
  colors: {