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
@@ -20,33 +20,22 @@ function useControllableValue(props = {}, options = {}) {
20
20
  valuePropName = 'value',
21
21
  trigger = 'onChange'
22
22
  } = options;
23
- const propsRecord = props;
24
- const isControlled = hasProp(props, valuePropName);
25
- const value = propsRecord[valuePropName];
26
- const [internalValue, setInternalValue] = (0, _react().useState)(() => {
27
- if (isControlled) {
28
- return value;
29
- }
30
- if (hasProp(props, defaultValuePropName)) {
31
- return propsRecord[defaultValuePropName];
32
- }
23
+ const p = props;
24
+ const ctrl = hasProp(props, valuePropName);
25
+ const val = p[valuePropName];
26
+ const [intVal, setIntVal] = (0, _react().useState)(() => {
27
+ if (ctrl) return val;
28
+ if (hasProp(props, defaultValuePropName)) return p[defaultValuePropName];
33
29
  return defaultValue;
34
30
  });
35
- const mergedValue = isControlled ? value : internalValue;
36
- const handlerRef = (0, _react().useRef)(propsRecord[trigger]);
31
+ const hRef = (0, _react().useRef)(p[trigger]);
37
32
  (0, _react().useEffect)(() => {
38
- handlerRef.current = propsRecord[trigger];
33
+ hRef.current = p[trigger];
39
34
  }, [props, trigger]);
40
- const triggerChange = (0, _react().useCallback)((nextValue, ...args) => {
41
- if (!isControlled) {
42
- setInternalValue(nextValue);
43
- }
44
- const handler = handlerRef.current;
45
- if ((0, _validate.isFunction)(handler)) {
46
- ;
47
- handler(nextValue, ...args);
48
- }
49
- }, [isControlled]);
50
- return [mergedValue, triggerChange];
35
+ const setVal = (0, _react().useCallback)((next, ...args) => {
36
+ if (!ctrl) setIntVal(next);
37
+ if ((0, _validate.isFunction)(hRef.current)) hRef.current(next, ...args);
38
+ }, [ctrl]);
39
+ return [ctrl ? val : intVal, setVal];
51
40
  }
52
41
  var _default = exports.default = useControllableValue;
@@ -13,19 +13,14 @@ function _react() {
13
13
  }
14
14
  var _validate = require("../utils/validate");
15
15
  const parseTime = time => {
16
- const total = Math.max(time, 0);
17
- const days = Math.floor(total / (24 * 60 * 60 * 1000));
18
- const hours = Math.floor(total % (24 * 60 * 60 * 1000) / (60 * 60 * 1000));
19
- const minutes = Math.floor(total % (60 * 60 * 1000) / (60 * 1000));
20
- const seconds = Math.floor(total % (60 * 1000) / 1000);
21
- const milliseconds = total % 1000;
16
+ const t = Math.max(time, 0);
22
17
  return {
23
- total,
24
- days,
25
- hours,
26
- minutes,
27
- seconds,
28
- milliseconds
18
+ total: t,
19
+ days: Math.floor(t / 86400000),
20
+ hours: Math.floor(t % 86400000 / 3600000),
21
+ minutes: Math.floor(t % 3600000 / 60000),
22
+ seconds: Math.floor(t % 60000 / 1000),
23
+ milliseconds: t % 1000
29
24
  };
30
25
  };
31
26
  exports.parseTime = parseTime;
@@ -37,11 +32,11 @@ const useCountDown = options => {
37
32
  onFinish
38
33
  } = options;
39
34
  const timeRef = (0, _react().useRef)(time);
40
- const millisecondRef = (0, _react().useRef)(millisecond);
35
+ const msRef = (0, _react().useRef)(millisecond);
41
36
  const onChangeRef = (0, _react().useRef)(onChange);
42
37
  const onFinishRef = (0, _react().useRef)(onFinish);
43
38
  timeRef.current = time;
44
- millisecondRef.current = millisecond;
39
+ msRef.current = millisecond;
45
40
  onChangeRef.current = onChange;
46
41
  onFinishRef.current = onFinish;
47
42
  const remainRef = (0, _react().useRef)(Math.max(0, time));
@@ -49,34 +44,31 @@ const useCountDown = options => {
49
44
  const timerRef = (0, _react().useRef)(null);
50
45
  const countingRef = (0, _react().useRef)(false);
51
46
  const [current, setCurrent] = (0, _react().useState)(() => parseTime(remainRef.current));
52
- const clearTimer = (0, _react().useCallback)(() => {
47
+ const clear = (0, _react().useCallback)(() => {
53
48
  if (timerRef.current) {
54
49
  clearTimeout(timerRef.current);
55
50
  timerRef.current = null;
56
51
  }
57
52
  }, []);
58
- const update = (0, _react().useCallback)(remain => {
59
- remainRef.current = remain;
60
- const next = parseTime(remain);
53
+ const update = (0, _react().useCallback)(rem => {
54
+ remainRef.current = rem;
55
+ const next = parseTime(rem);
61
56
  setCurrent(next);
62
57
  onChangeRef.current?.(next);
63
- if (remain === 0) {
58
+ if (rem === 0) {
64
59
  countingRef.current = false;
65
- clearTimer();
60
+ clear();
66
61
  onFinishRef.current?.();
67
62
  }
68
- }, [clearTimer]);
63
+ }, [clear]);
69
64
  const tick = (0, _react().useCallback)(() => {
70
65
  if (!countingRef.current) return;
71
- clearTimer();
72
- const remain = Math.max(endTimeRef.current - Date.now(), 0);
73
- update(remain);
74
- if (remain <= 0) return;
75
- const delay = millisecondRef.current ? Math.max(1, Math.min(30, remain)) : Math.max(1, Math.min(remain, remain % 1000 + 1));
76
- timerRef.current = setTimeout(() => {
77
- tick();
78
- }, delay);
79
- }, [clearTimer, update]);
66
+ clear();
67
+ const rem = Math.max(endTimeRef.current - Date.now(), 0);
68
+ update(rem);
69
+ if (rem <= 0) return;
70
+ timerRef.current = setTimeout(tick, msRef.current ? Math.max(1, Math.min(30, rem)) : Math.max(1, Math.min(rem, rem % 1000 + 1)));
71
+ }, [clear, update]);
80
72
  const start = (0, _react().useCallback)(() => {
81
73
  if (countingRef.current || remainRef.current <= 0) return;
82
74
  countingRef.current = true;
@@ -87,16 +79,16 @@ const useCountDown = options => {
87
79
  if (!countingRef.current) return;
88
80
  countingRef.current = false;
89
81
  remainRef.current = Math.max(endTimeRef.current - Date.now(), 0);
90
- clearTimer();
91
- }, [clearTimer]);
92
- const reset = (0, _react().useCallback)(newTime => {
82
+ clear();
83
+ }, [clear]);
84
+ const reset = (0, _react().useCallback)(newT => {
93
85
  pause();
94
- const next = Math.max(0, (0, _validate.isNumber)(newTime) ? newTime : timeRef.current);
95
- remainRef.current = next;
96
- endTimeRef.current = Date.now() + next;
97
- setCurrent(parseTime(next));
86
+ const n = Math.max(0, (0, _validate.isNumber)(newT) ? newT : timeRef.current);
87
+ remainRef.current = n;
88
+ endTimeRef.current = Date.now() + n;
89
+ setCurrent(parseTime(n));
98
90
  }, [pause]);
99
- (0, _react().useEffect)(() => () => clearTimer(), [clearTimer]);
91
+ (0, _react().useEffect)(() => () => clear(), [clear]);
100
92
  return {
101
93
  start,
102
94
  pause,
@@ -27,32 +27,20 @@ const useHairline = ({
27
27
  color,
28
28
  width,
29
29
  defaultPaddingHorizontal = 0
30
- }) => {
31
- return (0, _react().useMemo)(() => {
32
- if (!show) return null;
33
- const flattened = _reactNative().StyleSheet.flatten(containerStyle);
34
- const paddingHorizontal = (0, _validate.isNumber)(flattened?.paddingHorizontal) ? flattened.paddingHorizontal : undefined;
35
- const resolveInset = (primary, secondary) => (0, _validate.isNumber)(primary) ? primary : (0, _validate.isNumber)(secondary) ? secondary : (0, _validate.isNumber)(paddingHorizontal) ? paddingHorizontal : defaultPaddingHorizontal;
36
- const resolvedPadding = {
37
- left: resolveInset(flattened?.paddingLeft, flattened?.paddingStart),
38
- right: resolveInset(flattened?.paddingRight, flattened?.paddingEnd)
39
- };
40
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
41
- style: [styles.hairline, (0, _hairline.createHairlineView)({
42
- position: 'bottom',
43
- color,
44
- left: resolvedPadding.left,
45
- right: resolvedPadding.right,
46
- enabled: width > 0,
47
- width
48
- })]
49
- });
50
- }, [show, containerStyle, color, width, defaultPaddingHorizontal]);
51
- };
52
- exports.useHairline = useHairline;
53
- const styles = _reactNative().StyleSheet.create({
54
- hairline: {
55
- position: 'absolute',
56
- bottom: 0
57
- }
58
- });
30
+ }) => (0, _react().useMemo)(() => {
31
+ if (!show) return null;
32
+ const f = _reactNative().StyleSheet.flatten(containerStyle);
33
+ const ph = (0, _validate.isNumber)(f?.paddingHorizontal) ? f.paddingHorizontal : undefined;
34
+ const r = (a, b) => (0, _validate.isNumber)(a) ? a : (0, _validate.isNumber)(b) ? b : (0, _validate.isNumber)(ph) ? ph : defaultPaddingHorizontal;
35
+ return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
36
+ style: (0, _hairline.createHairlineView)({
37
+ position: 'bottom',
38
+ color,
39
+ left: r(f?.paddingLeft, f?.paddingStart),
40
+ right: r(f?.paddingRight, f?.paddingEnd),
41
+ enabled: width > 0,
42
+ width
43
+ })
44
+ });
45
+ }, [show, containerStyle, color, width, defaultPaddingHorizontal]);
46
+ exports.useHairline = useHairline;
@@ -21,10 +21,7 @@ function _reactNativeSafeAreaContext() {
21
21
  function useSafeAreaPadding(min) {
22
22
  const insets = (0, _reactNativeSafeAreaContext().useSafeAreaInsets)();
23
23
  if (_reactNative().Platform.OS === 'web') {
24
- const t = min?.top ?? 0,
25
- b = min?.bottom ?? 0,
26
- l = min?.left ?? 0,
27
- r = min?.right ?? 0;
24
+ const [t, b, l, r] = [min?.top ?? 0, min?.bottom ?? 0, min?.left ?? 0, min?.right ?? 0];
28
25
  return {
29
26
  paddingTop: `max(env(safe-area-inset-top, 0px), ${t}px)`,
30
27
  paddingBottom: `max(env(safe-area-inset-bottom, 0px), ${b}px)`,
package/dist/cjs/index.js CHANGED
@@ -3,9 +3,68 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ flipStyle: true,
8
+ rtlRow: true,
9
+ deepMerge: true,
10
+ createPlatformShadow: true,
11
+ nativeDriverEnabled: true,
12
+ isWeb: true,
13
+ isIOS: true,
14
+ isAndroid: true
15
+ };
16
+ Object.defineProperty(exports, "createPlatformShadow", {
17
+ enumerable: true,
18
+ get: function () {
19
+ return _createPlatformShadow.createPlatformShadow;
20
+ }
21
+ });
22
+ Object.defineProperty(exports, "deepMerge", {
23
+ enumerable: true,
24
+ get: function () {
25
+ return _deepMerge.deepMerge;
26
+ }
27
+ });
28
+ Object.defineProperty(exports, "flipStyle", {
29
+ enumerable: true,
30
+ get: function () {
31
+ return _rtl.flipStyle;
32
+ }
33
+ });
34
+ Object.defineProperty(exports, "isAndroid", {
35
+ enumerable: true,
36
+ get: function () {
37
+ return _runtime.isAndroid;
38
+ }
39
+ });
40
+ Object.defineProperty(exports, "isIOS", {
41
+ enumerable: true,
42
+ get: function () {
43
+ return _runtime.isIOS;
44
+ }
45
+ });
46
+ Object.defineProperty(exports, "isWeb", {
47
+ enumerable: true,
48
+ get: function () {
49
+ return _runtime.isWeb;
50
+ }
51
+ });
52
+ Object.defineProperty(exports, "nativeDriverEnabled", {
53
+ enumerable: true,
54
+ get: function () {
55
+ return _animation.nativeDriverEnabled;
56
+ }
57
+ });
58
+ Object.defineProperty(exports, "rtlRow", {
59
+ enumerable: true,
60
+ get: function () {
61
+ return _rtl.rtlRow;
62
+ }
63
+ });
6
64
  var _components = require("./components");
7
65
  Object.keys(_components).forEach(function (key) {
8
66
  if (key === "default" || key === "__esModule") return;
67
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
9
68
  if (key in exports && exports[key] === _components[key]) return;
10
69
  Object.defineProperty(exports, key, {
11
70
  enumerable: true,
@@ -17,6 +76,7 @@ Object.keys(_components).forEach(function (key) {
17
76
  var _designSystem = require("./design-system");
18
77
  Object.keys(_designSystem).forEach(function (key) {
19
78
  if (key === "default" || key === "__esModule") return;
79
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
80
  if (key in exports && exports[key] === _designSystem[key]) return;
21
81
  Object.defineProperty(exports, key, {
22
82
  enumerable: true,
@@ -28,6 +88,7 @@ Object.keys(_designSystem).forEach(function (key) {
28
88
  var _hooks = require("./hooks");
29
89
  Object.keys(_hooks).forEach(function (key) {
30
90
  if (key === "default" || key === "__esModule") return;
91
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
92
  if (key in exports && exports[key] === _hooks[key]) return;
32
93
  Object.defineProperty(exports, key, {
33
94
  enumerable: true,
@@ -35,4 +96,9 @@ Object.keys(_hooks).forEach(function (key) {
35
96
  return _hooks[key];
36
97
  }
37
98
  });
38
- });
99
+ });
100
+ var _rtl = require("./utils/rtl");
101
+ var _deepMerge = require("./utils/deepMerge");
102
+ var _createPlatformShadow = require("./utils/createPlatformShadow");
103
+ var _animation = require("./platform/animation");
104
+ var _runtime = require("./platform/runtime");
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.nativeDriverEnabled = void 0;
6
+ exports.nativeDriverEnabled = exports.hardwareAccelerationProps = exports.defaultAnimationConfig = void 0;
7
7
  function _reactNative() {
8
8
  const data = require("react-native");
9
9
  _reactNative = function () {
@@ -11,4 +11,12 @@ function _reactNative() {
11
11
  };
12
12
  return data;
13
13
  }
14
- const nativeDriverEnabled = exports.nativeDriverEnabled = _reactNative().Platform.OS !== 'web';
14
+ const nativeDriverEnabled = exports.nativeDriverEnabled = _reactNative().Platform.OS !== 'web';
15
+ const defaultAnimationConfig = exports.defaultAnimationConfig = {
16
+ useNativeDriver: nativeDriverEnabled,
17
+ isInteraction: false
18
+ };
19
+ const hardwareAccelerationProps = exports.hardwareAccelerationProps = {
20
+ renderToHardwareTextureAndroid: _reactNative().Platform.OS === 'android',
21
+ shouldRasterizeIOS: _reactNative().Platform.OS === 'ios'
22
+ };
@@ -5,51 +5,35 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.measureInWindow = void 0;
7
7
  var _validate = require("../utils/validate");
8
- const measureInWindow = (node, callback) => {
8
+ const toRect = (x, y, w, h) => [x, y, w, h].every(Number.isFinite) ? {
9
+ x: x,
10
+ y: y,
11
+ width: w,
12
+ height: h
13
+ } : null;
14
+ const measureInWindow = (node, cb) => {
9
15
  if (!node) {
10
- callback(null);
16
+ cb(null);
11
17
  return;
12
18
  }
19
+ ;
13
20
  try {
14
- const maybeMeasureNode = node;
15
- if ((0, _validate.isFunction)(maybeMeasureNode.measureInWindow)) {
16
- maybeMeasureNode.measureInWindow((x, y, width, height) => {
17
- if (![x, y, width, height].every(Number.isFinite)) {
18
- callback(null);
19
- return;
20
- }
21
- callback({
22
- x,
23
- y,
24
- width,
25
- height
26
- });
27
- });
21
+ const mn = node;
22
+ if ((0, _validate.isFunction)(mn.measureInWindow)) {
23
+ mn.measureInWindow((x, y, w, h) => cb(toRect(x, y, w, h)));
28
24
  return;
29
25
  }
30
- const maybeDomNode = node;
31
- if ((0, _validate.isFunction)(maybeDomNode.getBoundingClientRect)) {
32
- const rect = maybeDomNode.getBoundingClientRect();
33
- const x = rect?.left;
34
- const y = rect?.top;
35
- const width = rect?.width;
36
- const height = rect?.height;
37
- if (![x, y, width, height].every(Number.isFinite)) {
38
- callback(null);
39
- return;
40
- }
41
- callback({
42
- x: x,
43
- y: y,
44
- width: width,
45
- height: height
46
- });
26
+ ;
27
+ const dn = node;
28
+ if ((0, _validate.isFunction)(dn.getBoundingClientRect)) {
29
+ const r = dn.getBoundingClientRect();
30
+ cb(toRect(r?.left, r?.top, r?.width, r?.height));
47
31
  return;
48
32
  }
49
- } catch (_error) {
50
- callback(null);
51
- return;
33
+ ;
34
+ cb(null);
35
+ } catch {
36
+ cb(null);
52
37
  }
53
- callback(null);
54
38
  };
55
39
  exports.measureInWindow = measureInWindow;
@@ -3,50 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withAlpha = exports.hexToRgb = exports.extractFirstColorToken = exports.ensureRgba = void 0;
6
+ exports.withAlpha = exports.hexToRgb = void 0;
7
7
  var _number = require("./number");
8
- const hexRegex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
8
+ const HEX_RE = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
9
9
  const hexToRgb = input => {
10
- if (!hexRegex.test(input)) return null;
11
- const normalized = input.length === 4 ? `#${input[1]}${input[1]}${input[2]}${input[2]}${input[3]}${input[3]}` : input;
12
- const intVal = parseInt(normalized.slice(1), 16);
13
- const r = intVal >> 16 & 255;
14
- const g = intVal >> 8 & 255;
15
- const b = intVal & 255;
16
- return [r, g, b];
10
+ if (!HEX_RE.test(input)) return null;
11
+ const h = input.length === 4 ? `#${input[1]}${input[1]}${input[2]}${input[2]}${input[3]}${input[3]}` : input;
12
+ const v = parseInt(h.slice(1), 16);
13
+ return [v >> 16 & 255, v >> 8 & 255, v & 255];
17
14
  };
18
15
  exports.hexToRgb = hexToRgb;
19
- const parseRgbChannels = input => {
20
- const match = input.match(/^rgba?\(([^)]*)\)$/i);
21
- if (!match) return null;
22
- const parts = match[1].split(',').map(part => part.trim()).slice(0, 3);
23
- const numeric = parts.map(value => Number(value));
24
- if (!numeric.every(channel => Number.isFinite(channel))) return null;
25
- return [numeric[0], numeric[1], numeric[2]];
16
+ const parseRgb = input => {
17
+ const m = input.match(/^rgba?\(([^)]*)\)$/i);
18
+ if (!m) return null;
19
+ const n = m[1].split(',').map(s => Number(s.trim()));
20
+ return n.length >= 3 && n.every(Number.isFinite) ? [n[0], n[1], n[2]] : null;
26
21
  };
27
22
  const withAlpha = (color, alpha) => {
28
- const clamped = (0, _number.clamp01)(alpha);
29
- const trimmed = color?.trim?.() ?? '';
30
- if (!trimmed) return color;
31
- if (trimmed.startsWith('#')) {
32
- const rgb = hexToRgb(trimmed);
33
- return rgb ? `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${clamped})` : color;
23
+ const a = (0, _number.clamp01)(alpha);
24
+ const t = color?.trim?.() ?? '';
25
+ if (!t) return color;
26
+ if (t.startsWith('#')) {
27
+ const rgb = hexToRgb(t);
28
+ return rgb ? `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${a})` : color;
34
29
  }
35
- const rgb = parseRgbChannels(trimmed);
36
- if (rgb) return `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${clamped})`;
37
- return trimmed;
30
+ const rgb = parseRgb(t);
31
+ return rgb ? `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${a})` : t;
38
32
  };
39
- exports.withAlpha = withAlpha;
40
- const ensureRgba = (color, alpha) => {
41
- const trimmed = color.trim().toLowerCase();
42
- if (trimmed.startsWith('rgba')) return color;
43
- return withAlpha(color, alpha);
44
- };
45
- exports.ensureRgba = ensureRgba;
46
- const gradientColorRegex = /(#[0-9a-fA-F]{3,8}|rgba?\([^)]*\)|hsla?\([^)]*\))/i;
47
- const extractFirstColorToken = input => {
48
- if (!input) return undefined;
49
- const match = input.match(gradientColorRegex);
50
- return match ? match[0] : undefined;
51
- };
52
- exports.extractFirstColorToken = extractFirstColorToken;
33
+ exports.withAlpha = withAlpha;
@@ -6,21 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.shallowEqualObject = exports.shallowEqualArray = void 0;
7
7
  const shallowEqualArray = (a = [], b = []) => {
8
8
  if (a.length !== b.length) return false;
9
- for (let i = 0; i < a.length; i += 1) {
10
- if (a[i] !== b[i]) return false;
11
- }
9
+ for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
12
10
  return true;
13
11
  };
14
12
  exports.shallowEqualArray = shallowEqualArray;
15
- const shallowEqualObject = (prev, next) => {
16
- if (prev === next) return true;
17
- if (!prev || !next) return false;
18
- const prevKeys = Object.keys(prev);
19
- const nextKeys = Object.keys(next);
20
- if (prevKeys.length !== nextKeys.length) return false;
21
- for (const key of prevKeys) {
22
- if (prev[key] !== next[key]) return false;
23
- }
13
+ const shallowEqualObject = (a, b) => {
14
+ if (a === b) return true;
15
+ if (!a || !b) return false;
16
+ const ks = Object.keys(a);
17
+ if (ks.length !== Object.keys(b).length) return false;
18
+ for (const k of ks) if (a[k] !== b[k]) return false;
24
19
  return true;
25
20
  };
26
21
  exports.shallowEqualObject = shallowEqualObject;
@@ -11,52 +11,41 @@ function _reactNative() {
11
11
  };
12
12
  return data;
13
13
  }
14
- const hexToRgba = (hex, alpha) => {
15
- const normalized = hex.replace('#', '');
16
- const expand = normalized.length === 3 ? normalized.split('').map(char => char + char).join('') : normalized;
17
- if (expand.length < 6) {
18
- return hex;
19
- }
20
- const bigint = parseInt(expand.slice(0, 6), 16);
21
- const r = bigint >> 16 & 255;
22
- const g = bigint >> 8 & 255;
23
- const b = bigint & 255;
24
- const clampedAlpha = Math.max(0, Math.min(1, alpha));
25
- return `rgba(${r}, ${g}, ${b}, ${clampedAlpha})`;
26
- };
27
- const ensureRgbaColor = (color, alpha) => {
28
- const trimmed = color.trim().toLowerCase();
29
- if (trimmed.startsWith('#')) {
30
- return hexToRgba(trimmed, alpha);
31
- }
32
- if (trimmed.startsWith('rgba')) {
33
- return color;
34
- }
35
- if (trimmed.startsWith('rgb(')) {
36
- return color.replace(/rgb\(([^)]*)\)/i, (_, inner) => `rgba(${inner}, ${alpha})`);
14
+ const toRgba = (color, alpha) => {
15
+ const t = color.trim();
16
+ if (t.startsWith('#')) {
17
+ const h = t.replace('#', '');
18
+ const e = h.length === 3 ? h.split('').map(c => c + c).join('') : h;
19
+ if (e.length < 6) return color;
20
+ const n = parseInt(e.slice(0, 6), 16);
21
+ return `rgba(${n >> 16 & 255}, ${n >> 8 & 255}, ${n & 255}, ${Math.max(0, Math.min(1, alpha))})`;
37
22
  }
23
+ if (t.startsWith('rgba')) return color;
24
+ if (t.startsWith('rgb(')) return color.replace(/rgb\(([^)]*)\)/i, (_, i) => `rgba(${i}, ${alpha})`);
38
25
  return color;
39
26
  };
40
- const createPlatformShadow = config => {
41
- const nativeShadow = {
42
- shadowColor: config.color,
43
- shadowOpacity: config.opacity,
44
- shadowRadius: config.radius,
27
+ const createPlatformShadow = ({
28
+ color,
29
+ opacity,
30
+ radius,
31
+ offsetY,
32
+ offsetX = 0,
33
+ elevation
34
+ }) => {
35
+ if (_reactNative().Platform.OS !== 'web') return {
36
+ shadowColor: color,
37
+ shadowOpacity: opacity,
38
+ shadowRadius: radius,
45
39
  shadowOffset: {
46
- width: config.offsetX ?? 0,
47
- height: config.offsetY
40
+ width: offsetX,
41
+ height: offsetY
48
42
  },
49
- ...(config.elevation !== undefined ? {
50
- elevation: config.elevation
51
- } : null)
43
+ ...(elevation !== undefined && {
44
+ elevation
45
+ })
52
46
  };
53
- if (_reactNative().Platform.OS !== 'web') {
54
- return nativeShadow;
55
- }
56
- const blur = Math.max(config.radius * 1.5, config.radius);
57
- const boxShadowColor = ensureRgbaColor(config.color, config.opacity);
58
47
  return {
59
- boxShadow: `${config.offsetX ?? 0}px ${config.offsetY}px ${blur}px ${boxShadowColor}`
48
+ boxShadow: `${offsetX}px ${offsetY}px ${radius * 1.5}px ${toRgba(color, opacity)}`
60
49
  };
61
50
  };
62
51
  exports.createPlatformShadow = createPlatformShadow;