react-native-platform-components 1.3.0 → 1.5.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 (636) hide show
  1. package/PlatformComponents.podspec +1 -1
  2. package/README.md +47 -51
  3. package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +664 -0
  4. package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +241 -0
  5. package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +159 -0
  6. package/android/src/main/java/com/platformcomponents/PCButtonView.kt +527 -0
  7. package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +204 -0
  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 +112 -0
  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 +247 -0
  16. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +73 -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 +35 -17
  28. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +20 -3
  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 +1393 -0
  34. package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +354 -0
  35. package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
  36. package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +8 -0
  37. package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
  38. package/android/src/main/res/values/attrs.xml +13 -0
  39. package/android/src/main/res/values/ids.xml +5 -0
  40. package/android/src/main/res/values/styles.xml +207 -0
  41. package/ios/PCButton.h +10 -0
  42. package/ios/PCButton.mm +311 -0
  43. package/ios/PCButtonGroup.h +10 -0
  44. package/ios/PCButtonGroup.mm +323 -0
  45. package/ios/PCButtonGroupView.swift +473 -0
  46. package/ios/PCButtonSupport.swift +312 -0
  47. package/ios/PCButtonView.swift +438 -0
  48. package/ios/PCConstants.swift +23 -2
  49. package/ios/PCContextMenu.mm +28 -110
  50. package/ios/PCContextMenu.swift +106 -167
  51. package/ios/PCDatePicker.mm +21 -9
  52. package/ios/PCDatePickerView.swift +94 -20
  53. package/ios/PCFloatingActionButton.h +10 -0
  54. package/ios/PCFloatingActionButton.mm +177 -0
  55. package/ios/PCFloatingActionButtonView.swift +426 -0
  56. package/ios/PCFloatingToolbar.h +10 -0
  57. package/ios/PCFloatingToolbar.mm +103 -0
  58. package/ios/PCFloatingToolbarView.swift +336 -0
  59. package/ios/PCHaptics.swift +91 -0
  60. package/ios/PCImageLoader.swift +76 -12
  61. package/ios/PCLiquidGlass.mm +36 -0
  62. package/ios/PCLiquidGlass.swift +221 -114
  63. package/ios/PCLiquidGlassContainer.h +10 -0
  64. package/ios/PCLiquidGlassContainer.mm +84 -0
  65. package/ios/PCLiquidGlassContainer.swift +69 -0
  66. package/ios/PCMenuItems.h +76 -0
  67. package/ios/PCMenuSupport.swift +350 -0
  68. package/ios/PCNavigationRail.h +10 -0
  69. package/ios/PCNavigationRail.mm +270 -0
  70. package/ios/PCNavigationRailView.swift +415 -0
  71. package/ios/PCSegmentedControl.mm +17 -2
  72. package/ios/PCSegmentedControl.swift +57 -7
  73. package/ios/PCSelectionMenu.mm +36 -8
  74. package/ios/PCSelectionMenu.swift +224 -48
  75. package/ios/PCTabBar.h +10 -0
  76. package/ios/PCTabBar.mm +285 -0
  77. package/ios/PCTabBarAccessory.h +10 -0
  78. package/ios/PCTabBarAccessory.mm +93 -0
  79. package/ios/PCTabBarAccessoryView.swift +96 -0
  80. package/ios/PCTabBarView.swift +671 -0
  81. package/ios/PCTextField.h +10 -0
  82. package/ios/PCTextField.mm +546 -0
  83. package/ios/PCTextFieldView.swift +1558 -0
  84. package/lib/commonjs/Button.js +149 -0
  85. package/lib/commonjs/Button.js.map +1 -0
  86. package/lib/commonjs/ButtonGroup.js +109 -0
  87. package/lib/commonjs/ButtonGroup.js.map +1 -0
  88. package/lib/commonjs/ButtonGroupNativeComponent.ts +191 -0
  89. package/lib/commonjs/ButtonNativeComponent.ts +192 -0
  90. package/lib/commonjs/ContextMenu.js +9 -48
  91. package/lib/commonjs/ContextMenu.js.map +1 -1
  92. package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
  93. package/lib/commonjs/DatePicker.js +98 -2
  94. package/lib/commonjs/DatePicker.js.map +1 -1
  95. package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
  96. package/lib/commonjs/FloatingActionButton.js +60 -0
  97. package/lib/commonjs/FloatingActionButton.js.map +1 -0
  98. package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
  99. package/lib/commonjs/FloatingToolbar.js +77 -0
  100. package/lib/commonjs/FloatingToolbar.js.map +1 -0
  101. package/lib/commonjs/FloatingToolbarNativeComponent.ts +47 -0
  102. package/lib/commonjs/LiquidGlass.js +7 -1
  103. package/lib/commonjs/LiquidGlass.js.map +1 -1
  104. package/lib/commonjs/LiquidGlassContainer.js +32 -0
  105. package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
  106. package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
  107. package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
  108. package/lib/commonjs/NavigationRail.js +104 -0
  109. package/lib/commonjs/NavigationRail.js.map +1 -0
  110. package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
  111. package/lib/commonjs/PlatformComponentsProvider.js +18 -0
  112. package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
  113. package/lib/commonjs/SegmentedControl.js +18 -85
  114. package/lib/commonjs/SegmentedControl.js.map +1 -1
  115. package/lib/commonjs/SegmentedControlNativeComponent.ts +14 -0
  116. package/lib/commonjs/SelectionMenu.js +27 -3
  117. package/lib/commonjs/SelectionMenu.js.map +1 -1
  118. package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
  119. package/lib/commonjs/SplitButton.js +98 -0
  120. package/lib/commonjs/SplitButton.js.map +1 -0
  121. package/lib/commonjs/TabBar.js +203 -0
  122. package/lib/commonjs/TabBar.js.map +1 -0
  123. package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
  124. package/lib/commonjs/TabBarNativeComponent.ts +145 -0
  125. package/lib/commonjs/TextField.js +358 -0
  126. package/lib/commonjs/TextField.js.map +1 -0
  127. package/lib/commonjs/TextFieldNativeComponent.ts +324 -0
  128. package/lib/commonjs/focusRegistry.js +79 -0
  129. package/lib/commonjs/focusRegistry.js.map +1 -0
  130. package/lib/commonjs/haptics.js +2 -0
  131. package/lib/commonjs/haptics.js.map +1 -0
  132. package/lib/commonjs/icons.js +106 -0
  133. package/lib/commonjs/icons.js.map +1 -0
  134. package/lib/commonjs/index.js +143 -0
  135. package/lib/commonjs/index.js.map +1 -1
  136. package/lib/commonjs/index.web.js +157 -63
  137. package/lib/commonjs/index.web.js.map +1 -1
  138. package/lib/commonjs/jest.js +910 -0
  139. package/lib/commonjs/jest.js.map +1 -0
  140. package/lib/commonjs/labelStyle.js +27 -0
  141. package/lib/commonjs/labelStyle.js.map +1 -0
  142. package/lib/commonjs/menuItems.js +68 -0
  143. package/lib/commonjs/menuItems.js.map +1 -0
  144. package/lib/commonjs/reactNativeInternals.d.js +2 -0
  145. package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
  146. package/lib/commonjs/selectionIdentifiers.js +18 -0
  147. package/lib/commonjs/selectionIdentifiers.js.map +1 -0
  148. package/lib/commonjs/submitBehavior.js +19 -0
  149. package/lib/commonjs/submitBehavior.js.map +1 -0
  150. package/lib/commonjs/tabItems.js +49 -0
  151. package/lib/commonjs/tabItems.js.map +1 -0
  152. package/lib/commonjs/web/Button.js +170 -0
  153. package/lib/commonjs/web/Button.js.map +1 -0
  154. package/lib/commonjs/web/ButtonGroup.js +119 -0
  155. package/lib/commonjs/web/ButtonGroup.js.map +1 -0
  156. package/lib/commonjs/web/DatePicker.js +168 -0
  157. package/lib/commonjs/web/DatePicker.js.map +1 -0
  158. package/lib/commonjs/web/DateRangePicker.js +137 -0
  159. package/lib/commonjs/web/DateRangePicker.js.map +1 -0
  160. package/lib/commonjs/web/Dialog.js +54 -0
  161. package/lib/commonjs/web/Dialog.js.map +1 -0
  162. package/lib/commonjs/web/FloatingActionButton.js +98 -0
  163. package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
  164. package/lib/commonjs/web/Icon.js +34 -0
  165. package/lib/commonjs/web/Icon.js.map +1 -0
  166. package/lib/commonjs/web/NativeTheme.js +28 -0
  167. package/lib/commonjs/web/NativeTheme.js.map +1 -0
  168. package/lib/commonjs/web/NavigationRail.js +139 -0
  169. package/lib/commonjs/web/NavigationRail.js.map +1 -0
  170. package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
  171. package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
  172. package/lib/commonjs/web/SegmentedControl.js +117 -0
  173. package/lib/commonjs/web/SegmentedControl.js.map +1 -0
  174. package/lib/commonjs/web/SelectionMenu.js +142 -0
  175. package/lib/commonjs/web/SelectionMenu.js.map +1 -0
  176. package/lib/commonjs/web/SplitButton.js +35 -0
  177. package/lib/commonjs/web/SplitButton.js.map +1 -0
  178. package/lib/commonjs/web/TabBar.js +131 -0
  179. package/lib/commonjs/web/TabBar.js.map +1 -0
  180. package/lib/commonjs/web/TextField.js +322 -0
  181. package/lib/commonjs/web/TextField.js.map +1 -0
  182. package/lib/commonjs/web/components.js +36 -0
  183. package/lib/commonjs/web/components.js.map +1 -0
  184. package/lib/commonjs/web/containers.js +121 -0
  185. package/lib/commonjs/web/containers.js.map +1 -0
  186. package/lib/commonjs/web/dateInput.js +116 -0
  187. package/lib/commonjs/web/dateInput.js.map +1 -0
  188. package/lib/commonjs/web/shared.js +192 -0
  189. package/lib/commonjs/web/shared.js.map +1 -0
  190. package/lib/commonjs/webComponents.js +6 -0
  191. package/lib/commonjs/webComponents.js.map +1 -0
  192. package/lib/module/Button.js +142 -0
  193. package/lib/module/Button.js.map +1 -0
  194. package/lib/module/ButtonGroup.js +102 -0
  195. package/lib/module/ButtonGroup.js.map +1 -0
  196. package/lib/module/ButtonGroupNativeComponent.ts +191 -0
  197. package/lib/module/ButtonNativeComponent.ts +192 -0
  198. package/lib/module/ContextMenu.js +9 -48
  199. package/lib/module/ContextMenu.js.map +1 -1
  200. package/lib/module/ContextMenuNativeComponent.ts +47 -49
  201. package/lib/module/DatePicker.js +98 -4
  202. package/lib/module/DatePicker.js.map +1 -1
  203. package/lib/module/DatePickerNativeComponent.ts +19 -2
  204. package/lib/module/FloatingActionButton.js +53 -0
  205. package/lib/module/FloatingActionButton.js.map +1 -0
  206. package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
  207. package/lib/module/FloatingToolbar.js +70 -0
  208. package/lib/module/FloatingToolbar.js.map +1 -0
  209. package/lib/module/FloatingToolbarNativeComponent.ts +47 -0
  210. package/lib/module/LiquidGlass.js +7 -1
  211. package/lib/module/LiquidGlass.js.map +1 -1
  212. package/lib/module/LiquidGlassContainer.js +26 -0
  213. package/lib/module/LiquidGlassContainer.js.map +1 -0
  214. package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
  215. package/lib/module/LiquidGlassNativeComponent.ts +8 -0
  216. package/lib/module/NavigationRail.js +99 -0
  217. package/lib/module/NavigationRail.js.map +1 -0
  218. package/lib/module/NavigationRailNativeComponent.ts +107 -0
  219. package/lib/module/PlatformComponentsProvider.js +13 -0
  220. package/lib/module/PlatformComponentsProvider.js.map +1 -0
  221. package/lib/module/SegmentedControl.js +18 -85
  222. package/lib/module/SegmentedControl.js.map +1 -1
  223. package/lib/module/SegmentedControlNativeComponent.ts +14 -0
  224. package/lib/module/SelectionMenu.js +27 -3
  225. package/lib/module/SelectionMenu.js.map +1 -1
  226. package/lib/module/SelectionMenuNativeComponent.ts +26 -4
  227. package/lib/module/SplitButton.js +91 -0
  228. package/lib/module/SplitButton.js.map +1 -0
  229. package/lib/module/TabBar.js +196 -0
  230. package/lib/module/TabBar.js.map +1 -0
  231. package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
  232. package/lib/module/TabBarNativeComponent.ts +145 -0
  233. package/lib/module/TextField.js +352 -0
  234. package/lib/module/TextField.js.map +1 -0
  235. package/lib/module/TextFieldNativeComponent.ts +324 -0
  236. package/lib/module/focusRegistry.js +75 -0
  237. package/lib/module/focusRegistry.js.map +1 -0
  238. package/lib/module/haptics.js +2 -0
  239. package/lib/module/haptics.js.map +1 -0
  240. package/lib/module/icons.js +101 -0
  241. package/lib/module/icons.js.map +1 -0
  242. package/lib/module/index.js +13 -0
  243. package/lib/module/index.js.map +1 -1
  244. package/lib/module/index.web.js +12 -59
  245. package/lib/module/index.web.js.map +1 -1
  246. package/lib/module/jest.js +840 -0
  247. package/lib/module/jest.js.map +1 -0
  248. package/lib/module/labelStyle.js +23 -0
  249. package/lib/module/labelStyle.js.map +1 -0
  250. package/lib/module/menuItems.js +65 -0
  251. package/lib/module/menuItems.js.map +1 -0
  252. package/lib/module/reactNativeInternals.d.js +2 -0
  253. package/lib/module/reactNativeInternals.d.js.map +1 -0
  254. package/lib/module/selectionIdentifiers.js +14 -0
  255. package/lib/module/selectionIdentifiers.js.map +1 -0
  256. package/lib/module/submitBehavior.js +15 -0
  257. package/lib/module/submitBehavior.js.map +1 -0
  258. package/lib/module/tabItems.js +45 -0
  259. package/lib/module/tabItems.js.map +1 -0
  260. package/lib/module/web/Button.js +164 -0
  261. package/lib/module/web/Button.js.map +1 -0
  262. package/lib/module/web/ButtonGroup.js +113 -0
  263. package/lib/module/web/ButtonGroup.js.map +1 -0
  264. package/lib/module/web/DatePicker.js +162 -0
  265. package/lib/module/web/DatePicker.js.map +1 -0
  266. package/lib/module/web/DateRangePicker.js +131 -0
  267. package/lib/module/web/DateRangePicker.js.map +1 -0
  268. package/lib/module/web/Dialog.js +48 -0
  269. package/lib/module/web/Dialog.js.map +1 -0
  270. package/lib/module/web/FloatingActionButton.js +94 -0
  271. package/lib/module/web/FloatingActionButton.js.map +1 -0
  272. package/lib/module/web/Icon.js +29 -0
  273. package/lib/module/web/Icon.js.map +1 -0
  274. package/lib/module/web/NativeTheme.js +23 -0
  275. package/lib/module/web/NativeTheme.js.map +1 -0
  276. package/lib/module/web/NavigationRail.js +133 -0
  277. package/lib/module/web/NavigationRail.js.map +1 -0
  278. package/lib/module/web/PlatformComponentsProvider.js +44 -0
  279. package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
  280. package/lib/module/web/SegmentedControl.js +112 -0
  281. package/lib/module/web/SegmentedControl.js.map +1 -0
  282. package/lib/module/web/SelectionMenu.js +137 -0
  283. package/lib/module/web/SelectionMenu.js.map +1 -0
  284. package/lib/module/web/SplitButton.js +30 -0
  285. package/lib/module/web/SplitButton.js.map +1 -0
  286. package/lib/module/web/TabBar.js +126 -0
  287. package/lib/module/web/TabBar.js.map +1 -0
  288. package/lib/module/web/TextField.js +316 -0
  289. package/lib/module/web/TextField.js.map +1 -0
  290. package/lib/module/web/components.js +33 -0
  291. package/lib/module/web/components.js.map +1 -0
  292. package/lib/module/web/containers.js +112 -0
  293. package/lib/module/web/containers.js.map +1 -0
  294. package/lib/module/web/dateInput.js +109 -0
  295. package/lib/module/web/dateInput.js.map +1 -0
  296. package/lib/module/web/shared.js +179 -0
  297. package/lib/module/web/shared.js.map +1 -0
  298. package/lib/module/webComponents.js +4 -0
  299. package/lib/module/webComponents.js.map +1 -0
  300. package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
  301. package/lib/typescript/commonjs/src/Button.d.ts +184 -0
  302. package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/src/ButtonGroup.d.ts +117 -0
  304. package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +154 -0
  306. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +148 -0
  308. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
  310. package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
  311. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
  312. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
  314. package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
  315. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
  316. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
  318. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  320. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +75 -0
  322. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +36 -0
  324. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
  326. package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
  328. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  330. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
  332. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  333. package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
  334. package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
  336. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
  338. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +35 -47
  340. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +11 -0
  342. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
  344. package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
  346. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
  348. package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
  350. package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  352. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
  354. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/src/TextField.d.ts +332 -0
  356. package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +240 -0
  358. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
  360. package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
  362. package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/src/icons.d.ts +58 -0
  364. package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/src/index.d.ts +13 -0
  366. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  367. package/lib/typescript/commonjs/src/index.web.d.ts +25 -133
  368. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  369. package/lib/typescript/commonjs/src/jest.d.ts +139 -0
  370. package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
  372. package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
  374. package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
  376. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
  378. package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
  379. package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
  380. package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
  382. package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
  384. package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
  386. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
  388. package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
  390. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
  392. package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
  394. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
  396. package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
  398. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
  400. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
  402. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
  404. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
  406. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
  408. package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
  410. package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
  411. package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
  412. package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
  414. package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
  416. package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
  417. package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
  418. package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
  419. package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
  420. package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
  421. package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
  422. package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
  423. package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
  424. package/lib/typescript/module/src/Button.d.ts +184 -0
  425. package/lib/typescript/module/src/Button.d.ts.map +1 -0
  426. package/lib/typescript/module/src/ButtonGroup.d.ts +117 -0
  427. package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
  428. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +154 -0
  429. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  430. package/lib/typescript/module/src/ButtonNativeComponent.d.ts +148 -0
  431. package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
  432. package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
  433. package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
  434. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
  435. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
  436. package/lib/typescript/module/src/DatePicker.d.ts +74 -1
  437. package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
  438. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
  439. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  440. package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
  441. package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
  442. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  443. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  444. package/lib/typescript/module/src/FloatingToolbar.d.ts +75 -0
  445. package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
  446. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +36 -0
  447. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  448. package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
  449. package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
  450. package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
  451. package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
  452. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  453. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  454. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
  455. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  456. package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
  457. package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
  458. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
  459. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
  460. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
  461. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
  462. package/lib/typescript/module/src/SegmentedControl.d.ts +35 -47
  463. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  464. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +11 -0
  465. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  466. package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
  467. package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
  468. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
  469. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  470. package/lib/typescript/module/src/SplitButton.d.ts +83 -0
  471. package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
  472. package/lib/typescript/module/src/TabBar.d.ts +144 -0
  473. package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
  474. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  475. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  476. package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
  477. package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
  478. package/lib/typescript/module/src/TextField.d.ts +332 -0
  479. package/lib/typescript/module/src/TextField.d.ts.map +1 -0
  480. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +240 -0
  481. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
  482. package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
  483. package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
  484. package/lib/typescript/module/src/haptics.d.ts +20 -0
  485. package/lib/typescript/module/src/haptics.d.ts.map +1 -0
  486. package/lib/typescript/module/src/icons.d.ts +58 -0
  487. package/lib/typescript/module/src/icons.d.ts.map +1 -0
  488. package/lib/typescript/module/src/index.d.ts +13 -0
  489. package/lib/typescript/module/src/index.d.ts.map +1 -1
  490. package/lib/typescript/module/src/index.web.d.ts +25 -133
  491. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  492. package/lib/typescript/module/src/jest.d.ts +139 -0
  493. package/lib/typescript/module/src/jest.d.ts.map +1 -0
  494. package/lib/typescript/module/src/labelStyle.d.ts +20 -0
  495. package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
  496. package/lib/typescript/module/src/menuItems.d.ts +100 -0
  497. package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
  498. package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
  499. package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
  500. package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
  501. package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
  502. package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
  503. package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
  504. package/lib/typescript/module/src/tabItems.d.ts +55 -0
  505. package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
  506. package/lib/typescript/module/src/web/Button.d.ts +9 -0
  507. package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
  508. package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
  509. package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
  510. package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
  511. package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
  512. package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
  513. package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
  514. package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
  515. package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
  516. package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
  517. package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
  518. package/lib/typescript/module/src/web/Icon.d.ts +12 -0
  519. package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
  520. package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
  521. package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
  522. package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
  523. package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
  524. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
  525. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  526. package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
  527. package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
  528. package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
  529. package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
  530. package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
  531. package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
  532. package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
  533. package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
  534. package/lib/typescript/module/src/web/TextField.d.ts +9 -0
  535. package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
  536. package/lib/typescript/module/src/web/components.d.ts +17 -0
  537. package/lib/typescript/module/src/web/components.d.ts.map +1 -0
  538. package/lib/typescript/module/src/web/containers.d.ts +24 -0
  539. package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
  540. package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
  541. package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
  542. package/lib/typescript/module/src/web/shared.d.ts +43 -0
  543. package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
  544. package/lib/typescript/module/src/webComponents.d.ts +43 -0
  545. package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
  546. package/package.json +55 -4
  547. package/plugin/build/index.d.ts +3 -2
  548. package/plugin/build/index.d.ts.map +1 -1
  549. package/react-native.config.js +6 -0
  550. package/shared/PCButtonComponentDescriptors-custom.h +22 -0
  551. package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
  552. package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
  553. package/shared/PCButtonGroupShadowNode-custom.h +55 -0
  554. package/shared/PCButtonGroupState-custom.h +61 -0
  555. package/shared/PCButtonShadowNode-custom.cpp +48 -0
  556. package/shared/PCButtonShadowNode-custom.h +55 -0
  557. package/shared/PCButtonState-custom.h +61 -0
  558. package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
  559. package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
  560. package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
  561. package/shared/PCFloatingActionButtonState-custom.h +61 -0
  562. package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
  563. package/shared/PCNavigationRailShadowNode-custom.h +42 -0
  564. package/shared/PCNavigationRailState-custom.h +62 -0
  565. package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
  566. package/shared/PCTabBarShadowNode-custom.cpp +54 -0
  567. package/shared/PCTabBarShadowNode-custom.h +54 -0
  568. package/shared/PCTabBarState-custom.h +62 -0
  569. package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
  570. package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
  571. package/shared/PCTextFieldShadowNode-custom.h +55 -0
  572. package/shared/PCTextFieldState-custom.h +61 -0
  573. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +6 -0
  574. package/src/Button.tsx +359 -0
  575. package/src/ButtonGroup.tsx +251 -0
  576. package/src/ButtonGroupNativeComponent.ts +191 -0
  577. package/src/ButtonNativeComponent.ts +192 -0
  578. package/src/ContextMenu.tsx +34 -81
  579. package/src/ContextMenuNativeComponent.ts +47 -49
  580. package/src/DatePicker.tsx +182 -4
  581. package/src/DatePickerNativeComponent.ts +19 -2
  582. package/src/FloatingActionButton.tsx +121 -0
  583. package/src/FloatingActionButtonNativeComponent.ts +58 -0
  584. package/src/FloatingToolbar.tsx +164 -0
  585. package/src/FloatingToolbarNativeComponent.ts +47 -0
  586. package/src/LiquidGlass.tsx +24 -1
  587. package/src/LiquidGlassContainer.tsx +42 -0
  588. package/src/LiquidGlassContainerNativeComponent.ts +17 -0
  589. package/src/LiquidGlassNativeComponent.ts +8 -0
  590. package/src/NavigationRail.tsx +203 -0
  591. package/src/NavigationRailNativeComponent.ts +107 -0
  592. package/src/PlatformComponentsProvider.tsx +15 -0
  593. package/src/SegmentedControl.tsx +57 -119
  594. package/src/SegmentedControlNativeComponent.ts +14 -0
  595. package/src/SelectionMenu.tsx +81 -6
  596. package/src/SelectionMenuNativeComponent.ts +26 -4
  597. package/src/SplitButton.tsx +198 -0
  598. package/src/TabBar.tsx +373 -0
  599. package/src/TabBarAccessoryNativeComponent.ts +19 -0
  600. package/src/TabBarNativeComponent.ts +145 -0
  601. package/src/TextField.tsx +908 -0
  602. package/src/TextFieldNativeComponent.ts +324 -0
  603. package/src/focusRegistry.ts +90 -0
  604. package/src/haptics.ts +31 -0
  605. package/src/icons.ts +143 -0
  606. package/src/index.tsx +13 -0
  607. package/src/index.web.tsx +53 -199
  608. package/src/jest.tsx +958 -0
  609. package/src/labelStyle.ts +36 -0
  610. package/src/menuItems.ts +152 -0
  611. package/src/reactNativeInternals.d.ts +22 -0
  612. package/src/selectionIdentifiers.ts +17 -0
  613. package/src/sharedTypes.ts +7 -1
  614. package/src/submitBehavior.ts +16 -0
  615. package/src/tabItems.ts +113 -0
  616. package/src/web/Button.tsx +201 -0
  617. package/src/web/ButtonGroup.tsx +154 -0
  618. package/src/web/DatePicker.tsx +204 -0
  619. package/src/web/DateRangePicker.tsx +135 -0
  620. package/src/web/Dialog.tsx +54 -0
  621. package/src/web/FloatingActionButton.tsx +76 -0
  622. package/src/web/Icon.tsx +33 -0
  623. package/src/web/NativeTheme.ts +23 -0
  624. package/src/web/NavigationRail.tsx +148 -0
  625. package/src/web/PlatformComponentsProvider.tsx +48 -0
  626. package/src/web/SegmentedControl.tsx +127 -0
  627. package/src/web/SelectionMenu.tsx +149 -0
  628. package/src/web/SplitButton.tsx +32 -0
  629. package/src/web/TabBar.tsx +150 -0
  630. package/src/web/TextField.tsx +361 -0
  631. package/src/web/components.tsx +71 -0
  632. package/src/web/containers.tsx +130 -0
  633. package/src/web/dateInput.ts +137 -0
  634. package/src/web/shared.ts +176 -0
  635. package/src/webComponents.ts +45 -0
  636. 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>;
@@ -0,0 +1,164 @@
1
+ // FloatingToolbar.tsx
2
+ import React, { useMemo } from 'react';
3
+ import {
4
+ Platform,
5
+ StyleSheet,
6
+ type ColorValue,
7
+ type StyleProp,
8
+ type ViewProps,
9
+ type ViewStyle,
10
+ } from 'react-native';
11
+
12
+ import NativeFloatingToolbar from './FloatingToolbarNativeComponent';
13
+
14
+ /** Glass effect style of the toolbar on iOS 26. */
15
+ export type FloatingToolbarIOSEffect = 'regular' | 'clear';
16
+
17
+ /** Material 3 color variant of the toolbar on Android. */
18
+ export type FloatingToolbarAndroidVariant = 'standard' | 'vibrant';
19
+
20
+ /** Scroll edge effect under the toolbar on iOS 26. */
21
+ export type FloatingToolbarScrollEdgeEffect =
22
+ 'automatic' | 'soft' | 'hard' | 'hidden';
23
+
24
+ export interface FloatingToolbarProps extends ViewProps {
25
+ /**
26
+ * Layout direction of the children. Default: `'horizontal'`.
27
+ */
28
+ orientation?: 'horizontal' | 'vertical';
29
+
30
+ /**
31
+ * Container color. Default: the platform's toolbar material (Material 3
32
+ * `surfaceContainer` or `primaryContainer` on Android, Liquid Glass or a
33
+ * blur on iOS). Use this rather than `style.backgroundColor`, which would
34
+ * replace the native shape.
35
+ */
36
+ color?: ColorValue;
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
+
55
+ /**
56
+ * iOS-specific configuration
57
+ */
58
+ ios?: {
59
+ /**
60
+ * Glass effect style on iOS 26. Older versions use a blur.
61
+ * Default: `'regular'`.
62
+ */
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;
79
+ };
80
+
81
+ /**
82
+ * Android-specific configuration
83
+ */
84
+ android?: {
85
+ /**
86
+ * Material 3 color variant: `'standard'` (surface) or `'vibrant'`
87
+ * (primary container). Default: `'standard'`.
88
+ */
89
+ variant?: FloatingToolbarAndroidVariant;
90
+ };
91
+
92
+ /** The toolbar's actions, usually `Button`s. */
93
+ children?: React.ReactNode;
94
+
95
+ /** Test identifier */
96
+ testID?: string;
97
+ }
98
+
99
+ export function FloatingToolbar(
100
+ props: FloatingToolbarProps
101
+ ): React.ReactElement {
102
+ const {
103
+ style,
104
+ orientation,
105
+ color,
106
+ scrollViewNativeID,
107
+ hideOnScroll,
108
+ ios,
109
+ android,
110
+ children,
111
+ ...viewProps
112
+ } = props;
113
+
114
+ const nativeIos = useMemo(() => {
115
+ if (Platform.OS !== 'ios' || !ios) return undefined;
116
+ return {
117
+ effect: ios.effect ?? 'regular',
118
+ interactive: ios.interactive ?? false,
119
+ scrollEdgeEffect: ios.scrollEdgeEffect ?? '',
120
+ };
121
+ }, [ios]);
122
+
123
+ const nativeAndroid = useMemo(() => {
124
+ if (Platform.OS !== 'android' || !android) return undefined;
125
+ return { variant: android.variant ?? 'standard' };
126
+ }, [android]);
127
+
128
+ const mergedStyle = useMemo(
129
+ (): StyleProp<ViewStyle> => [
130
+ styles.toolbar,
131
+ orientation === 'vertical' ? styles.vertical : styles.horizontal,
132
+ style,
133
+ ],
134
+ [orientation, style]
135
+ );
136
+
137
+ return (
138
+ <NativeFloatingToolbar
139
+ style={mergedStyle}
140
+ color={color}
141
+ scrollViewNativeID={scrollViewNativeID ?? ''}
142
+ hideOnScroll={hideOnScroll ?? false}
143
+ ios={nativeIos}
144
+ android={nativeAndroid}
145
+ {...viewProps}
146
+ >
147
+ {children}
148
+ </NativeFloatingToolbar>
149
+ );
150
+ }
151
+
152
+ // Material 3 floating toolbar: 8dp container padding, 4dp between actions.
153
+ // The capsule shape comes from native.
154
+ const styles = StyleSheet.create({
155
+ toolbar: {
156
+ alignSelf: 'center',
157
+ alignItems: 'center',
158
+ justifyContent: 'center',
159
+ padding: 8,
160
+ gap: 4,
161
+ },
162
+ horizontal: { flexDirection: 'row' },
163
+ vertical: { flexDirection: 'column' },
164
+ });
@@ -0,0 +1,47 @@
1
+ // FloatingToolbarNativeComponent.ts
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
+ import { codegenNativeComponent } from 'react-native';
4
+ import type { WithDefault } from './codegenTypes';
5
+
6
+ /**
7
+ * iOS-specific configuration.
8
+ */
9
+ export type FloatingToolbarIOSProps = Readonly<{
10
+ /** Glass effect style on iOS 26: 'regular' | 'clear' */
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;
21
+ }>;
22
+
23
+ /**
24
+ * Android-specific configuration.
25
+ */
26
+ export type FloatingToolbarAndroidProps = Readonly<{
27
+ /** Material color variant: 'standard' | 'vibrant' */
28
+ variant?: string;
29
+ }>;
30
+
31
+ export interface FloatingToolbarNativeProps extends ViewProps {
32
+ /** Container color. Default: the platform's toolbar material. */
33
+ color?: ColorValue;
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
+
41
+ ios?: FloatingToolbarIOSProps;
42
+ android?: FloatingToolbarAndroidProps;
43
+ }
44
+
45
+ export default codegenNativeComponent<FloatingToolbarNativeProps>(
46
+ 'PCFloatingToolbar'
47
+ ) as HostComponent<FloatingToolbarNativeProps>;