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
@@ -6,6 +6,12 @@ module.exports = {
6
6
  'MeasuringPCSelectionMenuComponentDescriptor',
7
7
  'MeasuringPCDatePickerComponentDescriptor',
8
8
  'MeasuringPCSegmentedControlComponentDescriptor',
9
+ 'MeasuringPCButtonComponentDescriptor',
10
+ 'MeasuringPCButtonGroupComponentDescriptor',
11
+ 'MeasuringPCTextFieldComponentDescriptor',
12
+ 'MeasuringPCTabBarComponentDescriptor',
13
+ 'MeasuringPCNavigationRailComponentDescriptor',
14
+ 'MeasuringPCFloatingActionButtonComponentDescriptor',
9
15
  ],
10
16
  cmakeListsPath: 'src/main/jni/CMakeLists.txt',
11
17
  },
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
4
+
5
+ // Forward declaration to avoid circular includes
6
+ namespace facebook::react {
7
+ class MeasuringPCButtonShadowNode;
8
+ }
9
+
10
+ // Include the actual shadow node definition
11
+ #include "PCButtonShadowNode-custom.h"
12
+
13
+ namespace facebook::react {
14
+
15
+ /**
16
+ * Custom component descriptor that uses our measuring shadow node
17
+ * instead of the generated one.
18
+ */
19
+ using MeasuringPCButtonComponentDescriptor =
20
+ ConcreteComponentDescriptor<MeasuringPCButtonShadowNode>;
21
+
22
+ } // namespace facebook::react
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
4
+
5
+ // Forward declaration to avoid circular includes
6
+ namespace facebook::react {
7
+ class MeasuringPCButtonGroupShadowNode;
8
+ }
9
+
10
+ // Include the actual shadow node definition
11
+ #include "PCButtonGroupShadowNode-custom.h"
12
+
13
+ namespace facebook::react {
14
+
15
+ /**
16
+ * Custom component descriptor that uses our measuring shadow node
17
+ * instead of the generated one.
18
+ */
19
+ using MeasuringPCButtonGroupComponentDescriptor =
20
+ ConcreteComponentDescriptor<MeasuringPCButtonGroupShadowNode>;
21
+
22
+ } // namespace facebook::react
@@ -0,0 +1,48 @@
1
+ #include "PCButtonGroupShadowNode-custom.h"
2
+
3
+ #include <react/renderer/core/LayoutConstraints.h>
4
+ #include <algorithm>
5
+
6
+ namespace facebook::react {
7
+
8
+ Size MeasuringPCButtonGroupShadowNode::measureContent(
9
+ const LayoutContext& /*layoutContext*/,
10
+ const LayoutConstraints& layoutConstraints) const {
11
+
12
+ // Native measures the actual group and reports its intrinsic size
13
+ const auto& stateData = this->getStateData();
14
+ Float measuredW = stateData.frameSize.width;
15
+ Float measuredH = stateData.frameSize.height;
16
+
17
+ const Float fallbackHeight =
18
+ #ifdef __ANDROID__
19
+ static_cast<Float>(kFallbackHeightAndroid);
20
+ #else
21
+ static_cast<Float>(kFallbackHeightIOS);
22
+ #endif
23
+
24
+ const bool usingFallback = (measuredH <= 0);
25
+ if (usingFallback) {
26
+ measuredH = fallbackHeight;
27
+ }
28
+ if (measuredW <= 0) {
29
+ measuredW = static_cast<Float>(kFallbackWidth);
30
+ }
31
+
32
+ const Float kHuge = static_cast<Float>(1.0e9);
33
+
34
+ measuredW = std::max<Float>(measuredW, layoutConstraints.minimumSize.width);
35
+ if (layoutConstraints.maximumSize.width > 0 && layoutConstraints.maximumSize.width < kHuge) {
36
+ measuredW = std::min<Float>(measuredW, layoutConstraints.maximumSize.width);
37
+ }
38
+
39
+ measuredH = std::max<Float>(measuredH, layoutConstraints.minimumSize.height);
40
+ // Only clamp to max height if we have real measured data (not fallback)
41
+ if (!usingFallback && layoutConstraints.maximumSize.height > 0 && layoutConstraints.maximumSize.height < kHuge) {
42
+ measuredH = std::min<Float>(measuredH, layoutConstraints.maximumSize.height);
43
+ }
44
+
45
+ return Size{measuredW, measuredH};
46
+ }
47
+
48
+ } // namespace facebook::react
@@ -0,0 +1,55 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
4
+
5
+ // Only include what we need for the shadow node definition
6
+ // Do NOT include ComponentDescriptors.h here to avoid circular dependency
7
+ #include <react/renderer/components/PlatformComponentsViewSpec/EventEmitters.h>
8
+ #include <react/renderer/components/PlatformComponentsViewSpec/Props.h>
9
+
10
+ #include "PCButtonGroupState-custom.h"
11
+
12
+ namespace facebook::react {
13
+
14
+ extern const char PCButtonGroupComponentName[];
15
+
16
+ /**
17
+ * Custom ShadowNode for ButtonGroup that supports Yoga measurement.
18
+ *
19
+ * - Native measures the actual group and updates state with frameSize
20
+ * - measureContent() returns the size from state for proper Yoga layout
21
+ * - Falls back to platform-specific defaults if state hasn't been set yet
22
+ */
23
+ class MeasuringPCButtonGroupShadowNode final : public ConcreteViewShadowNode<
24
+ PCButtonGroupComponentName,
25
+ PCButtonGroupProps,
26
+ PCButtonGroupEventEmitter,
27
+ PCButtonGroupStateFrameSize> {
28
+ public:
29
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
30
+
31
+ // Fallback sizes used when native hasn't reported measurements yet
32
+ // iOS: a row of small UIButtons
33
+ static constexpr float kFallbackHeightIOS = 34.0f;
34
+
35
+ // Android: small Material 3 buttons (40dp) plus their 4dp touch insets
36
+ static constexpr float kFallbackHeightAndroid = 48.0f;
37
+
38
+ static constexpr float kFallbackWidth = 160.0f;
39
+
40
+ static ShadowNodeTraits BaseTraits() {
41
+ auto traits = ConcreteViewShadowNode::BaseTraits();
42
+ traits.set(ShadowNodeTraits::Trait::LeafYogaNode);
43
+ traits.set(ShadowNodeTraits::Trait::MeasurableYogaNode);
44
+ return traits;
45
+ }
46
+
47
+ /**
48
+ * Called by Yoga when it needs the intrinsic size of the component.
49
+ */
50
+ Size measureContent(
51
+ const LayoutContext& layoutContext,
52
+ const LayoutConstraints& layoutConstraints) const override;
53
+ };
54
+
55
+ } // namespace facebook::react
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/LayoutPrimitives.h>
4
+ #include <memory>
5
+
6
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
7
+ #include <folly/dynamic.h>
8
+ #include <react/renderer/mapbuffer/MapBuffer.h>
9
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h>
10
+ #endif
11
+
12
+ namespace facebook::react {
13
+
14
+ /**
15
+ * Custom state for ButtonGroup that holds the measured frame size from native.
16
+ * The native side measures the actual group and communicates the size to
17
+ * the shadow node for proper Yoga layout.
18
+ */
19
+ struct PCButtonGroupStateFrameSize {
20
+ using Shared = std::shared_ptr<const PCButtonGroupStateFrameSize>;
21
+
22
+ Size frameSize{}; // {width, height} in points
23
+
24
+ PCButtonGroupStateFrameSize() = default;
25
+
26
+ explicit PCButtonGroupStateFrameSize(Size size) : frameSize(size) {}
27
+
28
+ bool operator==(const PCButtonGroupStateFrameSize& other) const {
29
+ return frameSize.width == other.frameSize.width &&
30
+ frameSize.height == other.frameSize.height;
31
+ }
32
+
33
+ bool operator!=(const PCButtonGroupStateFrameSize& other) const {
34
+ return !(*this == other);
35
+ }
36
+
37
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
38
+ // Required for Android state serialization
39
+ PCButtonGroupStateFrameSize(
40
+ const PCButtonGroupStateFrameSize& previousState,
41
+ folly::dynamic data)
42
+ : frameSize(previousState.frameSize) {
43
+ if (data.isObject()) {
44
+ if (data.count("width") && data.count("height")) {
45
+ frameSize.width = static_cast<Float>(data["width"].asDouble());
46
+ frameSize.height = static_cast<Float>(data["height"].asDouble());
47
+ }
48
+ }
49
+ }
50
+
51
+ folly::dynamic getDynamic() const {
52
+ return folly::dynamic::object("width", frameSize.width)("height", frameSize.height);
53
+ }
54
+
55
+ MapBuffer getMapBuffer() const {
56
+ return MapBufferBuilder::EMPTY();
57
+ }
58
+ #endif
59
+ };
60
+
61
+ } // namespace facebook::react
@@ -0,0 +1,48 @@
1
+ #include "PCButtonShadowNode-custom.h"
2
+
3
+ #include <react/renderer/core/LayoutConstraints.h>
4
+ #include <algorithm>
5
+
6
+ namespace facebook::react {
7
+
8
+ Size MeasuringPCButtonShadowNode::measureContent(
9
+ const LayoutContext& /*layoutContext*/,
10
+ const LayoutConstraints& layoutConstraints) const {
11
+
12
+ // Native measures the actual button and reports its intrinsic size
13
+ const auto& stateData = this->getStateData();
14
+ Float measuredW = stateData.frameSize.width;
15
+ Float measuredH = stateData.frameSize.height;
16
+
17
+ const Float fallbackHeight =
18
+ #ifdef __ANDROID__
19
+ static_cast<Float>(kFallbackHeightAndroid);
20
+ #else
21
+ static_cast<Float>(kFallbackHeightIOS);
22
+ #endif
23
+
24
+ const bool usingFallback = (measuredH <= 0);
25
+ if (usingFallback) {
26
+ measuredH = fallbackHeight;
27
+ }
28
+ if (measuredW <= 0) {
29
+ measuredW = static_cast<Float>(kFallbackWidth);
30
+ }
31
+
32
+ const Float kHuge = static_cast<Float>(1.0e9);
33
+
34
+ measuredW = std::max<Float>(measuredW, layoutConstraints.minimumSize.width);
35
+ if (layoutConstraints.maximumSize.width > 0 && layoutConstraints.maximumSize.width < kHuge) {
36
+ measuredW = std::min<Float>(measuredW, layoutConstraints.maximumSize.width);
37
+ }
38
+
39
+ measuredH = std::max<Float>(measuredH, layoutConstraints.minimumSize.height);
40
+ // Only clamp to max height if we have real measured data (not fallback)
41
+ if (!usingFallback && layoutConstraints.maximumSize.height > 0 && layoutConstraints.maximumSize.height < kHuge) {
42
+ measuredH = std::min<Float>(measuredH, layoutConstraints.maximumSize.height);
43
+ }
44
+
45
+ return Size{measuredW, measuredH};
46
+ }
47
+
48
+ } // namespace facebook::react
@@ -0,0 +1,55 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
4
+
5
+ // Only include what we need for the shadow node definition
6
+ // Do NOT include ComponentDescriptors.h here to avoid circular dependency
7
+ #include <react/renderer/components/PlatformComponentsViewSpec/EventEmitters.h>
8
+ #include <react/renderer/components/PlatformComponentsViewSpec/Props.h>
9
+
10
+ #include "PCButtonState-custom.h"
11
+
12
+ namespace facebook::react {
13
+
14
+ extern const char PCButtonComponentName[];
15
+
16
+ /**
17
+ * Custom ShadowNode for Button that supports Yoga measurement.
18
+ *
19
+ * - Native measures the actual button and updates state with frameSize
20
+ * - measureContent() returns the size from state for proper Yoga layout
21
+ * - Falls back to platform-specific defaults if state hasn't been set yet
22
+ */
23
+ class MeasuringPCButtonShadowNode final : public ConcreteViewShadowNode<
24
+ PCButtonComponentName,
25
+ PCButtonProps,
26
+ PCButtonEventEmitter,
27
+ PCButtonStateFrameSize> {
28
+ public:
29
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
30
+
31
+ // Fallback sizes used when native hasn't reported measurements yet
32
+ // iOS UIButton.Configuration small size
33
+ static constexpr float kFallbackHeightIOS = 34.0f;
34
+
35
+ // Android Material 3 small button (40dp) plus its 4dp touch insets
36
+ static constexpr float kFallbackHeightAndroid = 48.0f;
37
+
38
+ static constexpr float kFallbackWidth = 64.0f;
39
+
40
+ static ShadowNodeTraits BaseTraits() {
41
+ auto traits = ConcreteViewShadowNode::BaseTraits();
42
+ traits.set(ShadowNodeTraits::Trait::LeafYogaNode);
43
+ traits.set(ShadowNodeTraits::Trait::MeasurableYogaNode);
44
+ return traits;
45
+ }
46
+
47
+ /**
48
+ * Called by Yoga when it needs the intrinsic size of the component.
49
+ */
50
+ Size measureContent(
51
+ const LayoutContext& layoutContext,
52
+ const LayoutConstraints& layoutConstraints) const override;
53
+ };
54
+
55
+ } // namespace facebook::react
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/LayoutPrimitives.h>
4
+ #include <memory>
5
+
6
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
7
+ #include <folly/dynamic.h>
8
+ #include <react/renderer/mapbuffer/MapBuffer.h>
9
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h>
10
+ #endif
11
+
12
+ namespace facebook::react {
13
+
14
+ /**
15
+ * Custom state for Button that holds the measured frame size from native.
16
+ * The native side measures the actual button and communicates the size to
17
+ * the shadow node for proper Yoga layout.
18
+ */
19
+ struct PCButtonStateFrameSize {
20
+ using Shared = std::shared_ptr<const PCButtonStateFrameSize>;
21
+
22
+ Size frameSize{}; // {width, height} in points
23
+
24
+ PCButtonStateFrameSize() = default;
25
+
26
+ explicit PCButtonStateFrameSize(Size size) : frameSize(size) {}
27
+
28
+ bool operator==(const PCButtonStateFrameSize& other) const {
29
+ return frameSize.width == other.frameSize.width &&
30
+ frameSize.height == other.frameSize.height;
31
+ }
32
+
33
+ bool operator!=(const PCButtonStateFrameSize& other) const {
34
+ return !(*this == other);
35
+ }
36
+
37
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
38
+ // Required for Android state serialization
39
+ PCButtonStateFrameSize(
40
+ const PCButtonStateFrameSize& previousState,
41
+ folly::dynamic data)
42
+ : frameSize(previousState.frameSize) {
43
+ if (data.isObject()) {
44
+ if (data.count("width") && data.count("height")) {
45
+ frameSize.width = static_cast<Float>(data["width"].asDouble());
46
+ frameSize.height = static_cast<Float>(data["height"].asDouble());
47
+ }
48
+ }
49
+ }
50
+
51
+ folly::dynamic getDynamic() const {
52
+ return folly::dynamic::object("width", frameSize.width)("height", frameSize.height);
53
+ }
54
+
55
+ MapBuffer getMapBuffer() const {
56
+ return MapBufferBuilder::EMPTY();
57
+ }
58
+ #endif
59
+ };
60
+
61
+ } // namespace facebook::react
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
4
+
5
+ // Forward declaration to avoid circular includes
6
+ namespace facebook::react {
7
+ class MeasuringPCFloatingActionButtonShadowNode;
8
+ }
9
+
10
+ // Include the actual shadow node definition
11
+ #include "PCFloatingActionButtonShadowNode-custom.h"
12
+
13
+ namespace facebook::react {
14
+
15
+ /**
16
+ * Custom component descriptor that uses our measuring shadow node
17
+ * instead of the generated one.
18
+ */
19
+ using MeasuringPCFloatingActionButtonComponentDescriptor =
20
+ ConcreteComponentDescriptor<MeasuringPCFloatingActionButtonShadowNode>;
21
+
22
+ } // namespace facebook::react
@@ -0,0 +1,48 @@
1
+ #include "PCFloatingActionButtonShadowNode-custom.h"
2
+
3
+ #include <react/renderer/core/LayoutConstraints.h>
4
+ #include <algorithm>
5
+
6
+ namespace facebook::react {
7
+
8
+ Size MeasuringPCFloatingActionButtonShadowNode::measureContent(
9
+ const LayoutContext& /*layoutContext*/,
10
+ const LayoutConstraints& layoutConstraints) const {
11
+
12
+ // Native measures the actual button and reports its intrinsic size
13
+ const auto& stateData = this->getStateData();
14
+ Float measuredW = stateData.frameSize.width;
15
+ Float measuredH = stateData.frameSize.height;
16
+
17
+ const Float fallbackHeight =
18
+ #ifdef __ANDROID__
19
+ static_cast<Float>(kFallbackHeightAndroid);
20
+ #else
21
+ static_cast<Float>(kFallbackHeightIOS);
22
+ #endif
23
+
24
+ const bool usingFallback = (measuredH <= 0);
25
+ if (usingFallback) {
26
+ measuredH = fallbackHeight;
27
+ }
28
+ if (measuredW <= 0) {
29
+ measuredW = static_cast<Float>(kFallbackWidth);
30
+ }
31
+
32
+ const Float kHuge = static_cast<Float>(1.0e9);
33
+
34
+ measuredW = std::max<Float>(measuredW, layoutConstraints.minimumSize.width);
35
+ if (layoutConstraints.maximumSize.width > 0 && layoutConstraints.maximumSize.width < kHuge) {
36
+ measuredW = std::min<Float>(measuredW, layoutConstraints.maximumSize.width);
37
+ }
38
+
39
+ measuredH = std::max<Float>(measuredH, layoutConstraints.minimumSize.height);
40
+ // Only clamp to max height if we have real measured data (not fallback)
41
+ if (!usingFallback && layoutConstraints.maximumSize.height > 0 && layoutConstraints.maximumSize.height < kHuge) {
42
+ measuredH = std::min<Float>(measuredH, layoutConstraints.maximumSize.height);
43
+ }
44
+
45
+ return Size{measuredW, measuredH};
46
+ }
47
+
48
+ } // namespace facebook::react
@@ -0,0 +1,54 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
4
+
5
+ // Only include what we need for the shadow node definition
6
+ // Do NOT include ComponentDescriptors.h here to avoid circular dependency
7
+ #include <react/renderer/components/PlatformComponentsViewSpec/EventEmitters.h>
8
+ #include <react/renderer/components/PlatformComponentsViewSpec/Props.h>
9
+
10
+ #include "PCFloatingActionButtonState-custom.h"
11
+
12
+ namespace facebook::react {
13
+
14
+ extern const char PCFloatingActionButtonComponentName[];
15
+
16
+ /**
17
+ * Custom ShadowNode for FloatingActionButton that supports Yoga measurement.
18
+ *
19
+ * - Native measures the button (the extended button in its current state)
20
+ * and updates state with frameSize
21
+ * - measureContent() returns the size from state for proper Yoga layout
22
+ * - Falls back to platform-specific defaults if state hasn't been set yet
23
+ */
24
+ class MeasuringPCFloatingActionButtonShadowNode final
25
+ : public ConcreteViewShadowNode<
26
+ PCFloatingActionButtonComponentName,
27
+ PCFloatingActionButtonProps,
28
+ PCFloatingActionButtonEventEmitter,
29
+ PCFloatingActionButtonStateFrameSize> {
30
+ public:
31
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
32
+
33
+ // Fallback size used when native hasn't reported measurements yet: the
34
+ // regular 56pt / 56dp button
35
+ static constexpr float kFallbackHeightIOS = 56.0f;
36
+ static constexpr float kFallbackHeightAndroid = 56.0f;
37
+ static constexpr float kFallbackWidth = 56.0f;
38
+
39
+ static ShadowNodeTraits BaseTraits() {
40
+ auto traits = ConcreteViewShadowNode::BaseTraits();
41
+ traits.set(ShadowNodeTraits::Trait::LeafYogaNode);
42
+ traits.set(ShadowNodeTraits::Trait::MeasurableYogaNode);
43
+ return traits;
44
+ }
45
+
46
+ /**
47
+ * Called by Yoga when it needs the intrinsic size of the component.
48
+ */
49
+ Size measureContent(
50
+ const LayoutContext& layoutContext,
51
+ const LayoutConstraints& layoutConstraints) const override;
52
+ };
53
+
54
+ } // namespace facebook::react
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/LayoutPrimitives.h>
4
+ #include <memory>
5
+
6
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
7
+ #include <folly/dynamic.h>
8
+ #include <react/renderer/mapbuffer/MapBuffer.h>
9
+ #include <react/renderer/mapbuffer/MapBufferBuilder.h>
10
+ #endif
11
+
12
+ namespace facebook::react {
13
+
14
+ /**
15
+ * Custom state for FloatingActionButton that holds the measured frame size from native.
16
+ * The native side measures the actual button and communicates the size to
17
+ * the shadow node for proper Yoga layout.
18
+ */
19
+ struct PCFloatingActionButtonStateFrameSize {
20
+ using Shared = std::shared_ptr<const PCFloatingActionButtonStateFrameSize>;
21
+
22
+ Size frameSize{}; // {width, height} in points
23
+
24
+ PCFloatingActionButtonStateFrameSize() = default;
25
+
26
+ explicit PCFloatingActionButtonStateFrameSize(Size size) : frameSize(size) {}
27
+
28
+ bool operator==(const PCFloatingActionButtonStateFrameSize& other) const {
29
+ return frameSize.width == other.frameSize.width &&
30
+ frameSize.height == other.frameSize.height;
31
+ }
32
+
33
+ bool operator!=(const PCFloatingActionButtonStateFrameSize& other) const {
34
+ return !(*this == other);
35
+ }
36
+
37
+ #if defined(RN_SERIALIZABLE_STATE) || defined(ANDROID)
38
+ // Required for Android state serialization
39
+ PCFloatingActionButtonStateFrameSize(
40
+ const PCFloatingActionButtonStateFrameSize& previousState,
41
+ folly::dynamic data)
42
+ : frameSize(previousState.frameSize) {
43
+ if (data.isObject()) {
44
+ if (data.count("width") && data.count("height")) {
45
+ frameSize.width = static_cast<Float>(data["width"].asDouble());
46
+ frameSize.height = static_cast<Float>(data["height"].asDouble());
47
+ }
48
+ }
49
+ }
50
+
51
+ folly::dynamic getDynamic() const {
52
+ return folly::dynamic::object("width", frameSize.width)("height", frameSize.height);
53
+ }
54
+
55
+ MapBuffer getMapBuffer() const {
56
+ return MapBufferBuilder::EMPTY();
57
+ }
58
+ #endif
59
+ };
60
+
61
+ } // namespace facebook::react
@@ -0,0 +1,47 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/core/ConcreteComponentDescriptor.h>
4
+
5
+ // Forward declaration to avoid circular includes
6
+ namespace facebook::react {
7
+ class MeasuringPCNavigationRailShadowNode;
8
+ }
9
+
10
+ // Include the actual shadow node definition
11
+ #include "PCNavigationRailShadowNode-custom.h"
12
+
13
+ namespace facebook::react {
14
+
15
+ /**
16
+ * Component descriptor for NavigationRail. Gives the node the natural width
17
+ * native reported, as horizontal padding (the way SafeAreaView applies its
18
+ * insets): a node with children can't have a measure function, and its only
19
+ * child, the header, is out of the flow.
20
+ */
21
+ class MeasuringPCNavigationRailComponentDescriptor final
22
+ : public ConcreteComponentDescriptor<MeasuringPCNavigationRailShadowNode> {
23
+ public:
24
+ using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
25
+
26
+ void adopt(ShadowNode& shadowNode) const override {
27
+ auto& layoutableShadowNode = static_cast<YogaLayoutableShadowNode&>(shadowNode);
28
+ const auto& stateData =
29
+ static_cast<const MeasuringPCNavigationRailShadowNode::ConcreteState&>(
30
+ *shadowNode.getState())
31
+ .getData();
32
+
33
+ Float width = stateData.frameSize.width;
34
+ if (width <= 0) {
35
+ #ifdef __ANDROID__
36
+ width = MeasuringPCNavigationRailShadowNode::kFallbackWidthAndroid;
37
+ #else
38
+ width = MeasuringPCNavigationRailShadowNode::kFallbackWidthIOS;
39
+ #endif
40
+ }
41
+ layoutableShadowNode.setPadding({width / 2, 0, width / 2, 0});
42
+
43
+ ConcreteComponentDescriptor::adopt(shadowNode);
44
+ }
45
+ };
46
+
47
+ } // namespace facebook::react
@@ -0,0 +1,42 @@
1
+ #pragma once
2
+
3
+ #include <react/renderer/components/view/ConcreteViewShadowNode.h>
4
+
5
+ // Only include what we need for the shadow node definition
6
+ // Do NOT include ComponentDescriptors.h here to avoid circular dependency
7
+ #include <react/renderer/components/PlatformComponentsViewSpec/EventEmitters.h>
8
+ #include <react/renderer/components/PlatformComponentsViewSpec/Props.h>
9
+
10
+ #include "PCNavigationRailState-custom.h"
11
+
12
+ namespace facebook::react {
13
+
14
+ extern const char PCNavigationRailComponentName[];
15
+
16
+ /**
17
+ * Custom ShadowNode for NavigationRail.
18
+ *
19
+ * The rail hosts React children (its header), so it can't be a measured leaf
20
+ * node like the other components. Native measures the rail and reports its
21
+ * natural width through state instead, and the component descriptor turns
22
+ * that width into horizontal padding (see
23
+ * PCNavigationRailComponentDescriptors-custom.h). The header is absolutely
24
+ * positioned, so the padding alone gives the node its width; the height is
25
+ * left to the app's layout.
26
+ */
27
+ class MeasuringPCNavigationRailShadowNode final
28
+ : public ConcreteViewShadowNode<
29
+ PCNavigationRailComponentName,
30
+ PCNavigationRailProps,
31
+ PCNavigationRailEventEmitter,
32
+ PCNavigationRailStateFrameSize> {
33
+ public:
34
+ using ConcreteViewShadowNode::ConcreteViewShadowNode;
35
+
36
+ // Width used until native reports one: the Material 3 Expressive collapsed
37
+ // rail, and the iOS fallback's column of buttons
38
+ static constexpr float kFallbackWidthIOS = 80.0f;
39
+ static constexpr float kFallbackWidthAndroid = 96.0f;
40
+ };
41
+
42
+ } // namespace facebook::react