expo-router 5.2.0-canary-20250811-5c940c0 → 6.0.0-beta.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 (136) hide show
  1. package/assets/native-tabs.module.css +109 -0
  2. package/build/ExpoRoot.d.ts.map +1 -1
  3. package/build/ExpoRoot.js +0 -2
  4. package/build/ExpoRoot.js.map +1 -1
  5. package/build/fork/NavigationContainer.d.ts.map +1 -1
  6. package/build/fork/NavigationContainer.js +2 -0
  7. package/build/fork/NavigationContainer.js.map +1 -1
  8. package/build/global-state/routing.d.ts +6 -5
  9. package/build/global-state/routing.d.ts.map +1 -1
  10. package/build/global-state/routing.js +8 -11
  11. package/build/global-state/routing.js.map +1 -1
  12. package/build/head/ExpoHead.android.d.ts +1 -3
  13. package/build/imperative-api.d.ts +3 -1
  14. package/build/imperative-api.d.ts.map +1 -1
  15. package/build/imperative-api.js +4 -4
  16. package/build/imperative-api.js.map +1 -1
  17. package/build/layouts/DrawerClient.d.ts +2 -12
  18. package/build/layouts/DrawerClient.d.ts.map +1 -1
  19. package/build/layouts/Stack.web.d.ts +1 -1
  20. package/build/layouts/Stack.web.d.ts.map +1 -1
  21. package/build/layouts/Stack.web.js +3 -3
  22. package/build/layouts/Stack.web.js.map +1 -1
  23. package/build/layouts/StackClient.d.ts +2 -12
  24. package/build/layouts/StackClient.d.ts.map +1 -1
  25. package/build/layouts/StackClient.js +7 -8
  26. package/build/layouts/StackClient.js.map +1 -1
  27. package/build/layouts/TabsClient.d.ts +3 -18
  28. package/build/layouts/TabsClient.d.ts.map +1 -1
  29. package/build/layouts/withLayoutContext.d.ts +5 -1
  30. package/build/layouts/withLayoutContext.d.ts.map +1 -1
  31. package/build/layouts/withLayoutContext.js +21 -8
  32. package/build/layouts/withLayoutContext.js.map +1 -1
  33. package/build/link/LinkWithPreview.d.ts.map +1 -1
  34. package/build/link/LinkWithPreview.js +13 -4
  35. package/build/link/LinkWithPreview.js.map +1 -1
  36. package/build/link/elements.d.ts +17 -17
  37. package/build/link/elements.js +4 -4
  38. package/build/link/elements.js.map +1 -1
  39. package/build/link/preview/HrefPreview.d.ts.map +1 -1
  40. package/build/link/preview/HrefPreview.js +22 -4
  41. package/build/link/preview/HrefPreview.js.map +1 -1
  42. package/build/link/preview/native.d.ts.map +1 -1
  43. package/build/link/preview/native.js +1 -1
  44. package/build/link/preview/native.js.map +1 -1
  45. package/build/link/preview/useNextScreenId.d.ts.map +1 -1
  46. package/build/link/preview/useNextScreenId.js +0 -1
  47. package/build/link/preview/useNextScreenId.js.map +1 -1
  48. package/build/modal/ModalsRenderer.web.js +4 -4
  49. package/build/modal/ModalsRenderer.web.js.map +1 -1
  50. package/build/modal/web/{ModalStack.web.d.ts → ModalStack.d.ts} +1 -1
  51. package/build/modal/web/ModalStack.d.ts.map +1 -0
  52. package/build/modal/web/{ModalStack.web.js → ModalStack.js} +5 -5
  53. package/build/modal/web/ModalStack.js.map +1 -0
  54. package/build/modal/web/{ModalStackRouteDrawer.web.d.ts → ModalStackRouteDrawer.d.ts} +1 -1
  55. package/build/modal/web/ModalStackRouteDrawer.d.ts.map +1 -0
  56. package/build/modal/web/{ModalStackRouteDrawer.web.js → ModalStackRouteDrawer.js} +1 -1
  57. package/build/modal/web/ModalStackRouteDrawer.js.map +1 -0
  58. package/build/modal/web/{TransparentModalStackRouteDrawer.web.d.ts → TransparentModalStackRouteDrawer.d.ts} +1 -1
  59. package/build/modal/web/TransparentModalStackRouteDrawer.d.ts.map +1 -0
  60. package/build/modal/web/{TransparentModalStackRouteDrawer.web.js → TransparentModalStackRouteDrawer.js} +1 -1
  61. package/build/modal/web/TransparentModalStackRouteDrawer.js.map +1 -0
  62. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.d.ts +4 -12
  63. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.d.ts.map +1 -1
  64. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.js +17 -4
  65. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.js.map +1 -1
  66. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts +47 -0
  67. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts.map +1 -0
  68. package/build/native-tabs/NativeBottomTabs/{TabOptions.js → NativeTabTrigger.js} +57 -7
  69. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.js.map +1 -0
  70. package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts +22 -5
  71. package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts.map +1 -1
  72. package/build/native-tabs/NativeBottomTabs/NativeTabs.js +20 -2
  73. package/build/native-tabs/NativeBottomTabs/NativeTabs.js.map +1 -1
  74. package/build/native-tabs/NativeBottomTabs/NativeTabsView.d.ts +1 -100
  75. package/build/native-tabs/NativeBottomTabs/NativeTabsView.d.ts.map +1 -1
  76. package/build/native-tabs/NativeBottomTabs/NativeTabsView.js +61 -23
  77. package/build/native-tabs/NativeBottomTabs/NativeTabsView.js.map +1 -1
  78. package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.d.ts +4 -0
  79. package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.d.ts.map +1 -0
  80. package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.js +128 -0
  81. package/build/native-tabs/NativeBottomTabs/NativeTabsView.web.js.map +1 -0
  82. package/build/native-tabs/NativeBottomTabs/types.d.ts +193 -0
  83. package/build/native-tabs/NativeBottomTabs/types.d.ts.map +1 -0
  84. package/build/native-tabs/NativeBottomTabs/types.js +3 -0
  85. package/build/native-tabs/NativeBottomTabs/types.js.map +1 -0
  86. package/build/native-tabs/NativeBottomTabs/utils.d.ts +2 -2
  87. package/build/native-tabs/NativeBottomTabs/utils.d.ts.map +1 -1
  88. package/build/native-tabs/NativeBottomTabs/utils.js.map +1 -1
  89. package/build/native-tabs/common/elements.d.ts +21 -6
  90. package/build/native-tabs/common/elements.d.ts.map +1 -1
  91. package/build/native-tabs/common/elements.js +6 -0
  92. package/build/native-tabs/common/elements.js.map +1 -1
  93. package/build/native-tabs/index.d.ts +3 -1
  94. package/build/native-tabs/index.d.ts.map +1 -1
  95. package/build/native-tabs/index.js +18 -5
  96. package/build/native-tabs/index.js.map +1 -1
  97. package/build/rsc/middleware.d.ts +1 -1
  98. package/build/rsc/middleware.d.ts.map +1 -1
  99. package/build/rsc/middleware.js.map +1 -1
  100. package/build/rsc/router/client.d.ts +1 -3
  101. package/build/rsc/router/client.d.ts.map +1 -1
  102. package/build/testing-library/mocks.js +0 -7
  103. package/build/testing-library/mocks.js.map +1 -1
  104. package/build/ui/TabContext.d.ts +11 -21
  105. package/build/ui/TabContext.d.ts.map +1 -1
  106. package/build/ui/TabRouter.d.ts +7 -0
  107. package/build/ui/TabRouter.d.ts.map +1 -1
  108. package/build/ui/Tabs.d.ts +14 -23
  109. package/build/ui/Tabs.d.ts.map +1 -1
  110. package/build/useScreens.d.ts +1 -1
  111. package/build/useScreens.d.ts.map +1 -1
  112. package/build/useScreens.js +6 -4
  113. package/build/useScreens.js.map +1 -1
  114. package/build/views/Sitemap.d.ts.map +1 -1
  115. package/build/views/Sitemap.js +66 -36
  116. package/build/views/Sitemap.js.map +1 -1
  117. package/ios/LinkPreview/LinkPreviewNativeModule.swift +7 -1
  118. package/ios/LinkPreview/LinkPreviewNativePreviewView.swift +0 -1
  119. package/ios/LinkPreview/LinkPreviewNativeTriggerView.swift +1 -1
  120. package/ios/LinkPreview/LinkPreviewNativeView.swift +4 -3
  121. package/package.json +23 -21
  122. package/plugin/build/index.js +1 -1
  123. package/plugin/src/index.ts +1 -1
  124. package/plugin/tsconfig.tsbuildinfo +1 -0
  125. package/server.d.ts +2 -2
  126. package/unstable-native-tabs.d.ts +1 -0
  127. package/unstable-native-tabs.js +1 -0
  128. package/build/modal/web/ModalStack.web.d.ts.map +0 -1
  129. package/build/modal/web/ModalStack.web.js.map +0 -1
  130. package/build/modal/web/ModalStackRouteDrawer.web.d.ts.map +0 -1
  131. package/build/modal/web/ModalStackRouteDrawer.web.js.map +0 -1
  132. package/build/modal/web/TransparentModalStackRouteDrawer.web.d.ts.map +0 -1
  133. package/build/modal/web/TransparentModalStackRouteDrawer.web.js.map +0 -1
  134. package/build/native-tabs/NativeBottomTabs/TabOptions.d.ts +0 -40
  135. package/build/native-tabs/NativeBottomTabs/TabOptions.d.ts.map +0 -1
  136. package/build/native-tabs/NativeBottomTabs/TabOptions.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Sitemap.js","sourceRoot":"","sources":["../../src/views/Sitemap.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright © 2024 650 Industries.\n'use client';\n\nimport { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport Constants from 'expo-constants';\nimport React from 'react';\nimport {\n Image,\n StyleSheet,\n Text,\n View,\n ScrollView,\n Platform,\n StatusBar,\n ViewStyle,\n} from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nimport { NoSSR } from './NoSSR';\nimport { Pressable, PressableProps } from './Pressable';\nimport { useSitemap, SitemapType } from './useSitemap';\nimport { Link } from '../link/Link';\nimport { canOverrideStatusBarBehavior } from '../utils/statusbar';\n\nconst INDENT = 20;\n\nexport function getNavOptions(): NativeStackNavigationOptions {\n return {\n title: 'sitemap',\n presentation: 'modal',\n headerLargeTitle: false,\n headerTitleStyle: {\n color: 'white',\n },\n headerTintColor: 'white',\n headerLargeTitleStyle: {\n color: 'white',\n },\n headerStyle: {\n backgroundColor: 'black',\n // @ts-expect-error: mistyped\n borderBottomColor: '#323232',\n },\n header: () => {\n const WrapperElement = Platform.OS === 'android' ? SafeAreaView : View;\n return (\n <WrapperElement style={styles.header}>\n <View style={styles.headerContent}>\n <View style={styles.headerIcon}>\n <SitemapIcon />\n </View>\n <Text role=\"heading\" aria-level={1} style={styles.title}>\n Sitemap\n </Text>\n </View>\n </WrapperElement>\n );\n },\n };\n}\n\nexport function Sitemap() {\n // Following the https://github.com/expo/expo/blob/ubax/router/move-404-and-sitemap-to-root/packages/expo-router/src/getRoutesSSR.ts#L38\n // we need to ensure that the Sitemap component is not rendered on the server.\n return (\n <NoSSR>\n <SitemapInner />\n </NoSSR>\n );\n}\n\nfunction SitemapInner() {\n const sitemap = useSitemap();\n const children = React.useMemo(\n () => sitemap?.children.filter(({ isInternal }) => !isInternal) ?? [],\n [sitemap]\n );\n return (\n <View style={styles.container} testID=\"expo-router-sitemap\">\n {canOverrideStatusBarBehavior && <StatusBar barStyle=\"light-content\" />}\n <ScrollView contentContainerStyle={styles.scroll} contentInsetAdjustmentBehavior=\"automatic\">\n {children.map((child) => (\n <View testID=\"sitemap-item-container\" key={child.contextKey} style={styles.itemContainer}>\n <SitemapItem node={child} />\n </View>\n ))}\n <SystemInfo />\n </ScrollView>\n </View>\n );\n}\n\ninterface SitemapItemProps {\n node: SitemapType;\n level?: number;\n info?: string;\n}\n\nfunction SitemapItem({ node, level = 0 }: SitemapItemProps) {\n const isLayout = React.useMemo(\n () => node.children.length > 0 || node.contextKey.match(/_layout\\.[jt]sx?$/),\n [node]\n );\n const info = node.isInitial ? 'Initial' : node.isGenerated ? 'Generated' : '';\n\n if (isLayout) {\n return <LayoutSitemapItem node={node} level={level} info={info} />;\n }\n return <StandardSitemapItem node={node} level={level} info={info} />;\n}\nfunction LayoutSitemapItem({ node, level, info }: Required<SitemapItemProps>) {\n const [isCollapsed, setIsCollapsed] = React.useState(true);\n\n return (\n <>\n <SitemapItemPressable\n style={{ opacity: 0.4 }}\n leftIcon={<PkgIcon />}\n rightIcon={<ArrowIcon rotation={isCollapsed ? 0 : 180} />}\n filename={node.filename}\n level={level}\n info={info}\n onPress={() => setIsCollapsed((prev) => !prev)}\n />\n {!isCollapsed &&\n node.children.map((child) => (\n <SitemapItem\n key={child.contextKey}\n node={child}\n level={level + (node.isGenerated ? 0 : 1)}\n />\n ))}\n </>\n );\n}\n\nfunction StandardSitemapItem({ node, info, level }: Required<SitemapItemProps>) {\n return (\n <Link\n accessibilityLabel={node.contextKey}\n href={node.href}\n asChild\n // Ensure we replace the history so you can't go back to this page.\n replace>\n <SitemapItemPressable\n leftIcon={<FileIcon />}\n rightIcon={<ForwardIcon />}\n filename={node.filename}\n level={level}\n info={info}\n />\n </Link>\n );\n}\n\nfunction SitemapItemPressable({\n style,\n leftIcon,\n rightIcon,\n filename,\n level,\n info,\n ...pressableProps\n}: {\n style?: ViewStyle;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n filename: string;\n level: number;\n info?: string;\n} & Omit<PressableProps, 'style' | 'children'>) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed, hovered }) => (\n <View\n testID=\"sitemap-item\"\n style={[\n styles.itemPressable,\n {\n paddingLeft: INDENT + level * INDENT,\n backgroundColor: hovered ? '#202425' : 'transparent',\n },\n pressed && { backgroundColor: '#26292b' },\n style,\n ]}>\n <View style={{ flexDirection: 'row', alignItems: 'center' }}>\n {leftIcon}\n <Text style={styles.filename}>{filename}</Text>\n </View>\n\n <View style={{ flexDirection: 'row', alignItems: 'center' }}>\n {!!info && <Text style={[styles.virtual, { marginRight: 8 }]}>{info}</Text>}\n {rightIcon}\n </View>\n </View>\n )}\n </Pressable>\n );\n}\n\nfunction FileIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/file.png')} />;\n}\n\nfunction PkgIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/pkg.png')} />;\n}\n\nfunction ForwardIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/forward.png')} />;\n}\n\nfunction SitemapIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/sitemap.png')} />;\n}\n\nfunction ArrowIcon({ rotation = 0 }: { rotation?: number }) {\n return (\n <Image\n style={[\n styles.image,\n {\n transform: [{ rotate: `${rotation}deg` }],\n },\n ]}\n source={require('expo-router/assets/arrow_down.png')}\n />\n );\n}\n\nfunction SystemInfo() {\n const getHermesVersion = () => {\n if (global.HermesInternal) {\n const runtimeProps = global.HermesInternal.getRuntimeProperties?.();\n if (runtimeProps) {\n return runtimeProps['OSS Release Version'] || 'Unknown';\n }\n }\n return null;\n };\n\n const locationOrigin = window.location.origin;\n const expoSdkVersion = Constants.expoConfig?.sdkVersion || 'Unknown';\n const hermesVersion = getHermesVersion();\n\n return (\n <View testID=\"sitemap-system-info\" style={styles.systemInfoContainer}>\n <Text style={styles.systemInfoTitle}>System Information</Text>\n {locationOrigin && (\n <View style={styles.systemInfoItem}>\n <Text style={styles.systemInfoLabel}>Location origin:</Text>\n <Text style={styles.systemInfoValue}>{locationOrigin}</Text>\n </View>\n )}\n <View style={styles.systemInfoItem}>\n <Text style={styles.systemInfoLabel}>Expo SDK version:</Text>\n <Text style={styles.systemInfoValue}>{expoSdkVersion}</Text>\n </View>\n {hermesVersion && (\n <View style={styles.systemInfoItem}>\n <Text style={styles.systemInfoLabel}>Hermes version:</Text>\n <Text style={styles.systemInfoValue} numberOfLines={1} ellipsizeMode=\"tail\">\n {hermesVersion}\n </Text>\n </View>\n )}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'black',\n flex: 1,\n alignItems: 'stretch',\n },\n header: {\n backgroundColor: '#151718',\n paddingVertical: 16,\n borderBottomWidth: 1,\n borderColor: '#313538',\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.33)',\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 14,\n paddingHorizontal: '5%',\n ...Platform.select({\n web: {\n width: '100%',\n maxWidth: 960,\n marginHorizontal: 'auto',\n },\n }),\n },\n title: {\n color: 'white',\n fontSize: 28,\n fontWeight: 'bold',\n },\n scroll: {\n paddingHorizontal: '5%',\n paddingVertical: 16,\n ...Platform.select({\n ios: {\n paddingBottom: 24,\n },\n web: {\n width: '100%',\n maxWidth: 960,\n marginHorizontal: 'auto',\n paddingBottom: 24,\n },\n default: {\n paddingBottom: 12,\n },\n }),\n },\n itemContainer: {\n borderWidth: 1,\n borderColor: '#313538',\n backgroundColor: '#151718',\n borderRadius: 12,\n marginBottom: 12,\n overflow: 'hidden',\n },\n itemPressable: {\n paddingHorizontal: INDENT,\n paddingVertical: 16,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n ...Platform.select({\n web: {\n transitionDuration: '100ms',\n },\n }),\n },\n filename: { color: 'white', fontSize: 20, marginLeft: 12 },\n virtual: { textAlign: 'right', color: 'white' },\n image: { width: 24, height: 24, resizeMode: 'contain', opacity: 0.6 },\n headerIcon: {\n width: 40,\n height: 40,\n backgroundColor: '#202425',\n borderRadius: 8,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n systemInfoContainer: {\n borderWidth: 1,\n borderColor: '#313538',\n backgroundColor: '#151718',\n borderRadius: 12,\n padding: INDENT,\n marginTop: 24,\n },\n systemInfoTitle: {\n color: 'white',\n fontSize: 18,\n fontWeight: '600',\n marginBottom: 12,\n },\n systemInfoItem: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingVertical: 8,\n },\n systemInfoLabel: {\n color: 'white',\n fontSize: 16,\n opacity: 0.7,\n },\n systemInfoValue: {\n color: 'white',\n fontSize: 16,\n flex: 1,\n textAlign: 'right',\n marginLeft: 12,\n },\n});\n"]}
1
+ {"version":3,"file":"Sitemap.js","sourceRoot":"","sources":["../../src/views/Sitemap.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright © 2024 650 Industries.\n'use client';\n\nimport { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport Constants from 'expo-constants';\nimport React from 'react';\nimport {\n Image,\n StyleSheet,\n Text,\n View,\n ScrollView,\n Platform,\n StatusBar,\n ViewStyle,\n} from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nimport { NoSSR } from './NoSSR';\nimport { Pressable, PressableProps } from './Pressable';\nimport { useSitemap, SitemapType } from './useSitemap';\nimport { Link } from '../link/Link';\nimport { canOverrideStatusBarBehavior } from '../utils/statusbar';\n\nconst INDENT = 20;\n\nexport function getNavOptions(): NativeStackNavigationOptions {\n return {\n title: 'sitemap',\n presentation: 'modal',\n headerLargeTitle: false,\n headerTitleStyle: {\n color: 'white',\n },\n headerShown: true,\n headerTintColor: 'white',\n headerLargeTitleStyle: {\n color: 'white',\n },\n headerStyle: {\n backgroundColor: 'black',\n // @ts-expect-error: mistyped\n borderBottomColor: '#323232',\n },\n header: () => {\n const WrapperElement = Platform.OS === 'android' ? SafeAreaView : View;\n return (\n <WrapperElement style={styles.header}>\n <View style={styles.headerContent}>\n <View style={styles.headerIcon}>\n <SitemapIcon />\n </View>\n <Text role=\"heading\" aria-level={1} style={styles.title}>\n Sitemap\n </Text>\n </View>\n </WrapperElement>\n );\n },\n };\n}\n\nexport function Sitemap() {\n // Following the https://github.com/expo/expo/blob/ubax/router/move-404-and-sitemap-to-root/packages/expo-router/src/getRoutesSSR.ts#L38\n // we need to ensure that the Sitemap component is not rendered on the server.\n return (\n <NoSSR>\n <SitemapInner />\n </NoSSR>\n );\n}\n\nfunction SitemapInner() {\n const sitemap = useSitemap();\n const children = React.useMemo(\n () => sitemap?.children.filter(({ isInternal }) => !isInternal) ?? [],\n [sitemap]\n );\n return (\n <View style={styles.container} testID=\"expo-router-sitemap\">\n {canOverrideStatusBarBehavior && <StatusBar barStyle=\"light-content\" />}\n <ScrollView\n contentContainerStyle={styles.scroll}\n automaticallyAdjustContentInsets\n contentInsetAdjustmentBehavior=\"automatic\">\n {children.map((child) => (\n <View testID=\"sitemap-item-container\" key={child.contextKey} style={styles.itemContainer}>\n <SitemapItem node={child} />\n </View>\n ))}\n <SystemInfo />\n </ScrollView>\n </View>\n );\n}\n\ninterface SitemapItemProps {\n node: SitemapType;\n level?: number;\n info?: string;\n}\n\nfunction SitemapItem({ node, level = 0 }: SitemapItemProps) {\n const isLayout = React.useMemo(\n () => node.children.length > 0 || node.contextKey.match(/_layout\\.[jt]sx?$/),\n [node]\n );\n const info = node.isInitial ? 'Initial' : node.isGenerated ? 'Generated' : '';\n\n if (isLayout) {\n return <LayoutSitemapItem node={node} level={level} info={info} />;\n }\n return <StandardSitemapItem node={node} level={level} info={info} />;\n}\n\nfunction LayoutSitemapItem({ node, level, info }: Required<SitemapItemProps>) {\n const [isCollapsed, setIsCollapsed] = React.useState(true);\n\n return (\n <View style={styles.itemInnerContainer}>\n <SitemapItemPressable\n style={{ opacity: 0.4 }}\n leftIcon={<PkgIcon />}\n rightIcon={<ArrowIcon rotation={isCollapsed ? 0 : 180} />}\n filename={node.filename}\n level={level}\n info={info}\n onPress={() => setIsCollapsed((prev) => !prev)}\n />\n {!isCollapsed &&\n node.children.map((child) => (\n <SitemapItem\n key={child.contextKey}\n node={child}\n level={level + (node.isGenerated ? 0 : 1)}\n />\n ))}\n </View>\n );\n}\n\nfunction StandardSitemapItem({ node, info, level }: Required<SitemapItemProps>) {\n return (\n <Link accessibilityLabel={node.contextKey} href={node.href} asChild replace>\n <SitemapItemPressable\n leftIcon={<FileIcon />}\n rightIcon={<ForwardIcon />}\n filename={node.filename}\n level={level}\n info={info}\n />\n </Link>\n );\n}\n\nfunction SitemapItemPressable({\n style,\n leftIcon,\n rightIcon,\n filename,\n level,\n info,\n ...pressableProps\n}: {\n style?: ViewStyle;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n filename: string;\n level: number;\n info?: string;\n} & Omit<PressableProps, 'style' | 'children'>) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed, hovered }) => (\n <View\n testID=\"sitemap-item\"\n style={[\n styles.itemInnerContainer,\n styles.itemPressable,\n {\n paddingLeft: INDENT + level * INDENT,\n backgroundColor: hovered ? '#202425' : '#151718',\n },\n pressed && { backgroundColor: '#26292b' },\n style,\n ]}>\n <View style={{ flexDirection: 'row', alignItems: 'center' }}>\n {leftIcon}\n <Text style={styles.filename}>{filename}</Text>\n </View>\n\n <View style={{ flexDirection: 'row', alignItems: 'center' }}>\n {!!info && <Text style={[styles.virtual, { marginRight: 8 }]}>{info}</Text>}\n {rightIcon}\n </View>\n </View>\n )}\n </Pressable>\n );\n}\n\nfunction FileIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/file.png')} />;\n}\n\nfunction PkgIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/pkg.png')} />;\n}\n\nfunction ForwardIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/forward.png')} />;\n}\n\nfunction SitemapIcon() {\n return <Image style={styles.image} source={require('expo-router/assets/sitemap.png')} />;\n}\n\nfunction ArrowIcon({ rotation = 0 }: { rotation?: number }) {\n return (\n <Image\n style={[\n styles.image,\n {\n transform: [{ rotate: `${rotation}deg` }],\n },\n ]}\n source={require('expo-router/assets/arrow_down.png')}\n />\n );\n}\n\nfunction SystemInfo() {\n const getHermesVersion = () => {\n if (!global.HermesInternal) {\n return null;\n }\n\n const HERMES_RUNTIME = global.HermesInternal?.getRuntimeProperties?.() ?? {};\n const HERMES_VERSION = HERMES_RUNTIME['OSS Release Version'];\n const isStaticHermes = HERMES_RUNTIME['Static Hermes'];\n\n if (!HERMES_RUNTIME) {\n return null;\n }\n\n if (isStaticHermes) {\n return `${HERMES_VERSION} (shermes)`;\n }\n return HERMES_VERSION;\n };\n\n const locationOrigin = window.location.origin;\n const expoSdkVersion = Constants.expoConfig?.sdkVersion || 'Unknown';\n const hermesVersion = getHermesVersion();\n\n return (\n <View\n testID=\"sitemap-system-info\"\n style={{\n gap: 8,\n marginTop: 16,\n }}>\n <Text style={styles.systemInfoTitle}>System Information</Text>\n <View style={styles.systemInfoContainer}>\n <FormText right={process.env.NODE_ENV}>Mode</FormText>\n <FormText right={expoSdkVersion}>Expo SDK</FormText>\n {hermesVersion && <FormText right={hermesVersion}>Hermes version</FormText>}\n {locationOrigin && <FormText right={locationOrigin}>Location origin</FormText>}\n </View>\n </View>\n );\n}\n\nfunction FormText({ children, right }: { children?: React.ReactNode; right?: React.ReactNode }) {\n return (\n <View style={styles.systemInfoItem}>\n <Text style={styles.systemInfoLabel} numberOfLines={1} ellipsizeMode=\"tail\">\n {children}\n </Text>\n <View style={{ flex: 1 }} />\n\n <Text\n selectable\n style={[styles.systemInfoValue, styles.code]}\n numberOfLines={1}\n ellipsizeMode=\"tail\">\n {right}\n </Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: 'black',\n flex: 1,\n alignItems: 'stretch',\n },\n header: {\n backgroundColor: '#151718',\n paddingVertical: 16,\n borderBottomWidth: 1,\n borderColor: '#313538',\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.33)',\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 14,\n paddingHorizontal: '5%',\n ...Platform.select({\n web: {\n width: '100%',\n maxWidth: 960,\n marginHorizontal: 'auto',\n },\n }),\n },\n title: {\n color: 'white',\n fontSize: 28,\n fontWeight: 'bold',\n },\n scroll: {\n gap: 12,\n paddingHorizontal: '5%',\n paddingVertical: 16,\n ...Platform.select({\n ios: {\n paddingBottom: 24,\n },\n web: {\n width: '100%',\n maxWidth: 960,\n marginHorizontal: 'auto',\n paddingBottom: 24,\n },\n default: {\n paddingBottom: 12,\n },\n }),\n },\n itemContainer: {\n borderWidth: 1,\n borderColor: '#313538',\n backgroundColor: '#151718',\n borderRadius: 12,\n borderCurve: 'continuous',\n },\n itemInnerContainer: {\n backgroundColor: '#151718',\n borderRadius: 12,\n borderCurve: 'continuous',\n gap: 12,\n },\n itemPressable: {\n paddingHorizontal: INDENT,\n paddingVertical: 16,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n ...Platform.select({\n web: {\n transitionDuration: '100ms',\n },\n }),\n },\n filename: { color: 'white', fontSize: 20, marginLeft: 12 },\n virtual: { textAlign: 'right', color: 'white' },\n image: { width: 24, height: 24, resizeMode: 'contain', opacity: 0.6 },\n headerIcon: {\n width: 40,\n height: 40,\n backgroundColor: '#202425',\n borderRadius: 8,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n systemInfoContainer: {\n borderWidth: 1,\n borderColor: '#313538',\n backgroundColor: '#151718',\n borderRadius: 12,\n gap: 8,\n borderCurve: 'continuous',\n padding: INDENT,\n },\n systemInfoTitle: {\n color: 'white',\n fontSize: 18,\n fontWeight: '600',\n marginBottom: 12,\n paddingHorizontal: INDENT,\n },\n systemInfoItem: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n flexWrap: 'wrap',\n },\n systemInfoLabel: {\n color: 'white',\n fontSize: 16,\n lineHeight: 24,\n },\n systemInfoValue: {\n color: 'white',\n fontSize: 16,\n opacity: 0.7,\n\n flexShrink: 1,\n letterSpacing: 0.5,\n },\n code: {\n fontVariant: ['tabular-nums'],\n fontFamily: Platform.select({\n default: `SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace`,\n ios: 'ui-monospace',\n android: 'monospace',\n }),\n fontWeight: '500',\n },\n});\n"]}
@@ -72,7 +72,13 @@ public class LinkPreviewNativeModule: Module {
72
72
  Events("onSelected")
73
73
  }
74
74
 
75
- View(NativeLinkPreviewTrigger.self) {}
75
+ View(NativeLinkPreviewTrigger.self) {
76
+ Prop("borderRadius") { (view, borderRadius: Double?) in
77
+ if let borderRadius = borderRadius {
78
+ view.triggerBorderRadius = borderRadius
79
+ }
80
+ }
81
+ }
76
82
  }
77
83
  }
78
84
 
@@ -6,7 +6,6 @@ class NativeLinkPreviewContentView: ExpoView {
6
6
 
7
7
  required init(appContext: AppContext? = nil) {
8
8
  super.init(appContext: appContext)
9
- clipsToBounds = true
10
9
  }
11
10
 
12
11
  func setInitialSize(bounds: CGRect) {
@@ -2,8 +2,8 @@ import ExpoModulesCore
2
2
  import WebKit
3
3
 
4
4
  class NativeLinkPreviewTrigger: ExpoView {
5
+ var triggerBorderRadius: Double = 0
5
6
  required init(appContext: AppContext? = nil) {
6
7
  super.init(appContext: appContext)
7
- clipsToBounds = true
8
8
  }
9
9
  }
@@ -40,10 +40,11 @@ class NativeLinkPreviewView: ExpoView, UIContextMenuInteractionDelegate,
40
40
  // MARK: - Props
41
41
 
42
42
  func performUpdateOfPreloadedView() {
43
- if nextScreenId == nil || tabPath?.path.isEmpty != false {
43
+ if nextScreenId == nil && tabPath?.path.isEmpty != false {
44
+ // If we have no tab to change and no screen to push, then we can't update the preloaded view
44
45
  return
45
46
  }
46
- print("Perform update \(nextScreenId) \(tabPath) \(self)")
47
+ // However if one these is defined then we can perform the native update
47
48
  linkPreviewNativeNavigation.updatePreloadedView(
48
49
  screenId: nextScreenId, tabPath: tabPath, responder: self)
49
50
  }
@@ -123,7 +124,7 @@ class NativeLinkPreviewView: ExpoView, UIContextMenuInteractionDelegate,
123
124
 
124
125
  let parameters = UIPreviewParameters()
125
126
  parameters.backgroundColor = .clear
126
- parameters.shadowPath = UIBezierPath(roundedRect: trigger.bounds, cornerRadius: 10)
127
+ parameters.shadowPath = UIBezierPath(roundedRect: trigger.bounds, cornerRadius: trigger.triggerBorderRadius)
127
128
 
128
129
  return UITargetedPreview(view: trigger, parameters: parameters, target: target)
129
130
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "5.2.0-canary-20250811-5c940c0",
3
+ "version": "6.0.0-beta.1",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -35,6 +35,8 @@
35
35
  "html.js",
36
36
  "index.d.ts",
37
37
  "ios",
38
+ "unstable-native-tabs.js",
39
+ "unstable-native-tabs.d.ts",
38
40
  "node",
39
41
  "plugin",
40
42
  "rsc",
@@ -75,18 +77,18 @@
75
77
  "expo"
76
78
  ],
77
79
  "peerDependencies": {
78
- "@react-navigation/drawer": "^7.3.9",
80
+ "@react-navigation/drawer": "^7.5.0",
79
81
  "@testing-library/jest-native": ">= 5.0.0",
80
82
  "@testing-library/react-native": ">= 12.0.0",
81
- "expo": "54.0.0-canary-20250811-5c940c0",
82
- "expo-constants": "17.1.8-canary-20250811-5c940c0",
83
- "expo-linking": "7.1.8-canary-20250811-5c940c0",
83
+ "expo": "*",
84
+ "expo-constants": "*",
85
+ "expo-linking": "*",
84
86
  "react": "*",
85
87
  "react-dom": "*",
86
88
  "react-native": "*",
87
89
  "react-native-gesture-handler": "*",
88
90
  "react-native-reanimated": "*",
89
- "react-native-safe-area-context": ">= 4.0.0",
91
+ "react-native-safe-area-context": ">= 5.4.0",
90
92
  "react-native-screens": "*",
91
93
  "react-native-web": "*",
92
94
  "react-server-dom-webpack": ">= 19.0.0"
@@ -110,45 +112,45 @@
110
112
  "@react-navigation/drawer": {
111
113
  "optional": true
112
114
  },
113
- "@testing-library/jest-native": {
114
- "optional": true
115
- },
116
115
  "@testing-library/react-native": {
117
116
  "optional": true
118
117
  }
119
118
  },
120
119
  "devDependencies": {
121
- "@react-navigation/drawer": "^7.3.9",
122
- "@testing-library/jest-native": "^5.4.2",
123
- "@testing-library/react": "^15.0.7",
124
- "@testing-library/react-native": "^13.1.0",
120
+ "@react-navigation/drawer": "^7.5.0",
121
+ "@testing-library/dom": "^10.4.0",
122
+ "@testing-library/react": "^16.3.0",
123
+ "@testing-library/react-native": "^13.2.0",
124
+ "@types/react-dom": "^19.1.7",
125
125
  "@types/semver": "^7.7.0",
126
126
  "immer": "^10.1.1",
127
127
  "react-server-dom-webpack": "~19.0.0",
128
128
  "tsd": "^0.28.1"
129
129
  },
130
130
  "dependencies": {
131
- "@expo/metro-runtime": "6.0.0-canary-20250811-5c940c0",
132
- "@expo/server": "0.7.0-canary-20250811-5c940c0",
131
+ "@expo/metro-runtime": "6.0.1",
132
+ "@expo/schema-utils": "^0.1.1",
133
+ "@expo/server": "^0.7.1",
133
134
  "@radix-ui/react-slot": "1.2.0",
134
- "@react-navigation/bottom-tabs": "^7.3.10",
135
- "@react-navigation/native": "^7.1.6",
136
- "@react-navigation/native-stack": "^7.3.10",
135
+ "@radix-ui/react-tabs": "^1.1.12",
136
+ "@react-navigation/bottom-tabs": "^7.4.0",
137
+ "@react-navigation/native": "^7.1.8",
138
+ "@react-navigation/native-stack": "^7.3.16",
137
139
  "client-only": "^0.0.1",
138
140
  "debug": "^4.3.4",
139
141
  "escape-string-regexp": "^4.0.0",
140
142
  "fast-deep-equal": "^3.1.3",
141
143
  "invariant": "^2.2.4",
142
144
  "nanoid": "^3.3.8",
145
+ "query-string": "^7.1.3",
143
146
  "react-fast-compare": "^3.2.2",
144
147
  "react-native-is-edge-to-edge": "^1.1.6",
145
- "query-string": "^7.1.3",
146
- "schema-utils": "^4.0.1",
147
148
  "semver": "~7.6.3",
148
149
  "server-only": "^0.0.1",
149
150
  "sf-symbols-typescript": "^2.1.0",
150
151
  "shallowequal": "^1.1.0",
151
152
  "use-latest-callback": "^0.2.1",
152
153
  "vaul": "^1.1.2"
153
- }
154
+ },
155
+ "gitHead": "2f7f90d0736af48cb542ccbc8addb836e330693a"
154
156
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_utils_1 = require("@expo/schema-utils");
3
4
  const config_plugins_1 = require("expo/config-plugins");
4
- const schema_utils_1 = require("schema-utils");
5
5
  const schema = require('../options.json');
6
6
  const withExpoHeadIos = (config) => {
7
7
  return (0, config_plugins_1.withInfoPlist)(config, (config) => {
@@ -1,5 +1,5 @@
1
+ import { validate } from '@expo/schema-utils';
1
2
  import { ConfigPlugin, withInfoPlist } from 'expo/config-plugins';
2
- import { validate } from 'schema-utils';
3
3
 
4
4
  const schema = require('../options.json');
5
5
 
@@ -0,0 +1 @@
1
+ {"root":["./src/index.ts"],"version":"5.8.3"}
package/server.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ExpoRequest, ExpoResponse } from '@expo/server';
2
- export { MiddlewareFunction } from '@expo/server/build/types';
1
+ import { type ExpoRequest, type ExpoResponse } from '@expo/server';
2
+ export { type MiddlewareFunction } from '@expo/server';
3
3
 
4
4
  export type RequestHandler = (
5
5
  request: Request,
@@ -0,0 +1 @@
1
+ export * from './build/native-tabs';
@@ -0,0 +1 @@
1
+ module.exports = require('./build/native-tabs');
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalStack.web.d.ts","sourceRoot":"","sources":["../../../src/modal/web/ModalStack.web.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EAOd,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAsB,MAAM,OAAO,CAAC;AAgG3C,QAAA,MAAM,WAAW;;;;;;;;;;;CAAkD,CAAC;AACpE,QAAA,MAAM,iBAAiB;;;;;;;;6DAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalStack.web.js","sourceRoot":"","sources":["../../../src/modal/web/ModalStack.web.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\nimport {\n createNavigatorFactory,\n ParamListBase,\n StackActionHelpers,\n StackNavigationState,\n StackRouter,\n StackRouterOptions,\n useNavigationBuilder,\n useTheme,\n} from '@react-navigation/native';\nimport {\n NativeStackNavigationEventMap,\n NativeStackNavigationOptions,\n NativeStackView,\n} from '@react-navigation/native-stack';\nimport React, { useCallback } from 'react';\n\nimport { ModalStackRouteDrawer } from './ModalStackRouteDrawer.web';\nimport { TransparentModalStackRouteDrawer } from './TransparentModalStackRouteDrawer.web';\nimport { ModalStackNavigatorProps, ModalStackViewProps } from './types';\nimport {\n convertStackStateToNonModalState,\n findLastNonModalIndex,\n isTransparentModalPresentation,\n} from './utils';\nimport { ExtendedStackNavigationOptions } from '../../layouts/StackClient';\nimport { withLayoutContext } from '../../layouts/withLayoutContext';\n\nfunction ModalStackNavigator({\n initialRouteName,\n children,\n screenOptions,\n}: ModalStackNavigatorProps) {\n const { state, navigation, descriptors, NavigationContent, describe } = useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n NativeStackNavigationEventMap\n >(StackRouter, {\n children,\n screenOptions,\n initialRouteName,\n });\n\n return (\n <NavigationContent>\n <ModalStackView\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n describe={describe}\n />\n </NavigationContent>\n );\n}\n\nconst ModalStackView = ({ state, navigation, descriptors, describe }: ModalStackViewProps) => {\n const isWeb = process.env.EXPO_OS === 'web';\n const { colors } = useTheme();\n\n const { routes: filteredRoutes, index: nonModalIndex } = convertStackStateToNonModalState(\n state,\n descriptors,\n isWeb\n );\n\n const newStackState = { ...state, routes: filteredRoutes, index: nonModalIndex };\n\n const dismiss = useCallback(() => {\n navigation.goBack();\n }, [navigation]);\n\n const overlayRoutes = React.useMemo(() => {\n if (!isWeb) return [];\n const idx = findLastNonModalIndex(state, descriptors);\n return state.routes.slice(idx + 1);\n }, [isWeb, state, descriptors]);\n\n return (\n <div style={{ flex: 1, display: 'flex' }}>\n <NativeStackView\n state={newStackState}\n navigation={navigation}\n descriptors={descriptors}\n describe={describe}\n />\n {isWeb &&\n overlayRoutes.map((route) => {\n const isTransparentModal = isTransparentModalPresentation(descriptors[route.key].options);\n\n const ModalComponent = isTransparentModal\n ? TransparentModalStackRouteDrawer\n : ModalStackRouteDrawer;\n\n return (\n <ModalComponent\n key={route.key}\n routeKey={route.key}\n options={descriptors[route.key].options as ExtendedStackNavigationOptions}\n renderScreen={descriptors[route.key].render}\n onDismiss={dismiss}\n themeColors={colors}\n />\n );\n })}\n </div>\n );\n};\n\nconst createModalStack = createNavigatorFactory(ModalStackNavigator);\nconst RouterModal = withLayoutContext(createModalStack().Navigator);\nconst RouterModalScreen = RouterModal.Screen;\n\nexport { RouterModal, RouterModalScreen };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalStackRouteDrawer.web.d.ts","sourceRoot":"","sources":["../../../src/modal/web/ModalStackRouteDrawer.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,iBAAS,qBAAqB,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,8BAA8B,CAAC;IACxC,YAAY,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD,qBAsMA;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalStackRouteDrawer.web.js","sourceRoot":"","sources":["../../../src/modal/web/ModalStackRouteDrawer.web.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\nimport React from 'react';\nimport { Drawer } from 'vaul';\n\nimport modalStyles from './modalStyles';\nimport { CSSWithVars } from './types';\nimport { useIsDesktop } from './utils';\nimport { ExtendedStackNavigationOptions } from '../../layouts/StackClient';\n\nfunction ModalStackRouteDrawer({\n routeKey,\n options,\n renderScreen,\n onDismiss,\n themeColors,\n}: {\n routeKey: string;\n options: ExtendedStackNavigationOptions;\n renderScreen: () => React.ReactNode;\n onDismiss: () => void;\n themeColors: { card: string; background: string };\n}) {\n const [open, setOpen] = React.useState(true);\n // Determine sheet vs. modal with an SSR-safe hook. The first render (during\n // hydration) always assumes mobile/sheet to match the server markup; an\n // effect then updates the state after mount if the viewport is desktop.\n const isDesktop = useIsDesktop();\n const isSheet = !isDesktop;\n\n // Resolve snap points logic.\n const allowed = options.sheetAllowedDetents;\n\n const isArrayDetents = Array.isArray(allowed);\n const useCustomSnapPoints = isArrayDetents && !(allowed.length === 1 && allowed[0] === 1);\n\n let snapPoints: (number | string)[] | undefined = useCustomSnapPoints\n ? (allowed as (number | string)[])\n : undefined;\n\n if (!isSheet) {\n snapPoints = [1];\n }\n\n const [snap, setSnap] = React.useState<number | string | null>(\n useCustomSnapPoints && isArrayDetents ? allowed[0] : 1\n );\n\n // Update the snap value when custom snap points change.\n React.useEffect(() => {\n if (isSheet) {\n const next = useCustomSnapPoints && isArrayDetents ? allowed[0] : 1;\n setSnap(next);\n } else {\n // Desktop modal always fixed snap at 1\n setSnap(1);\n }\n }, [isSheet, useCustomSnapPoints, isArrayDetents, allowed]);\n\n // Map react-native-screens ios sheet undimmed logic to Vaul's fadeFromIndex\n const fadeFromIndex = isSheet\n ? options.sheetLargestUndimmedDetentIndex === 'last'\n ? (snapPoints?.length ?? 0)\n : typeof options.sheetLargestUndimmedDetentIndex === 'number'\n ? options.sheetLargestUndimmedDetentIndex + 1\n : 0\n : 0;\n\n // --- Styling -----------------------------------------------------------\n\n // Using CSS variables so defaults live in CSS and can be overridden via props.\n const modalStyleVars: CSSWithVars = {\n backgroundColor: themeColors.background,\n };\n\n if (!isSheet) {\n if (options.webModalStyle?.width) {\n modalStyleVars['--expo-router-modal-width'] =\n typeof options.webModalStyle.width === 'number'\n ? `${options.webModalStyle.width}px`\n : options.webModalStyle.width;\n\n modalStyleVars['--expo-router-modal-max-width'] =\n typeof options.webModalStyle.width === 'number'\n ? `${options.webModalStyle.width}px`\n : options.webModalStyle.width;\n\n // Also set explicit width so browsers that ignore CSS vars in `width` prop still work.\n modalStyleVars.width =\n typeof options.webModalStyle.width === 'number'\n ? `${options.webModalStyle.width}px`\n : options.webModalStyle.width;\n }\n\n // Min width override\n if (options.webModalStyle?.minWidth) {\n const mw =\n typeof options.webModalStyle.minWidth === 'number'\n ? `${options.webModalStyle.minWidth}px`\n : options.webModalStyle.minWidth;\n modalStyleVars['--expo-router-modal-min-width'] = mw;\n modalStyleVars.minWidth = mw;\n }\n\n if (options.webModalStyle?.height) {\n const h =\n typeof options.webModalStyle.height === 'number'\n ? `${options.webModalStyle.height}px`\n : options.webModalStyle.height;\n modalStyleVars['--expo-router-modal-height'] = h;\n modalStyleVars.maxHeight = h;\n modalStyleVars.height = h;\n modalStyleVars.minHeight = h;\n }\n\n // Separate min-height override (takes precedence over modalHeight)\n if (options.webModalStyle?.minHeight) {\n const mh =\n typeof options.webModalStyle.minHeight === 'number'\n ? `${options.webModalStyle.minHeight}px`\n : options.webModalStyle.minHeight;\n modalStyleVars['--expo-router-modal-min-height'] = mh;\n modalStyleVars.minHeight = mh;\n }\n }\n\n const fitToContents = options.sheetAllowedDetents === 'fitToContents';\n\n if (fitToContents) {\n modalStyleVars.height = 'auto';\n modalStyleVars.minHeight = 'auto';\n\n // TODO:(@Hirbod) Clarify if we should limit maxHeight to sheets only\n // Allow sheet to grow with content but never exceed viewport height\n // dvh is important, otherwise it will scale over the visible viewport height\n modalStyleVars.maxHeight = '100dvh';\n }\n\n // Apply corner radius (default 10px)\n const radiusValue = options.sheetCornerRadius ?? 10;\n const radiusCss = typeof radiusValue === 'number' ? `${radiusValue}px` : radiusValue;\n\n if (options.webModalStyle?.border) {\n modalStyleVars['--expo-router-modal-border'] = options.webModalStyle.border;\n }\n\n if (isSheet) {\n // Only top corners for mobile sheet\n modalStyleVars.borderTopLeftRadius = radiusCss;\n modalStyleVars.borderTopRightRadius = radiusCss;\n\n // Only apply CSS var override if a custom corner radius was provided\n if (options.sheetCornerRadius) {\n modalStyleVars['--expo-router-modal-border-radius'] = radiusCss;\n }\n } else {\n // All corners for desktop modal\n if (options.sheetCornerRadius) {\n modalStyleVars['--expo-router-modal-border-radius'] = radiusCss;\n }\n }\n // --- End Styling -----------------------------------------------------------\n\n const handleOpenChange = (open: boolean) => {\n if (!open) onDismiss();\n };\n\n // Props that only make sense for sheets\n const sheetProps = isSheet\n ? {\n snapPoints: snapPoints as (number | string)[],\n activeSnapPoint: snap,\n setActiveSnapPoint: setSnap,\n fadeFromIndex,\n }\n : {};\n\n return (\n <Drawer.Root\n key={`${routeKey}-${isSheet ? 'sheet' : 'modal'}`}\n open={open}\n dismissible={options.gestureEnabled ?? true}\n onAnimationEnd={handleOpenChange}\n shouldScaleBackground\n autoFocus\n onOpenChange={setOpen}\n {...sheetProps}>\n <Drawer.Portal>\n <Drawer.Overlay\n className={modalStyles.overlay}\n style={\n options.webModalStyle?.overlayBackground\n ? ({\n '--expo-router-modal-overlay-background': options.webModalStyle.overlayBackground,\n } as React.CSSProperties)\n : undefined\n }\n />\n <Drawer.Content\n aria-describedby=\"modal-description\"\n className={modalStyles.drawerContent}\n style={{\n pointerEvents: 'none',\n // This needs to be limited to sheets, otherwise it will position the modal at the bottom of the screen\n ...(isSheet && fitToContents ? { height: 'auto' } : null),\n }}>\n <div\n className={modalStyles.modal}\n data-presentation={isSheet ? 'formSheet' : 'modal'}\n style={modalStyleVars}>\n {/* TODO:(@Hirbod) Figure out how to add title and description to the modal for screen readers in a meaningful way */}\n <Drawer.Title about=\"\" aria-describedby=\"\" className={modalStyles.srOnly} />\n <Drawer.Description about=\"\" className={modalStyles.srOnly} />\n {/* Render the screen content */}\n <div className={modalStyles.modalBody}>{renderScreen()}</div>\n </div>\n </Drawer.Content>\n </Drawer.Portal>\n </Drawer.Root>\n );\n}\n\nexport { ModalStackRouteDrawer };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransparentModalStackRouteDrawer.web.d.ts","sourceRoot":"","sources":["../../../src/modal/web/TransparentModalStackRouteDrawer.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,iBAAS,gCAAgC,CAAC,EACxC,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,8BAA8B,CAAC;IACxC,YAAY,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,qBAuBA;AAED,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TransparentModalStackRouteDrawer.web.js","sourceRoot":"","sources":["../../../src/modal/web/TransparentModalStackRouteDrawer.web.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;AA0CJ,4EAAgC;AAzCzC,kDAA0B;AAC1B,+BAA8B;AAE9B,gEAAwC;AAGxC,SAAS,gCAAgC,CAAC,EACxC,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,SAAS,GAMV;IACC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,EAAE;QACzC,IAAI,CAAC,IAAI;YAAE,SAAS,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,aAAM,CAAC,IAAI,CACV,WAAW,CACX,SAAS,CACT,GAAG,CAAC,CAAC,GAAG,QAAQ,cAAc,CAAC,CAC/B,WAAW,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,CAC7C,cAAc,CAAC,CAAC,gBAAgB,CAAC,CACjC;MAAA,CAAC,aAAM,CAAC,MAAM,CACZ;QAAA,CAAC,aAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,qBAAW,CAAC,wBAAwB,CAAC,CAC9D;UAAA,CAAC,oHAAoH,CACrH;UAAA,CAAC,aAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,qBAAW,CAAC,MAAM,CAAC,EACzE;UAAA,CAAC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,qBAAW,CAAC,MAAM,CAAC,EAC3D;UAAA,CAAC,+BAA+B,CAChC;UAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,qBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,CAC9D;QAAA,EAAE,aAAM,CAAC,OAAO,CAClB;MAAA,EAAE,aAAM,CAAC,MAAM,CACjB;IAAA,EAAE,aAAM,CAAC,IAAI,CAAC,CACf,CAAC;AACJ,CAAC","sourcesContent":["'use client';\nimport React from 'react';\nimport { Drawer } from 'vaul';\n\nimport modalStyles from './modalStyles';\nimport { ExtendedStackNavigationOptions } from '../../layouts/StackClient';\n\nfunction TransparentModalStackRouteDrawer({\n routeKey,\n options,\n renderScreen,\n onDismiss,\n}: {\n routeKey: string;\n options: ExtendedStackNavigationOptions;\n renderScreen: () => React.ReactNode;\n onDismiss: () => void;\n}) {\n const handleOpenChange = (open: boolean) => {\n if (!open) onDismiss();\n };\n\n return (\n <Drawer.Root\n defaultOpen\n autoFocus\n key={`${routeKey}-transparent`}\n dismissible={options.gestureEnabled ?? false}\n onAnimationEnd={handleOpenChange}>\n <Drawer.Portal>\n <Drawer.Content className={modalStyles.transparentDrawerContent}>\n {/* TODO:(@Hirbod) Figure out how to add title and description to the modal for screen readers in a meaningful way */}\n <Drawer.Title about=\"\" aria-describedby=\"\" className={modalStyles.srOnly} />\n <Drawer.Description about=\"\" className={modalStyles.srOnly} />\n {/* Render the screen content */}\n <div className={modalStyles.modalBody}>{renderScreen()}</div>\n </Drawer.Content>\n </Drawer.Portal>\n </Drawer.Root>\n );\n}\n\nexport { TransparentModalStackRouteDrawer };\n"]}
@@ -1,40 +0,0 @@
1
- import type { PropsWithChildren, ReactElement, ReactNode } from 'react';
2
- import type { NativeTabOptions } from './NativeTabsView';
3
- export type TabProps = PropsWithChildren<{
4
- /**
5
- * The name of the route.
6
- *
7
- * This is required when used inside a Layout component.
8
- *
9
- * When used in a route it has no effect.
10
- */
11
- name?: string;
12
- /**
13
- * If true, the tab will be hidden from the tab bar.
14
- */
15
- hidden?: boolean;
16
- /**
17
- * The options for the tab.
18
- */
19
- options?: Omit<NativeTabOptions, 'hidden' | 'specialEffects'>;
20
- /**
21
- * If true, the tab will not pop stack to the root when selected again.
22
- * @default false
23
- *
24
- * @platform ios
25
- */
26
- disablePopToTop?: boolean;
27
- /**
28
- * If true, the tab will not scroll to the top when selected again.
29
- * @default false
30
- *
31
- * @platform ios
32
- */
33
- disableScrollToTop?: boolean;
34
- }>;
35
- export declare function TabTrigger(props: TabProps): null;
36
- export declare function convertTabPropsToOptions({ options, hidden, children, disablePopToTop, disableScrollToTop, }: TabProps): NativeTabOptions;
37
- export declare function isTab(child: ReactNode, contextKey?: string): child is ReactElement<TabProps & {
38
- name: string;
39
- }>;
40
- //# sourceMappingURL=TabOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabOptions.d.ts","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/TabOptions.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC;IACvC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IAC9D;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC,CAAC;AAEH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,QAqBzC;AAED,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,MAAM,EACN,QAAQ,EACR,eAAe,EACf,kBAAkB,GACnB,EAAE,QAAQ,oBAuDV;AAED,wBAAgB,KAAK,CACnB,KAAK,EAAE,SAAS,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,KAAK,IAAI,YAAY,CAAC,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabOptions.js","sourceRoot":"","sources":["../../../src/native-tabs/NativeBottomTabs/TabOptions.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport type { PropsWithChildren, ReactElement, ReactNode } from 'react';\nimport { isValidElement } from 'react';\n\nimport type { NativeTabOptions } from './NativeTabsView';\nimport { filterAllowedChildrenElements, isChildOfType } from './utils';\nimport { useSafeLayoutEffect } from '../../views/useSafeLayoutEffect';\nimport { Icon, Badge, Label } from '../common/elements';\n\nexport type TabProps = PropsWithChildren<{\n /**\n * The name of the route.\n *\n * This is required when used inside a Layout component.\n *\n * When used in a route it has no effect.\n */\n name?: string;\n /**\n * If true, the tab will be hidden from the tab bar.\n */\n hidden?: boolean;\n /**\n * The options for the tab.\n */\n options?: Omit<NativeTabOptions, 'hidden' | 'specialEffects'>;\n /**\n * If true, the tab will not pop stack to the root when selected again.\n * @default false\n *\n * @platform ios\n */\n disablePopToTop?: boolean;\n /**\n * If true, the tab will not scroll to the top when selected again.\n * @default false\n *\n * @platform ios\n */\n disableScrollToTop?: boolean;\n}>;\n\nexport function TabTrigger(props: TabProps) {\n const route = useRoute();\n const navigation = useNavigation();\n const isFocused = navigation.isFocused();\n\n useSafeLayoutEffect(() => {\n // This will cause the tab to update only when it is focused.\n // As long as all tabs are loaded at the start, we don't need this check.\n // It is here to ensure similar behavior to stack\n if (isFocused) {\n if (navigation.getState()?.type !== 'tab') {\n throw new Error(\n `Trigger component can only be used in the tab screen. Current route: ${route.name}`\n );\n }\n const options = convertTabPropsToOptions(props);\n navigation.setOptions(options);\n }\n }, [isFocused, props]);\n\n return null;\n}\n\nexport function convertTabPropsToOptions({\n options,\n hidden,\n children,\n disablePopToTop,\n disableScrollToTop,\n}: TabProps) {\n const initialOptions: NativeTabOptions = {\n ...options,\n hidden: !!hidden,\n specialEffects: {\n repeatedTabSelection: {\n popToRoot: !disablePopToTop,\n scrollToTop: !disableScrollToTop,\n },\n },\n };\n const allowedChildren = filterAllowedChildrenElements(children, [Badge, Label, Icon]);\n return allowedChildren.reduce<NativeTabOptions>(\n (acc, child) => {\n if (isChildOfType(child, Badge)) {\n if (child.props.children) {\n acc.badgeValue = String(child.props.children);\n }\n } else if (isChildOfType(child, Label)) {\n acc.title = child.props.children;\n } else if (isChildOfType(child, Icon)) {\n if ('src' in child.props || 'selectedSrc' in child.props) {\n acc.icon = child.props.src\n ? {\n src: child.props.src,\n }\n : undefined;\n acc.selectedIcon = child.props.selectedSrc\n ? {\n src: child.props.selectedSrc,\n }\n : undefined;\n } else if ('sf' in child.props || 'selectedSf' in child.props) {\n if (process.env.EXPO_OS === 'ios') {\n acc.icon = child.props.sf\n ? {\n sf: child.props.sf,\n }\n : undefined;\n acc.selectedIcon = child.props.selectedSf\n ? {\n sf: child.props.selectedSf,\n }\n : undefined;\n }\n }\n if (process.env.EXPO_OS === 'android') {\n acc.icon = { drawable: child.props.drawable };\n acc.selectedIcon = undefined;\n }\n }\n return acc;\n },\n { ...initialOptions }\n );\n}\n\nexport function isTab(\n child: ReactNode,\n contextKey?: string\n): child is ReactElement<TabProps & { name: string }> {\n if (isValidElement(child) && child && child.type === TabTrigger) {\n if (\n typeof child.props === 'object' &&\n child.props &&\n 'name' in child.props &&\n !child.props.name\n ) {\n throw new Error(\n `<Trigger /> component in \\`default export\\` at \\`app${contextKey}/_layout\\` must have a \\`name\\` prop when used as a child of a Layout Route.`\n );\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (\n ['component', 'getComponent'].some(\n (key) => child.props && typeof child.props === 'object' && key in child.props\n )\n ) {\n throw new Error(\n `<Trigger /> component in \\`default export\\` at \\`app${contextKey}/_layout\\` must not have a \\`component\\` or \\`getComponent\\` prop when used as a child of a Layout Route`\n );\n }\n }\n\n return true;\n }\n\n return false;\n}\n"]}