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
@@ -27,27 +27,12 @@ function _reactNativeSystemIcon() {
27
27
  }
28
28
  var _hooks = require("../../hooks");
29
29
  var _utils = require("../../utils");
30
+ var _useDirection = require("../config-provider/useDirection");
30
31
  var _CellContext = require("./CellContext");
31
32
  var _tokens = require("./tokens");
32
33
  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); }
33
34
  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); }
34
- const TextOrView = ({
35
- children,
36
- textStyle,
37
- viewStyle,
38
- numberOfLines
39
- }) => {
40
- if ((0, _utils.isText)(children)) {
41
- return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
42
- style: textStyle,
43
- numberOfLines: numberOfLines
44
- }, children);
45
- }
46
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
47
- style: viewStyle
48
- }, children);
49
- };
50
- const Cell = exports.Cell = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
35
+ const CellImpl = (props, ref) => {
51
36
  const {
52
37
  title,
53
38
  value,
@@ -75,23 +60,26 @@ const Cell = exports.Cell = /*#__PURE__*/_react().default.forwardRef((props, ref
75
60
  ...rest
76
61
  } = props;
77
62
  const tokens = (0, _tokens.useCellTokens)(tokensOverride);
63
+ const dir = (0, _useDirection.useDirection)();
78
64
  const group = (0, _react().useContext)(_CellContext.CellGroupContext);
79
65
  const border = borderProp ?? tokens.defaults.border;
80
66
  const size = sizeProp ?? tokens.defaults.size;
81
- const arrowDirection = arrowDirectionProp ?? tokens.defaults.arrowDirection;
67
+ const arrowDirectionRaw = arrowDirectionProp ?? tokens.defaults.arrowDirection;
68
+ const arrowDirection = dir === 'rtl' ? arrowDirectionRaw === 'left' ? 'right' : arrowDirectionRaw === 'right' ? 'left' : arrowDirectionRaw : arrowDirectionRaw;
82
69
  const lineHeight = tokens.typography.lineHeight;
83
- const hasTitle = (0, _utils.isRenderable)(title);
84
- const hasValue = (0, _utils.isRenderable)(value);
85
- const hasLabel = (0, _utils.isRenderable)(label);
86
- const hasExtra = (0, _utils.isRenderable)(extra);
87
- const hasChildren = (0, _utils.isRenderable)(children);
88
- const hasIcon = (0, _utils.isRenderable)(icon);
89
- const hasRightIcon = (0, _utils.isRenderable)(rightIcon);
70
+ const hasTitle = (0, _utils.isRenderable)(title),
71
+ hasValue = (0, _utils.isRenderable)(value),
72
+ hasLabel = (0, _utils.isRenderable)(label),
73
+ hasExtra = (0, _utils.isRenderable)(extra),
74
+ hasChildren = (0, _utils.isRenderable)(children),
75
+ hasIcon = (0, _utils.isRenderable)(icon),
76
+ hasRightIcon = (0, _utils.isRenderable)(rightIcon);
90
77
  const onlyValue = !hasTitle && !hasChildren;
91
78
  const showBorder = border && group.border && !group.isLast;
92
79
  const showArrow = !!isLink || !!clickable;
93
80
  const isInteractive = !disabled && (clickable || !!onPress || !!rest.onLongPress || !!rest.onPressIn || !!rest.onPressOut);
94
- const containerStyles = (0, _react().useMemo)(() => [size === 'large' ? tokens.layout.containerLarge : tokens.layout.container, center && tokens.layout.center, style], [center, size, style, tokens.layout.center, tokens.layout.container, tokens.layout.containerLarge]);
81
+ const isLargeSize = size === 'large';
82
+ const containerStyles = (0, _react().useMemo)(() => [size === 'large' ? tokens.layout.containerLarge : tokens.layout.container, center && tokens.layout.center, style], [size, center, tokens.layout, style]);
95
83
  const hairline = (0, _hooks.useHairline)({
96
84
  show: showBorder,
97
85
  containerStyle: containerStyles,
@@ -101,8 +89,28 @@ const Cell = exports.Cell = /*#__PURE__*/_react().default.forwardRef((props, ref
101
89
  });
102
90
  const customContentStyle = (0, _react().useMemo)(() => [tokens.layout.customContent, {
103
91
  justifyContent: center ? 'center' : 'flex-start'
104
- }, contentStyle], [center, contentStyle, tokens.layout.customContent]);
105
- const bodyContent = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, hasIcon && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
92
+ }, contentStyle], [center, tokens.layout.customContent, contentStyle]);
93
+ const {
94
+ interactionProps,
95
+ states
96
+ } = (0, _hooks.useAriaPress)({
97
+ disabled: !isInteractive,
98
+ onPress: onPress ?? undefined
99
+ });
100
+ const Component = isInteractive ? _reactNative().Pressable : _reactNative().View;
101
+ const componentProps = isInteractive ? {
102
+ android_ripple: android_ripple ?? {
103
+ color: tokens.colors.ripple
104
+ },
105
+ accessibilityRole: 'button',
106
+ ...interactionProps
107
+ } : {};
108
+ return /*#__PURE__*/_react().default.createElement(Component, _extends({
109
+ ref: ref,
110
+ style: [containerStyles, isInteractive && states.pressed && {
111
+ opacity: tokens.defaults.activeOpacity
112
+ }]
113
+ }, componentProps, rest), hasIcon && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
106
114
  style: [tokens.layout.iconWrapper, {
107
115
  marginRight: tokens.spacing.iconGap,
108
116
  minHeight: tokens.sizing.iconSize,
@@ -119,73 +127,52 @@ const Cell = exports.Cell = /*#__PURE__*/_react().default.forwardRef((props, ref
119
127
  color: tokens.colors.required,
120
128
  marginRight: tokens.spacing.iconGap / 2
121
129
  }
122
- }, "*"), hasTitle && /*#__PURE__*/_react().default.createElement(TextOrView, {
123
- textStyle: [{
124
- color: tokens.colors.title,
125
- fontSize: size === 'large' ? tokens.typography.largeTitleSize : tokens.typography.titleSize,
126
- fontWeight: tokens.typography.titleWeight
127
- }, titleStyle],
128
- viewStyle: titleStyle,
130
+ }, "*"), hasTitle && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
131
+ style: titleStyle
132
+ }, (0, _utils.renderTextOrNode)(title, [{
133
+ color: tokens.colors.title,
134
+ fontSize: isLargeSize ? tokens.typography.largeTitleSize : tokens.typography.titleSize,
135
+ fontWeight: tokens.typography.titleWeight
136
+ }, titleStyle], {
129
137
  numberOfLines: 1
130
- }, title)), hasLabel && /*#__PURE__*/_react().default.createElement(TextOrView, {
131
- textStyle: [{
132
- marginTop: tokens.spacing.labelMarginTop,
133
- color: tokens.colors.label,
134
- fontSize: size === 'large' ? tokens.typography.largeLabelSize : tokens.typography.labelSize
135
- }, labelStyle],
136
- viewStyle: [{
138
+ }))), hasLabel && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
139
+ style: [{
137
140
  marginTop: tokens.spacing.labelMarginTop
138
- }, labelStyle],
141
+ }, labelStyle]
142
+ }, (0, _utils.renderTextOrNode)(label, [{
143
+ color: tokens.colors.label,
144
+ fontSize: isLargeSize ? tokens.typography.largeLabelSize : tokens.typography.labelSize
145
+ }, labelStyle], {
139
146
  numberOfLines: 2
140
- }, label)), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
147
+ }))), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
141
148
  style: [tokens.layout.valueContainer, {
142
149
  minHeight: lineHeight,
143
150
  marginLeft: tokens.spacing.valueGap
144
151
  }, !center && onlyValue && tokens.layout.valueOnlyContainer, center && tokens.layout.valueCenter]
145
- }, hasValue ? /*#__PURE__*/_react().default.createElement(TextOrView, {
146
- textStyle: [tokens.layout.value, onlyValue && tokens.layout.valueOnly, {
147
- color: tokens.colors.value,
148
- fontSize: size === 'large' ? tokens.typography.largeValueSize : tokens.typography.valueSize
149
- }, valueStyle],
150
- viewStyle: customContentStyle,
152
+ }, hasValue ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
153
+ style: customContentStyle
154
+ }, (0, _utils.renderTextOrNode)(value, [tokens.layout.value, onlyValue && tokens.layout.valueOnly, {
155
+ color: tokens.colors.value,
156
+ fontSize: isLargeSize ? tokens.typography.largeValueSize : tokens.typography.valueSize
157
+ }, valueStyle], {
151
158
  numberOfLines: 1
152
- }, value) : hasChildren ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
159
+ })) : hasChildren && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
153
160
  style: customContentStyle
154
- }, children) : null), hasExtra && /*#__PURE__*/_react().default.createElement(TextOrView, {
155
- textStyle: {
156
- marginLeft: tokens.spacing.extraGap,
157
- color: tokens.colors.value,
158
- fontSize: size === 'large' ? tokens.typography.largeValueSize : tokens.typography.valueSize
159
- },
160
- viewStyle: {
161
+ }, children)), hasExtra && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
162
+ style: {
161
163
  marginLeft: tokens.spacing.extraGap
162
164
  }
163
- }, extra), hasRightIcon ? rightIcon : showArrow ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
165
+ }, (0, _utils.renderTextOrNode)(extra, {
166
+ marginLeft: tokens.spacing.extraGap,
167
+ color: tokens.colors.value,
168
+ fontSize: isLargeSize ? tokens.typography.largeValueSize : tokens.typography.valueSize
169
+ })), hasRightIcon ? rightIcon : showArrow && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
164
170
  style: [tokens.layout.rightIconWrapper, tokens.layout.arrowTransforms[arrowDirection]]
165
171
  }, /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Arrow, {
166
172
  size: tokens.sizing.arrowSize,
167
173
  fill: tokens.colors.arrow
168
- })) : null);
169
- const {
170
- interactionProps,
171
- states
172
- } = (0, _hooks.useAriaPress)({
173
- disabled: !isInteractive,
174
- onPress: onPress ?? undefined
175
- });
176
- const Component = isInteractive ? _reactNative().Pressable : _reactNative().View;
177
- const componentProps = isInteractive ? {
178
- android_ripple: android_ripple ?? {
179
- color: tokens.colors.ripple
180
- },
181
- accessibilityRole: 'button',
182
- ...interactionProps
183
- } : {};
184
- return /*#__PURE__*/_react().default.createElement(Component, _extends({
185
- ref: ref,
186
- style: [containerStyles, isInteractive && states.pressed && {
187
- opacity: tokens.defaults.activeOpacity
188
- }]
189
- }, componentProps, rest), bodyContent, hairline);
190
- });
191
- Cell.displayName = 'Cell';
174
+ })), hairline);
175
+ };
176
+ const CellForwardRef = /*#__PURE__*/_react().default.forwardRef(CellImpl);
177
+ CellForwardRef.displayName = 'Cell';
178
+ const Cell = exports.Cell = /*#__PURE__*/_react().default.memo(CellForwardRef);
@@ -23,7 +23,12 @@ var _Cell = require("./Cell");
23
23
  var _CellContext = require("./CellContext");
24
24
  var _tokens = require("./tokens");
25
25
  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); }
26
- const CellGroup = ({
26
+ const isCellElement = child => {
27
+ if (! /*#__PURE__*/_react().default.isValidElement(child)) return false;
28
+ if (child.type === _Cell.Cell) return true;
29
+ return child.type.displayName === 'Cell';
30
+ };
31
+ const CellGroup = exports.CellGroup = /*#__PURE__*/_react().default.memo(({
27
32
  children,
28
33
  title,
29
34
  border,
@@ -35,21 +40,13 @@ const CellGroup = ({
35
40
  }) => {
36
41
  const tokens = (0, _tokens.useCellTokens)(tokensOverride);
37
42
  const resolvedBorder = border ?? tokens.defaults.groupBorder;
38
- const resolvedInset = inset ?? tokens.defaults.groupInset;
43
+ const showInset = (inset ?? tokens.defaults.groupInset) || (card ?? tokens.defaults.groupCard);
39
44
  const resolvedCard = card ?? tokens.defaults.groupCard;
40
- const showInset = resolvedInset || resolvedCard;
41
45
  const showOuterBorder = resolvedBorder && !showInset;
42
46
  const childArray = (0, _react().useMemo)(() => _react().default.Children.toArray(children), [children]);
43
- const isCellElement = child => {
44
- if (! /*#__PURE__*/_react().default.isValidElement(child)) return false;
45
- if (child.type === _Cell.Cell) return true;
46
- const type = child.type;
47
- return type.displayName === 'Cell';
48
- };
49
47
  const lastCellIndex = (0, _react().useMemo)(() => {
50
48
  for (let i = childArray.length - 1; i >= 0; i--) {
51
- const child = childArray[i];
52
- if (isCellElement(child)) return i;
49
+ if (isCellElement(childArray[i])) return i;
53
50
  }
54
51
  return -1;
55
52
  }, [childArray]);
@@ -62,9 +59,9 @@ const CellGroup = ({
62
59
  marginHorizontal: tokens.sizing.groupInsetMarginHorizontal,
63
60
  backgroundColor: tokens.colors.background
64
61
  }), [tokens.colors.background, tokens.radii.groupInset, tokens.sizing.groupInsetMarginHorizontal]);
65
- const bodyContainerStyle = (0, _react().useMemo)(() => [{
62
+ const bodyContainerStyle = [{
66
63
  backgroundColor: tokens.colors.groupBodyBackground
67
- }, showInset ? insetStyle : null, resolvedCard ? tokens.layout.groupCardShadow : null, bodyStyle], [bodyStyle, resolvedCard, showInset, tokens.colors.background, tokens.colors.groupBodyBackground, tokens.layout.groupCardShadow, tokens.radii.groupInset, tokens.sizing.groupInsetMarginHorizontal, insetStyle]);
64
+ }, showInset ? insetStyle : null, resolvedCard ? tokens.layout.groupCardShadow : null, bodyStyle];
68
65
  const renderedTitle = (0, _react().useMemo)(() => title ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
69
66
  style: {
70
67
  color: tokens.colors.groupTitle,
@@ -75,13 +72,12 @@ const CellGroup = ({
75
72
  }, title) : null, [title, tokens.colors.groupTitle, tokens.sizing.groupTitlePaddingHorizontal, tokens.sizing.groupTitlePaddingVertical, tokens.typography.groupTitleSize]);
76
73
  const renderedChildren = (0, _react().useMemo)(() => childArray.map((child, index) => {
77
74
  const key = /*#__PURE__*/_react().default.isValidElement(child) && child.key != null ? child.key : index;
78
- const isCell = isCellElement(child);
79
75
  return /*#__PURE__*/_react().default.createElement(_CellContext.CellGroupContext.Provider, {
80
76
  key: key,
81
77
  value: {
82
78
  border: resolvedBorder,
83
79
  inset: showInset,
84
- isLast: isCell ? index === lastCellIndex : false
80
+ isLast: isCellElement(child) ? index === lastCellIndex : false
85
81
  }
86
82
  }, child);
87
83
  }), [childArray, lastCellIndex, resolvedBorder, showInset]);
@@ -89,24 +85,15 @@ const CellGroup = ({
89
85
  style: containerStyle
90
86
  }, renderedTitle, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
91
87
  style: bodyContainerStyle
92
- }, renderedChildren, showOuterBorder ? /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
93
- style: (0, _utils.createHairlineView)({
94
- position: 'top',
95
- color: tokens.colors.border,
96
- left: 0,
97
- right: 0,
98
- enabled: tokens.borders.width > 0,
99
- width: tokens.borders.width
100
- })
101
- }), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
88
+ }, renderedChildren, showOuterBorder ? /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, ['top', 'bottom'].map(pos => /*#__PURE__*/_react().default.createElement(_reactNative().View, {
89
+ key: pos,
102
90
  style: (0, _utils.createHairlineView)({
103
- position: 'bottom',
91
+ position: pos,
104
92
  color: tokens.colors.border,
105
93
  left: 0,
106
94
  right: 0,
107
95
  enabled: tokens.borders.width > 0,
108
96
  width: tokens.borders.width
109
97
  })
110
- })) : null));
111
- };
112
- exports.CellGroup = CellGroup;
98
+ }))) : null));
99
+ });
@@ -35,15 +35,26 @@ function _toggle() {
35
35
  var _CheckboxContext = require("./CheckboxContext");
36
36
  var _tokens = require("./tokens");
37
37
  var _utils = require("../../utils");
38
+ var _validate = require("../../utils/validate");
38
39
  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); }
39
40
  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); }
40
- const Checkbox = exports.Checkbox = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
41
+ const EMPTY_CHECKBOX_GROUP_STATE = {
42
+ value: [],
43
+ isDisabled: false,
44
+ isReadOnly: false,
45
+ isSelected: () => false,
46
+ setValue: () => {},
47
+ addValue: () => {},
48
+ removeValue: () => {},
49
+ toggleValue: () => {}
50
+ };
51
+ const CheckboxImpl = (p, ref) => {
41
52
  const {
42
53
  children,
43
54
  name,
44
55
  value,
45
56
  iconRender,
46
- bindGroup: bindGroupProp,
57
+ bindGroup: bgp,
47
58
  shape,
48
59
  iconSize,
49
60
  checkedColor,
@@ -55,189 +66,185 @@ const Checkbox = exports.Checkbox = /*#__PURE__*/_react().default.forwardRef((pr
55
66
  tokensOverride,
56
67
  hitSlop = 8,
57
68
  accessibilityLabel,
58
- ['aria-label']: ariaLabel,
69
+ ['aria-label']: al,
59
70
  onClick,
60
71
  onChange,
61
72
  ...rest
62
- } = props;
63
- const tokens = (0, _tokens.useCheckboxTokens)(tokensOverride);
64
- const group = (0, _react().useContext)(_CheckboxContext.CheckboxGroupContext);
65
- const bindGroup = bindGroupProp ?? tokens.defaults.bindGroup;
66
- const resolvedShape = shape ?? group?.shape ?? tokens.defaults.shape;
67
- const resolvedIconSize = iconSize ?? group?.iconSize ?? tokens.defaults.iconSize;
68
- const resolvedCheckedColor = checkedColor ?? group?.checkedColor ?? tokens.colors.checkedBackground;
69
- const resolvedIconRender = iconRender ?? group?.iconRender;
70
- const resolvedLabelPosition = labelPosition ?? tokens.defaults.labelPosition;
71
- const resolvedLabelDisabled = labelDisabled ?? group?.labelDisabled ?? tokens.defaults.labelDisabled;
72
- const resolvedDisabled = Boolean(disabled || group?.state.isDisabled);
73
- const rawValue = value ?? name;
74
- const serializedValue = rawValue == null ? undefined : String(rawValue);
75
- const internalRef = (0, _react().useRef)(null);
76
- (0, _react().useImperativeHandle)(ref, () => internalRef.current);
77
- const standaloneState = (0, _toggle().useToggleState)({
78
- isSelected: props.checked,
79
- defaultSelected: props.defaultChecked,
73
+ } = p;
74
+ const t = (0, _tokens.useCheckboxTokens)(tokensOverride);
75
+ const g = (0, _react().useContext)(_CheckboxContext.CheckboxGroupContext);
76
+ const bg = bgp ?? t.defaults.bindGroup;
77
+ const rs = shape ?? g?.shape ?? t.defaults.shape;
78
+ const ris = iconSize ?? g?.iconSize ?? t.defaults.iconSize;
79
+ const rcc = checkedColor ?? g?.checkedColor ?? t.colors.checkedBackground;
80
+ const rir = iconRender ?? g?.iconRender;
81
+ const rlp = labelPosition ?? t.defaults.labelPosition;
82
+ const rld = labelDisabled ?? g?.labelDisabled ?? t.defaults.labelDisabled;
83
+ const rd = Boolean(disabled || g?.state.isDisabled);
84
+ const rv = value ?? name;
85
+ const sv = rv == null ? undefined : String(rv);
86
+ const ir = (0, _react().useRef)(null);
87
+ (0, _react().useImperativeHandle)(ref, () => ir.current);
88
+ const ss = (0, _toggle().useToggleState)({
89
+ isSelected: p.checked,
90
+ defaultSelected: p.defaultChecked,
80
91
  onChange
81
92
  });
82
- const isGroup = !!group && serializedValue !== undefined && bindGroup;
93
+ const ig = !!g && sv !== undefined && bg;
83
94
  const {
84
95
  onBlur,
85
96
  onFocus,
86
- ...compatibleRest
97
+ ...cr
87
98
  } = rest;
88
99
  (0, _react().useEffect)(() => {
89
- if (group && bindGroup && serializedValue !== undefined && rawValue !== undefined) {
90
- group.registerValue(serializedValue, rawValue, resolvedDisabled);
91
- return () => group.unregisterValue(serializedValue);
100
+ if (g && bg && sv !== undefined && rv !== undefined) {
101
+ g.registerValue(sv, rv, rd);
102
+ return () => g.unregisterValue(sv);
92
103
  }
93
104
  return undefined;
94
- }, [bindGroup, group, serializedValue, rawValue, resolvedDisabled]);
95
- const resolvedAccessibilityLabel = accessibilityLabel ?? ariaLabel ?? ((0, _utils.isText)(children) ? String(children) : undefined) ?? serializedValue ?? 'checkbox';
96
- let inputProps;
97
- let isChecked;
98
- const ariaRef = internalRef;
99
- if (isGroup && group) {
100
- const {
101
- inputProps: groupInputProps
102
- } = (0, _checkbox().useCheckboxGroupItem)({
103
- ...compatibleRest,
104
- value: serializedValue,
105
- isDisabled: resolvedDisabled,
106
- 'aria-label': resolvedAccessibilityLabel
107
- }, group.state, ariaRef);
108
- inputProps = groupInputProps;
109
- isChecked = group.state.isSelected(serializedValue);
110
- } else {
111
- const {
112
- inputProps: standaloneProps
113
- } = (0, _checkbox().useCheckbox)({
114
- ...compatibleRest,
115
- isDisabled: resolvedDisabled,
116
- value: serializedValue,
117
- 'aria-label': resolvedAccessibilityLabel
118
- }, standaloneState, ariaRef);
119
- inputProps = standaloneProps;
120
- isChecked = props.checked !== undefined ? props.checked : standaloneState.isSelected;
121
- }
122
- const borderRadius = resolvedShape === 'round' ? resolvedIconSize / 2 : tokens.radii.square;
123
- const borderColor = resolvedDisabled ? tokens.colors.disabledBorder : isChecked ? resolvedCheckedColor : tokens.colors.border;
124
- const backgroundColor = resolvedDisabled ? tokens.colors.disabledBackground : isChecked ? resolvedCheckedColor : tokens.colors.background;
125
- const labelColor = resolvedDisabled || resolvedLabelDisabled ? tokens.colors.labelDisabled : tokens.colors.label;
126
- const spacingStyle = resolvedLabelPosition === 'left' ? {
127
- marginRight: tokens.spacing.gap
105
+ }, [bg, g, sv, rv, rd]);
106
+ const ral = accessibilityLabel ?? al ?? ((0, _validate.isText)(children) ? String(children) : undefined) ?? sv ?? 'checkbox';
107
+ const ar = ir;
108
+ const {
109
+ inputProps: gip
110
+ } = (0, _checkbox().useCheckboxGroupItem)({
111
+ ...cr,
112
+ value: sv ?? '',
113
+ isDisabled: rd,
114
+ 'aria-label': ral
115
+ }, ig && g ? g.state : EMPTY_CHECKBOX_GROUP_STATE, ar);
116
+ const {
117
+ inputProps: sip
118
+ } = (0, _checkbox().useCheckbox)({
119
+ ...cr,
120
+ isDisabled: rd,
121
+ value: sv,
122
+ 'aria-label': ral
123
+ }, ss, ar);
124
+ const ip = ig && g ? gip : sip;
125
+ const ic = ig && g ? g.state.isSelected(sv) : p.checked !== undefined ? p.checked : ss.isSelected;
126
+ const br = rs === 'round' ? ris / 2 : t.radii.square;
127
+ const bc = rd ? t.colors.disabledBorder : ic ? rcc : t.colors.border;
128
+ const bgc = rd ? t.colors.disabledBackground : ic ? rcc : t.colors.background;
129
+ const lc = rd || rld ? t.colors.labelDisabled : t.colors.label;
130
+ const ss_ = rlp === 'left' ? {
131
+ marginRight: t.spacing.gap
128
132
  } : {
129
- marginLeft: tokens.spacing.gap
133
+ marginLeft: t.spacing.gap
130
134
  };
131
- const originalOnPress = inputProps?.onPress;
132
- const mergedInputProps = inputProps ? {
133
- ...inputProps,
135
+ const oop = ip?.onPress;
136
+ const mip = ip ? {
137
+ ...ip,
134
138
  onPress: e => {
135
139
  onClick?.(e);
136
- if (isGroup && group?.max && !isChecked && group.state.value.length >= group.max) {
140
+ if (ig && g?.max && !ic && g.state.value.length >= g.max) return;
141
+ if (oop) {
142
+ oop(e);
137
143
  return;
138
144
  }
139
- if (originalOnPress) {
140
- originalOnPress(e);
145
+ if (ig && g && sv !== undefined) {
146
+ if (ic) g.state.removeValue(sv);else g.state.addValue(sv);
141
147
  return;
142
148
  }
143
- if (isGroup && group && serializedValue !== undefined) {
144
- if (isChecked) group.state.removeValue(serializedValue);else group.state.addValue(serializedValue);
145
- return;
146
- }
147
- if (props.checked !== undefined) {
148
- onChange?.(!props.checked);
149
+ if (p.checked !== undefined) {
150
+ onChange?.(!p.checked);
149
151
  return;
150
152
  }
151
153
  if (onChange) {
152
- standaloneState.setSelected(!standaloneState.isSelected);
154
+ ss.setSelected(!ss.isSelected);
153
155
  }
154
156
  }
155
157
  } : {};
156
- const labelNode = children === null || children === undefined || children === false ? null : (0, _utils.isText)(children) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
158
+ const ln = !(0, _validate.isRenderable)(children) ? null : (0, _validate.isText)(children) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
157
159
  accessible: false,
158
- style: [tokens.layout.label, {
159
- color: labelColor,
160
- fontSize: tokens.typography.fontSize,
161
- lineHeight: tokens.typography.fontSize * tokens.typography.lineHeightMultiplier,
162
- fontFamily: tokens.typography.fontFamily,
163
- fontWeight: tokens.typography.fontWeight
160
+ style: [t.layout.label, {
161
+ color: lc,
162
+ fontSize: t.typography.fontSize,
163
+ lineHeight: t.typography.fontSize * t.typography.lineHeightMultiplier,
164
+ fontFamily: t.typography.fontFamily,
165
+ fontWeight: t.typography.fontWeight
164
166
  }, labelStyle]
165
167
  }, children) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
166
168
  accessible: false,
167
169
  style: labelStyle
168
170
  }, children);
169
- const iconBaseStyle = {
170
- width: resolvedIconSize,
171
- height: resolvedIconSize,
172
- borderRadius,
173
- borderColor,
174
- backgroundColor,
175
- borderWidth: tokens.borders.width
171
+ const ibs = {
172
+ width: ris,
173
+ height: ris,
174
+ borderRadius: br,
175
+ backgroundColor: bgc
176
176
  };
177
- const defaultIcon = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
178
- style: [tokens.layout.icon, iconBaseStyle]
179
- }, isChecked && /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
180
- style: [tokens.layout.checkmark, {
181
- color: tokens.colors.checkmark,
182
- fontSize: resolvedIconSize * tokens.icon.scale
177
+ const di = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
178
+ style: [t.layout.icon, ibs]
179
+ }, ic && /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
180
+ style: [t.layout.checkmark, {
181
+ color: t.colors.checkmark,
182
+ fontSize: ris * t.icon.scale
183
183
  }]
184
- }, "\u2713"));
185
- let iconVisual = defaultIcon;
186
- if (resolvedIconRender) {
187
- iconVisual = resolvedIconRender({
188
- checked: Boolean(isChecked),
189
- disabled: Boolean(resolvedDisabled)
184
+ }, "\u2713"), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
185
+ style: (0, _utils.createHairlineView)({
186
+ position: 'all',
187
+ color: bc,
188
+ borderRadius: br
189
+ })
190
+ }));
191
+ let iv = di;
192
+ if (rir) {
193
+ iv = rir({
194
+ checked: Boolean(ic),
195
+ disabled: Boolean(rd)
190
196
  }) ?? null;
191
197
  }
192
- const interactive = !resolvedDisabled && !resolvedLabelDisabled;
193
- const labelWrapper = labelNode ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
194
- style: [tokens.layout.labelWrapper, spacingStyle],
195
- pointerEvents: resolvedLabelDisabled ? 'none' : undefined,
198
+ const i = !rd && !rld;
199
+ const lw = ln && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
200
+ style: [t.layout.labelWrapper, ss_],
201
+ pointerEvents: rld ? 'none' : undefined,
196
202
  accessible: false
197
- }, labelNode) : null;
198
- const iconWrapperStyle = [tokens.layout.iconWrapper, resolvedLabelPosition === 'left' ? {
199
- marginLeft: tokens.spacing.gap
203
+ }, ln);
204
+ const iws = [t.layout.iconWrapper, rlp === 'left' ? {
205
+ marginLeft: t.spacing.gap
200
206
  } : {
201
- marginRight: tokens.spacing.gap
207
+ marginRight: t.spacing.gap
202
208
  }];
203
- const iconWrapper = interactive ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
204
- style: iconWrapperStyle
205
- }, iconVisual) : /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({}, mergedInputProps, {
206
- ref: internalRef,
207
- disabled: resolvedDisabled,
208
- accessibilityLabel: resolvedAccessibilityLabel,
209
+ const iw = i ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
210
+ style: iws
211
+ }, iv) : /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({}, mip, {
212
+ ref: ir,
213
+ disabled: rd,
214
+ accessibilityLabel: ral,
209
215
  accessibilityRole: "checkbox",
210
216
  accessibilityState: {
211
- checked: isChecked,
212
- disabled: !!resolvedDisabled
217
+ checked: ic,
218
+ disabled: !!rd
213
219
  },
214
- style: iconWrapperStyle,
220
+ style: iws,
215
221
  hitSlop: hitSlop
216
- }), iconVisual);
217
- const content = resolvedLabelPosition === 'left' ? /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, labelWrapper, iconWrapper) : /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, iconWrapper, labelWrapper);
218
- if (interactive) {
219
- return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({}, mergedInputProps, {
220
- ref: internalRef,
221
- disabled: resolvedDisabled,
222
- accessibilityLabel: resolvedAccessibilityLabel,
222
+ }), iv);
223
+ const cnt = rlp === 'left' ? /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, lw, iw) : /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, iw, lw);
224
+ if (i) {
225
+ return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({}, mip, {
226
+ ref: ir,
227
+ disabled: rd,
228
+ accessibilityLabel: ral,
223
229
  accessibilityRole: "checkbox",
224
230
  accessibilityState: {
225
- checked: isChecked,
226
- disabled: !!resolvedDisabled
231
+ checked: ic,
232
+ disabled: !!rd
227
233
  },
228
234
  style: ({
229
235
  pressed
230
- }) => [tokens.layout.container, style, _reactNative().Platform.OS === 'web' && {
236
+ }) => [t.layout.container, style, _reactNative().Platform.OS === 'web' && {
231
237
  cursor: 'pointer'
232
238
  }, pressed && {
233
239
  opacity: 0.8
234
240
  }],
235
241
  hitSlop: hitSlop
236
- }), content);
242
+ }), cnt);
237
243
  }
238
244
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
239
- style: [tokens.layout.container, style]
240
- }, content);
241
- });
242
- Checkbox.displayName = 'Checkbox';
245
+ style: [t.layout.container, style]
246
+ }, cnt);
247
+ };
248
+ const CheckboxForwardRef = /*#__PURE__*/_react().default.forwardRef(CheckboxImpl);
249
+ const Checkbox = exports.Checkbox = /*#__PURE__*/_react().default.memo(CheckboxForwardRef);
243
250
  var _default = exports.default = Checkbox;