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
@@ -20,13 +20,16 @@ function _reactNative() {
20
20
  }
21
21
  var _hooks = require("../../hooks");
22
22
  var _utils = require("../../utils");
23
+ var _useDirection = require("../config-provider/useDirection");
23
24
  var _tokens = require("./tokens");
25
+ var _hairline = require("../../utils/hairline");
24
26
  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); }
25
27
  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); }
26
28
  const LONG_PRESS_DELAY = 600;
27
29
  const LONG_PRESS_INTERVAL = 100;
28
- const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, ref) => {
29
- const tokens = (0, _tokens.useStepperTokens)(p.tokensOverride);
30
+ const StepperImpl = (props, ref) => {
31
+ const tokens = (0, _tokens.useStepperTokens)(props.tokensOverride);
32
+ const layoutDir = (0, _useDirection.useDirection)();
30
33
  const {
31
34
  min,
32
35
  max,
@@ -59,50 +62,66 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
59
62
  inputStyle,
60
63
  buttonStyle,
61
64
  style,
62
- ...rest
63
- } = p;
64
- const [changing, setChanging] = (0, _react().useState)(false);
65
+ ...restProps
66
+ } = props;
67
+ const [isChanging, setIsChanging] = (0, _react().useState)(false);
65
68
  const changingRef = (0, _react().useRef)(false);
66
- const decimalLength = (0, _utils.parseDecimalLength)(decimalLengthProp);
67
- const resolvedStepRaw = Number(step ?? 1);
68
- const resolvedStep = (0, _utils.isFiniteNumber)(resolvedStepRaw) && resolvedStepRaw > 0 ? resolvedStepRaw : 1;
69
- const resolvedButtonSize = Math.max(0, (0, _utils.parseNumber)(buttonSize, tokens.defaults.buttonSize));
69
+ const onPlusRef = (0, _react().useRef)(onPlus);
70
+ const onMinusRef = (0, _react().useRef)(onMinus);
71
+ const onOverlimitRef = (0, _react().useRef)(onOverlimit);
72
+ const onFocusRef = (0, _react().useRef)(onFocus);
73
+ const onBlurRef = (0, _react().useRef)(onBlur);
74
+ const onClickRef = (0, _react().useRef)(onClick);
75
+ const valueRef = (0, _react().useRef)(null);
76
+ const inputRef = (0, _react().useRef)(null);
77
+ const inputValueRef = (0, _react().useRef)('');
78
+ const inputPropsRef = (0, _react().useRef)(inputProps);
79
+ const longPressRef = (0, _react().useRef)({
80
+ hadLongPress: false
81
+ });
82
+ onPlusRef.current = onPlus;
83
+ onMinusRef.current = onMinus;
84
+ onOverlimitRef.current = onOverlimit;
85
+ onFocusRef.current = onFocus;
86
+ onBlurRef.current = onBlur;
87
+ onClickRef.current = onClick;
88
+ inputPropsRef.current = inputProps;
89
+ const decimalLen = (0, _utils.parseDecimalLength)(decimalLengthProp);
90
+ const stepRaw = Number(step ?? 1);
91
+ const stepSize = (0, _utils.isFiniteNumber)(stepRaw) && stepRaw > 0 ? stepRaw : 1;
92
+ const resolvedBtnSize = Math.max(0, (0, _utils.parseNumber)(buttonSize, tokens.defaults.buttonSize));
70
93
  const resolvedInputWidth = Math.max(0, (0, _utils.parseNumber)(inputWidth, tokens.defaults.inputWidth));
71
- const resolvedDefaultValue = (0, _react().useMemo)(() => {
72
- const raw = p.defaultValue;
94
+ const defaultVal = (0, _react().useMemo)(() => {
95
+ const raw = props.defaultValue;
73
96
  if (raw === null) return null;
74
97
  const base = (0, _utils.isFiniteNumber)(raw) ? raw : 0;
75
- const formatted = (0, _utils.formatNumber)(base, integer, decimalLength);
98
+ const formatted = (0, _utils.formatNumber)(base, integer, decimalLen);
76
99
  return autoFixed ? (0, _utils.clampValue)(formatted, min, max) : formatted;
77
- }, [autoFixed, decimalLength, integer, max, min, p.defaultValue]);
100
+ }, [autoFixed, decimalLen, integer, max, min, props.defaultValue]);
78
101
  const [value, triggerChange] = (0, _hooks.useControllableValue)({
79
- ...p,
80
- defaultValue: resolvedDefaultValue
102
+ ...props,
103
+ defaultValue: defaultVal
81
104
  }, {
82
- defaultValue: resolvedDefaultValue
105
+ defaultValue: defaultVal
83
106
  });
84
- const valueRef = (0, _react().useRef)(value ?? null);
85
107
  (0, _react().useEffect)(() => {
86
108
  valueRef.current = value ?? null;
87
109
  }, [value]);
88
- const inputRef = (0, _react().useRef)(null);
89
110
  (0, _react().useImperativeHandle)(ref, () => ({
90
111
  focus: () => inputRef.current?.focus(),
91
112
  blur: () => inputRef.current?.blur()
92
113
  }));
93
- const [hasFocus, setHasFocus] = (0, _react().useState)(false);
94
- const [inputValue, setInputValue] = (0, _react().useState)(() => (0, _utils.numberToString)(value, decimalLength));
95
- const inputValueRef = (0, _react().useRef)(inputValue);
96
- const setInputText = (0, _react().useCallback)(text => {
114
+ const [isFocused, setIsFocused] = (0, _react().useState)(false);
115
+ const [inputText, setInputTextState] = (0, _react().useState)(() => (0, _utils.numberToString)(value, decimalLen));
116
+ const updateInputText = (0, _react().useCallback)(text => {
97
117
  inputValueRef.current = text;
98
- setInputValue(text);
118
+ setInputTextState(text);
99
119
  }, []);
100
120
  (0, _react().useEffect)(() => {
101
- if (!hasFocus) {
102
- const nextText = (0, _utils.numberToString)(value, decimalLength);
103
- setInputText(nextText);
121
+ if (!isFocused) {
122
+ updateInputText((0, _utils.numberToString)(value, decimalLen));
104
123
  }
105
- }, [decimalLength, hasFocus, setInputText, value]);
124
+ }, [decimalLen, isFocused, updateInputText, value]);
106
125
  const getCurrentNumber = (0, _react().useCallback)(() => {
107
126
  const current = valueRef.current;
108
127
  if ((0, _utils.isFiniteNumber)(current)) return current;
@@ -113,15 +132,11 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
113
132
  if (type === 'plus' && disablePlus) return true;
114
133
  if (type === 'minus' && disableMinus) return true;
115
134
  const current = getCurrentNumber();
116
- if (type === 'plus' && (0, _utils.isFiniteNumber)(max) && current >= max) {
117
- return true;
118
- }
119
- if (type === 'minus' && (0, _utils.isFiniteNumber)(min) && current <= min) {
120
- return true;
121
- }
135
+ if (type === 'plus' && (0, _utils.isFiniteNumber)(max) && current >= max) return true;
136
+ if (type === 'minus' && (0, _utils.isFiniteNumber)(min) && current <= min) return true;
122
137
  return false;
123
138
  }, [disableMinus, disablePlus, disabled, getCurrentNumber, max, min]);
124
- const setValue = (0, _react().useCallback)(next => {
139
+ const commitValue = (0, _react().useCallback)(next => {
125
140
  const prev = valueRef.current ?? null;
126
141
  if (Object.is(prev, next)) return false;
127
142
  valueRef.current = next;
@@ -130,93 +145,87 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
130
145
  });
131
146
  return true;
132
147
  }, [name, triggerChange]);
133
- const applyNextValue = (0, _react().useCallback)(nextRaw => {
134
- const formatted = (0, _utils.formatNumber)(nextRaw, integer, decimalLength);
148
+ const normalizeNumber = (0, _react().useCallback)(nextRaw => {
149
+ const formatted = (0, _utils.formatNumber)(nextRaw, integer, decimalLen);
135
150
  return autoFixed ? (0, _utils.clampValue)(formatted, min, max) : formatted;
136
- }, [autoFixed, decimalLength, integer, max, min]);
137
- const performValueChange = (0, _react().useCallback)((next, committed) => {
138
- if (changingRef.current) {
139
- return 'noop';
140
- }
151
+ }, [autoFixed, decimalLen, integer, max, min]);
152
+ const processValueChange = (0, _react().useCallback)((next, committed) => {
153
+ if (changingRef.current) return 'noop';
141
154
  const commit = () => {
142
- const didChange = setValue(next);
155
+ const didChange = commitValue(next);
143
156
  if (!didChange) return 'noop';
144
- setInputText((0, _utils.numberToString)(next, decimalLength));
157
+ updateInputText((0, _utils.numberToString)(next, decimalLen));
145
158
  committed?.(next);
146
159
  return 'changed';
147
160
  };
148
- if (!beforeChange) {
149
- return commit();
150
- }
161
+ if (!beforeChange) return commit();
151
162
  try {
152
163
  const result = beforeChange(next);
153
164
  if ((0, _utils.isPromiseLike)(result)) {
154
165
  changingRef.current = true;
155
- setChanging(true);
166
+ setIsChanging(true);
156
167
  result.then(allowed => {
157
168
  if (allowed === false) {
158
- setInputText((0, _utils.numberToString)(valueRef.current, decimalLength));
169
+ updateInputText((0, _utils.numberToString)(valueRef.current, decimalLen));
159
170
  return;
160
171
  }
172
+ ;
161
173
  commit();
162
- }).catch(() => {
163
- commit();
164
- }).finally(() => {
174
+ }).catch(() => commit()).finally(() => {
165
175
  changingRef.current = false;
166
- setChanging(false);
176
+ setIsChanging(false);
167
177
  });
168
178
  return 'pending';
169
179
  }
180
+ ;
170
181
  if (result === false) {
171
- setInputText((0, _utils.numberToString)(valueRef.current, decimalLength));
182
+ updateInputText((0, _utils.numberToString)(valueRef.current, decimalLen));
172
183
  return 'noop';
173
184
  }
185
+ ;
174
186
  return commit();
175
187
  } catch {
176
188
  return commit();
177
189
  }
178
- }, [beforeChange, decimalLength, setInputText, setValue]);
190
+ }, [beforeChange, decimalLen, updateInputText, commitValue]);
179
191
  const stepOnce = (0, _react().useCallback)((type, event, options) => {
180
- if (changingRef.current) {
181
- return 'noop';
182
- }
192
+ if (changingRef.current) return 'noop';
183
193
  const emitOverlimit = options?.emitOverlimit ?? true;
184
- const emitButtonCallbacks = options?.emitButtonCallbacks ?? Boolean(event);
194
+ const emitCallbacks = options?.emitButtonCallbacks ?? Boolean(event);
185
195
  if (isActionDisabled(type)) {
186
- if (emitOverlimit) onOverlimit?.(type);
196
+ if (emitOverlimit) onOverlimitRef.current?.(type);
187
197
  return 'overlimit';
188
198
  }
199
+ ;
189
200
  const current = getCurrentNumber();
190
- const diff = type === 'plus' ? resolvedStep : -resolvedStep;
191
- const next = applyNextValue((0, _utils.addNumber)(current, diff));
192
- return performValueChange(next, committedValue => {
193
- if (!emitButtonCallbacks || !event) return;
201
+ const diff = type === 'plus' ? stepSize : -stepSize;
202
+ const next = normalizeNumber((0, _utils.addNumber)(current, diff));
203
+ return processValueChange(next, committedValue => {
204
+ if (!emitCallbacks || !event) return;
194
205
  if (type === 'plus') {
195
- onPlus?.(event, committedValue);
206
+ onPlusRef.current?.(event, committedValue);
196
207
  } else {
197
- onMinus?.(event, committedValue);
208
+ onMinusRef.current?.(event, committedValue);
198
209
  }
199
210
  });
200
- }, [applyNextValue, getCurrentNumber, isActionDisabled, onMinus, onOverlimit, onPlus, performValueChange, resolvedStep]);
201
- const longPressRef = (0, _react().useRef)({
202
- hadLongPress: false
203
- });
211
+ }, [normalizeNumber, getCurrentNumber, isActionDisabled, processValueChange, stepSize]);
204
212
  const clearLongPress = (0, _react().useCallback)(() => {
205
213
  if (longPressRef.current.delay) {
206
214
  clearTimeout(longPressRef.current.delay);
207
215
  longPressRef.current.delay = undefined;
208
216
  }
217
+ ;
209
218
  if (longPressRef.current.interval) {
210
219
  clearInterval(longPressRef.current.interval);
211
220
  longPressRef.current.interval = undefined;
212
221
  }
213
222
  }, []);
214
- (0, _react().useEffect)(() => clearLongPress, [clearLongPress]);
223
+ (0, _react().useEffect)(() => clearLongPress(), [clearLongPress]);
215
224
  (0, _react().useEffect)(() => {
216
- if (disabled || changing || !longPress) {
225
+ if (disabled || isChanging || !longPress) {
217
226
  clearLongPress();
218
227
  }
219
- }, [changing, clearLongPress, disabled, longPress]);
228
+ }, [isChanging, clearLongPress, disabled, longPress]);
220
229
  const startLongPress = (0, _react().useCallback)(type => {
221
230
  if (!longPress) return;
222
231
  if (changingRef.current) return;
@@ -233,6 +242,7 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
233
242
  clearLongPress();
234
243
  return;
235
244
  }
245
+ ;
236
246
  longPressRef.current.interval = setInterval(() => {
237
247
  const result = stepOnce(type, undefined, {
238
248
  emitOverlimit: true,
@@ -244,14 +254,13 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
244
254
  }, LONG_PRESS_INTERVAL);
245
255
  }, LONG_PRESS_DELAY);
246
256
  }, [clearLongPress, isActionDisabled, longPress, stepOnce]);
247
- const handlePressOut = (0, _react().useCallback)(() => {
248
- clearLongPress();
249
- }, [clearLongPress]);
257
+ const handlePressOut = (0, _react().useCallback)(() => clearLongPress(), [clearLongPress]);
250
258
  const handleButtonPress = (0, _react().useCallback)((type, event) => {
251
259
  if (longPressRef.current.hadLongPress) {
252
260
  longPressRef.current.hadLongPress = false;
253
261
  return;
254
262
  }
263
+ ;
255
264
  longPressRef.current.hadLongPress = false;
256
265
  stepOnce(type, event, {
257
266
  emitOverlimit: true,
@@ -261,122 +270,127 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
261
270
  const currentForCompare = (0, _utils.isFiniteNumber)(value) ? value : 0;
262
271
  const minNumber = (0, _utils.isFiniteNumber)(min) ? min : undefined;
263
272
  const maxNumber = (0, _utils.isFiniteNumber)(max) ? max : undefined;
264
- const disabledForAll = disabled || changing;
265
- const minusDisabled = disabledForAll || disableMinus || minNumber !== undefined && currentForCompare <= minNumber;
266
- const plusDisabled = disabledForAll || disablePlus || maxNumber !== undefined && currentForCompare >= maxNumber;
273
+ const isDisabledAll = disabled || isChanging;
274
+ const isMinusDisabled = isDisabledAll || disableMinus || minNumber != null && currentForCompare <= minNumber;
275
+ const isPlusDisabled = isDisabledAll || disablePlus || maxNumber != null && currentForCompare >= maxNumber;
267
276
  const radius = tokens.radii.default;
268
- const buttonBaseStyle = (0, _react().useMemo)(() => ({
269
- width: resolvedButtonSize,
270
- height: resolvedButtonSize
271
- }), [resolvedButtonSize]);
272
- const inputBoxStyle = (0, _react().useMemo)(() => ({
277
+ const btnSizeStyle = (0, _react().useMemo)(() => ({
278
+ width: resolvedBtnSize,
279
+ height: resolvedBtnSize
280
+ }), [resolvedBtnSize]);
281
+ const inputSizeStyle = (0, _react().useMemo)(() => ({
273
282
  width: resolvedInputWidth,
274
- height: resolvedButtonSize,
283
+ height: resolvedBtnSize,
275
284
  marginHorizontal: tokens.spacing.gap
276
- }), [resolvedButtonSize, resolvedInputWidth, tokens.spacing.gap]);
285
+ }), [resolvedBtnSize, resolvedInputWidth, tokens.spacing.gap]);
277
286
  const getButtonStyle = (0, _react().useCallback)((type, state) => {
278
287
  const isPlus = type === 'plus';
279
- const disabledState = isPlus ? plusDisabled : minusDisabled;
288
+ const isDisabled = isPlus ? isPlusDisabled : isMinusDisabled;
280
289
  if (theme === 'round') {
281
- const base = [styles.button, buttonBaseStyle, {
282
- borderRadius: resolvedButtonSize / 2,
283
- opacity: disabledState ? tokens.opacity.roundDisabled : 1
290
+ const base = [S.btn, btnSizeStyle, {
291
+ borderRadius: resolvedBtnSize / 2,
292
+ opacity: isDisabled ? tokens.opacity.roundDisabled : 1
284
293
  }];
285
294
  if (isPlus) {
286
295
  return [...base, {
287
296
  backgroundColor: tokens.colors.roundTheme,
288
- ...(state.pressed && !disabledState && {
297
+ ...(state.pressed && !isDisabled && {
289
298
  opacity: tokens.opacity.pressed
290
299
  })
291
300
  }, buttonStyle];
292
301
  }
302
+ ;
293
303
  return [...base, {
294
304
  backgroundColor: tokens.colors.roundThemeBackground,
295
- borderWidth: _reactNative().StyleSheet.hairlineWidth,
296
- borderColor: tokens.colors.roundTheme,
297
- ...(state.pressed && !disabledState && {
305
+ ...(state.pressed && !isDisabled && {
298
306
  opacity: tokens.opacity.pressed
299
307
  })
300
308
  }, buttonStyle];
301
309
  }
302
- const cornerStyle = type === 'minus' ? {
310
+ ;
311
+ const isLeading = type === 'minus' !== (layoutDir === 'rtl');
312
+ const cornerStyle = isLeading ? {
303
313
  borderTopLeftRadius: radius,
304
314
  borderBottomLeftRadius: radius
305
315
  } : {
306
316
  borderTopRightRadius: radius,
307
317
  borderBottomRightRadius: radius
308
318
  };
309
- const backgroundColor = disabledState ? tokens.colors.buttonDisabledBackground : state.pressed ? tokens.colors.active : tokens.colors.background;
310
- return [styles.button, buttonBaseStyle, cornerStyle, {
311
- backgroundColor
319
+ const bgColor = isDisabled ? tokens.colors.buttonDisabledBackground : state.pressed ? tokens.colors.active : tokens.colors.background;
320
+ return [S.btn, btnSizeStyle, cornerStyle, {
321
+ backgroundColor: bgColor
312
322
  }, buttonStyle];
313
- }, [buttonBaseStyle, buttonStyle, minusDisabled, plusDisabled, radius, resolvedButtonSize, theme, tokens.colors.active, tokens.colors.background, tokens.colors.buttonDisabledBackground, tokens.colors.roundTheme, tokens.colors.roundThemeBackground, tokens.opacity.pressed, tokens.opacity.roundDisabled]);
323
+ }, [btnSizeStyle, buttonStyle, isMinusDisabled, isPlusDisabled, radius, resolvedBtnSize, theme, layoutDir, tokens.colors.active, tokens.colors.background, tokens.colors.buttonDisabledBackground, tokens.colors.roundTheme, tokens.colors.roundThemeBackground, tokens.opacity.pressed, tokens.opacity.roundDisabled]);
314
324
  const getButtonTextStyle = (0, _react().useCallback)(type => {
315
325
  const isPlus = type === 'plus';
316
- const disabledState = isPlus ? plusDisabled : minusDisabled;
326
+ const isDisabled = isPlus ? isPlusDisabled : isMinusDisabled;
317
327
  if (theme === 'round') {
318
328
  const color = isPlus ? tokens.colors.roundThemeText : tokens.colors.roundTheme;
319
- return [styles.buttonText, {
329
+ return [S.btnTxt, {
320
330
  color,
321
331
  fontSize: tokens.typography.fontSize,
322
332
  fontWeight: tokens.typography.fontWeight
323
333
  }];
324
334
  }
325
- return [styles.buttonText, {
326
- color: disabledState ? tokens.colors.buttonDisabledIcon : tokens.colors.buttonIcon,
335
+ ;
336
+ return [S.btnTxt, {
337
+ color: isDisabled ? tokens.colors.buttonDisabledIcon : tokens.colors.buttonIcon,
327
338
  fontSize: tokens.typography.fontSize,
328
339
  fontWeight: tokens.typography.fontWeight
329
340
  }];
330
- }, [minusDisabled, plusDisabled, theme, tokens.colors.buttonDisabledIcon, tokens.colors.buttonIcon, tokens.colors.roundTheme, tokens.colors.roundThemeText, tokens.typography.fontSize, tokens.typography.fontWeight]);
341
+ }, [isMinusDisabled, isPlusDisabled, theme, tokens.colors.buttonDisabledIcon, tokens.colors.buttonIcon, tokens.colors.roundTheme, tokens.colors.roundThemeText, tokens.typography.fontSize, tokens.typography.fontWeight]);
331
342
  const handleChangeText = (0, _react().useCallback)(text => {
332
343
  if (disableInput || disabled || changingRef.current) return;
333
- setInputText(text);
334
- inputProps?.onChangeText?.(text);
344
+ updateInputText(text);
345
+ inputPropsRef.current?.onChangeText?.(text);
335
346
  const trimmed = text.trim();
336
347
  if (trimmed === '') {
337
- performValueChange(allowEmpty ? null : resolvedDefaultValue);
348
+ processValueChange(allowEmpty ? null : defaultVal);
338
349
  return;
339
350
  }
340
- const numeric = Number.parseFloat(trimmed);
341
- if (!Number.isFinite(numeric)) return;
342
- performValueChange(applyNextValue(numeric));
343
- }, [allowEmpty, applyNextValue, changingRef, disableInput, disabled, inputProps, performValueChange, resolvedDefaultValue, setInputText]);
351
+ ;
352
+ const num = Number.parseFloat(trimmed);
353
+ if (!Number.isFinite(num)) return;
354
+ processValueChange(normalizeNumber(num));
355
+ }, [allowEmpty, normalizeNumber, changingRef, disableInput, disabled, inputPropsRef, processValueChange, defaultVal, updateInputText]);
344
356
  const handleFocus = (0, _react().useCallback)(event => {
345
357
  if (disableInput) {
346
358
  inputRef.current?.blur();
347
359
  return;
348
360
  }
349
- setHasFocus(true);
350
- onFocus?.(event);
351
- inputProps?.onFocus?.(event);
352
- }, [disableInput, inputProps, onFocus]);
361
+ ;
362
+ setIsFocused(true);
363
+ onFocusRef.current?.(event);
364
+ inputPropsRef.current?.onFocus?.(event);
365
+ }, [disableInput]);
353
366
  const handleBlur = (0, _react().useCallback)(event => {
354
- setHasFocus(false);
367
+ setIsFocused(false);
355
368
  if (!changingRef.current) {
356
369
  const trimmed = inputValueRef.current.trim();
357
370
  if (trimmed === '') {
358
- performValueChange(allowEmpty ? null : resolvedDefaultValue);
371
+ processValueChange(allowEmpty ? null : defaultVal);
359
372
  } else {
360
- const numeric = Number.parseFloat(trimmed);
361
- if (Number.isFinite(numeric)) {
362
- performValueChange(applyNextValue(numeric));
373
+ const num = Number.parseFloat(trimmed);
374
+ if (Number.isFinite(num)) {
375
+ processValueChange(normalizeNumber(num));
363
376
  }
364
377
  }
365
378
  }
366
- onBlur?.(event);
367
- inputProps?.onBlur?.(event);
368
- }, [allowEmpty, applyNextValue, inputProps, onBlur, performValueChange, resolvedDefaultValue]);
379
+ ;
380
+ onBlurRef.current?.(event);
381
+ inputPropsRef.current?.onBlur?.(event);
382
+ }, [allowEmpty, normalizeNumber, processValueChange, defaultVal]);
369
383
  const handleInputPressIn = (0, _react().useCallback)(event => {
370
- onClick?.(event);
371
- inputProps?.onPressIn?.(event);
372
- }, [inputProps, onClick]);
384
+ onClickRef.current?.(event);
385
+ inputPropsRef.current?.onPressIn?.(event);
386
+ }, []);
373
387
  const handleMinusPress = (0, _react().useCallback)(event => handleButtonPress('minus', event), [handleButtonPress]);
374
388
  const handlePlusPress = (0, _react().useCallback)(event => handleButtonPress('plus', event), [handleButtonPress]);
375
389
  const handleMinusPressIn = (0, _react().useCallback)(() => startLongPress('minus'), [startLongPress]);
376
390
  const handlePlusPressIn = (0, _react().useCallback)(() => startLongPress('plus'), [startLongPress]);
377
- const getMinusButtonStyle = (0, _react().useCallback)(state => getButtonStyle('minus', state), [getButtonStyle]);
378
- const getPlusButtonStyle = (0, _react().useCallback)(state => getButtonStyle('plus', state), [getButtonStyle]);
379
- const renderMinusButton = (0, _react().useCallback)(() => {
391
+ const getMinusBtnStyle = (0, _react().useCallback)(state => getButtonStyle('minus', state), [getButtonStyle]);
392
+ const getPlusBtnStyle = (0, _react().useCallback)(state => getButtonStyle('plus', state), [getButtonStyle]);
393
+ const renderMinusBtn = (0, _react().useCallback)(() => {
380
394
  if (!showMinus) return null;
381
395
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
382
396
  key: "minus",
@@ -384,17 +398,23 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
384
398
  accessibilityRole: "button",
385
399
  accessibilityLabel: "minus",
386
400
  accessibilityState: {
387
- disabled: minusDisabled
401
+ disabled: isMinusDisabled
388
402
  },
389
403
  onPress: handleMinusPress,
390
404
  onPressIn: handleMinusPressIn,
391
405
  onPressOut: handlePressOut,
392
- style: getMinusButtonStyle
406
+ style: getMinusBtnStyle
393
407
  }, /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
394
408
  style: getButtonTextStyle('minus')
395
- }, "-"));
396
- }, [getButtonTextStyle, getMinusButtonStyle, handleMinusPress, handleMinusPressIn, handlePressOut, minusDisabled, showMinus]);
397
- const renderPlusButton = (0, _react().useCallback)(() => {
409
+ }, "-"), theme === 'round' && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
410
+ style: (0, _hairline.createHairlineView)({
411
+ position: 'all',
412
+ color: tokens.colors.roundTheme,
413
+ borderRadius: resolvedBtnSize / 2
414
+ })
415
+ }));
416
+ }, [getButtonTextStyle, getMinusBtnStyle, handleMinusPress, handleMinusPressIn, handlePressOut, isMinusDisabled, showMinus, theme, tokens.colors.roundTheme, resolvedBtnSize]);
417
+ const renderPlusBtn = (0, _react().useCallback)(() => {
398
418
  if (!showPlus) return null;
399
419
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
400
420
  key: "plus",
@@ -402,33 +422,33 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
402
422
  accessibilityRole: "button",
403
423
  accessibilityLabel: "add",
404
424
  accessibilityState: {
405
- disabled: plusDisabled
425
+ disabled: isPlusDisabled
406
426
  },
407
427
  onPress: handlePlusPress,
408
428
  onPressIn: handlePlusPressIn,
409
429
  onPressOut: handlePressOut,
410
- style: getPlusButtonStyle
430
+ style: getPlusBtnStyle
411
431
  }, /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
412
432
  style: getButtonTextStyle('plus')
413
433
  }, "+"));
414
- }, [getButtonTextStyle, getPlusButtonStyle, handlePlusPress, handlePlusPressIn, handlePressOut, plusDisabled, showPlus]);
434
+ }, [getButtonTextStyle, getPlusBtnStyle, handlePlusPress, handlePlusPressIn, handlePressOut, isPlusDisabled, showPlus]);
415
435
  const inputNode = (0, _react().useMemo)(() => {
416
436
  if (!showInput) return null;
417
- const editable = !disabledForAll && !disableInput;
418
- const inputDisabled = disabledForAll || disableInput;
419
- const inputBackground = theme === 'round' ? tokens.colors.transparent : inputDisabled ? tokens.colors.inputDisabledBackground : tokens.colors.background;
420
- const inputTextColor = inputDisabled ? tokens.colors.inputDisabledText : tokens.colors.inputText;
437
+ const editable = !isDisabledAll && !disableInput;
438
+ const isInputDisabled = isDisabledAll || disableInput;
439
+ const bgColor = theme === 'round' ? tokens.colors.transparent : isInputDisabled ? tokens.colors.inputDisabledBackground : tokens.colors.background;
440
+ const textColor = isInputDisabled ? tokens.colors.inputDisabledText : tokens.colors.inputText;
421
441
  const keyboardType = integer ? 'number-pad' : 'decimal-pad';
422
442
  return /*#__PURE__*/_react().default.createElement(_reactNative().TextInput, _extends({
423
443
  ref: inputRef
424
444
  }, inputProps, {
425
- style: [styles.input, inputBoxStyle, {
426
- backgroundColor: inputBackground,
427
- color: inputTextColor,
445
+ style: [S.inp, inputSizeStyle, {
446
+ backgroundColor: bgColor,
447
+ color: textColor,
428
448
  paddingHorizontal: tokens.spacing.none,
429
449
  paddingVertical: tokens.spacing.none
430
450
  }, inputStyle],
431
- value: inputValue,
451
+ value: inputText,
432
452
  placeholder: placeholder,
433
453
  editable: editable,
434
454
  keyboardType: keyboardType,
@@ -437,24 +457,26 @@ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.forwardRef((p, r
437
457
  onBlur: handleBlur,
438
458
  onPressIn: handleInputPressIn
439
459
  }));
440
- }, [disabledForAll, disableInput, handleBlur, handleChangeText, handleFocus, handleInputPressIn, inputBoxStyle, inputProps, inputStyle, inputValue, integer, placeholder, showInput, theme, tokens.colors.background, tokens.colors.inputDisabledBackground, tokens.colors.inputDisabledText, tokens.colors.inputText, tokens.colors.transparent, tokens.spacing.none]);
441
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({}, rest, {
442
- style: [styles.container, style]
443
- }), renderMinusButton(), inputNode, renderPlusButton());
444
- });
445
- const styles = _reactNative().StyleSheet.create({
446
- container: {
460
+ }, [isDisabledAll, disableInput, handleBlur, handleChangeText, handleFocus, handleInputPressIn, inputSizeStyle, inputProps, inputStyle, inputText, integer, placeholder, showInput, theme, tokens.colors.background, tokens.colors.inputDisabledBackground, tokens.colors.inputDisabledText, tokens.colors.inputText, tokens.colors.transparent, tokens.spacing.none]);
461
+ return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({}, restProps, {
462
+ style: [S.cnt, style]
463
+ }), renderMinusBtn(), inputNode, renderPlusBtn());
464
+ };
465
+ const S = _reactNative().StyleSheet.create({
466
+ cnt: {
447
467
  flexDirection: 'row',
448
468
  alignItems: 'center'
449
469
  },
450
- button: {
470
+ btn: {
451
471
  justifyContent: 'center',
452
472
  alignItems: 'center'
453
473
  },
454
- buttonText: {},
455
- input: {
474
+ btnTxt: {},
475
+ inp: {
456
476
  textAlign: 'center'
457
477
  }
458
478
  });
459
- Stepper.displayName = 'Stepper';
479
+ const StepperForwardRef = /*#__PURE__*/_react().default.forwardRef(StepperImpl);
480
+ StepperForwardRef.displayName = 'Stepper';
481
+ const Stepper = exports.Stepper = /*#__PURE__*/_react().default.memo(StepperForwardRef);
460
482
  var _default = exports.default = Stepper;