@apexnative/navigation 0.0.0-stage → 1.0.0-alpha.1

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 (1373) hide show
  1. package/ApexNavigation.podspec +42 -0
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +76 -2
  5. package/android/CLAUDE.md +183 -0
  6. package/android/CORE.md +219 -0
  7. package/android/MATERIAL_SYMBOLS_LICENSE.txt +205 -0
  8. package/android/RECIPES.md +39 -0
  9. package/android/build.gradle +108 -0
  10. package/android/consumer-rules.pro +2 -0
  11. package/android/src/main/AndroidManifest.xml +9 -0
  12. package/android/src/main/java/dev/apexnative/navigation/EdgeToEdgeDecision.kt +25 -0
  13. package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +339 -0
  14. package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +90 -0
  15. package/android/src/main/java/dev/apexnative/navigation/NavigationPackage.kt +37 -0
  16. package/android/src/main/java/dev/apexnative/navigation/customrow/BottomTabsCustomRowOptions.kt +85 -0
  17. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +51 -0
  18. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutException.kt +7 -0
  19. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +118 -0
  20. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutReader.kt +274 -0
  21. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutType.kt +35 -0
  22. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCalls.kt +61 -0
  23. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +84 -0
  24. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCreator.kt +17 -0
  25. package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +54 -0
  26. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +238 -0
  27. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +244 -0
  28. package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +70 -0
  29. package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +296 -0
  30. package/android/src/main/java/dev/apexnative/navigation/options/ComponentOptions.kt +141 -0
  31. package/android/src/main/java/dev/apexnative/navigation/options/DefaultOptions.kt +21 -0
  32. package/android/src/main/java/dev/apexnative/navigation/options/FabOptions.kt +97 -0
  33. package/android/src/main/java/dev/apexnative/navigation/options/FontOptions.kt +47 -0
  34. package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +49 -0
  35. package/android/src/main/java/dev/apexnative/navigation/options/InterpolationOptions.kt +203 -0
  36. package/android/src/main/java/dev/apexnative/navigation/options/KeyCommandOptions.kt +49 -0
  37. package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +78 -0
  38. package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +157 -0
  39. package/android/src/main/java/dev/apexnative/navigation/options/LayoutOptions.kt +94 -0
  40. package/android/src/main/java/dev/apexnative/navigation/options/ModalOptions.kt +87 -0
  41. package/android/src/main/java/dev/apexnative/navigation/options/ModalPlacementOptions.kt +90 -0
  42. package/android/src/main/java/dev/apexnative/navigation/options/NavigationBarOptions.kt +44 -0
  43. package/android/src/main/java/dev/apexnative/navigation/options/Options.kt +167 -0
  44. package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +21 -0
  45. package/android/src/main/java/dev/apexnative/navigation/options/OptionsReader.kt +133 -0
  46. package/android/src/main/java/dev/apexnative/navigation/options/PreviewOptions.kt +97 -0
  47. package/android/src/main/java/dev/apexnative/navigation/options/ReadableMaps.kt +70 -0
  48. package/android/src/main/java/dev/apexnative/navigation/options/ScrollEdgeEffectOptions.kt +98 -0
  49. package/android/src/main/java/dev/apexnative/navigation/options/SearchBarOptions.kt +151 -0
  50. package/android/src/main/java/dev/apexnative/navigation/options/SharedElementTransitionOptions.kt +57 -0
  51. package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +108 -0
  52. package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +130 -0
  53. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewGroupOptions.kt +190 -0
  54. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewOptions.kt +28 -0
  55. package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +270 -0
  56. package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +75 -0
  57. package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +167 -0
  58. package/android/src/main/java/dev/apexnative/navigation/options/ToolbarOptions.kt +60 -0
  59. package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +223 -0
  60. package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +381 -0
  61. package/android/src/main/java/dev/apexnative/navigation/options/ViewAnimationOptions.kt +225 -0
  62. package/android/src/main/java/dev/apexnative/navigation/options/WindowOptions.kt +36 -0
  63. package/android/src/main/java/dev/apexnative/navigation/options/params/Bool.kt +23 -0
  64. package/android/src/main/java/dev/apexnative/navigation/options/params/Fraction.kt +12 -0
  65. package/android/src/main/java/dev/apexnative/navigation/options/params/LayoutDirection.kt +26 -0
  66. package/android/src/main/java/dev/apexnative/navigation/options/params/Param.kt +24 -0
  67. package/android/src/main/java/dev/apexnative/navigation/options/params/Text.kt +24 -0
  68. package/android/src/main/java/dev/apexnative/navigation/options/params/ThemeColour.kt +259 -0
  69. package/android/src/main/java/dev/apexnative/navigation/options/params/Variant.kt +36 -0
  70. package/android/src/main/java/dev/apexnative/navigation/options/parsers/BoolParser.kt +15 -0
  71. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FontParser.kt +28 -0
  72. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FractionParser.kt +24 -0
  73. package/android/src/main/java/dev/apexnative/navigation/options/parsers/IconParser.kt +48 -0
  74. package/android/src/main/java/dev/apexnative/navigation/options/parsers/StringListParser.kt +27 -0
  75. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TextParser.kt +32 -0
  76. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TypefaceLoader.kt +42 -0
  77. package/android/src/main/java/dev/apexnative/navigation/options/parsers/VariantParser.kt +34 -0
  78. package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +41 -0
  79. package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +111 -0
  80. package/android/src/main/java/dev/apexnative/navigation/react/CommandListener.kt +27 -0
  81. package/android/src/main/java/dev/apexnative/navigation/react/CommandRunner.kt +131 -0
  82. package/android/src/main/java/dev/apexnative/navigation/react/DeveloperReload.kt +69 -0
  83. package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +123 -0
  84. package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +154 -0
  85. package/android/src/main/java/dev/apexnative/navigation/react/LaunchLink.kt +37 -0
  86. package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +311 -0
  87. package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +89 -0
  88. package/android/src/main/java/dev/apexnative/navigation/react/ReactGateway.kt +67 -0
  89. package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +197 -0
  90. package/android/src/main/java/dev/apexnative/navigation/react/ReadableJson.kt +60 -0
  91. package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +130 -0
  92. package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +69 -0
  93. package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +87 -0
  94. package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +160 -0
  95. package/android/src/main/java/dev/apexnative/navigation/react/StartInfo.kt +44 -0
  96. package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +507 -0
  97. package/android/src/main/java/dev/apexnative/navigation/react/events/ComponentType.kt +13 -0
  98. package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +199 -0
  99. package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +62 -0
  100. package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +87 -0
  101. package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +62 -0
  102. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaReadyEvent.kt +16 -0
  103. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +140 -0
  104. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaViewManager.kt +45 -0
  105. package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +44 -0
  106. package/android/src/main/java/dev/apexnative/navigation/slots/SlotHost.kt +91 -0
  107. package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +158 -0
  108. package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +141 -0
  109. package/android/src/main/java/dev/apexnative/navigation/slots/SlotViewManager.kt +50 -0
  110. package/android/src/main/java/dev/apexnative/navigation/splash/SplashHold.kt +67 -0
  111. package/android/src/main/java/dev/apexnative/navigation/splash/SplashTheme.kt +81 -0
  112. package/android/src/main/java/dev/apexnative/navigation/splash/SplashView.kt +77 -0
  113. package/android/src/main/java/dev/apexnative/navigation/system/AppDirection.kt +92 -0
  114. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiLayers.kt +126 -0
  115. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiOwner.kt +229 -0
  116. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiRules.kt +302 -0
  117. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiState.kt +58 -0
  118. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiWindow.kt +405 -0
  119. package/android/src/main/java/dev/apexnative/navigation/utils/ColorUtils.kt +22 -0
  120. package/android/src/main/java/dev/apexnative/navigation/utils/DevelopmentLog.kt +45 -0
  121. package/android/src/main/java/dev/apexnative/navigation/utils/DimensionExtensions.kt +16 -0
  122. package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +112 -0
  123. package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +148 -0
  124. package/android/src/main/java/dev/apexnative/navigation/utils/NavigationLog.kt +6 -0
  125. package/android/src/main/java/dev/apexnative/navigation/utils/ScrollToTop.kt +33 -0
  126. package/android/src/main/java/dev/apexnative/navigation/utils/SystemUiUtils.kt +41 -0
  127. package/android/src/main/java/dev/apexnative/navigation/utils/TestIds.kt +89 -0
  128. package/android/src/main/java/dev/apexnative/navigation/utils/TextViewUtils.kt +10 -0
  129. package/android/src/main/java/dev/apexnative/navigation/utils/UiThread.kt +31 -0
  130. package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +43 -0
  131. package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +124 -0
  132. package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +41 -0
  133. package/android/src/main/java/dev/apexnative/navigation/utils/ViewUtils.kt +15 -0
  134. package/android/src/main/java/dev/apexnative/navigation/utils/WindowFolds.kt +107 -0
  135. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +258 -0
  136. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementDefinition.kt +57 -0
  137. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementLayout.kt +225 -0
  138. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementPlanner.kt +120 -0
  139. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +31 -0
  140. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +54 -0
  141. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +664 -0
  142. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +367 -0
  143. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +81 -0
  144. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +223 -0
  145. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarLook.kt +74 -0
  146. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarMotion.kt +83 -0
  147. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabCellState.kt +27 -0
  148. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabHistory.kt +38 -0
  149. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +172 -0
  150. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabSelection.kt +65 -0
  151. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsAttach.kt +42 -0
  152. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +72 -0
  153. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildController.kt +45 -0
  154. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildControllersRegistry.kt +29 -0
  155. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +90 -0
  156. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +254 -0
  157. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +65 -0
  158. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +231 -0
  159. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RestPlace.kt +28 -0
  160. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenContentFactory.kt +28 -0
  161. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFocus.kt +22 -0
  162. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +154 -0
  163. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +104 -0
  164. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +148 -0
  165. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentCreator.kt +18 -0
  166. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +187 -0
  167. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/NativeScreens.kt +25 -0
  168. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +40 -0
  169. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalContainer.kt +20 -0
  170. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +1269 -0
  171. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +186 -0
  172. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +342 -0
  173. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +398 -0
  174. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetContainer.kt +67 -0
  175. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +78 -0
  176. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/FirstRootDraw.kt +58 -0
  177. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/LayoutFactory.kt +203 -0
  178. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +562 -0
  179. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigators.kt +53 -0
  180. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +514 -0
  181. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/WaitingLayer.kt +18 -0
  182. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayContainer.kt +33 -0
  183. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +383 -0
  184. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayTouches.kt +44 -0
  185. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayViews.kt +117 -0
  186. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +62 -0
  187. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +43 -0
  188. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +218 -0
  189. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ShownChildren.kt +82 -0
  190. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +283 -0
  191. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +276 -0
  192. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +92 -0
  193. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +107 -0
  194. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +59 -0
  195. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +509 -0
  196. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewLayout.kt +61 -0
  197. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewPresenter.kt +25 -0
  198. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +19 -0
  199. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedPushes.kt +114 -0
  200. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +387 -0
  201. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +635 -0
  202. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +167 -0
  203. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackPresenter.kt +24 -0
  204. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +1274 -0
  205. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +82 -0
  206. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +222 -0
  207. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlacement.kt +47 -0
  208. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlan.kt +44 -0
  209. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +279 -0
  210. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +450 -0
  211. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/SearchPanel.kt +176 -0
  212. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +243 -0
  213. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +211 -0
  214. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +122 -0
  215. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonCells.kt +30 -0
  216. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +65 -0
  217. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/LargeTitleCollapse.kt +71 -0
  218. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +72 -0
  219. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarCollapseBehavior.kt +104 -0
  220. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +1085 -0
  221. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarRoom.kt +95 -0
  222. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +122 -0
  223. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/IReactView.kt +89 -0
  224. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/Presenter.kt +51 -0
  225. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +194 -0
  226. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +320 -0
  227. package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationRules.kt +141 -0
  228. package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +193 -0
  229. package/android/src/main/java/dev/apexnative/navigation/views/animations/FadeThrough.kt +57 -0
  230. package/android/src/main/java/dev/apexnative/navigation/views/animations/SideAnimator.kt +143 -0
  231. package/android/src/main/java/dev/apexnative/navigation/views/animations/SystemTransition.kt +26 -0
  232. package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +93 -0
  233. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabItem.kt +13 -0
  234. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +550 -0
  235. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsContainer.kt +135 -0
  236. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +89 -0
  237. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +91 -0
  238. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +165 -0
  239. package/android/src/main/java/dev/apexnative/navigation/views/component/ComponentLayout.kt +89 -0
  240. package/android/src/main/java/dev/apexnative/navigation/views/component/Renderable.kt +6 -0
  241. package/android/src/main/java/dev/apexnative/navigation/views/element/DrawOrder.kt +44 -0
  242. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +31 -0
  243. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +281 -0
  244. package/android/src/main/java/dev/apexnative/navigation/views/element/ImageLoads.kt +103 -0
  245. package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +112 -0
  246. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +152 -0
  247. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +53 -0
  248. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +46 -0
  249. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +53 -0
  250. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +138 -0
  251. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +88 -0
  252. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +33 -0
  253. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +66 -0
  254. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +70 -0
  255. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +179 -0
  256. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +139 -0
  257. package/android/src/main/java/dev/apexnative/navigation/views/externalcomponent/ExternalComponentLayout.kt +44 -0
  258. package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +183 -0
  259. package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +137 -0
  260. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +125 -0
  261. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabAnimator.kt +8 -0
  262. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCollapseBehaviour.kt +34 -0
  263. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +133 -0
  264. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/LargeTitleView.kt +45 -0
  265. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +211 -0
  266. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +407 -0
  267. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBarDefaults.kt +35 -0
  268. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/ScopeRow.kt +82 -0
  269. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchField.kt +130 -0
  270. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchStyle.kt +29 -0
  271. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SuggestionList.kt +77 -0
  272. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +80 -0
  273. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +334 -0
  274. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +106 -0
  275. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt +93 -0
  276. package/android/src/main/jni/ApexNavigationSpec.h +18 -0
  277. package/android/src/main/jni/CMakeLists.txt +33 -0
  278. package/android/src/main/res/color/apex_navigation_highlight_inverse.xml +5 -0
  279. package/android/src/main/res/color/apex_navigation_text_primary.xml +6 -0
  280. package/android/src/main/res/color/apex_navigation_text_primary_inverse.xml +6 -0
  281. package/android/src/main/res/color/apex_navigation_text_secondary.xml +6 -0
  282. package/android/src/main/res/color/apex_navigation_text_secondary_inverse.xml +6 -0
  283. package/android/src/main/res/drawable/apex_navigation_ic_arrow_back.xml +13 -0
  284. package/android/src/main/res/drawable/apex_navigation_ic_close.xml +12 -0
  285. package/android/src/main/res/drawable/ic_fab_add_24dp.xml +12 -0
  286. package/android/src/main/res/values/attrs.xml +13 -0
  287. package/android/src/main/res/values/dimens.xml +5 -0
  288. package/android/src/main/res/values/dimens_splash.xml +9 -0
  289. package/android/src/main/res/values/ids.xml +12 -0
  290. package/android/src/main/res/values/styles.xml +18 -0
  291. package/android/src/main/res/values/themes.xml +75 -0
  292. package/android/src/main/res/values-night/styles.xml +6 -0
  293. package/android/src/main/res/values-night/themes.xml +67 -0
  294. package/cli/app.js +113 -0
  295. package/cli/changes.js +235 -0
  296. package/cli/codegen/commands.js +356 -0
  297. package/cli/codegen/index.js +211 -0
  298. package/cli/codegen/kotlin.js +396 -0
  299. package/cli/codegen/names.js +99 -0
  300. package/cli/codegen/read.js +602 -0
  301. package/cli/codegen/swift.js +342 -0
  302. package/cli/config.js +78 -0
  303. package/cli/diff.js +139 -0
  304. package/cli/doctor/checks/android.js +217 -0
  305. package/cli/doctor/checks/app.js +305 -0
  306. package/cli/doctor/checks/conflicts.js +42 -0
  307. package/cli/doctor/checks/devices.js +98 -0
  308. package/cli/doctor/checks/icons.js +69 -0
  309. package/cli/doctor/checks/ios.js +187 -0
  310. package/cli/doctor/checks/navigation.js +285 -0
  311. package/cli/doctor/checks/splash.js +102 -0
  312. package/cli/doctor/fix.js +66 -0
  313. package/cli/doctor/index.js +136 -0
  314. package/cli/doctor/types.js +30 -0
  315. package/cli/exec.js +34 -0
  316. package/cli/gradle.js +142 -0
  317. package/cli/icons/android.js +173 -0
  318. package/cli/icons/images.js +202 -0
  319. package/cli/icons/index.js +97 -0
  320. package/cli/icons/ios.js +113 -0
  321. package/cli/icons/settings.js +116 -0
  322. package/cli/images.js +67 -0
  323. package/cli/index.js +307 -0
  324. package/cli/info/index.js +290 -0
  325. package/cli/init/index.js +426 -0
  326. package/cli/init/packageManager.js +48 -0
  327. package/cli/init/starter.js +440 -0
  328. package/cli/links/files.js +109 -0
  329. package/cli/links/identity.js +75 -0
  330. package/cli/links/index.js +532 -0
  331. package/cli/links/native.js +396 -0
  332. package/cli/links/open.js +120 -0
  333. package/cli/links/prefixes.js +89 -0
  334. package/cli/mcp/appMap.js +128 -0
  335. package/cli/mcp/docs.js +175 -0
  336. package/cli/mcp/index.js +153 -0
  337. package/cli/mcp/markdown.js +210 -0
  338. package/cli/mcp/protocol.js +151 -0
  339. package/cli/mcp/tools.js +389 -0
  340. package/cli/migrate/entry.js +451 -0
  341. package/cli/migrate/index.js +305 -0
  342. package/cli/migrate/native.js +250 -0
  343. package/cli/migrate/report.js +238 -0
  344. package/cli/pods.js +56 -0
  345. package/cli/project.js +189 -0
  346. package/cli/screen/index.js +383 -0
  347. package/cli/screen/templates/compose.js +46 -0
  348. package/cli/screen/templates/native.js +40 -0
  349. package/cli/screen/templates/react.js +47 -0
  350. package/cli/screen/templates/swiftui.js +30 -0
  351. package/cli/screen/templates/uikit.js +48 -0
  352. package/cli/screen/templates/views.js +46 -0
  353. package/cli/setup/index.js +240 -0
  354. package/cli/setup/source.js +58 -0
  355. package/cli/setup/steps/app.js +76 -0
  356. package/cli/setup/steps/appDelegate.js +98 -0
  357. package/cli/setup/steps/entry.js +68 -0
  358. package/cli/setup/steps/env.js +245 -0
  359. package/cli/setup/steps/infoPlist.js +39 -0
  360. package/cli/setup/steps/mainActivity.js +60 -0
  361. package/cli/setup/steps/mainApplication.js +58 -0
  362. package/cli/setup/steps/manifest.js +38 -0
  363. package/cli/setup/steps/styles.js +29 -0
  364. package/cli/setup/steps/types.js +14 -0
  365. package/cli/splash/android.js +239 -0
  366. package/cli/splash/files.js +50 -0
  367. package/cli/splash/images.js +117 -0
  368. package/cli/splash/index.js +109 -0
  369. package/cli/splash/ios.js +349 -0
  370. package/cli/splash/settings.js +143 -0
  371. package/cli/typescript.js +473 -0
  372. package/cli/ui.js +268 -0
  373. package/cli/upgrade/changelog.js +45 -0
  374. package/cli/upgrade/index.js +347 -0
  375. package/cli/upgrade/versions.js +105 -0
  376. package/cli/workspace.js +60 -0
  377. package/cli/xcode/pbxproj.js +327 -0
  378. package/docs-md/architecture/errors-and-loading.md +138 -0
  379. package/docs-md/architecture/native-screens.md +290 -0
  380. package/docs-md/architecture/one-tree.md +164 -0
  381. package/docs-md/architecture/theme-and-context.md +368 -0
  382. package/docs-md/architecture/transitions.md +191 -0
  383. package/docs-md/containers/arrangement.md +320 -0
  384. package/docs-md/containers/modals.md +195 -0
  385. package/docs-md/containers/overlays.md +109 -0
  386. package/docs-md/containers/side-menu.md +138 -0
  387. package/docs-md/containers/split-view.md +155 -0
  388. package/docs-md/containers/stack.md +156 -0
  389. package/docs-md/containers/tabs.md +187 -0
  390. package/docs-md/flows/a-search-screen.md +311 -0
  391. package/docs-md/flows/an-app-with-tabs.md +380 -0
  392. package/docs-md/flows/bottom-sheets.md +326 -0
  393. package/docs-md/flows/forms-in-a-modal.md +420 -0
  394. package/docs-md/flows/list-and-details.md +428 -0
  395. package/docs-md/flows/onboarding.md +454 -0
  396. package/docs-md/flows/sign-in-and-sign-out.md +693 -0
  397. package/docs-md/fundamentals/lifecycle-and-events.md +224 -0
  398. package/docs-md/fundamentals/moving-between-screens.md +267 -0
  399. package/docs-md/fundamentals/screen-options.md +197 -0
  400. package/docs-md/fundamentals/screens-and-props.md +314 -0
  401. package/docs-md/fundamentals/starting-the-app.md +317 -0
  402. package/docs-md/fundamentals/switching-roots.md +166 -0
  403. package/docs-md/guides/analytics.md +377 -0
  404. package/docs-md/guides/app-context.md +554 -0
  405. package/docs-md/guides/building-a-screen.md +350 -0
  406. package/docs-md/guides/cli.md +421 -0
  407. package/docs-md/guides/data-fetching.md +492 -0
  408. package/docs-md/guides/deep-links.md +694 -0
  409. package/docs-md/guides/error-reporting.md +290 -0
  410. package/docs-md/guides/gestures-and-animations.md +381 -0
  411. package/docs-md/guides/notifications.md +548 -0
  412. package/docs-md/guides/overview.md +65 -0
  413. package/docs-md/guides/right-to-left.md +273 -0
  414. package/docs-md/guides/splash-screen.md +30 -0
  415. package/docs-md/guides/state-management.md +1050 -0
  416. package/docs-md/guides/testing.md +293 -0
  417. package/docs-md/help/glossary.md +433 -0
  418. package/docs-md/help/troubleshooting.md +709 -0
  419. package/docs-md/index.json +4205 -0
  420. package/docs-md/migration/from-expo-router.md +446 -0
  421. package/docs-md/migration/from-react-native-navigation.md +789 -0
  422. package/docs-md/migration/from-react-navigation.md +628 -0
  423. package/docs-md/screen-ui/back-and-gestures.md +178 -0
  424. package/docs-md/screen-ui/bar-buttons.md +312 -0
  425. package/docs-md/screen-ui/search.md +181 -0
  426. package/docs-md/screen-ui/system-ui.md +337 -0
  427. package/docs-md/screen-ui/toolbar-and-fab.md +146 -0
  428. package/docs-md/screen-ui/top-bar.md +247 -0
  429. package/docs-md/start/installation.md +233 -0
  430. package/docs-md/start/introduction.md +46 -0
  431. package/docs-md/start/quick-start.md +124 -0
  432. package/ios/Animations/ANNAnimationRules.h +72 -0
  433. package/ios/Animations/ANNAnimationRules.mm +122 -0
  434. package/ios/Animations/ANNFrameDriver.h +46 -0
  435. package/ios/Animations/ANNFrameDriver.mm +126 -0
  436. package/ios/Animations/ANNTransitionAnimator.h +34 -0
  437. package/ios/Animations/ANNTransitionAnimator.mm +293 -0
  438. package/ios/Animations/ANNTransitionPlan.h +115 -0
  439. package/ios/Animations/ANNTransitionPlan.mm +130 -0
  440. package/ios/Animations/ANNTransitionWait.h +29 -0
  441. package/ios/Animations/ANNTransitionWait.mm +135 -0
  442. package/ios/Animations/Elements/ANNElementFinder.h +26 -0
  443. package/ios/Animations/Elements/ANNElementFinder.mm +37 -0
  444. package/ios/Animations/Elements/ANNElementTransition.h +30 -0
  445. package/ios/Animations/Elements/ANNElementTransition.mm +75 -0
  446. package/ios/Animations/Elements/ANNSharedElementFlight.h +42 -0
  447. package/ios/Animations/Elements/ANNSharedElementFlight.mm +340 -0
  448. package/ios/Animations/Elements/ANNZoomAnchor.h +33 -0
  449. package/ios/Animations/Elements/ANNZoomAnchor.mm +133 -0
  450. package/ios/Animations/Interpolators/ANNCurve.h +61 -0
  451. package/ios/Animations/Interpolators/ANNCurve.mm +301 -0
  452. package/ios/Animations/Interpolators/ANNInterpolate.h +69 -0
  453. package/ios/Animations/Interpolators/ANNTrack.h +52 -0
  454. package/ios/Animations/Interpolators/ANNTrack.mm +77 -0
  455. package/ios/Animations/Interpolators/ANNViewTracks.h +57 -0
  456. package/ios/Animations/Interpolators/ANNViewTracks.mm +261 -0
  457. package/ios/ApexNavigation-prefix.h +6 -0
  458. package/ios/CLAUDE.md +151 -0
  459. package/ios/CORE.md +177 -0
  460. package/ios/Contract/ANNCommandAnswer.h +38 -0
  461. package/ios/Contract/ANNCommandAnswer.mm +99 -0
  462. package/ios/Contract/ANNCommandRunner.h +42 -0
  463. package/ios/Contract/ANNCommandRunner.mm +89 -0
  464. package/ios/Contract/ANNErrorTexts.h +86 -0
  465. package/ios/Contract/ANNErrorTexts.mm +230 -0
  466. package/ios/Contract/ANNLayoutNode.h +64 -0
  467. package/ios/Contract/ANNLayoutNode.mm +153 -0
  468. package/ios/Contract/ANNLayoutReader.h +34 -0
  469. package/ios/Contract/ANNLayoutReader.mm +282 -0
  470. package/ios/Contract/ANNLayoutRoot.h +26 -0
  471. package/ios/Contract/ANNLayoutRoot.mm +21 -0
  472. package/ios/Contract/ANNLayoutTreeOptions.h +22 -0
  473. package/ios/Contract/ANNLayoutTreeOptions.mm +32 -0
  474. package/ios/Contract/ANNLayoutType.h +44 -0
  475. package/ios/Contract/ANNLayoutValidator.h +23 -0
  476. package/ios/Contract/ANNLayoutValidator.mm +28 -0
  477. package/ios/Core/ANNAppDelegate.mm +122 -0
  478. package/ios/Core/ANNAppDirection.h +43 -0
  479. package/ios/Core/ANNAppDirection.mm +194 -0
  480. package/ios/Core/ANNAppearanceDispatcher.h +117 -0
  481. package/ios/Core/ANNAppearanceDispatcher.mm +433 -0
  482. package/ios/Core/ANNAssert.h +7 -0
  483. package/ios/Core/ANNDeepLinkQueue.h +35 -0
  484. package/ios/Core/ANNDeepLinkQueue.mm +136 -0
  485. package/ios/Core/ANNErrorHandler.h +17 -0
  486. package/ios/Core/ANNErrorHandler.mm +14 -0
  487. package/ios/Core/ANNEventEmitter.h +174 -0
  488. package/ios/Core/ANNEventEmitter.mm +337 -0
  489. package/ios/Core/ANNHinge.h +26 -0
  490. package/ios/Core/ANNHinge.mm +116 -0
  491. package/ios/Core/ANNKeyCommands.h +12 -0
  492. package/ios/Core/ANNKeyCommands.mm +74 -0
  493. package/ios/Core/ANNLayoutInfo.h +18 -0
  494. package/ios/Core/ANNLayoutInfo.mm +13 -0
  495. package/ios/Core/ANNLayoutProtocol.h +155 -0
  496. package/ios/Core/ANNNavigationState.h +38 -0
  497. package/ios/Core/ANNNavigationState.mm +127 -0
  498. package/ios/Core/ANNNodeHelper.h +114 -0
  499. package/ios/Core/ANNNodeHelper.mm +260 -0
  500. package/ios/Core/ANNNodePresenter.h +86 -0
  501. package/ios/Core/ANNNodePresenter.mm +92 -0
  502. package/ios/Core/ANNNodeRegistry.h +30 -0
  503. package/ios/Core/ANNNodeRegistry.mm +48 -0
  504. package/ios/Core/ANNOptionsRepaint.h +19 -0
  505. package/ios/Core/ANNOptionsRepaint.mm +59 -0
  506. package/ios/Core/ANNParking.h +34 -0
  507. package/ios/Core/ANNParking.mm +117 -0
  508. package/ios/Core/ANNPendingLayers.h +31 -0
  509. package/ios/Core/ANNPendingLayers.mm +57 -0
  510. package/ios/Core/ANNReloadCoordinator.h +26 -0
  511. package/ios/Core/ANNReloadCoordinator.mm +211 -0
  512. package/ios/Core/ANNRenderWait.h +105 -0
  513. package/ios/Core/ANNRenderWait.mm +496 -0
  514. package/ios/Core/ANNSceneDelegate.mm +92 -0
  515. package/ios/Core/ANNScreenAppearance+Internal.h +29 -0
  516. package/ios/Core/ANNScreenAppearance.h +60 -0
  517. package/ios/Core/ANNScreenAppearance.mm +44 -0
  518. package/ios/Core/ANNShownScreens.h +27 -0
  519. package/ios/Core/ANNShownScreens.mm +16 -0
  520. package/ios/Core/ANNSystemUI.h +95 -0
  521. package/ios/Core/ANNSystemUI.mm +401 -0
  522. package/ios/Core/ANNSystemUIRules.h +35 -0
  523. package/ios/Core/ANNSystemUIRules.mm +139 -0
  524. package/ios/Core/ANNUtils.h +35 -0
  525. package/ios/Core/ANNUtils.mm +111 -0
  526. package/ios/Core/ApexNavigation+Internal.h +26 -0
  527. package/ios/Core/ApexNavigation.mm +177 -0
  528. package/ios/Core/UIViewController+LayoutProtocol.h +102 -0
  529. package/ios/Core/UIViewController+LayoutProtocol.mm +253 -0
  530. package/ios/Layouts/Arrangement/ANNArrangementScreenDelegate.h +18 -0
  531. package/ios/Layouts/Arrangement/ANNArrangementState.h +30 -0
  532. package/ios/Layouts/Arrangement/ANNArrangementState.mm +53 -0
  533. package/ios/Layouts/Arrangement/ANNArrangementViewController.h +38 -0
  534. package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +573 -0
  535. package/ios/Layouts/External/ANNExternalViewController.h +28 -0
  536. package/ios/Layouts/External/ANNExternalViewController.mm +118 -0
  537. package/ios/Layouts/External/ANNNativeScreenCalls.h +27 -0
  538. package/ios/Layouts/External/ANNNativeScreenCalls.mm +77 -0
  539. package/ios/Layouts/Modal/ANNModal.h +121 -0
  540. package/ios/Layouts/Modal/ANNModal.mm +64 -0
  541. package/ios/Layouts/Modal/ANNModalCoordinator.h +99 -0
  542. package/ios/Layouts/Modal/ANNModalCoordinator.mm +1965 -0
  543. package/ios/Layouts/Modal/ANNModalHostViewComponentView.h +13 -0
  544. package/ios/Layouts/Modal/ANNModalHostViewComponentView.mm +24 -0
  545. package/ios/Layouts/Modal/ANNModalPresentation.h +73 -0
  546. package/ios/Layouts/Modal/ANNModalPresentation.mm +189 -0
  547. package/ios/Layouts/Modal/ANNModalSizePresenter.h +13 -0
  548. package/ios/Layouts/Modal/ANNModalSizePresenter.mm +65 -0
  549. package/ios/Layouts/Modal/ANNModalTransitions.h +29 -0
  550. package/ios/Layouts/Modal/ANNModalTransitions.mm +40 -0
  551. package/ios/Layouts/Modal/ANNPopoverPresenter.h +29 -0
  552. package/ios/Layouts/Modal/ANNPopoverPresenter.mm +158 -0
  553. package/ios/Layouts/Modal/ANNPresentationGate.h +52 -0
  554. package/ios/Layouts/Modal/ANNPresentationGate.mm +153 -0
  555. package/ios/Layouts/Modal/ANNSheetPresenter.h +31 -0
  556. package/ios/Layouts/Modal/ANNSheetPresenter.mm +247 -0
  557. package/ios/Layouts/Overlay/ANNOverlayCoordinator.h +66 -0
  558. package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +604 -0
  559. package/ios/Layouts/Overlay/ANNOverlayWindow.h +10 -0
  560. package/ios/Layouts/Overlay/ANNOverlayWindow.mm +71 -0
  561. package/ios/Layouts/Root/ANNLayoutFactory.h +31 -0
  562. package/ios/Layouts/Root/ANNLayoutFactory.mm +349 -0
  563. package/ios/Layouts/Root/ANNRootCoordinator.h +42 -0
  564. package/ios/Layouts/Root/ANNRootCoordinator.mm +847 -0
  565. package/ios/Layouts/Root/ANNSplashViewController.h +30 -0
  566. package/ios/Layouts/Root/ANNSplashViewController.mm +138 -0
  567. package/ios/Layouts/Screen/ANNComponentPresenter.h +32 -0
  568. package/ios/Layouts/Screen/ANNComponentPresenter.mm +136 -0
  569. package/ios/Layouts/Screen/ANNComponentViewController.h +100 -0
  570. package/ios/Layouts/Screen/ANNComponentViewController.mm +652 -0
  571. package/ios/Layouts/Screen/ANNNativeScreenContext+Internal.h +19 -0
  572. package/ios/Layouts/Screen/ANNNativeScreenContext.mm +84 -0
  573. package/ios/Layouts/Screen/ANNPreviewInteraction.h +38 -0
  574. package/ios/Layouts/Screen/ANNPreviewInteraction.mm +252 -0
  575. package/ios/Layouts/Screen/ANNScreenBars.h +29 -0
  576. package/ios/Layouts/Screen/ANNScreenBars.mm +47 -0
  577. package/ios/Layouts/Screen/ANNScreenInsets.h +30 -0
  578. package/ios/Layouts/Screen/ANNScreenInsets.mm +68 -0
  579. package/ios/Layouts/Screen/ANNScreenReadiness.h +92 -0
  580. package/ios/Layouts/Screen/ANNScreenReadiness.mm +186 -0
  581. package/ios/Layouts/Screen/ANNScreenRegions.h +33 -0
  582. package/ios/Layouts/Screen/ANNScreenRegions.mm +105 -0
  583. package/ios/Layouts/Screen/ANNScreenSafeArea.h +38 -0
  584. package/ios/Layouts/Screen/ANNScreenSafeArea.mm +58 -0
  585. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.h +41 -0
  586. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.mm +113 -0
  587. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.h +28 -0
  588. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.mm +260 -0
  589. package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +19 -0
  590. package/ios/Layouts/SideMenu/ANNSideMenuViewController.h +46 -0
  591. package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +891 -0
  592. package/ios/Layouts/SplitView/ANNSplitViewCommands.h +39 -0
  593. package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +612 -0
  594. package/ios/Layouts/SplitView/ANNSplitViewController.h +52 -0
  595. package/ios/Layouts/SplitView/ANNSplitViewController.mm +494 -0
  596. package/ios/Layouts/SplitView/ANNSplitViewPresenter.h +18 -0
  597. package/ios/Layouts/SplitView/ANNSplitViewPresenter.mm +181 -0
  598. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.h +32 -0
  599. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.mm +133 -0
  600. package/ios/Layouts/Stack/ANNPreviewPush.h +46 -0
  601. package/ios/Layouts/Stack/ANNPreviewPush.mm +298 -0
  602. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +32 -0
  603. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +92 -0
  604. package/ios/Layouts/Stack/ANNStackCommands.h +51 -0
  605. package/ios/Layouts/Stack/ANNStackCommands.mm +403 -0
  606. package/ios/Layouts/Stack/ANNStackController.h +161 -0
  607. package/ios/Layouts/Stack/ANNStackController.mm +1597 -0
  608. package/ios/Layouts/Stack/ANNStackPresenter.h +44 -0
  609. package/ios/Layouts/Stack/ANNStackPresenter.mm +181 -0
  610. package/ios/Layouts/Stack/ANNStackQueue.h +194 -0
  611. package/ios/Layouts/Stack/ANNStackQueue.mm +1300 -0
  612. package/ios/Layouts/Stack/InteractivePopGestureDelegate.h +53 -0
  613. package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +228 -0
  614. package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +19 -0
  615. package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +29 -0
  616. package/ios/Layouts/Tabs/ANNBottomTabCellView.h +33 -0
  617. package/ios/Layouts/Tabs/ANNBottomTabCellView.mm +100 -0
  618. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +49 -0
  619. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +153 -0
  620. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +17 -0
  621. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +56 -0
  622. package/ios/Layouts/Tabs/ANNBottomTabsController.h +121 -0
  623. package/ios/Layouts/Tabs/ANNBottomTabsController.mm +1404 -0
  624. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.h +47 -0
  625. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +280 -0
  626. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +81 -0
  627. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +1026 -0
  628. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.h +24 -0
  629. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.mm +58 -0
  630. package/ios/Layouts/Tabs/ANNScrollToTop.h +23 -0
  631. package/ios/Layouts/Tabs/ANNScrollToTop.mm +55 -0
  632. package/ios/Layouts/Tabs/ANNTabDotView.h +19 -0
  633. package/ios/Layouts/Tabs/ANNTabDotView.mm +46 -0
  634. package/ios/Layouts/Tabs/ANNTabLongPress.h +28 -0
  635. package/ios/Layouts/Tabs/ANNTabLongPress.mm +98 -0
  636. package/ios/Layouts/Tabs/ANNTabsDesign.h +26 -0
  637. package/ios/Layouts/Tabs/ANNTabsDesign.mm +34 -0
  638. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +27 -0
  639. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +55 -0
  640. package/ios/Layouts/Tabs/UITabBar+utils.h +24 -0
  641. package/ios/Layouts/Tabs/UITabBar+utils.mm +103 -0
  642. package/ios/Options/ANNAnimationOptions.h +22 -0
  643. package/ios/Options/ANNAnimationOptions.mm +16 -0
  644. package/ios/Options/ANNAnimationPropertyOptions.h +17 -0
  645. package/ios/Options/ANNAnimationPropertyOptions.mm +15 -0
  646. package/ios/Options/ANNBottomTabDotIndicatorOptions.h +14 -0
  647. package/ios/Options/ANNBottomTabDotIndicatorOptions.mm +13 -0
  648. package/ios/Options/ANNBottomTabOptions.h +51 -0
  649. package/ios/Options/ANNBottomTabOptions.mm +47 -0
  650. package/ios/Options/ANNBottomTabsAccessoryOptions.h +19 -0
  651. package/ios/Options/ANNBottomTabsAccessoryOptions.mm +25 -0
  652. package/ios/Options/ANNBottomTabsAnimationOptions.h +12 -0
  653. package/ios/Options/ANNBottomTabsAnimationOptions.mm +11 -0
  654. package/ios/Options/ANNBottomTabsCustomRowOptions.h +19 -0
  655. package/ios/Options/ANNBottomTabsCustomRowOptions.mm +17 -0
  656. package/ios/Options/ANNBottomTabsOptions.h +51 -0
  657. package/ios/Options/ANNBottomTabsOptions.mm +48 -0
  658. package/ios/Options/ANNBottomTabsShadowOptions.h +14 -0
  659. package/ios/Options/ANNBottomTabsShadowOptions.mm +13 -0
  660. package/ios/Options/ANNButtonComponentOptions.h +13 -0
  661. package/ios/Options/ANNButtonComponentOptions.mm +12 -0
  662. package/ios/Options/ANNButtonOptions.h +56 -0
  663. package/ios/Options/ANNButtonOptions.mm +53 -0
  664. package/ios/Options/ANNButtonsParser.h +13 -0
  665. package/ios/Options/ANNButtonsParser.mm +18 -0
  666. package/ios/Options/ANNComponentOptions.h +14 -0
  667. package/ios/Options/ANNComponentOptions.mm +12 -0
  668. package/ios/Options/ANNDefaultOptions.h +18 -0
  669. package/ios/Options/ANNDefaultOptions.mm +22 -0
  670. package/ios/Options/ANNElementAnimationOptions.h +18 -0
  671. package/ios/Options/ANNElementAnimationOptions.mm +15 -0
  672. package/ios/Options/ANNElementTransitionOptions.h +26 -0
  673. package/ios/Options/ANNElementTransitionOptions.mm +28 -0
  674. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.h +14 -0
  675. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.mm +12 -0
  676. package/ios/Options/ANNEnterExitScreenAnimationOptions.h +14 -0
  677. package/ios/Options/ANNEnterExitScreenAnimationOptions.mm +12 -0
  678. package/ios/Options/ANNEnterExitTopBarAnimationOptions.h +14 -0
  679. package/ios/Options/ANNEnterExitTopBarAnimationOptions.mm +12 -0
  680. package/ios/Options/ANNFabOptions.h +26 -0
  681. package/ios/Options/ANNFabOptions.mm +23 -0
  682. package/ios/Options/ANNFontOptions.h +24 -0
  683. package/ios/Options/ANNFontOptions.mm +65 -0
  684. package/ios/Options/ANNHardwareBackButtonOptions.h +15 -0
  685. package/ios/Options/ANNHardwareBackButtonOptions.mm +13 -0
  686. package/ios/Options/ANNIconBackgroundOptions.h +16 -0
  687. package/ios/Options/ANNIconBackgroundOptions.mm +15 -0
  688. package/ios/Options/ANNIconInsetsOptions.h +16 -0
  689. package/ios/Options/ANNIconInsetsOptions.mm +14 -0
  690. package/ios/Options/ANNInterpolationOptions.h +22 -0
  691. package/ios/Options/ANNInterpolationOptions.mm +22 -0
  692. package/ios/Options/ANNLayoutOptions.h +26 -0
  693. package/ios/Options/ANNLayoutOptions.mm +25 -0
  694. package/ios/Options/ANNMenuOptions.h +37 -0
  695. package/ios/Options/ANNMenuOptions.mm +136 -0
  696. package/ios/Options/ANNModalAnimationOptions.h +17 -0
  697. package/ios/Options/ANNModalAnimationOptions.mm +15 -0
  698. package/ios/Options/ANNModalContentSizeOptions.h +14 -0
  699. package/ios/Options/ANNModalContentSizeOptions.mm +15 -0
  700. package/ios/Options/ANNModalOptions.h +19 -0
  701. package/ios/Options/ANNModalOptions.mm +15 -0
  702. package/ios/Options/ANNNavigationBarOptions.h +14 -0
  703. package/ios/Options/ANNNavigationBarOptions.mm +13 -0
  704. package/ios/Options/ANNNavigationOptions.h +60 -0
  705. package/ios/Options/ANNNavigationOptions.mm +54 -0
  706. package/ios/Options/ANNOptionField.h +91 -0
  707. package/ios/Options/ANNOptionField.mm +173 -0
  708. package/ios/Options/ANNOptions.h +62 -0
  709. package/ios/Options/ANNOptions.mm +329 -0
  710. package/ios/Options/ANNOptionsCache.h +22 -0
  711. package/ios/Options/ANNOptionsCache.mm +17 -0
  712. package/ios/Options/ANNOptionsReader.h +33 -0
  713. package/ios/Options/ANNOptionsReader.mm +63 -0
  714. package/ios/Options/ANNOverlayOptions.h +14 -0
  715. package/ios/Options/ANNOverlayOptions.mm +12 -0
  716. package/ios/Options/ANNPopoverOptions.h +17 -0
  717. package/ios/Options/ANNPopoverOptions.mm +31 -0
  718. package/ios/Options/ANNPreviewOptions.h +17 -0
  719. package/ios/Options/ANNPreviewOptions.mm +15 -0
  720. package/ios/Options/ANNScreenAnimationOptions.h +13 -0
  721. package/ios/Options/ANNScreenAnimationOptions.mm +12 -0
  722. package/ios/Options/ANNScrollEdgeEffectOptions.h +20 -0
  723. package/ios/Options/ANNScrollEdgeEffectOptions.mm +16 -0
  724. package/ios/Options/ANNScrollEdgeOptions.h +14 -0
  725. package/ios/Options/ANNScrollEdgeOptions.mm +12 -0
  726. package/ios/Options/ANNSearchBarOptions.h +49 -0
  727. package/ios/Options/ANNSearchBarOptions.mm +41 -0
  728. package/ios/Options/ANNSearchScopeOptions.h +15 -0
  729. package/ios/Options/ANNSearchScopeOptions.mm +13 -0
  730. package/ios/Options/ANNSearchSuggestionOptions.h +19 -0
  731. package/ios/Options/ANNSearchSuggestionOptions.mm +16 -0
  732. package/ios/Options/ANNSearchTokenOptions.h +18 -0
  733. package/ios/Options/ANNSearchTokenOptions.mm +15 -0
  734. package/ios/Options/ANNSetStackRootAnimationOptions.h +12 -0
  735. package/ios/Options/ANNSetStackRootAnimationOptions.mm +11 -0
  736. package/ios/Options/ANNSharedElementTransitionOptions.h +17 -0
  737. package/ios/Options/ANNSharedElementTransitionOptions.mm +15 -0
  738. package/ios/Options/ANNSheetOptions.h +25 -0
  739. package/ios/Options/ANNSheetOptions.mm +41 -0
  740. package/ios/Options/ANNSideMenuOptions.h +19 -0
  741. package/ios/Options/ANNSideMenuOptions.mm +16 -0
  742. package/ios/Options/ANNSideMenuSideOptions.h +23 -0
  743. package/ios/Options/ANNSideMenuSideOptions.mm +20 -0
  744. package/ios/Options/ANNSplitViewColumnOptions.h +14 -0
  745. package/ios/Options/ANNSplitViewColumnOptions.mm +13 -0
  746. package/ios/Options/ANNSplitViewInspectorOptions.h +13 -0
  747. package/ios/Options/ANNSplitViewInspectorOptions.mm +9 -0
  748. package/ios/Options/ANNSplitViewOptions.h +29 -0
  749. package/ios/Options/ANNSplitViewOptions.mm +26 -0
  750. package/ios/Options/ANNStackAnimationOptions.h +23 -0
  751. package/ios/Options/ANNStackAnimationOptions.mm +20 -0
  752. package/ios/Options/ANNStackPushAnimationOptions.h +13 -0
  753. package/ios/Options/ANNStackPushAnimationOptions.mm +11 -0
  754. package/ios/Options/ANNStatusBarOptions.h +20 -0
  755. package/ios/Options/ANNStatusBarOptions.mm +18 -0
  756. package/ios/Options/ANNToolbarOptions.h +14 -0
  757. package/ios/Options/ANNToolbarOptions.mm +27 -0
  758. package/ios/Options/ANNTopBarAnimationOptions.h +12 -0
  759. package/ios/Options/ANNTopBarAnimationOptions.mm +11 -0
  760. package/ios/Options/ANNTopBarBackButtonOptions.h +31 -0
  761. package/ios/Options/ANNTopBarBackButtonOptions.mm +35 -0
  762. package/ios/Options/ANNTopBarBackgroundComponentOptions.h +13 -0
  763. package/ios/Options/ANNTopBarBackgroundComponentOptions.mm +11 -0
  764. package/ios/Options/ANNTopBarBackgroundOptions.h +17 -0
  765. package/ios/Options/ANNTopBarBackgroundOptions.mm +15 -0
  766. package/ios/Options/ANNTopBarLargeTitleOptions.h +19 -0
  767. package/ios/Options/ANNTopBarLargeTitleOptions.mm +15 -0
  768. package/ios/Options/ANNTopBarOptions.h +62 -0
  769. package/ios/Options/ANNTopBarOptions.mm +49 -0
  770. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.h +14 -0
  771. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.mm +12 -0
  772. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.h +19 -0
  773. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.mm +16 -0
  774. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.h +16 -0
  775. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.mm +12 -0
  776. package/ios/Options/ANNTopBarSubtitleOptions.h +18 -0
  777. package/ios/Options/ANNTopBarSubtitleOptions.mm +14 -0
  778. package/ios/Options/ANNTopBarTitleComponentOptions.h +15 -0
  779. package/ios/Options/ANNTopBarTitleComponentOptions.mm +12 -0
  780. package/ios/Options/ANNTopBarTitleDocumentOptions.h +12 -0
  781. package/ios/Options/ANNTopBarTitleDocumentOptions.mm +11 -0
  782. package/ios/Options/ANNTopBarTitleOptions.h +29 -0
  783. package/ios/Options/ANNTopBarTitleOptions.mm +21 -0
  784. package/ios/Options/ANNViewAnimationOptions.h +26 -0
  785. package/ios/Options/ANNViewAnimationOptions.mm +58 -0
  786. package/ios/Options/ANNWindowOptions.h +12 -0
  787. package/ios/Options/ANNWindowOptions.mm +9 -0
  788. package/ios/Options/ANNZoomTransitionOptions.h +13 -0
  789. package/ios/Options/ANNZoomTransitionOptions.mm +12 -0
  790. package/ios/Options/Params/ANNIntegerParam.h +14 -0
  791. package/ios/Options/Params/ANNIntegerParam.mm +13 -0
  792. package/ios/Options/Params/ANNParam.h +28 -0
  793. package/ios/Options/Params/ANNParam.mm +29 -0
  794. package/ios/Options/Params/Bool.h +17 -0
  795. package/ios/Options/Params/Bool.mm +17 -0
  796. package/ios/Options/Params/BoolParser.h +12 -0
  797. package/ios/Options/Params/BoolParser.mm +10 -0
  798. package/ios/Options/Params/Color.h +43 -0
  799. package/ios/Options/Params/Color.mm +65 -0
  800. package/ios/Options/Params/ColorParser.h +14 -0
  801. package/ios/Options/Params/ColorParser.mm +95 -0
  802. package/ios/Options/Params/Double.h +14 -0
  803. package/ios/Options/Params/Double.mm +13 -0
  804. package/ios/Options/Params/DoubleParser.h +16 -0
  805. package/ios/Options/Params/DoubleParser.mm +16 -0
  806. package/ios/Options/Params/Image.h +15 -0
  807. package/ios/Options/Params/Image.mm +13 -0
  808. package/ios/Options/Params/ImageParser.h +16 -0
  809. package/ios/Options/Params/ImageParser.mm +103 -0
  810. package/ios/Options/Params/Number.h +14 -0
  811. package/ios/Options/Params/Number.mm +13 -0
  812. package/ios/Options/Params/NumberParser.h +13 -0
  813. package/ios/Options/Params/NumberParser.mm +10 -0
  814. package/ios/Options/Params/Param.h +16 -0
  815. package/ios/Options/Params/Param.mm +13 -0
  816. package/ios/Options/Params/Text.h +17 -0
  817. package/ios/Options/Params/Text.mm +17 -0
  818. package/ios/Options/Params/TextParser.h +17 -0
  819. package/ios/Options/Params/TextParser.mm +17 -0
  820. package/ios/Package.swift +58 -0
  821. package/ios/Public/ApexNavigation/ANNAppDelegate.h +66 -0
  822. package/ios/Public/ApexNavigation/ANNSceneDelegate.h +19 -0
  823. package/ios/Public/ApexNavigation/ApexNavigation.h +92 -0
  824. package/ios/Public/module.modulemap +8 -0
  825. package/ios/RECIPES.md +41 -0
  826. package/ios/React/ANNComponentType.h +22 -0
  827. package/ios/React/ANNComponentViewCreator.h +18 -0
  828. package/ios/React/ANNReactComponentRegistry.h +53 -0
  829. package/ios/React/ANNReactComponentRegistry.mm +153 -0
  830. package/ios/React/ANNReactView.h +104 -0
  831. package/ios/React/ANNReactView.mm +374 -0
  832. package/ios/React/ANNReactViewCreator.h +20 -0
  833. package/ios/React/ANNReactViewCreator.mm +42 -0
  834. package/ios/React/ANNSafeAreaViewComponentView.h +13 -0
  835. package/ios/React/ANNSafeAreaViewComponentView.mm +153 -0
  836. package/ios/React/ANNSurfaceHostingView.h +17 -0
  837. package/ios/React/ANNSurfaceHostingView.mm +68 -0
  838. package/ios/React/Slots/ANNSlotComponentView.h +10 -0
  839. package/ios/React/Slots/ANNSlotComponentView.mm +122 -0
  840. package/ios/React/Slots/ANNSlotContainers.h +34 -0
  841. package/ios/React/Slots/ANNSlotContainers.mm +39 -0
  842. package/ios/React/Slots/ANNSlotContentView.h +12 -0
  843. package/ios/React/Slots/ANNSlotContentView.mm +18 -0
  844. package/ios/React/Slots/ANNSlotHost.h +29 -0
  845. package/ios/React/Slots/ANNSlotHost.mm +59 -0
  846. package/ios/React/Slots/ANNSlotScreenView.h +38 -0
  847. package/ios/React/Slots/ANNSlotScreenView.mm +254 -0
  848. package/ios/TopBar/ANNBackButtonPresenter.h +35 -0
  849. package/ios/TopBar/ANNBackButtonPresenter.mm +187 -0
  850. package/ios/TopBar/ANNBarAppearance.h +53 -0
  851. package/ios/TopBar/ANNBarAppearance.mm +278 -0
  852. package/ios/TopBar/ANNBarBackgroundComponent.h +46 -0
  853. package/ios/TopBar/ANNBarBackgroundComponent.mm +163 -0
  854. package/ios/TopBar/ANNBarButtonComponentView.h +30 -0
  855. package/ios/TopBar/ANNBarButtonComponentView.mm +110 -0
  856. package/ios/TopBar/ANNBarButtons.h +65 -0
  857. package/ios/TopBar/ANNBarButtons.mm +1125 -0
  858. package/ios/TopBar/ANNBarComponentsWait.h +37 -0
  859. package/ios/TopBar/ANNBarComponentsWait.mm +116 -0
  860. package/ios/TopBar/ANNIconButtonImage.h +25 -0
  861. package/ios/TopBar/ANNIconButtonImage.mm +94 -0
  862. package/ios/TopBar/ANNLargeTitlePresenter.h +117 -0
  863. package/ios/TopBar/ANNLargeTitlePresenter.mm +402 -0
  864. package/ios/TopBar/ANNMainList.h +28 -0
  865. package/ios/TopBar/ANNMainList.mm +72 -0
  866. package/ios/TopBar/ANNScrollEdgeEffects.h +29 -0
  867. package/ios/TopBar/ANNScrollEdgeEffects.mm +122 -0
  868. package/ios/TopBar/ANNSearchPresenter.h +29 -0
  869. package/ios/TopBar/ANNSearchPresenter.mm +637 -0
  870. package/ios/TopBar/ANNSearchResultsViewController.h +16 -0
  871. package/ios/TopBar/ANNSearchResultsViewController.mm +56 -0
  872. package/ios/TopBar/ANNShowTextButton.h +22 -0
  873. package/ios/TopBar/ANNShowTextButton.mm +63 -0
  874. package/ios/TopBar/ANNTitleComponentView.h +37 -0
  875. package/ios/TopBar/ANNTitleComponentView.mm +86 -0
  876. package/ios/TopBar/ANNTitleGlassView.h +33 -0
  877. package/ios/TopBar/ANNTitleGlassView.mm +126 -0
  878. package/ios/TopBar/ANNTitleView.h +18 -0
  879. package/ios/TopBar/ANNTitleView.mm +63 -0
  880. package/ios/TopBar/ANNToolbarPresenter.h +26 -0
  881. package/ios/TopBar/ANNToolbarPresenter.mm +24 -0
  882. package/ios/TopBar/ANNTopBarPresenter.h +120 -0
  883. package/ios/TopBar/ANNTopBarPresenter.mm +1252 -0
  884. package/ios/TopBar/ANNUIBarButtonItem.h +16 -0
  885. package/ios/TopBar/ANNUIBarButtonItem.mm +5 -0
  886. package/ios/TurboModules/ANNTurboEventEmitter.h +31 -0
  887. package/ios/TurboModules/ANNTurboEventEmitter.mm +129 -0
  888. package/ios/TurboModules/ANNTurboModule.h +11 -0
  889. package/ios/TurboModules/ANNTurboModule.mm +626 -0
  890. package/ios/Utils/UIColor+ANNLuminance.h +13 -0
  891. package/ios/Utils/UIColor+ANNLuminance.mm +32 -0
  892. package/ios/Utils/UIView+Utils.h +12 -0
  893. package/ios/Utils/UIView+Utils.mm +21 -0
  894. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewComponentDescriptor.h +19 -0
  895. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewShadowNode.h +60 -0
  896. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewState.h +33 -0
  897. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotComponentDescriptor.h +22 -0
  898. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotShadowNode.h +87 -0
  899. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +101 -0
  900. package/lib/module/ARCHITECTURE.md +289 -0
  901. package/lib/module/adapters/NativeANNTurboEventEmitter.js +12 -0
  902. package/lib/module/adapters/NativeANNTurboEventEmitter.js.map +1 -0
  903. package/lib/module/adapters/NativeANNTurboModule.js +13 -0
  904. package/lib/module/adapters/NativeANNTurboModule.js.map +1 -0
  905. package/lib/module/api/app/AppRegistry.js +52 -0
  906. package/lib/module/api/app/AppRegistry.js.map +1 -0
  907. package/lib/module/api/app/activeApp.js +12 -0
  908. package/lib/module/api/app/activeApp.js.map +1 -0
  909. package/lib/module/api/app/createNavigation.js +365 -0
  910. package/lib/module/api/app/createNavigation.js.map +1 -0
  911. package/lib/module/api/app/roots.js +20 -0
  912. package/lib/module/api/app/roots.js.map +1 -0
  913. package/lib/module/api/app/splash.js +124 -0
  914. package/lib/module/api/app/splash.js.map +1 -0
  915. package/lib/module/api/app/startFailure.js +38 -0
  916. package/lib/module/api/app/startFailure.js.map +1 -0
  917. package/lib/module/api/arrangement/arrangementState.js +86 -0
  918. package/lib/module/api/arrangement/arrangementState.js.map +1 -0
  919. package/lib/module/api/commands/commands.js +375 -0
  920. package/lib/module/api/commands/commands.js.map +1 -0
  921. package/lib/module/api/commands/errors.js +94 -0
  922. package/lib/module/api/commands/errors.js.map +1 -0
  923. package/lib/module/api/commands/presentation.js +4 -0
  924. package/lib/module/api/commands/presentation.js.map +1 -0
  925. package/lib/module/api/commands/sideMenus.js +134 -0
  926. package/lib/module/api/commands/sideMenus.js.map +1 -0
  927. package/lib/module/api/commands/transitions.js +245 -0
  928. package/lib/module/api/commands/transitions.js.map +1 -0
  929. package/lib/module/api/context/appContext.js +22 -0
  930. package/lib/module/api/context/appContext.js.map +1 -0
  931. package/lib/module/api/events/navigationEvents.js +69 -0
  932. package/lib/module/api/events/navigationEvents.js.map +1 -0
  933. package/lib/module/api/events/screenLifecycle.js +30 -0
  934. package/lib/module/api/events/screenLifecycle.js.map +1 -0
  935. package/lib/module/api/events/tabPresses.js +32 -0
  936. package/lib/module/api/events/tabPresses.js.map +1 -0
  937. package/lib/module/api/hinge/hinge.js +73 -0
  938. package/lib/module/api/hinge/hinge.js.map +1 -0
  939. package/lib/module/api/hooks/appHooks.js +26 -0
  940. package/lib/module/api/hooks/appHooks.js.map +1 -0
  941. package/lib/module/api/hooks/screenHooks.js +250 -0
  942. package/lib/module/api/hooks/screenHooks.js.map +1 -0
  943. package/lib/module/api/hooks/useArrangement.js +24 -0
  944. package/lib/module/api/hooks/useArrangement.js.map +1 -0
  945. package/lib/module/api/hooks/useHinge.js +29 -0
  946. package/lib/module/api/hooks/useHinge.js.map +1 -0
  947. package/lib/module/api/hooks/useNavigation.js +117 -0
  948. package/lib/module/api/hooks/useNavigation.js.map +1 -0
  949. package/lib/module/api/hooks/usePendingLink.js +12 -0
  950. package/lib/module/api/hooks/usePendingLink.js.map +1 -0
  951. package/lib/module/api/hooks/usePreview.js +97 -0
  952. package/lib/module/api/hooks/usePreview.js.map +1 -0
  953. package/lib/module/api/hooks/useReservedRegions.js +24 -0
  954. package/lib/module/api/hooks/useReservedRegions.js.map +1 -0
  955. package/lib/module/api/hooks/useSafeAreaInsets.js +25 -0
  956. package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -0
  957. package/lib/module/api/index.js +26 -0
  958. package/lib/module/api/index.js.map +1 -0
  959. package/lib/module/api/layout/Root.js +121 -0
  960. package/lib/module/api/layout/Root.js.map +1 -0
  961. package/lib/module/api/layout/Screen.js +52 -0
  962. package/lib/module/api/layout/Screen.js.map +1 -0
  963. package/lib/module/api/layout/SideMenu.js +85 -0
  964. package/lib/module/api/layout/SideMenu.js.map +1 -0
  965. package/lib/module/api/layout/SplitView.js +137 -0
  966. package/lib/module/api/layout/SplitView.js.map +1 -0
  967. package/lib/module/api/layout/Stack.js +36 -0
  968. package/lib/module/api/layout/Stack.js.map +1 -0
  969. package/lib/module/api/layout/Tabs.js +326 -0
  970. package/lib/module/api/layout/Tabs.js.map +1 -0
  971. package/lib/module/api/layout/element.js +100 -0
  972. package/lib/module/api/layout/element.js.map +1 -0
  973. package/lib/module/api/linking/linkPaths.js +132 -0
  974. package/lib/module/api/linking/linkPaths.js.map +1 -0
  975. package/lib/module/api/linking/linking.js +244 -0
  976. package/lib/module/api/linking/linking.js.map +1 -0
  977. package/lib/module/api/linking/pendingLinks.js +34 -0
  978. package/lib/module/api/linking/pendingLinks.js.map +1 -0
  979. package/lib/module/api/linking/types.js +4 -0
  980. package/lib/module/api/linking/types.js.map +1 -0
  981. package/lib/module/api/navigation.js +105 -0
  982. package/lib/module/api/navigation.js.map +1 -0
  983. package/lib/module/api/options/OptionsChain.js +158 -0
  984. package/lib/module/api/options/OptionsChain.js.map +1 -0
  985. package/lib/module/api/options/ScreenOptions.js +83 -0
  986. package/lib/module/api/options/ScreenOptions.js.map +1 -0
  987. package/lib/module/api/options/buttons.js +4 -0
  988. package/lib/module/api/options/buttons.js.map +1 -0
  989. package/lib/module/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  990. package/lib/module/api/safeArea/screenInsets.js +86 -0
  991. package/lib/module/api/safeArea/screenInsets.js.map +1 -0
  992. package/lib/module/api/safeArea/screenRegions.js +84 -0
  993. package/lib/module/api/safeArea/screenRegions.js.map +1 -0
  994. package/lib/module/api/screens/ScreenBoundary.js +44 -0
  995. package/lib/module/api/screens/ScreenBoundary.js.map +1 -0
  996. package/lib/module/api/screens/arrangement.js +63 -0
  997. package/lib/module/api/screens/arrangement.js.map +1 -0
  998. package/lib/module/api/screens/defineScreen.js +29 -0
  999. package/lib/module/api/screens/defineScreen.js.map +1 -0
  1000. package/lib/module/api/screens/nativeScreenCalls.js +34 -0
  1001. package/lib/module/api/screens/nativeScreenCalls.js.map +1 -0
  1002. package/lib/module/api/screens/nativeScreens.js +43 -0
  1003. package/lib/module/api/screens/nativeScreens.js.map +1 -0
  1004. package/lib/module/api/screens/registerScreens.js +305 -0
  1005. package/lib/module/api/screens/registerScreens.js.map +1 -0
  1006. package/lib/module/api/slots/ANNSlotNativeComponent.ts +23 -0
  1007. package/lib/module/api/slots/SlotHost.js +92 -0
  1008. package/lib/module/api/slots/SlotHost.js.map +1 -0
  1009. package/lib/module/api/state/navigationState.js +98 -0
  1010. package/lib/module/api/state/navigationState.js.map +1 -0
  1011. package/lib/module/api/testIDs.js +14 -0
  1012. package/lib/module/api/testIDs.js.map +1 -0
  1013. package/lib/module/api/theme/theme.js +180 -0
  1014. package/lib/module/api/theme/theme.js.map +1 -0
  1015. package/lib/module/api/types.js +4 -0
  1016. package/lib/module/api/types.js.map +1 -0
  1017. package/lib/module/engine/backListeners.js +39 -0
  1018. package/lib/module/engine/backListeners.js.map +1 -0
  1019. package/lib/module/engine/buttons.js +105 -0
  1020. package/lib/module/engine/buttons.js.map +1 -0
  1021. package/lib/module/engine/commands.js +388 -0
  1022. package/lib/module/engine/commands.js.map +1 -0
  1023. package/lib/module/engine/events.js +30 -0
  1024. package/lib/module/engine/events.js.map +1 -0
  1025. package/lib/module/engine/ids.js +10 -0
  1026. package/lib/module/engine/ids.js.map +1 -0
  1027. package/lib/module/engine/launchState.js +34 -0
  1028. package/lib/module/engine/launchState.js.map +1 -0
  1029. package/lib/module/engine/layout.js +202 -0
  1030. package/lib/module/engine/layout.js.map +1 -0
  1031. package/lib/module/engine/mergeOptions.js +23 -0
  1032. package/lib/module/engine/mergeOptions.js.map +1 -0
  1033. package/lib/module/engine/native.js +45 -0
  1034. package/lib/module/engine/native.js.map +1 -0
  1035. package/lib/module/engine/nativeScreens.js +265 -0
  1036. package/lib/module/engine/nativeScreens.js.map +1 -0
  1037. package/lib/module/engine/options.js +170 -0
  1038. package/lib/module/engine/options.js.map +1 -0
  1039. package/lib/module/engine/places.js +178 -0
  1040. package/lib/module/engine/places.js.map +1 -0
  1041. package/lib/module/engine/props.js +44 -0
  1042. package/lib/module/engine/props.js.map +1 -0
  1043. package/lib/module/engine/reactMeasures.js +23 -0
  1044. package/lib/module/engine/reactMeasures.js.map +1 -0
  1045. package/lib/module/engine/rememberedOptions.js +118 -0
  1046. package/lib/module/engine/rememberedOptions.js.map +1 -0
  1047. package/lib/module/engine/screens.js +194 -0
  1048. package/lib/module/engine/screens.js.map +1 -0
  1049. package/lib/module/engine/slots.js +200 -0
  1050. package/lib/module/engine/slots.js.map +1 -0
  1051. package/lib/module/engine/tabs.js +79 -0
  1052. package/lib/module/engine/tabs.js.map +1 -0
  1053. package/lib/module/index.js +5 -0
  1054. package/lib/module/index.js.map +1 -0
  1055. package/lib/module/interfaces/ComponentEvents.js +2 -0
  1056. package/lib/module/interfaces/ComponentEvents.js.map +1 -0
  1057. package/lib/module/interfaces/Events.js +2 -0
  1058. package/lib/module/interfaces/Events.js.map +1 -0
  1059. package/lib/module/interfaces/Layout.js +4 -0
  1060. package/lib/module/interfaces/Layout.js.map +1 -0
  1061. package/lib/module/interfaces/Options.js +4 -0
  1062. package/lib/module/interfaces/Options.js.map +1 -0
  1063. package/lib/module/interfaces/options/animations.js +2 -0
  1064. package/lib/module/interfaces/options/animations.js.map +1 -0
  1065. package/lib/module/interfaces/options/bottomTabs.js +4 -0
  1066. package/lib/module/interfaces/options/bottomTabs.js.map +1 -0
  1067. package/lib/module/interfaces/options/buttons.js +4 -0
  1068. package/lib/module/interfaces/options/buttons.js.map +1 -0
  1069. package/lib/module/interfaces/options/common.js +4 -0
  1070. package/lib/module/interfaces/options/common.js.map +1 -0
  1071. package/lib/module/interfaces/options/modals.js +2 -0
  1072. package/lib/module/interfaces/options/modals.js.map +1 -0
  1073. package/lib/module/interfaces/options/preview.js +2 -0
  1074. package/lib/module/interfaces/options/preview.js.map +1 -0
  1075. package/lib/module/interfaces/options/sideMenu.js +2 -0
  1076. package/lib/module/interfaces/options/sideMenu.js.map +1 -0
  1077. package/lib/module/interfaces/options/splitView.js +2 -0
  1078. package/lib/module/interfaces/options/splitView.js.map +1 -0
  1079. package/lib/module/interfaces/options/stack.js +4 -0
  1080. package/lib/module/interfaces/options/stack.js.map +1 -0
  1081. package/lib/module/interfaces/options/system.js +4 -0
  1082. package/lib/module/interfaces/options/system.js.map +1 -0
  1083. package/lib/module/interfaces/options/toolbar.js +4 -0
  1084. package/lib/module/interfaces/options/toolbar.js.map +1 -0
  1085. package/lib/module/interfaces/options/topBar.js +4 -0
  1086. package/lib/module/interfaces/options/topBar.js.map +1 -0
  1087. package/lib/module/package.json +1 -0
  1088. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts +14 -0
  1089. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts.map +1 -0
  1090. package/lib/typescript/adapters/NativeANNTurboModule.d.ts +77 -0
  1091. package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -0
  1092. package/lib/typescript/api/app/AppRegistry.d.ts +14 -0
  1093. package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -0
  1094. package/lib/typescript/api/app/activeApp.d.ts +12 -0
  1095. package/lib/typescript/api/app/activeApp.d.ts.map +1 -0
  1096. package/lib/typescript/api/app/createNavigation.d.ts +182 -0
  1097. package/lib/typescript/api/app/createNavigation.d.ts.map +1 -0
  1098. package/lib/typescript/api/app/roots.d.ts +15 -0
  1099. package/lib/typescript/api/app/roots.d.ts.map +1 -0
  1100. package/lib/typescript/api/app/splash.d.ts +81 -0
  1101. package/lib/typescript/api/app/splash.d.ts.map +1 -0
  1102. package/lib/typescript/api/app/startFailure.d.ts +15 -0
  1103. package/lib/typescript/api/app/startFailure.d.ts.map +1 -0
  1104. package/lib/typescript/api/arrangement/arrangementState.d.ts +21 -0
  1105. package/lib/typescript/api/arrangement/arrangementState.d.ts.map +1 -0
  1106. package/lib/typescript/api/commands/commands.d.ts +57 -0
  1107. package/lib/typescript/api/commands/commands.d.ts.map +1 -0
  1108. package/lib/typescript/api/commands/errors.d.ts +24 -0
  1109. package/lib/typescript/api/commands/errors.d.ts.map +1 -0
  1110. package/lib/typescript/api/commands/presentation.d.ts +69 -0
  1111. package/lib/typescript/api/commands/presentation.d.ts.map +1 -0
  1112. package/lib/typescript/api/commands/sideMenus.d.ts +14 -0
  1113. package/lib/typescript/api/commands/sideMenus.d.ts.map +1 -0
  1114. package/lib/typescript/api/commands/transitions.d.ts +33 -0
  1115. package/lib/typescript/api/commands/transitions.d.ts.map +1 -0
  1116. package/lib/typescript/api/context/appContext.d.ts +4 -0
  1117. package/lib/typescript/api/context/appContext.d.ts.map +1 -0
  1118. package/lib/typescript/api/events/navigationEvents.d.ts +70 -0
  1119. package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -0
  1120. package/lib/typescript/api/events/screenLifecycle.d.ts +5 -0
  1121. package/lib/typescript/api/events/screenLifecycle.d.ts.map +1 -0
  1122. package/lib/typescript/api/events/tabPresses.d.ts +5 -0
  1123. package/lib/typescript/api/events/tabPresses.d.ts.map +1 -0
  1124. package/lib/typescript/api/hinge/hinge.d.ts +21 -0
  1125. package/lib/typescript/api/hinge/hinge.d.ts.map +1 -0
  1126. package/lib/typescript/api/hooks/appHooks.d.ts +15 -0
  1127. package/lib/typescript/api/hooks/appHooks.d.ts.map +1 -0
  1128. package/lib/typescript/api/hooks/screenHooks.d.ts +74 -0
  1129. package/lib/typescript/api/hooks/screenHooks.d.ts.map +1 -0
  1130. package/lib/typescript/api/hooks/useArrangement.d.ts +13 -0
  1131. package/lib/typescript/api/hooks/useArrangement.d.ts.map +1 -0
  1132. package/lib/typescript/api/hooks/useHinge.d.ts +16 -0
  1133. package/lib/typescript/api/hooks/useHinge.d.ts.map +1 -0
  1134. package/lib/typescript/api/hooks/useNavigation.d.ts +108 -0
  1135. package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -0
  1136. package/lib/typescript/api/hooks/usePendingLink.d.ts +7 -0
  1137. package/lib/typescript/api/hooks/usePendingLink.d.ts.map +1 -0
  1138. package/lib/typescript/api/hooks/usePreview.d.ts +29 -0
  1139. package/lib/typescript/api/hooks/usePreview.d.ts.map +1 -0
  1140. package/lib/typescript/api/hooks/useReservedRegions.d.ts +13 -0
  1141. package/lib/typescript/api/hooks/useReservedRegions.d.ts.map +1 -0
  1142. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +14 -0
  1143. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -0
  1144. package/lib/typescript/api/index.d.ts +60 -0
  1145. package/lib/typescript/api/index.d.ts.map +1 -0
  1146. package/lib/typescript/api/layout/Root.d.ts +47 -0
  1147. package/lib/typescript/api/layout/Root.d.ts.map +1 -0
  1148. package/lib/typescript/api/layout/Screen.d.ts +32 -0
  1149. package/lib/typescript/api/layout/Screen.d.ts.map +1 -0
  1150. package/lib/typescript/api/layout/SideMenu.d.ts +33 -0
  1151. package/lib/typescript/api/layout/SideMenu.d.ts.map +1 -0
  1152. package/lib/typescript/api/layout/SplitView.d.ts +48 -0
  1153. package/lib/typescript/api/layout/SplitView.d.ts.map +1 -0
  1154. package/lib/typescript/api/layout/Stack.d.ts +21 -0
  1155. package/lib/typescript/api/layout/Stack.d.ts.map +1 -0
  1156. package/lib/typescript/api/layout/Tabs.d.ts +120 -0
  1157. package/lib/typescript/api/layout/Tabs.d.ts.map +1 -0
  1158. package/lib/typescript/api/layout/element.d.ts +52 -0
  1159. package/lib/typescript/api/layout/element.d.ts.map +1 -0
  1160. package/lib/typescript/api/linking/linkPaths.d.ts +31 -0
  1161. package/lib/typescript/api/linking/linkPaths.d.ts.map +1 -0
  1162. package/lib/typescript/api/linking/linking.d.ts +37 -0
  1163. package/lib/typescript/api/linking/linking.d.ts.map +1 -0
  1164. package/lib/typescript/api/linking/pendingLinks.d.ts +8 -0
  1165. package/lib/typescript/api/linking/pendingLinks.d.ts.map +1 -0
  1166. package/lib/typescript/api/linking/types.d.ts +105 -0
  1167. package/lib/typescript/api/linking/types.d.ts.map +1 -0
  1168. package/lib/typescript/api/navigation.d.ts +115 -0
  1169. package/lib/typescript/api/navigation.d.ts.map +1 -0
  1170. package/lib/typescript/api/options/OptionsChain.d.ts +47 -0
  1171. package/lib/typescript/api/options/OptionsChain.d.ts.map +1 -0
  1172. package/lib/typescript/api/options/ScreenOptions.d.ts +32 -0
  1173. package/lib/typescript/api/options/ScreenOptions.d.ts.map +1 -0
  1174. package/lib/typescript/api/options/buttons.d.ts +35 -0
  1175. package/lib/typescript/api/options/buttons.d.ts.map +1 -0
  1176. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts +20 -0
  1177. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts.map +1 -0
  1178. package/lib/typescript/api/safeArea/screenInsets.d.ts +20 -0
  1179. package/lib/typescript/api/safeArea/screenInsets.d.ts.map +1 -0
  1180. package/lib/typescript/api/safeArea/screenRegions.d.ts +24 -0
  1181. package/lib/typescript/api/safeArea/screenRegions.d.ts.map +1 -0
  1182. package/lib/typescript/api/screens/ScreenBoundary.d.ts +34 -0
  1183. package/lib/typescript/api/screens/ScreenBoundary.d.ts.map +1 -0
  1184. package/lib/typescript/api/screens/arrangement.d.ts +70 -0
  1185. package/lib/typescript/api/screens/arrangement.d.ts.map +1 -0
  1186. package/lib/typescript/api/screens/defineScreen.d.ts +41 -0
  1187. package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -0
  1188. package/lib/typescript/api/screens/nativeScreenCalls.d.ts +3 -0
  1189. package/lib/typescript/api/screens/nativeScreenCalls.d.ts.map +1 -0
  1190. package/lib/typescript/api/screens/nativeScreens.d.ts +47 -0
  1191. package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -0
  1192. package/lib/typescript/api/screens/registerScreens.d.ts +61 -0
  1193. package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -0
  1194. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts +15 -0
  1195. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts.map +1 -0
  1196. package/lib/typescript/api/slots/SlotHost.d.ts +8 -0
  1197. package/lib/typescript/api/slots/SlotHost.d.ts.map +1 -0
  1198. package/lib/typescript/api/state/navigationState.d.ts +26 -0
  1199. package/lib/typescript/api/state/navigationState.d.ts.map +1 -0
  1200. package/lib/typescript/api/testIDs.d.ts +12 -0
  1201. package/lib/typescript/api/testIDs.d.ts.map +1 -0
  1202. package/lib/typescript/api/theme/theme.d.ts +70 -0
  1203. package/lib/typescript/api/theme/theme.d.ts.map +1 -0
  1204. package/lib/typescript/api/types.d.ts +64 -0
  1205. package/lib/typescript/api/types.d.ts.map +1 -0
  1206. package/lib/typescript/engine/backListeners.d.ts +8 -0
  1207. package/lib/typescript/engine/backListeners.d.ts.map +1 -0
  1208. package/lib/typescript/engine/buttons.d.ts +11 -0
  1209. package/lib/typescript/engine/buttons.d.ts.map +1 -0
  1210. package/lib/typescript/engine/commands.d.ts +38 -0
  1211. package/lib/typescript/engine/commands.d.ts.map +1 -0
  1212. package/lib/typescript/engine/events.d.ts +17 -0
  1213. package/lib/typescript/engine/events.d.ts.map +1 -0
  1214. package/lib/typescript/engine/ids.d.ts +3 -0
  1215. package/lib/typescript/engine/ids.d.ts.map +1 -0
  1216. package/lib/typescript/engine/launchState.d.ts +25 -0
  1217. package/lib/typescript/engine/launchState.d.ts.map +1 -0
  1218. package/lib/typescript/engine/layout.d.ts +32 -0
  1219. package/lib/typescript/engine/layout.d.ts.map +1 -0
  1220. package/lib/typescript/engine/mergeOptions.d.ts +6 -0
  1221. package/lib/typescript/engine/mergeOptions.d.ts.map +1 -0
  1222. package/lib/typescript/engine/native.d.ts +22 -0
  1223. package/lib/typescript/engine/native.d.ts.map +1 -0
  1224. package/lib/typescript/engine/nativeScreens.d.ts +49 -0
  1225. package/lib/typescript/engine/nativeScreens.d.ts.map +1 -0
  1226. package/lib/typescript/engine/options.d.ts +12 -0
  1227. package/lib/typescript/engine/options.d.ts.map +1 -0
  1228. package/lib/typescript/engine/places.d.ts +57 -0
  1229. package/lib/typescript/engine/places.d.ts.map +1 -0
  1230. package/lib/typescript/engine/props.d.ts +10 -0
  1231. package/lib/typescript/engine/props.d.ts.map +1 -0
  1232. package/lib/typescript/engine/reactMeasures.d.ts +3 -0
  1233. package/lib/typescript/engine/reactMeasures.d.ts.map +1 -0
  1234. package/lib/typescript/engine/rememberedOptions.d.ts +28 -0
  1235. package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -0
  1236. package/lib/typescript/engine/screens.d.ts +90 -0
  1237. package/lib/typescript/engine/screens.d.ts.map +1 -0
  1238. package/lib/typescript/engine/slots.d.ts +71 -0
  1239. package/lib/typescript/engine/slots.d.ts.map +1 -0
  1240. package/lib/typescript/engine/tabs.d.ts +24 -0
  1241. package/lib/typescript/engine/tabs.d.ts.map +1 -0
  1242. package/lib/typescript/index.d.ts +3 -0
  1243. package/lib/typescript/index.d.ts.map +1 -0
  1244. package/lib/typescript/interfaces/ComponentEvents.d.ts +189 -0
  1245. package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -0
  1246. package/lib/typescript/interfaces/Events.d.ts +199 -0
  1247. package/lib/typescript/interfaces/Events.d.ts.map +1 -0
  1248. package/lib/typescript/interfaces/Layout.d.ts +150 -0
  1249. package/lib/typescript/interfaces/Layout.d.ts.map +1 -0
  1250. package/lib/typescript/interfaces/Options.d.ts +93 -0
  1251. package/lib/typescript/interfaces/Options.d.ts.map +1 -0
  1252. package/lib/typescript/interfaces/options/animations.d.ts +452 -0
  1253. package/lib/typescript/interfaces/options/animations.d.ts.map +1 -0
  1254. package/lib/typescript/interfaces/options/bottomTabs.d.ts +462 -0
  1255. package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -0
  1256. package/lib/typescript/interfaces/options/buttons.d.ts +331 -0
  1257. package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -0
  1258. package/lib/typescript/interfaces/options/common.d.ts +51 -0
  1259. package/lib/typescript/interfaces/options/common.d.ts.map +1 -0
  1260. package/lib/typescript/interfaces/options/modals.d.ts +202 -0
  1261. package/lib/typescript/interfaces/options/modals.d.ts.map +1 -0
  1262. package/lib/typescript/interfaces/options/preview.d.ts +40 -0
  1263. package/lib/typescript/interfaces/options/preview.d.ts.map +1 -0
  1264. package/lib/typescript/interfaces/options/sideMenu.d.ts +130 -0
  1265. package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -0
  1266. package/lib/typescript/interfaces/options/splitView.d.ts +118 -0
  1267. package/lib/typescript/interfaces/options/splitView.d.ts.map +1 -0
  1268. package/lib/typescript/interfaces/options/stack.d.ts +109 -0
  1269. package/lib/typescript/interfaces/options/stack.d.ts.map +1 -0
  1270. package/lib/typescript/interfaces/options/system.d.ts +238 -0
  1271. package/lib/typescript/interfaces/options/system.d.ts.map +1 -0
  1272. package/lib/typescript/interfaces/options/toolbar.d.ts +45 -0
  1273. package/lib/typescript/interfaces/options/toolbar.d.ts.map +1 -0
  1274. package/lib/typescript/interfaces/options/topBar.d.ts +804 -0
  1275. package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -0
  1276. package/lib/typescript/package.json +1 -0
  1277. package/package.json +166 -4
  1278. package/react-native.config.js +22 -0
  1279. package/src/ARCHITECTURE.md +289 -0
  1280. package/src/adapters/NativeANNTurboEventEmitter.ts +15 -0
  1281. package/src/adapters/NativeANNTurboModule.ts +100 -0
  1282. package/src/api/app/AppRegistry.ts +57 -0
  1283. package/src/api/app/activeApp.ts +20 -0
  1284. package/src/api/app/createNavigation.ts +566 -0
  1285. package/src/api/app/roots.ts +40 -0
  1286. package/src/api/app/splash.ts +154 -0
  1287. package/src/api/app/startFailure.tsx +39 -0
  1288. package/src/api/arrangement/arrangementState.ts +98 -0
  1289. package/src/api/commands/commands.ts +371 -0
  1290. package/src/api/commands/errors.ts +99 -0
  1291. package/src/api/commands/presentation.ts +78 -0
  1292. package/src/api/commands/sideMenus.ts +122 -0
  1293. package/src/api/commands/transitions.ts +133 -0
  1294. package/src/api/context/appContext.ts +23 -0
  1295. package/src/api/events/navigationEvents.ts +175 -0
  1296. package/src/api/events/screenLifecycle.ts +27 -0
  1297. package/src/api/events/tabPresses.ts +35 -0
  1298. package/src/api/hinge/hinge.ts +84 -0
  1299. package/src/api/hooks/appHooks.ts +37 -0
  1300. package/src/api/hooks/screenHooks.ts +272 -0
  1301. package/src/api/hooks/useArrangement.ts +26 -0
  1302. package/src/api/hooks/useHinge.ts +26 -0
  1303. package/src/api/hooks/useNavigation.ts +267 -0
  1304. package/src/api/hooks/usePendingLink.ts +11 -0
  1305. package/src/api/hooks/usePreview.ts +111 -0
  1306. package/src/api/hooks/useReservedRegions.ts +26 -0
  1307. package/src/api/hooks/useSafeAreaInsets.ts +23 -0
  1308. package/src/api/index.ts +139 -0
  1309. package/src/api/layout/Root.ts +113 -0
  1310. package/src/api/layout/Screen.ts +55 -0
  1311. package/src/api/layout/SideMenu.ts +87 -0
  1312. package/src/api/layout/SplitView.ts +146 -0
  1313. package/src/api/layout/Stack.ts +48 -0
  1314. package/src/api/layout/Tabs.ts +339 -0
  1315. package/src/api/layout/element.ts +114 -0
  1316. package/src/api/linking/linkPaths.ts +159 -0
  1317. package/src/api/linking/linking.ts +242 -0
  1318. package/src/api/linking/pendingLinks.ts +37 -0
  1319. package/src/api/linking/types.ts +130 -0
  1320. package/src/api/navigation.ts +269 -0
  1321. package/src/api/options/OptionsChain.ts +142 -0
  1322. package/src/api/options/ScreenOptions.ts +81 -0
  1323. package/src/api/options/buttons.ts +43 -0
  1324. package/src/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  1325. package/src/api/safeArea/screenInsets.ts +86 -0
  1326. package/src/api/safeArea/screenRegions.ts +99 -0
  1327. package/src/api/screens/ScreenBoundary.tsx +52 -0
  1328. package/src/api/screens/arrangement.ts +106 -0
  1329. package/src/api/screens/defineScreen.ts +57 -0
  1330. package/src/api/screens/nativeScreenCalls.ts +59 -0
  1331. package/src/api/screens/nativeScreens.ts +58 -0
  1332. package/src/api/screens/registerScreens.tsx +364 -0
  1333. package/src/api/slots/ANNSlotNativeComponent.ts +23 -0
  1334. package/src/api/slots/SlotHost.tsx +64 -0
  1335. package/src/api/state/navigationState.ts +95 -0
  1336. package/src/api/testIDs.ts +11 -0
  1337. package/src/api/theme/theme.ts +184 -0
  1338. package/src/api/types.ts +95 -0
  1339. package/src/engine/backListeners.ts +36 -0
  1340. package/src/engine/buttons.ts +91 -0
  1341. package/src/engine/commands.ts +469 -0
  1342. package/src/engine/events.ts +24 -0
  1343. package/src/engine/ids.ts +7 -0
  1344. package/src/engine/launchState.ts +35 -0
  1345. package/src/engine/layout.ts +247 -0
  1346. package/src/engine/mergeOptions.ts +20 -0
  1347. package/src/engine/native.ts +51 -0
  1348. package/src/engine/nativeScreens.ts +263 -0
  1349. package/src/engine/options.ts +165 -0
  1350. package/src/engine/places.ts +205 -0
  1351. package/src/engine/props.ts +45 -0
  1352. package/src/engine/reactMeasures.ts +24 -0
  1353. package/src/engine/rememberedOptions.ts +111 -0
  1354. package/src/engine/screens.tsx +239 -0
  1355. package/src/engine/slots.ts +191 -0
  1356. package/src/engine/tabs.ts +95 -0
  1357. package/src/index.ts +3 -0
  1358. package/src/interfaces/ComponentEvents.ts +214 -0
  1359. package/src/interfaces/Events.ts +227 -0
  1360. package/src/interfaces/Layout.ts +161 -0
  1361. package/src/interfaces/Options.ts +175 -0
  1362. package/src/interfaces/options/animations.ts +480 -0
  1363. package/src/interfaces/options/bottomTabs.ts +481 -0
  1364. package/src/interfaces/options/buttons.ts +364 -0
  1365. package/src/interfaces/options/common.ts +76 -0
  1366. package/src/interfaces/options/modals.ts +217 -0
  1367. package/src/interfaces/options/preview.ts +40 -0
  1368. package/src/interfaces/options/sideMenu.ts +132 -0
  1369. package/src/interfaces/options/splitView.ts +127 -0
  1370. package/src/interfaces/options/stack.ts +110 -0
  1371. package/src/interfaces/options/system.ts +252 -0
  1372. package/src/interfaces/options/toolbar.ts +47 -0
  1373. package/src/interfaces/options/topBar.ts +828 -0
@@ -0,0 +1,4205 @@
1
+ [
2
+ {
3
+ "id": "start/introduction",
4
+ "title": "Introduction",
5
+ "description": "What @apexnative/navigation is, how it differs from a router in the React tree, and which apps it fits.",
6
+ "anchors": [
7
+ {
8
+ "heading": "Three ways to build navigation",
9
+ "anchor": "models"
10
+ },
11
+ {
12
+ "heading": "Describe, don't command",
13
+ "anchor": "describe"
14
+ },
15
+ {
16
+ "heading": "The platform already knows how to navigate",
17
+ "anchor": "platform"
18
+ },
19
+ {
20
+ "heading": "Principles",
21
+ "anchor": "principles"
22
+ },
23
+ {
24
+ "heading": "How it works",
25
+ "anchor": "how"
26
+ },
27
+ {
28
+ "heading": "What it means for your code",
29
+ "anchor": "code"
30
+ },
31
+ {
32
+ "heading": "When it fits",
33
+ "anchor": "fit"
34
+ },
35
+ {
36
+ "heading": "How these docs are built",
37
+ "anchor": "docs"
38
+ },
39
+ {
40
+ "heading": "Where to go next",
41
+ "anchor": "next"
42
+ }
43
+ ]
44
+ },
45
+ {
46
+ "id": "start/installation",
47
+ "title": "Installation",
48
+ "description": "Start a new app with the navigation or add it to the app you have, run it, and check the setup with doctor.",
49
+ "anchors": [
50
+ {
51
+ "heading": "Requirements",
52
+ "anchor": "requirements"
53
+ },
54
+ {
55
+ "heading": "Two ways to start",
56
+ "anchor": "paths"
57
+ },
58
+ {
59
+ "heading": "A new app",
60
+ "anchor": "new-app"
61
+ },
62
+ {
63
+ "heading": "The starters",
64
+ "anchor": "templates"
65
+ },
66
+ {
67
+ "heading": "The options of init",
68
+ "anchor": "init-options"
69
+ },
70
+ {
71
+ "heading": "The app you have",
72
+ "anchor": "existing-app"
73
+ },
74
+ {
75
+ "heading": "What setup changes, and why",
76
+ "anchor": "why-native"
77
+ },
78
+ {
79
+ "heading": "Android files",
80
+ "anchor": "android-files"
81
+ },
82
+ {
83
+ "heading": "iOS files",
84
+ "anchor": "ios-files"
85
+ },
86
+ {
87
+ "heading": "JavaScript files",
88
+ "anchor": "js-files"
89
+ },
90
+ {
91
+ "heading": "Typed commands",
92
+ "anchor": "typed-commands"
93
+ },
94
+ {
95
+ "heading": "Check everything with doctor",
96
+ "anchor": "doctor"
97
+ },
98
+ {
99
+ "heading": "Next",
100
+ "anchor": "next"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "id": "start/quick-start",
106
+ "title": "Quick start",
107
+ "description": "Build two screens in a native stack: Home, and Details that Home pushes with a title.",
108
+ "anchors": [
109
+ {
110
+ "heading": "1. Write the first screen",
111
+ "anchor": "screens"
112
+ },
113
+ {
114
+ "heading": "2. Write the screen it opens",
115
+ "anchor": "details"
116
+ },
117
+ {
118
+ "heading": "3. Create the navigation",
119
+ "anchor": "navigation"
120
+ },
121
+ {
122
+ "heading": "4. Check the entry point",
123
+ "anchor": "register"
124
+ },
125
+ {
126
+ "heading": "5. Run the app",
127
+ "anchor": "run"
128
+ },
129
+ {
130
+ "heading": "What a root can be",
131
+ "anchor": "roots"
132
+ },
133
+ {
134
+ "heading": "Where to go next",
135
+ "anchor": "next"
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "id": "fundamentals/starting-the-app",
141
+ "title": "Starting the app",
142
+ "description": "What createNavigation takes, what runs before and after the first screen, and what happens when the app launches again or fails to start.",
143
+ "anchors": [
144
+ {
145
+ "heading": "What createNavigation takes",
146
+ "anchor": "config"
147
+ },
148
+ {
149
+ "heading": "The screens and the first root",
150
+ "anchor": "basics"
151
+ },
152
+ {
153
+ "heading": "Screens",
154
+ "anchor": "screens"
155
+ },
156
+ {
157
+ "heading": "The first root",
158
+ "anchor": "root"
159
+ },
160
+ {
161
+ "heading": "Data and launch",
162
+ "anchor": "data"
163
+ },
164
+ {
165
+ "heading": "The app's data",
166
+ "anchor": "context"
167
+ },
168
+ {
169
+ "heading": "At launch",
170
+ "anchor": "launch"
171
+ },
172
+ {
173
+ "heading": "How the screens look and show",
174
+ "anchor": "appearance"
175
+ },
176
+ {
177
+ "heading": "How the screens look",
178
+ "anchor": "look"
179
+ },
180
+ {
181
+ "heading": "How the screens show",
182
+ "anchor": "presentation"
183
+ },
184
+ {
185
+ "heading": "Across the app",
186
+ "anchor": "app-wide"
187
+ },
188
+ {
189
+ "heading": "Events",
190
+ "anchor": "listeners"
191
+ },
192
+ {
193
+ "heading": "Links",
194
+ "anchor": "linking"
195
+ },
196
+ {
197
+ "heading": "Providers",
198
+ "anchor": "providers"
199
+ },
200
+ {
201
+ "heading": "Errors and loading",
202
+ "anchor": "errors"
203
+ },
204
+ {
205
+ "heading": "Rarely needed",
206
+ "anchor": "system"
207
+ },
208
+ {
209
+ "heading": "Before the first screen",
210
+ "anchor": "before"
211
+ },
212
+ {
213
+ "heading": "The splash screen",
214
+ "anchor": "splash"
215
+ },
216
+ {
217
+ "heading": "After the first screen",
218
+ "anchor": "after"
219
+ },
220
+ {
221
+ "heading": "The order",
222
+ "anchor": "order"
223
+ },
224
+ {
225
+ "heading": "When the app launches again",
226
+ "anchor": "launches"
227
+ },
228
+ {
229
+ "heading": "When the start fails",
230
+ "anchor": "failure"
231
+ },
232
+ {
233
+ "heading": "Opened by a link",
234
+ "anchor": "links"
235
+ },
236
+ {
237
+ "heading": "Next: screens and props",
238
+ "anchor": "next"
239
+ },
240
+ {
241
+ "heading": "API",
242
+ "anchor": "api"
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "id": "fundamentals/screens-and-props",
248
+ "title": "Screens and props",
249
+ "description": "What a screen is, how it gets its props and options, how it lives, and the details you meet later: the same screen many times, groups, loading later.",
250
+ "anchors": [
251
+ {
252
+ "heading": "What a screen is",
253
+ "anchor": "what"
254
+ },
255
+ {
256
+ "heading": "How the app knows its screens",
257
+ "anchor": "register"
258
+ },
259
+ {
260
+ "heading": "How a screen is shown",
261
+ "anchor": "show"
262
+ },
263
+ {
264
+ "heading": "Props",
265
+ "anchor": "props"
266
+ },
267
+ {
268
+ "heading": "TypeScript checks them",
269
+ "anchor": "typed"
270
+ },
271
+ {
272
+ "heading": "Props stay in JavaScript",
273
+ "anchor": "props-in-js"
274
+ },
275
+ {
276
+ "heading": "Options",
277
+ "anchor": "options"
278
+ },
279
+ {
280
+ "heading": "The life of a screen",
281
+ "anchor": "lifecycle"
282
+ },
283
+ {
284
+ "heading": "Hooks of the life",
285
+ "anchor": "hooks"
286
+ },
287
+ {
288
+ "heading": "The same screen, many times",
289
+ "anchor": "instances"
290
+ },
291
+ {
292
+ "heading": "One screen per item",
293
+ "anchor": "key"
294
+ },
295
+ {
296
+ "heading": "Screens that share options",
297
+ "anchor": "groups"
298
+ },
299
+ {
300
+ "heading": "Loading a screen later",
301
+ "anchor": "lazy"
302
+ },
303
+ {
304
+ "heading": "Which screen a component is in",
305
+ "anchor": "use-screen"
306
+ },
307
+ {
308
+ "heading": "Next: moving between screens",
309
+ "anchor": "next"
310
+ },
311
+ {
312
+ "heading": "API",
313
+ "anchor": "api"
314
+ }
315
+ ]
316
+ },
317
+ {
318
+ "id": "fundamentals/moving-between-screens",
319
+ "title": "Moving between screens",
320
+ "description": "The moves between screens, where the commands come from, how a move finishes, how a screen gives a result back, and the defaults of every move.",
321
+ "anchors": [
322
+ {
323
+ "heading": "The moves",
324
+ "anchor": "moves"
325
+ },
326
+ {
327
+ "heading": "Push a screen",
328
+ "anchor": "push"
329
+ },
330
+ {
331
+ "heading": "Show a modal",
332
+ "anchor": "modal"
333
+ },
334
+ {
335
+ "heading": "Show an overlay",
336
+ "anchor": "overlay"
337
+ },
338
+ {
339
+ "heading": "Select a tab",
340
+ "anchor": "tab"
341
+ },
342
+ {
343
+ "heading": "Show beside a list",
344
+ "anchor": "column"
345
+ },
346
+ {
347
+ "heading": "Replace everything",
348
+ "anchor": "root"
349
+ },
350
+ {
351
+ "heading": "Where the commands come from",
352
+ "anchor": "where"
353
+ },
354
+ {
355
+ "heading": "In a screen: useNavigation",
356
+ "anchor": "use-navigation"
357
+ },
358
+ {
359
+ "heading": "Anywhere else: navigation",
360
+ "anchor": "navigation"
361
+ },
362
+ {
363
+ "heading": "Which one",
364
+ "anchor": "which"
365
+ },
366
+ {
367
+ "heading": "Going back",
368
+ "anchor": "back"
369
+ },
370
+ {
371
+ "heading": "Can it go back?",
372
+ "anchor": "can"
373
+ },
374
+ {
375
+ "heading": "Replacing a screen",
376
+ "anchor": "replace"
377
+ },
378
+ {
379
+ "heading": "When a move is done",
380
+ "anchor": "done"
381
+ },
382
+ {
383
+ "heading": "A result back",
384
+ "anchor": "results"
385
+ },
386
+ {
387
+ "heading": "Setting a move up",
388
+ "anchor": "settings"
389
+ },
390
+ {
391
+ "heading": "Defaults for the whole app",
392
+ "anchor": "presentation"
393
+ },
394
+ {
395
+ "heading": "Next: screen options",
396
+ "anchor": "next"
397
+ },
398
+ {
399
+ "heading": "API",
400
+ "anchor": "api"
401
+ }
402
+ ]
403
+ },
404
+ {
405
+ "id": "fundamentals/screen-options",
406
+ "title": "Screen options",
407
+ "description": "What options are, where a screen gets them and which win, the chain, how options merge, and how a shown screen changes them.",
408
+ "anchors": [
409
+ {
410
+ "heading": "What options are",
411
+ "anchor": "what"
412
+ },
413
+ {
414
+ "heading": "Where a screen gets them",
415
+ "anchor": "layers"
416
+ },
417
+ {
418
+ "heading": "The chain and plain objects",
419
+ "anchor": "chain"
420
+ },
421
+ {
422
+ "heading": "One platform only",
423
+ "anchor": "platforms"
424
+ },
425
+ {
426
+ "heading": "How options merge",
427
+ "anchor": "merge"
428
+ },
429
+ {
430
+ "heading": "Changing the options of a shown screen",
431
+ "anchor": "change"
432
+ },
433
+ {
434
+ "heading": "From a handler: setOptions",
435
+ "anchor": "set-options"
436
+ },
437
+ {
438
+ "heading": "From the state: useScreenOptions",
439
+ "anchor": "use-screen-options"
440
+ },
441
+ {
442
+ "heading": "Where each option is described",
443
+ "anchor": "map"
444
+ },
445
+ {
446
+ "heading": "Next: switching roots",
447
+ "anchor": "next"
448
+ },
449
+ {
450
+ "heading": "API",
451
+ "anchor": "api"
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "id": "fundamentals/switching-roots",
457
+ "title": "Switching roots",
458
+ "description": "What a root is, one root or named roots, what a switch does to the app, a root made on the go, a root with a modal, and how a new root comes in.",
459
+ "anchors": [
460
+ {
461
+ "heading": "What a root is",
462
+ "anchor": "what"
463
+ },
464
+ {
465
+ "heading": "One root, or named roots",
466
+ "anchor": "roots"
467
+ },
468
+ {
469
+ "heading": "A root with a param",
470
+ "anchor": "param"
471
+ },
472
+ {
473
+ "heading": "What a switch does",
474
+ "anchor": "switch"
475
+ },
476
+ {
477
+ "heading": "A root made on the go",
478
+ "anchor": "on-the-go"
479
+ },
480
+ {
481
+ "heading": "A root with a modal",
482
+ "anchor": "with-modal"
483
+ },
484
+ {
485
+ "heading": "How a new root comes in",
486
+ "anchor": "transitions"
487
+ },
488
+ {
489
+ "heading": "When Android brings the app back",
490
+ "anchor": "android"
491
+ },
492
+ {
493
+ "heading": "Next: lifecycle and events",
494
+ "anchor": "next"
495
+ },
496
+ {
497
+ "heading": "API",
498
+ "anchor": "api"
499
+ }
500
+ ]
501
+ },
502
+ {
503
+ "id": "fundamentals/lifecycle-and-events",
504
+ "title": "Lifecycle and events",
505
+ "description": "The events of a screen and of the whole app, their order in one move, where to listen to them, what the user sees now, and every event the navigation sends.",
506
+ "anchors": [
507
+ {
508
+ "heading": "What a screen goes through",
509
+ "anchor": "screen"
510
+ },
511
+ {
512
+ "heading": "The order in one move",
513
+ "anchor": "order"
514
+ },
515
+ {
516
+ "heading": "The hooks of a screen",
517
+ "anchor": "hooks"
518
+ },
519
+ {
520
+ "heading": "Where to listen",
521
+ "anchor": "where"
522
+ },
523
+ {
524
+ "heading": "Why the events are outside React",
525
+ "anchor": "outside-react"
526
+ },
527
+ {
528
+ "heading": "What the user sees now",
529
+ "anchor": "state"
530
+ },
531
+ {
532
+ "heading": "Every event",
533
+ "anchor": "events"
534
+ },
535
+ {
536
+ "heading": "Next: the containers",
537
+ "anchor": "next"
538
+ },
539
+ {
540
+ "heading": "API",
541
+ "anchor": "api"
542
+ }
543
+ ]
544
+ },
545
+ {
546
+ "id": "containers/stack",
547
+ "title": "Stack",
548
+ "description": "What a stack is and where stacks live, how to build one, every command of a stack, the way back, and a whole stack at once for a deep link.",
549
+ "anchors": [
550
+ {
551
+ "heading": "What a stack is",
552
+ "anchor": "what"
553
+ },
554
+ {
555
+ "heading": "Where stacks live",
556
+ "anchor": "where"
557
+ },
558
+ {
559
+ "heading": "Building a stack",
560
+ "anchor": "build"
561
+ },
562
+ {
563
+ "heading": "The commands of a stack",
564
+ "anchor": "commands"
565
+ },
566
+ {
567
+ "heading": "The way back",
568
+ "anchor": "back"
569
+ },
570
+ {
571
+ "heading": "A whole stack at once",
572
+ "anchor": "deep-link"
573
+ },
574
+ {
575
+ "heading": "API",
576
+ "anchor": "api"
577
+ }
578
+ ]
579
+ },
580
+ {
581
+ "id": "containers/tabs",
582
+ "title": "Tabs",
583
+ "description": "Tabs with a stack each, how to build them, how the app selects a tab, presses and badges, lazy tabs, and the tab bars of iOS 26, iPad and Android.",
584
+ "anchors": [
585
+ {
586
+ "heading": "What tabs are",
587
+ "anchor": "what"
588
+ },
589
+ {
590
+ "heading": "Building tabs",
591
+ "anchor": "build"
592
+ },
593
+ {
594
+ "heading": "Screens without the tab bar",
595
+ "anchor": "hide"
596
+ },
597
+ {
598
+ "heading": "Selecting a tab",
599
+ "anchor": "select"
600
+ },
601
+ {
602
+ "heading": "A press on a tab",
603
+ "anchor": "press"
604
+ },
605
+ {
606
+ "heading": "Back on Android",
607
+ "anchor": "back"
608
+ },
609
+ {
610
+ "heading": "Badges and dots",
611
+ "anchor": "badges"
612
+ },
613
+ {
614
+ "heading": "When tabs are created",
615
+ "anchor": "lazy"
616
+ },
617
+ {
618
+ "heading": "The tab bar on each platform",
619
+ "anchor": "platforms"
620
+ },
621
+ {
622
+ "heading": "Events",
623
+ "anchor": "events"
624
+ },
625
+ {
626
+ "heading": "Options",
627
+ "anchor": "options"
628
+ },
629
+ {
630
+ "heading": "API",
631
+ "anchor": "api"
632
+ }
633
+ ]
634
+ },
635
+ {
636
+ "id": "containers/modals",
637
+ "title": "Modals",
638
+ "description": "What a modal is, how to show one, the presentation styles, sheets with detents, popovers, how a modal closes and how to ask before it does.",
639
+ "anchors": [
640
+ {
641
+ "heading": "What a modal is",
642
+ "anchor": "what"
643
+ },
644
+ {
645
+ "heading": "Showing a modal",
646
+ "anchor": "show"
647
+ },
648
+ {
649
+ "heading": "How a modal looks",
650
+ "anchor": "styles"
651
+ },
652
+ {
653
+ "heading": "A form on iPad",
654
+ "anchor": "form"
655
+ },
656
+ {
657
+ "heading": "A popover",
658
+ "anchor": "popover"
659
+ },
660
+ {
661
+ "heading": "Sheets",
662
+ "anchor": "sheets"
663
+ },
664
+ {
665
+ "heading": "How a modal closes",
666
+ "anchor": "close"
667
+ },
668
+ {
669
+ "heading": "Asking before closing",
670
+ "anchor": "ask"
671
+ },
672
+ {
673
+ "heading": "API",
674
+ "anchor": "api"
675
+ }
676
+ ]
677
+ },
678
+ {
679
+ "id": "containers/overlays",
680
+ "title": "Overlays",
681
+ "description": "What an overlay is and what it is for, how to show and close one, where the touches go, the keyboard, and how overlays live with modals and roots.",
682
+ "anchors": [
683
+ {
684
+ "heading": "What an overlay is",
685
+ "anchor": "what"
686
+ },
687
+ {
688
+ "heading": "Showing and closing",
689
+ "anchor": "show"
690
+ },
691
+ {
692
+ "heading": "Where the touches go",
693
+ "anchor": "touches"
694
+ },
695
+ {
696
+ "heading": "The keyboard",
697
+ "anchor": "keyboard"
698
+ },
699
+ {
700
+ "heading": "Overlays, modals and roots",
701
+ "anchor": "layers"
702
+ },
703
+ {
704
+ "heading": "API",
705
+ "anchor": "api"
706
+ }
707
+ ]
708
+ },
709
+ {
710
+ "id": "containers/side-menu",
711
+ "title": "Side menu",
712
+ "description": "What a side menu is, how to build one, how it opens and closes, how a pick in the menu changes the content, and how it looks on each platform.",
713
+ "anchors": [
714
+ {
715
+ "heading": "What a side menu is",
716
+ "anchor": "what"
717
+ },
718
+ {
719
+ "heading": "Building a side menu",
720
+ "anchor": "build"
721
+ },
722
+ {
723
+ "heading": "Opening and closing",
724
+ "anchor": "open"
725
+ },
726
+ {
727
+ "heading": "A pick in the menu",
728
+ "anchor": "pick"
729
+ },
730
+ {
731
+ "heading": "How it looks",
732
+ "anchor": "look"
733
+ },
734
+ {
735
+ "heading": "Where the swipe is off",
736
+ "anchor": "swipe"
737
+ },
738
+ {
739
+ "heading": "API",
740
+ "anchor": "api"
741
+ }
742
+ ]
743
+ },
744
+ {
745
+ "id": "containers/split-view",
746
+ "title": "Split view",
747
+ "description": "Columns side by side on iPad, how to build them, how a pick shows beside the list, how the sidebar shows and hides, and what iPhone and Android show.",
748
+ "anchors": [
749
+ {
750
+ "heading": "What a split view is",
751
+ "anchor": "what"
752
+ },
753
+ {
754
+ "heading": "Building a split view",
755
+ "anchor": "build"
756
+ },
757
+ {
758
+ "heading": "Showing beside the list",
759
+ "anchor": "show"
760
+ },
761
+ {
762
+ "heading": "How the sidebar shows",
763
+ "anchor": "sidebar"
764
+ },
765
+ {
766
+ "heading": "A phone and a narrow window",
767
+ "anchor": "compact"
768
+ },
769
+ {
770
+ "heading": "Android",
771
+ "anchor": "android"
772
+ },
773
+ {
774
+ "heading": "API",
775
+ "anchor": "api"
776
+ }
777
+ ]
778
+ },
779
+ {
780
+ "id": "containers/arrangement",
781
+ "title": "Arrangement",
782
+ "description": "Two screens as one screen of a stack: side by side on iPad, iPhone Duo open, Android tablets and open foldables, each on its side of the fold, and the main one alone on a phone.",
783
+ "anchors": [
784
+ {
785
+ "heading": "What a pair is",
786
+ "anchor": "what"
787
+ },
788
+ {
789
+ "heading": "Two ways to make a pair",
790
+ "anchor": "two-ways"
791
+ },
792
+ {
793
+ "heading": "On the screen",
794
+ "anchor": "on-the-screen"
795
+ },
796
+ {
797
+ "heading": "A pair of its own",
798
+ "anchor": "define-arrangement"
799
+ },
800
+ {
801
+ "heading": "What each device shows",
802
+ "anchor": "devices"
803
+ },
804
+ {
805
+ "heading": "Split and overlay",
806
+ "anchor": "style"
807
+ },
808
+ {
809
+ "heading": "The props of the second screen",
810
+ "anchor": "secondary-props"
811
+ },
812
+ {
813
+ "heading": "How the pair lies now",
814
+ "anchor": "use-arrangement"
815
+ },
816
+ {
817
+ "heading": "When the window changes",
818
+ "anchor": "time"
819
+ },
820
+ {
821
+ "heading": "The bar of the pair",
822
+ "anchor": "bar"
823
+ },
824
+ {
825
+ "heading": "Native screens in a pair",
826
+ "anchor": "native"
827
+ },
828
+ {
829
+ "heading": "A pair or a split view",
830
+ "anchor": "split-view"
831
+ },
832
+ {
833
+ "heading": "A pair that names a screen not in screens",
834
+ "anchor": "missing"
835
+ },
836
+ {
837
+ "heading": "A screen with a key in a pair",
838
+ "anchor": "key"
839
+ },
840
+ {
841
+ "heading": "Read next",
842
+ "anchor": "next"
843
+ },
844
+ {
845
+ "heading": "API",
846
+ "anchor": "api"
847
+ }
848
+ ]
849
+ },
850
+ {
851
+ "id": "screen-ui/top-bar",
852
+ "title": "Top bar",
853
+ "description": "The bar at the top of a stack: the title and the subtitle, the large title, the background and the border, hiding the bar, a component in place of the title, and the title menu.",
854
+ "anchors": [
855
+ {
856
+ "heading": "What the top bar is",
857
+ "anchor": "what"
858
+ },
859
+ {
860
+ "heading": "The title",
861
+ "anchor": "title"
862
+ },
863
+ {
864
+ "heading": "The large title",
865
+ "anchor": "large-title"
866
+ },
867
+ {
868
+ "heading": "The background and the border",
869
+ "anchor": "background"
870
+ },
871
+ {
872
+ "heading": "Hiding the bar",
873
+ "anchor": "hide"
874
+ },
875
+ {
876
+ "heading": "A component in place of the title",
877
+ "anchor": "title-component"
878
+ },
879
+ {
880
+ "heading": "The title menu",
881
+ "anchor": "title-menu"
882
+ },
883
+ {
884
+ "heading": "The layout of the bar",
885
+ "anchor": "layout"
886
+ },
887
+ {
888
+ "heading": "The bar on iPhone Duo",
889
+ "anchor": "iphone-duo"
890
+ },
891
+ {
892
+ "heading": "API",
893
+ "anchor": "api"
894
+ }
895
+ ]
896
+ },
897
+ {
898
+ "id": "screen-ui/bar-buttons",
899
+ "title": "Bar buttons",
900
+ "description": "The buttons of the top bar: adding one, what a button can be, where the press is handled, menus and the overflow menu, which buttons stay when the bar is short of room, a component as a button, buttons that change with the state, and the vertical bar of iPhone Duo.",
901
+ "anchors": [
902
+ {
903
+ "heading": "Where buttons go",
904
+ "anchor": "where"
905
+ },
906
+ {
907
+ "heading": "What a button can be",
908
+ "anchor": "kinds"
909
+ },
910
+ {
911
+ "heading": "Where the press is handled",
912
+ "anchor": "press"
913
+ },
914
+ {
915
+ "heading": "Menus",
916
+ "anchor": "menus"
917
+ },
918
+ {
919
+ "heading": "The overflow menu",
920
+ "anchor": "overflow"
921
+ },
922
+ {
923
+ "heading": "Which buttons stay",
924
+ "anchor": "priority"
925
+ },
926
+ {
927
+ "heading": "A component as a button",
928
+ "anchor": "component"
929
+ },
930
+ {
931
+ "heading": "Buttons that change",
932
+ "anchor": "change"
933
+ },
934
+ {
935
+ "heading": "Buttons on iPhone Duo",
936
+ "anchor": "iphone-duo"
937
+ },
938
+ {
939
+ "heading": "Center buttons",
940
+ "anchor": "center"
941
+ },
942
+ {
943
+ "heading": "API",
944
+ "anchor": "api"
945
+ }
946
+ ]
947
+ },
948
+ {
949
+ "id": "screen-ui/back-and-gestures",
950
+ "title": "Back and gestures",
951
+ "description": "Every way the user goes back on each platform, the back button and its look, the swipe back, the system back of Android, and how to keep the user on a screen with unsaved changes.",
952
+ "anchors": [
953
+ {
954
+ "heading": "The ways back",
955
+ "anchor": "ways"
956
+ },
957
+ {
958
+ "heading": "The back button",
959
+ "anchor": "back-button"
960
+ },
961
+ {
962
+ "heading": "Its title",
963
+ "anchor": "title"
964
+ },
965
+ {
966
+ "heading": "Its look",
967
+ "anchor": "look"
968
+ },
969
+ {
970
+ "heading": "The swipe back",
971
+ "anchor": "swipe"
972
+ },
973
+ {
974
+ "heading": "The system back of Android",
975
+ "anchor": "system-back"
976
+ },
977
+ {
978
+ "heading": "Back to the home screen",
979
+ "anchor": "system-animation"
980
+ },
981
+ {
982
+ "heading": "Handling back yourself: BackHandler",
983
+ "anchor": "back-handler"
984
+ },
985
+ {
986
+ "heading": "Keeping the user on a screen",
987
+ "anchor": "prevent"
988
+ },
989
+ {
990
+ "heading": "Knowing the user went back",
991
+ "anchor": "popped"
992
+ },
993
+ {
994
+ "heading": "API",
995
+ "anchor": "api"
996
+ }
997
+ ]
998
+ },
999
+ {
1000
+ "id": "screen-ui/search",
1001
+ "title": "Search",
1002
+ "description": "The search field of the platform in the top bar: adding it and filtering with it, where it sits, what shows while searching, scopes, tokens, suggestions and a results screen.",
1003
+ "anchors": [
1004
+ {
1005
+ "heading": "Adding search",
1006
+ "anchor": "add"
1007
+ },
1008
+ {
1009
+ "heading": "Where the field sits",
1010
+ "anchor": "placement"
1011
+ },
1012
+ {
1013
+ "heading": "While searching",
1014
+ "anchor": "while"
1015
+ },
1016
+ {
1017
+ "heading": "Narrowing the search",
1018
+ "anchor": "narrow"
1019
+ },
1020
+ {
1021
+ "heading": "Scopes",
1022
+ "anchor": "scopes"
1023
+ },
1024
+ {
1025
+ "heading": "Tokens",
1026
+ "anchor": "tokens"
1027
+ },
1028
+ {
1029
+ "heading": "Suggestions",
1030
+ "anchor": "suggestions"
1031
+ },
1032
+ {
1033
+ "heading": "A results screen",
1034
+ "anchor": "results"
1035
+ },
1036
+ {
1037
+ "heading": "In the toolbar",
1038
+ "anchor": "toolbar"
1039
+ },
1040
+ {
1041
+ "heading": "API",
1042
+ "anchor": "api"
1043
+ }
1044
+ ]
1045
+ },
1046
+ {
1047
+ "id": "screen-ui/toolbar-and-fab",
1048
+ "title": "Toolbar and FAB",
1049
+ "description": "Actions at the bottom of a screen, each platform its own way: the toolbar of iOS, the floating action button of Android, and one screen with both.",
1050
+ "anchors": [
1051
+ {
1052
+ "heading": "Which one is for what",
1053
+ "anchor": "which"
1054
+ },
1055
+ {
1056
+ "heading": "The toolbar",
1057
+ "anchor": "toolbar"
1058
+ },
1059
+ {
1060
+ "heading": "The floating action button",
1061
+ "anchor": "fab"
1062
+ },
1063
+ {
1064
+ "heading": "Actions",
1065
+ "anchor": "fab-actions"
1066
+ },
1067
+ {
1068
+ "heading": "One screen, both platforms",
1069
+ "anchor": "both"
1070
+ },
1071
+ {
1072
+ "heading": "API",
1073
+ "anchor": "api"
1074
+ }
1075
+ ]
1076
+ },
1077
+ {
1078
+ "id": "screen-ui/system-ui",
1079
+ "title": "System UI",
1080
+ "description": "The parts of the system around a screen: the safe area, the fold and the camera, the hinge, the status bar, the bottom of the system, orientation, backgrounds, keyboard shortcuts and the direction of the app.",
1081
+ "anchors": [
1082
+ {
1083
+ "heading": "The parts of the system",
1084
+ "anchor": "parts"
1085
+ },
1086
+ {
1087
+ "heading": "The safe area",
1088
+ "anchor": "safe-area"
1089
+ },
1090
+ {
1091
+ "heading": "The vertical bar of iPhone Duo",
1092
+ "anchor": "vertical-bar"
1093
+ },
1094
+ {
1095
+ "heading": "The fold and the camera",
1096
+ "anchor": "reserved-regions"
1097
+ },
1098
+ {
1099
+ "heading": "The hinge",
1100
+ "anchor": "hinge"
1101
+ },
1102
+ {
1103
+ "heading": "The status bar",
1104
+ "anchor": "status-bar"
1105
+ },
1106
+ {
1107
+ "heading": "The bottom of the system",
1108
+ "anchor": "bottom"
1109
+ },
1110
+ {
1111
+ "heading": "Orientation",
1112
+ "anchor": "orientation"
1113
+ },
1114
+ {
1115
+ "heading": "Backgrounds",
1116
+ "anchor": "backgrounds"
1117
+ },
1118
+ {
1119
+ "heading": "The window",
1120
+ "anchor": "window"
1121
+ },
1122
+ {
1123
+ "heading": "The edge of the scroll",
1124
+ "anchor": "scroll-edge"
1125
+ },
1126
+ {
1127
+ "heading": "Keyboard shortcuts",
1128
+ "anchor": "shortcuts"
1129
+ },
1130
+ {
1131
+ "heading": "The direction of the app",
1132
+ "anchor": "direction"
1133
+ },
1134
+ {
1135
+ "heading": "Rarely needed",
1136
+ "anchor": "rare"
1137
+ },
1138
+ {
1139
+ "heading": "API",
1140
+ "anchor": "api"
1141
+ }
1142
+ ]
1143
+ },
1144
+ {
1145
+ "id": "architecture/theme-and-context",
1146
+ "title": "Theme and context",
1147
+ "description": "Two things every screen shares: the theme, the colors of the bars and backgrounds, and the context, what every screen can rely on. Why the navigation keeps them, how to use them, and what belongs in them.",
1148
+ "anchors": [
1149
+ {
1150
+ "heading": "Why the navigation keeps them",
1151
+ "anchor": "why"
1152
+ },
1153
+ {
1154
+ "heading": "The theme",
1155
+ "anchor": "theme"
1156
+ },
1157
+ {
1158
+ "heading": "Dark mode",
1159
+ "anchor": "dark"
1160
+ },
1161
+ {
1162
+ "heading": "Changing the theme",
1163
+ "anchor": "set-theme"
1164
+ },
1165
+ {
1166
+ "heading": "The theme in React content",
1167
+ "anchor": "use-theme"
1168
+ },
1169
+ {
1170
+ "heading": "The theme in options",
1171
+ "anchor": "theme-options"
1172
+ },
1173
+ {
1174
+ "heading": "Android's colors",
1175
+ "anchor": "android"
1176
+ },
1177
+ {
1178
+ "heading": "The context",
1179
+ "anchor": "context"
1180
+ },
1181
+ {
1182
+ "heading": "Why it exists",
1183
+ "anchor": "context-why"
1184
+ },
1185
+ {
1186
+ "heading": "Filling it",
1187
+ "anchor": "context-fill"
1188
+ },
1189
+ {
1190
+ "heading": "Reading it",
1191
+ "anchor": "read"
1192
+ },
1193
+ {
1194
+ "heading": "Typing it",
1195
+ "anchor": "types"
1196
+ },
1197
+ {
1198
+ "heading": "What goes in the context",
1199
+ "anchor": "context-roles"
1200
+ },
1201
+ {
1202
+ "heading": "What to keep in it",
1203
+ "anchor": "context-keep"
1204
+ },
1205
+ {
1206
+ "heading": "In code",
1207
+ "anchor": "context-examples"
1208
+ },
1209
+ {
1210
+ "heading": "Why not everything",
1211
+ "anchor": "context-why-not"
1212
+ },
1213
+ {
1214
+ "heading": "Compared with the other places",
1215
+ "anchor": "context-compared"
1216
+ },
1217
+ {
1218
+ "heading": "API",
1219
+ "anchor": "api"
1220
+ }
1221
+ ]
1222
+ },
1223
+ {
1224
+ "id": "architecture/one-tree",
1225
+ "title": "One tree",
1226
+ "description": "How screens render: a React root per screen by default, a provider around every screen, or one tree with every screen inside the app's provider. How it differs from navigation in the React tree, and when to pick which.",
1227
+ "anchors": [
1228
+ {
1229
+ "heading": "How it differs",
1230
+ "anchor": "compare"
1231
+ },
1232
+ {
1233
+ "heading": "How screens render",
1234
+ "anchor": "modes"
1235
+ },
1236
+ {
1237
+ "heading": "A root per screen",
1238
+ "anchor": "root-per-screen"
1239
+ },
1240
+ {
1241
+ "heading": "A provider around every screen",
1242
+ "anchor": "screen-provider"
1243
+ },
1244
+ {
1245
+ "heading": "One tree",
1246
+ "anchor": "one-tree"
1247
+ },
1248
+ {
1249
+ "heading": "Which to pick",
1250
+ "anchor": "which"
1251
+ },
1252
+ {
1253
+ "heading": "API",
1254
+ "anchor": "api"
1255
+ }
1256
+ ]
1257
+ },
1258
+ {
1259
+ "id": "architecture/errors-and-loading",
1260
+ "title": "Errors and loading",
1261
+ "description": "What a screen shows when it fails to render and while it waits for its data, where each kind of error goes, and what happens when the start of the app fails.",
1262
+ "anchors": [
1263
+ {
1264
+ "heading": "What a screen shows",
1265
+ "anchor": "fallbacks"
1266
+ },
1267
+ {
1268
+ "heading": "A screen that fails",
1269
+ "anchor": "error"
1270
+ },
1271
+ {
1272
+ "heading": "Errors outside the render",
1273
+ "anchor": "outside-render"
1274
+ },
1275
+ {
1276
+ "heading": "A screen that loads",
1277
+ "anchor": "loading"
1278
+ },
1279
+ {
1280
+ "heading": "Where the errors go",
1281
+ "anchor": "on-error"
1282
+ },
1283
+ {
1284
+ "heading": "When the start fails",
1285
+ "anchor": "start"
1286
+ },
1287
+ {
1288
+ "heading": "API",
1289
+ "anchor": "api"
1290
+ }
1291
+ ]
1292
+ },
1293
+ {
1294
+ "id": "architecture/transitions",
1295
+ "title": "Transitions",
1296
+ "description": "How screens come and go: the platform's transitions, presets for a command, transitions out of a view (shared elements, zoom, preview), animations of your own, and waiting for the content. Which to pick, and what each costs.",
1297
+ "anchors": [
1298
+ {
1299
+ "heading": "The platform's transitions",
1300
+ "anchor": "platform"
1301
+ },
1302
+ {
1303
+ "heading": "Presets",
1304
+ "anchor": "presets"
1305
+ },
1306
+ {
1307
+ "heading": "Transitions out of a view",
1308
+ "anchor": "views"
1309
+ },
1310
+ {
1311
+ "heading": "Shared elements",
1312
+ "anchor": "shared"
1313
+ },
1314
+ {
1315
+ "heading": "Zoom",
1316
+ "anchor": "zoom"
1317
+ },
1318
+ {
1319
+ "heading": "Preview",
1320
+ "anchor": "preview"
1321
+ },
1322
+ {
1323
+ "heading": "Animations of your own",
1324
+ "anchor": "custom"
1325
+ },
1326
+ {
1327
+ "heading": "Which to pick",
1328
+ "anchor": "which"
1329
+ },
1330
+ {
1331
+ "heading": "Waiting for the content",
1332
+ "anchor": "wait"
1333
+ },
1334
+ {
1335
+ "heading": "A push on Android, in one tree",
1336
+ "anchor": "wait-one-tree"
1337
+ },
1338
+ {
1339
+ "heading": "API",
1340
+ "anchor": "api"
1341
+ }
1342
+ ]
1343
+ },
1344
+ {
1345
+ "id": "architecture/native-screens",
1346
+ "title": "Native screens",
1347
+ "description": "Screens written in SwiftUI, UIKit, Jetpack Compose or Android views, as full screens of the navigation next to React ones: how they talk to the app, when to make one, one screen from the command to the device, types, functions and commands.",
1348
+ "anchors": [
1349
+ {
1350
+ "heading": "What a native screen is",
1351
+ "anchor": "what"
1352
+ },
1353
+ {
1354
+ "heading": "When to make one",
1355
+ "anchor": "when"
1356
+ },
1357
+ {
1358
+ "heading": "One screen, step by step",
1359
+ "anchor": "example"
1360
+ },
1361
+ {
1362
+ "heading": "1. The command",
1363
+ "anchor": "step-command"
1364
+ },
1365
+ {
1366
+ "heading": "2. The definition in TypeScript",
1367
+ "anchor": "step-definition"
1368
+ },
1369
+ {
1370
+ "heading": "3. The generated code",
1371
+ "anchor": "step-codegen"
1372
+ },
1373
+ {
1374
+ "heading": "4. The screen in SwiftUI",
1375
+ "anchor": "step-swiftui"
1376
+ },
1377
+ {
1378
+ "heading": "5. The screen in Compose",
1379
+ "anchor": "step-compose"
1380
+ },
1381
+ {
1382
+ "heading": "6. Opening it",
1383
+ "anchor": "step-open"
1384
+ },
1385
+ {
1386
+ "heading": "What happens when it shows",
1387
+ "anchor": "flow"
1388
+ },
1389
+ {
1390
+ "heading": "Types",
1391
+ "anchor": "types"
1392
+ },
1393
+ {
1394
+ "heading": "Functions with results",
1395
+ "anchor": "results"
1396
+ },
1397
+ {
1398
+ "heading": "Commands from a native screen",
1399
+ "anchor": "commands"
1400
+ },
1401
+ {
1402
+ "heading": "Typed commands",
1403
+ "anchor": "typed-commands"
1404
+ },
1405
+ {
1406
+ "heading": "UIKit and Android views",
1407
+ "anchor": "imperative"
1408
+ },
1409
+ {
1410
+ "heading": "In layouts",
1411
+ "anchor": "layouts"
1412
+ },
1413
+ {
1414
+ "heading": "API",
1415
+ "anchor": "api"
1416
+ }
1417
+ ]
1418
+ },
1419
+ {
1420
+ "id": "flows/sign-in-and-sign-out",
1421
+ "title": "Sign in and sign out",
1422
+ "description": "An app with a signed-out part and a signed-in part: the saved session read at launch, the switch after a sign-in and a sign-out, a session that expires, and links that wait for the user to sign in.",
1423
+ "anchors": [
1424
+ {
1425
+ "heading": "What you need",
1426
+ "anchor": "need"
1427
+ },
1428
+ {
1429
+ "heading": "How it will work",
1430
+ "anchor": "plan"
1431
+ },
1432
+ {
1433
+ "heading": "1. Keep the user where every screen reads it",
1434
+ "anchor": "context"
1435
+ },
1436
+ {
1437
+ "heading": "2. Name the two roots",
1438
+ "anchor": "roots"
1439
+ },
1440
+ {
1441
+ "heading": "3. Read the saved session at launch",
1442
+ "anchor": "launch"
1443
+ },
1444
+ {
1445
+ "heading": "4. Sign in",
1446
+ "anchor": "sign-in"
1447
+ },
1448
+ {
1449
+ "heading": "5. Sign out",
1450
+ "anchor": "sign-out"
1451
+ },
1452
+ {
1453
+ "heading": "6. Make links wait for the sign-in",
1454
+ "anchor": "links"
1455
+ },
1456
+ {
1457
+ "heading": "Tell the user a link waits",
1458
+ "anchor": "pending"
1459
+ },
1460
+ {
1461
+ "heading": "The session expires while the app runs",
1462
+ "anchor": "expired"
1463
+ },
1464
+ {
1465
+ "heading": "Signing out from a modal",
1466
+ "anchor": "from-modal"
1467
+ },
1468
+ {
1469
+ "heading": "The back button on Login",
1470
+ "anchor": "android-back"
1471
+ },
1472
+ {
1473
+ "heading": "An app that guests can browse",
1474
+ "anchor": "guests"
1475
+ },
1476
+ {
1477
+ "heading": "The whole code",
1478
+ "anchor": "files"
1479
+ },
1480
+ {
1481
+ "heading": "What's next",
1482
+ "anchor": "next"
1483
+ }
1484
+ ]
1485
+ },
1486
+ {
1487
+ "id": "flows/onboarding",
1488
+ "title": "Onboarding",
1489
+ "description": "A few screens shown on the first launch only, with Skip and Get started, then the main app; the next launches open on the app at once.",
1490
+ "anchors": [
1491
+ {
1492
+ "heading": "What you need",
1493
+ "anchor": "need"
1494
+ },
1495
+ {
1496
+ "heading": "How it will work",
1497
+ "anchor": "plan"
1498
+ },
1499
+ {
1500
+ "heading": "1. Make onboarding a root",
1501
+ "anchor": "roots"
1502
+ },
1503
+ {
1504
+ "heading": "2. Remember that it was shown",
1505
+ "anchor": "launch"
1506
+ },
1507
+ {
1508
+ "heading": "3. Go through the steps",
1509
+ "anchor": "steps"
1510
+ },
1511
+ {
1512
+ "heading": "4. Finish it",
1513
+ "anchor": "finish"
1514
+ },
1515
+ {
1516
+ "heading": "5. Let the user skip",
1517
+ "anchor": "skip"
1518
+ },
1519
+ {
1520
+ "heading": "With a sign-in",
1521
+ "anchor": "sign-in"
1522
+ },
1523
+ {
1524
+ "heading": "A step that asks for a permission",
1525
+ "anchor": "permission"
1526
+ },
1527
+ {
1528
+ "heading": "The user leaves halfway",
1529
+ "anchor": "halfway"
1530
+ },
1531
+ {
1532
+ "heading": "The back button on the steps",
1533
+ "anchor": "android-back"
1534
+ },
1535
+ {
1536
+ "heading": "Showing it again from Settings",
1537
+ "anchor": "again"
1538
+ },
1539
+ {
1540
+ "heading": "A link on the first launch",
1541
+ "anchor": "links"
1542
+ },
1543
+ {
1544
+ "heading": "A tour over the app",
1545
+ "anchor": "tour"
1546
+ },
1547
+ {
1548
+ "heading": "The whole code",
1549
+ "anchor": "files"
1550
+ },
1551
+ {
1552
+ "heading": "What's next",
1553
+ "anchor": "next"
1554
+ }
1555
+ ]
1556
+ },
1557
+ {
1558
+ "id": "flows/an-app-with-tabs",
1559
+ "title": "An app with tabs",
1560
+ "description": "Tabs with a stack each, icons and badges, a tap on the current tab, a screen without the tab bar, a tab that opens a modal, and switching tabs from code.",
1561
+ "anchors": [
1562
+ {
1563
+ "heading": "What you need",
1564
+ "anchor": "need"
1565
+ },
1566
+ {
1567
+ "heading": "How it will work",
1568
+ "anchor": "plan"
1569
+ },
1570
+ {
1571
+ "heading": "1. Build the tabs",
1572
+ "anchor": "tabs"
1573
+ },
1574
+ {
1575
+ "heading": "2. Give them icons",
1576
+ "anchor": "icons"
1577
+ },
1578
+ {
1579
+ "heading": "3. Push inside a tab",
1580
+ "anchor": "push"
1581
+ },
1582
+ {
1583
+ "heading": "4. Hide the tab bar on a screen",
1584
+ "anchor": "hide"
1585
+ },
1586
+ {
1587
+ "heading": "5. Show a badge",
1588
+ "anchor": "badge"
1589
+ },
1590
+ {
1591
+ "heading": "6. Handle a tap on the current tab",
1592
+ "anchor": "tap"
1593
+ },
1594
+ {
1595
+ "heading": "7. Open a tab from code",
1596
+ "anchor": "select"
1597
+ },
1598
+ {
1599
+ "heading": "8. A tab that opens a modal",
1600
+ "anchor": "button-tab"
1601
+ },
1602
+ {
1603
+ "heading": "9. Back on Android",
1604
+ "anchor": "android-back"
1605
+ },
1606
+ {
1607
+ "heading": "The chat that is open already",
1608
+ "anchor": "same-chat"
1609
+ },
1610
+ {
1611
+ "heading": "What every tab reads",
1612
+ "anchor": "shared"
1613
+ },
1614
+ {
1615
+ "heading": "Heavy tabs and a fast start",
1616
+ "anchor": "lazy"
1617
+ },
1618
+ {
1619
+ "heading": "On iPad and iOS 26",
1620
+ "anchor": "platforms"
1621
+ },
1622
+ {
1623
+ "heading": "The whole code",
1624
+ "anchor": "files"
1625
+ },
1626
+ {
1627
+ "heading": "What's next",
1628
+ "anchor": "next"
1629
+ }
1630
+ ]
1631
+ },
1632
+ {
1633
+ "id": "flows/list-and-details",
1634
+ "title": "List and details",
1635
+ "description": "A list that opens its items: a push on the phone, the list and the item side by side on iPad and wide Android screens, one call for both, a list that stays fresh after a change, and no second screen on a double tap.",
1636
+ "anchors": [
1637
+ {
1638
+ "heading": "What you need",
1639
+ "anchor": "need"
1640
+ },
1641
+ {
1642
+ "heading": "How it will work",
1643
+ "anchor": "plan"
1644
+ },
1645
+ {
1646
+ "heading": "1. Push the item on the phone",
1647
+ "anchor": "push"
1648
+ },
1649
+ {
1650
+ "heading": "2. Load the item from its id",
1651
+ "anchor": "load"
1652
+ },
1653
+ {
1654
+ "heading": "3. Put them side by side on iPad",
1655
+ "anchor": "split"
1656
+ },
1657
+ {
1658
+ "heading": "4. Open the item in the column beside",
1659
+ "anchor": "show-in-column"
1660
+ },
1661
+ {
1662
+ "heading": "5. Mark the open item",
1663
+ "anchor": "selected"
1664
+ },
1665
+ {
1666
+ "heading": "6. The sidebar",
1667
+ "anchor": "sidebar"
1668
+ },
1669
+ {
1670
+ "heading": "Pass the id, not the object",
1671
+ "anchor": "ids"
1672
+ },
1673
+ {
1674
+ "heading": "The list after a change on the details",
1675
+ "anchor": "refresh"
1676
+ },
1677
+ {
1678
+ "heading": "Two taps open two screens",
1679
+ "anchor": "double-tap"
1680
+ },
1681
+ {
1682
+ "heading": "The item is gone",
1683
+ "anchor": "missing"
1684
+ },
1685
+ {
1686
+ "heading": "The whole code",
1687
+ "anchor": "files"
1688
+ },
1689
+ {
1690
+ "heading": "What's next",
1691
+ "anchor": "next"
1692
+ }
1693
+ ]
1694
+ },
1695
+ {
1696
+ "id": "flows/forms-in-a-modal",
1697
+ "title": "Forms in a modal",
1698
+ "description": "A form in a modal with Cancel and Save, a question before unsaved changes are lost, the keyboard, and the saved value back on the screen that opened it.",
1699
+ "anchors": [
1700
+ {
1701
+ "heading": "What you need",
1702
+ "anchor": "need"
1703
+ },
1704
+ {
1705
+ "heading": "How it will work",
1706
+ "anchor": "plan"
1707
+ },
1708
+ {
1709
+ "heading": "1. Open the form",
1710
+ "anchor": "open"
1711
+ },
1712
+ {
1713
+ "heading": "2. Add Cancel and Save",
1714
+ "anchor": "buttons"
1715
+ },
1716
+ {
1717
+ "heading": "3. Save and close",
1718
+ "anchor": "save"
1719
+ },
1720
+ {
1721
+ "heading": "4. Give the value back",
1722
+ "anchor": "result"
1723
+ },
1724
+ {
1725
+ "heading": "5. Ask before changes are lost",
1726
+ "anchor": "prevent"
1727
+ },
1728
+ {
1729
+ "heading": "The keyboard",
1730
+ "anchor": "keyboard"
1731
+ },
1732
+ {
1733
+ "heading": "A result as a promise",
1734
+ "anchor": "promise"
1735
+ },
1736
+ {
1737
+ "heading": "Closed by something else",
1738
+ "anchor": "closed-elsewhere"
1739
+ },
1740
+ {
1741
+ "heading": "A form in steps",
1742
+ "anchor": "steps"
1743
+ },
1744
+ {
1745
+ "heading": "On iPad",
1746
+ "anchor": "ipad"
1747
+ },
1748
+ {
1749
+ "heading": "The whole code",
1750
+ "anchor": "files"
1751
+ },
1752
+ {
1753
+ "heading": "What's next",
1754
+ "anchor": "next"
1755
+ }
1756
+ ]
1757
+ },
1758
+ {
1759
+ "id": "flows/bottom-sheets",
1760
+ "title": "Bottom sheets",
1761
+ "description": "A sheet that stops at half and full height: its detents, a grabber, the screen under it kept usable, a list inside it, the detent the user picked, a pick back on the screen under it, and when a JavaScript sheet fits better.",
1762
+ "anchors": [
1763
+ {
1764
+ "heading": "What you need",
1765
+ "anchor": "need"
1766
+ },
1767
+ {
1768
+ "heading": "How it will work",
1769
+ "anchor": "plan"
1770
+ },
1771
+ {
1772
+ "heading": "1. Show a sheet",
1773
+ "anchor": "show"
1774
+ },
1775
+ {
1776
+ "heading": "2. Show the grabber",
1777
+ "anchor": "grabber"
1778
+ },
1779
+ {
1780
+ "heading": "3. Keep the screen under it usable",
1781
+ "anchor": "undimmed"
1782
+ },
1783
+ {
1784
+ "heading": "4. Put a list in it",
1785
+ "anchor": "list"
1786
+ },
1787
+ {
1788
+ "heading": "5. Know where the sheet is",
1789
+ "anchor": "event"
1790
+ },
1791
+ {
1792
+ "heading": "6. Move it from code",
1793
+ "anchor": "move"
1794
+ },
1795
+ {
1796
+ "heading": "7. A sheet as tall as its content",
1797
+ "anchor": "content"
1798
+ },
1799
+ {
1800
+ "heading": "8. Close it with a pick",
1801
+ "anchor": "close"
1802
+ },
1803
+ {
1804
+ "heading": "Two sheets on a double tap",
1805
+ "anchor": "double-tap"
1806
+ },
1807
+ {
1808
+ "heading": "A sheet with a draft",
1809
+ "anchor": "draft"
1810
+ },
1811
+ {
1812
+ "heading": "A native sheet or a JavaScript sheet",
1813
+ "anchor": "js-sheet"
1814
+ },
1815
+ {
1816
+ "heading": "On each platform",
1817
+ "anchor": "platforms"
1818
+ },
1819
+ {
1820
+ "heading": "The whole code",
1821
+ "anchor": "files"
1822
+ },
1823
+ {
1824
+ "heading": "What's next",
1825
+ "anchor": "next"
1826
+ }
1827
+ ]
1828
+ },
1829
+ {
1830
+ "id": "flows/a-search-screen",
1831
+ "title": "A search screen",
1832
+ "description": "A screen that searches with the search field of the platform: filtering as the user types, recent searches, results that open a screen, a search on the server that keeps up with the typing, suggestions, and a search tab.",
1833
+ "anchors": [
1834
+ {
1835
+ "heading": "What you need",
1836
+ "anchor": "need"
1837
+ },
1838
+ {
1839
+ "heading": "How it will work",
1840
+ "anchor": "plan"
1841
+ },
1842
+ {
1843
+ "heading": "1. Add the field",
1844
+ "anchor": "field"
1845
+ },
1846
+ {
1847
+ "heading": "2. Filter as the user types",
1848
+ "anchor": "filter"
1849
+ },
1850
+ {
1851
+ "heading": "3. Show something for an empty field",
1852
+ "anchor": "empty"
1853
+ },
1854
+ {
1855
+ "heading": "4. Open a result",
1856
+ "anchor": "open"
1857
+ },
1858
+ {
1859
+ "heading": "5. Search on the server",
1860
+ "anchor": "server"
1861
+ },
1862
+ {
1863
+ "heading": "Answers that come out of order",
1864
+ "anchor": "out-of-order"
1865
+ },
1866
+ {
1867
+ "heading": "6. Offer suggestions",
1868
+ "anchor": "suggestions"
1869
+ },
1870
+ {
1871
+ "heading": "7. Make it a search tab",
1872
+ "anchor": "tab"
1873
+ },
1874
+ {
1875
+ "heading": "Recent searches across launches",
1876
+ "anchor": "recent"
1877
+ },
1878
+ {
1879
+ "heading": "The whole code",
1880
+ "anchor": "files"
1881
+ },
1882
+ {
1883
+ "heading": "What's next",
1884
+ "anchor": "next"
1885
+ }
1886
+ ]
1887
+ },
1888
+ {
1889
+ "id": "guides/overview",
1890
+ "title": "All guides",
1891
+ "description": "Every guide and app flow by the task it answers: wiring a store or a fetch library, gestures, launch, links, notifications, errors, testing, and whole flows such as sign-in and tabs.",
1892
+ "anchors": [
1893
+ {
1894
+ "heading": "Start here",
1895
+ "anchor": "start"
1896
+ },
1897
+ {
1898
+ "heading": "Wire your libraries",
1899
+ "anchor": "libraries"
1900
+ },
1901
+ {
1902
+ "heading": "Launch and entry points",
1903
+ "anchor": "entry"
1904
+ },
1905
+ {
1906
+ "heading": "Whole app flows",
1907
+ "anchor": "flows"
1908
+ },
1909
+ {
1910
+ "heading": "Coming from another library",
1911
+ "anchor": "migration"
1912
+ }
1913
+ ]
1914
+ },
1915
+ {
1916
+ "id": "guides/building-a-screen",
1917
+ "title": "Building a screen",
1918
+ "description": "One screen from start to end: its component and props, its title and a Save button, fresh data each time it shows, and leaving it without losing changes.",
1919
+ "anchors": [
1920
+ {
1921
+ "heading": "What you need",
1922
+ "anchor": "need"
1923
+ },
1924
+ {
1925
+ "heading": "How it will work",
1926
+ "anchor": "plan"
1927
+ },
1928
+ {
1929
+ "heading": "1. The component and its props",
1930
+ "anchor": "component"
1931
+ },
1932
+ {
1933
+ "heading": "2. The data, each time the screen shows",
1934
+ "anchor": "data"
1935
+ },
1936
+ {
1937
+ "heading": "3. The title from the data",
1938
+ "anchor": "title"
1939
+ },
1940
+ {
1941
+ "heading": "4. A Save button",
1942
+ "anchor": "button"
1943
+ },
1944
+ {
1945
+ "heading": "5. Keep the edits when the user comes back",
1946
+ "anchor": "keep-edits"
1947
+ },
1948
+ {
1949
+ "heading": "6. Leave after a save",
1950
+ "anchor": "leave"
1951
+ },
1952
+ {
1953
+ "heading": "7. Ask before the changes are lost",
1954
+ "anchor": "prevent"
1955
+ },
1956
+ {
1957
+ "heading": "The complete file",
1958
+ "anchor": "file"
1959
+ },
1960
+ {
1961
+ "heading": "Coming from React Navigation",
1962
+ "anchor": "react-navigation"
1963
+ },
1964
+ {
1965
+ "heading": "A save that fails",
1966
+ "anchor": "save-fails"
1967
+ },
1968
+ {
1969
+ "heading": "The same note opened twice",
1970
+ "anchor": "same-note"
1971
+ },
1972
+ {
1973
+ "heading": "The note in a modal",
1974
+ "anchor": "modal"
1975
+ },
1976
+ {
1977
+ "heading": "The note from a store or a query client",
1978
+ "anchor": "stores"
1979
+ },
1980
+ {
1981
+ "heading": "When Android brings the app back",
1982
+ "anchor": "relaunch"
1983
+ },
1984
+ {
1985
+ "heading": "What's next",
1986
+ "anchor": "next"
1987
+ }
1988
+ ]
1989
+ },
1990
+ {
1991
+ "id": "guides/app-context",
1992
+ "title": "The app context, and working without it",
1993
+ "description": "What the app context is for, every way to read and change it, signing in and out with it, and the same app built with a store, with screen props, or with React context instead.",
1994
+ "anchors": [
1995
+ {
1996
+ "heading": "What the context is",
1997
+ "anchor": "what"
1998
+ },
1999
+ {
2000
+ "heading": "Why it exists",
2001
+ "anchor": "why"
2002
+ },
2003
+ {
2004
+ "heading": "What to keep in it",
2005
+ "anchor": "keep"
2006
+ },
2007
+ {
2008
+ "heading": "Set it up",
2009
+ "anchor": "set-up"
2010
+ },
2011
+ {
2012
+ "heading": "Its type and first value",
2013
+ "anchor": "type"
2014
+ },
2015
+ {
2016
+ "heading": "Register the type",
2017
+ "anchor": "register"
2018
+ },
2019
+ {
2020
+ "heading": "Read it",
2021
+ "anchor": "read"
2022
+ },
2023
+ {
2024
+ "heading": "In a component: useAppContext",
2025
+ "anchor": "use-app-context"
2026
+ },
2027
+ {
2028
+ "heading": "When the app starts",
2029
+ "anchor": "at-start"
2030
+ },
2031
+ {
2032
+ "heading": "In options",
2033
+ "anchor": "options"
2034
+ },
2035
+ {
2036
+ "heading": "In links",
2037
+ "anchor": "links"
2038
+ },
2039
+ {
2040
+ "heading": "Outside React",
2041
+ "anchor": "outside-react"
2042
+ },
2043
+ {
2044
+ "heading": "Change it",
2045
+ "anchor": "write"
2046
+ },
2047
+ {
2048
+ "heading": "What renders again",
2049
+ "anchor": "renders"
2050
+ },
2051
+ {
2052
+ "heading": "Sign-in and sign-out with the context",
2053
+ "anchor": "sign-in"
2054
+ },
2055
+ {
2056
+ "heading": "Without the context",
2057
+ "anchor": "without"
2058
+ },
2059
+ {
2060
+ "heading": "With a store only",
2061
+ "anchor": "only-store"
2062
+ },
2063
+ {
2064
+ "heading": "With screen props only",
2065
+ "anchor": "only-props"
2066
+ },
2067
+ {
2068
+ "heading": "With React context in appProvider",
2069
+ "anchor": "react-context"
2070
+ },
2071
+ {
2072
+ "heading": "Which to choose",
2073
+ "anchor": "choose"
2074
+ },
2075
+ {
2076
+ "heading": "Mistakes to avoid",
2077
+ "anchor": "pitfalls"
2078
+ },
2079
+ {
2080
+ "heading": "Everything in the context",
2081
+ "anchor": "everything"
2082
+ },
2083
+ {
2084
+ "heading": "Services and other values that aren't data",
2085
+ "anchor": "services"
2086
+ },
2087
+ {
2088
+ "heading": "Reading it before willMount",
2089
+ "anchor": "before-will-mount"
2090
+ },
2091
+ {
2092
+ "heading": "A selector that returns a new object",
2093
+ "anchor": "new-object"
2094
+ },
2095
+ {
2096
+ "heading": "Changing the object in place",
2097
+ "anchor": "mutation"
2098
+ },
2099
+ {
2100
+ "heading": "A title that doesn't follow the context",
2101
+ "anchor": "title"
2102
+ },
2103
+ {
2104
+ "heading": "What's next",
2105
+ "anchor": "next"
2106
+ }
2107
+ ]
2108
+ },
2109
+ {
2110
+ "id": "guides/state-management",
2111
+ "title": "State management",
2112
+ "description": "Wire Redux Toolkit, Zustand, Jotai, MobX or Valtio into an app whose screens are native: one store for every screen, the first root from it, sign-out and saved state.",
2113
+ "anchors": [
2114
+ {
2115
+ "heading": "What every store shares here",
2116
+ "anchor": "shared"
2117
+ },
2118
+ {
2119
+ "heading": "Each screen is a React root",
2120
+ "anchor": "roots"
2121
+ },
2122
+ {
2123
+ "heading": "A store in a module reaches every screen",
2124
+ "anchor": "module-store"
2125
+ },
2126
+ {
2127
+ "heading": "A provider wraps the screens in createNavigation",
2128
+ "anchor": "providers"
2129
+ },
2130
+ {
2131
+ "heading": "Reading and writing outside React",
2132
+ "anchor": "outside-react"
2133
+ },
2134
+ {
2135
+ "heading": "The first root from the store",
2136
+ "anchor": "first-root"
2137
+ },
2138
+ {
2139
+ "heading": "Signing in and out",
2140
+ "anchor": "sign-in-out"
2141
+ },
2142
+ {
2143
+ "heading": "Saving the state between launches",
2144
+ "anchor": "persist"
2145
+ },
2146
+ {
2147
+ "heading": "The store and the app's context",
2148
+ "anchor": "context"
2149
+ },
2150
+ {
2151
+ "heading": "Redux Toolkit",
2152
+ "anchor": "redux"
2153
+ },
2154
+ {
2155
+ "heading": "Install",
2156
+ "anchor": "redux-install"
2157
+ },
2158
+ {
2159
+ "heading": "Create the store",
2160
+ "anchor": "redux-create"
2161
+ },
2162
+ {
2163
+ "heading": "Connect it to the screens",
2164
+ "anchor": "redux-connect"
2165
+ },
2166
+ {
2167
+ "heading": "Read and write in a screen",
2168
+ "anchor": "redux-screen"
2169
+ },
2170
+ {
2171
+ "heading": "Outside React",
2172
+ "anchor": "redux-outside"
2173
+ },
2174
+ {
2175
+ "heading": "The first root and sign-out",
2176
+ "anchor": "redux-roots"
2177
+ },
2178
+ {
2179
+ "heading": "Save the state",
2180
+ "anchor": "redux-persist"
2181
+ },
2182
+ {
2183
+ "heading": "Zustand",
2184
+ "anchor": "zustand"
2185
+ },
2186
+ {
2187
+ "heading": "Install",
2188
+ "anchor": "zustand-install"
2189
+ },
2190
+ {
2191
+ "heading": "Create the store",
2192
+ "anchor": "zustand-create"
2193
+ },
2194
+ {
2195
+ "heading": "Connect it to the screens",
2196
+ "anchor": "zustand-connect"
2197
+ },
2198
+ {
2199
+ "heading": "Read and write in a screen",
2200
+ "anchor": "zustand-screen"
2201
+ },
2202
+ {
2203
+ "heading": "Outside React",
2204
+ "anchor": "zustand-outside"
2205
+ },
2206
+ {
2207
+ "heading": "The first root and sign-out",
2208
+ "anchor": "zustand-roots"
2209
+ },
2210
+ {
2211
+ "heading": "Save the state",
2212
+ "anchor": "zustand-persist"
2213
+ },
2214
+ {
2215
+ "heading": "Jotai",
2216
+ "anchor": "jotai"
2217
+ },
2218
+ {
2219
+ "heading": "Install",
2220
+ "anchor": "jotai-install"
2221
+ },
2222
+ {
2223
+ "heading": "Create the store",
2224
+ "anchor": "jotai-create"
2225
+ },
2226
+ {
2227
+ "heading": "Connect it to the screens",
2228
+ "anchor": "jotai-connect"
2229
+ },
2230
+ {
2231
+ "heading": "Read and write in a screen",
2232
+ "anchor": "jotai-screen"
2233
+ },
2234
+ {
2235
+ "heading": "Outside React",
2236
+ "anchor": "jotai-outside"
2237
+ },
2238
+ {
2239
+ "heading": "The first root and sign-out",
2240
+ "anchor": "jotai-roots"
2241
+ },
2242
+ {
2243
+ "heading": "Save the state",
2244
+ "anchor": "jotai-persist"
2245
+ },
2246
+ {
2247
+ "heading": "MobX",
2248
+ "anchor": "mobx"
2249
+ },
2250
+ {
2251
+ "heading": "Install",
2252
+ "anchor": "mobx-install"
2253
+ },
2254
+ {
2255
+ "heading": "Create the store",
2256
+ "anchor": "mobx-create"
2257
+ },
2258
+ {
2259
+ "heading": "Connect it to the screens",
2260
+ "anchor": "mobx-connect"
2261
+ },
2262
+ {
2263
+ "heading": "Read and write in a screen",
2264
+ "anchor": "mobx-screen"
2265
+ },
2266
+ {
2267
+ "heading": "Outside React",
2268
+ "anchor": "mobx-outside"
2269
+ },
2270
+ {
2271
+ "heading": "The first root and sign-out",
2272
+ "anchor": "mobx-roots"
2273
+ },
2274
+ {
2275
+ "heading": "Save the state",
2276
+ "anchor": "mobx-persist"
2277
+ },
2278
+ {
2279
+ "heading": "Valtio",
2280
+ "anchor": "valtio"
2281
+ },
2282
+ {
2283
+ "heading": "Install",
2284
+ "anchor": "valtio-install"
2285
+ },
2286
+ {
2287
+ "heading": "Create the store",
2288
+ "anchor": "valtio-create"
2289
+ },
2290
+ {
2291
+ "heading": "Connect it to the screens",
2292
+ "anchor": "valtio-connect"
2293
+ },
2294
+ {
2295
+ "heading": "Read and write in a screen",
2296
+ "anchor": "valtio-screen"
2297
+ },
2298
+ {
2299
+ "heading": "Outside React",
2300
+ "anchor": "valtio-outside"
2301
+ },
2302
+ {
2303
+ "heading": "The first root and sign-out",
2304
+ "anchor": "valtio-roots"
2305
+ },
2306
+ {
2307
+ "heading": "Save the state",
2308
+ "anchor": "valtio-persist"
2309
+ },
2310
+ {
2311
+ "heading": "The libraries side by side",
2312
+ "anchor": "compare"
2313
+ },
2314
+ {
2315
+ "heading": "Which to pick",
2316
+ "anchor": "which"
2317
+ },
2318
+ {
2319
+ "heading": "What's next",
2320
+ "anchor": "next"
2321
+ }
2322
+ ]
2323
+ },
2324
+ {
2325
+ "id": "guides/data-fetching",
2326
+ "title": "Data fetching",
2327
+ "description": "TanStack Query, SWR, Apollo Client and RTK Query with native screens: where the client and its provider go, loading before a screen shows, refreshing when a screen shows again, Suspense and errors.",
2328
+ "anchors": [
2329
+ {
2330
+ "heading": "How it works here",
2331
+ "anchor": "how"
2332
+ },
2333
+ {
2334
+ "heading": "One client, at module level",
2335
+ "anchor": "client"
2336
+ },
2337
+ {
2338
+ "heading": "Where the provider goes",
2339
+ "anchor": "provider"
2340
+ },
2341
+ {
2342
+ "heading": "A client created inside screenProvider",
2343
+ "anchor": "per-screen-client"
2344
+ },
2345
+ {
2346
+ "heading": "Ids in props, not objects",
2347
+ "anchor": "ids"
2348
+ },
2349
+ {
2350
+ "heading": "Loading before the screen shows",
2351
+ "anchor": "prefetch"
2352
+ },
2353
+ {
2354
+ "heading": "When the user comes back to a screen",
2355
+ "anchor": "refetch"
2356
+ },
2357
+ {
2358
+ "heading": "Screens the user doesn't see",
2359
+ "anchor": "hidden"
2360
+ },
2361
+ {
2362
+ "heading": "Suspense and the loading screen",
2363
+ "anchor": "suspense"
2364
+ },
2365
+ {
2366
+ "heading": "Errors",
2367
+ "anchor": "errors"
2368
+ },
2369
+ {
2370
+ "heading": "TanStack Query",
2371
+ "anchor": "tanstack-query"
2372
+ },
2373
+ {
2374
+ "heading": "Create the client",
2375
+ "anchor": "tanstack-client"
2376
+ },
2377
+ {
2378
+ "heading": "Connect it to the screens",
2379
+ "anchor": "tanstack-provider"
2380
+ },
2381
+ {
2382
+ "heading": "Read and write from a screen",
2383
+ "anchor": "tanstack-screen"
2384
+ },
2385
+ {
2386
+ "heading": "Load before the screen shows",
2387
+ "anchor": "tanstack-prefetch"
2388
+ },
2389
+ {
2390
+ "heading": "Suspense and errors",
2391
+ "anchor": "tanstack-suspense"
2392
+ },
2393
+ {
2394
+ "heading": "Sign-out",
2395
+ "anchor": "tanstack-sign-out"
2396
+ },
2397
+ {
2398
+ "heading": "Tests",
2399
+ "anchor": "tanstack-tests"
2400
+ },
2401
+ {
2402
+ "heading": "SWR",
2403
+ "anchor": "swr"
2404
+ },
2405
+ {
2406
+ "heading": "Create the cache",
2407
+ "anchor": "swr-cache"
2408
+ },
2409
+ {
2410
+ "heading": "Read and write from a screen",
2411
+ "anchor": "swr-screen"
2412
+ },
2413
+ {
2414
+ "heading": "Load before the screen shows",
2415
+ "anchor": "swr-prefetch"
2416
+ },
2417
+ {
2418
+ "heading": "Suspense and errors",
2419
+ "anchor": "swr-suspense"
2420
+ },
2421
+ {
2422
+ "heading": "Sign-out",
2423
+ "anchor": "swr-sign-out"
2424
+ },
2425
+ {
2426
+ "heading": "Apollo Client",
2427
+ "anchor": "apollo"
2428
+ },
2429
+ {
2430
+ "heading": "Create the client",
2431
+ "anchor": "apollo-client"
2432
+ },
2433
+ {
2434
+ "heading": "Connect it to the screens",
2435
+ "anchor": "apollo-provider"
2436
+ },
2437
+ {
2438
+ "heading": "Read and write from a screen",
2439
+ "anchor": "apollo-screen"
2440
+ },
2441
+ {
2442
+ "heading": "Load before the screen shows",
2443
+ "anchor": "apollo-prefetch"
2444
+ },
2445
+ {
2446
+ "heading": "Suspense and errors",
2447
+ "anchor": "apollo-suspense"
2448
+ },
2449
+ {
2450
+ "heading": "Sign-out",
2451
+ "anchor": "apollo-sign-out"
2452
+ },
2453
+ {
2454
+ "heading": "RTK Query",
2455
+ "anchor": "rtk-query"
2456
+ },
2457
+ {
2458
+ "heading": "Related",
2459
+ "anchor": "related"
2460
+ }
2461
+ ]
2462
+ },
2463
+ {
2464
+ "id": "guides/gestures-and-animations",
2465
+ "title": "Gestures and animations",
2466
+ "description": "Wire React Native Gesture Handler, Reanimated, @gorhom/bottom-sheet and Keyboard Controller into an app whose screens are native: where each provider goes, what they do next to the transitions and gestures of the platform, and what to test.",
2467
+ "anchors": [
2468
+ {
2469
+ "heading": "What you need",
2470
+ "anchor": "need"
2471
+ },
2472
+ {
2473
+ "heading": "How it fits",
2474
+ "anchor": "how"
2475
+ },
2476
+ {
2477
+ "heading": "1. Gesture Handler in every screen",
2478
+ "anchor": "gesture-handler"
2479
+ },
2480
+ {
2481
+ "heading": "In one tree",
2482
+ "anchor": "gesture-handler-one-tree"
2483
+ },
2484
+ {
2485
+ "heading": "A first gesture",
2486
+ "anchor": "first-gesture"
2487
+ },
2488
+ {
2489
+ "heading": "2. Gestures and the swipe back",
2490
+ "anchor": "swipe-back"
2491
+ },
2492
+ {
2493
+ "heading": "3. Gestures in a sheet",
2494
+ "anchor": "sheet-drag"
2495
+ },
2496
+ {
2497
+ "heading": "4. Reanimated",
2498
+ "anchor": "reanimated"
2499
+ },
2500
+ {
2501
+ "heading": "Animations as the screen comes in",
2502
+ "anchor": "entering"
2503
+ },
2504
+ {
2505
+ "heading": "Animations as the screen goes",
2506
+ "anchor": "exiting"
2507
+ },
2508
+ {
2509
+ "heading": "Shared elements",
2510
+ "anchor": "shared-elements"
2511
+ },
2512
+ {
2513
+ "heading": "5. @gorhom/bottom-sheet",
2514
+ "anchor": "bottom-sheet"
2515
+ },
2516
+ {
2517
+ "heading": "The platform's sheet or this one",
2518
+ "anchor": "which-sheet"
2519
+ },
2520
+ {
2521
+ "heading": "6. Keyboard Controller",
2522
+ "anchor": "keyboard-controller"
2523
+ },
2524
+ {
2525
+ "heading": "A library asks you to wrap the app root",
2526
+ "anchor": "wrap-the-root"
2527
+ },
2528
+ {
2529
+ "heading": "The whole setup",
2530
+ "anchor": "files"
2531
+ },
2532
+ {
2533
+ "heading": "What's next",
2534
+ "anchor": "next"
2535
+ }
2536
+ ]
2537
+ },
2538
+ {
2539
+ "id": "guides/splash-screen",
2540
+ "title": "Splash screen",
2541
+ "description": "The splash screen from the tap on the icon to the first screen: one command makes the native one on iOS and Android, the navigation keeps it until the first screen is drawn, and a splash of your own in React Native can continue it with an animation.",
2542
+ "anchors": [
2543
+ {
2544
+ "heading": "What you need",
2545
+ "anchor": "need"
2546
+ },
2547
+ {
2548
+ "heading": "How it will work",
2549
+ "anchor": "plan"
2550
+ },
2551
+ {
2552
+ "heading": "1. Make the native splash",
2553
+ "anchor": "command"
2554
+ },
2555
+ {
2556
+ "heading": "2. Build the app and launch it cold",
2557
+ "anchor": "check"
2558
+ },
2559
+ {
2560
+ "heading": "3. Keep the start short",
2561
+ "anchor": "short"
2562
+ },
2563
+ {
2564
+ "heading": "4. Add a splash of your own",
2565
+ "anchor": "own-splash"
2566
+ },
2567
+ {
2568
+ "heading": "5. Animate the logo",
2569
+ "anchor": "animate"
2570
+ },
2571
+ {
2572
+ "heading": "How the native splash stays",
2573
+ "anchor": "how-long"
2574
+ },
2575
+ {
2576
+ "heading": "What the command writes",
2577
+ "anchor": "files"
2578
+ },
2579
+ {
2580
+ "heading": "Light and dark",
2581
+ "anchor": "dark"
2582
+ },
2583
+ {
2584
+ "heading": "A progress while the start loads",
2585
+ "anchor": "progress"
2586
+ },
2587
+ {
2588
+ "heading": "The splash of your own is outside the providers",
2589
+ "anchor": "providers"
2590
+ },
2591
+ {
2592
+ "heading": "The splash in the navigation's state",
2593
+ "anchor": "state"
2594
+ },
2595
+ {
2596
+ "heading": "When the splash shows",
2597
+ "anchor": "launches"
2598
+ },
2599
+ {
2600
+ "heading": "When the start fails",
2601
+ "anchor": "failure"
2602
+ },
2603
+ {
2604
+ "heading": "In a development build",
2605
+ "anchor": "development"
2606
+ },
2607
+ {
2608
+ "heading": "Android shows an icon, not a picture",
2609
+ "anchor": "android-icon"
2610
+ },
2611
+ {
2612
+ "heading": "A launch screen of your own",
2613
+ "anchor": "custom"
2614
+ },
2615
+ {
2616
+ "heading": "Other splash screen libraries",
2617
+ "anchor": "libraries"
2618
+ },
2619
+ {
2620
+ "heading": "What's next",
2621
+ "anchor": "next"
2622
+ }
2623
+ ]
2624
+ },
2625
+ {
2626
+ "id": "guides/deep-links",
2627
+ "title": "Deep links",
2628
+ "description": "Links that open screens of the app: declaring them on iOS and Android, the routes, a link that launches the app and one that comes while it runs, links that wait for sign-in, and testing.",
2629
+ "anchors": [
2630
+ {
2631
+ "heading": "What you need",
2632
+ "anchor": "need"
2633
+ },
2634
+ {
2635
+ "heading": "How it will work",
2636
+ "anchor": "plan"
2637
+ },
2638
+ {
2639
+ "heading": "1. Declare the links",
2640
+ "anchor": "declare"
2641
+ },
2642
+ {
2643
+ "heading": "A scheme of the app",
2644
+ "anchor": "scheme"
2645
+ },
2646
+ {
2647
+ "heading": "Links to your web site",
2648
+ "anchor": "web-links"
2649
+ },
2650
+ {
2651
+ "heading": "The files your site serves",
2652
+ "anchor": "web-files"
2653
+ },
2654
+ {
2655
+ "heading": "2. Add the routes",
2656
+ "anchor": "routes"
2657
+ },
2658
+ {
2659
+ "heading": "Which route takes a URL",
2660
+ "anchor": "matching"
2661
+ },
2662
+ {
2663
+ "heading": "3. At a launch, and in a running app",
2664
+ "anchor": "start-and-open"
2665
+ },
2666
+ {
2667
+ "heading": "A link that launches the app, step by step",
2668
+ "anchor": "launch"
2669
+ },
2670
+ {
2671
+ "heading": "4. Links that wait for the sign-in",
2672
+ "anchor": "when"
2673
+ },
2674
+ {
2675
+ "heading": "Opened after the sign-in",
2676
+ "anchor": "auto"
2677
+ },
2678
+ {
2679
+ "heading": "Taken by the app",
2680
+ "anchor": "manual"
2681
+ },
2682
+ {
2683
+ "heading": "Typed params",
2684
+ "anchor": "params"
2685
+ },
2686
+ {
2687
+ "heading": "Errors, and links no route takes",
2688
+ "anchor": "errors"
2689
+ },
2690
+ {
2691
+ "heading": "Links no route takes",
2692
+ "anchor": "unmatched"
2693
+ },
2694
+ {
2695
+ "heading": "Links that come from elsewhere",
2696
+ "anchor": "other-sources"
2697
+ },
2698
+ {
2699
+ "heading": "When the app launches again",
2700
+ "anchor": "relaunch"
2701
+ },
2702
+ {
2703
+ "heading": "An app with its own scene delegate",
2704
+ "anchor": "scene-delegate"
2705
+ },
2706
+ {
2707
+ "heading": "Testing",
2708
+ "anchor": "testing"
2709
+ },
2710
+ {
2711
+ "heading": "The whole code",
2712
+ "anchor": "code"
2713
+ },
2714
+ {
2715
+ "heading": "What's next",
2716
+ "anchor": "next"
2717
+ }
2718
+ ]
2719
+ },
2720
+ {
2721
+ "id": "guides/notifications",
2722
+ "title": "Notifications that open a screen",
2723
+ "description": "A tap on a push notification opens its screen: with Firebase Cloud Messaging, Notifee or expo-notifications, in a running app, at a launch with the screen already in place, and after the user signs in.",
2724
+ "anchors": [
2725
+ {
2726
+ "heading": "What you need",
2727
+ "anchor": "need"
2728
+ },
2729
+ {
2730
+ "heading": "How it will work",
2731
+ "anchor": "plan"
2732
+ },
2733
+ {
2734
+ "heading": "1. One function that opens the screen",
2735
+ "anchor": "open"
2736
+ },
2737
+ {
2738
+ "heading": "2. Read the taps from your library",
2739
+ "anchor": "library"
2740
+ },
2741
+ {
2742
+ "heading": "3. A tap while the app runs",
2743
+ "anchor": "running"
2744
+ },
2745
+ {
2746
+ "heading": "4. A tap that launches the app",
2747
+ "anchor": "launch"
2748
+ },
2749
+ {
2750
+ "heading": "5. A tap while signed out",
2751
+ "anchor": "signed-out"
2752
+ },
2753
+ {
2754
+ "heading": "The order of a launch by a tap",
2755
+ "anchor": "order"
2756
+ },
2757
+ {
2758
+ "heading": "A command too early",
2759
+ "anchor": "too-early"
2760
+ },
2761
+ {
2762
+ "heading": "A notification while the user is in the app",
2763
+ "anchor": "foreground"
2764
+ },
2765
+ {
2766
+ "heading": "When the notification has a link",
2767
+ "anchor": "links"
2768
+ },
2769
+ {
2770
+ "heading": "When Android brings the app back",
2771
+ "anchor": "relaunch"
2772
+ },
2773
+ {
2774
+ "heading": "Testing a tap",
2775
+ "anchor": "testing"
2776
+ },
2777
+ {
2778
+ "heading": "The whole code",
2779
+ "anchor": "code"
2780
+ },
2781
+ {
2782
+ "heading": "What's next",
2783
+ "anchor": "next"
2784
+ }
2785
+ ]
2786
+ },
2787
+ {
2788
+ "id": "guides/analytics",
2789
+ "title": "Screen analytics",
2790
+ "description": "Every screen the user sees, sent to Firebase Analytics, Segment, PostHog or Amplitude from one place: the names of the screens, the data of a screen, modals, tabs and sheets, and the time on a screen.",
2791
+ "anchors": [
2792
+ {
2793
+ "heading": "What you need",
2794
+ "anchor": "need"
2795
+ },
2796
+ {
2797
+ "heading": "How it will work",
2798
+ "anchor": "plan"
2799
+ },
2800
+ {
2801
+ "heading": "1. One file for your analytics",
2802
+ "anchor": "module"
2803
+ },
2804
+ {
2805
+ "heading": "2. Report every screen",
2806
+ "anchor": "every-screen"
2807
+ },
2808
+ {
2809
+ "heading": "3. Name the screens for analytics",
2810
+ "anchor": "names"
2811
+ },
2812
+ {
2813
+ "heading": "4. What counts as a view",
2814
+ "anchor": "what-counts"
2815
+ },
2816
+ {
2817
+ "heading": "What the user looks at, sheets included",
2818
+ "anchor": "state"
2819
+ },
2820
+ {
2821
+ "heading": "5. The data of a screen",
2822
+ "anchor": "props"
2823
+ },
2824
+ {
2825
+ "heading": "6. The time on a screen",
2826
+ "anchor": "time"
2827
+ },
2828
+ {
2829
+ "heading": "7. Tabs",
2830
+ "anchor": "tabs"
2831
+ },
2832
+ {
2833
+ "heading": "Listening from your analytics module",
2834
+ "anchor": "on"
2835
+ },
2836
+ {
2837
+ "heading": "Your library's provider and hooks",
2838
+ "anchor": "providers"
2839
+ },
2840
+ {
2841
+ "heading": "The app in the background",
2842
+ "anchor": "background"
2843
+ },
2844
+ {
2845
+ "heading": "Testing the reports",
2846
+ "anchor": "testing"
2847
+ },
2848
+ {
2849
+ "heading": "The whole code",
2850
+ "anchor": "code"
2851
+ },
2852
+ {
2853
+ "heading": "What's next",
2854
+ "anchor": "next"
2855
+ }
2856
+ ]
2857
+ },
2858
+ {
2859
+ "id": "guides/error-reporting",
2860
+ "title": "Error reporting",
2861
+ "description": "Every error of the app in Sentry, Bugsnag or Crashlytics, with the screen it happened on: onError, an error screen with Try again, the screens the user went through, and native crashes.",
2862
+ "anchors": [
2863
+ {
2864
+ "heading": "How it will work",
2865
+ "anchor": "how"
2866
+ },
2867
+ {
2868
+ "heading": "1. Start Sentry before anything else",
2869
+ "anchor": "sentry-init"
2870
+ },
2871
+ {
2872
+ "heading": "2. Report what the navigation catches",
2873
+ "anchor": "on-error"
2874
+ },
2875
+ {
2876
+ "heading": "3. Show an error screen with a retry",
2877
+ "anchor": "fallback"
2878
+ },
2879
+ {
2880
+ "heading": "Where Sentry.wrap goes",
2881
+ "anchor": "sentry-wrap"
2882
+ },
2883
+ {
2884
+ "heading": "Not Sentry.ErrorBoundary",
2885
+ "anchor": "sentry-error-boundary"
2886
+ },
2887
+ {
2888
+ "heading": "4. Breadcrumbs of the screens",
2889
+ "anchor": "breadcrumbs"
2890
+ },
2891
+ {
2892
+ "heading": "5. Errors of commands",
2893
+ "anchor": "commands"
2894
+ },
2895
+ {
2896
+ "heading": "6. Native crashes",
2897
+ "anchor": "native"
2898
+ },
2899
+ {
2900
+ "heading": "Check it",
2901
+ "anchor": "check"
2902
+ },
2903
+ {
2904
+ "heading": "Bugsnag",
2905
+ "anchor": "bugsnag"
2906
+ },
2907
+ {
2908
+ "heading": "Firebase Crashlytics",
2909
+ "anchor": "crashlytics"
2910
+ },
2911
+ {
2912
+ "heading": "Related",
2913
+ "anchor": "related"
2914
+ }
2915
+ ]
2916
+ },
2917
+ {
2918
+ "id": "guides/right-to-left",
2919
+ "title": "Right-to-left and languages",
2920
+ "description": "An app in several languages on iOS and Android: translated texts and titles with i18next, the language of the device, a language switch inside the app, and right-to-left languages that turn the whole app around.",
2921
+ "anchors": [
2922
+ {
2923
+ "heading": "1. Follow the language of the app",
2924
+ "anchor": "locale"
2925
+ },
2926
+ {
2927
+ "heading": "2. Or a fixed direction",
2928
+ "anchor": "fixed"
2929
+ },
2930
+ {
2931
+ "heading": "What follows the direction",
2932
+ "anchor": "what-follows"
2933
+ },
2934
+ {
2935
+ "heading": "3. Translate the texts",
2936
+ "anchor": "translate"
2937
+ },
2938
+ {
2939
+ "heading": "Start i18next in a module",
2940
+ "anchor": "i18n-module"
2941
+ },
2942
+ {
2943
+ "heading": "Wait for it before the first screen",
2944
+ "anchor": "i18n-will-mount"
2945
+ },
2946
+ {
2947
+ "heading": "The language of the device",
2948
+ "anchor": "device-language"
2949
+ },
2950
+ {
2951
+ "heading": "4. Titles and tab labels",
2952
+ "anchor": "titles"
2953
+ },
2954
+ {
2955
+ "heading": "5. A language switch in the app",
2956
+ "anchor": "switch"
2957
+ },
2958
+ {
2959
+ "heading": "What the screens already shown do",
2960
+ "anchor": "shown-screens"
2961
+ },
2962
+ {
2963
+ "heading": "6. Keep the choice between launches",
2964
+ "anchor": "launch"
2965
+ },
2966
+ {
2967
+ "heading": "The user changes the language of the device",
2968
+ "anchor": "device-change"
2969
+ },
2970
+ {
2971
+ "heading": "Direction in your own code",
2972
+ "anchor": "own-code"
2973
+ },
2974
+ {
2975
+ "heading": "Related",
2976
+ "anchor": "related"
2977
+ }
2978
+ ]
2979
+ },
2980
+ {
2981
+ "id": "guides/testing",
2982
+ "title": "Testing",
2983
+ "description": "Tests of an app with native navigation: Jest with the navigation mocked once for every test, ids for the bars and the back button, end-to-end tests with Maestro and Detox, links opened cold and warm, and what only a device can check.",
2984
+ "anchors": [
2985
+ {
2986
+ "heading": "What you need",
2987
+ "anchor": "need"
2988
+ },
2989
+ {
2990
+ "heading": "How it will work",
2991
+ "anchor": "plan"
2992
+ },
2993
+ {
2994
+ "heading": "1. Set up Jest",
2995
+ "anchor": "jest"
2996
+ },
2997
+ {
2998
+ "heading": "2. A screen in Jest",
2999
+ "anchor": "screens"
3000
+ },
3001
+ {
3002
+ "heading": "A hook outside a screen",
3003
+ "anchor": "hook-outside"
3004
+ },
3005
+ {
3006
+ "heading": "3. Code outside the screens",
3007
+ "anchor": "outside"
3008
+ },
3009
+ {
3010
+ "heading": "4. Ids of the bars and the buttons",
3011
+ "anchor": "ids"
3012
+ },
3013
+ {
3014
+ "heading": "5. The back button",
3015
+ "anchor": "back-button"
3016
+ },
3017
+ {
3018
+ "heading": "6. An end-to-end test",
3019
+ "anchor": "e2e"
3020
+ },
3021
+ {
3022
+ "heading": "Links in end-to-end tests",
3023
+ "anchor": "links"
3024
+ },
3025
+ {
3026
+ "heading": "What only a device can check",
3027
+ "anchor": "device"
3028
+ },
3029
+ {
3030
+ "heading": "What's next",
3031
+ "anchor": "next"
3032
+ },
3033
+ {
3034
+ "heading": "API",
3035
+ "anchor": "api"
3036
+ }
3037
+ ]
3038
+ },
3039
+ {
3040
+ "id": "guides/cli",
3041
+ "title": "The CLI",
3042
+ "description": "Every command of apex-navigation: what it changes, its options and one example each, the JSON it prints for scripts and AI agents, its exit codes, and the MCP server for coding agents.",
3043
+ "anchors": [
3044
+ {
3045
+ "heading": "How the commands work",
3046
+ "anchor": "how"
3047
+ },
3048
+ {
3049
+ "heading": "Exit codes",
3050
+ "anchor": "exit-codes"
3051
+ },
3052
+ {
3053
+ "heading": "The JSON",
3054
+ "anchor": "json"
3055
+ },
3056
+ {
3057
+ "heading": "init",
3058
+ "anchor": "init"
3059
+ },
3060
+ {
3061
+ "heading": "setup",
3062
+ "anchor": "setup"
3063
+ },
3064
+ {
3065
+ "heading": "screen",
3066
+ "anchor": "screen"
3067
+ },
3068
+ {
3069
+ "heading": "codegen",
3070
+ "anchor": "codegen"
3071
+ },
3072
+ {
3073
+ "heading": "doctor",
3074
+ "anchor": "doctor"
3075
+ },
3076
+ {
3077
+ "heading": "info",
3078
+ "anchor": "info"
3079
+ },
3080
+ {
3081
+ "heading": "links",
3082
+ "anchor": "links"
3083
+ },
3084
+ {
3085
+ "heading": "Declare the links",
3086
+ "anchor": "links-declare"
3087
+ },
3088
+ {
3089
+ "heading": "Open a link",
3090
+ "anchor": "links-open"
3091
+ },
3092
+ {
3093
+ "heading": "Write the files of your web site",
3094
+ "anchor": "links-files"
3095
+ },
3096
+ {
3097
+ "heading": "icons",
3098
+ "anchor": "icons"
3099
+ },
3100
+ {
3101
+ "heading": "splash",
3102
+ "anchor": "splash"
3103
+ },
3104
+ {
3105
+ "heading": "upgrade",
3106
+ "anchor": "upgrade"
3107
+ },
3108
+ {
3109
+ "heading": "migrate",
3110
+ "anchor": "migrate"
3111
+ },
3112
+ {
3113
+ "heading": "AI agents",
3114
+ "anchor": "ai-agents"
3115
+ },
3116
+ {
3117
+ "heading": "The tools",
3118
+ "anchor": "mcp-tools"
3119
+ },
3120
+ {
3121
+ "heading": "The docs in the package",
3122
+ "anchor": "docs-in-package"
3123
+ },
3124
+ {
3125
+ "heading": "What's next",
3126
+ "anchor": "next"
3127
+ }
3128
+ ]
3129
+ },
3130
+ {
3131
+ "id": "migration/from-react-navigation",
3132
+ "title": "From React Navigation",
3133
+ "description": "Move an app from React Navigation 7 to @apexnative/navigation: the two models side by side, each piece of the old API mapped to the new one, and the move step by step.",
3134
+ "anchors": [
3135
+ {
3136
+ "heading": "Two models",
3137
+ "anchor": "models"
3138
+ },
3139
+ {
3140
+ "heading": "What it changes in the app",
3141
+ "anchor": "what-changes"
3142
+ },
3143
+ {
3144
+ "heading": "The map",
3145
+ "anchor": "map"
3146
+ },
3147
+ {
3148
+ "heading": "Structure",
3149
+ "anchor": "map-structure"
3150
+ },
3151
+ {
3152
+ "heading": "Moves",
3153
+ "anchor": "map-moves"
3154
+ },
3155
+ {
3156
+ "heading": "Screens",
3157
+ "anchor": "map-screens"
3158
+ },
3159
+ {
3160
+ "heading": "The move, step by step",
3161
+ "anchor": "steps"
3162
+ },
3163
+ {
3164
+ "heading": "Start with migrate",
3165
+ "anchor": "migrate"
3166
+ },
3167
+ {
3168
+ "heading": "1. Install and set up",
3169
+ "anchor": "install"
3170
+ },
3171
+ {
3172
+ "heading": "2. Screens and their params",
3173
+ "anchor": "screens"
3174
+ },
3175
+ {
3176
+ "heading": "3. The navigators become a root",
3177
+ "anchor": "root"
3178
+ },
3179
+ {
3180
+ "heading": "4. Register the app",
3181
+ "anchor": "register"
3182
+ },
3183
+ {
3184
+ "heading": "5. Moves between screens",
3185
+ "anchor": "moves"
3186
+ },
3187
+ {
3188
+ "heading": "6. Header options",
3189
+ "anchor": "options"
3190
+ },
3191
+ {
3192
+ "heading": "7. Modals",
3193
+ "anchor": "modals"
3194
+ },
3195
+ {
3196
+ "heading": "8. A drawer",
3197
+ "anchor": "drawer"
3198
+ },
3199
+ {
3200
+ "heading": "9. Hooks of a screen",
3201
+ "anchor": "hooks"
3202
+ },
3203
+ {
3204
+ "heading": "10. Providers and the theme",
3205
+ "anchor": "providers"
3206
+ },
3207
+ {
3208
+ "heading": "11. Signed in and signed out",
3209
+ "anchor": "auth"
3210
+ },
3211
+ {
3212
+ "heading": "12. Deep links",
3213
+ "anchor": "linking"
3214
+ },
3215
+ {
3216
+ "heading": "13. Typed routes",
3217
+ "anchor": "types"
3218
+ },
3219
+ {
3220
+ "heading": "14. Remove the old packages",
3221
+ "anchor": "cleanup"
3222
+ },
3223
+ {
3224
+ "heading": "What has no direct equivalent",
3225
+ "anchor": "no-equivalent"
3226
+ },
3227
+ {
3228
+ "heading": "Related",
3229
+ "anchor": "related"
3230
+ }
3231
+ ]
3232
+ },
3233
+ {
3234
+ "id": "migration/from-expo-router",
3235
+ "title": "From Expo Router",
3236
+ "description": "Move an app from Expo Router to @apexnative/navigation: files and registered screens side by side, what the native setup needs, and each piece of the old API mapped to the new one.",
3237
+ "anchors": [
3238
+ {
3239
+ "heading": "Before you start",
3240
+ "anchor": "before"
3241
+ },
3242
+ {
3243
+ "heading": "Two models",
3244
+ "anchor": "models"
3245
+ },
3246
+ {
3247
+ "heading": "What it changes in the app",
3248
+ "anchor": "what-changes"
3249
+ },
3250
+ {
3251
+ "heading": "The map",
3252
+ "anchor": "map"
3253
+ },
3254
+ {
3255
+ "heading": "Structure",
3256
+ "anchor": "map-structure"
3257
+ },
3258
+ {
3259
+ "heading": "Moves and hooks",
3260
+ "anchor": "map-moves"
3261
+ },
3262
+ {
3263
+ "heading": "The move, step by step",
3264
+ "anchor": "steps"
3265
+ },
3266
+ {
3267
+ "heading": "1. Routes become screens",
3268
+ "anchor": "screens"
3269
+ },
3270
+ {
3271
+ "heading": "2. Layout files become one layout",
3272
+ "anchor": "layouts"
3273
+ },
3274
+ {
3275
+ "heading": "3. The root layout and the entry point",
3276
+ "anchor": "entry"
3277
+ },
3278
+ {
3279
+ "heading": "4. Links and the router become commands",
3280
+ "anchor": "moves"
3281
+ },
3282
+ {
3283
+ "heading": "5. Modals",
3284
+ "anchor": "modals"
3285
+ },
3286
+ {
3287
+ "heading": "6. Options and header buttons",
3288
+ "anchor": "options"
3289
+ },
3290
+ {
3291
+ "heading": "7. Signed in and signed out",
3292
+ "anchor": "auth"
3293
+ },
3294
+ {
3295
+ "heading": "8. Deep links",
3296
+ "anchor": "linking"
3297
+ },
3298
+ {
3299
+ "heading": "9. Typed routes",
3300
+ "anchor": "types"
3301
+ },
3302
+ {
3303
+ "heading": "10. Hooks of a screen",
3304
+ "anchor": "hooks"
3305
+ },
3306
+ {
3307
+ "heading": "What has no direct equivalent",
3308
+ "anchor": "no-equivalent"
3309
+ },
3310
+ {
3311
+ "heading": "Related",
3312
+ "anchor": "related"
3313
+ }
3314
+ ]
3315
+ },
3316
+ {
3317
+ "id": "migration/from-react-native-navigation",
3318
+ "title": "From react-native-navigation",
3319
+ "description": "Move an app from react-native-navigation to @apexnative/navigation: the same native model, the new JavaScript API and setup, each old call mapped to the new one, and the move step by step.",
3320
+ "anchors": [
3321
+ {
3322
+ "heading": "Before you start",
3323
+ "anchor": "before"
3324
+ },
3325
+ {
3326
+ "heading": "The same model",
3327
+ "anchor": "models"
3328
+ },
3329
+ {
3330
+ "heading": "What changes in the app",
3331
+ "anchor": "what-changes"
3332
+ },
3333
+ {
3334
+ "heading": "The map",
3335
+ "anchor": "map"
3336
+ },
3337
+ {
3338
+ "heading": "Layouts",
3339
+ "anchor": "map-layouts"
3340
+ },
3341
+ {
3342
+ "heading": "Commands",
3343
+ "anchor": "map-commands"
3344
+ },
3345
+ {
3346
+ "heading": "Options and events",
3347
+ "anchor": "map-events"
3348
+ },
3349
+ {
3350
+ "heading": "Setup",
3351
+ "anchor": "map-setup"
3352
+ },
3353
+ {
3354
+ "heading": "The move, step by step",
3355
+ "anchor": "steps"
3356
+ },
3357
+ {
3358
+ "heading": "Start with migrate",
3359
+ "anchor": "migrate"
3360
+ },
3361
+ {
3362
+ "heading": "1. Swap the package",
3363
+ "anchor": "package"
3364
+ },
3365
+ {
3366
+ "heading": "2. The native files",
3367
+ "anchor": "native"
3368
+ },
3369
+ {
3370
+ "heading": "3. Register the screens",
3371
+ "anchor": "screens"
3372
+ },
3373
+ {
3374
+ "heading": "4. The first root, and the entry point",
3375
+ "anchor": "root"
3376
+ },
3377
+ {
3378
+ "heading": "5. Options next to the screen",
3379
+ "anchor": "options"
3380
+ },
3381
+ {
3382
+ "heading": "6. Commands without componentId",
3383
+ "anchor": "commands"
3384
+ },
3385
+ {
3386
+ "heading": "7. Modals and overlays",
3387
+ "anchor": "modals"
3388
+ },
3389
+ {
3390
+ "heading": "8. Buttons and the events of a screen",
3391
+ "anchor": "events"
3392
+ },
3393
+ {
3394
+ "heading": "9. Options of a shown screen",
3395
+ "anchor": "merge-options"
3396
+ },
3397
+ {
3398
+ "heading": "10. Leaving a screen",
3399
+ "anchor": "prevent"
3400
+ },
3401
+ {
3402
+ "heading": "11. Default options, the theme, providers",
3403
+ "anchor": "defaults"
3404
+ },
3405
+ {
3406
+ "heading": "12. Signed in and signed out",
3407
+ "anchor": "auth"
3408
+ },
3409
+ {
3410
+ "heading": "13. Deep links",
3411
+ "anchor": "linking"
3412
+ },
3413
+ {
3414
+ "heading": "14. Native components",
3415
+ "anchor": "native-screens"
3416
+ },
3417
+ {
3418
+ "heading": "15. Check and clean up",
3419
+ "anchor": "cleanup"
3420
+ },
3421
+ {
3422
+ "heading": "Option keys",
3423
+ "anchor": "option-keys"
3424
+ },
3425
+ {
3426
+ "heading": "Renamed or moved",
3427
+ "anchor": "option-keys-moved"
3428
+ },
3429
+ {
3430
+ "heading": "Removed",
3431
+ "anchor": "option-keys-removed"
3432
+ },
3433
+ {
3434
+ "heading": "What has no direct equivalent",
3435
+ "anchor": "no-equivalent"
3436
+ },
3437
+ {
3438
+ "heading": "Related",
3439
+ "anchor": "related"
3440
+ }
3441
+ ]
3442
+ },
3443
+ {
3444
+ "id": "help/glossary",
3445
+ "title": "Glossary",
3446
+ "description": "The words these docs use for the parts of the navigation, each in a sentence or two, with the page that explains it.",
3447
+ "anchors": [
3448
+ {
3449
+ "heading": "A",
3450
+ "anchor": "a"
3451
+ },
3452
+ {
3453
+ "heading": "Accessory",
3454
+ "anchor": "accessory"
3455
+ },
3456
+ {
3457
+ "heading": "App defaults",
3458
+ "anchor": "app-defaults"
3459
+ },
3460
+ {
3461
+ "heading": "appProvider",
3462
+ "anchor": "app-provider"
3463
+ },
3464
+ {
3465
+ "heading": "AppRegistry",
3466
+ "anchor": "app-registry"
3467
+ },
3468
+ {
3469
+ "heading": "Appear, disappear",
3470
+ "anchor": "appear"
3471
+ },
3472
+ {
3473
+ "heading": "B",
3474
+ "anchor": "b"
3475
+ },
3476
+ {
3477
+ "heading": "Back button",
3478
+ "anchor": "back-button"
3479
+ },
3480
+ {
3481
+ "heading": "Badge",
3482
+ "anchor": "badge"
3483
+ },
3484
+ {
3485
+ "heading": "Bar button",
3486
+ "anchor": "bar-button"
3487
+ },
3488
+ {
3489
+ "heading": "Builder",
3490
+ "anchor": "builder"
3491
+ },
3492
+ {
3493
+ "heading": "C",
3494
+ "anchor": "c"
3495
+ },
3496
+ {
3497
+ "heading": "Center",
3498
+ "anchor": "center"
3499
+ },
3500
+ {
3501
+ "heading": "Chain",
3502
+ "anchor": "chain"
3503
+ },
3504
+ {
3505
+ "heading": "Codegen",
3506
+ "anchor": "codegen"
3507
+ },
3508
+ {
3509
+ "heading": "Column",
3510
+ "anchor": "column"
3511
+ },
3512
+ {
3513
+ "heading": "Command",
3514
+ "anchor": "command"
3515
+ },
3516
+ {
3517
+ "heading": "Compact layout",
3518
+ "anchor": "compact"
3519
+ },
3520
+ {
3521
+ "heading": "Context",
3522
+ "anchor": "context"
3523
+ },
3524
+ {
3525
+ "heading": "D",
3526
+ "anchor": "d"
3527
+ },
3528
+ {
3529
+ "heading": "Detent",
3530
+ "anchor": "detent"
3531
+ },
3532
+ {
3533
+ "heading": "didMount",
3534
+ "anchor": "did-mount"
3535
+ },
3536
+ {
3537
+ "heading": "Direction",
3538
+ "anchor": "direction"
3539
+ },
3540
+ {
3541
+ "heading": "doctor",
3542
+ "anchor": "doctor"
3543
+ },
3544
+ {
3545
+ "heading": "E",
3546
+ "anchor": "e"
3547
+ },
3548
+ {
3549
+ "heading": "Edge effect",
3550
+ "anchor": "edge-effect"
3551
+ },
3552
+ {
3553
+ "heading": "Engine",
3554
+ "anchor": "engine"
3555
+ },
3556
+ {
3557
+ "heading": "errorFallback",
3558
+ "anchor": "error-fallback"
3559
+ },
3560
+ {
3561
+ "heading": "Event",
3562
+ "anchor": "event"
3563
+ },
3564
+ {
3565
+ "heading": "F",
3566
+ "anchor": "f"
3567
+ },
3568
+ {
3569
+ "heading": "FAB",
3570
+ "anchor": "fab"
3571
+ },
3572
+ {
3573
+ "heading": "Focused",
3574
+ "anchor": "focused"
3575
+ },
3576
+ {
3577
+ "heading": "Fold",
3578
+ "anchor": "fold"
3579
+ },
3580
+ {
3581
+ "heading": "Form sheet",
3582
+ "anchor": "form-sheet"
3583
+ },
3584
+ {
3585
+ "heading": "G",
3586
+ "anchor": "g"
3587
+ },
3588
+ {
3589
+ "heading": "Grabber",
3590
+ "anchor": "grabber"
3591
+ },
3592
+ {
3593
+ "heading": "Group",
3594
+ "anchor": "group"
3595
+ },
3596
+ {
3597
+ "heading": "H",
3598
+ "anchor": "h"
3599
+ },
3600
+ {
3601
+ "heading": "Hinge",
3602
+ "anchor": "hinge"
3603
+ },
3604
+ {
3605
+ "heading": "I",
3606
+ "anchor": "i"
3607
+ },
3608
+ {
3609
+ "heading": "Id of a screen",
3610
+ "anchor": "screen-id"
3611
+ },
3612
+ {
3613
+ "heading": "init",
3614
+ "anchor": "init"
3615
+ },
3616
+ {
3617
+ "heading": "initialRoot",
3618
+ "anchor": "initial-root"
3619
+ },
3620
+ {
3621
+ "heading": "Inspector",
3622
+ "anchor": "inspector"
3623
+ },
3624
+ {
3625
+ "heading": "K",
3626
+ "anchor": "k"
3627
+ },
3628
+ {
3629
+ "heading": "Key",
3630
+ "anchor": "key"
3631
+ },
3632
+ {
3633
+ "heading": "Keyboard shortcut",
3634
+ "anchor": "keyboard-shortcut"
3635
+ },
3636
+ {
3637
+ "heading": "L",
3638
+ "anchor": "l"
3639
+ },
3640
+ {
3641
+ "heading": "Large title",
3642
+ "anchor": "large-title"
3643
+ },
3644
+ {
3645
+ "heading": "Large window",
3646
+ "anchor": "large-window"
3647
+ },
3648
+ {
3649
+ "heading": "Layout",
3650
+ "anchor": "layout"
3651
+ },
3652
+ {
3653
+ "heading": "Lazy tabs",
3654
+ "anchor": "lazy-tabs"
3655
+ },
3656
+ {
3657
+ "heading": "Liquid Glass",
3658
+ "anchor": "liquid-glass"
3659
+ },
3660
+ {
3661
+ "heading": "listeners",
3662
+ "anchor": "listeners"
3663
+ },
3664
+ {
3665
+ "heading": "Loading a screen later",
3666
+ "anchor": "load"
3667
+ },
3668
+ {
3669
+ "heading": "loadingFallback",
3670
+ "anchor": "loading-fallback"
3671
+ },
3672
+ {
3673
+ "heading": "M",
3674
+ "anchor": "m"
3675
+ },
3676
+ {
3677
+ "heading": "Modal",
3678
+ "anchor": "modal"
3679
+ },
3680
+ {
3681
+ "heading": "Mounted",
3682
+ "anchor": "mounted"
3683
+ },
3684
+ {
3685
+ "heading": "Move",
3686
+ "anchor": "move"
3687
+ },
3688
+ {
3689
+ "heading": "N",
3690
+ "anchor": "n"
3691
+ },
3692
+ {
3693
+ "heading": "Native screen",
3694
+ "anchor": "native-screen"
3695
+ },
3696
+ {
3697
+ "heading": "navigation",
3698
+ "anchor": "navigation"
3699
+ },
3700
+ {
3701
+ "heading": "navigation-env.d.ts",
3702
+ "anchor": "navigation-env"
3703
+ },
3704
+ {
3705
+ "heading": "Navigation state",
3706
+ "anchor": "navigation-state"
3707
+ },
3708
+ {
3709
+ "heading": "O",
3710
+ "anchor": "o"
3711
+ },
3712
+ {
3713
+ "heading": "One tree",
3714
+ "anchor": "one-tree"
3715
+ },
3716
+ {
3717
+ "heading": "Options",
3718
+ "anchor": "options"
3719
+ },
3720
+ {
3721
+ "heading": "Overflow menu",
3722
+ "anchor": "overflow-menu"
3723
+ },
3724
+ {
3725
+ "heading": "Overlay",
3726
+ "anchor": "overlay"
3727
+ },
3728
+ {
3729
+ "heading": "P",
3730
+ "anchor": "p"
3731
+ },
3732
+ {
3733
+ "heading": "Pair",
3734
+ "anchor": "pair"
3735
+ },
3736
+ {
3737
+ "heading": "Popover",
3738
+ "anchor": "popover"
3739
+ },
3740
+ {
3741
+ "heading": "Presentation",
3742
+ "anchor": "presentation"
3743
+ },
3744
+ {
3745
+ "heading": "Presentation style",
3746
+ "anchor": "presentation-style"
3747
+ },
3748
+ {
3749
+ "heading": "Preset",
3750
+ "anchor": "preset"
3751
+ },
3752
+ {
3753
+ "heading": "Preview",
3754
+ "anchor": "preview"
3755
+ },
3756
+ {
3757
+ "heading": "Props",
3758
+ "anchor": "props"
3759
+ },
3760
+ {
3761
+ "heading": "R",
3762
+ "anchor": "r"
3763
+ },
3764
+ {
3765
+ "heading": "React root",
3766
+ "anchor": "react-root"
3767
+ },
3768
+ {
3769
+ "heading": "Reserved region",
3770
+ "anchor": "reserved-region"
3771
+ },
3772
+ {
3773
+ "heading": "Root",
3774
+ "anchor": "root"
3775
+ },
3776
+ {
3777
+ "heading": "Roots",
3778
+ "anchor": "roots"
3779
+ },
3780
+ {
3781
+ "heading": "Route",
3782
+ "anchor": "route"
3783
+ },
3784
+ {
3785
+ "heading": "S",
3786
+ "anchor": "s"
3787
+ },
3788
+ {
3789
+ "heading": "Safe area",
3790
+ "anchor": "safe-area"
3791
+ },
3792
+ {
3793
+ "heading": "Screen",
3794
+ "anchor": "screen"
3795
+ },
3796
+ {
3797
+ "heading": "screenProvider",
3798
+ "anchor": "screen-provider"
3799
+ },
3800
+ {
3801
+ "heading": "Search field",
3802
+ "anchor": "search-field"
3803
+ },
3804
+ {
3805
+ "heading": "setup",
3806
+ "anchor": "setup"
3807
+ },
3808
+ {
3809
+ "heading": "Shared elements",
3810
+ "anchor": "shared-elements"
3811
+ },
3812
+ {
3813
+ "heading": "Sheet",
3814
+ "anchor": "sheet"
3815
+ },
3816
+ {
3817
+ "heading": "Side menu",
3818
+ "anchor": "side-menu"
3819
+ },
3820
+ {
3821
+ "heading": "Sidebar",
3822
+ "anchor": "sidebar"
3823
+ },
3824
+ {
3825
+ "heading": "Splash screen",
3826
+ "anchor": "splash-screen"
3827
+ },
3828
+ {
3829
+ "heading": "Split view",
3830
+ "anchor": "split-view"
3831
+ },
3832
+ {
3833
+ "heading": "Stack",
3834
+ "anchor": "stack"
3835
+ },
3836
+ {
3837
+ "heading": "Starter",
3838
+ "anchor": "starter"
3839
+ },
3840
+ {
3841
+ "heading": "Status bar",
3842
+ "anchor": "status-bar"
3843
+ },
3844
+ {
3845
+ "heading": "Swipe back",
3846
+ "anchor": "swipe-back"
3847
+ },
3848
+ {
3849
+ "heading": "System back",
3850
+ "anchor": "system-back"
3851
+ },
3852
+ {
3853
+ "heading": "T",
3854
+ "anchor": "t"
3855
+ },
3856
+ {
3857
+ "heading": "Tab",
3858
+ "anchor": "tab"
3859
+ },
3860
+ {
3861
+ "heading": "Tab bar",
3862
+ "anchor": "tab-bar"
3863
+ },
3864
+ {
3865
+ "heading": "Theme",
3866
+ "anchor": "theme"
3867
+ },
3868
+ {
3869
+ "heading": "Title component",
3870
+ "anchor": "title-component"
3871
+ },
3872
+ {
3873
+ "heading": "Toolbar",
3874
+ "anchor": "toolbar"
3875
+ },
3876
+ {
3877
+ "heading": "Top bar",
3878
+ "anchor": "top-bar"
3879
+ },
3880
+ {
3881
+ "heading": "Transition",
3882
+ "anchor": "transition"
3883
+ },
3884
+ {
3885
+ "heading": "V",
3886
+ "anchor": "v"
3887
+ },
3888
+ {
3889
+ "heading": "Vertical bar",
3890
+ "anchor": "vertical-bar"
3891
+ },
3892
+ {
3893
+ "heading": "W",
3894
+ "anchor": "w"
3895
+ },
3896
+ {
3897
+ "heading": "Waiting link",
3898
+ "anchor": "waiting-link"
3899
+ },
3900
+ {
3901
+ "heading": "willMount",
3902
+ "anchor": "will-mount"
3903
+ },
3904
+ {
3905
+ "heading": "Window",
3906
+ "anchor": "window"
3907
+ },
3908
+ {
3909
+ "heading": "Z",
3910
+ "anchor": "z"
3911
+ },
3912
+ {
3913
+ "heading": "Zoom",
3914
+ "anchor": "zoom"
3915
+ }
3916
+ ]
3917
+ },
3918
+ {
3919
+ "id": "help/troubleshooting",
3920
+ "title": "Troubleshooting",
3921
+ "description": "Problems you may meet with the navigation, by area: what you see, why it happens, how to fix it, and the page that explains it.",
3922
+ "anchors": [
3923
+ {
3924
+ "heading": "Setup and build",
3925
+ "anchor": "setup"
3926
+ },
3927
+ {
3928
+ "heading": "setup stops: \"This is an Expo app\"",
3929
+ "anchor": "expo"
3930
+ },
3931
+ {
3932
+ "heading": "setup says a file is changed by hand",
3933
+ "anchor": "changed-by-hand"
3934
+ },
3935
+ {
3936
+ "heading": "doctor warns \"Another navigation\"",
3937
+ "anchor": "another-navigation"
3938
+ },
3939
+ {
3940
+ "heading": "Android: unresolved `com.reactnativenavigation` after setup",
3941
+ "anchor": "old-imports"
3942
+ },
3943
+ {
3944
+ "heading": "A screen ignores its static options",
3945
+ "anchor": "static-options"
3946
+ },
3947
+ {
3948
+ "heading": "The Android app crashes at start: React Native loads twice",
3949
+ "anchor": "loads-twice"
3950
+ },
3951
+ {
3952
+ "heading": "doctor warns about the JDK",
3953
+ "anchor": "jdk"
3954
+ },
3955
+ {
3956
+ "heading": "codegen stops on a prop",
3957
+ "anchor": "codegen"
3958
+ },
3959
+ {
3960
+ "heading": "Commands take any screen name",
3961
+ "anchor": "untyped"
3962
+ },
3963
+ {
3964
+ "heading": "Starting the app",
3965
+ "anchor": "start"
3966
+ },
3967
+ {
3968
+ "heading": "iOS logs \"RCTStatusBarManager module requires…\"",
3969
+ "anchor": "status-bar"
3970
+ },
3971
+ {
3972
+ "heading": "registerComponent \"expects the navigation made by createNavigation\"",
3973
+ "anchor": "register-component"
3974
+ },
3975
+ {
3976
+ "heading": "The app doesn't start: \"a name goes once\"",
3977
+ "anchor": "duplicate-name"
3978
+ },
3979
+ {
3980
+ "heading": "The splash screen never goes away",
3981
+ "anchor": "splash-stays"
3982
+ },
3983
+ {
3984
+ "heading": "The splash of your own doesn't show",
3985
+ "anchor": "own-splash-missing"
3986
+ },
3987
+ {
3988
+ "heading": "The splash of your own throws: no provider",
3989
+ "anchor": "splash-provider"
3990
+ },
3991
+ {
3992
+ "heading": "Login flashes before the tabs",
3993
+ "anchor": "login-flash"
3994
+ },
3995
+ {
3996
+ "heading": "iOS shows the old launch screen",
3997
+ "anchor": "launch-screen-cache"
3998
+ },
3999
+ {
4000
+ "heading": "An empty screen shows after the launch screen",
4001
+ "anchor": "empty-after-launch"
4002
+ },
4003
+ {
4004
+ "heading": "Android brings the app back without its pushed screens",
4005
+ "anchor": "android-relaunch"
4006
+ },
4007
+ {
4008
+ "heading": "Moving between screens",
4009
+ "anchor": "moves"
4010
+ },
4011
+ {
4012
+ "heading": "A hook throws \"is for the screens of createNavigation\"",
4013
+ "anchor": "hook-outside-screen"
4014
+ },
4015
+ {
4016
+ "heading": "pop rejects: \"the first screen of its stack\"",
4017
+ "anchor": "pop-first"
4018
+ },
4019
+ {
4020
+ "heading": "A command rejects: \"before the app started\"",
4021
+ "anchor": "command-before-start"
4022
+ },
4023
+ {
4024
+ "heading": "navigation has no dismiss or setOptions",
4025
+ "anchor": "no-dismiss"
4026
+ },
4027
+ {
4028
+ "heading": "switchTo fails: \"There is no root\"",
4029
+ "anchor": "switch-to-name"
4030
+ },
4031
+ {
4032
+ "heading": "selectTab doesn't select the tab",
4033
+ "anchor": "select-tab-id"
4034
+ },
4035
+ {
4036
+ "heading": "A push after selectTab lands in the old tab",
4037
+ "anchor": "push-after-select-tab"
4038
+ },
4039
+ {
4040
+ "heading": "The same chat opens twice",
4041
+ "anchor": "duplicate-screen"
4042
+ },
4043
+ {
4044
+ "heading": "A command fails: \"an id goes to one screen\"",
4045
+ "anchor": "id-clash"
4046
+ },
4047
+ {
4048
+ "heading": "Pushing a native screen fails",
4049
+ "anchor": "use-props"
4050
+ },
4051
+ {
4052
+ "heading": "useFocusEffect doesn't restart when a value changes",
4053
+ "anchor": "focus-effect"
4054
+ },
4055
+ {
4056
+ "heading": "A custom pop animation doesn't play on the swipe back",
4057
+ "anchor": "custom-pop"
4058
+ },
4059
+ {
4060
+ "heading": "Back on the first screen leaves without the system's animation",
4061
+ "anchor": "back-animation"
4062
+ },
4063
+ {
4064
+ "heading": "A BackHandler listener isn't called on the first screen",
4065
+ "anchor": "back-handler-early"
4066
+ },
4067
+ {
4068
+ "heading": "The zoom or the preview does nothing",
4069
+ "anchor": "zoom"
4070
+ },
4071
+ {
4072
+ "heading": "A split view on Android has no middle column",
4073
+ "anchor": "split-android"
4074
+ },
4075
+ {
4076
+ "heading": "Bars, tabs and buttons",
4077
+ "anchor": "bars"
4078
+ },
4079
+ {
4080
+ "heading": "The first rows of a list hide under the top bar",
4081
+ "anchor": "rows-under-bar"
4082
+ },
4083
+ {
4084
+ "heading": "A pick in the overflow menu does nothing",
4085
+ "anchor": "overflow-pick"
4086
+ },
4087
+ {
4088
+ "heading": "A press runs the handler of another button",
4089
+ "anchor": "button-ids"
4090
+ },
4091
+ {
4092
+ "heading": "The toolbar hides behind the tab bar",
4093
+ "anchor": "toolbar-tabs"
4094
+ },
4095
+ {
4096
+ "heading": "A list that loads later has no edge effect",
4097
+ "anchor": "scroll-edge"
4098
+ },
4099
+ {
4100
+ "heading": "The tab bar doesn't hide on scroll on Android",
4101
+ "anchor": "tabs-hide-on-scroll"
4102
+ },
4103
+ {
4104
+ "heading": "The user can't arrange the tabs on iPad",
4105
+ "anchor": "customizable"
4106
+ },
4107
+ {
4108
+ "heading": "Modals, sheets and overlays",
4109
+ "anchor": "modals"
4110
+ },
4111
+ {
4112
+ "heading": "An overlay blocks the app under it",
4113
+ "anchor": "overlay-touches"
4114
+ },
4115
+ {
4116
+ "heading": "An overFullScreen modal hides the screen under it",
4117
+ "anchor": "over-full-screen"
4118
+ },
4119
+ {
4120
+ "heading": "Cancel closes a form with unsaved changes",
4121
+ "anchor": "cancel-not-held"
4122
+ },
4123
+ {
4124
+ "heading": "A content sheet doesn't fit its content",
4125
+ "anchor": "content-sheet"
4126
+ },
4127
+ {
4128
+ "heading": "A sheet leaves out a detent on iOS 15",
4129
+ "anchor": "detents-ios-15"
4130
+ },
4131
+ {
4132
+ "heading": "Theme, context and direction",
4133
+ "anchor": "theme"
4134
+ },
4135
+ {
4136
+ "heading": "setTheme drops colors",
4137
+ "anchor": "set-theme"
4138
+ },
4139
+ {
4140
+ "heading": "A title from the context doesn't change",
4141
+ "anchor": "context-options"
4142
+ },
4143
+ {
4144
+ "heading": "A screen keeps old theme colors after setTheme",
4145
+ "anchor": "theme-options"
4146
+ },
4147
+ {
4148
+ "heading": "State in screenProvider starts over on each screen",
4149
+ "anchor": "screen-provider-state"
4150
+ },
4151
+ {
4152
+ "heading": "A shown screen keeps its direction after setDirection",
4153
+ "anchor": "direction"
4154
+ },
4155
+ {
4156
+ "heading": "Links and notifications",
4157
+ "anchor": "links"
4158
+ },
4159
+ {
4160
+ "heading": "A link doesn't open the app",
4161
+ "anchor": "link-not-declared"
4162
+ },
4163
+ {
4164
+ "heading": "The console warns \"No route of linking takes\"",
4165
+ "anchor": "unmatched"
4166
+ },
4167
+ {
4168
+ "heading": "A waiting link opens in the old root",
4169
+ "anchor": "link-old-root"
4170
+ },
4171
+ {
4172
+ "heading": "A failed link doesn't reach onError",
4173
+ "anchor": "link-error"
4174
+ },
4175
+ {
4176
+ "heading": "The launch link doesn't run after a reload",
4177
+ "anchor": "launch-link-reload"
4178
+ },
4179
+ {
4180
+ "heading": "A notification that launched the app opens its screen twice",
4181
+ "anchor": "notification-twice"
4182
+ },
4183
+ {
4184
+ "heading": "Tests",
4185
+ "anchor": "tests"
4186
+ },
4187
+ {
4188
+ "heading": "Jest can't parse the package",
4189
+ "anchor": "jest-esm"
4190
+ },
4191
+ {
4192
+ "heading": "A hook throws in Jest",
4193
+ "anchor": "jest-hook"
4194
+ },
4195
+ {
4196
+ "heading": "A command rejects in Jest",
4197
+ "anchor": "jest-command"
4198
+ },
4199
+ {
4200
+ "heading": "Related",
4201
+ "anchor": "related"
4202
+ }
4203
+ ]
4204
+ }
4205
+ ]