react-native-platform-components 1.4.0 → 1.6.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 (600) hide show
  1. package/PlatformComponents.podspec +1 -1
  2. package/README.md +33 -31
  3. package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +175 -9
  4. package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +52 -2
  5. package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +44 -12
  6. package/android/src/main/java/com/platformcomponents/PCButtonView.kt +187 -5
  7. package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +85 -7
  8. package/android/src/main/java/com/platformcomponents/PCContextMenuView.kt +41 -151
  9. package/android/src/main/java/com/platformcomponents/PCContextMenuViewManager.kt +7 -63
  10. package/android/src/main/java/com/platformcomponents/PCDatePickerView.kt +310 -115
  11. package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +23 -3
  12. package/android/src/main/java/com/platformcomponents/PCExpressive.kt +6 -1
  13. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonView.kt +485 -0
  14. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonViewManager.kt +109 -0
  15. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +132 -0
  16. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +8 -0
  17. package/android/src/main/java/com/platformcomponents/PCHaptics.kt +46 -0
  18. package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +42 -7
  19. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerView.kt +32 -0
  20. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerViewManager.kt +31 -0
  21. package/android/src/main/java/com/platformcomponents/PCLiquidGlassView.kt +32 -6
  22. package/android/src/main/java/com/platformcomponents/PCLiquidGlassViewManager.kt +4 -0
  23. package/android/src/main/java/com/platformcomponents/PCMenuSupport.kt +280 -0
  24. package/android/src/main/java/com/platformcomponents/PCNavigationBarSupport.kt +332 -0
  25. package/android/src/main/java/com/platformcomponents/PCNavigationRailView.kt +448 -0
  26. package/android/src/main/java/com/platformcomponents/PCNavigationRailViewManager.kt +176 -0
  27. package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +24 -14
  28. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +14 -2
  29. package/android/src/main/java/com/platformcomponents/PCSelectionMenuView.kt +371 -39
  30. package/android/src/main/java/com/platformcomponents/PCSelectionMenuViewManager.kt +18 -4
  31. package/android/src/main/java/com/platformcomponents/PCTabBarView.kt +397 -0
  32. package/android/src/main/java/com/platformcomponents/PCTabBarViewManager.kt +182 -0
  33. package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +415 -40
  34. package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +109 -3
  35. package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
  36. package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +4 -0
  37. package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
  38. package/android/src/main/res/values/ids.xml +5 -0
  39. package/android/src/main/res/values/styles.xml +24 -0
  40. package/ios/PCButton.mm +122 -7
  41. package/ios/PCButtonGroup.mm +68 -1
  42. package/ios/PCButtonGroupView.swift +225 -6
  43. package/ios/PCButtonSupport.swift +181 -10
  44. package/ios/PCButtonView.swift +297 -14
  45. package/ios/PCConstants.swift +23 -2
  46. package/ios/PCContextMenu.mm +28 -110
  47. package/ios/PCContextMenu.swift +106 -167
  48. package/ios/PCDatePicker.mm +21 -9
  49. package/ios/PCDatePickerView.swift +94 -20
  50. package/ios/PCFloatingActionButton.h +10 -0
  51. package/ios/PCFloatingActionButton.mm +177 -0
  52. package/ios/PCFloatingActionButtonView.swift +426 -0
  53. package/ios/PCFloatingToolbar.mm +27 -0
  54. package/ios/PCFloatingToolbarView.swift +241 -0
  55. package/ios/PCHaptics.swift +91 -0
  56. package/ios/PCImageLoader.swift +76 -12
  57. package/ios/PCLiquidGlass.mm +36 -0
  58. package/ios/PCLiquidGlass.swift +221 -114
  59. package/ios/PCLiquidGlassContainer.h +10 -0
  60. package/ios/PCLiquidGlassContainer.mm +84 -0
  61. package/ios/PCLiquidGlassContainer.swift +69 -0
  62. package/ios/PCMenuItems.h +76 -0
  63. package/ios/PCMenuSupport.swift +350 -0
  64. package/ios/PCNavigationRail.h +10 -0
  65. package/ios/PCNavigationRail.mm +270 -0
  66. package/ios/PCNavigationRailView.swift +415 -0
  67. package/ios/PCSegmentedControl.mm +17 -2
  68. package/ios/PCSegmentedControl.swift +57 -7
  69. package/ios/PCSelectionMenu.mm +36 -8
  70. package/ios/PCSelectionMenu.swift +224 -48
  71. package/ios/PCTabBar.h +10 -0
  72. package/ios/PCTabBar.mm +285 -0
  73. package/ios/PCTabBarAccessory.h +10 -0
  74. package/ios/PCTabBarAccessory.mm +93 -0
  75. package/ios/PCTabBarAccessoryView.swift +96 -0
  76. package/ios/PCTabBarView.swift +671 -0
  77. package/ios/PCTextField.mm +159 -4
  78. package/ios/PCTextFieldView.swift +603 -57
  79. package/lib/commonjs/Button.js +73 -1
  80. package/lib/commonjs/Button.js.map +1 -1
  81. package/lib/commonjs/ButtonGroup.js +13 -3
  82. package/lib/commonjs/ButtonGroup.js.map +1 -1
  83. package/lib/commonjs/ButtonGroupNativeComponent.ts +74 -4
  84. package/lib/commonjs/ButtonNativeComponent.ts +119 -3
  85. package/lib/commonjs/ContextMenu.js +9 -48
  86. package/lib/commonjs/ContextMenu.js.map +1 -1
  87. package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
  88. package/lib/commonjs/DatePicker.js +98 -2
  89. package/lib/commonjs/DatePicker.js.map +1 -1
  90. package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
  91. package/lib/commonjs/FloatingActionButton.js +60 -0
  92. package/lib/commonjs/FloatingActionButton.js.map +1 -0
  93. package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
  94. package/lib/commonjs/FloatingToolbar.js +9 -1
  95. package/lib/commonjs/FloatingToolbar.js.map +1 -1
  96. package/lib/commonjs/FloatingToolbarNativeComponent.ts +16 -0
  97. package/lib/commonjs/LiquidGlass.js +7 -1
  98. package/lib/commonjs/LiquidGlass.js.map +1 -1
  99. package/lib/commonjs/LiquidGlassContainer.js +32 -0
  100. package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
  101. package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
  102. package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
  103. package/lib/commonjs/NavigationRail.js +104 -0
  104. package/lib/commonjs/NavigationRail.js.map +1 -0
  105. package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
  106. package/lib/commonjs/PlatformComponentsProvider.js +18 -0
  107. package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
  108. package/lib/commonjs/SegmentedControl.js +7 -0
  109. package/lib/commonjs/SegmentedControl.js.map +1 -1
  110. package/lib/commonjs/SegmentedControlNativeComponent.ts +11 -0
  111. package/lib/commonjs/SelectionMenu.js +27 -3
  112. package/lib/commonjs/SelectionMenu.js.map +1 -1
  113. package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
  114. package/lib/commonjs/SplitButton.js +98 -0
  115. package/lib/commonjs/SplitButton.js.map +1 -0
  116. package/lib/commonjs/TabBar.js +203 -0
  117. package/lib/commonjs/TabBar.js.map +1 -0
  118. package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
  119. package/lib/commonjs/TabBarNativeComponent.ts +145 -0
  120. package/lib/commonjs/TextField.js +171 -8
  121. package/lib/commonjs/TextField.js.map +1 -1
  122. package/lib/commonjs/TextFieldNativeComponent.ts +110 -4
  123. package/lib/commonjs/focusRegistry.js +2 -1
  124. package/lib/commonjs/focusRegistry.js.map +1 -1
  125. package/lib/commonjs/haptics.js +2 -0
  126. package/lib/commonjs/haptics.js.map +1 -0
  127. package/lib/commonjs/icons.js +15 -1
  128. package/lib/commonjs/icons.js.map +1 -1
  129. package/lib/commonjs/index.js +77 -0
  130. package/lib/commonjs/index.js.map +1 -1
  131. package/lib/commonjs/index.web.js +156 -92
  132. package/lib/commonjs/index.web.js.map +1 -1
  133. package/lib/commonjs/jest.js +910 -0
  134. package/lib/commonjs/jest.js.map +1 -0
  135. package/lib/commonjs/menuItems.js +68 -0
  136. package/lib/commonjs/menuItems.js.map +1 -0
  137. package/lib/commonjs/selectionIdentifiers.js +18 -0
  138. package/lib/commonjs/selectionIdentifiers.js.map +1 -0
  139. package/lib/commonjs/submitBehavior.js +19 -0
  140. package/lib/commonjs/submitBehavior.js.map +1 -0
  141. package/lib/commonjs/tabItems.js +49 -0
  142. package/lib/commonjs/tabItems.js.map +1 -0
  143. package/lib/commonjs/web/Button.js +170 -0
  144. package/lib/commonjs/web/Button.js.map +1 -0
  145. package/lib/commonjs/web/ButtonGroup.js +119 -0
  146. package/lib/commonjs/web/ButtonGroup.js.map +1 -0
  147. package/lib/commonjs/web/DatePicker.js +168 -0
  148. package/lib/commonjs/web/DatePicker.js.map +1 -0
  149. package/lib/commonjs/web/DateRangePicker.js +137 -0
  150. package/lib/commonjs/web/DateRangePicker.js.map +1 -0
  151. package/lib/commonjs/web/Dialog.js +54 -0
  152. package/lib/commonjs/web/Dialog.js.map +1 -0
  153. package/lib/commonjs/web/FloatingActionButton.js +98 -0
  154. package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
  155. package/lib/commonjs/web/Icon.js +34 -0
  156. package/lib/commonjs/web/Icon.js.map +1 -0
  157. package/lib/commonjs/web/NativeTheme.js +28 -0
  158. package/lib/commonjs/web/NativeTheme.js.map +1 -0
  159. package/lib/commonjs/web/NavigationRail.js +139 -0
  160. package/lib/commonjs/web/NavigationRail.js.map +1 -0
  161. package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
  162. package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
  163. package/lib/commonjs/web/SegmentedControl.js +117 -0
  164. package/lib/commonjs/web/SegmentedControl.js.map +1 -0
  165. package/lib/commonjs/web/SelectionMenu.js +142 -0
  166. package/lib/commonjs/web/SelectionMenu.js.map +1 -0
  167. package/lib/commonjs/web/SplitButton.js +35 -0
  168. package/lib/commonjs/web/SplitButton.js.map +1 -0
  169. package/lib/commonjs/web/TabBar.js +131 -0
  170. package/lib/commonjs/web/TabBar.js.map +1 -0
  171. package/lib/commonjs/web/TextField.js +322 -0
  172. package/lib/commonjs/web/TextField.js.map +1 -0
  173. package/lib/commonjs/web/components.js +36 -0
  174. package/lib/commonjs/web/components.js.map +1 -0
  175. package/lib/commonjs/web/containers.js +121 -0
  176. package/lib/commonjs/web/containers.js.map +1 -0
  177. package/lib/commonjs/web/dateInput.js +116 -0
  178. package/lib/commonjs/web/dateInput.js.map +1 -0
  179. package/lib/commonjs/web/shared.js +192 -0
  180. package/lib/commonjs/web/shared.js.map +1 -0
  181. package/lib/commonjs/webComponents.js +6 -0
  182. package/lib/commonjs/webComponents.js.map +1 -0
  183. package/lib/module/Button.js +74 -2
  184. package/lib/module/Button.js.map +1 -1
  185. package/lib/module/ButtonGroup.js +13 -3
  186. package/lib/module/ButtonGroup.js.map +1 -1
  187. package/lib/module/ButtonGroupNativeComponent.ts +74 -4
  188. package/lib/module/ButtonNativeComponent.ts +119 -3
  189. package/lib/module/ContextMenu.js +9 -48
  190. package/lib/module/ContextMenu.js.map +1 -1
  191. package/lib/module/ContextMenuNativeComponent.ts +47 -49
  192. package/lib/module/DatePicker.js +98 -4
  193. package/lib/module/DatePicker.js.map +1 -1
  194. package/lib/module/DatePickerNativeComponent.ts +19 -2
  195. package/lib/module/FloatingActionButton.js +53 -0
  196. package/lib/module/FloatingActionButton.js.map +1 -0
  197. package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
  198. package/lib/module/FloatingToolbar.js +9 -1
  199. package/lib/module/FloatingToolbar.js.map +1 -1
  200. package/lib/module/FloatingToolbarNativeComponent.ts +16 -0
  201. package/lib/module/LiquidGlass.js +7 -1
  202. package/lib/module/LiquidGlass.js.map +1 -1
  203. package/lib/module/LiquidGlassContainer.js +26 -0
  204. package/lib/module/LiquidGlassContainer.js.map +1 -0
  205. package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
  206. package/lib/module/LiquidGlassNativeComponent.ts +8 -0
  207. package/lib/module/NavigationRail.js +99 -0
  208. package/lib/module/NavigationRail.js.map +1 -0
  209. package/lib/module/NavigationRailNativeComponent.ts +107 -0
  210. package/lib/module/PlatformComponentsProvider.js +13 -0
  211. package/lib/module/PlatformComponentsProvider.js.map +1 -0
  212. package/lib/module/SegmentedControl.js +9 -1
  213. package/lib/module/SegmentedControl.js.map +1 -1
  214. package/lib/module/SegmentedControlNativeComponent.ts +11 -0
  215. package/lib/module/SelectionMenu.js +27 -3
  216. package/lib/module/SelectionMenu.js.map +1 -1
  217. package/lib/module/SelectionMenuNativeComponent.ts +26 -4
  218. package/lib/module/SplitButton.js +91 -0
  219. package/lib/module/SplitButton.js.map +1 -0
  220. package/lib/module/TabBar.js +196 -0
  221. package/lib/module/TabBar.js.map +1 -0
  222. package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
  223. package/lib/module/TabBarNativeComponent.ts +145 -0
  224. package/lib/module/TextField.js +172 -9
  225. package/lib/module/TextField.js.map +1 -1
  226. package/lib/module/TextFieldNativeComponent.ts +110 -4
  227. package/lib/module/focusRegistry.js +1 -0
  228. package/lib/module/focusRegistry.js.map +1 -1
  229. package/lib/module/haptics.js +2 -0
  230. package/lib/module/haptics.js.map +1 -0
  231. package/lib/module/icons.js +15 -1
  232. package/lib/module/icons.js.map +1 -1
  233. package/lib/module/index.js +7 -0
  234. package/lib/module/index.js.map +1 -1
  235. package/lib/module/index.web.js +12 -87
  236. package/lib/module/index.web.js.map +1 -1
  237. package/lib/module/jest.js +840 -0
  238. package/lib/module/jest.js.map +1 -0
  239. package/lib/module/menuItems.js +65 -0
  240. package/lib/module/menuItems.js.map +1 -0
  241. package/lib/module/selectionIdentifiers.js +14 -0
  242. package/lib/module/selectionIdentifiers.js.map +1 -0
  243. package/lib/module/submitBehavior.js +15 -0
  244. package/lib/module/submitBehavior.js.map +1 -0
  245. package/lib/module/tabItems.js +45 -0
  246. package/lib/module/tabItems.js.map +1 -0
  247. package/lib/module/web/Button.js +164 -0
  248. package/lib/module/web/Button.js.map +1 -0
  249. package/lib/module/web/ButtonGroup.js +113 -0
  250. package/lib/module/web/ButtonGroup.js.map +1 -0
  251. package/lib/module/web/DatePicker.js +162 -0
  252. package/lib/module/web/DatePicker.js.map +1 -0
  253. package/lib/module/web/DateRangePicker.js +131 -0
  254. package/lib/module/web/DateRangePicker.js.map +1 -0
  255. package/lib/module/web/Dialog.js +48 -0
  256. package/lib/module/web/Dialog.js.map +1 -0
  257. package/lib/module/web/FloatingActionButton.js +94 -0
  258. package/lib/module/web/FloatingActionButton.js.map +1 -0
  259. package/lib/module/web/Icon.js +29 -0
  260. package/lib/module/web/Icon.js.map +1 -0
  261. package/lib/module/web/NativeTheme.js +23 -0
  262. package/lib/module/web/NativeTheme.js.map +1 -0
  263. package/lib/module/web/NavigationRail.js +133 -0
  264. package/lib/module/web/NavigationRail.js.map +1 -0
  265. package/lib/module/web/PlatformComponentsProvider.js +44 -0
  266. package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
  267. package/lib/module/web/SegmentedControl.js +112 -0
  268. package/lib/module/web/SegmentedControl.js.map +1 -0
  269. package/lib/module/web/SelectionMenu.js +137 -0
  270. package/lib/module/web/SelectionMenu.js.map +1 -0
  271. package/lib/module/web/SplitButton.js +30 -0
  272. package/lib/module/web/SplitButton.js.map +1 -0
  273. package/lib/module/web/TabBar.js +126 -0
  274. package/lib/module/web/TabBar.js.map +1 -0
  275. package/lib/module/web/TextField.js +316 -0
  276. package/lib/module/web/TextField.js.map +1 -0
  277. package/lib/module/web/components.js +33 -0
  278. package/lib/module/web/components.js.map +1 -0
  279. package/lib/module/web/containers.js +112 -0
  280. package/lib/module/web/containers.js.map +1 -0
  281. package/lib/module/web/dateInput.js +109 -0
  282. package/lib/module/web/dateInput.js.map +1 -0
  283. package/lib/module/web/shared.js +179 -0
  284. package/lib/module/web/shared.js.map +1 -0
  285. package/lib/module/webComponents.js +4 -0
  286. package/lib/module/webComponents.js.map +1 -0
  287. package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/src/Button.d.ts +111 -3
  289. package/lib/typescript/commonjs/src/Button.d.ts.map +1 -1
  290. package/lib/typescript/commonjs/src/ButtonGroup.d.ts +21 -6
  291. package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -1
  292. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +64 -3
  293. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -1
  294. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +94 -3
  295. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -1
  296. package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
  297. package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
  298. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
  299. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
  300. package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
  301. package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
  302. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
  303. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  304. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
  305. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  307. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +30 -0
  309. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +12 -0
  311. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -1
  312. package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
  313. package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
  314. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
  315. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  317. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
  319. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  320. package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
  321. package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
  323. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
  325. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +18 -1
  327. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  328. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +9 -0
  329. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  330. package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
  331. package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
  332. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
  333. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  334. package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
  335. package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
  337. package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  339. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
  341. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
  342. package/lib/typescript/commonjs/src/TextField.d.ts +166 -8
  343. package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -1
  344. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +81 -3
  345. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -1
  346. package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
  348. package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/icons.d.ts +7 -1
  350. package/lib/typescript/commonjs/src/icons.d.ts.map +1 -1
  351. package/lib/typescript/commonjs/src/index.d.ts +7 -0
  352. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  353. package/lib/typescript/commonjs/src/index.web.d.ts +25 -254
  354. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  355. package/lib/typescript/commonjs/src/jest.d.ts +139 -0
  356. package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
  358. package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
  360. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
  362. package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
  364. package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
  366. package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
  367. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
  368. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
  369. package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
  370. package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
  372. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
  374. package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
  376. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
  378. package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
  379. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
  380. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
  382. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
  384. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
  386. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
  388. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
  390. package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
  392. package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
  394. package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
  396. package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
  398. package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
  400. package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
  402. package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
  404. package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
  405. package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
  406. package/lib/typescript/module/src/Button.d.ts +111 -3
  407. package/lib/typescript/module/src/Button.d.ts.map +1 -1
  408. package/lib/typescript/module/src/ButtonGroup.d.ts +21 -6
  409. package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -1
  410. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +64 -3
  411. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -1
  412. package/lib/typescript/module/src/ButtonNativeComponent.d.ts +94 -3
  413. package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -1
  414. package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
  415. package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
  416. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
  417. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
  418. package/lib/typescript/module/src/DatePicker.d.ts +74 -1
  419. package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
  420. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
  421. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  422. package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
  423. package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
  424. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  425. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  426. package/lib/typescript/module/src/FloatingToolbar.d.ts +30 -0
  427. package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -1
  428. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +12 -0
  429. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -1
  430. package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
  431. package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
  432. package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
  433. package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
  434. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  435. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  436. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
  437. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  438. package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
  439. package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
  440. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
  441. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
  442. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
  443. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
  444. package/lib/typescript/module/src/SegmentedControl.d.ts +18 -1
  445. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  446. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +9 -0
  447. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  448. package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
  449. package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
  450. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
  451. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  452. package/lib/typescript/module/src/SplitButton.d.ts +83 -0
  453. package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
  454. package/lib/typescript/module/src/TabBar.d.ts +144 -0
  455. package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
  456. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  457. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  458. package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
  459. package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
  460. package/lib/typescript/module/src/TextField.d.ts +166 -8
  461. package/lib/typescript/module/src/TextField.d.ts.map +1 -1
  462. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +81 -3
  463. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -1
  464. package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -1
  465. package/lib/typescript/module/src/haptics.d.ts +20 -0
  466. package/lib/typescript/module/src/haptics.d.ts.map +1 -0
  467. package/lib/typescript/module/src/icons.d.ts +7 -1
  468. package/lib/typescript/module/src/icons.d.ts.map +1 -1
  469. package/lib/typescript/module/src/index.d.ts +7 -0
  470. package/lib/typescript/module/src/index.d.ts.map +1 -1
  471. package/lib/typescript/module/src/index.web.d.ts +25 -254
  472. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  473. package/lib/typescript/module/src/jest.d.ts +139 -0
  474. package/lib/typescript/module/src/jest.d.ts.map +1 -0
  475. package/lib/typescript/module/src/menuItems.d.ts +100 -0
  476. package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
  477. package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
  478. package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
  479. package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
  480. package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
  481. package/lib/typescript/module/src/tabItems.d.ts +55 -0
  482. package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
  483. package/lib/typescript/module/src/web/Button.d.ts +9 -0
  484. package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
  485. package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
  486. package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
  487. package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
  488. package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
  489. package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
  490. package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
  491. package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
  492. package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
  493. package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
  494. package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
  495. package/lib/typescript/module/src/web/Icon.d.ts +12 -0
  496. package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
  497. package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
  498. package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
  499. package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
  500. package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
  501. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
  502. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  503. package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
  504. package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
  505. package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
  506. package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
  507. package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
  508. package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
  509. package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
  510. package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
  511. package/lib/typescript/module/src/web/TextField.d.ts +9 -0
  512. package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
  513. package/lib/typescript/module/src/web/components.d.ts +17 -0
  514. package/lib/typescript/module/src/web/components.d.ts.map +1 -0
  515. package/lib/typescript/module/src/web/containers.d.ts +24 -0
  516. package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
  517. package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
  518. package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
  519. package/lib/typescript/module/src/web/shared.d.ts +43 -0
  520. package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
  521. package/lib/typescript/module/src/webComponents.d.ts +43 -0
  522. package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
  523. package/package.json +32 -2
  524. package/plugin/build/index.cjs +79 -6
  525. package/plugin/build/index.d.ts +27 -2
  526. package/plugin/build/index.d.ts.map +1 -1
  527. package/plugin/tsconfig.json +2 -1
  528. package/react-native.config.js +3 -0
  529. package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
  530. package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
  531. package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
  532. package/shared/PCFloatingActionButtonState-custom.h +61 -0
  533. package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
  534. package/shared/PCNavigationRailShadowNode-custom.h +42 -0
  535. package/shared/PCNavigationRailState-custom.h +62 -0
  536. package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
  537. package/shared/PCTabBarShadowNode-custom.cpp +54 -0
  538. package/shared/PCTabBarShadowNode-custom.h +54 -0
  539. package/shared/PCTabBarState-custom.h +62 -0
  540. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +3 -0
  541. package/src/Button.tsx +222 -7
  542. package/src/ButtonGroup.tsx +29 -11
  543. package/src/ButtonGroupNativeComponent.ts +74 -4
  544. package/src/ButtonNativeComponent.ts +119 -3
  545. package/src/ContextMenu.tsx +34 -81
  546. package/src/ContextMenuNativeComponent.ts +47 -49
  547. package/src/DatePicker.tsx +182 -4
  548. package/src/DatePickerNativeComponent.ts +19 -2
  549. package/src/FloatingActionButton.tsx +121 -0
  550. package/src/FloatingActionButtonNativeComponent.ts +58 -0
  551. package/src/FloatingToolbar.tsx +54 -3
  552. package/src/FloatingToolbarNativeComponent.ts +16 -0
  553. package/src/LiquidGlass.tsx +24 -1
  554. package/src/LiquidGlassContainer.tsx +42 -0
  555. package/src/LiquidGlassContainerNativeComponent.ts +17 -0
  556. package/src/LiquidGlassNativeComponent.ts +8 -0
  557. package/src/NavigationRail.tsx +203 -0
  558. package/src/NavigationRailNativeComponent.ts +107 -0
  559. package/src/PlatformComponentsProvider.tsx +15 -0
  560. package/src/SegmentedControl.tsx +31 -1
  561. package/src/SegmentedControlNativeComponent.ts +11 -0
  562. package/src/SelectionMenu.tsx +81 -6
  563. package/src/SelectionMenuNativeComponent.ts +26 -4
  564. package/src/SplitButton.tsx +198 -0
  565. package/src/TabBar.tsx +373 -0
  566. package/src/TabBarAccessoryNativeComponent.ts +19 -0
  567. package/src/TabBarNativeComponent.ts +145 -0
  568. package/src/TextField.tsx +428 -14
  569. package/src/TextFieldNativeComponent.ts +110 -4
  570. package/src/focusRegistry.ts +1 -0
  571. package/src/haptics.ts +31 -0
  572. package/src/icons.ts +28 -1
  573. package/src/index.tsx +7 -0
  574. package/src/index.web.tsx +51 -391
  575. package/src/jest.tsx +958 -0
  576. package/src/menuItems.ts +152 -0
  577. package/src/selectionIdentifiers.ts +17 -0
  578. package/src/submitBehavior.ts +16 -0
  579. package/src/tabItems.ts +113 -0
  580. package/src/web/Button.tsx +201 -0
  581. package/src/web/ButtonGroup.tsx +154 -0
  582. package/src/web/DatePicker.tsx +204 -0
  583. package/src/web/DateRangePicker.tsx +135 -0
  584. package/src/web/Dialog.tsx +54 -0
  585. package/src/web/FloatingActionButton.tsx +76 -0
  586. package/src/web/Icon.tsx +33 -0
  587. package/src/web/NativeTheme.ts +23 -0
  588. package/src/web/NavigationRail.tsx +148 -0
  589. package/src/web/PlatformComponentsProvider.tsx +48 -0
  590. package/src/web/SegmentedControl.tsx +127 -0
  591. package/src/web/SelectionMenu.tsx +149 -0
  592. package/src/web/SplitButton.tsx +32 -0
  593. package/src/web/TabBar.tsx +150 -0
  594. package/src/web/TextField.tsx +361 -0
  595. package/src/web/components.tsx +71 -0
  596. package/src/web/containers.tsx +130 -0
  597. package/src/web/dateInput.ts +137 -0
  598. package/src/web/shared.ts +176 -0
  599. package/src/webComponents.ts +45 -0
  600. package/android/src/main/java/com/platformcomponents/DateConstraints.kt +0 -83
@@ -1,7 +1,7 @@
1
1
  // DatePicker.tsx
2
- import React, { useCallback } from 'react';
2
+ import React, { useCallback, useEffect } from 'react';
3
3
  import type { NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native';
4
- import { StyleSheet } from 'react-native';
4
+ import { Platform, StyleSheet } from 'react-native';
5
5
 
6
6
  import NativeDatePicker, {
7
7
  type DateChangeEvent,
@@ -16,6 +16,13 @@ import NativeDatePicker, {
16
16
 
17
17
  import type { AndroidMaterialMode, Visible } from './sharedTypes';
18
18
 
19
+ /**
20
+ * Android: how the Material pickers take input. `'text'` opens the date
21
+ * picker on its text field and the time picker on its keyboard entry;
22
+ * `'calendar'` on the calendar and the clock dial. Default: `'calendar'`.
23
+ */
24
+ export type AndroidDatePickerInputMode = 'calendar' | 'text';
25
+
19
26
  export type DatePickerProps = {
20
27
  style?: StyleProp<ViewStyle>;
21
28
 
@@ -28,16 +35,38 @@ export type DatePickerProps = {
28
35
 
29
36
  locale?: string;
30
37
  timeZoneName?: string;
38
+
39
+ /**
40
+ * What to pick. `'yearAndMonth'` is `UIDatePicker`'s month and year wheels
41
+ * (iOS 17.4+; the date wheels before); Android shows the date picker.
42
+ * `'countDownTimer'` is iOS only (Android shows a date picker).
43
+ */
31
44
  mode?: DatePickerMode;
32
45
  presentation?: DatePickerPresentation;
33
46
 
47
+ /**
48
+ * Forces the 24-hour (`true`) or 12-hour (`false`) clock in the time
49
+ * modes. Default: the device setting. iOS: the picker's locale with that
50
+ * hour cycle. Android: the time picker's clock format.
51
+ */
52
+ is24Hour?: boolean;
53
+
34
54
  /**
35
55
  * Modal only. If presentation !== "modal", ignored.
36
56
  * Wrapper ergonomics: boolean.
37
57
  */
38
58
  visible?: boolean;
39
59
 
40
- onConfirm?: (dateTime: Date, confirmed: boolean) => void;
60
+ /**
61
+ * Called when the selection changes. `confirmed` is true for deliberate
62
+ * selections (see docs). `durationSeconds` is the selected duration in
63
+ * `countDownTimer` mode (iOS, and web's time input); 0 in other modes.
64
+ */
65
+ onConfirm?: (
66
+ dateTime: Date,
67
+ confirmed: boolean,
68
+ durationSeconds: number
69
+ ) => void;
41
70
  onClosed?: () => void;
42
71
 
43
72
  /** Test identifier */
@@ -64,6 +93,8 @@ export type DatePickerProps = {
64
93
  dialogTitle?: NativeAndroidProps['dialogTitle'];
65
94
  positiveButtonTitle?: NativeAndroidProps['positiveButtonTitle'];
66
95
  negativeButtonTitle?: NativeAndroidProps['negativeButtonTitle'];
96
+ /** Material pickers only (`material: 'm3'`). */
97
+ inputMode?: AndroidDatePickerInputMode;
67
98
  };
68
99
  };
69
100
 
@@ -97,6 +128,7 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
97
128
  mode,
98
129
  presentation = 'modal',
99
130
  visible,
131
+ is24Hour,
100
132
  onConfirm,
101
133
  onClosed,
102
134
  ios,
@@ -108,7 +140,8 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
108
140
 
109
141
  const handleConfirm = useCallback(
110
142
  (e: NativeSyntheticEvent<DateChangeEvent>) => {
111
- onConfirm?.(new Date(e.nativeEvent.timestampMs), e.nativeEvent.confirmed);
143
+ const { timestampMs, confirmed, durationSeconds } = e.nativeEvent;
144
+ onConfirm?.(new Date(timestampMs), confirmed, durationSeconds ?? 0);
112
145
  },
113
146
  [onConfirm]
114
147
  );
@@ -123,6 +156,7 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
123
156
  mode,
124
157
  locale,
125
158
  timeZoneName,
159
+ hourFormat: hourFormat(is24Hour),
126
160
 
127
161
  presentation,
128
162
  visible: normalizeVisible(presentation, visible),
@@ -151,6 +185,7 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
151
185
  dialogTitle: android.dialogTitle,
152
186
  positiveButtonTitle: android.positiveButtonTitle,
153
187
  negativeButtonTitle: android.negativeButtonTitle,
188
+ inputMode: android.inputMode,
154
189
  }
155
190
  : undefined,
156
191
  };
@@ -158,6 +193,149 @@ export function DatePicker(props: DatePickerProps): React.ReactElement {
158
193
  return <NativeDatePicker testID={testID} {...nativeProps} />;
159
194
  }
160
195
 
196
+ function hourFormat(is24Hour: boolean | undefined): string {
197
+ if (is24Hour === undefined) return '';
198
+ return is24Hour ? '24' : '12';
199
+ }
200
+
201
+ /** A range of days, as `DateRangePicker` reports it. */
202
+ export type DateRange = { startDate: Date; endDate: Date };
203
+
204
+ export type DateRangePickerProps = {
205
+ style?: StyleProp<ViewStyle>;
206
+
207
+ /** First day of the range the picker opens with; `null` for none. */
208
+ startDate?: Date | null;
209
+
210
+ /** Last day of the range the picker opens with; `null` for none. */
211
+ endDate?: Date | null;
212
+
213
+ /** Optional bounds. Use `null` for "unbounded". */
214
+ minDate?: Date | null;
215
+ maxDate?: Date | null;
216
+
217
+ /** Locale of the text-input date format. */
218
+ locale?: string;
219
+ timeZoneName?: string;
220
+
221
+ /** Shows the picker dialog. */
222
+ visible: boolean;
223
+
224
+ /**
225
+ * Called with the chosen range when the user confirms it. Both dates are
226
+ * the start (midnight) of their day in `timeZoneName`, or the device time
227
+ * zone; `endDate` is the last day of the range, inclusive.
228
+ */
229
+ onConfirm?: (range: DateRange) => void;
230
+
231
+ /** Called when the dialog closes, confirmed or not. */
232
+ onClosed?: () => void;
233
+
234
+ /** Test identifier */
235
+ testID?: string;
236
+
237
+ android?: {
238
+ firstDayOfWeek?: NativeAndroidProps['firstDayOfWeek'];
239
+ /** `'text'` opens on the start and end date fields. */
240
+ inputMode?: AndroidDatePickerInputMode;
241
+ dialogTitle?: NativeAndroidProps['dialogTitle'];
242
+ positiveButtonTitle?: NativeAndroidProps['positiveButtonTitle'];
243
+ negativeButtonTitle?: NativeAndroidProps['negativeButtonTitle'];
244
+ };
245
+ };
246
+
247
+ /**
248
+ * Whether `DateRangePicker` shows anything on this platform. iOS has no
249
+ * native date range picker; offer two `DatePicker`s there instead.
250
+ */
251
+ export const isDateRangePickerSupported: boolean = rangePickerSupported();
252
+
253
+ function rangePickerSupported(): boolean {
254
+ return Platform.OS !== 'ios';
255
+ }
256
+
257
+ /**
258
+ * A date range picker: Material's `MaterialDatePicker.dateRangePicker()` on
259
+ * Android, a modal dialog. iOS has no native range picker, so it renders
260
+ * nothing there and warns in development (see `isDateRangePickerSupported`).
261
+ */
262
+ export function DateRangePicker(
263
+ props: DateRangePickerProps
264
+ ): React.ReactElement | null {
265
+ const {
266
+ style,
267
+ startDate,
268
+ endDate,
269
+ minDate,
270
+ maxDate,
271
+ locale,
272
+ timeZoneName,
273
+ visible,
274
+ onConfirm,
275
+ onClosed,
276
+ android,
277
+ testID,
278
+ } = props;
279
+
280
+ const supported = rangePickerSupported();
281
+ useEffect(() => {
282
+ if (__DEV__ && visible && !supported) {
283
+ console.warn(
284
+ 'DateRangePicker: iOS has no native date range picker, so nothing is ' +
285
+ 'shown. Check isDateRangePickerSupported and offer two DatePickers ' +
286
+ 'on iOS.'
287
+ );
288
+ }
289
+ }, [visible, supported]);
290
+
291
+ const handleConfirm = useCallback(
292
+ (e: NativeSyntheticEvent<DateChangeEvent>) => {
293
+ const { timestampMs, endTimestampMs } = e.nativeEvent;
294
+ onConfirm?.({
295
+ startDate: new Date(timestampMs),
296
+ endDate: new Date(endTimestampMs),
297
+ });
298
+ },
299
+ [onConfirm]
300
+ );
301
+
302
+ const handleClosed = useCallback(() => {
303
+ onClosed?.();
304
+ }, [onClosed]);
305
+
306
+ if (!supported) return null;
307
+
308
+ return (
309
+ <NativeDatePicker
310
+ testID={testID}
311
+ style={[styles.picker, style]}
312
+ mode="dateRange"
313
+ presentation="modal"
314
+ visible={visible ? 'open' : 'closed'}
315
+ locale={locale}
316
+ timeZoneName={timeZoneName}
317
+ dateMs={dateToMsOrSentinel(startDate)}
318
+ endDateMs={dateToMsOrSentinel(endDate)}
319
+ minDateMs={dateToMsOrSentinel(minDate)}
320
+ maxDateMs={dateToMsOrSentinel(maxDate)}
321
+ onConfirm={onConfirm ? handleConfirm : undefined}
322
+ onClosed={onClosed ? handleClosed : undefined}
323
+ android={
324
+ android
325
+ ? {
326
+ firstDayOfWeek: android.firstDayOfWeek,
327
+ material: 'm3',
328
+ dialogTitle: android.dialogTitle,
329
+ positiveButtonTitle: android.positiveButtonTitle,
330
+ negativeButtonTitle: android.negativeButtonTitle,
331
+ inputMode: android.inputMode,
332
+ }
333
+ : undefined
334
+ }
335
+ />
336
+ );
337
+ }
338
+
161
339
  const styles = StyleSheet.create({
162
340
  picker: {},
163
341
  });
@@ -13,9 +13,20 @@ export type TimestampMs = Double;
13
13
  export type DateChangeEvent = {
14
14
  timestampMs: Double;
15
15
  confirmed: boolean;
16
+ /**
17
+ * iOS `countDownTimer` mode: the selected duration in seconds. 0 in every
18
+ * other mode and on Android (which has no countdown picker).
19
+ */
20
+ durationSeconds: Double;
21
+ /**
22
+ * `dateRange` mode (Android): the last day of the range, with
23
+ * `timestampMs` the first. 0 in every other mode.
24
+ */
25
+ endTimestampMs: Double;
16
26
  };
17
27
 
18
- export type DatePickerMode = 'date' | 'time' | 'dateAndTime' | 'countDownTimer';
28
+ export type DatePickerMode =
29
+ 'date' | 'time' | 'dateAndTime' | 'countDownTimer' | 'yearAndMonth';
19
30
  export type DatePickerPresentation = 'modal' | 'embedded';
20
31
 
21
32
  export type IOSDatePickerStyle = 'automatic' | 'compact' | 'inline' | 'wheels';
@@ -36,6 +47,7 @@ export type AndroidProps = {
36
47
  dialogTitle?: string;
37
48
  positiveButtonTitle?: string;
38
49
  negativeButtonTitle?: string;
50
+ inputMode?: string; // '' | 'calendar' | 'text'
39
51
  };
40
52
 
41
53
  export type WebProps = Readonly<{}>;
@@ -48,15 +60,20 @@ export type MacOSProps = Readonly<{}>;
48
60
  * (Allows negative timestamps for pre-1970 dates.)
49
61
  */
50
62
  export type CommonProps = {
51
- mode?: string; // DatePickerMode
63
+ mode?: string; // DatePickerMode, or 'dateRange' for DateRangePicker
52
64
 
53
65
  dateMs?: WithDefault<TimestampMs, -9007199254740991>;
66
+ /** `dateRange` mode: the last day of the range (`dateMs` is the first). */
67
+ endDateMs?: WithDefault<TimestampMs, -9007199254740991>;
54
68
  minDateMs?: WithDefault<TimestampMs, -9007199254740991>;
55
69
  maxDateMs?: WithDefault<TimestampMs, -9007199254740991>;
56
70
 
57
71
  locale?: string;
58
72
  timeZoneName?: string;
59
73
 
74
+ /** '' (device setting) | '12' | '24' */
75
+ hourFormat?: string;
76
+
60
77
  /**
61
78
  * Only used when presentation === "modal".
62
79
  * Defaults should be applied in JS wrapper (recommended).
@@ -0,0 +1,121 @@
1
+ // FloatingActionButton.tsx
2
+ import React, { useCallback, useMemo } from 'react';
3
+ import type { ColorValue, ViewProps } from 'react-native';
4
+
5
+ import NativeFloatingActionButton from './FloatingActionButtonNativeComponent';
6
+ import type { Haptics } from './haptics';
7
+ import { resolveIcon, type PlatformIcon } from './icons';
8
+
9
+ /**
10
+ * Button size.
11
+ *
12
+ * | Size | Android FAB | Android extended FAB | iOS |
13
+ * | --------- | ------------------------------- | -------------------- | ------------ |
14
+ * | `small` | 40dp small FAB (Material 3) | 56dp small extended | 44pt circle |
15
+ * | `regular` | 56dp FAB | 56dp small extended | 56pt circle |
16
+ * | `medium` | 80dp medium FAB (M3 Expressive) | 80dp medium extended | 80pt circle |
17
+ * | `large` | 96dp large FAB | 96dp large extended | 96pt circle |
18
+ *
19
+ * An extended iOS button is a capsule of the same height.
20
+ */
21
+ export type FloatingActionButtonSize = 'small' | 'regular' | 'medium' | 'large';
22
+
23
+ export interface FloatingActionButtonProps extends ViewProps {
24
+ /** The icon. See {@link PlatformIcon}. */
25
+ icon: PlatformIcon;
26
+
27
+ /**
28
+ * Label shown next to the icon: the extended FAB. Omit for an icon-only
29
+ * button, and give it an `accessibilityLabel`.
30
+ */
31
+ label?: string;
32
+
33
+ /**
34
+ * Whether a button with a `label` shows it. Default: `true`. Changing it
35
+ * animates: Android's `extend()` / `shrink()`, a capsule-to-circle
36
+ * animation on iOS. Ignored without a `label`.
37
+ */
38
+ extended?: boolean;
39
+
40
+ /** Size. Default: `'regular'`. See {@link FloatingActionButtonSize}. */
41
+ size?: FloatingActionButtonSize;
42
+
43
+ /**
44
+ * Container color. Android: `backgroundTint` (default: the Material
45
+ * primary container). iOS: `baseBackgroundColor`, the tint of the
46
+ * prominent glass (default: the tint color).
47
+ */
48
+ color?: ColorValue;
49
+
50
+ /**
51
+ * Icon and label color. Android: the icon tint and text color. iOS:
52
+ * `baseForegroundColor`.
53
+ */
54
+ tintColor?: ColorValue;
55
+
56
+ /** Whether the button is disabled. */
57
+ disabled?: boolean;
58
+
59
+ /** Screen-reader label. Defaults to `label`. */
60
+ accessibilityLabel?: string;
61
+
62
+ /**
63
+ * Haptic played when the button is pressed. Default: none, like the
64
+ * native buttons. See {@link Haptics}.
65
+ */
66
+ haptics?: Haptics;
67
+
68
+ /** Called when the button is pressed. */
69
+ onPress?: () => void;
70
+
71
+ /**
72
+ * The `nativeID` of the ScrollView (or FlatList) whose scrolling shrinks
73
+ * and extends the button: an extended button shrinks to its icon while
74
+ * the content scrolls down and extends again scrolling up or back at the
75
+ * top. Needs a `label`; `extended={false}` keeps it shrunk.
76
+ */
77
+ scrollViewNativeID?: string;
78
+
79
+ /** Test identifier */
80
+ testID?: string;
81
+ }
82
+
83
+ export function FloatingActionButton(
84
+ props: FloatingActionButtonProps
85
+ ): React.ReactElement {
86
+ const {
87
+ icon,
88
+ label,
89
+ extended,
90
+ size,
91
+ color,
92
+ tintColor,
93
+ disabled,
94
+ accessibilityLabel,
95
+ haptics,
96
+ onPress,
97
+ scrollViewNativeID,
98
+ ...viewProps
99
+ } = props;
100
+
101
+ const nativeIcon = useMemo(() => resolveIcon(icon), [icon]);
102
+
103
+ const handlePress = useCallback(() => onPress?.(), [onPress]);
104
+
105
+ return (
106
+ <NativeFloatingActionButton
107
+ icon={nativeIcon}
108
+ label={label ?? ''}
109
+ size={size ?? 'regular'}
110
+ extended={extended === false ? 'false' : 'true'}
111
+ color={color}
112
+ foregroundColor={tintColor}
113
+ interactivity={disabled ? 'disabled' : 'enabled'}
114
+ spokenLabel={accessibilityLabel ?? ''}
115
+ scrollViewNativeID={scrollViewNativeID ?? ''}
116
+ haptics={haptics ?? ''}
117
+ onFabPress={onPress ? handlePress : undefined}
118
+ {...viewProps}
119
+ />
120
+ );
121
+ }
@@ -0,0 +1,58 @@
1
+ // FloatingActionButtonNativeComponent.ts
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
+ import { codegenNativeComponent } from 'react-native';
4
+ import type { BubblingEventHandler, Double } from './codegenTypes';
5
+
6
+ /**
7
+ * Icon fields, pre-resolved on the JS side (see icons.ts).
8
+ */
9
+ export type FloatingActionButtonIconProps = Readonly<{
10
+ iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
11
+ iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
12
+ iconRequest: string;
13
+ iconUri: string; // Resolved image URI when iconType === 'image'
14
+ iconScale: Double; // Resolved image scale when iconType === 'image'
15
+ iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
16
+ }>;
17
+
18
+ export interface FloatingActionButtonNativeProps extends ViewProps {
19
+ /** The icon. */
20
+ icon?: FloatingActionButtonIconProps;
21
+
22
+ /** Label of the extended button; empty for an icon-only button. */
23
+ label?: string;
24
+
25
+ /** 'small' | 'regular' | 'medium' | 'large' */
26
+ size?: string;
27
+
28
+ /** 'true' | 'false': a button with a label shows it. */
29
+ extended?: string;
30
+
31
+ /** Container color. */
32
+ color?: ColorValue;
33
+
34
+ /** Icon and label color. */
35
+ foregroundColor?: ColorValue;
36
+
37
+ /** 'enabled' | 'disabled' */
38
+ interactivity?: string;
39
+
40
+ /** Screen-reader label, on the native button; empty = the label. */
41
+ spokenLabel?: string;
42
+
43
+ /** nativeID of the ScrollView whose scrolling shrinks and extends the button. */
44
+ scrollViewNativeID?: string;
45
+
46
+ /**
47
+ * Haptic played when the button is pressed: '' (none added) | 'none' | 'selection' |
48
+ * 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
49
+ */
50
+ haptics?: string;
51
+
52
+ /** Fired when the button is pressed. */
53
+ onFabPress?: BubblingEventHandler<Readonly<{}>>;
54
+ }
55
+
56
+ export default codegenNativeComponent<FloatingActionButtonNativeProps>(
57
+ 'PCFloatingActionButton'
58
+ ) as HostComponent<FloatingActionButtonNativeProps>;
@@ -17,6 +17,10 @@ export type FloatingToolbarIOSEffect = 'regular' | 'clear';
17
17
  /** Material 3 color variant of the toolbar on Android. */
18
18
  export type FloatingToolbarAndroidVariant = 'standard' | 'vibrant';
19
19
 
20
+ /** Scroll edge effect under the toolbar on iOS 26. */
21
+ export type FloatingToolbarScrollEdgeEffect =
22
+ 'automatic' | 'soft' | 'hard' | 'hidden';
23
+
20
24
  export interface FloatingToolbarProps extends ViewProps {
21
25
  /**
22
26
  * Layout direction of the children. Default: `'horizontal'`.
@@ -31,6 +35,23 @@ export interface FloatingToolbarProps extends ViewProps {
31
35
  */
32
36
  color?: ColorValue;
33
37
 
38
+ /**
39
+ * The `nativeID` of the ScrollView (or FlatList) the toolbar floats over.
40
+ * The toolbar works out which edge of it it sits on (top or bottom for a
41
+ * horizontal toolbar, left or right for a vertical one). Needed by
42
+ * `hideOnScroll` and `ios.scrollEdgeEffect`; on iOS 26 it also gives that
43
+ * edge the scroll edge effect, shaped around the toolbar.
44
+ */
45
+ scrollViewNativeID?: string;
46
+
47
+ /**
48
+ * Slides the toolbar past its edge of the linked ScrollView while the
49
+ * content scrolls down, and back as it scrolls up or reaches the top (the
50
+ * motion of Material's `HideViewOnScrollBehavior`, on both platforms).
51
+ * Needs `scrollViewNativeID`. Default: `false`.
52
+ */
53
+ hideOnScroll?: boolean;
54
+
34
55
  /**
35
56
  * iOS-specific configuration
36
57
  */
@@ -40,6 +61,21 @@ export interface FloatingToolbarProps extends ViewProps {
40
61
  * Default: `'regular'`.
41
62
  */
42
63
  effect?: FloatingToolbarIOSEffect;
64
+
65
+ /**
66
+ * iOS 26: the glass scales and shimmers under a touch
67
+ * (`UIGlassEffect.isInteractive`). Default: `false`.
68
+ */
69
+ interactive?: boolean;
70
+
71
+ /**
72
+ * iOS 26: the style of the linked ScrollView's edge effect under the
73
+ * toolbar (`UIScrollEdgeEffect`): `'soft'` fades the content out,
74
+ * `'hard'` cuts it off with a dividing line, `'hidden'` turns it off.
75
+ * The ScrollView gets its own values back when the toolbar unlinks.
76
+ * Default: the ScrollView's own (`'automatic'` unless changed).
77
+ */
78
+ scrollEdgeEffect?: FloatingToolbarScrollEdgeEffect;
43
79
  };
44
80
 
45
81
  /**
@@ -63,12 +99,25 @@ export interface FloatingToolbarProps extends ViewProps {
63
99
  export function FloatingToolbar(
64
100
  props: FloatingToolbarProps
65
101
  ): React.ReactElement {
66
- const { style, orientation, color, ios, android, children, ...viewProps } =
67
- props;
102
+ const {
103
+ style,
104
+ orientation,
105
+ color,
106
+ scrollViewNativeID,
107
+ hideOnScroll,
108
+ ios,
109
+ android,
110
+ children,
111
+ ...viewProps
112
+ } = props;
68
113
 
69
114
  const nativeIos = useMemo(() => {
70
115
  if (Platform.OS !== 'ios' || !ios) return undefined;
71
- return { effect: ios.effect ?? 'regular' };
116
+ return {
117
+ effect: ios.effect ?? 'regular',
118
+ interactive: ios.interactive ?? false,
119
+ scrollEdgeEffect: ios.scrollEdgeEffect ?? '',
120
+ };
72
121
  }, [ios]);
73
122
 
74
123
  const nativeAndroid = useMemo(() => {
@@ -89,6 +138,8 @@ export function FloatingToolbar(
89
138
  <NativeFloatingToolbar
90
139
  style={mergedStyle}
91
140
  color={color}
141
+ scrollViewNativeID={scrollViewNativeID ?? ''}
142
+ hideOnScroll={hideOnScroll ?? false}
92
143
  ios={nativeIos}
93
144
  android={nativeAndroid}
94
145
  {...viewProps}
@@ -1,6 +1,7 @@
1
1
  // FloatingToolbarNativeComponent.ts
2
2
  import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
3
  import { codegenNativeComponent } from 'react-native';
4
+ import type { WithDefault } from './codegenTypes';
4
5
 
5
6
  /**
6
7
  * iOS-specific configuration.
@@ -8,6 +9,15 @@ import { codegenNativeComponent } from 'react-native';
8
9
  export type FloatingToolbarIOSProps = Readonly<{
9
10
  /** Glass effect style on iOS 26: 'regular' | 'clear' */
10
11
  effect?: string;
12
+
13
+ /** iOS 26: glass that reacts to touches (UIGlassEffect.isInteractive) */
14
+ interactive?: WithDefault<boolean, false>;
15
+
16
+ /**
17
+ * iOS 26: the linked scroll view's edge effect under the toolbar:
18
+ * '' (the scroll view's own) | 'automatic' | 'soft' | 'hard' | 'hidden'
19
+ */
20
+ scrollEdgeEffect?: string;
11
21
  }>;
12
22
 
13
23
  /**
@@ -22,6 +32,12 @@ export interface FloatingToolbarNativeProps extends ViewProps {
22
32
  /** Container color. Default: the platform's toolbar material. */
23
33
  color?: ColorValue;
24
34
 
35
+ /** nativeID of the ScrollView the toolbar floats over. */
36
+ scrollViewNativeID?: string;
37
+
38
+ /** Slide off the linked ScrollView's edge while its content scrolls down. */
39
+ hideOnScroll?: WithDefault<boolean, false>;
40
+
25
41
  ios?: FloatingToolbarIOSProps;
26
42
  android?: FloatingToolbarAndroidProps;
27
43
  }
@@ -15,6 +15,11 @@ export type {
15
15
  LiquidGlassPressEvent,
16
16
  };
17
17
 
18
+ /**
19
+ * Corner shape of the glass: `'capsule'`, `'concentric'`, or a fixed radius.
20
+ */
21
+ export type LiquidGlassCornerStyle = 'capsule' | 'concentric' | number;
22
+
18
23
  function resolveLiquidGlassSupport(): boolean {
19
24
  if (Platform.OS !== 'ios') {
20
25
  return false;
@@ -50,6 +55,20 @@ export interface LiquidGlassProps extends ViewProps {
50
55
  */
51
56
  cornerRadius?: number;
52
57
 
58
+ /**
59
+ * Corner shape, set through `UIView.cornerConfiguration` on iOS 26.
60
+ * - `'capsule'`: fully rounded short sides that follow the view's size
61
+ * (`.capsule()`). Half the shorter side elsewhere.
62
+ * - `'concentric'`: each corner concentric with the matching corner of the
63
+ * enclosing shape, such as a parent `LiquidGlass` or the screen
64
+ * (`.containerConcentric()`). `cornerRadius` is the minimum on iOS 26
65
+ * and the radius elsewhere.
66
+ * - a number: a fixed radius, the same as `cornerRadius`.
67
+ *
68
+ * Default: `cornerRadius`.
69
+ */
70
+ cornerStyle?: LiquidGlassCornerStyle;
71
+
53
72
  /**
54
73
  * iOS-specific props for the glass effect.
55
74
  */
@@ -123,6 +142,7 @@ export function LiquidGlass(props: LiquidGlassProps): React.ReactElement {
123
142
  const {
124
143
  style,
125
144
  cornerRadius = 0,
145
+ cornerStyle,
126
146
  ios,
127
147
  android,
128
148
  children,
@@ -160,7 +180,10 @@ export function LiquidGlass(props: LiquidGlassProps): React.ReactElement {
160
180
  return (
161
181
  <NativeLiquidGlass
162
182
  style={style}
163
- cornerRadius={cornerRadius}
183
+ cornerRadius={
184
+ typeof cornerStyle === 'number' ? cornerStyle : cornerRadius
185
+ }
186
+ cornerStyle={typeof cornerStyle === 'string' ? cornerStyle : ''}
164
187
  ios={nativeIos}
165
188
  android={nativeAndroid}
166
189
  onGlassPress={onPress ? handlePress : undefined}