expo-router 7.0.0-canary-20260114-d8e19f5 → 7.0.0-canary-20260120-bb71700

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 (261) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/ExpoRoot.d.ts.map +1 -1
  3. package/build/ExpoRoot.js +2 -0
  4. package/build/ExpoRoot.js.map +1 -1
  5. package/build/global-state/routing.d.ts.map +1 -1
  6. package/build/global-state/routing.js +7 -2
  7. package/build/global-state/routing.js.map +1 -1
  8. package/build/global.d.ts +29 -0
  9. package/build/global.d.ts.map +1 -0
  10. package/build/global.js +3 -0
  11. package/build/global.js.map +1 -0
  12. package/build/index.d.ts +1 -0
  13. package/build/index.d.ts.map +1 -1
  14. package/build/index.js +1 -0
  15. package/build/index.js.map +1 -1
  16. package/build/layouts/Stack.d.ts.map +1 -1
  17. package/build/layouts/Stack.js +3 -0
  18. package/build/layouts/Stack.js.map +1 -1
  19. package/build/layouts/Stack.web.js +1 -0
  20. package/build/layouts/Stack.web.js.map +1 -1
  21. package/build/layouts/StackClient.d.ts +13 -14
  22. package/build/layouts/StackClient.d.ts.map +1 -1
  23. package/build/layouts/StackClient.js +3 -2
  24. package/build/layouts/StackClient.js.map +1 -1
  25. package/build/layouts/stack-utils/StackHeaderComponent.d.ts +12 -23
  26. package/build/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
  27. package/build/layouts/stack-utils/StackHeaderComponent.js +15 -55
  28. package/build/layouts/stack-utils/StackHeaderComponent.js.map +1 -1
  29. package/build/layouts/stack-utils/StackScreen.d.ts +5 -0
  30. package/build/layouts/stack-utils/StackScreen.d.ts.map +1 -1
  31. package/build/layouts/stack-utils/StackScreen.js +34 -7
  32. package/build/layouts/stack-utils/StackScreen.js.map +1 -1
  33. package/build/layouts/stack-utils/StackSearchBar.d.ts +28 -0
  34. package/build/layouts/stack-utils/StackSearchBar.d.ts.map +1 -1
  35. package/build/layouts/stack-utils/StackSearchBar.js +29 -0
  36. package/build/layouts/stack-utils/StackSearchBar.js.map +1 -1
  37. package/build/layouts/stack-utils/common-primitives.d.ts +6 -6
  38. package/build/layouts/stack-utils/common-primitives.d.ts.map +1 -1
  39. package/build/layouts/stack-utils/common-primitives.js +4 -4
  40. package/build/layouts/stack-utils/common-primitives.js.map +1 -1
  41. package/build/layouts/stack-utils/index.d.ts +4 -23
  42. package/build/layouts/stack-utils/index.d.ts.map +1 -1
  43. package/build/layouts/stack-utils/index.js +18 -35
  44. package/build/layouts/stack-utils/index.js.map +1 -1
  45. package/build/layouts/stack-utils/screen/StackScreenBackButton.d.ts +68 -0
  46. package/build/layouts/stack-utils/screen/StackScreenBackButton.d.ts.map +1 -0
  47. package/build/layouts/stack-utils/screen/StackScreenBackButton.js +58 -0
  48. package/build/layouts/stack-utils/screen/StackScreenBackButton.js.map +1 -0
  49. package/build/layouts/stack-utils/screen/StackScreenTitle.d.ts +58 -0
  50. package/build/layouts/stack-utils/screen/StackScreenTitle.d.ts.map +1 -0
  51. package/build/layouts/stack-utils/screen/StackScreenTitle.js +75 -0
  52. package/build/layouts/stack-utils/screen/StackScreenTitle.js.map +1 -0
  53. package/build/layouts/stack-utils/screen/index.d.ts +3 -0
  54. package/build/layouts/stack-utils/screen/index.d.ts.map +1 -0
  55. package/build/layouts/stack-utils/screen/index.js +10 -0
  56. package/build/layouts/stack-utils/screen/index.js.map +1 -0
  57. package/build/layouts/stack-utils/shared.js +3 -3
  58. package/build/layouts/stack-utils/shared.js.map +1 -1
  59. package/build/layouts/stack-utils/toolbar/StackToolbar.d.ts +3 -0
  60. package/build/layouts/stack-utils/toolbar/StackToolbar.d.ts.map +1 -0
  61. package/build/layouts/stack-utils/toolbar/StackToolbar.js +24 -0
  62. package/build/layouts/stack-utils/toolbar/StackToolbar.js.map +1 -0
  63. package/build/layouts/stack-utils/toolbar/StackToolbarButton.d.ts +144 -0
  64. package/build/layouts/stack-utils/toolbar/StackToolbarButton.d.ts.map +1 -0
  65. package/build/layouts/stack-utils/toolbar/StackToolbarButton.js +68 -0
  66. package/build/layouts/stack-utils/toolbar/StackToolbarButton.js.map +1 -0
  67. package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts +104 -0
  68. package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts.map +1 -0
  69. package/build/layouts/stack-utils/toolbar/StackToolbarClient.js +214 -0
  70. package/build/layouts/stack-utils/toolbar/StackToolbarClient.js.map +1 -0
  71. package/build/layouts/stack-utils/{StackHeaderMenu.d.ts → toolbar/StackToolbarMenu.d.ts} +58 -106
  72. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.d.ts.map +1 -0
  73. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js +190 -0
  74. package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js.map +1 -0
  75. package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.d.ts +48 -0
  76. package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.d.ts.map +1 -0
  77. package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.js +44 -0
  78. package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.js.map +1 -0
  79. package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.d.ts +80 -0
  80. package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.d.ts.map +1 -0
  81. package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.js +77 -0
  82. package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.js.map +1 -0
  83. package/build/layouts/stack-utils/{StackHeaderView.d.ts → toolbar/StackToolbarView.d.ts} +21 -17
  84. package/build/layouts/stack-utils/toolbar/StackToolbarView.d.ts.map +1 -0
  85. package/build/layouts/stack-utils/toolbar/StackToolbarView.js +61 -0
  86. package/build/layouts/stack-utils/toolbar/StackToolbarView.js.map +1 -0
  87. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts +93 -0
  88. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts.map +1 -0
  89. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js +89 -0
  90. package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js.map +1 -0
  91. package/build/layouts/stack-utils/toolbar/context.d.ts +9 -0
  92. package/build/layouts/stack-utils/toolbar/context.d.ts.map +1 -0
  93. package/build/layouts/stack-utils/toolbar/context.js +16 -0
  94. package/build/layouts/stack-utils/toolbar/context.js.map +1 -0
  95. package/build/layouts/stack-utils/toolbar/index.d.ts +10 -0
  96. package/build/layouts/stack-utils/toolbar/index.d.ts.map +1 -0
  97. package/build/layouts/stack-utils/toolbar/index.js +23 -0
  98. package/build/layouts/stack-utils/toolbar/index.js.map +1 -0
  99. package/build/link/LinkWithPreview.d.ts.map +1 -1
  100. package/build/link/LinkWithPreview.js +8 -5
  101. package/build/link/LinkWithPreview.js.map +1 -1
  102. package/build/link/NativeMenuContext.d.ts +5 -0
  103. package/build/link/NativeMenuContext.d.ts.map +1 -0
  104. package/build/link/NativeMenuContext.js +9 -0
  105. package/build/link/NativeMenuContext.js.map +1 -0
  106. package/build/link/elements.d.ts +41 -0
  107. package/build/link/elements.d.ts.map +1 -1
  108. package/build/link/elements.js +3 -2
  109. package/build/link/elements.js.map +1 -1
  110. package/build/link/preview/native.d.ts +2 -0
  111. package/build/link/preview/native.d.ts.map +1 -1
  112. package/build/link/preview/native.js +3 -1
  113. package/build/link/preview/native.js.map +1 -1
  114. package/build/loaders/utils.d.ts +5 -2
  115. package/build/loaders/utils.d.ts.map +1 -1
  116. package/build/loaders/utils.js +8 -5
  117. package/build/loaders/utils.js.map +1 -1
  118. package/build/native-tabs/NativeBottomTabsNavigator.d.ts +1 -1
  119. package/build/native-tabs/NativeBottomTabsNavigator.d.ts.map +1 -1
  120. package/build/native-tabs/NativeBottomTabsNavigator.js +2 -1
  121. package/build/native-tabs/NativeBottomTabsNavigator.js.map +1 -1
  122. package/build/native-tabs/NativeTabTrigger.d.ts.map +1 -1
  123. package/build/native-tabs/NativeTabTrigger.js +6 -4
  124. package/build/native-tabs/NativeTabTrigger.js.map +1 -1
  125. package/build/native-tabs/NativeTabsView.d.ts.map +1 -1
  126. package/build/native-tabs/NativeTabsView.js +6 -9
  127. package/build/native-tabs/NativeTabsView.js.map +1 -1
  128. package/build/native-tabs/appearance.d.ts +7 -7
  129. package/build/native-tabs/appearance.d.ts.map +1 -1
  130. package/build/native-tabs/appearance.js.map +1 -1
  131. package/build/native-tabs/common/elements.d.ts +10 -0
  132. package/build/native-tabs/common/elements.d.ts.map +1 -1
  133. package/build/native-tabs/common/elements.js.map +1 -1
  134. package/build/native-tabs/types.d.ts +9 -3
  135. package/build/native-tabs/types.d.ts.map +1 -1
  136. package/build/native-tabs/types.js.map +1 -1
  137. package/build/native-tabs/utils/bottomAccessory.d.ts +2 -2
  138. package/build/native-tabs/utils/bottomAccessory.d.ts.map +1 -1
  139. package/build/native-tabs/utils/bottomAccessory.js.map +1 -1
  140. package/build/native-tabs/utils/icon.d.ts +4 -2
  141. package/build/native-tabs/utils/icon.d.ts.map +1 -1
  142. package/build/native-tabs/utils/icon.js +3 -0
  143. package/build/native-tabs/utils/icon.js.map +1 -1
  144. package/build/navigationEvents/index.d.ts +7 -24
  145. package/build/navigationEvents/index.d.ts.map +1 -1
  146. package/build/navigationEvents/index.js +47 -12
  147. package/build/navigationEvents/index.js.map +1 -1
  148. package/build/navigationEvents/types.d.ts +23 -0
  149. package/build/navigationEvents/types.d.ts.map +1 -0
  150. package/build/navigationEvents/types.js +3 -0
  151. package/build/navigationEvents/types.js.map +1 -0
  152. package/build/navigationEvents/utils.d.ts +9 -0
  153. package/build/navigationEvents/utils.d.ts.map +1 -0
  154. package/build/navigationEvents/utils.js +25 -0
  155. package/build/navigationEvents/utils.js.map +1 -0
  156. package/build/primitives/types.d.ts +6 -6
  157. package/build/primitives/types.d.ts.map +1 -1
  158. package/build/primitives/types.js.map +1 -1
  159. package/build/screensFeatureFlags.d.ts +2 -0
  160. package/build/screensFeatureFlags.d.ts.map +1 -0
  161. package/build/screensFeatureFlags.js +20 -0
  162. package/build/screensFeatureFlags.js.map +1 -0
  163. package/build/split-view/elements.js +3 -3
  164. package/build/split-view/elements.js.map +1 -1
  165. package/build/split-view/index.d.ts +1 -1
  166. package/build/split-view/index.d.ts.map +1 -1
  167. package/build/split-view/index.js.map +1 -1
  168. package/build/split-view/split-view.d.ts +3 -3
  169. package/build/split-view/split-view.d.ts.map +1 -1
  170. package/build/split-view/split-view.js +4 -4
  171. package/build/split-view/split-view.js.map +1 -1
  172. package/build/toolbar/native.types.d.ts +0 -14
  173. package/build/toolbar/native.types.d.ts.map +1 -1
  174. package/build/toolbar/native.types.js.map +1 -1
  175. package/build/ui/TabRouter.d.ts +14 -2
  176. package/build/ui/TabRouter.d.ts.map +1 -1
  177. package/build/ui/TabRouter.js +34 -4
  178. package/build/ui/TabRouter.js.map +1 -1
  179. package/build/useScreens.d.ts.map +1 -1
  180. package/build/useScreens.js +30 -15
  181. package/build/useScreens.js.map +1 -1
  182. package/expo-module.config.json +1 -1
  183. package/ios/LinkPreview/LinkPreviewNativeActionView.swift +18 -2
  184. package/ios/LinkPreview/LinkPreviewNativeModule.swift +3 -0
  185. package/ios/LinkPreview/LinkPreviewNativeNavigation.swift +2 -2
  186. package/ios/LinkPreview/LinkZoomTransition.swift +2 -2
  187. package/ios/Toolbar/RouterToolbarHostView.swift +68 -43
  188. package/ios/Toolbar/RouterToolbarItemView.swift +89 -21
  189. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.module} +7 -7
  190. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.module.md5 +1 -0
  191. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.module.sha1 +1 -0
  192. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.module.sha256 +1 -0
  193. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.module.sha512 +1 -0
  194. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.pom} +1 -1
  195. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.pom.md5 +1 -0
  196. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.pom.sha1 +1 -0
  197. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.pom.sha256 +1 -0
  198. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.pom.sha512 +1 -0
  199. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  200. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  201. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  202. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  203. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  204. package/package.json +11 -13
  205. package/plugin/build/index.js +1 -1
  206. package/plugin/options.json +5 -0
  207. package/plugin/src/index.ts +1 -1
  208. package/build/layouts/stack-utils/StackHeaderBackButton.d.ts +0 -14
  209. package/build/layouts/stack-utils/StackHeaderBackButton.d.ts.map +0 -1
  210. package/build/layouts/stack-utils/StackHeaderBackButton.js +0 -19
  211. package/build/layouts/stack-utils/StackHeaderBackButton.js.map +0 -1
  212. package/build/layouts/stack-utils/StackHeaderButton.d.ts +0 -114
  213. package/build/layouts/stack-utils/StackHeaderButton.d.ts.map +0 -1
  214. package/build/layouts/stack-utils/StackHeaderButton.js +0 -49
  215. package/build/layouts/stack-utils/StackHeaderButton.js.map +0 -1
  216. package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts +0 -119
  217. package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts.map +0 -1
  218. package/build/layouts/stack-utils/StackHeaderLeftRight.js +0 -206
  219. package/build/layouts/stack-utils/StackHeaderLeftRight.js.map +0 -1
  220. package/build/layouts/stack-utils/StackHeaderMenu.d.ts.map +0 -1
  221. package/build/layouts/stack-utils/StackHeaderMenu.js +0 -214
  222. package/build/layouts/stack-utils/StackHeaderMenu.js.map +0 -1
  223. package/build/layouts/stack-utils/StackHeaderSpacer.d.ts +0 -46
  224. package/build/layouts/stack-utils/StackHeaderSpacer.d.ts.map +0 -1
  225. package/build/layouts/stack-utils/StackHeaderSpacer.js +0 -44
  226. package/build/layouts/stack-utils/StackHeaderSpacer.js.map +0 -1
  227. package/build/layouts/stack-utils/StackHeaderTitle.d.ts +0 -22
  228. package/build/layouts/stack-utils/StackHeaderTitle.d.ts.map +0 -1
  229. package/build/layouts/stack-utils/StackHeaderTitle.js +0 -36
  230. package/build/layouts/stack-utils/StackHeaderTitle.js.map +0 -1
  231. package/build/layouts/stack-utils/StackHeaderView.d.ts.map +0 -1
  232. package/build/layouts/stack-utils/StackHeaderView.js +0 -56
  233. package/build/layouts/stack-utils/StackHeaderView.js.map +0 -1
  234. package/build/toolbar/elements.d.ts +0 -417
  235. package/build/toolbar/elements.d.ts.map +0 -1
  236. package/build/toolbar/elements.js +0 -188
  237. package/build/toolbar/elements.js.map +0 -1
  238. package/build/toolbar/index.d.ts +0 -42
  239. package/build/toolbar/index.d.ts.map +0 -1
  240. package/build/toolbar/index.js +0 -49
  241. package/build/toolbar/index.js.map +0 -1
  242. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.md5 +0 -1
  243. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha1 +0 -1
  244. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha256 +0 -1
  245. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha512 +0 -1
  246. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.md5 +0 -1
  247. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha1 +0 -1
  248. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha256 +0 -1
  249. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha512 +0 -1
  250. package/unstable-toolbar.d.ts +0 -1
  251. package/unstable-toolbar.js +0 -1
  252. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar} +0 -0
  253. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.md5 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar.md5} +0 -0
  254. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha1 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar.sha1} +0 -0
  255. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha256 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar.sha256} +0 -0
  256. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha512 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar.sha512} +0 -0
  257. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.aar} +0 -0
  258. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.md5 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.aar.md5} +0 -0
  259. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha1 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.aar.sha1} +0 -0
  260. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha256 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.aar.sha256} +0 -0
  261. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha512 → 7.0.0-canary-20260120-bb71700/expo.modules.router-7.0.0-canary-20260120-bb71700.aar.sha512} +0 -0
@@ -3,7 +3,11 @@ import UIKit
3
3
 
4
4
  class RouterToolbarItemView: RouterViewWithLogger {
5
5
  var identifier: String = ""
6
- @ReactiveProp var type: ItemType?
6
+ // Properties requiring full rebuild
7
+ @ReactiveProp(needsFullRebuild: true) var type: ItemType?
8
+ @ReactiveProp(needsFullRebuild: true) var customView: UIView?
9
+
10
+ // Properties allowing in-place updates
7
11
  @ReactiveProp var title: String?
8
12
  @ReactiveProp var systemImageName: String?
9
13
  var customImage: SharedRef<UIImage>? {
@@ -11,14 +15,12 @@ class RouterToolbarItemView: RouterViewWithLogger {
11
15
  performUpdate()
12
16
  }
13
17
  }
14
- @ReactiveProp var customView: UIView?
15
18
  @ReactiveProp var customTintColor: UIColor?
16
19
  @ReactiveProp var hidesSharedBackground: Bool = false
17
20
  @ReactiveProp var sharesBackground: Bool = true
18
21
  @ReactiveProp var barButtonItemStyle: UIBarButtonItem.Style?
19
22
  @ReactiveProp var width: Double?
20
- // Using "routerHidden" to avoid conflict with UIView's "isHidden"
21
- @ReactiveProp var routerHidden: Bool = false
23
+
22
24
  @ReactiveProp var selected: Bool = false
23
25
  @ReactiveProp var possibleTitles: Set<String>?
24
26
  @ReactiveProp var badgeConfiguration: BadgeConfiguration?
@@ -27,12 +29,29 @@ class RouterToolbarItemView: RouterViewWithLogger {
27
29
  @ReactiveProp var routerAccessibilityHint: String?
28
30
  @ReactiveProp var disabled: Bool = false
29
31
 
32
+ // Using "routerHidden" to avoid conflict with UIView's "isHidden"
33
+ // This property is not applied in this component, but read by the host
34
+ @ReactiveProp var routerHidden: Bool = false
35
+
30
36
  var host: RouterToolbarHostView?
37
+ private var currentBarButtonItem: UIBarButtonItem?
31
38
 
32
39
  let onSelected = EventDispatcher()
33
40
 
41
+ func performRebuild() {
42
+ // There is no need to rebuild if not mounted
43
+ guard self.host != nil else { return }
44
+ rebuildBarButtonItem()
45
+ self.host?.updateToolbarItems()
46
+ }
47
+
34
48
  func performUpdate() {
35
- self.host?.updateToolbarItem(withId: self.identifier)
49
+ // There is no need to update if not mounted
50
+ guard self.host != nil else { return }
51
+ updateBarButtonItem()
52
+ // Even though we update in place, we need to notify the host
53
+ // so the toolbar array reference is updated and UIKit refreshes
54
+ self.host?.updateToolbarItems()
36
55
  }
37
56
 
38
57
  @objc func handleAction() {
@@ -40,7 +59,32 @@ class RouterToolbarItemView: RouterViewWithLogger {
40
59
  }
41
60
 
42
61
  var barButtonItem: UIBarButtonItem {
62
+ if let item = currentBarButtonItem {
63
+ return item
64
+ }
65
+ // If no item exists yet, create one
66
+ rebuildBarButtonItem()
67
+ return currentBarButtonItem ?? UIBarButtonItem()
68
+ }
69
+
70
+ private func updateBarButtonItem() {
71
+ guard let item = currentBarButtonItem else {
72
+ // If no current item exists, create one
73
+ rebuildBarButtonItem()
74
+ self.host?.updateToolbarItem(withId: self.identifier)
75
+ return
76
+ }
77
+
78
+ // Update content properties (title, image, etc.) for normal buttons
79
+ applyContentProperties(to: item)
80
+
81
+ // Update all common properties
82
+ applyCommonProperties(to: item)
83
+ }
84
+
85
+ private func rebuildBarButtonItem() {
43
86
  var item = UIBarButtonItem()
87
+
44
88
  if let customView {
45
89
  item = UIBarButtonItem(customView: customView)
46
90
  } else if type == .fluidSpacer {
@@ -48,29 +92,44 @@ class RouterToolbarItemView: RouterViewWithLogger {
48
92
  } else if type == .fixedSpacer {
49
93
  item = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
50
94
  } else if type == .searchBar {
51
- if #available(iOS 16, *) {
52
- // Hide the item if no search bar is provided
53
- item.isHidden = true
54
- }
55
95
  guard #available(iOS 26.0, *), let controller = self.host?.findViewController() else {
56
96
  // Check for iOS 26, should already be guarded by the JS side, so this warning will only fire if controller is nil
57
97
  logger?.warn(
58
98
  "[expo-router] navigationItem.searchBarPlacementBarButtonItem not available. This is most likely a bug in expo-router."
59
99
  )
60
- return item
100
+ currentBarButtonItem = nil
101
+ return
61
102
  }
62
103
  guard let navController = controller.navigationController else {
63
- return item
104
+ currentBarButtonItem = nil
105
+ return
64
106
  }
65
107
  guard navController.isNavigationBarHidden == false else {
66
108
  logger?.warn(
67
109
  "[expo-router] Toolbar.SearchBarPreferredSlot should only be used when stack header is shown."
68
110
  )
69
- return item
111
+ currentBarButtonItem = nil
112
+ return
70
113
  }
71
114
 
72
115
  item = controller.navigationItem.searchBarPlacementBarButtonItem
73
116
  } else {
117
+ // Normal button - apply content properties during initial creation
118
+ applyContentProperties(to: item)
119
+ }
120
+
121
+ // Set target and action for interactive buttons
122
+ item.target = self
123
+ item.action = #selector(handleAction)
124
+
125
+ applyCommonProperties(to: item)
126
+
127
+ currentBarButtonItem = item
128
+ }
129
+
130
+ private func applyContentProperties(to item: UIBarButtonItem) {
131
+ // Only apply content properties for normal buttons
132
+ if type == .normal || type == nil {
74
133
  if let title {
75
134
  item.title = title
76
135
  }
@@ -89,6 +148,9 @@ class RouterToolbarItemView: RouterViewWithLogger {
89
148
  RouterFontUtils.setTitleStyle(fromConfig: titleStyle, for: item)
90
149
  }
91
150
  }
151
+ }
152
+
153
+ private func applyCommonProperties(to item: UIBarButtonItem) {
92
154
  if #available(iOS 26.0, *) {
93
155
  item.hidesSharedBackground = hidesSharedBackground
94
156
  item.sharesBackground = sharesBackground
@@ -96,14 +158,9 @@ class RouterToolbarItemView: RouterViewWithLogger {
96
158
  if let barButtonItemStyle {
97
159
  item.style = barButtonItemStyle
98
160
  }
99
- item.target = self
100
- item.action = #selector(handleAction)
101
161
  if let width = width {
102
162
  item.width = CGFloat(width)
103
163
  }
104
- if #available(iOS 16.0, *) {
105
- item.isHidden = routerHidden
106
- }
107
164
  item.isSelected = selected
108
165
  if let routerAccessibilityLabel = routerAccessibilityLabel {
109
166
  item.accessibilityLabel = routerAccessibilityLabel
@@ -137,8 +194,6 @@ class RouterToolbarItemView: RouterViewWithLogger {
137
194
  item.badge = badge
138
195
  }
139
196
  }
140
-
141
- return item
142
197
  }
143
198
 
144
199
  required init(appContext: AppContext? = nil) {
@@ -189,9 +244,11 @@ struct TitleStyle: Equatable {
189
244
  @propertyWrapper
190
245
  struct ReactiveProp<Value: Equatable> {
191
246
  private var value: Value
247
+ let needsFullRebuild: Bool
192
248
 
193
- init(wrappedValue: Value) {
249
+ init(wrappedValue: Value, needsFullRebuild: Bool = false) {
194
250
  self.value = wrappedValue
251
+ self.needsFullRebuild = needsFullRebuild
195
252
  }
196
253
 
197
254
  static subscript<EnclosingSelf: RouterToolbarItemView>(
@@ -206,7 +263,11 @@ struct ReactiveProp<Value: Equatable> {
206
263
  let oldValue = instance[keyPath: storageKeyPath].value
207
264
  if oldValue != newValue {
208
265
  instance[keyPath: storageKeyPath].value = newValue
209
- instance.performUpdate()
266
+ if instance[keyPath: storageKeyPath].needsFullRebuild {
267
+ instance.performRebuild()
268
+ } else {
269
+ instance.performUpdate()
270
+ }
210
271
  }
211
272
  }
212
273
  }
@@ -217,3 +278,10 @@ struct ReactiveProp<Value: Equatable> {
217
278
  set { fatalError() }
218
279
  }
219
280
  }
281
+
282
+ extension ReactiveProp where Value: ExpressibleByNilLiteral {
283
+ init(needsFullRebuild: Bool = false) {
284
+ self.value = nil
285
+ self.needsFullRebuild = needsFullRebuild
286
+ }
287
+ }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.router",
5
5
  "module": "expo.modules.router",
6
- "version": "7.0.0-canary-20260114-d8e19f5",
6
+ "version": "7.0.0-canary-20260120-bb71700",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar",
28
- "url": "expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar",
27
+ "name": "expo.modules.router-7.0.0-canary-20260120-bb71700.aar",
28
+ "url": "expo.modules.router-7.0.0-canary-20260120-bb71700.aar",
29
29
  "size": 13665,
30
30
  "sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
31
31
  "sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
@@ -60,8 +60,8 @@
60
60
  ],
61
61
  "files": [
62
62
  {
63
- "name": "expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar",
64
- "url": "expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar",
63
+ "name": "expo.modules.router-7.0.0-canary-20260120-bb71700.aar",
64
+ "url": "expo.modules.router-7.0.0-canary-20260120-bb71700.aar",
65
65
  "size": 13665,
66
66
  "sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
67
67
  "sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
@@ -80,8 +80,8 @@
80
80
  },
81
81
  "files": [
82
82
  {
83
- "name": "expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar",
84
- "url": "expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar",
83
+ "name": "expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar",
84
+ "url": "expo.modules.router-7.0.0-canary-20260120-bb71700-sources.jar",
85
85
  "size": 2318,
86
86
  "sha512": "9864add8e93e3c0a9a9c930aaed67016b15054c3fafd59a0bd3a5402d7cdc5827be84c22c2c137f3e5acb4e39270d9bfb9ca3fe11234458d4f2e0d4c78747f48",
87
87
  "sha256": "d5dff6259e86de721fc0f07fe740a5e18088e19b76738719b0a6f94caef06224",
@@ -0,0 +1 @@
1
+ 781d9a4fb6292459a31a24a76a62e6a93530c60893be6aa45dad8dd101b83a46a30630b77315b8823c7a2451e1693d78a975367748ff979015dc2e87714f85a8
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.router</groupId>
11
11
  <artifactId>expo.modules.router</artifactId>
12
- <version>7.0.0-canary-20260114-d8e19f5</version>
12
+ <version>7.0.0-canary-20260120-bb71700</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.router</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 2ab5984c1d82a502655b4d6984a91040121d117a866a1fc67d30610308f0c83637797e3167d8330381321b9f4511dd1f80380818b3362dc33ce8dc997c429de8
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.router</groupId>
4
4
  <artifactId>expo.modules.router</artifactId>
5
5
  <versioning>
6
- <latest>7.0.0-canary-20260114-d8e19f5</latest>
7
- <release>7.0.0-canary-20260114-d8e19f5</release>
6
+ <latest>7.0.0-canary-20260120-bb71700</latest>
7
+ <release>7.0.0-canary-20260120-bb71700</release>
8
8
  <versions>
9
- <version>7.0.0-canary-20260114-d8e19f5</version>
9
+ <version>7.0.0-canary-20260120-bb71700</version>
10
10
  </versions>
11
- <lastUpdated>20260114145042</lastUpdated>
11
+ <lastUpdated>20260120151821</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 1fa7c2242bdda0f85f52c93152c6b21b
1
+ a0332781e978afa80bf339c2ecc02212
@@ -1 +1 @@
1
- 12787d14354a881bae6fdca17a44c10dcfb02fef
1
+ 59a4980ee61c139122a45b20fd61fe20ed73220c
@@ -1 +1 @@
1
- 350c897a913b87724b1cf019db41a78b1febece8873dcbf543a5697c376b2917
1
+ f0a74b8aa5fbe0335bffd05180c1ecd32d3ee3c0331a9ca7ad8694e600fc604a
@@ -1 +1 @@
1
- d6a9fe616e0cc491d4025054a039ef814b2cbbfc643c8ff9291ba6bcf356e4157000f4d011554ae07fe20347703bce55b4a5705d23ca4b5b973932a79fb9e5ba
1
+ 7fea6195f62fc7a34548d6210714d22b4e50706a19379420f1023a5f06e019f60b2d6f898df71f6016754b0a8c2828116fae171e3ea85c918b2f818e2a6860ea
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "7.0.0-canary-20260114-d8e19f5",
3
+ "version": "7.0.0-canary-20260120-bb71700",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -42,8 +42,6 @@
42
42
  "unstable-native-tabs.d.ts",
43
43
  "unstable-split-view.js",
44
44
  "unstable-split-view.d.ts",
45
- "unstable-toolbar.js",
46
- "unstable-toolbar.d.ts",
47
45
  "node",
48
46
  "plugin",
49
47
  "rsc",
@@ -83,13 +81,13 @@
83
81
  "expo"
84
82
  ],
85
83
  "peerDependencies": {
86
- "@expo/metro-runtime": "6.2.0-canary-20260114-d8e19f5",
87
- "@expo/log-box": "0.0.13-canary-20260114-d8e19f5",
84
+ "@expo/metro-runtime": "6.2.0-canary-20260120-bb71700",
85
+ "@expo/log-box": "0.0.13-canary-20260120-bb71700",
88
86
  "@react-navigation/drawer": "^7.7.2",
89
87
  "@testing-library/react-native": ">= 12.0.0",
90
- "expo": "55.0.0-canary-20260114-d8e19f5",
91
- "expo-constants": "18.1.0-canary-20260114-d8e19f5",
92
- "expo-linking": "8.0.12-canary-20260114-d8e19f5",
88
+ "expo": "55.0.0-canary-20260120-bb71700",
89
+ "expo-constants": "18.1.0-canary-20260120-bb71700",
90
+ "expo-linking": "8.0.12-canary-20260120-bb71700",
93
91
  "react": "*",
94
92
  "react-dom": "*",
95
93
  "react-native": "*",
@@ -134,8 +132,8 @@
134
132
  "react-server-dom-webpack": "~19.0.3"
135
133
  },
136
134
  "dependencies": {
137
- "@expo/metro-runtime": "6.2.0-canary-20260114-d8e19f5",
138
- "@expo/schema-utils": "0.1.9-canary-20260114-d8e19f5",
135
+ "@expo/metro-runtime": "6.2.0-canary-20260120-bb71700",
136
+ "@expo/schema-utils": "0.1.9-canary-20260120-bb71700",
139
137
  "@radix-ui/react-slot": "1.2.0",
140
138
  "@radix-ui/react-tabs": "^1.1.12",
141
139
  "@react-navigation/bottom-tabs": "^7.7.3",
@@ -144,9 +142,9 @@
144
142
  "client-only": "^0.0.1",
145
143
  "debug": "^4.3.4",
146
144
  "escape-string-regexp": "^4.0.0",
147
- "expo-image": "3.1.0-canary-20260114-d8e19f5",
148
- "expo-server": "1.1.0-canary-20260114-d8e19f5",
149
- "expo-symbols": "1.1.0-canary-20260114-d8e19f5",
145
+ "expo-image": "3.1.0-canary-20260120-bb71700",
146
+ "expo-server": "1.1.0-canary-20260120-bb71700",
147
+ "expo-symbols": "1.1.0-canary-20260120-bb71700",
150
148
  "fast-deep-equal": "^3.1.3",
151
149
  "invariant": "^2.2.4",
152
150
  "nanoid": "^3.3.8",
@@ -24,7 +24,7 @@ const withExpoHeadIos = (config) => {
24
24
  const withGammaScreens = (config) => {
25
25
  return (0, config_plugins_1.withPodfile)(config, (config) => {
26
26
  if (!config.modResults.contents.includes('RNS_GAMMA_ENABLED')) {
27
- config.modResults.contents = `ENV['RNS_GAMMA_ENABLED']='1'\n${config.modResults.contents}`;
27
+ config.modResults.contents = `# Set by expo-router. This enables Fabric-only features from react-native-screens\nENV['RNS_GAMMA_ENABLED'] ||= '1'\n${config.modResults.contents}`;
28
28
  }
29
29
  return config;
30
30
  });
@@ -167,6 +167,11 @@
167
167
  "description": "Enable experimental server-side rendering. When enabled with `web.output: 'server'`, HTML is rendered at request time instead of being pre-rendered at build time.",
168
168
  "type": "boolean",
169
169
  "default": false
170
+ },
171
+ "disableSynchronousScreensUpdates": {
172
+ "description": "Disable synchronous layout updates for native screens.",
173
+ "type": "boolean",
174
+ "default": false
170
175
  }
171
176
  },
172
177
  "additionalProperties": false
@@ -26,7 +26,7 @@ const withExpoHeadIos: ConfigPlugin = (config) => {
26
26
  const withGammaScreens: ConfigPlugin = (config) => {
27
27
  return withPodfile(config, (config) => {
28
28
  if (!config.modResults.contents.includes('RNS_GAMMA_ENABLED')) {
29
- config.modResults.contents = `ENV['RNS_GAMMA_ENABLED']='1'\n${config.modResults.contents}`;
29
+ config.modResults.contents = `# Set by expo-router. This enables Fabric-only features from react-native-screens\nENV['RNS_GAMMA_ENABLED'] ||= '1'\n${config.modResults.contents}`;
30
30
  }
31
31
  return config;
32
32
  });
@@ -1,14 +0,0 @@
1
- import { NativeStackNavigationOptions } from '@react-navigation/native-stack';
2
- import type { ImageSourcePropType } from 'react-native';
3
- import type { ScreenStackHeaderConfigProps } from 'react-native-screens';
4
- export interface StackHeaderBackButtonProps {
5
- children?: string;
6
- style?: NativeStackNavigationOptions['headerBackTitleStyle'];
7
- withMenu?: boolean;
8
- displayMode?: ScreenStackHeaderConfigProps['backButtonDisplayMode'];
9
- hidden?: boolean;
10
- src?: ImageSourcePropType;
11
- }
12
- export declare function StackHeaderBackButton(props: StackHeaderBackButtonProps): null;
13
- export declare function appendStackHeaderBackButtonPropsToOptions(options: NativeStackNavigationOptions, props: StackHeaderBackButtonProps): NativeStackNavigationOptions;
14
- //# sourceMappingURL=StackHeaderBackButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StackHeaderBackButton.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,QAEtE;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,0BAA0B,GAChC,4BAA4B,CAU9B"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackHeaderBackButton = StackHeaderBackButton;
4
- exports.appendStackHeaderBackButtonPropsToOptions = appendStackHeaderBackButtonPropsToOptions;
5
- function StackHeaderBackButton(props) {
6
- return null;
7
- }
8
- function appendStackHeaderBackButtonPropsToOptions(options, props) {
9
- return {
10
- ...options,
11
- headerBackTitle: props.children,
12
- headerBackTitleStyle: props.style,
13
- headerBackImageSource: props.src,
14
- headerBackButtonDisplayMode: props.displayMode,
15
- headerBackButtonMenuEnabled: props.withMenu,
16
- headerBackVisible: !props.hidden,
17
- };
18
- }
19
- //# sourceMappingURL=StackHeaderBackButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StackHeaderBackButton.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderBackButton.tsx"],"names":[],"mappings":";;AAaA,sDAEC;AAED,8FAaC;AAjBD,SAAgB,qBAAqB,CAAC,KAAiC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,yCAAyC,CACvD,OAAqC,EACrC,KAAiC;IAEjC,OAAO;QACL,GAAG,OAAO;QACV,eAAe,EAAE,KAAK,CAAC,QAAQ;QAC/B,oBAAoB,EAAE,KAAK,CAAC,KAAK;QACjC,qBAAqB,EAAE,KAAK,CAAC,GAAG;QAChC,2BAA2B,EAAE,KAAK,CAAC,WAAW;QAC9C,2BAA2B,EAAE,KAAK,CAAC,QAAQ;QAC3C,iBAAiB,EAAE,CAAC,KAAK,CAAC,MAAM;KACjC,CAAC;AACJ,CAAC","sourcesContent":["import { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport type { ImageSourcePropType } from 'react-native';\nimport type { ScreenStackHeaderConfigProps } from 'react-native-screens';\n\nexport interface StackHeaderBackButtonProps {\n children?: string;\n style?: NativeStackNavigationOptions['headerBackTitleStyle'];\n withMenu?: boolean;\n displayMode?: ScreenStackHeaderConfigProps['backButtonDisplayMode'];\n hidden?: boolean;\n src?: ImageSourcePropType;\n}\n\nexport function StackHeaderBackButton(props: StackHeaderBackButtonProps) {\n return null;\n}\n\nexport function appendStackHeaderBackButtonPropsToOptions(\n options: NativeStackNavigationOptions,\n props: StackHeaderBackButtonProps\n): NativeStackNavigationOptions {\n return {\n ...options,\n headerBackTitle: props.children,\n headerBackTitleStyle: props.style,\n headerBackImageSource: props.src,\n headerBackButtonDisplayMode: props.displayMode,\n headerBackButtonMenuEnabled: props.withMenu,\n headerBackVisible: !props.hidden,\n };\n}\n"]}
@@ -1,114 +0,0 @@
1
- import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';
2
- import type { ReactNode } from 'react';
3
- import { type StackHeaderItemSharedProps } from './shared';
4
- export interface StackHeaderButtonProps {
5
- accessibilityLabel?: string;
6
- accessibilityHint?: string;
7
- /**
8
- * There are two ways to specify the content of the header item:
9
- *
10
- * @example
11
- * ```tsx
12
- * import { Stack } from 'expo-router';
13
- *
14
- * ...
15
- * <Stack.Header.Button icon="star.fill">As text passed as children</Stack.Header.Button>
16
- * ```
17
- *
18
- * @example
19
- * ```tsx
20
- * import { Stack } from 'expo-router';
21
- *
22
- * ...
23
- * <Stack.Header.Button>
24
- * <Stack.Header.Icon sf="star.fill" />
25
- * <Stack.Header.Label>As components</Stack.Header.Label>
26
- * <Stack.Header.Badge>3</Stack.Header.Badge>
27
- * </Stack.Header.Button>
28
- * ```
29
- *
30
- * **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only.
31
- */
32
- children?: ReactNode;
33
- disabled?: boolean;
34
- /**
35
- * Whether the button should be hidden.
36
- *
37
- * @default false
38
- */
39
- hidden?: boolean;
40
- /**
41
- * Whether to hide the shared background.
42
- *
43
- * @see [Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information.
44
- *
45
- * @platform iOS 26+
46
- */
47
- hidesSharedBackground?: boolean;
48
- /**
49
- * Icon to display in the button.
50
- *
51
- * Can be a string representing an SFSymbol or an image source.
52
- */
53
- icon?: StackHeaderItemSharedProps['icon'];
54
- onPress?: () => void;
55
- /**
56
- * Whether to separate the background of this item from other header items.
57
- *
58
- * @default false
59
- */
60
- separateBackground?: boolean;
61
- /**
62
- * Whether the button is in a selected state
63
- *
64
- * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected) for more information.
65
- */
66
- selected?: boolean;
67
- /**
68
- * Style for the label of the header item.
69
- */
70
- style?: StackHeaderItemSharedProps['style'];
71
- /**
72
- * The tint color to apply to the button item
73
- *
74
- * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information.
75
- */
76
- tintColor?: StackHeaderItemSharedProps['tintColor'];
77
- /**
78
- * @default 'plain'
79
- */
80
- variant?: StackHeaderItemSharedProps['variant'];
81
- }
82
- /**
83
- * A header button used inside `Stack.Header.Left` or `Stack.Header.Right`.
84
- *
85
- * @example
86
- * ```tsx
87
- * import { Stack } from 'expo-router';
88
- *
89
- * export default function Screen() {
90
- * return (
91
- * <>
92
- * <ScreenContent />
93
- * <Stack.Screen>
94
- * <Stack.Header>
95
- * <Stack.Header.Left>
96
- * <Stack.Header.Button tintColor="blue" icon="arrow.left.circle" onPress={() => alert('Left pressed')} />
97
- * <Stack.Header.Button style={{ color: 'green' }} onPress={() => alert('2 pressed')}>
98
- * <Stack.Header.Label>2</Stack.Header.Label>
99
- * </Stack.Header.Button>
100
- * </Stack.Header.Left>
101
- * </Stack.Header>
102
- * </Stack.Screen>
103
- * </>
104
- * );
105
- * }
106
- * ```
107
- *
108
- * @see [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/toolbars) for more information about navigation bar items on iOS.
109
- *
110
- * @platform ios
111
- */
112
- export declare const StackHeaderButton: React.FC<StackHeaderButtonProps>;
113
- export declare function convertStackHeaderButtonPropsToRNHeaderItem(props: StackHeaderButtonProps): NativeStackHeaderItemButton | undefined;
114
- //# sourceMappingURL=StackHeaderButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StackHeaderButton.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC5C;;;;OAIG;IACH,SAAS,CAAC,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACpD;;OAEG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAc,CAAC;AAE9E,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,sBAAsB,GAC5B,2BAA2B,GAAG,SAAS,CAUzC"}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackHeaderButton = void 0;
4
- exports.convertStackHeaderButtonPropsToRNHeaderItem = convertStackHeaderButtonPropsToRNHeaderItem;
5
- const shared_1 = require("./shared");
6
- /**
7
- * A header button used inside `Stack.Header.Left` or `Stack.Header.Right`.
8
- *
9
- * @example
10
- * ```tsx
11
- * import { Stack } from 'expo-router';
12
- *
13
- * export default function Screen() {
14
- * return (
15
- * <>
16
- * <ScreenContent />
17
- * <Stack.Screen>
18
- * <Stack.Header>
19
- * <Stack.Header.Left>
20
- * <Stack.Header.Button tintColor="blue" icon="arrow.left.circle" onPress={() => alert('Left pressed')} />
21
- * <Stack.Header.Button style={{ color: 'green' }} onPress={() => alert('2 pressed')}>
22
- * <Stack.Header.Label>2</Stack.Header.Label>
23
- * </Stack.Header.Button>
24
- * </Stack.Header.Left>
25
- * </Stack.Header>
26
- * </Stack.Screen>
27
- * </>
28
- * );
29
- * }
30
- * ```
31
- *
32
- * @see [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/toolbars) for more information about navigation bar items on iOS.
33
- *
34
- * @platform ios
35
- */
36
- const StackHeaderButton = () => null;
37
- exports.StackHeaderButton = StackHeaderButton;
38
- function convertStackHeaderButtonPropsToRNHeaderItem(props) {
39
- if (props.hidden) {
40
- return undefined;
41
- }
42
- return {
43
- ...(0, shared_1.convertStackHeaderSharedPropsToRNSharedHeaderItem)(props),
44
- type: 'button',
45
- onPress: props.onPress ?? (() => { }),
46
- selected: !!props.selected,
47
- };
48
- }
49
- //# sourceMappingURL=StackHeaderButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StackHeaderButton.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderButton.tsx"],"names":[],"mappings":";;;AAuHA,kGAYC;AAhID,qCAGkB;AAiFlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACI,MAAM,iBAAiB,GAAqC,GAAG,EAAE,CAAC,IAAI,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAE9E,SAAgB,2CAA2C,CACzD,KAA6B;IAE7B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,GAAG,IAAA,0DAAiD,EAAC,KAAK,CAAC;QAC3D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';\nimport type { ReactNode } from 'react';\n\nimport {\n convertStackHeaderSharedPropsToRNSharedHeaderItem,\n type StackHeaderItemSharedProps,\n} from './shared';\n\nexport interface StackHeaderButtonProps {\n accessibilityLabel?: string;\n accessibilityHint?: string;\n /**\n * There are two ways to specify the content of the header item:\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * ...\n * <Stack.Header.Button icon=\"star.fill\">As text passed as children</Stack.Header.Button>\n * ```\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * ...\n * <Stack.Header.Button>\n * <Stack.Header.Icon sf=\"star.fill\" />\n * <Stack.Header.Label>As components</Stack.Header.Label>\n * <Stack.Header.Badge>3</Stack.Header.Badge>\n * </Stack.Header.Button>\n * ```\n *\n * **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only.\n */\n children?: ReactNode;\n disabled?: boolean;\n /**\n * Whether the button should be hidden.\n *\n * @default false\n */\n hidden?: boolean;\n /**\n * Whether to hide the shared background.\n *\n * @see [Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information.\n *\n * @platform iOS 26+\n */\n hidesSharedBackground?: boolean;\n /**\n * Icon to display in the button.\n *\n * Can be a string representing an SFSymbol or an image source.\n */\n icon?: StackHeaderItemSharedProps['icon'];\n onPress?: () => void;\n /**\n * Whether to separate the background of this item from other header items.\n *\n * @default false\n */\n separateBackground?: boolean;\n /**\n * Whether the button is in a selected state\n *\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected) for more information.\n */\n selected?: boolean;\n /**\n * Style for the label of the header item.\n */\n style?: StackHeaderItemSharedProps['style'];\n /**\n * The tint color to apply to the button item\n *\n * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information.\n */\n tintColor?: StackHeaderItemSharedProps['tintColor'];\n /**\n * @default 'plain'\n */\n variant?: StackHeaderItemSharedProps['variant'];\n}\n\n/**\n * A header button used inside `Stack.Header.Left` or `Stack.Header.Right`.\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Screen() {\n * return (\n * <>\n * <ScreenContent />\n * <Stack.Screen>\n * <Stack.Header>\n * <Stack.Header.Left>\n * <Stack.Header.Button tintColor=\"blue\" icon=\"arrow.left.circle\" onPress={() => alert('Left pressed')} />\n * <Stack.Header.Button style={{ color: 'green' }} onPress={() => alert('2 pressed')}>\n * <Stack.Header.Label>2</Stack.Header.Label>\n * </Stack.Header.Button>\n * </Stack.Header.Left>\n * </Stack.Header>\n * </Stack.Screen>\n * </>\n * );\n * }\n * ```\n *\n * @see [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/toolbars) for more information about navigation bar items on iOS.\n *\n * @platform ios\n */\nexport const StackHeaderButton: React.FC<StackHeaderButtonProps> = () => null;\n\nexport function convertStackHeaderButtonPropsToRNHeaderItem(\n props: StackHeaderButtonProps\n): NativeStackHeaderItemButton | undefined {\n if (props.hidden) {\n return undefined;\n }\n return {\n ...convertStackHeaderSharedPropsToRNSharedHeaderItem(props),\n type: 'button',\n onPress: props.onPress ?? (() => {}),\n selected: !!props.selected,\n };\n}\n"]}