react-native-platform-components 1.4.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 (598) 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.d.ts +3 -2
  525. package/plugin/build/index.d.ts.map +1 -1
  526. package/react-native.config.js +3 -0
  527. package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
  528. package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
  529. package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
  530. package/shared/PCFloatingActionButtonState-custom.h +61 -0
  531. package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
  532. package/shared/PCNavigationRailShadowNode-custom.h +42 -0
  533. package/shared/PCNavigationRailState-custom.h +62 -0
  534. package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
  535. package/shared/PCTabBarShadowNode-custom.cpp +54 -0
  536. package/shared/PCTabBarShadowNode-custom.h +54 -0
  537. package/shared/PCTabBarState-custom.h +62 -0
  538. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +3 -0
  539. package/src/Button.tsx +222 -7
  540. package/src/ButtonGroup.tsx +29 -11
  541. package/src/ButtonGroupNativeComponent.ts +74 -4
  542. package/src/ButtonNativeComponent.ts +119 -3
  543. package/src/ContextMenu.tsx +34 -81
  544. package/src/ContextMenuNativeComponent.ts +47 -49
  545. package/src/DatePicker.tsx +182 -4
  546. package/src/DatePickerNativeComponent.ts +19 -2
  547. package/src/FloatingActionButton.tsx +121 -0
  548. package/src/FloatingActionButtonNativeComponent.ts +58 -0
  549. package/src/FloatingToolbar.tsx +54 -3
  550. package/src/FloatingToolbarNativeComponent.ts +16 -0
  551. package/src/LiquidGlass.tsx +24 -1
  552. package/src/LiquidGlassContainer.tsx +42 -0
  553. package/src/LiquidGlassContainerNativeComponent.ts +17 -0
  554. package/src/LiquidGlassNativeComponent.ts +8 -0
  555. package/src/NavigationRail.tsx +203 -0
  556. package/src/NavigationRailNativeComponent.ts +107 -0
  557. package/src/PlatformComponentsProvider.tsx +15 -0
  558. package/src/SegmentedControl.tsx +31 -1
  559. package/src/SegmentedControlNativeComponent.ts +11 -0
  560. package/src/SelectionMenu.tsx +81 -6
  561. package/src/SelectionMenuNativeComponent.ts +26 -4
  562. package/src/SplitButton.tsx +198 -0
  563. package/src/TabBar.tsx +373 -0
  564. package/src/TabBarAccessoryNativeComponent.ts +19 -0
  565. package/src/TabBarNativeComponent.ts +145 -0
  566. package/src/TextField.tsx +428 -14
  567. package/src/TextFieldNativeComponent.ts +110 -4
  568. package/src/focusRegistry.ts +1 -0
  569. package/src/haptics.ts +31 -0
  570. package/src/icons.ts +28 -1
  571. package/src/index.tsx +7 -0
  572. package/src/index.web.tsx +51 -391
  573. package/src/jest.tsx +958 -0
  574. package/src/menuItems.ts +152 -0
  575. package/src/selectionIdentifiers.ts +17 -0
  576. package/src/submitBehavior.ts +16 -0
  577. package/src/tabItems.ts +113 -0
  578. package/src/web/Button.tsx +201 -0
  579. package/src/web/ButtonGroup.tsx +154 -0
  580. package/src/web/DatePicker.tsx +204 -0
  581. package/src/web/DateRangePicker.tsx +135 -0
  582. package/src/web/Dialog.tsx +54 -0
  583. package/src/web/FloatingActionButton.tsx +76 -0
  584. package/src/web/Icon.tsx +33 -0
  585. package/src/web/NativeTheme.ts +23 -0
  586. package/src/web/NavigationRail.tsx +148 -0
  587. package/src/web/PlatformComponentsProvider.tsx +48 -0
  588. package/src/web/SegmentedControl.tsx +127 -0
  589. package/src/web/SelectionMenu.tsx +149 -0
  590. package/src/web/SplitButton.tsx +32 -0
  591. package/src/web/TabBar.tsx +150 -0
  592. package/src/web/TextField.tsx +361 -0
  593. package/src/web/components.tsx +71 -0
  594. package/src/web/containers.tsx +130 -0
  595. package/src/web/dateInput.ts +137 -0
  596. package/src/web/shared.ts +176 -0
  597. package/src/webComponents.ts +45 -0
  598. package/android/src/main/java/com/platformcomponents/DateConstraints.kt +0 -83
@@ -21,11 +21,13 @@ export type SegmentedControlSegment = Readonly<{
21
21
  disabled: string; // 'enabled' | 'disabled'
22
22
  iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
23
23
  iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
24
+ iconRequest: string;
24
25
  iconUri: string; // Resolved image URI when iconType === 'image'
25
26
  iconScale: Double; // Resolved image scale when iconType === 'image'
26
27
  iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
27
28
  badge: string; // Badge text, empty = no badge
28
29
  accessibilityLabel: string; // Screen-reader label, empty = use label
30
+ testID: string; // E2E identifier of the segment, empty = none
29
31
  }>;
30
32
 
31
33
  /**
@@ -117,12 +119,21 @@ export interface SegmentedControlProps extends ViewProps {
117
119
  /** Label font. */
118
120
  labelStyle?: LabelStyleProps;
119
121
 
122
+ /** Largest font scale the labels may reach; 0 = no cap. */
123
+ maxFontSizeMultiplier?: Double;
124
+
120
125
  /** Badge background (default: system red). */
121
126
  badgeBackgroundColor?: ColorValue;
122
127
 
123
128
  /** Badge text color (default: white). */
124
129
  badgeTextColor?: ColorValue;
125
130
 
131
+ /**
132
+ * Haptic played when the user changes the selection: '' (none added) | 'none' | 'selection' |
133
+ * 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
134
+ */
135
+ haptics?: string;
136
+
126
137
  /**
127
138
  * Fired when the user selects a segment.
128
139
  */
@@ -4,7 +4,25 @@
4
4
  import React, { useCallback, useMemo } from 'react';
5
5
  import { Platform } from 'react-native';
6
6
  import NativeSelectionMenu from './SelectionMenuNativeComponent';
7
+ import { resolveIcon } from "./icons.js";
8
+ import { warnSelectionIdentifiers } from "./selectionIdentifiers.js";
9
+
10
+ /**
11
+ * A single option: a label and its data payload, with an optional icon and
12
+ * second line.
13
+ */
7
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ /** Flattens options for native: icons resolved, every field set. */
16
+ function normalizeSelectionMenuOptions(options) {
17
+ warnSelectionIdentifiers('SelectionMenu', options.map(option => option.data));
18
+ return options.map(option => ({
19
+ label: option.label,
20
+ data: option.data,
21
+ disabled: option.disabled ? 'true' : 'false',
22
+ subtitle: option.subtitle ?? '',
23
+ ...resolveIcon(option.icon)
24
+ }));
25
+ }
8
26
  function normalizeSelectedData(selected) {
9
27
  return selected ?? '';
10
28
  }
@@ -22,6 +40,7 @@ export function SelectionMenu(props) {
22
40
  placeholder,
23
41
  presentation = 'modal',
24
42
  visible,
43
+ haptics,
25
44
  onSelect,
26
45
  onRequestClose,
27
46
  ios,
@@ -29,6 +48,7 @@ export function SelectionMenu(props) {
29
48
  ...viewProps
30
49
  } = props;
31
50
  const selectedData = useMemo(() => normalizeSelectedData(selected), [selected]);
51
+ const nativeOptions = useMemo(() => normalizeSelectionMenuOptions(options), [options]);
32
52
  const nativeVisible = useMemo(() => normalizeNativeVisible(presentation, visible), [presentation, visible]);
33
53
  const handleSelect = useCallback(e => {
34
54
  const {
@@ -36,8 +56,10 @@ export function SelectionMenu(props) {
36
56
  label,
37
57
  data
38
58
  } = e.nativeEvent;
59
+ const option = options[index];
60
+ if (disabled || !option || option.disabled || option.data !== data) return;
39
61
  onSelect?.(data, label, index);
40
- }, [onSelect]);
62
+ }, [disabled, onSelect, options]);
41
63
  const handleRequestClose = useCallback(() => {
42
64
  onRequestClose?.();
43
65
  }, [onRequestClose]);
@@ -46,7 +68,8 @@ export function SelectionMenu(props) {
46
68
  const nativeAndroid = useMemo(() => {
47
69
  if (!android) return undefined;
48
70
  return {
49
- material: android.material
71
+ material: android.material,
72
+ searchable: android.searchable ? 'true' : 'false'
50
73
  };
51
74
  }, [android]);
52
75
 
@@ -55,12 +78,13 @@ export function SelectionMenu(props) {
55
78
  const remountKey = Platform.OS === 'android' ? `${presentation}-${android?.material ?? 'system'}` : undefined;
56
79
  return /*#__PURE__*/_jsx(NativeSelectionMenu, {
57
80
  style: style,
58
- options: options,
81
+ options: nativeOptions,
59
82
  selectedData: selectedData,
60
83
  interactivity: disabled ? 'disabled' : 'enabled',
61
84
  placeholder: placeholder,
62
85
  anchorMode: presentation === 'embedded' ? 'inline' : 'headless',
63
86
  visible: nativeVisible,
87
+ haptics: haptics ?? '',
64
88
  onSelect: onSelect ? handleSelect : undefined,
65
89
  onRequestClose: onRequestClose ? handleRequestClose : undefined,
66
90
  ios: ios,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","Platform","NativeSelectionMenu","jsx","_jsx","normalizeSelectedData","selected","normalizeNativeVisible","presentation","visible","undefined","SelectionMenu","props","style","options","disabled","placeholder","onSelect","onRequestClose","ios","android","viewProps","selectedData","nativeVisible","handleSelect","e","index","label","data","nativeEvent","handleRequestClose","nativeAndroid","material","remountKey","OS","interactivity","anchorMode"],"sourceRoot":"../../src","sources":["SelectionMenu.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,SAASC,QAAQ,QAAwB,cAAc;AAEvD,OAAOC,mBAAmB,MAGnB,gCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAyDxC,SAASC,qBAAqBA,CAACC,QAAuB,EAAU;EAC9D,OAAOA,QAAQ,IAAI,EAAE;AACvB;AAEA,SAASC,sBAAsBA,CAC7BC,YAAsC,EACtCC,OAA4B,EACG;EAC/B;EACA,IAAID,YAAY,KAAK,UAAU,EAAE,OAAOE,SAAS;EACjD,OAAOD,OAAO,GAAG,MAAM,GAAG,QAAQ;AACpC;AAEA,OAAO,SAASE,aAAaA,CAACC,KAAyB,EAAsB;EAC3E,MAAM;IACJC,KAAK;IACLC,OAAO;IACPR,QAAQ;IACRS,QAAQ;IACRC,WAAW;IACXR,YAAY,GAAG,OAAO;IACtBC,OAAO;IACPQ,QAAQ;IACRC,cAAc;IACdC,GAAG;IACHC,OAAO;IACP,GAAGC;EACL,CAAC,GAAGT,KAAK;EAET,MAAMU,YAAY,GAAGtB,OAAO,CAC1B,MAAMK,qBAAqB,CAACC,QAAQ,CAAC,EACrC,CAACA,QAAQ,CACX,CAAC;EAED,MAAMiB,aAAa,GAAGvB,OAAO,CAC3B,MAAMO,sBAAsB,CAACC,YAAY,EAAEC,OAAO,CAAC,EACnD,CAACD,YAAY,EAAEC,OAAO,CACxB,CAAC;EAED,MAAMe,YAAY,GAAGzB,WAAW,CAC7B0B,CAA4C,IAAK;IAChD,MAAM;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGH,CAAC,CAACI,WAAW;IAC5CZ,QAAQ,GAAGW,IAAI,EAAED,KAAK,EAAED,KAAK,CAAC;EAChC,CAAC,EACD,CAACT,QAAQ,CACX,CAAC;EAED,MAAMa,kBAAkB,GAAG/B,WAAW,CAAC,MAAM;IAC3CmB,cAAc,GAAG,CAAC;EACpB,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;;EAEpB;EACA,MAAMa,aAAa,GAAG/B,OAAO,CAAC,MAAM;IAClC,IAAI,CAACoB,OAAO,EAAE,OAAOV,SAAS;IAC9B,OAAO;MAAEsB,QAAQ,EAAEZ,OAAO,CAACY;IAAS,CAAC;EACvC,CAAC,EAAE,CAACZ,OAAO,CAAC,CAAC;;EAEb;EACA;EACA,MAAMa,UAAU,GACdhC,QAAQ,CAACiC,EAAE,KAAK,SAAS,GACrB,GAAG1B,YAAY,IAAIY,OAAO,EAAEY,QAAQ,IAAI,QAAQ,EAAE,GAClDtB,SAAS;EAEf,oBACEN,IAAA,CAACF,mBAAmB;IAElBW,KAAK,EAAEA,KAAM;IACbC,OAAO,EAAEA,OAAQ;IACjBQ,YAAY,EAAEA,YAAa;IAC3Ba,aAAa,EAAEpB,QAAQ,GAAG,UAAU,GAAG,SAAU;IACjDC,WAAW,EAAEA,WAAY;IACzBoB,UAAU,EAAE5B,YAAY,KAAK,UAAU,GAAG,QAAQ,GAAG,UAAW;IAChEC,OAAO,EAAEc,aAAc;IACvBN,QAAQ,EAAEA,QAAQ,GAAGO,YAAY,GAAGd,SAAU;IAC9CQ,cAAc,EAAEA,cAAc,GAAGY,kBAAkB,GAAGpB,SAAU;IAChES,GAAG,EAAEA,GAAI;IACTC,OAAO,EAAEW,aAAc;IAAA,GACnBV;EAAS,GAZRY,UAaN,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","Platform","NativeSelectionMenu","resolveIcon","warnSelectionIdentifiers","jsx","_jsx","normalizeSelectionMenuOptions","options","map","option","data","label","disabled","subtitle","icon","normalizeSelectedData","selected","normalizeNativeVisible","presentation","visible","undefined","SelectionMenu","props","style","placeholder","haptics","onSelect","onRequestClose","ios","android","viewProps","selectedData","nativeOptions","nativeVisible","handleSelect","e","index","nativeEvent","handleRequestClose","nativeAndroid","material","searchable","remountKey","OS","interactivity","anchorMode"],"sourceRoot":"../../src","sources":["SelectionMenu.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,SAASC,QAAQ,QAAwB,cAAc;AAEvD,OAAOC,mBAAmB,MAGnB,gCAAgC;AACvC,SAASC,WAAW,QAA2B,YAAS;AACxD,SAASC,wBAAwB,QAAQ,2BAAwB;;AAKjE;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AA+FA;AACA,SAASC,6BAA6BA,CACpCC,OAAuC,EACV;EAC7BJ,wBAAwB,CACtB,eAAe,EACfI,OAAO,CAACC,GAAG,CAAEC,MAAM,IAAKA,MAAM,CAACC,IAAI,CACrC,CAAC;EACD,OAAOH,OAAO,CAACC,GAAG,CAAEC,MAAM,KAAM;IAC9BE,KAAK,EAAEF,MAAM,CAACE,KAAK;IACnBD,IAAI,EAAED,MAAM,CAACC,IAAI;IACjBE,QAAQ,EAAEH,MAAM,CAACG,QAAQ,GAAG,MAAM,GAAG,OAAO;IAC5CC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ,IAAI,EAAE;IAC/B,GAAGX,WAAW,CAACO,MAAM,CAACK,IAAI;EAC5B,CAAC,CAAC,CAAC;AACL;AAEA,SAASC,qBAAqBA,CAACC,QAAuB,EAAU;EAC9D,OAAOA,QAAQ,IAAI,EAAE;AACvB;AAEA,SAASC,sBAAsBA,CAC7BC,YAAsC,EACtCC,OAA4B,EACG;EAC/B;EACA,IAAID,YAAY,KAAK,UAAU,EAAE,OAAOE,SAAS;EACjD,OAAOD,OAAO,GAAG,MAAM,GAAG,QAAQ;AACpC;AAEA,OAAO,SAASE,aAAaA,CAACC,KAAyB,EAAsB;EAC3E,MAAM;IACJC,KAAK;IACLhB,OAAO;IACPS,QAAQ;IACRJ,QAAQ;IACRY,WAAW;IACXN,YAAY,GAAG,OAAO;IACtBC,OAAO;IACPM,OAAO;IACPC,QAAQ;IACRC,cAAc;IACdC,GAAG;IACHC,OAAO;IACP,GAAGC;EACL,CAAC,GAAGR,KAAK;EAET,MAAMS,YAAY,GAAGhC,OAAO,CAC1B,MAAMgB,qBAAqB,CAACC,QAAQ,CAAC,EACrC,CAACA,QAAQ,CACX,CAAC;EAED,MAAMgB,aAAa,GAAGjC,OAAO,CAC3B,MAAMO,6BAA6B,CAACC,OAAO,CAAC,EAC5C,CAACA,OAAO,CACV,CAAC;EAED,MAAM0B,aAAa,GAAGlC,OAAO,CAC3B,MAAMkB,sBAAsB,CAACC,YAAY,EAAEC,OAAO,CAAC,EACnD,CAACD,YAAY,EAAEC,OAAO,CACxB,CAAC;EAED,MAAMe,YAAY,GAAGpC,WAAW,CAC7BqC,CAA4C,IAAK;IAChD,MAAM;MAAEC,KAAK;MAAEzB,KAAK;MAAED;IAAK,CAAC,GAAGyB,CAAC,CAACE,WAAW;IAC5C,MAAM5B,MAAM,GAAGF,OAAO,CAAC6B,KAAK,CAAC;IAC7B,IAAIxB,QAAQ,IAAI,CAACH,MAAM,IAAIA,MAAM,CAACG,QAAQ,IAAIH,MAAM,CAACC,IAAI,KAAKA,IAAI,EAChE;IACFgB,QAAQ,GAAGhB,IAAI,EAAEC,KAAK,EAAEyB,KAAK,CAAC;EAChC,CAAC,EACD,CAACxB,QAAQ,EAAEc,QAAQ,EAAEnB,OAAO,CAC9B,CAAC;EAED,MAAM+B,kBAAkB,GAAGxC,WAAW,CAAC,MAAM;IAC3C6B,cAAc,GAAG,CAAC;EACpB,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;;EAEpB;EACA,MAAMY,aAAa,GAAGxC,OAAO,CAAC,MAAM;IAClC,IAAI,CAAC8B,OAAO,EAAE,OAAOT,SAAS;IAC9B,OAAO;MACLoB,QAAQ,EAAEX,OAAO,CAACW,QAAQ;MAC1BC,UAAU,EAAEZ,OAAO,CAACY,UAAU,GAAG,MAAM,GAAG;IAC5C,CAAC;EACH,CAAC,EAAE,CAACZ,OAAO,CAAC,CAAC;;EAEb;EACA;EACA,MAAMa,UAAU,GACd1C,QAAQ,CAAC2C,EAAE,KAAK,SAAS,GACrB,GAAGzB,YAAY,IAAIW,OAAO,EAAEW,QAAQ,IAAI,QAAQ,EAAE,GAClDpB,SAAS;EAEf,oBACEf,IAAA,CAACJ,mBAAmB;IAElBsB,KAAK,EAAEA,KAAM;IACbhB,OAAO,EAAEyB,aAAc;IACvBD,YAAY,EAAEA,YAAa;IAC3Ba,aAAa,EAAEhC,QAAQ,GAAG,UAAU,GAAG,SAAU;IACjDY,WAAW,EAAEA,WAAY;IACzBqB,UAAU,EAAE3B,YAAY,KAAK,UAAU,GAAG,QAAQ,GAAG,UAAW;IAChEC,OAAO,EAAEc,aAAc;IACvBR,OAAO,EAAEA,OAAO,IAAI,EAAG;IACvBC,QAAQ,EAAEA,QAAQ,GAAGQ,YAAY,GAAGd,SAAU;IAC9CO,cAAc,EAAEA,cAAc,GAAGW,kBAAkB,GAAGlB,SAAU;IAChEQ,GAAG,EAAEA,GAAI;IACTC,OAAO,EAAEU,aAAc;IAAA,GACnBT;EAAS,GAbRY,UAcN,CAAC;AAEN","ignoreList":[]}
@@ -1,14 +1,28 @@
1
1
  // SelectionMenuNativeComponent.ts
2
2
  import type { HostComponent, ViewProps } from 'react-native';
3
3
  import { codegenNativeComponent } from 'react-native';
4
- import type { BubblingEventHandler, Int32, WithDefault } from './codegenTypes';
4
+ import type {
5
+ BubblingEventHandler,
6
+ Double,
7
+ Int32,
8
+ WithDefault,
9
+ } from './codegenTypes';
5
10
 
6
11
  /**
7
- * A single option in the menu.
12
+ * A single option in the menu. Icons are pre-resolved on the JS side (see
13
+ * icons.ts); empty strings mean "none".
8
14
  */
9
- export type SelectionMenuOption = Readonly<{
15
+ export type SelectionMenuNativeOption = Readonly<{
10
16
  label: string;
11
17
  data: string;
18
+ disabled: string; // 'true' | 'false'
19
+ subtitle: string;
20
+ iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
21
+ iconName: string;
22
+ iconRequest: string;
23
+ iconUri: string;
24
+ iconScale: Double;
25
+ iconTinted: string; // 'true' | 'false'
12
26
  }>;
13
27
 
14
28
  /**
@@ -44,13 +58,15 @@ export type IOSProps = Readonly<{}>;
44
58
  */
45
59
  export type AndroidProps = Readonly<{
46
60
  material?: string; // AndroidMaterialMode
61
+ /** Embedded M3 dropdown: accept typing to filter the options */
62
+ searchable?: string; // 'true' | 'false'
47
63
  }>;
48
64
 
49
65
  export interface SelectionMenuProps extends ViewProps {
50
66
  /**
51
67
  * Menu options.
52
68
  */
53
- options: ReadonlyArray<SelectionMenuOption>;
69
+ options: ReadonlyArray<SelectionMenuNativeOption>;
54
70
 
55
71
  /**
56
72
  * Controlled selection by `data`.
@@ -81,6 +97,12 @@ export interface SelectionMenuProps extends ViewProps {
81
97
  */
82
98
  visible?: string; // SelectionMenuVisible
83
99
 
100
+ /**
101
+ * Haptic played when the user picks an option: '' (none added) | 'none' | 'selection' |
102
+ * 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
103
+ */
104
+ haptics?: string;
105
+
84
106
  /**
85
107
  * Fired when the user selects an option.
86
108
  */
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ // SplitButton.tsx
4
+ import React, { useCallback, useMemo } from 'react';
5
+ import NativeButtonGroup from './ButtonGroupNativeComponent';
6
+ import { resolveIcon } from "./icons.js";
7
+ import { normalizeLabelStyle } from "./labelStyle.js";
8
+ import { flattenMenuActions } from "./menuItems.js";
9
+
10
+ /**
11
+ * Emphasis of a split button: the Button variants without `text`, which has
12
+ * no container to split.
13
+ */
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * A main action with an attached menu, like "Send ▾".
17
+ *
18
+ * - Android: Material 3 `MaterialSplitButton`, a leading button and a
19
+ * trailing icon button whose chevron turns while the `PopupMenu` is open.
20
+ * - iOS: a button joined to a chevron button that opens a `UIMenu`
21
+ * (`showsMenuAsPrimaryAction`).
22
+ */
23
+ export function SplitButton(props) {
24
+ const {
25
+ label,
26
+ icon,
27
+ accessibilityLabel,
28
+ menu,
29
+ menuAccessibilityLabel,
30
+ variant,
31
+ size,
32
+ disabled,
33
+ color,
34
+ tintColor,
35
+ labelStyle,
36
+ haptics,
37
+ onPress,
38
+ onMenuSelect,
39
+ onMenuOpen,
40
+ onMenuClose,
41
+ android,
42
+ ...viewProps
43
+ } = props;
44
+ const nativeButtons = useMemo(() => [{
45
+ label: label ?? '',
46
+ value: 'primary',
47
+ disabled: 'enabled',
48
+ accessibilityLabel: accessibilityLabel ?? '',
49
+ ...resolveIcon(icon)
50
+ }], [label, icon, accessibilityLabel]);
51
+ const nativeMenu = useMemo(() => flattenMenuActions(menu), [menu]);
52
+ const nativeLabelStyle = useMemo(() => normalizeLabelStyle(labelStyle), [labelStyle]);
53
+ const nativeAndroid = useMemo(() => ({
54
+ material: android?.material ?? 'expressive'
55
+ }), [android?.material]);
56
+ const handlePress = useCallback(() => onPress?.(), [onPress]);
57
+ const handleMenuSelect = useCallback(e => {
58
+ onMenuSelect?.(e.nativeEvent.id, e.nativeEvent.title);
59
+ }, [onMenuSelect]);
60
+ const handleMenuOpen = useCallback(() => onMenuOpen?.(), [onMenuOpen]);
61
+ const handleMenuClose = useCallback(() => onMenuClose?.(), [onMenuClose]);
62
+ return /*#__PURE__*/_jsx(NativeButtonGroup, {
63
+ buttons: nativeButtons,
64
+ split: "true",
65
+ menu: nativeMenu,
66
+ menuAccessibilityLabel: menuAccessibilityLabel ?? 'More options',
67
+ variant: variant ?? 'filled',
68
+ size: size ?? 'small',
69
+ shape: "",
70
+ connected: "true",
71
+ spacing: -1,
72
+ selection: "none",
73
+ selectedValues: [],
74
+ selectionRequired: "false",
75
+ interactivity: disabled ? 'disabled' : 'enabled',
76
+ color: color,
77
+ foregroundColor: tintColor,
78
+ androidRippleColor: android?.rippleColor,
79
+ androidStrokeColor: android?.strokeColor,
80
+ labelStyle: nativeLabelStyle,
81
+ overflow: "none",
82
+ haptics: haptics ?? '',
83
+ onButtonPress: onPress ? handlePress : undefined,
84
+ onMenuSelect: onMenuSelect ? handleMenuSelect : undefined,
85
+ onMenuOpen: onMenuOpen ? handleMenuOpen : undefined,
86
+ onMenuClose: onMenuClose ? handleMenuClose : undefined,
87
+ android: nativeAndroid,
88
+ ...viewProps
89
+ });
90
+ }
91
+ //# sourceMappingURL=SplitButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","NativeButtonGroup","resolveIcon","normalizeLabelStyle","flattenMenuActions","jsx","_jsx","SplitButton","props","label","icon","accessibilityLabel","menu","menuAccessibilityLabel","variant","size","disabled","color","tintColor","labelStyle","haptics","onPress","onMenuSelect","onMenuOpen","onMenuClose","android","viewProps","nativeButtons","value","nativeMenu","nativeLabelStyle","nativeAndroid","material","handlePress","handleMenuSelect","e","nativeEvent","id","title","handleMenuOpen","handleMenuClose","buttons","split","shape","connected","spacing","selection","selectedValues","selectionRequired","interactivity","foregroundColor","androidRippleColor","rippleColor","androidStrokeColor","strokeColor","overflow","onButtonPress","undefined"],"sourceRoot":"../../src","sources":["SplitButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ // TabBar.tsx
4
+ import React, { useCallback, useId, useMemo, useRef, useState } from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import NativeTabBar from './TabBarNativeComponent';
7
+ import NativeTabBarAccessory from './TabBarAccessoryNativeComponent';
8
+ import { isLiquidGlassSupported } from "./LiquidGlass.js";
9
+ import { normalizeLabelStyle } from "./labelStyle.js";
10
+ import { MAX_TAB_ITEMS, toNativeTabItems } from "./tabItems.js";
11
+
12
+ /**
13
+ * How labels show under the icons.
14
+ *
15
+ * - `auto` (default): the platform default. iOS labels every tab; Android
16
+ * labels every tab up to three, and only the selected one from four.
17
+ * - `labeled`: every tab shows its label.
18
+ * - `selected`: only the selected tab shows its label. Android only; iOS
19
+ * labels every tab.
20
+ * - `unlabeled`: icons only. Screen readers still announce the labels.
21
+ */
22
+
23
+ /**
24
+ * When the bar gets out of the way of scrolling content, following the
25
+ * ScrollView named by `scrollViewNativeID`.
26
+ *
27
+ * - `onScrollDown`: minimize while scrolling down, come back scrolling up.
28
+ * - `onScrollUp`: the reverse.
29
+ * - `automatic`: the platform default (iOS 26: minimize on scroll down).
30
+ * - `never`: always full size.
31
+ */
32
+
33
+ /**
34
+ * Where the iOS 26 bottom accessory sits: `regular`, its own row above the
35
+ * bar, or `inline`, beside the minimized bar.
36
+ */
37
+
38
+ /**
39
+ * Android: the tab layout. `vertical` puts the icon above the label,
40
+ * `horizontal` beside it (Material 3 Expressive, for wide bars), and `auto`
41
+ * picks horizontal when the bar is at least 600dp wide.
42
+ */
43
+
44
+ /**
45
+ * Android: the shape of the active indicator. `pill` (default) has fully
46
+ * rounded ends; `circle` is a circle the indicator's height across; a number
47
+ * is the corner radius, in dp, of a rounded rectangle.
48
+ */
49
+
50
+ /** Badge colors. Both default to the platform look. */
51
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
52
+ export function TabBar(props) {
53
+ const {
54
+ items,
55
+ selectedValue,
56
+ onSelect,
57
+ onReselect,
58
+ haptics,
59
+ labelVisibility,
60
+ activeTintColor,
61
+ inactiveTintColor,
62
+ barColor,
63
+ badgeStyle,
64
+ labelStyle,
65
+ maxFontSizeMultiplier,
66
+ minimizeBehavior,
67
+ scrollViewNativeID,
68
+ accessory,
69
+ onAccessoryEnvironmentChange,
70
+ android,
71
+ style,
72
+ ...viewProps
73
+ } = props;
74
+ if (__DEV__ && items.length > MAX_TAB_ITEMS) {
75
+ console.warn(`TabBar: ${items.length} tabs given; the platform tab bars show at most ${MAX_TAB_ITEMS}, so the rest are dropped.`);
76
+ }
77
+ const nativeItems = useMemo(() => toNativeTabItems(items), [items]);
78
+ const handleTabPress = useCallback(event => {
79
+ const {
80
+ index,
81
+ value,
82
+ reselected
83
+ } = event.nativeEvent;
84
+ if (reselected === 'true') {
85
+ onReselect?.(value, index);
86
+ } else {
87
+ onSelect?.(value, index);
88
+ }
89
+ }, [onSelect, onReselect]);
90
+ const nativeLabelStyle = useMemo(() => normalizeLabelStyle(labelStyle), [labelStyle]);
91
+
92
+ // --- Accessory ---
93
+ // iOS 26 hosts it in UIKit's accessory: the content mounts into the
94
+ // accessory view, laid out at the size and place native reports. Elsewhere
95
+ // it is a plain view above the bar.
96
+ const hasAccessory = accessory !== undefined && accessory !== null && accessory !== false;
97
+ const hostsAccessory = hasAccessory && isLiquidGlassSupported;
98
+ const accessoryID = `pc-tab-accessory${useId()}`;
99
+ const [accessoryFrame, setAccessoryFrame] = useState(null);
100
+ const environment = useRef('regular');
101
+ const handleAccessoryLayout = useCallback(event => {
102
+ const {
103
+ x,
104
+ y,
105
+ width,
106
+ height
107
+ } = event.nativeEvent;
108
+ setAccessoryFrame(current => current && current.x === x && current.y === y && current.width === width && current.height === height ? current : {
109
+ x,
110
+ y,
111
+ width,
112
+ height
113
+ });
114
+ const next = event.nativeEvent.environment === 'inline' ? 'inline' : 'regular';
115
+ if (next !== environment.current) {
116
+ environment.current = next;
117
+ onAccessoryEnvironmentChange?.(next);
118
+ }
119
+ }, [onAccessoryEnvironmentChange]);
120
+ const indicatorShape = android?.indicatorShape;
121
+ const bar = /*#__PURE__*/_jsx(NativeTabBar, {
122
+ items: nativeItems,
123
+ selectedValue: selectedValue ?? '',
124
+ labelVisibility: labelVisibility ?? 'auto',
125
+ activeTintColor: activeTintColor,
126
+ inactiveTintColor: inactiveTintColor,
127
+ barColor: barColor,
128
+ badgeBackgroundColor: badgeStyle?.backgroundColor,
129
+ badgeTextColor: badgeStyle?.color,
130
+ labelStyle: nativeLabelStyle,
131
+ maxFontSizeMultiplier: maxFontSizeMultiplier ?? 0,
132
+ minimizeBehavior: minimizeBehavior ?? '',
133
+ scrollViewNativeID: scrollViewNativeID ?? '',
134
+ accessoryID: hasAccessory ? accessoryID : '',
135
+ androidIndicatorColor: android?.indicatorColor,
136
+ androidRippleColor: android?.rippleColor,
137
+ androidIndicator: android?.indicator === undefined ? '' : String(android.indicator),
138
+ androidIndicatorShape: typeof indicatorShape === 'number' ? 'rounded' : indicatorShape ?? '',
139
+ androidIndicatorCornerRadius: typeof indicatorShape === 'number' ? indicatorShape : 0,
140
+ androidIndicatorWidth: android?.indicatorWidth ?? 0,
141
+ androidIndicatorHeight: android?.indicatorHeight ?? 0,
142
+ androidItemLayout: android?.itemLayout ?? '',
143
+ haptics: haptics ?? '',
144
+ onTabPress: onSelect || onReselect ? handleTabPress : undefined,
145
+ onAccessoryLayout: hostsAccessory ? handleAccessoryLayout : undefined,
146
+ style: hasAccessory ? undefined : style,
147
+ ...viewProps
148
+ });
149
+ if (!hasAccessory) {
150
+ return bar;
151
+ }
152
+ if (hostsAccessory) {
153
+ // The inner view has no padding, so the accessory's offsets are in the
154
+ // bar's coordinates. The content's place in the layout matches where
155
+ // UIKit shows it, for touch handling that measures views.
156
+ return /*#__PURE__*/_jsx(View, {
157
+ style: style,
158
+ pointerEvents: "box-none",
159
+ children: /*#__PURE__*/_jsxs(View, {
160
+ pointerEvents: "box-none",
161
+ children: [bar, /*#__PURE__*/_jsx(NativeTabBarAccessory, {
162
+ accessoryID: accessoryID,
163
+ style: [styles.hostedAccessory, accessoryFrame ? {
164
+ left: accessoryFrame.x,
165
+ top: accessoryFrame.y,
166
+ width: accessoryFrame.width,
167
+ height: accessoryFrame.height
168
+ } : styles.accessoryPlaceholder],
169
+ children: accessory
170
+ })]
171
+ })
172
+ });
173
+ }
174
+ return /*#__PURE__*/_jsxs(View, {
175
+ style: style,
176
+ pointerEvents: "box-none",
177
+ children: [/*#__PURE__*/_jsx(View, {
178
+ nativeID: accessoryID,
179
+ collapsable: false,
180
+ children: accessory
181
+ }), bar]
182
+ });
183
+ }
184
+ const styles = StyleSheet.create({
185
+ hostedAccessory: {
186
+ position: 'absolute'
187
+ },
188
+ // Until the first layout: the accessory's usual row across the bar
189
+ accessoryPlaceholder: {
190
+ left: 0,
191
+ right: 0,
192
+ top: 0,
193
+ height: 48
194
+ }
195
+ });
196
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useId","useMemo","useRef","useState","StyleSheet","View","NativeTabBar","NativeTabBarAccessory","isLiquidGlassSupported","normalizeLabelStyle","MAX_TAB_ITEMS","toNativeTabItems","jsx","_jsx","jsxs","_jsxs","TabBar","props","items","selectedValue","onSelect","onReselect","haptics","labelVisibility","activeTintColor","inactiveTintColor","barColor","badgeStyle","labelStyle","maxFontSizeMultiplier","minimizeBehavior","scrollViewNativeID","accessory","onAccessoryEnvironmentChange","android","style","viewProps","__DEV__","length","console","warn","nativeItems","handleTabPress","event","index","value","reselected","nativeEvent","nativeLabelStyle","hasAccessory","undefined","hostsAccessory","accessoryID","accessoryFrame","setAccessoryFrame","environment","handleAccessoryLayout","x","y","width","height","current","next","indicatorShape","bar","badgeBackgroundColor","backgroundColor","badgeTextColor","color","androidIndicatorColor","indicatorColor","androidRippleColor","rippleColor","androidIndicator","indicator","String","androidIndicatorShape","androidIndicatorCornerRadius","androidIndicatorWidth","indicatorWidth","androidIndicatorHeight","indicatorHeight","androidItemLayout","itemLayout","onTabPress","onAccessoryLayout","pointerEvents","children","styles","hostedAccessory","left","top","accessoryPlaceholder","nativeID","collapsable","create","position","right"],"sourceRoot":"../../src","sources":["TabBar.tsx"],"mappings":";;AAAA;AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC5E,SACEC,UAAU,EACVC,IAAI,QAIC,cAAc;AAErB,OAAOC,YAAY,MAGZ,yBAAyB;AAChC,OAAOC,qBAAqB,MAAM,kCAAkC;AACpE,SAASC,sBAAsB,QAAQ,kBAAe;AAEtD,SAASC,mBAAmB,QAAyB,iBAAc;AACnE,SACEC,aAAa,EACbC,gBAAgB,QAEX,eAAY;;AAInB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAGA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoIA,OAAO,SAASC,MAAMA,CAACC,KAAkB,EAAsB;EAC7D,MAAM;IACJC,KAAK;IACLC,aAAa;IACbC,QAAQ;IACRC,UAAU;IACVC,OAAO;IACPC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,QAAQ;IACRC,UAAU;IACVC,UAAU;IACVC,qBAAqB;IACrBC,gBAAgB;IAChBC,kBAAkB;IAClBC,SAAS;IACTC,4BAA4B;IAC5BC,OAAO;IACPC,KAAK;IACL,GAAGC;EACL,CAAC,GAAGnB,KAAK;EAET,IAAIoB,OAAO,IAAInB,KAAK,CAACoB,MAAM,GAAG5B,aAAa,EAAE;IAC3C6B,OAAO,CAACC,IAAI,CACV,WAAWtB,KAAK,CAACoB,MAAM,mDAAmD5B,aAAa,4BACzF,CAAC;EACH;EAEA,MAAM+B,WAAW,GAAGxC,OAAO,CAAC,MAAMU,gBAAgB,CAACO,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEnE,MAAMwB,cAAc,GAAG3C,WAAW,CAC/B4C,KAA8C,IAAK;IAClD,MAAM;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAW,CAAC,GAAGH,KAAK,CAACI,WAAW;IACtD,IAAID,UAAU,KAAK,MAAM,EAAE;MACzBzB,UAAU,GAAGwB,KAAK,EAAED,KAAK,CAAC;IAC5B,CAAC,MAAM;MACLxB,QAAQ,GAAGyB,KAAK,EAAED,KAAK,CAAC;IAC1B;EACF,CAAC,EACD,CAACxB,QAAQ,EAAEC,UAAU,CACvB,CAAC;EAED,MAAM2B,gBAAgB,GAAG/C,OAAO,CAC9B,MAAMQ,mBAAmB,CAACmB,UAAU,CAAC,EACrC,CAACA,UAAU,CACb,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMqB,YAAY,GAChBjB,SAAS,KAAKkB,SAAS,IAAIlB,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK;EACtE,MAAMmB,cAAc,GAAGF,YAAY,IAAIzC,sBAAsB;EAC7D,MAAM4C,WAAW,GAAG,mBAAmBpD,KAAK,CAAC,CAAC,EAAE;EAChD,MAAM,CAACqD,cAAc,EAAEC,iBAAiB,CAAC,GAAGnD,QAAQ,CAClD,IACF,CAAC;EACD,MAAMoD,WAAW,GAAGrD,MAAM,CAA6B,SAAS,CAAC;EAEjE,MAAMsD,qBAAqB,GAAGzD,WAAW,CACtC4C,KAAuD,IAAK;IAC3D,MAAM;MAAEc,CAAC;MAAEC,CAAC;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAGjB,KAAK,CAACI,WAAW;IACjDO,iBAAiB,CAAEO,OAAO,IACxBA,OAAO,IACPA,OAAO,CAACJ,CAAC,KAAKA,CAAC,IACfI,OAAO,CAACH,CAAC,KAAKA,CAAC,IACfG,OAAO,CAACF,KAAK,KAAKA,KAAK,IACvBE,OAAO,CAACD,MAAM,KAAKA,MAAM,GACrBC,OAAO,GACP;MAAEJ,CAAC;MAAEC,CAAC;MAAEC,KAAK;MAAEC;IAAO,CAC5B,CAAC;IACD,MAAME,IAAgC,GACpCnB,KAAK,CAACI,WAAW,CAACQ,WAAW,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS;IACnE,IAAIO,IAAI,KAAKP,WAAW,CAACM,OAAO,EAAE;MAChCN,WAAW,CAACM,OAAO,GAAGC,IAAI;MAC1B7B,4BAA4B,GAAG6B,IAAI,CAAC;IACtC;EACF,CAAC,EACD,CAAC7B,4BAA4B,CAC/B,CAAC;EAED,MAAM8B,cAAc,GAAG7B,OAAO,EAAE6B,cAAc;EAE9C,MAAMC,GAAG,gBACPnD,IAAA,CAACP,YAAY;IACXY,KAAK,EAAEuB,WAAY;IACnBtB,aAAa,EAAEA,aAAa,IAAI,EAAG;IACnCI,eAAe,EAAEA,eAAe,IAAI,MAAO;IAC3CC,eAAe,EAAEA,eAAgB;IACjCC,iBAAiB,EAAEA,iBAAkB;IACrCC,QAAQ,EAAEA,QAAS;IACnBuC,oBAAoB,EAAEtC,UAAU,EAAEuC,eAAgB;IAClDC,cAAc,EAAExC,UAAU,EAAEyC,KAAM;IAClCxC,UAAU,EAAEoB,gBAAiB;IAC7BnB,qBAAqB,EAAEA,qBAAqB,IAAI,CAAE;IAClDC,gBAAgB,EAAEA,gBAAgB,IAAI,EAAG;IACzCC,kBAAkB,EAAEA,kBAAkB,IAAI,EAAG;IAC7CqB,WAAW,EAAEH,YAAY,GAAGG,WAAW,GAAG,EAAG;IAC7CiB,qBAAqB,EAAEnC,OAAO,EAAEoC,cAAe;IAC/CC,kBAAkB,EAAErC,OAAO,EAAEsC,WAAY;IACzCC,gBAAgB,EACdvC,OAAO,EAAEwC,SAAS,KAAKxB,SAAS,GAAG,EAAE,GAAGyB,MAAM,CAACzC,OAAO,CAACwC,SAAS,CACjE;IACDE,qBAAqB,EACnB,OAAOb,cAAc,KAAK,QAAQ,GAAG,SAAS,GAAIA,cAAc,IAAI,EACrE;IACDc,4BAA4B,EAC1B,OAAOd,cAAc,KAAK,QAAQ,GAAGA,cAAc,GAAG,CACvD;IACDe,qBAAqB,EAAE5C,OAAO,EAAE6C,cAAc,IAAI,CAAE;IACpDC,sBAAsB,EAAE9C,OAAO,EAAE+C,eAAe,IAAI,CAAE;IACtDC,iBAAiB,EAAEhD,OAAO,EAAEiD,UAAU,IAAI,EAAG;IAC7C7D,OAAO,EAAEA,OAAO,IAAI,EAAG;IACvB8D,UAAU,EAAEhE,QAAQ,IAAIC,UAAU,GAAGqB,cAAc,GAAGQ,SAAU;IAChEmC,iBAAiB,EAAElC,cAAc,GAAGK,qBAAqB,GAAGN,SAAU;IACtEf,KAAK,EAAEc,YAAY,GAAGC,SAAS,GAAGf,KAAM;IAAA,GACpCC;EAAS,CACd,CACF;EAED,IAAI,CAACa,YAAY,EAAE;IACjB,OAAOe,GAAG;EACZ;EAEA,IAAIb,cAAc,EAAE;IAClB;IACA;IACA;IACA,oBACEtC,IAAA,CAACR,IAAI;MAAC8B,KAAK,EAAEA,KAAM;MAACmD,aAAa,EAAC,UAAU;MAAAC,QAAA,eAC1CxE,KAAA,CAACV,IAAI;QAACiF,aAAa,EAAC,UAAU;QAAAC,QAAA,GAC3BvB,GAAG,eACJnD,IAAA,CAACN,qBAAqB;UACpB6C,WAAW,EAAEA,WAAY;UACzBjB,KAAK,EAAE,CACLqD,MAAM,CAACC,eAAe,EACtBpC,cAAc,GACV;YACEqC,IAAI,EAAErC,cAAc,CAACI,CAAC;YACtBkC,GAAG,EAAEtC,cAAc,CAACK,CAAC;YACrBC,KAAK,EAAEN,cAAc,CAACM,KAAK;YAC3BC,MAAM,EAAEP,cAAc,CAACO;UACzB,CAAC,GACD4B,MAAM,CAACI,oBAAoB,CAC/B;UAAAL,QAAA,EAEDvD;QAAS,CACW,CAAC;MAAA,CACpB;IAAC,CACH,CAAC;EAEX;EAEA,oBACEjB,KAAA,CAACV,IAAI;IAAC8B,KAAK,EAAEA,KAAM;IAACmD,aAAa,EAAC,UAAU;IAAAC,QAAA,gBAC1C1E,IAAA,CAACR,IAAI;MAACwF,QAAQ,EAAEzC,WAAY;MAAC0C,WAAW,EAAE,KAAM;MAAAP,QAAA,EAC7CvD;IAAS,CACN,CAAC,EACNgC,GAAG;EAAA,CACA,CAAC;AAEX;AAEA,MAAMwB,MAAM,GAAGpF,UAAU,CAAC2F,MAAM,CAAC;EAC/BN,eAAe,EAAE;IAAEO,QAAQ,EAAE;EAAW,CAAC;EACzC;EACAJ,oBAAoB,EAAE;IAAEF,IAAI,EAAE,CAAC;IAAEO,KAAK,EAAE,CAAC;IAAEN,GAAG,EAAE,CAAC;IAAE/B,MAAM,EAAE;EAAG;AAChE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ // TabBarAccessoryNativeComponent.ts
2
+ import type { HostComponent, ViewProps } from 'react-native';
3
+ import { codegenNativeComponent } from 'react-native';
4
+
5
+ /**
6
+ * The content of a TabBar's bottom accessory on iOS 26. Its children are
7
+ * mounted into the view UIKit shows as the tab bar's accessory, found by the
8
+ * bar through `accessoryID`; this view itself stays empty in the layout.
9
+ */
10
+ export interface TabBarAccessoryNativeProps extends ViewProps {
11
+ /** The id the TabBar links to; '' = not linked. */
12
+ accessoryID: string;
13
+ }
14
+
15
+ export default codegenNativeComponent<TabBarAccessoryNativeProps>(
16
+ 'PCTabBarAccessory',
17
+ // Only iOS 26 hosts the accessory; Android renders a plain view
18
+ { excludedPlatforms: ['android'] }
19
+ ) as HostComponent<TabBarAccessoryNativeProps>;
@@ -0,0 +1,145 @@
1
+ // TabBarNativeComponent.ts
2
+ import type { ColorValue, HostComponent, ViewProps } from 'react-native';
3
+ import { codegenNativeComponent } from 'react-native';
4
+ import type {
5
+ BubblingEventHandler,
6
+ DirectEventHandler,
7
+ Double,
8
+ Int32,
9
+ WithDefault,
10
+ } from './codegenTypes';
11
+
12
+ /**
13
+ * A single tab. Icons are pre-resolved on the JS side (see icons.ts), the
14
+ * selected icon under the `selected…` fields; empty strings mean "none".
15
+ */
16
+ export type TabBarItem = Readonly<{
17
+ label: string;
18
+ value: string;
19
+ disabled: string; // 'enabled' | 'disabled'
20
+ iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
21
+ iconName: string;
22
+ iconRequest: string;
23
+ iconUri: string;
24
+ iconScale: Double;
25
+ iconTinted: string; // 'true' | 'false'
26
+ selectedIconType: string;
27
+ selectedIconName: string;
28
+ selectedIconRequest: string;
29
+ selectedIconUri: string;
30
+ selectedIconScale: Double;
31
+ selectedIconTinted: string;
32
+ badge: string; // badge text, '' = no badge
33
+ accessibilityLabel: string; // '' = the label
34
+ testID: string; // '' = none
35
+ role: string; // '' | 'search'
36
+ systemItem: string; // '' | a UITabBarItem.SystemItem name ('favorites', …)
37
+ }>;
38
+
39
+ /** A press on a tab. `reselected` is 'true' when the tab was already selected. */
40
+ export type TabBarSelectEvent = Readonly<{
41
+ index: Int32;
42
+ value: string;
43
+ reselected: string; // 'true' | 'false'
44
+ }>;
45
+
46
+ /**
47
+ * iOS 26: where the hosted bottom accessory sits, in the bar's coordinates,
48
+ * and its environment.
49
+ */
50
+ export type TabBarAccessoryLayoutEvent = Readonly<{
51
+ x: Double;
52
+ y: Double;
53
+ width: Double;
54
+ height: Double;
55
+ environment: string; // 'regular' | 'inline'
56
+ }>;
57
+
58
+ /** Label font. Empty strings / 0 mean "platform default". */
59
+ export type TabBarLabelStyleProps = Readonly<{
60
+ fontFamily?: string;
61
+ fontSize?: Double;
62
+ fontWeight?: string;
63
+ fontStyle?: string;
64
+ }>;
65
+
66
+ export interface TabBarNativeProps extends ViewProps {
67
+ /** The tabs. */
68
+ items: ReadonlyArray<TabBarItem>;
69
+
70
+ /** Selected tab by value; '' = none. */
71
+ selectedValue?: WithDefault<string, ''>;
72
+
73
+ /** 'auto' | 'labeled' | 'selected' | 'unlabeled' */
74
+ labelVisibility?: string;
75
+
76
+ /** Icon and label color of the selected tab. */
77
+ activeTintColor?: ColorValue;
78
+
79
+ /** Icon and label color of the other tabs. */
80
+ inactiveTintColor?: ColorValue;
81
+
82
+ /** Bar background; transparent to show what is behind. */
83
+ barColor?: ColorValue;
84
+
85
+ /** Badge colors. */
86
+ badgeBackgroundColor?: ColorValue;
87
+ badgeTextColor?: ColorValue;
88
+
89
+ /** Label font. */
90
+ labelStyle?: TabBarLabelStyleProps;
91
+
92
+ /** Largest font scale the labels may reach; 0 = no cap. */
93
+ maxFontSizeMultiplier?: Double;
94
+
95
+ /** '' | 'automatic' | 'never' | 'onScrollDown' | 'onScrollUp' */
96
+ minimizeBehavior?: string;
97
+
98
+ /** nativeID of the ScrollView whose scrolling minimizes the bar. */
99
+ scrollViewNativeID?: string;
100
+
101
+ /** Android: the active indicator pill behind the selected icon. */
102
+ androidIndicatorColor?: ColorValue;
103
+
104
+ /** Android: ripple shown while pressing a tab. */
105
+ androidRippleColor?: ColorValue;
106
+
107
+ /** Android: 'true' | 'false' ('' = shown), the active indicator. */
108
+ androidIndicator?: string;
109
+
110
+ /** Android: '' (pill) | 'pill' | 'circle' | 'rounded' (androidIndicatorCornerRadius). */
111
+ androidIndicatorShape?: string;
112
+
113
+ /** Android: corner radius of a 'rounded' indicator, in dp. */
114
+ androidIndicatorCornerRadius?: Double;
115
+
116
+ /** Android: indicator size in dp; 0 = the Material default. */
117
+ androidIndicatorWidth?: Double;
118
+ androidIndicatorHeight?: Double;
119
+
120
+ /** Android: '' | 'vertical' | 'horizontal' | 'auto', icon above or beside the label. */
121
+ androidItemLayout?: string;
122
+
123
+ /**
124
+ * Links the bar to its accessory view (PCTabBarAccessory with the same
125
+ * id): iOS 26 hosts it as the tab bar's bottom accessory; Android slides
126
+ * it away with the bar. '' = none.
127
+ */
128
+ accessoryID?: string;
129
+
130
+ /**
131
+ * Haptic played when a tab is pressed: '' (none added) | 'none' | 'selection' |
132
+ * 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
133
+ */
134
+ haptics?: string;
135
+
136
+ /** Fired when a tab is pressed. */
137
+ onTabPress?: BubblingEventHandler<TabBarSelectEvent>;
138
+
139
+ /** iOS 26: the hosted accessory moved, resized or changed environment. */
140
+ onAccessoryLayout?: DirectEventHandler<TabBarAccessoryLayoutEvent>;
141
+ }
142
+
143
+ export default codegenNativeComponent<TabBarNativeProps>(
144
+ 'PCTabBar'
145
+ ) as HostComponent<TabBarNativeProps>;