@expo/ui 58.0.2 → 58.0.4

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 (283) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/ui/RNHostView.kt +2 -2
  4. package/build/PresentedContentContext.d.ts +1 -1
  5. package/build/community/bottom-sheet/BottomSheet.android.d.ts +1 -1
  6. package/build/community/bottom-sheet/BottomSheet.d.ts +1 -1
  7. package/build/community/bottom-sheet/BottomSheet.ios.d.ts +1 -1
  8. package/build/community/bottom-sheet/index.d.ts +3 -3
  9. package/build/community/bottom-sheet/scrollContextReset.d.ts +1 -1
  10. package/build/community/datetime-picker/DateTimePicker.android.d.ts +1 -1
  11. package/build/community/datetime-picker/DateTimePicker.d.ts +1 -1
  12. package/build/community/masked-view/MaskedView.android.d.ts +1 -1
  13. package/build/community/masked-view/MaskedView.d.ts +1 -1
  14. package/build/community/masked-view/MaskedView.ios.d.ts +1 -1
  15. package/build/community/menu/MenuView.android.d.ts +1 -1
  16. package/build/community/menu/MenuView.d.ts +1 -1
  17. package/build/community/menu/MenuView.ios.d.ts +1 -1
  18. package/build/community/pager-view/PagerView.android.d.ts +1 -1
  19. package/build/community/pager-view/PagerView.ios.d.ts +1 -1
  20. package/build/community/picker/Picker.android.d.ts +1 -1
  21. package/build/community/picker/Picker.d.ts +1 -1
  22. package/build/community/picker/Picker.ios.d.ts +1 -1
  23. package/build/community/segmented-control/SegmentedControl.android.d.ts +1 -1
  24. package/build/community/segmented-control/SegmentedControl.ios.d.ts +1 -1
  25. package/build/community/segmented-control/vendor/SegmentedControl.d.ts +2 -1
  26. package/build/community/segmented-control/vendor/SegmentedControlTab.d.ts +1 -1
  27. package/build/community/segmented-control/vendor/SegmentsSeparators.d.ts +1 -1
  28. package/build/community/slider/Slider.android.d.ts +1 -1
  29. package/build/community/slider/Slider.d.ts +2 -1
  30. package/build/community/slider/Slider.ios.d.ts +1 -1
  31. package/build/jetpack-compose/AlertDialog/index.d.ts +6 -6
  32. package/build/jetpack-compose/AnimatedVisibility/index.d.ts +1 -1
  33. package/build/jetpack-compose/Badge/index.d.ts +1 -1
  34. package/build/jetpack-compose/BadgedBox/index.d.ts +2 -2
  35. package/build/jetpack-compose/BasicAlertDialog/index.d.ts +1 -1
  36. package/build/jetpack-compose/Box/index.d.ts +1 -1
  37. package/build/jetpack-compose/Button/index.d.ts +5 -5
  38. package/build/jetpack-compose/Checkbox/index.d.ts +2 -2
  39. package/build/jetpack-compose/Chip/index.d.ts +15 -15
  40. package/build/jetpack-compose/Column/index.d.ts +1 -1
  41. package/build/jetpack-compose/DatePicker/index.d.ts +5 -5
  42. package/build/jetpack-compose/DockedSearchBar/index.d.ts +3 -3
  43. package/build/jetpack-compose/DropdownMenu/DropdownMenuItem.d.ts +4 -4
  44. package/build/jetpack-compose/DropdownMenu/index.d.ts +4 -4
  45. package/build/jetpack-compose/ExposedDropdownMenuBox/ExposedDropdownMenu.d.ts +1 -1
  46. package/build/jetpack-compose/ExposedDropdownMenuBox/index.d.ts +1 -1
  47. package/build/jetpack-compose/FloatingActionButton/index.d.ts +6 -6
  48. package/build/jetpack-compose/FlowRow/index.d.ts +1 -1
  49. package/build/jetpack-compose/HorizontalFloatingToolbar/index.d.ts +2 -2
  50. package/build/jetpack-compose/HorizontalPager/index.d.ts +1 -1
  51. package/build/jetpack-compose/Host/index.d.ts +1 -1
  52. package/build/jetpack-compose/Icon/index.d.ts +1 -1
  53. package/build/jetpack-compose/IconButton/index.d.ts +4 -4
  54. package/build/jetpack-compose/Image/index.d.ts +1 -1
  55. package/build/jetpack-compose/LazyColumn/index.d.ts +1 -1
  56. package/build/jetpack-compose/LazyRow/index.d.ts +1 -1
  57. package/build/jetpack-compose/ListItem/index.d.ts +6 -6
  58. package/build/jetpack-compose/ModalBottomSheet/index.d.ts +2 -2
  59. package/build/jetpack-compose/MultiChoiceSegmentedButtonRow/index.d.ts +1 -1
  60. package/build/jetpack-compose/NavigationBar/index.d.ts +5 -5
  61. package/build/jetpack-compose/PullToRefreshBox/index.d.ts +1 -1
  62. package/build/jetpack-compose/RNHostView/index.d.ts +1 -1
  63. package/build/jetpack-compose/RadioButton/index.d.ts +1 -1
  64. package/build/jetpack-compose/Row/index.d.ts +1 -1
  65. package/build/jetpack-compose/SearchBar/index.d.ts +3 -3
  66. package/build/jetpack-compose/SegmentedButton/index.d.ts +2 -2
  67. package/build/jetpack-compose/SingleChoiceSegmentedButtonRow/index.d.ts +1 -1
  68. package/build/jetpack-compose/Slider/index.d.ts +6 -6
  69. package/build/jetpack-compose/SlotView.d.ts +1 -1
  70. package/build/jetpack-compose/Snackbar/index.d.ts +2 -2
  71. package/build/jetpack-compose/Spacer/index.d.ts +1 -1
  72. package/build/jetpack-compose/Surface/index.d.ts +1 -1
  73. package/build/jetpack-compose/Switch/index.d.ts +2 -2
  74. package/build/jetpack-compose/SyncSwitch/index.d.ts +1 -1
  75. package/build/jetpack-compose/Text/index.d.ts +1 -1
  76. package/build/jetpack-compose/TextField/BasicTextField.d.ts +4 -4
  77. package/build/jetpack-compose/TextField/TextField.d.ts +16 -16
  78. package/build/jetpack-compose/ToggleButton/index.d.ts +4 -4
  79. package/build/jetpack-compose/Tooltip/index.d.ts +6 -6
  80. package/build/keyboard/index.d.ts +1 -1
  81. package/build/swift-ui/AccessoryWidgetBackground/index.d.ts +1 -1
  82. package/build/swift-ui/Alert/index.d.ts +4 -4
  83. package/build/swift-ui/Background/index.d.ts +2 -2
  84. package/build/swift-ui/BottomSheet/index.d.ts +1 -1
  85. package/build/swift-ui/Button/index.d.ts +1 -1
  86. package/build/swift-ui/Chart/index.d.ts +1 -1
  87. package/build/swift-ui/ColorPicker/index.d.ts +1 -1
  88. package/build/swift-ui/ConfirmationDialog/index.d.ts +4 -4
  89. package/build/swift-ui/ContentUnavailableView/index.d.ts +1 -1
  90. package/build/swift-ui/ContextMenu/index.d.ts +4 -4
  91. package/build/swift-ui/ControlGroup/index.d.ts +1 -1
  92. package/build/swift-ui/DatePicker/index.d.ts +1 -1
  93. package/build/swift-ui/DisclosureGroup/index.d.ts +2 -2
  94. package/build/swift-ui/Divider/index.d.ts +1 -1
  95. package/build/swift-ui/Form/index.d.ts +1 -1
  96. package/build/swift-ui/Gauge/index.d.ts +1 -1
  97. package/build/swift-ui/GlassEffectContainer/index.d.ts +1 -1
  98. package/build/swift-ui/Grid/index.d.ts +1 -1
  99. package/build/swift-ui/Group/index.d.ts +1 -1
  100. package/build/swift-ui/HStack/index.d.ts +1 -1
  101. package/build/swift-ui/Host/index.d.ts +1 -1
  102. package/build/swift-ui/Image/index.d.ts +1 -1
  103. package/build/swift-ui/Label/index.d.ts +1 -1
  104. package/build/swift-ui/LabeledContent/index.d.ts +1 -1
  105. package/build/swift-ui/LazyHStack/index.d.ts +1 -1
  106. package/build/swift-ui/LazyVStack/index.d.ts +1 -1
  107. package/build/swift-ui/Link/index.d.ts +1 -1
  108. package/build/swift-ui/List/ListForEach.d.ts +1 -1
  109. package/build/swift-ui/List/index.d.ts +1 -1
  110. package/build/swift-ui/Mask/index.d.ts +2 -2
  111. package/build/swift-ui/Menu/index.d.ts +1 -1
  112. package/build/swift-ui/Namespace.d.ts +1 -1
  113. package/build/swift-ui/NavigationDestination/index.d.ts +1 -1
  114. package/build/swift-ui/NavigationLink/index.d.ts +1 -1
  115. package/build/swift-ui/NavigationSplitView/index.d.ts +75 -0
  116. package/build/swift-ui/NavigationSplitView/index.js +59 -0
  117. package/build/swift-ui/NavigationSplitView/index.js.map +1 -0
  118. package/build/swift-ui/NavigationStack/index.d.ts +1 -1
  119. package/build/swift-ui/Overlay/index.d.ts +2 -2
  120. package/build/swift-ui/Picker/index.d.ts +1 -1
  121. package/build/swift-ui/Popover/index.d.ts +3 -3
  122. package/build/swift-ui/ProgressView/index.d.ts +1 -1
  123. package/build/swift-ui/RNHostView.d.ts +1 -1
  124. package/build/swift-ui/ScrollView/index.d.ts +1 -1
  125. package/build/swift-ui/Section/index.d.ts +1 -1
  126. package/build/swift-ui/SecureField/index.d.ts +2 -2
  127. package/build/swift-ui/Shapes/ConcentricRectangle.d.ts +1 -1
  128. package/build/swift-ui/Shapes/index.d.ts +6 -6
  129. package/build/swift-ui/ShareLink/index.d.ts +1 -1
  130. package/build/swift-ui/Slider/index.d.ts +1 -1
  131. package/build/swift-ui/SlotView.d.ts +1 -1
  132. package/build/swift-ui/Spacer/index.d.ts +1 -1
  133. package/build/swift-ui/Stepper/index.d.ts +1 -1
  134. package/build/swift-ui/SwipeActions/index.d.ts +2 -2
  135. package/build/swift-ui/SyncToggle/index.d.ts +1 -1
  136. package/build/swift-ui/TabView/Tab.d.ts +1 -1
  137. package/build/swift-ui/TabView/index.d.ts +1 -1
  138. package/build/swift-ui/Text/index.d.ts +1 -1
  139. package/build/swift-ui/TextField/index.d.ts +2 -2
  140. package/build/swift-ui/Toggle/index.d.ts +1 -1
  141. package/build/swift-ui/Toolbar/index.d.ts +52 -2
  142. package/build/swift-ui/Toolbar/index.js +27 -0
  143. package/build/swift-ui/Toolbar/index.js.map +1 -1
  144. package/build/swift-ui/VStack/index.d.ts +1 -1
  145. package/build/swift-ui/ZStack/index.d.ts +1 -1
  146. package/build/swift-ui/index.d.ts +1 -0
  147. package/build/swift-ui/index.js +1 -0
  148. package/build/swift-ui/index.js.map +1 -1
  149. package/build/swift-ui/modifiers/index.d.ts +16 -1
  150. package/build/swift-ui/modifiers/index.js +17 -0
  151. package/build/swift-ui/modifiers/index.js.map +1 -1
  152. package/build/swift-ui/modifiers/navigationModifiers.d.ts +27 -0
  153. package/build/swift-ui/modifiers/navigationModifiers.js +15 -0
  154. package/build/swift-ui/modifiers/navigationModifiers.js.map +1 -0
  155. package/build/universal/BottomSheet/index.android.d.ts +1 -1
  156. package/build/universal/BottomSheet/index.d.ts +1 -1
  157. package/build/universal/BottomSheet/index.ios.d.ts +1 -1
  158. package/build/universal/Button/index.android.d.ts +1 -1
  159. package/build/universal/Button/index.d.ts +1 -1
  160. package/build/universal/Button/index.ios.d.ts +1 -1
  161. package/build/universal/Checkbox/index.android.d.ts +1 -1
  162. package/build/universal/Checkbox/index.d.ts +1 -1
  163. package/build/universal/Checkbox/index.ios.d.ts +1 -1
  164. package/build/universal/Collapsible/index.android.d.ts +1 -1
  165. package/build/universal/Collapsible/index.d.ts +1 -1
  166. package/build/universal/Collapsible/index.ios.d.ts +1 -1
  167. package/build/universal/Column/index.android.d.ts +1 -1
  168. package/build/universal/Column/index.d.ts +1 -1
  169. package/build/universal/Column/index.ios.d.ts +1 -1
  170. package/build/universal/FieldGroup/FieldGroup.android.d.ts +1 -1
  171. package/build/universal/FieldGroup/FieldGroup.d.ts +1 -1
  172. package/build/universal/FieldGroup/FieldGroup.ios.d.ts +1 -1
  173. package/build/universal/FieldGroup/FieldSection.android.d.ts +1 -1
  174. package/build/universal/FieldGroup/FieldSection.d.ts +1 -1
  175. package/build/universal/FieldGroup/FieldSection.ios.d.ts +1 -1
  176. package/build/universal/FieldGroup/FieldSectionSlots.d.ts +2 -2
  177. package/build/universal/Host/index.d.ts +1 -1
  178. package/build/universal/Icon/index.android.d.ts +1 -1
  179. package/build/universal/Icon/index.ios.d.ts +1 -1
  180. package/build/universal/List/index.android.d.ts +1 -1
  181. package/build/universal/List/index.d.ts +1 -1
  182. package/build/universal/List/index.ios.d.ts +1 -1
  183. package/build/universal/ListItem/ListItem.android.d.ts +1 -1
  184. package/build/universal/ListItem/ListItem.d.ts +1 -1
  185. package/build/universal/ListItem/ListItem.ios.d.ts +1 -1
  186. package/build/universal/Picker/Picker.android.d.ts +1 -1
  187. package/build/universal/Picker/Picker.d.ts +1 -1
  188. package/build/universal/Picker/Picker.ios.d.ts +1 -1
  189. package/build/universal/RNHostView/index.android.d.ts +1 -1
  190. package/build/universal/RNHostView/index.d.ts +1 -1
  191. package/build/universal/RNHostView/index.ios.d.ts +1 -1
  192. package/build/universal/Row/index.android.d.ts +1 -1
  193. package/build/universal/Row/index.d.ts +1 -1
  194. package/build/universal/Row/index.ios.d.ts +1 -1
  195. package/build/universal/ScrollView/index.android.d.ts +1 -1
  196. package/build/universal/ScrollView/index.d.ts +1 -1
  197. package/build/universal/ScrollView/index.ios.d.ts +1 -1
  198. package/build/universal/Slider/index.android.d.ts +1 -1
  199. package/build/universal/Slider/index.d.ts +1 -1
  200. package/build/universal/Slider/index.ios.d.ts +1 -1
  201. package/build/universal/Spacer/index.android.d.ts +1 -1
  202. package/build/universal/Spacer/index.d.ts +1 -1
  203. package/build/universal/Spacer/index.ios.d.ts +1 -1
  204. package/build/universal/Switch/index.android.d.ts +1 -1
  205. package/build/universal/Switch/index.d.ts +1 -1
  206. package/build/universal/Switch/index.ios.d.ts +1 -1
  207. package/build/universal/Text/index.android.d.ts +1 -1
  208. package/build/universal/Text/index.d.ts +1 -1
  209. package/build/universal/Text/index.ios.d.ts +1 -1
  210. package/build/universal/TextInput/index.android.d.ts +1 -1
  211. package/build/universal/TextInput/index.d.ts +1 -1
  212. package/build/universal/TextInput/index.ios.d.ts +1 -1
  213. package/build/web/BottomSheetDialog.d.ts +1 -1
  214. package/expo-module.config.json +1 -1
  215. package/ios/Convertibles/ToolbarItemPlacementOptions.swift +110 -0
  216. package/ios/Convertibles/ToolbarItemVisibilityPriorityOptions.swift +35 -0
  217. package/ios/ExpoUIModule.swift +1 -0
  218. package/ios/HostView.swift +7 -7
  219. package/ios/Modifiers/NavigationModifiers.swift +44 -0
  220. package/ios/Modifiers/ScrollEdgeEffectStyleModifier.swift +34 -0
  221. package/ios/Modifiers/ViewModifierRegistry.swift +12 -0
  222. package/ios/NavigationSplitViewView.swift +180 -0
  223. package/ios/ToolbarView.swift +88 -4
  224. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.2/expo.modules.ui-58.0.2-sources.jar → 58.0.4/expo.modules.ui-58.0.4-sources.jar} +0 -0
  225. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4-sources.jar.md5 +1 -0
  226. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4-sources.jar.sha1 +1 -0
  227. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4-sources.jar.sha256 +1 -0
  228. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4-sources.jar.sha512 +1 -0
  229. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.2/expo.modules.ui-58.0.2.aar → 58.0.4/expo.modules.ui-58.0.4.aar} +0 -0
  230. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.aar.md5 +1 -0
  231. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.aar.sha1 +1 -0
  232. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.aar.sha256 +1 -0
  233. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.aar.sha512 +1 -0
  234. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.2/expo.modules.ui-58.0.2.module → 58.0.4/expo.modules.ui-58.0.4.module} +22 -22
  235. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.module.md5 +1 -0
  236. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.module.sha1 +1 -0
  237. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.module.sha256 +1 -0
  238. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.module.sha512 +1 -0
  239. package/local-maven-repo/expo/modules/ui/expo.modules.ui/{58.0.2/expo.modules.ui-58.0.2.pom → 58.0.4/expo.modules.ui-58.0.4.pom} +1 -1
  240. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.pom.md5 +1 -0
  241. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.pom.sha1 +1 -0
  242. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.pom.sha256 +1 -0
  243. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.4/expo.modules.ui-58.0.4.pom.sha512 +1 -0
  244. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml +4 -4
  245. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.md5 +1 -1
  246. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha1 +1 -1
  247. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha256 +1 -1
  248. package/local-maven-repo/expo/modules/ui/expo.modules.ui/maven-metadata.xml.sha512 +1 -1
  249. package/package.json +3 -3
  250. package/prebuilds/output/debug/xcframeworks/ExpoUI.tar.gz +0 -0
  251. package/prebuilds/output/release/xcframeworks/ExpoUI.tar.gz +0 -0
  252. package/src/swift-ui/NavigationSplitView/index.tsx +122 -0
  253. package/src/swift-ui/Toolbar/index.tsx +79 -0
  254. package/src/swift-ui/index.tsx +1 -0
  255. package/src/swift-ui/modifiers/index.ts +20 -0
  256. package/src/swift-ui/modifiers/navigationModifiers.ts +42 -0
  257. package/.gitignore +0 -2
  258. package/.npmignore +0 -27
  259. package/.tsbuildinfo +0 -1
  260. package/android/.gitignore +0 -261
  261. package/jest.config.js +0 -1
  262. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2-sources.jar.md5 +0 -1
  263. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2-sources.jar.sha1 +0 -1
  264. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2-sources.jar.sha256 +0 -1
  265. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2-sources.jar.sha512 +0 -1
  266. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.aar.md5 +0 -1
  267. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.aar.sha1 +0 -1
  268. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.aar.sha256 +0 -1
  269. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.aar.sha512 +0 -1
  270. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.module.md5 +0 -1
  271. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.module.sha1 +0 -1
  272. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.module.sha256 +0 -1
  273. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.module.sha512 +0 -1
  274. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.pom.md5 +0 -1
  275. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.pom.sha1 +0 -1
  276. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.pom.sha256 +0 -1
  277. package/local-maven-repo/expo/modules/ui/expo.modules.ui/58.0.2/expo.modules.ui-58.0.2.pom.sha512 +0 -1
  278. package/plugin/.tsbuildinfo +0 -1
  279. package/plugin/jest.config.js +0 -1
  280. package/plugin/tsconfig.json +0 -10
  281. package/plugin/tsconfig.tsbuildinfo +0 -1
  282. package/tsconfig.all.json +0 -11
  283. package/tsconfig.json +0 -11
@@ -1993,6 +1993,14 @@ extension ViewModifierRegistry {
1993
1993
  return try NavigationTitleModifier(from: params, appContext: appContext)
1994
1994
  }
1995
1995
 
1996
+ register("navigationSplitViewStyle") { params, appContext, _ in
1997
+ return try NavigationSplitViewStyleModifier(from: params, appContext: appContext)
1998
+ }
1999
+
2000
+ register("navigationSplitViewColumnWidth") { params, appContext, _ in
2001
+ return try NavigationSplitViewColumnWidthModifier(from: params, appContext: appContext)
2002
+ }
2003
+
1996
2004
  register("accessibilityLabel") { params, appContext, _ in
1997
2005
  return try AccessibilityLabelModifier(from: params, appContext: appContext)
1998
2006
  }
@@ -2309,6 +2317,10 @@ extension ViewModifierRegistry {
2309
2317
  return try ScrollIndicatorsModifier(from: params, appContext: appContext)
2310
2318
  }
2311
2319
 
2320
+ register("scrollEdgeEffectStyle") { params, appContext, _ in
2321
+ return try ScrollEdgeEffectStyleModifier(from: params, appContext: appContext)
2322
+ }
2323
+
2312
2324
  register("tabViewStyle") { params, appContext, _ in
2313
2325
  return try TabViewStyleModifier(from: params, appContext: appContext)
2314
2326
  }
@@ -0,0 +1,180 @@
1
+ // Copyright 2025-present 650 Industries. All rights reserved.
2
+
3
+ import ExpoModulesCore
4
+ import SwiftUI
5
+
6
+ internal enum NavigationSplitViewVisibilityOptions: String, Enumerable {
7
+ case automatic
8
+ case all
9
+ case doubleColumn
10
+ case detailOnly
11
+
12
+ func toVisibility() -> NavigationSplitViewVisibility {
13
+ switch self {
14
+ case .automatic:
15
+ return .automatic
16
+ case .all:
17
+ return .all
18
+ case .doubleColumn:
19
+ return .doubleColumn
20
+ case .detailOnly:
21
+ return .detailOnly
22
+ }
23
+ }
24
+
25
+ static func from(_ visibility: NavigationSplitViewVisibility) -> NavigationSplitViewVisibilityOptions {
26
+ switch visibility {
27
+ case .all:
28
+ return .all
29
+ case .doubleColumn:
30
+ return .doubleColumn
31
+ case .detailOnly:
32
+ return .detailOnly
33
+ default:
34
+ return .automatic
35
+ }
36
+ }
37
+ }
38
+
39
+ internal enum NavigationSplitViewColumnOptions: String, Enumerable {
40
+ case sidebar
41
+ case content
42
+ case detail
43
+
44
+ @available(iOS 17.0, tvOS 17.0, *)
45
+ func toColumn() -> NavigationSplitViewColumn {
46
+ switch self {
47
+ case .sidebar:
48
+ return .sidebar
49
+ case .content:
50
+ return .content
51
+ case .detail:
52
+ return .detail
53
+ }
54
+ }
55
+
56
+ @available(iOS 17.0, tvOS 17.0, *)
57
+ static func from(_ column: NavigationSplitViewColumn) -> NavigationSplitViewColumnOptions {
58
+ switch column {
59
+ case .content:
60
+ return .content
61
+ case .detail:
62
+ return .detail
63
+ default:
64
+ return .sidebar
65
+ }
66
+ }
67
+ }
68
+
69
+ internal final class NavigationSplitViewProps: UIBaseViewProps {
70
+ @Field var columnVisibility: NavigationSplitViewVisibilityOptions?
71
+ @Field var preferredCompactColumn: NavigationSplitViewColumnOptions?
72
+ var onColumnVisibilityChange = EventDispatcher()
73
+ var onPreferredCompactColumnChange = EventDispatcher()
74
+ }
75
+
76
+ internal struct NavigationSplitViewView: ExpoSwiftUI.View {
77
+ @ObservedObject var props: NavigationSplitViewProps
78
+
79
+ // Only used while the matching prop is unset. While it is set, JS is the sole source
80
+ // of truth, so it stays in control of the columns and can refuse a change the user
81
+ // made by dragging.
82
+ @State private var uncontrolledVisibility: NavigationSplitViewVisibilityOptions = .automatic
83
+ @State private var uncontrolledCompactColumn: NavigationSplitViewColumnOptions = .sidebar
84
+
85
+ init(props: NavigationSplitViewProps) {
86
+ self.props = props
87
+ }
88
+
89
+ private var columnVisibilityBinding: Binding<NavigationSplitViewVisibility> {
90
+ let props = props
91
+ let uncontrolled = $uncontrolledVisibility
92
+ return Binding(
93
+ get: { (props.columnVisibility ?? uncontrolled.wrappedValue).toVisibility() },
94
+ set: { newValue in
95
+ let resolved = NavigationSplitViewVisibilityOptions.from(newValue)
96
+ guard (props.columnVisibility ?? uncontrolled.wrappedValue) != resolved else {
97
+ return
98
+ }
99
+ if props.columnVisibility == nil {
100
+ uncontrolled.wrappedValue = resolved
101
+ }
102
+ props.onColumnVisibilityChange(["visibility": resolved.rawValue])
103
+ }
104
+ )
105
+ }
106
+
107
+ @available(iOS 17.0, tvOS 17.0, *)
108
+ private var compactColumnBinding: Binding<NavigationSplitViewColumn> {
109
+ let props = props
110
+ let uncontrolled = $uncontrolledCompactColumn
111
+ return Binding(
112
+ get: { (props.preferredCompactColumn ?? uncontrolled.wrappedValue).toColumn() },
113
+ set: { newValue in
114
+ let resolved = NavigationSplitViewColumnOptions.from(newValue)
115
+ guard (props.preferredCompactColumn ?? uncontrolled.wrappedValue) != resolved else {
116
+ return
117
+ }
118
+ if props.preferredCompactColumn == nil {
119
+ uncontrolled.wrappedValue = resolved
120
+ }
121
+ props.onPreferredCompactColumnChange(["column": resolved.rawValue])
122
+ }
123
+ )
124
+ }
125
+
126
+ @ViewBuilder
127
+ var body: some View {
128
+ if #available(iOS 17.0, tvOS 17.0, *) {
129
+ if let contentColumn {
130
+ NavigationSplitView(
131
+ columnVisibility: columnVisibilityBinding,
132
+ preferredCompactColumn: compactColumnBinding
133
+ ) {
134
+ sidebarColumn
135
+ } content: {
136
+ contentColumn
137
+ } detail: {
138
+ detailColumn
139
+ }
140
+ } else {
141
+ NavigationSplitView(
142
+ columnVisibility: columnVisibilityBinding,
143
+ preferredCompactColumn: compactColumnBinding
144
+ ) {
145
+ sidebarColumn
146
+ } detail: {
147
+ detailColumn
148
+ }
149
+ }
150
+ } else {
151
+ if let contentColumn {
152
+ NavigationSplitView(columnVisibility: columnVisibilityBinding) {
153
+ sidebarColumn
154
+ } content: {
155
+ contentColumn
156
+ } detail: {
157
+ detailColumn
158
+ }
159
+ } else {
160
+ NavigationSplitView(columnVisibility: columnVisibilityBinding) {
161
+ sidebarColumn
162
+ } detail: {
163
+ detailColumn
164
+ }
165
+ }
166
+ }
167
+ }
168
+
169
+ private var sidebarColumn: SlotView? {
170
+ props.children?.slot("sidebar")
171
+ }
172
+
173
+ private var contentColumn: SlotView? {
174
+ props.children?.slot("content")
175
+ }
176
+
177
+ private var detailColumn: SlotView? {
178
+ props.children?.slot("detail")
179
+ }
180
+ }
@@ -5,6 +5,42 @@ import ExpoModulesCore
5
5
 
6
6
  internal final class ToolbarViewProps: UIBaseViewProps {}
7
7
 
8
+ private struct ToolbarContentView: View {
9
+ @ObservedObject var props: SlotViewProps
10
+ let content: SlotView
11
+ let base: AnyView
12
+
13
+ @ViewBuilder
14
+ var body: some View {
15
+ let children = props.children ?? []
16
+
17
+ if children.contains(where: isItem) {
18
+ children.reduce(base) { view, child in
19
+ let childView: any View = child.childView
20
+
21
+ guard let slot = child.childView as? SlotView, slot.props.name == "item" else {
22
+ return AnyView(placed(AnyView(childView), on: view, placement: .automatic, visibilityPriority: nil))
23
+ }
24
+ return AnyView(ToolbarItemLayer(props: slot.props, base: view, content: AnyView(childView)))
25
+ }
26
+ } else {
27
+ base.toolbar {
28
+ content
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ private struct ToolbarItemLayer: View {
35
+ @ObservedObject var props: SlotViewProps
36
+ let base: AnyView
37
+ let content: AnyView
38
+
39
+ var body: some View {
40
+ placed(content, on: base, placement: placement(from: props), visibilityPriority: visibilityPriority(from: props))
41
+ }
42
+ }
43
+
8
44
  internal struct ToolbarView: ExpoSwiftUI.View {
9
45
  @ObservedObject var props: ToolbarViewProps
10
46
 
@@ -14,10 +50,7 @@ internal struct ToolbarView: ExpoSwiftUI.View {
14
50
 
15
51
  var body: some View {
16
52
  if let content = props.children?.slot("content") {
17
- baseContent
18
- .toolbar {
19
- content
20
- }
53
+ ToolbarContentView(props: content.props, content: content, base: AnyView(baseContent))
21
54
  } else {
22
55
  baseContent
23
56
  }
@@ -31,3 +64,54 @@ internal struct ToolbarView: ExpoSwiftUI.View {
31
64
  }
32
65
  }
33
66
  }
67
+
68
+ @ViewBuilder
69
+ private func placed(
70
+ _ content: AnyView,
71
+ on base: AnyView,
72
+ placement: ToolbarItemPlacement,
73
+ visibilityPriority: ToolbarItemVisibilityPriorityOptions?
74
+ ) -> some View {
75
+ #if compiler(>=6.4) // Xcode 27
76
+ if #available(iOS 27.0, macOS 26.1, tvOS 27.0, visionOS 27.0, *),
77
+ let visibilityPriority {
78
+ base.toolbar {
79
+ ToolbarItem(placement: placement) {
80
+ content
81
+ }
82
+ .visibilityPriority(visibilityPriority.toPriority())
83
+ }
84
+ } else {
85
+ base.toolbar {
86
+ ToolbarItem(placement: placement) {
87
+ content
88
+ }
89
+ }
90
+ }
91
+ #else
92
+ base.toolbar {
93
+ ToolbarItem(placement: placement) {
94
+ content
95
+ }
96
+ }
97
+ #endif
98
+ }
99
+
100
+ private func isItem(_ child: any ExpoSwiftUI.AnyChild) -> Bool {
101
+ return (child.childView as? SlotView)?.props.name == "item"
102
+ }
103
+
104
+ private func placement(from props: SlotViewProps) -> ToolbarItemPlacement {
105
+ guard let rawPlacement = props.extraProps?["placement"] as? String,
106
+ let placement = ToolbarItemPlacementOptions(rawValue: rawPlacement) else {
107
+ return .automatic
108
+ }
109
+ return placement.toPlacement()
110
+ }
111
+
112
+ private func visibilityPriority(from props: SlotViewProps) -> ToolbarItemVisibilityPriorityOptions? {
113
+ guard let rawPriority = props.extraProps?["visibilityPriority"] as? String else {
114
+ return nil
115
+ }
116
+ return ToolbarItemVisibilityPriorityOptions(rawValue: rawPriority)
117
+ }
@@ -0,0 +1 @@
1
+ 749807825339b7f72362b37e830ea704ec60f72d
@@ -0,0 +1 @@
1
+ c42bba76435f8b36b4fc0ed86a8290f9e1ccaa3a0ebe4cb6e77d029a4be92be6
@@ -0,0 +1 @@
1
+ d105c1535934d743de599730ba9b0501a424eece52f1a4190b3764b4e7e280be42e3c9b880e4f80bef8ab6299938a0da275c00d342c593fd54375574d0ecd3ae
@@ -0,0 +1 @@
1
+ 77a2cb3cfd3195ad299b84c7d844dcb10d52fbe9
@@ -0,0 +1 @@
1
+ 7576f0fb76c81d2a1925ffa93e4175b8ab41c4c47a7c4c375b73707812438133
@@ -0,0 +1 @@
1
+ 408cceb3d6f97d29c6e734ab578c86c5c2c3f65fba19170bf1edc1f30648e6906b3a0e2284f1721543450bb579ddf37e54b00a51d21f9e5d77ad82e0857fef02
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.ui",
5
5
  "module": "expo.modules.ui",
6
- "version": "58.0.2",
6
+ "version": "58.0.4",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.ui-58.0.2.aar",
28
- "url": "expo.modules.ui-58.0.2.aar",
29
- "size": 1789469,
30
- "sha512": "dfe706437f10aa521a458896b97fa14d945cf66c80dab9cc43fddd444cddd016073b783076f38ba90e07c5076b8752bf66e136ce9c40d85195cf27a231ce7f9d",
31
- "sha256": "8faeae3cb56c1d29d1a120a9a8c1964e6015ba993519f244283855a066a1704c",
32
- "sha1": "dac5e40669e0f7832763a444814375947cfc1d1c",
33
- "md5": "df649a67c82e5ea67b2cbf457d10bb0a"
27
+ "name": "expo.modules.ui-58.0.4.aar",
28
+ "url": "expo.modules.ui-58.0.4.aar",
29
+ "size": 1789426,
30
+ "sha512": "408cceb3d6f97d29c6e734ab578c86c5c2c3f65fba19170bf1edc1f30648e6906b3a0e2284f1721543450bb579ddf37e54b00a51d21f9e5d77ad82e0857fef02",
31
+ "sha256": "7576f0fb76c81d2a1925ffa93e4175b8ab41c4c47a7c4c375b73707812438133",
32
+ "sha1": "77a2cb3cfd3195ad299b84c7d844dcb10d52fbe9",
33
+ "md5": "317b952ccecb056bea4a1e5b20b7b5bf"
34
34
  }
35
35
  ]
36
36
  },
@@ -141,13 +141,13 @@
141
141
  ],
142
142
  "files": [
143
143
  {
144
- "name": "expo.modules.ui-58.0.2.aar",
145
- "url": "expo.modules.ui-58.0.2.aar",
146
- "size": 1789469,
147
- "sha512": "dfe706437f10aa521a458896b97fa14d945cf66c80dab9cc43fddd444cddd016073b783076f38ba90e07c5076b8752bf66e136ce9c40d85195cf27a231ce7f9d",
148
- "sha256": "8faeae3cb56c1d29d1a120a9a8c1964e6015ba993519f244283855a066a1704c",
149
- "sha1": "dac5e40669e0f7832763a444814375947cfc1d1c",
150
- "md5": "df649a67c82e5ea67b2cbf457d10bb0a"
144
+ "name": "expo.modules.ui-58.0.4.aar",
145
+ "url": "expo.modules.ui-58.0.4.aar",
146
+ "size": 1789426,
147
+ "sha512": "408cceb3d6f97d29c6e734ab578c86c5c2c3f65fba19170bf1edc1f30648e6906b3a0e2284f1721543450bb579ddf37e54b00a51d21f9e5d77ad82e0857fef02",
148
+ "sha256": "7576f0fb76c81d2a1925ffa93e4175b8ab41c4c47a7c4c375b73707812438133",
149
+ "sha1": "77a2cb3cfd3195ad299b84c7d844dcb10d52fbe9",
150
+ "md5": "317b952ccecb056bea4a1e5b20b7b5bf"
151
151
  }
152
152
  ]
153
153
  },
@@ -161,13 +161,13 @@
161
161
  },
162
162
  "files": [
163
163
  {
164
- "name": "expo.modules.ui-58.0.2-sources.jar",
165
- "url": "expo.modules.ui-58.0.2-sources.jar",
166
- "size": 106165,
167
- "sha512": "59ec9e524c62a8b77c41e894e4833d24d2c9bb1912ef1be23d81ab6eb04bcf1f8743cdc11528bf2630b0f1f29db20b017e8015ebde418530196d7dcea06a90bc",
168
- "sha256": "297ecd2b76dbb6908b0b2897c6adba6be5dd10cb16c8ca169525a40e207d52c2",
169
- "sha1": "51a2f1006c7baddabf82bef24f20526a08f172ed",
170
- "md5": "8794b8164746750abcd5634353883d4b"
164
+ "name": "expo.modules.ui-58.0.4-sources.jar",
165
+ "url": "expo.modules.ui-58.0.4-sources.jar",
166
+ "size": 106170,
167
+ "sha512": "d105c1535934d743de599730ba9b0501a424eece52f1a4190b3764b4e7e280be42e3c9b880e4f80bef8ab6299938a0da275c00d342c593fd54375574d0ecd3ae",
168
+ "sha256": "c42bba76435f8b36b4fc0ed86a8290f9e1ccaa3a0ebe4cb6e77d029a4be92be6",
169
+ "sha1": "749807825339b7f72362b37e830ea704ec60f72d",
170
+ "md5": "feafc8819618513e9a38001814fc14e2"
171
171
  }
172
172
  ]
173
173
  }
@@ -0,0 +1 @@
1
+ a5735cfc927a4a919d056a8d002778b3b03a9571
@@ -0,0 +1 @@
1
+ 6ac59cdec02bfaab3cc9a0201b3f3efc2472ebdae06731eb1754f50be6adeb56
@@ -0,0 +1 @@
1
+ dd59787b0055dc18c4dae85147258bdbce099df415a74de7bd47a403b17d9138fdffbf7351e383761e9bea7c3c7aa72ed062784da242edfa312a4d8a4703e4dd
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.ui</groupId>
11
11
  <artifactId>expo.modules.ui</artifactId>
12
- <version>58.0.2</version>
12
+ <version>58.0.4</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.ui</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 686f495f389f5d58061c48dd2be09c59dff6d282
@@ -0,0 +1 @@
1
+ ed17ef29d2de582e5dd219506d2f5c6a83ae6b9499877a208b82c4642389afab
@@ -0,0 +1 @@
1
+ ec8c0d91c6f8c40ced69d655e02868faa9945e2417cd82852b5455e3ddec9a1a23b14093fbb0e07093570af8823812af20ad0a61d84c035ae88fb093d0aee7fd
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.ui</groupId>
4
4
  <artifactId>expo.modules.ui</artifactId>
5
5
  <versioning>
6
- <latest>58.0.2</latest>
7
- <release>58.0.2</release>
6
+ <latest>58.0.4</latest>
7
+ <release>58.0.4</release>
8
8
  <versions>
9
- <version>58.0.2</version>
9
+ <version>58.0.4</version>
10
10
  </versions>
11
- <lastUpdated>20260915202028</lastUpdated>
11
+ <lastUpdated>20260921105157</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- d7c3c6a248e2d4455c24cf0936e1758b
1
+ aeb3687fda3babb900b2707c7eccdb58
@@ -1 +1 @@
1
- 3458af1a4a9a6ab21225912c0e7698e4e8a92256
1
+ dd275fe2064eb6646022d5d7a7267798f746ae78
@@ -1 +1 @@
1
- 28e20d52b7f98238d64827356e5527fa7d8a6305534bc7487a122234f0c6d4ea
1
+ bf551fbc49828d971a3be529217cfc4eabd7be7be59392253769cf5e900a2f80
@@ -1 +1 @@
1
- 8d39d2c57f8dec121f2ad766fd9efc4754a79752aa34839a211ad40f950c1fe0497e1f226bbf2feec15f532b92d7e8fa84d70e4e82a60e770788d28e9ea691f1
1
+ be2b24ecf8748c7315ba41f174f8b07f3150d103136753794b87a2793af26ee5ae9c7bc4d0620dd6d6af95e0bd56bc8895b6c9ab35e1929a19e3c8fe3bda6d27
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/ui",
3
- "version": "58.0.2",
3
+ "version": "58.0.4",
4
4
  "description": "A collection of UI components",
5
5
  "keywords": [
6
6
  "Jetpack Compose",
@@ -147,7 +147,7 @@
147
147
  "@types/babel__core": "^7.20.5",
148
148
  "@types/jest": "^29.2.1",
149
149
  "@types/node": "^22.14.0",
150
- "@types/react": "~19.2.0",
150
+ "@types/react": "~19.3.0",
151
151
  "expo-module-scripts": "56.0.3",
152
152
  "react-native-reanimated": "4.6.0",
153
153
  "react-native-worklets": "0.12.2"
@@ -171,7 +171,7 @@
171
171
  "optional": true
172
172
  }
173
173
  },
174
- "gitHead": "313e67f5c9dfb16f9deca74a271cd1d4f33a6f82",
174
+ "gitHead": "ebb1fd7569c9c9e172cb9abd73dfede027c1d674",
175
175
  "scripts": {
176
176
  "precompile-ios": "et prebuild-package-for-publish",
177
177
  "build": "pnpm run build:lib && pnpm run build:plugin",
@@ -0,0 +1,122 @@
1
+ import { requireNativeView } from 'expo';
2
+
3
+ import { Slot } from '../SlotView';
4
+ import { createViewModifierEventListener } from '../modifiers/utils';
5
+ import { type CommonViewModifierProps } from '../types';
6
+
7
+ export type NavigationSplitViewVisibility = 'automatic' | 'all' | 'doubleColumn' | 'detailOnly';
8
+
9
+ /**
10
+ * The column shown when the split view collapses into a single column.
11
+ */
12
+ export type NavigationSplitViewColumn = 'sidebar' | 'content' | 'detail';
13
+
14
+ export interface NavigationSplitViewProps extends CommonViewModifierProps {
15
+ /**
16
+ * The columns of the split view. Provide `NavigationSplitView.Sidebar` and
17
+ * `NavigationSplitView.Detail`, and add `NavigationSplitView.Content` for a
18
+ * three-column layout.
19
+ */
20
+ children: React.ReactNode;
21
+ /**
22
+ * The columns to show. Setting it makes the value controlled: pass the value from
23
+ * `onColumnVisibilityChange` back in, otherwise dragging the divider has no effect.
24
+ * Leave it unset to let the split view manage its own columns.
25
+ * @default 'automatic'
26
+ */
27
+ columnVisibility?: NavigationSplitViewVisibility;
28
+ /**
29
+ * Called when the visible columns change, including when the user drags the sidebar.
30
+ */
31
+ onColumnVisibilityChange?: (visibility: NavigationSplitViewVisibility) => void;
32
+ /**
33
+ * The column to show when the split view collapses to a single column, for example
34
+ * in a narrow window. Setting it makes the value controlled in the same way as
35
+ * `columnVisibility`.
36
+ * @default 'sidebar'
37
+ * @platform ios 17.0+
38
+ */
39
+ preferredCompactColumn?: NavigationSplitViewColumn;
40
+ /**
41
+ * Called when the collapsed column changes.
42
+ * @platform ios 17.0+
43
+ */
44
+ onPreferredCompactColumnChange?: (column: NavigationSplitViewColumn) => void;
45
+ }
46
+
47
+ type NativeNavigationSplitViewProps = Omit<
48
+ NavigationSplitViewProps,
49
+ 'onColumnVisibilityChange' | 'onPreferredCompactColumnChange'
50
+ > & {
51
+ onColumnVisibilityChange?: (event: {
52
+ nativeEvent: { visibility: NavigationSplitViewVisibility };
53
+ }) => void;
54
+ onPreferredCompactColumnChange?: (event: {
55
+ nativeEvent: { column: NavigationSplitViewColumn };
56
+ }) => void;
57
+ };
58
+
59
+ const NavigationSplitViewNativeView: React.ComponentType<NativeNavigationSplitViewProps> =
60
+ requireNativeView('ExpoUI', 'NavigationSplitViewView');
61
+
62
+ function NavigationSplitViewSidebar(props: { children: React.ReactNode }) {
63
+ return <Slot name="sidebar">{props.children}</Slot>;
64
+ }
65
+
66
+ function NavigationSplitViewContent(props: { children: React.ReactNode }) {
67
+ return <Slot name="content">{props.children}</Slot>;
68
+ }
69
+
70
+ function NavigationSplitViewDetail(props: { children: React.ReactNode }) {
71
+ return <Slot name="detail">{props.children}</Slot>;
72
+ }
73
+
74
+ NavigationSplitView.Sidebar = NavigationSplitViewSidebar;
75
+ NavigationSplitView.Content = NavigationSplitViewContent;
76
+ NavigationSplitView.Detail = NavigationSplitViewDetail;
77
+
78
+ /**
79
+ * NavigationSplitView uses the native [NavigationSplitView](https://developer.apple.com/documentation/swiftui/navigationsplitview) view.
80
+ *
81
+ * It presents a collection, a selection and a detail in one hierarchy: side by side
82
+ * when there is room, and stacked when there is not.
83
+ * @example
84
+ * ```tsx
85
+ * <Host style={{ flex: 1 }}>
86
+ * <NavigationSplitView>
87
+ * <NavigationSplitView.Sidebar>
88
+ * <List>{items}</List>
89
+ * </NavigationSplitView.Sidebar>
90
+ * <NavigationSplitView.Detail>
91
+ * <ItemDetail item={selectedItem} />
92
+ * </NavigationSplitView.Detail>
93
+ * </NavigationSplitView>
94
+ * </Host>
95
+ * ```
96
+ * @platform ios 16.0+
97
+ * @platform tvos 16.0+
98
+ */
99
+ export function NavigationSplitView(props: NavigationSplitViewProps) {
100
+ const {
101
+ modifiers,
102
+ children,
103
+ onColumnVisibilityChange,
104
+ onPreferredCompactColumnChange,
105
+ ...restProps
106
+ } = props;
107
+
108
+ return (
109
+ <NavigationSplitViewNativeView
110
+ modifiers={modifiers}
111
+ {...(modifiers ? createViewModifierEventListener(modifiers) : undefined)}
112
+ onColumnVisibilityChange={({ nativeEvent: { visibility } }) =>
113
+ onColumnVisibilityChange?.(visibility)
114
+ }
115
+ onPreferredCompactColumnChange={({ nativeEvent: { column } }) =>
116
+ onPreferredCompactColumnChange?.(column)
117
+ }
118
+ {...restProps}>
119
+ {children}
120
+ </NavigationSplitViewNativeView>
121
+ );
122
+ }