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
@@ -1,11 +1,13 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
2
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
3
- import { ActivityIndicator, Animated, Easing, Pressable, StyleSheet, Text, View } from 'react-native';
3
+ import { ActivityIndicator, Animated, Easing, Pressable, StyleSheet, View } from 'react-native';
4
4
  import { useLocale } from '../config-provider/useLocale';
5
5
  import { nativeDriverEnabled } from '../../platform';
6
+ import { useReducedMotion } from '../../hooks/animation';
6
7
  import { createHairlineView } from '../../utils/hairline';
7
8
  import { isPromiseLike } from '../../utils/promise';
8
9
  import { isNumber, isValidNode } from '../../utils/validate';
10
+ import { renderTextOrNode } from '../../utils';
9
11
  import { Close } from 'react-native-system-icon';
10
12
  import Button from '../button';
11
13
  import Popup from '../popup';
@@ -20,8 +22,8 @@ const ActionButton = props => {
20
22
  disabled,
21
23
  onPress
22
24
  } = props;
23
- const textColor = color ?? tokens.colors.confirm;
24
- const dividerStyle = dividerPosition === 'none' ? null : [styles.actionButtonDivider, {
25
+ const txtColor = color ?? tokens.colors.confirm;
26
+ const divStyle = dividerPosition === 'none' ? null : [S.btnDiv, {
25
27
  width: 0
26
28
  }, createHairlineView({
27
29
  position: dividerPosition,
@@ -35,26 +37,25 @@ const ActionButton = props => {
35
37
  disabled: disabled || loading,
36
38
  style: ({
37
39
  pressed
38
- }) => [styles.actionButton, {
40
+ }) => [S.btn, {
39
41
  height: tokens.sizes.actionHeight,
40
42
  opacity: pressed && !disabled && !loading ? 0.8 : 1
41
43
  }],
42
44
  onPress: disabled || loading ? undefined : onPress
43
- }, dividerStyle && /*#__PURE__*/React.createElement(View, {
44
- style: dividerStyle,
45
+ }, divStyle && /*#__PURE__*/React.createElement(View, {
46
+ style: divStyle,
45
47
  pointerEvents: "none"
46
48
  }), loading ? /*#__PURE__*/React.createElement(ActivityIndicator, {
47
49
  size: "small",
48
- color: textColor
49
- }) : /*#__PURE__*/React.isValidElement(text) ? text : /*#__PURE__*/React.createElement(Text, {
50
- style: {
51
- color: textColor,
52
- fontSize: tokens.typography.actionSize,
53
- fontWeight: tokens.typography.actionWeight
54
- }
55
- }, text ?? ''));
50
+ color: txtColor
51
+ }) : renderTextOrNode(text ?? '', {
52
+ color: txtColor,
53
+ fontFamily: tokens.typography.fontFamily,
54
+ fontSize: tokens.typography.actionSize,
55
+ fontWeight: tokens.typography.actionWeight
56
+ }));
56
57
  };
57
- export const Dialog = props => {
58
+ const DialogImpl = props => {
58
59
  const locale = useLocale();
59
60
  const {
60
61
  visible,
@@ -97,65 +98,94 @@ export const Dialog = props => {
97
98
  ...rest
98
99
  } = props;
99
100
  const tokens = useDialogTokens(tokensOverride);
100
- const hasTitle = isValidNode(title);
101
- const hasMessage = isValidNode(message);
102
- const hasChildren = isValidNode(children);
103
- const hasContent = hasMessage || hasChildren;
104
- const hasFooterActions = showCancelButton || showConfirmButton;
105
- const isRoundTheme = theme === 'round-button';
106
- const cancelLoading = cancelProps?.loading;
107
- const confirmLoading = confirmProps?.loading;
108
- const cancelText = cancelButtonText ?? locale.cancel;
109
- const confirmText = confirmButtonText ?? locale.confirm;
110
- const actionSeqRef = useRef(0);
111
- const runBeforeClose = action => {
112
- if (!beforeClose) return true;
101
+ const reducedMotion = useReducedMotion();
102
+ const hTitle = isValidNode(title);
103
+ const hMsg = isValidNode(message);
104
+ const hChildren = isValidNode(children);
105
+ const hContent = hMsg || hChildren;
106
+ const hFooterActions = showCancelButton || showConfirmButton;
107
+ const isRound = theme === 'round-button';
108
+ const cancelLoad = cancelProps?.loading;
109
+ const confirmLoad = confirmProps?.loading;
110
+ const cancelTxt = cancelButtonText ?? locale.cancel;
111
+ const confirmTxt = confirmButtonText ?? locale.confirm;
112
+ const seqRef = useRef(0);
113
+ const beforeCloseRef = useRef(beforeClose);
114
+ beforeCloseRef.current = beforeClose;
115
+ const onCloseRef = useRef(onClose);
116
+ onCloseRef.current = onClose;
117
+ const onCancelRef = useRef(onCancel);
118
+ onCancelRef.current = onCancel;
119
+ const onConfirmRef = useRef(onConfirm);
120
+ onConfirmRef.current = onConfirm;
121
+ const onClickCloseIconRef = useRef(onClickCloseIcon);
122
+ onClickCloseIconRef.current = onClickCloseIcon;
123
+ const cancelLoadRef = useRef(cancelLoad);
124
+ cancelLoadRef.current = cancelLoad;
125
+ const confirmLoadRef = useRef(confirmLoad);
126
+ confirmLoadRef.current = confirmLoad;
127
+ const run = useCallback((action, handler) => {
128
+ seqRef.current += 1;
129
+ const seq = seqRef.current;
130
+ const bc = beforeCloseRef.current;
131
+ if (!bc) {
132
+ handler?.();
133
+ return;
134
+ }
135
+ ;
136
+ let result;
113
137
  try {
114
- return beforeClose(action);
138
+ result = bc(action);
115
139
  } catch {
116
- return true;
140
+ handler?.();
141
+ return;
117
142
  }
118
- };
119
- const runAction = (action, handler) => {
120
- actionSeqRef.current += 1;
121
- const seq = actionSeqRef.current;
122
- const result = runBeforeClose(action);
143
+ ;
123
144
  if (result === false) return;
124
145
  if (isPromiseLike(result)) {
125
146
  void result.then(resolved => {
126
147
  if (resolved === false) return;
127
- if (actionSeqRef.current !== seq) return;
148
+ if (seqRef.current !== seq) return;
128
149
  handler?.();
129
150
  }).catch(() => {
130
- if (actionSeqRef.current !== seq) return;
151
+ if (seqRef.current !== seq) return;
131
152
  handler?.();
132
153
  });
133
154
  return;
134
155
  }
156
+ ;
135
157
  handler?.();
136
- };
158
+ }, []);
137
159
  const handleCloseIcon = useCallback(() => {
138
- onClickCloseIcon?.();
139
- runAction('close', onClose);
140
- }, [onClickCloseIcon, onClose]);
160
+ onClickCloseIconRef.current?.();
161
+ run('close', () => onCloseRef.current?.());
162
+ }, [run]);
141
163
  const handleCancel = useCallback(() => {
142
- if (cancelLoading) return;
143
- runAction('cancel', onCancel);
144
- }, [cancelLoading, onCancel]);
164
+ if (cancelLoadRef.current) return;
165
+ run('cancel', () => onCancelRef.current?.());
166
+ }, [run]);
145
167
  const handleConfirm = useCallback(() => {
146
- if (confirmLoading) return;
147
- runAction('confirm', onConfirm);
148
- }, [confirmLoading, onConfirm]);
168
+ if (confirmLoadRef.current) return;
169
+ run('confirm', () => onConfirmRef.current?.());
170
+ }, [run]);
149
171
  const scaleAnim = useRef(new Animated.Value(0.7)).current;
172
+ const scaleRef = useRef(null);
150
173
  useEffect(() => {
174
+ scaleRef.current?.stop();
151
175
  scaleAnim.setValue(visible ? 0.7 : 1);
152
- Animated.timing(scaleAnim, {
176
+ const anim = Animated.timing(scaleAnim, {
153
177
  toValue: visible ? 1 : 0.9,
154
- duration: 300,
178
+ duration: reducedMotion ? 0 : 300,
155
179
  easing: visible ? Easing.out(Easing.cubic) : Easing.in(Easing.cubic),
156
- useNativeDriver: nativeDriverEnabled
157
- }).start();
158
- }, [scaleAnim, visible]);
180
+ useNativeDriver: nativeDriverEnabled,
181
+ isInteraction: false
182
+ });
183
+ scaleRef.current = anim;
184
+ anim.start();
185
+ }, [scaleAnim, visible, reducedMotion]);
186
+ useEffect(() => () => {
187
+ scaleRef.current?.stop();
188
+ }, []);
159
189
  const widthStyle = useMemo(() => width ? isNumber(width) ? {
160
190
  width
161
191
  } : {
@@ -164,109 +194,120 @@ export const Dialog = props => {
164
194
  width: '90%',
165
195
  maxWidth: tokens.sizes.maxWidth
166
196
  }, [tokens.sizes.maxWidth, width]);
167
- const titleWrapperStyle = useMemo(() => hasTitle ? [styles.titleWrapper, {
168
- paddingTop: hasContent ? tokens.spacing.titlePaddingTop : tokens.spacing.titleIsolatedPadding,
169
- paddingBottom: hasContent ? 0 : tokens.spacing.titleIsolatedPadding,
170
- paddingHorizontal: hasContent ? tokens.spacing.paddingHorizontal : 0,
171
- marginBottom: hasContent ? tokens.spacing.titleGap : 0
172
- }] : null, [hasContent, hasTitle, tokens.spacing.paddingHorizontal, tokens.spacing.titleGap, tokens.spacing.titleIsolatedPadding, tokens.spacing.titlePaddingTop]);
173
- const titleTextStyle = useMemo(() => hasTitle ? [styles.title, {
197
+ const titleWrapStyle = useMemo(() => hTitle ? [S.titleWrap, {
198
+ paddingTop: hContent ? tokens.spacing.titlePaddingTop : tokens.spacing.titleIsolatedPadding,
199
+ paddingBottom: hContent ? 0 : tokens.spacing.titleIsolatedPadding,
200
+ paddingHorizontal: hContent ? tokens.spacing.paddingHorizontal : 0,
201
+ marginBottom: hContent ? tokens.spacing.titleGap : 0
202
+ }] : null, [hContent, hTitle, tokens.spacing.paddingHorizontal, tokens.spacing.titleGap, tokens.spacing.titleIsolatedPadding, tokens.spacing.titlePaddingTop]);
203
+ const titleTxtStyle = useMemo(() => hTitle ? [S.title, {
174
204
  color: tokens.colors.title,
205
+ fontFamily: tokens.typography.fontFamily,
175
206
  fontSize: tokens.typography.titleSize,
176
207
  lineHeight: tokens.typography.titleLineHeight,
177
208
  fontWeight: tokens.typography.titleWeight
178
- }, titleStyle] : null, [hasTitle, titleStyle, tokens.colors.title, tokens.typography.titleLineHeight, tokens.typography.titleSize, tokens.typography.titleWeight]);
179
- const messageTextStyle = useMemo(() => [styles.message, {
180
- color: isRoundTheme ? tokens.colors.title : tokens.colors.message,
209
+ }, titleStyle] : null, [hTitle, titleStyle, tokens.colors.title, tokens.typography.fontFamily, tokens.typography.titleLineHeight, tokens.typography.titleSize, tokens.typography.titleWeight]);
210
+ const msgTxtStyle = useMemo(() => [S.msg, {
211
+ color: isRound ? tokens.colors.title : tokens.colors.message,
212
+ fontFamily: tokens.typography.fontFamily,
181
213
  fontSize: tokens.typography.messageSize,
182
214
  lineHeight: tokens.typography.messageLineHeight,
183
215
  textAlign: messageAlign
184
- }, messageStyle], [isRoundTheme, messageAlign, messageStyle, tokens.colors.message, tokens.colors.title, tokens.typography.messageLineHeight, tokens.typography.messageSize]);
185
- const messageContentStyle = useMemo(() => !hasChildren ? {
216
+ }, messageStyle], [isRound, messageAlign, messageStyle, tokens.colors.message, tokens.colors.title, tokens.typography.fontFamily, tokens.typography.messageLineHeight, tokens.typography.messageSize]);
217
+ const msgContentStyle = useMemo(() => !hChildren ? {
186
218
  alignItems: messageAlign === 'center' ? 'center' : messageAlign === 'left' ? 'flex-start' : 'flex-end'
187
- } : null, [hasChildren, messageAlign]);
188
- const messageWrapperStyle = useMemo(() => [styles.messageWrapper, {
189
- paddingTop: hasTitle ? tokens.spacing.messagePaddingTop : tokens.spacing.messagePadding,
190
- paddingBottom: isRoundTheme ? tokens.spacing.roundFooterPadding : tokens.spacing.messagePadding,
219
+ } : null, [hChildren, messageAlign]);
220
+ const msgWrapStyle = useMemo(() => [S.msgWrap, {
221
+ paddingTop: hTitle ? tokens.spacing.messagePaddingTop : tokens.spacing.messagePadding,
222
+ paddingBottom: isRound ? tokens.spacing.roundFooterPadding : tokens.spacing.messagePadding,
191
223
  paddingHorizontal: tokens.spacing.messagePaddingHorizontal
192
- }], [hasTitle, isRoundTheme, tokens.spacing.messagePadding, tokens.spacing.messagePaddingHorizontal, tokens.spacing.messagePaddingTop, tokens.spacing.roundFooterPadding]);
193
- const footerBorderTopStyle = useMemo(() => [styles.footerBorderTop, createHairlineView({
224
+ }], [hTitle, isRound, tokens.spacing.messagePadding, tokens.spacing.messagePaddingHorizontal, tokens.spacing.messagePaddingTop, tokens.spacing.roundFooterPadding]);
225
+ const footerBorderStyle = useMemo(() => [S.footerBorder, createHairlineView({
194
226
  position: 'top',
195
227
  color: tokens.colors.divider,
196
228
  left: 0,
197
229
  right: 0,
198
230
  top: 0
199
231
  })], [tokens.colors.divider]);
200
- const mergedCloseOnOverlayPress = closeOnOverlayPress || closeOnClickOverlay;
201
- const animatedStyle = useMemo(() => ({
232
+ const mergeOverlay = closeOnOverlayPress || closeOnClickOverlay;
233
+ const animStyle = useMemo(() => ({
202
234
  transform: [{
203
235
  scale: scaleAnim
204
236
  }]
205
237
  }), [scaleAnim]);
206
- const roundFooterStyle = useMemo(() => [styles.roundFooter, {
238
+ const roundFooterStyle = useMemo(() => [S.roundFooter, {
207
239
  paddingTop: tokens.spacing.messagePaddingTop,
208
240
  paddingHorizontal: tokens.spacing.messagePaddingHorizontal,
209
241
  paddingBottom: tokens.spacing.roundFooterPadding
210
242
  }], [tokens.spacing.messagePaddingHorizontal, tokens.spacing.messagePaddingTop, tokens.spacing.roundFooterPadding]);
211
- const roundFooterNode = useMemo(() => hasFooterActions ? /*#__PURE__*/React.createElement(View, {
243
+ const popupBc = useCallback(() => {
244
+ const bc = beforeCloseRef.current;
245
+ if (!bc) return true;
246
+ try {
247
+ return bc('close');
248
+ } catch {
249
+ return true;
250
+ }
251
+ }, []);
252
+ const roundFooterNode = useMemo(() => hFooterActions && /*#__PURE__*/React.createElement(View, {
212
253
  style: roundFooterStyle
213
- }, showCancelButton ? /*#__PURE__*/React.createElement(View, {
214
- style: [styles.roundButtonWrapper, showConfirmButton && {
254
+ }, showCancelButton && /*#__PURE__*/React.createElement(View, {
255
+ style: [S.roundBtnWrap, showConfirmButton && {
215
256
  marginRight: tokens.spacing.roundFooterGap
216
257
  }]
217
258
  }, /*#__PURE__*/React.createElement(Button, {
218
259
  block: true,
219
260
  round: true,
220
261
  type: "warning",
221
- text: cancelText,
262
+ text: cancelTxt,
222
263
  color: cancelButtonColor,
223
- loading: cancelLoading,
264
+ loading: cancelLoad,
224
265
  disabled: cancelProps?.disabled,
225
266
  onPress: handleCancel,
226
267
  style: {
227
268
  minHeight: tokens.sizes.roundButtonHeight
228
269
  }
229
- })) : null, showConfirmButton ? /*#__PURE__*/React.createElement(View, {
230
- style: [styles.roundButtonWrapper, showCancelButton && {
270
+ })), showConfirmButton && /*#__PURE__*/React.createElement(View, {
271
+ style: [S.roundBtnWrap, showCancelButton && {
231
272
  marginLeft: tokens.spacing.roundFooterGap
232
273
  }]
233
274
  }, /*#__PURE__*/React.createElement(Button, {
234
275
  block: true,
235
276
  round: true,
236
277
  type: "danger",
237
- text: confirmText,
278
+ text: confirmTxt,
238
279
  color: confirmButtonColor,
239
- loading: confirmLoading,
280
+ loading: confirmLoad,
240
281
  disabled: confirmProps?.disabled,
241
282
  onPress: handleConfirm,
242
283
  style: {
243
284
  minHeight: tokens.sizes.roundButtonHeight
244
285
  }
245
- })) : null) : null, [cancelButtonColor, cancelLoading, cancelProps?.disabled, cancelText, confirmButtonColor, confirmLoading, confirmProps?.disabled, confirmText, handleCancel, handleConfirm, hasFooterActions, roundFooterStyle, showCancelButton, showConfirmButton, tokens.sizes.roundButtonHeight, tokens.spacing.roundFooterGap]);
246
- const defaultFooterNode = useMemo(() => hasFooterActions ? /*#__PURE__*/React.createElement(View, {
247
- style: styles.footer
286
+ }))), [cancelButtonColor, cancelLoad, cancelProps?.disabled, cancelTxt, confirmButtonColor, confirmLoad, confirmProps?.disabled, confirmTxt, handleCancel, handleConfirm, hFooterActions, roundFooterStyle, showCancelButton, showConfirmButton, tokens.sizes.roundButtonHeight, tokens.spacing.roundFooterGap]);
287
+ const defaultFooterNode = useMemo(() => hFooterActions && /*#__PURE__*/React.createElement(View, {
288
+ style: S.footer
248
289
  }, /*#__PURE__*/React.createElement(View, {
249
- style: footerBorderTopStyle,
290
+ style: footerBorderStyle,
250
291
  pointerEvents: "none"
251
- }), showCancelButton ? /*#__PURE__*/React.createElement(ActionButton, {
292
+ }), showCancelButton && /*#__PURE__*/React.createElement(ActionButton, {
252
293
  tokens: tokens,
253
- text: cancelText,
294
+ text: cancelTxt,
254
295
  color: cancelButtonColor ?? tokens.colors.cancel,
255
296
  dividerPosition: "none",
256
- loading: cancelLoading,
297
+ loading: cancelLoad,
257
298
  disabled: cancelProps?.disabled,
258
299
  onPress: handleCancel
259
- }) : null, showConfirmButton ? /*#__PURE__*/React.createElement(ActionButton, {
300
+ }), showConfirmButton && /*#__PURE__*/React.createElement(ActionButton, {
260
301
  tokens: tokens,
261
- text: confirmText,
302
+ text: confirmTxt,
262
303
  color: confirmButtonColor ?? tokens.colors.confirm,
263
304
  dividerPosition: showCancelButton ? 'left' : 'none',
264
- loading: confirmLoading,
305
+ loading: confirmLoad,
265
306
  disabled: confirmProps?.disabled,
266
307
  onPress: handleConfirm
267
- }) : null) : null, [cancelButtonColor, cancelLoading, cancelProps?.disabled, cancelText, confirmButtonColor, confirmLoading, confirmProps?.disabled, confirmText, footerBorderTopStyle, handleCancel, handleConfirm, hasFooterActions, showCancelButton, showConfirmButton, tokens]);
268
- const footerNode = useMemo(() => footer ?? (isRoundTheme ? roundFooterNode : defaultFooterNode), [defaultFooterNode, footer, isRoundTheme, roundFooterNode]);
269
- const popupStyleMemo = useMemo(() => [{
308
+ })), [cancelButtonColor, cancelLoad, cancelProps?.disabled, cancelTxt, confirmButtonColor, confirmLoad, confirmProps?.disabled, confirmTxt, footerBorderStyle, handleCancel, handleConfirm, hFooterActions, showCancelButton, showConfirmButton, tokens]);
309
+ const footerNode = useMemo(() => footer ?? (isRound ? roundFooterNode : defaultFooterNode), [defaultFooterNode, footer, isRound, roundFooterNode]);
310
+ const popupStyle = useMemo(() => [{
270
311
  backgroundColor: tokens.colors.background,
271
312
  borderRadius: tokens.sizes.borderRadius,
272
313
  padding: 0
@@ -280,15 +321,17 @@ export const Dialog = props => {
280
321
  overlayTestID: overlayTestID,
281
322
  closeOnBackPress: closeOnBackPress,
282
323
  closeOnPopstate: closeOnPopstate,
283
- closeOnClickOverlay: mergedCloseOnOverlayPress,
324
+ closeOnClickOverlay: mergeOverlay,
284
325
  onClickOverlay: onClickOverlay,
285
- beforeClose: () => runBeforeClose('close'),
326
+ beforeClose: popupBc,
286
327
  onClose: onClose,
287
328
  onClosed: onClosed,
288
- contentAnimationStyle: animatedStyle,
289
- style: popupStyleMemo
290
- }, rest), closeable ? /*#__PURE__*/React.createElement(Pressable, {
291
- style: [styles.closeIcon, {
329
+ contentAnimationStyle: animStyle,
330
+ style: popupStyle,
331
+ accessibilityRole: 'alertdialog',
332
+ accessibilityLabel: typeof title === 'string' ? title : undefined
333
+ }, rest), closeable && /*#__PURE__*/React.createElement(Pressable, {
334
+ style: [S.closeIcon, {
292
335
  top: tokens.spacing.paddingTop / 2,
293
336
  right: tokens.spacing.paddingHorizontal / 2,
294
337
  padding: tokens.spacing.closeIconPadding
@@ -304,20 +347,16 @@ export const Dialog = props => {
304
347
  size: tokens.sizes.closeSize,
305
348
  fill: tokens.colors.closeIcon,
306
349
  color: tokens.colors.closeIcon
307
- })) : null, hasTitle ? /*#__PURE__*/React.createElement(View, {
308
- style: titleWrapperStyle
309
- }, /*#__PURE__*/React.isValidElement(title) ? title : /*#__PURE__*/React.createElement(Text, {
310
- style: titleTextStyle
311
- }, title)) : null, hasContent ? /*#__PURE__*/React.createElement(View, {
312
- style: [styles.content, messageContentStyle, contentStyle]
313
- }, hasChildren ? children : /*#__PURE__*/React.createElement(View, {
314
- style: messageWrapperStyle
315
- }, /*#__PURE__*/React.isValidElement(message) ? message : /*#__PURE__*/React.createElement(Text, {
316
- style: messageTextStyle
317
- }, message))) : null, footerNode);
350
+ })), hTitle && /*#__PURE__*/React.createElement(View, {
351
+ style: titleWrapStyle
352
+ }, renderTextOrNode(title, titleTxtStyle)), hContent && /*#__PURE__*/React.createElement(View, {
353
+ style: [S.content, msgContentStyle, contentStyle]
354
+ }, hChildren ? children : /*#__PURE__*/React.createElement(View, {
355
+ style: msgWrapStyle
356
+ }, renderTextOrNode(message, msgTxtStyle))), footerNode);
318
357
  };
319
- const styles = StyleSheet.create({
320
- titleWrapper: {
358
+ const S = StyleSheet.create({
359
+ titleWrap: {
321
360
  alignItems: 'center'
322
361
  },
323
362
  title: {
@@ -326,37 +365,37 @@ const styles = StyleSheet.create({
326
365
  content: {
327
366
  width: '100%'
328
367
  },
329
- message: {
368
+ msg: {
330
369
  textAlign: 'center'
331
370
  },
332
371
  footer: {
333
372
  flexDirection: 'row',
334
373
  position: 'relative'
335
374
  },
336
- footerBorderTop: {
375
+ footerBorder: {
337
376
  position: 'absolute',
338
377
  top: 0,
339
378
  left: 0,
340
379
  right: 0,
341
380
  height: 0
342
381
  },
343
- actionButton: {
382
+ btn: {
344
383
  flex: 1,
345
384
  alignItems: 'center',
346
385
  justifyContent: 'center'
347
386
  },
348
- actionButtonDivider: {
387
+ btnDiv: {
349
388
  position: 'absolute',
350
389
  pointerEvents: 'none'
351
390
  },
352
- messageWrapper: {
391
+ msgWrap: {
353
392
  width: '100%'
354
393
  },
355
394
  roundFooter: {
356
395
  width: '100%',
357
396
  flexDirection: 'row'
358
397
  },
359
- roundButtonWrapper: {
398
+ roundBtnWrap: {
360
399
  flex: 1
361
400
  },
362
401
  closeIcon: {
@@ -364,5 +403,5 @@ const styles = StyleSheet.create({
364
403
  zIndex: 1
365
404
  }
366
405
  });
367
- Dialog.displayName = 'Dialog';
406
+ export const Dialog = /*#__PURE__*/React.memo(DialogImpl);
368
407
  export default Dialog;
@@ -40,18 +40,15 @@ const requestClose = key => {
40
40
  Portal.remove(key);
41
41
  return;
42
42
  }
43
+ ;
43
44
  if (entry.close) {
44
45
  entry.close();
45
46
  return;
46
47
  }
48
+ ;
47
49
  Portal.remove(key);
48
50
  unregisterEntry(key);
49
51
  };
50
- const getRegistryItems = () => Array.from(dialogRegistry.values()).map(item => ({
51
- key: item.key,
52
- options: item.options,
53
- meta: item.meta
54
- }));
55
52
  const DialogPortalInstance = ({
56
53
  options,
57
54
  meta,
@@ -65,47 +62,29 @@ const DialogPortalInstance = ({
65
62
  if (!portalKeyRef.current) return;
66
63
  attachCloser(portalKeyRef.current, close);
67
64
  return () => {
68
- const entry = dialogRegistry.get(portalKeyRef.current ?? -1);
69
- if (entry && entry.close === close) {
70
- entry.close = undefined;
71
- }
65
+ const e = dialogRegistry.get(portalKeyRef.current ?? -1);
66
+ if (e && e.close === close) e.close = undefined;
72
67
  };
73
68
  }, [close, portalKeyRef]);
74
- useEffect(() => {
75
- return () => {
76
- if (portalKeyRef.current) {
77
- unregisterEntry(portalKeyRef.current);
78
- }
79
- };
69
+ useEffect(() => () => {
70
+ if (portalKeyRef.current) unregisterEntry(portalKeyRef.current);
80
71
  }, [portalKeyRef]);
81
72
  const handleCancel = useCallback(async () => {
82
- const allowed = await runHook(() => options.beforeClose?.('cancel'));
83
- if (!allowed) return;
84
- const shouldClose = await runHook(options.onCancel);
85
- if (!shouldClose) return;
86
- if (meta.mode === 'confirm') {
87
- meta.resolve?.(false);
88
- }
73
+ if (!(await runHook(() => options.beforeClose?.('cancel')))) return;
74
+ if (!(await runHook(options.onCancel))) return;
75
+ if (meta.mode === 'confirm') meta.resolve?.(false);
89
76
  close();
90
77
  }, [close, meta, options.beforeClose, options.onCancel]);
91
78
  const handleConfirm = useCallback(async () => {
92
- const allowed = await runHook(() => options.beforeClose?.('confirm'));
93
- if (!allowed) return;
94
- const shouldClose = await runHook(options.onConfirm);
95
- if (!shouldClose) return;
96
- if (meta.mode === 'alert' || meta.mode === 'confirm') {
97
- meta.resolve?.(true);
98
- }
79
+ if (!(await runHook(() => options.beforeClose?.('confirm')))) return;
80
+ if (!(await runHook(options.onConfirm))) return;
81
+ if (meta.mode === 'alert' || meta.mode === 'confirm') meta.resolve?.(true);
99
82
  close();
100
83
  }, [close, meta, options.beforeClose, options.onConfirm]);
101
84
  const handleClose = useCallback(async () => {
102
- const allowed = await runHook(() => options.beforeClose?.('close'));
103
- if (!allowed) return;
104
- const shouldClose = await runHook(options.onClose);
105
- if (!shouldClose) return;
106
- if (meta.mode === 'confirm') {
107
- meta.resolve?.(false);
108
- }
85
+ if (!(await runHook(() => options.beforeClose?.('close')))) return;
86
+ if (!(await runHook(options.onClose))) return;
87
+ if (meta.mode === 'confirm') meta.resolve?.(false);
109
88
  close();
110
89
  }, [close, meta, options.beforeClose, options.onClose]);
111
90
  const handleClosed = useCallback(() => {
@@ -137,18 +116,14 @@ const mountImperativeDialog = (options, meta) => {
137
116
  registerEntry(key, options, meta);
138
117
  return () => requestClose(key);
139
118
  };
140
- const mergeWithDefaults = (mode, options = {}) => {
141
- return deepMerge(deepMerge(defaultOptionsStore.default, defaultOptionsStore[mode]), options);
142
- };
119
+ const mergeWithDefaults = (mode, options = {}) => deepMerge(deepMerge(defaultOptionsStore.default, defaultOptionsStore[mode]), options);
143
120
  const normalizeOptions = (mode, options = {}) => {
144
121
  const merged = mergeWithDefaults(mode, options);
145
122
  const normalized = {
146
123
  ...merged,
147
124
  visible: true
148
125
  };
149
- if (isUndefined(normalized.showConfirmButton)) {
150
- normalized.showConfirmButton = true;
151
- }
126
+ if (isUndefined(normalized.showConfirmButton)) normalized.showConfirmButton = true;
152
127
  return normalized;
153
128
  };
154
129
  const setDefaultOptions = (targetOrOptions, maybeOptions) => {
@@ -156,6 +131,7 @@ const setDefaultOptions = (targetOrOptions, maybeOptions) => {
156
131
  defaultOptionsStore[targetOrOptions] = deepMerge(defaultOptionsStore[targetOrOptions], maybeOptions ?? {});
157
132
  return;
158
133
  }
134
+ ;
159
135
  defaultOptionsStore.default = deepMerge(defaultOptionsStore.default, targetOrOptions);
160
136
  };
161
137
  const resetDefaultOptions = target => {
@@ -163,6 +139,7 @@ const resetDefaultOptions = target => {
163
139
  defaultOptionsStore[target] = {};
164
140
  return;
165
141
  }
142
+ ;
166
143
  defaultOptionsStore.default = {};
167
144
  defaultOptionsStore.show = {};
168
145
  defaultOptionsStore.alert = {};
@@ -199,6 +176,10 @@ export const DialogImperative = {
199
176
  resetDefaultOptions
200
177
  };
201
178
  export const __DIALOG_STORE__ = {
202
- getItems: getRegistryItems,
179
+ getItems: () => Array.from(dialogRegistry.values()).map(item => ({
180
+ key: item.key,
181
+ options: item.options,
182
+ meta: item.meta
183
+ })),
203
184
  close: key => requestClose(key)
204
185
  };
@@ -43,6 +43,7 @@ export const createDialogTokens = foundations => {
43
43
  roundButtonHeight: 40
44
44
  },
45
45
  typography: {
46
+ fontFamily: typography.fontFamily,
46
47
  titleSize: fontSize.md,
47
48
  titleLineHeight: fontSize.md * typography.lineHeightMultiplier,
48
49
  titleWeight: typography.weight.semiBold,