expo-router 5.2.0-canary-20250811-5c940c0 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/build/layouts/Stack.web.d.ts +1 -1
  2. package/build/layouts/Stack.web.d.ts.map +1 -1
  3. package/build/layouts/Stack.web.js +3 -3
  4. package/build/layouts/Stack.web.js.map +1 -1
  5. package/build/layouts/StackClient.d.ts.map +1 -1
  6. package/build/layouts/StackClient.js +7 -8
  7. package/build/layouts/StackClient.js.map +1 -1
  8. package/build/layouts/withLayoutContext.d.ts.map +1 -1
  9. package/build/layouts/withLayoutContext.js +3 -3
  10. package/build/layouts/withLayoutContext.js.map +1 -1
  11. package/build/link/LinkWithPreview.d.ts.map +1 -1
  12. package/build/link/LinkWithPreview.js +13 -4
  13. package/build/link/LinkWithPreview.js.map +1 -1
  14. package/build/link/elements.d.ts +26 -18
  15. package/build/link/elements.d.ts.map +1 -1
  16. package/build/link/elements.js +4 -4
  17. package/build/link/elements.js.map +1 -1
  18. package/build/link/preview/HrefPreview.d.ts.map +1 -1
  19. package/build/link/preview/HrefPreview.js +22 -4
  20. package/build/link/preview/HrefPreview.js.map +1 -1
  21. package/build/link/preview/useNextScreenId.d.ts.map +1 -1
  22. package/build/link/preview/useNextScreenId.js +0 -1
  23. package/build/link/preview/useNextScreenId.js.map +1 -1
  24. package/build/modal/ModalsRenderer.web.js +4 -4
  25. package/build/modal/ModalsRenderer.web.js.map +1 -1
  26. package/build/modal/web/{ModalStack.web.d.ts → ModalStack.d.ts} +1 -1
  27. package/build/modal/web/ModalStack.d.ts.map +1 -0
  28. package/build/modal/web/{ModalStack.web.js → ModalStack.js} +5 -5
  29. package/build/modal/web/ModalStack.js.map +1 -0
  30. package/build/modal/web/{ModalStackRouteDrawer.web.d.ts → ModalStackRouteDrawer.d.ts} +1 -1
  31. package/build/modal/web/ModalStackRouteDrawer.d.ts.map +1 -0
  32. package/build/modal/web/{ModalStackRouteDrawer.web.js → ModalStackRouteDrawer.js} +1 -1
  33. package/build/modal/web/ModalStackRouteDrawer.js.map +1 -0
  34. package/build/modal/web/{TransparentModalStackRouteDrawer.web.d.ts → TransparentModalStackRouteDrawer.d.ts} +1 -1
  35. package/build/modal/web/TransparentModalStackRouteDrawer.d.ts.map +1 -0
  36. package/build/modal/web/{TransparentModalStackRouteDrawer.web.js → TransparentModalStackRouteDrawer.js} +1 -1
  37. package/build/modal/web/TransparentModalStackRouteDrawer.js.map +1 -0
  38. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.d.ts +4 -12
  39. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.d.ts.map +1 -1
  40. package/build/native-tabs/NativeBottomTabs/NativeBottomTabsNavigator.js.map +1 -1
  41. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts +47 -0
  42. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.d.ts.map +1 -0
  43. package/build/native-tabs/NativeBottomTabs/{TabOptions.js → NativeTabTrigger.js} +57 -7
  44. package/build/native-tabs/NativeBottomTabs/NativeTabTrigger.js.map +1 -0
  45. package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts +22 -5
  46. package/build/native-tabs/NativeBottomTabs/NativeTabs.d.ts.map +1 -1
  47. package/build/native-tabs/NativeBottomTabs/NativeTabs.js +20 -2
  48. package/build/native-tabs/NativeBottomTabs/NativeTabs.js.map +1 -1
  49. package/build/native-tabs/NativeBottomTabs/NativeTabsView.d.ts +1 -100
  50. package/build/native-tabs/NativeBottomTabs/NativeTabsView.d.ts.map +1 -1
  51. package/build/native-tabs/NativeBottomTabs/NativeTabsView.js +53 -6
  52. package/build/native-tabs/NativeBottomTabs/NativeTabsView.js.map +1 -1
  53. package/build/native-tabs/NativeBottomTabs/types.d.ts +166 -0
  54. package/build/native-tabs/NativeBottomTabs/types.d.ts.map +1 -0
  55. package/build/native-tabs/NativeBottomTabs/types.js +3 -0
  56. package/build/native-tabs/NativeBottomTabs/types.js.map +1 -0
  57. package/build/native-tabs/NativeBottomTabs/utils.d.ts +2 -2
  58. package/build/native-tabs/NativeBottomTabs/utils.d.ts.map +1 -1
  59. package/build/native-tabs/NativeBottomTabs/utils.js.map +1 -1
  60. package/build/native-tabs/common/elements.d.ts +21 -6
  61. package/build/native-tabs/common/elements.d.ts.map +1 -1
  62. package/build/native-tabs/common/elements.js +6 -0
  63. package/build/native-tabs/common/elements.js.map +1 -1
  64. package/build/native-tabs/index.d.ts +3 -1
  65. package/build/native-tabs/index.d.ts.map +1 -1
  66. package/build/native-tabs/index.js +18 -5
  67. package/build/native-tabs/index.js.map +1 -1
  68. package/build/rsc/middleware.d.ts +1 -1
  69. package/build/rsc/middleware.d.ts.map +1 -1
  70. package/build/rsc/middleware.js.map +1 -1
  71. package/build/views/Sitemap.d.ts.map +1 -1
  72. package/build/views/Sitemap.js +66 -36
  73. package/build/views/Sitemap.js.map +1 -1
  74. package/ios/LinkPreview/LinkPreviewNativeModule.swift +7 -1
  75. package/ios/LinkPreview/LinkPreviewNativePreviewView.swift +0 -1
  76. package/ios/LinkPreview/LinkPreviewNativeTriggerView.swift +1 -1
  77. package/ios/LinkPreview/LinkPreviewNativeView.swift +4 -3
  78. package/package.json +10 -7
  79. package/plugin/tsconfig.tsbuildinfo +1 -0
  80. package/server.d.ts +2 -2
  81. package/unstable-native-tabs.d.ts +1 -0
  82. package/unstable-native-tabs.js +1 -0
  83. package/build/modal/web/ModalStack.web.d.ts.map +0 -1
  84. package/build/modal/web/ModalStack.web.js.map +0 -1
  85. package/build/modal/web/ModalStackRouteDrawer.web.d.ts.map +0 -1
  86. package/build/modal/web/ModalStackRouteDrawer.web.js.map +0 -1
  87. package/build/modal/web/TransparentModalStackRouteDrawer.web.d.ts.map +0 -1
  88. package/build/modal/web/TransparentModalStackRouteDrawer.web.js.map +0 -1
  89. package/build/native-tabs/NativeBottomTabs/TabOptions.d.ts +0 -40
  90. package/build/native-tabs/NativeBottomTabs/TabOptions.d.ts.map +0 -1
  91. package/build/native-tabs/NativeBottomTabs/TabOptions.js.map +0 -1
@@ -1,13 +1,18 @@
1
1
  import type { ImageSourcePropType } from 'react-native';
2
2
  import type { SFSymbol } from 'sf-symbols-typescript';
3
- interface LabelProps {
3
+ export interface LabelProps {
4
4
  /**
5
5
  * The text to display as the label for the tab.
6
6
  */
7
7
  children?: string;
8
+ /**
9
+ * If true, the label will be hidden.
10
+ * @default false
11
+ */
12
+ hidden?: boolean;
8
13
  }
9
14
  export declare function Label(props: LabelProps): null;
10
- interface SourceIconProps {
15
+ export interface SourceIconCombination {
11
16
  /**
12
17
  * The image source to use as an icon.
13
18
  * @platform iOS
@@ -26,7 +31,7 @@ interface SourceIconProps {
26
31
  sf?: never;
27
32
  selectedSf?: never;
28
33
  }
29
- interface NamedIconProps {
34
+ export interface NamedIconCombination {
30
35
  /**
31
36
  * The name of the SF Symbol to use as an icon.
32
37
  * @platform iOS
@@ -45,15 +50,25 @@ interface NamedIconProps {
45
50
  src?: never;
46
51
  selectedSrc?: never;
47
52
  }
48
- type IconProps = SourceIconProps | NamedIconProps;
53
+ export type IconProps = NamedIconCombination | SourceIconCombination;
54
+ /**
55
+ * Renders an icon for the tab.
56
+ *
57
+ * @platform ios
58
+ * @platform android
59
+ */
49
60
  export declare function Icon(props: IconProps): null;
50
- interface BadgeProps {
61
+ export interface BadgeProps {
51
62
  /**
52
63
  * The text to display as the badge for the tab.
53
64
  * If not provided, the badge will not be displayed.
54
65
  */
55
66
  children?: string;
67
+ /**
68
+ * If true, the badge will be hidden.
69
+ * @default false
70
+ */
71
+ hidden?: boolean;
56
72
  }
57
73
  export declare function Badge(props: BadgeProps): null;
58
- export {};
59
74
  //# sourceMappingURL=elements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/native-tabs/common/elements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,UAAU,UAAU;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,QAEtC;AAED,UAAU,eAAe;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,UAAU,cAAc;IACtB;;;OAGG;IACH,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,KAAK,SAAS,GAAG,eAAe,GAAG,cAAc,CAAC;AAElD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,QAEpC;AAED,UAAU,UAAU;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,QAEtC"}
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/native-tabs/common/elements.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,QAEtC;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAErE;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,QAEpC;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,QAEtC"}
@@ -6,6 +6,12 @@ exports.Badge = Badge;
6
6
  function Label(props) {
7
7
  return null;
8
8
  }
9
+ /**
10
+ * Renders an icon for the tab.
11
+ *
12
+ * @platform ios
13
+ * @platform android
14
+ */
9
15
  function Icon(props) {
10
16
  return null;
11
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../src/native-tabs/common/elements.tsx"],"names":[],"mappings":";;AAUA,sBAEC;AA6CD,oBAEC;AAUD,sBAEC;AA7DD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AA6CD,SAAgB,IAAI,CAAC,KAAgB;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAUD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { ImageSourcePropType } from 'react-native';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\ninterface LabelProps {\n /**\n * The text to display as the label for the tab.\n */\n children?: string;\n}\n\nexport function Label(props: LabelProps) {\n return null;\n}\n\ninterface SourceIconProps {\n /**\n * The image source to use as an icon.\n * @platform iOS\n */\n src?: ImageSourcePropType;\n /**\n * The image source to use as an icon when the tab is selected.\n * @platform iOS\n */\n selectedSrc?: ImageSourcePropType;\n // TODO: Remove this when custom icons can be used on Android\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n sf?: never;\n selectedSf?: never;\n}\n\ninterface NamedIconProps {\n /**\n * The name of the SF Symbol to use as an icon.\n * @platform iOS\n */\n sf?: SFSymbol;\n /**\n * The name of the SF Symbol to use as an icon when the tab is selected.\n * @platform iOS\n */\n selectedSf?: SFSymbol;\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n src?: never;\n selectedSrc?: never;\n}\n\ntype IconProps = SourceIconProps | NamedIconProps;\n\nexport function Icon(props: IconProps) {\n return null;\n}\n\ninterface BadgeProps {\n /**\n * The text to display as the badge for the tab.\n * If not provided, the badge will not be displayed.\n */\n children?: string;\n}\n\nexport function Badge(props: BadgeProps) {\n return null;\n}\n"]}
1
+ {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../src/native-tabs/common/elements.tsx"],"names":[],"mappings":";;AAgBA,sBAEC;AAmDD,oBAEC;AAgBD,sBAEC;AAzED,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AA6CD;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,KAAgB;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAgBD,SAAgB,KAAK,CAAC,KAAiB;IACrC,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { ImageSourcePropType } from 'react-native';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nexport interface LabelProps {\n /**\n * The text to display as the label for the tab.\n */\n children?: string;\n\n /**\n * If true, the label will be hidden.\n * @default false\n */\n hidden?: boolean;\n}\n\nexport function Label(props: LabelProps) {\n return null;\n}\n\nexport interface SourceIconCombination {\n /**\n * The image source to use as an icon.\n * @platform iOS\n */\n src?: ImageSourcePropType;\n /**\n * The image source to use as an icon when the tab is selected.\n * @platform iOS\n */\n selectedSrc?: ImageSourcePropType;\n // TODO: Remove this when custom icons can be used on Android\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n sf?: never;\n selectedSf?: never;\n}\n\nexport interface NamedIconCombination {\n /**\n * The name of the SF Symbol to use as an icon.\n * @platform iOS\n */\n sf?: SFSymbol;\n /**\n * The name of the SF Symbol to use as an icon when the tab is selected.\n * @platform iOS\n */\n selectedSf?: SFSymbol;\n /**\n * The name of the drawable resource to use as an icon.\n * @platform android\n */\n drawable?: string;\n src?: never;\n selectedSrc?: never;\n}\n\nexport type IconProps = NamedIconCombination | SourceIconCombination;\n\n/**\n * Renders an icon for the tab.\n *\n * @platform ios\n * @platform android\n */\nexport function Icon(props: IconProps) {\n return null;\n}\n\nexport interface BadgeProps {\n /**\n * The text to display as the badge for the tab.\n * If not provided, the badge will not be displayed.\n */\n children?: string;\n\n /**\n * If true, the badge will be hidden.\n * @default false\n */\n hidden?: boolean;\n}\n\nexport function Badge(props: BadgeProps) {\n return null;\n}\n"]}
@@ -1,3 +1,5 @@
1
- export { Label, Icon, Badge } from './common/elements';
1
+ export * from './common/elements';
2
+ export type { NativeTabsProps, NativeTabTriggerProps, NativeTabsStyleType, NativeTabsActiveStyleType, NativeTabOptions, SfSymbolOrImageSource, } from './NativeBottomTabs/types';
3
+ export { NativeTabTrigger } from './NativeBottomTabs/NativeTabTrigger';
2
4
  export { NativeTabs } from './NativeBottomTabs/NativeTabs';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native-tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/native-tabs/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,10 +1,23 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NativeTabs = exports.Badge = exports.Icon = exports.Label = void 0;
4
- var elements_1 = require("./common/elements");
5
- Object.defineProperty(exports, "Label", { enumerable: true, get: function () { return elements_1.Label; } });
6
- Object.defineProperty(exports, "Icon", { enumerable: true, get: function () { return elements_1.Icon; } });
7
- Object.defineProperty(exports, "Badge", { enumerable: true, get: function () { return elements_1.Badge; } });
17
+ exports.NativeTabs = exports.NativeTabTrigger = void 0;
18
+ __exportStar(require("./common/elements"), exports);
19
+ var NativeTabTrigger_1 = require("./NativeBottomTabs/NativeTabTrigger");
20
+ Object.defineProperty(exports, "NativeTabTrigger", { enumerable: true, get: function () { return NativeTabTrigger_1.NativeTabTrigger; } });
8
21
  var NativeTabs_1 = require("./NativeBottomTabs/NativeTabs");
9
22
  Object.defineProperty(exports, "NativeTabs", { enumerable: true, get: function () { return NativeTabs_1.NativeTabs; } });
10
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native-tabs/index.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAA9C,iGAAA,KAAK,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,iGAAA,KAAK,OAAA;AAC3B,4DAA2D;AAAlD,wGAAA,UAAU,OAAA","sourcesContent":["export { Label, Icon, Badge } from './common/elements';\nexport { NativeTabs } from './NativeBottomTabs/NativeTabs';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native-tabs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AASlC,wEAAuE;AAA9D,oHAAA,gBAAgB,OAAA;AACzB,4DAA2D;AAAlD,wGAAA,UAAU,OAAA","sourcesContent":["export * from './common/elements';\nexport type {\n NativeTabsProps,\n NativeTabTriggerProps,\n NativeTabsStyleType,\n NativeTabsActiveStyleType,\n NativeTabOptions,\n SfSymbolOrImageSource,\n} from './NativeBottomTabs/types';\nexport { NativeTabTrigger } from './NativeBottomTabs/NativeTabTrigger';\nexport { NativeTabs } from './NativeBottomTabs/NativeTabs';\n"]}
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import type { RenderRscArgs } from '@expo/server/build/middleware/rsc';
8
+ import type { RenderRscArgs } from '@expo/server/private';
9
9
  type ImportMap = {
10
10
  router: () => Promise<typeof import('./router/expo-definedRouter')>;
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAkEvE,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,6BAA6B,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,EAClB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,aAAa,GAC3F,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAiE9B;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAY9B"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkE1D,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,OAAO,CAAC,cAAc,6BAA6B,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,EAClB,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,aAAa,GAC3F,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAiE9B;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAY9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n// This module is bundled with Metro in web/react-server mode and redirects to platform specific renderers.\nimport type { RenderRscArgs } from '@expo/server/build/middleware/rsc';\nimport Constants from 'expo-constants';\nimport path from 'node:path';\n\nimport { renderRsc } from './rsc-renderer';\n\ndeclare const $$require_external: typeof require;\n\nconst debug = require('debug')('expo:server:rsc-renderer');\n\n// Tracking the implementation in expo/cli's MetroBundlerDevServer\nconst rscRenderContext = new Map<string, any>();\n\nfunction serverRequire<T = any>(...targetOutputModulePath: string[]): T {\n // NOTE(@kitten): This `__dirname` will be located in the output file system, e.g. `dist/server/*`\n const filePath = path.join(__dirname, ...targetOutputModulePath);\n return $$require_external(filePath);\n}\n\nfunction getRscRenderContext(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRenderContext.has(platform)) {\n return rscRenderContext.get(platform)!;\n }\n\n const context = {};\n\n rscRenderContext.set(platform, context);\n return context;\n}\n\nfunction getServerActionManifest(\n _distFolder: string,\n platform: string\n): Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n> {\n const filePath = `../../rsc/${platform}/action-manifest.js`;\n return serverRequire(filePath);\n}\n\nfunction getSSRManifest(\n _distFolder: string,\n platform: string\n): Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n> {\n const filePath = `../../rsc/${platform}/ssr-manifest.js`;\n return serverRequire(filePath);\n}\n\n// The import map allows us to use external modules from different bundling contexts.\ntype ImportMap = {\n router: () => Promise<typeof import('./router/expo-definedRouter')>;\n};\n\nexport async function renderRscWithImportsAsync(\n distFolder: string,\n imports: ImportMap,\n { body, platform, searchParams, config, method, input, contentType, headers }: RenderRscArgs\n): Promise<ReadableStream<any>> {\n globalThis.__expo_platform_header = platform;\n if (method === 'POST' && !body) {\n throw new Error('Server request must be provided when method is POST (server actions)');\n }\n\n const context = getRscRenderContext(platform);\n context['__expo_requestHeaders'] = headers;\n\n const router = await imports.router();\n const entries = router.default({\n redirects: Constants.expoConfig?.extra?.router?.redirects,\n rewrites: Constants.expoConfig?.extra?.router?.rewrites,\n });\n\n const ssrManifest = getSSRManifest(distFolder, platform);\n const actionManifest = getServerActionManifest(distFolder, platform);\n return renderRsc(\n {\n body: body ?? undefined,\n context,\n config,\n input,\n contentType,\n decodedBody: searchParams.get('x-expo-params'),\n },\n {\n isExporting: true,\n\n resolveClientEntry(file: string, isServer: boolean) {\n debug('resolveClientEntry', file, { isServer });\n\n if (isServer) {\n if (!(file in actionManifest)) {\n throw new Error(\n `Could not find file in server action manifest: ${file}. ${JSON.stringify(actionManifest)}`\n );\n }\n\n const [id, chunk] = actionManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n }\n\n if (!(file in ssrManifest)) {\n throw new Error(`Could not find file in SSR manifest: ${file}`);\n }\n\n const [id, chunk] = ssrManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n },\n async loadServerModuleRsc(file) {\n debug('loadServerModuleRsc', file);\n // NOTE(@kitten): [WORKAROUND] Assumes __dirname is at `dist/server/_expo/functions/_flight`\n return serverRequire('../../../', file);\n },\n\n entries: entries!,\n }\n );\n}\n\nexport async function renderRscAsync(\n distFolder: string,\n args: RenderRscArgs\n): Promise<ReadableStream<any>> {\n const platform = args.platform;\n return renderRscWithImportsAsync(\n distFolder,\n {\n router: () => {\n // NOTE(@kitten): [WORKAROUND] Assumes __dirname is at `dist/server/_expo/functions/_flight`\n return serverRequire(`../../rsc/${platform}/router.js`);\n },\n },\n args\n );\n}\n"]}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/rsc/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright © 2024 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n// This module is bundled with Metro in web/react-server mode and redirects to platform specific renderers.\nimport type { RenderRscArgs } from '@expo/server/private';\nimport Constants from 'expo-constants';\nimport path from 'node:path';\n\nimport { renderRsc } from './rsc-renderer';\n\ndeclare const $$require_external: typeof require;\n\nconst debug = require('debug')('expo:server:rsc-renderer');\n\n// Tracking the implementation in expo/cli's MetroBundlerDevServer\nconst rscRenderContext = new Map<string, any>();\n\nfunction serverRequire<T = any>(...targetOutputModulePath: string[]): T {\n // NOTE(@kitten): This `__dirname` will be located in the output file system, e.g. `dist/server/*`\n const filePath = path.join(__dirname, ...targetOutputModulePath);\n return $$require_external(filePath);\n}\n\nfunction getRscRenderContext(platform: string) {\n // NOTE(EvanBacon): We memoize this now that there's a persistent server storage cache for Server Actions.\n if (rscRenderContext.has(platform)) {\n return rscRenderContext.get(platform)!;\n }\n\n const context = {};\n\n rscRenderContext.set(platform, context);\n return context;\n}\n\nfunction getServerActionManifest(\n _distFolder: string,\n platform: string\n): Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n> {\n const filePath = `../../rsc/${platform}/action-manifest.js`;\n return serverRequire(filePath);\n}\n\nfunction getSSRManifest(\n _distFolder: string,\n platform: string\n): Record<\n // Input ID\n string,\n [\n // Metro ID\n string,\n // Chunk location.\n string,\n ]\n> {\n const filePath = `../../rsc/${platform}/ssr-manifest.js`;\n return serverRequire(filePath);\n}\n\n// The import map allows us to use external modules from different bundling contexts.\ntype ImportMap = {\n router: () => Promise<typeof import('./router/expo-definedRouter')>;\n};\n\nexport async function renderRscWithImportsAsync(\n distFolder: string,\n imports: ImportMap,\n { body, platform, searchParams, config, method, input, contentType, headers }: RenderRscArgs\n): Promise<ReadableStream<any>> {\n globalThis.__expo_platform_header = platform;\n if (method === 'POST' && !body) {\n throw new Error('Server request must be provided when method is POST (server actions)');\n }\n\n const context = getRscRenderContext(platform);\n context['__expo_requestHeaders'] = headers;\n\n const router = await imports.router();\n const entries = router.default({\n redirects: Constants.expoConfig?.extra?.router?.redirects,\n rewrites: Constants.expoConfig?.extra?.router?.rewrites,\n });\n\n const ssrManifest = getSSRManifest(distFolder, platform);\n const actionManifest = getServerActionManifest(distFolder, platform);\n return renderRsc(\n {\n body: body ?? undefined,\n context,\n config,\n input,\n contentType,\n decodedBody: searchParams.get('x-expo-params'),\n },\n {\n isExporting: true,\n\n resolveClientEntry(file: string, isServer: boolean) {\n debug('resolveClientEntry', file, { isServer });\n\n if (isServer) {\n if (!(file in actionManifest)) {\n throw new Error(\n `Could not find file in server action manifest: ${file}. ${JSON.stringify(actionManifest)}`\n );\n }\n\n const [id, chunk] = actionManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n }\n\n if (!(file in ssrManifest)) {\n throw new Error(`Could not find file in SSR manifest: ${file}`);\n }\n\n const [id, chunk] = ssrManifest[file];\n return {\n id,\n chunks: chunk ? [chunk] : [],\n };\n },\n async loadServerModuleRsc(file) {\n debug('loadServerModuleRsc', file);\n // NOTE(@kitten): [WORKAROUND] Assumes __dirname is at `dist/server/_expo/functions/_flight`\n return serverRequire('../../../', file);\n },\n\n entries: entries!,\n }\n );\n}\n\nexport async function renderRscAsync(\n distFolder: string,\n args: RenderRscArgs\n): Promise<ReadableStream<any>> {\n const platform = args.platform;\n return renderRscWithImportsAsync(\n distFolder,\n {\n router: () => {\n // NOTE(@kitten): [WORKAROUND] Assumes __dirname is at `dist/server/_expo/functions/_flight`\n return serverRequire(`../../rsc/${platform}/router.js`);\n },\n },\n args\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Sitemap.d.ts","sourceRoot":"","sources":["../../src/views/Sitemap.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,wBAAgB,aAAa,IAAI,4BAA4B,CAiC5D;AAED,wBAAgB,OAAO,sBAQtB"}
1
+ {"version":3,"file":"Sitemap.d.ts","sourceRoot":"","sources":["../../src/views/Sitemap.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,MAAM,OAAO,CAAC;AAqB1B,wBAAgB,aAAa,IAAI,4BAA4B,CAkC5D;AAED,wBAAgB,OAAO,sBAQtB"}
@@ -25,6 +25,7 @@ function getNavOptions() {
25
25
  headerTitleStyle: {
26
26
  color: 'white',
27
27
  },
28
+ headerShown: true,
28
29
  headerTintColor: 'white',
29
30
  headerLargeTitleStyle: {
30
31
  color: 'white',
@@ -61,7 +62,7 @@ function SitemapInner() {
61
62
  const children = react_1.default.useMemo(() => sitemap?.children.filter(({ isInternal }) => !isInternal) ?? [], [sitemap]);
62
63
  return (<react_native_1.View style={styles.container} testID="expo-router-sitemap">
63
64
  {statusbar_1.canOverrideStatusBarBehavior && <react_native_1.StatusBar barStyle="light-content"/>}
64
- <react_native_1.ScrollView contentContainerStyle={styles.scroll} contentInsetAdjustmentBehavior="automatic">
65
+ <react_native_1.ScrollView contentContainerStyle={styles.scroll} automaticallyAdjustContentInsets contentInsetAdjustmentBehavior="automatic">
65
66
  {children.map((child) => (<react_native_1.View testID="sitemap-item-container" key={child.contextKey} style={styles.itemContainer}>
66
67
  <SitemapItem node={child}/>
67
68
  </react_native_1.View>))}
@@ -79,26 +80,25 @@ function SitemapItem({ node, level = 0 }) {
79
80
  }
80
81
  function LayoutSitemapItem({ node, level, info }) {
81
82
  const [isCollapsed, setIsCollapsed] = react_1.default.useState(true);
82
- return (<>
83
+ return (<react_native_1.View style={styles.itemInnerContainer}>
83
84
  <SitemapItemPressable style={{ opacity: 0.4 }} leftIcon={<PkgIcon />} rightIcon={<ArrowIcon rotation={isCollapsed ? 0 : 180}/>} filename={node.filename} level={level} info={info} onPress={() => setIsCollapsed((prev) => !prev)}/>
84
85
  {!isCollapsed &&
85
86
  node.children.map((child) => (<SitemapItem key={child.contextKey} node={child} level={level + (node.isGenerated ? 0 : 1)}/>))}
86
- </>);
87
+ </react_native_1.View>);
87
88
  }
88
89
  function StandardSitemapItem({ node, info, level }) {
89
- return (<Link_1.Link accessibilityLabel={node.contextKey} href={node.href} asChild
90
- // Ensure we replace the history so you can't go back to this page.
91
- replace>
90
+ return (<Link_1.Link accessibilityLabel={node.contextKey} href={node.href} asChild replace>
92
91
  <SitemapItemPressable leftIcon={<FileIcon />} rightIcon={<ForwardIcon />} filename={node.filename} level={level} info={info}/>
93
92
  </Link_1.Link>);
94
93
  }
95
94
  function SitemapItemPressable({ style, leftIcon, rightIcon, filename, level, info, ...pressableProps }) {
96
95
  return (<Pressable_1.Pressable {...pressableProps}>
97
96
  {({ pressed, hovered }) => (<react_native_1.View testID="sitemap-item" style={[
97
+ styles.itemInnerContainer,
98
98
  styles.itemPressable,
99
99
  {
100
100
  paddingLeft: INDENT + level * INDENT,
101
- backgroundColor: hovered ? '#202425' : 'transparent',
101
+ backgroundColor: hovered ? '#202425' : '#151718',
102
102
  },
103
103
  pressed && { backgroundColor: '#26292b' },
104
104
  style,
@@ -137,33 +137,46 @@ function ArrowIcon({ rotation = 0 }) {
137
137
  }
138
138
  function SystemInfo() {
139
139
  const getHermesVersion = () => {
140
- if (global.HermesInternal) {
141
- const runtimeProps = global.HermesInternal.getRuntimeProperties?.();
142
- if (runtimeProps) {
143
- return runtimeProps['OSS Release Version'] || 'Unknown';
144
- }
140
+ if (!global.HermesInternal) {
141
+ return null;
142
+ }
143
+ const HERMES_RUNTIME = global.HermesInternal?.getRuntimeProperties?.() ?? {};
144
+ const HERMES_VERSION = HERMES_RUNTIME['OSS Release Version'];
145
+ const isStaticHermes = HERMES_RUNTIME['Static Hermes'];
146
+ if (!HERMES_RUNTIME) {
147
+ return null;
148
+ }
149
+ if (isStaticHermes) {
150
+ return `${HERMES_VERSION} (shermes)`;
145
151
  }
146
- return null;
152
+ return HERMES_VERSION;
147
153
  };
148
154
  const locationOrigin = window.location.origin;
149
155
  const expoSdkVersion = expo_constants_1.default.expoConfig?.sdkVersion || 'Unknown';
150
156
  const hermesVersion = getHermesVersion();
151
- return (<react_native_1.View testID="sitemap-system-info" style={styles.systemInfoContainer}>
157
+ return (<react_native_1.View testID="sitemap-system-info" style={{
158
+ gap: 8,
159
+ marginTop: 16,
160
+ }}>
152
161
  <react_native_1.Text style={styles.systemInfoTitle}>System Information</react_native_1.Text>
153
- {locationOrigin && (<react_native_1.View style={styles.systemInfoItem}>
154
- <react_native_1.Text style={styles.systemInfoLabel}>Location origin:</react_native_1.Text>
155
- <react_native_1.Text style={styles.systemInfoValue}>{locationOrigin}</react_native_1.Text>
156
- </react_native_1.View>)}
157
- <react_native_1.View style={styles.systemInfoItem}>
158
- <react_native_1.Text style={styles.systemInfoLabel}>Expo SDK version:</react_native_1.Text>
159
- <react_native_1.Text style={styles.systemInfoValue}>{expoSdkVersion}</react_native_1.Text>
162
+ <react_native_1.View style={styles.systemInfoContainer}>
163
+ <FormText right={process.env.NODE_ENV}>Mode</FormText>
164
+ <FormText right={expoSdkVersion}>Expo SDK</FormText>
165
+ {hermesVersion && <FormText right={hermesVersion}>Hermes version</FormText>}
166
+ {locationOrigin && <FormText right={locationOrigin}>Location origin</FormText>}
160
167
  </react_native_1.View>
161
- {hermesVersion && (<react_native_1.View style={styles.systemInfoItem}>
162
- <react_native_1.Text style={styles.systemInfoLabel}>Hermes version:</react_native_1.Text>
163
- <react_native_1.Text style={styles.systemInfoValue} numberOfLines={1} ellipsizeMode="tail">
164
- {hermesVersion}
165
- </react_native_1.Text>
166
- </react_native_1.View>)}
168
+ </react_native_1.View>);
169
+ }
170
+ function FormText({ children, right }) {
171
+ return (<react_native_1.View style={styles.systemInfoItem}>
172
+ <react_native_1.Text style={styles.systemInfoLabel} numberOfLines={1} ellipsizeMode="tail">
173
+ {children}
174
+ </react_native_1.Text>
175
+ <react_native_1.View style={{ flex: 1 }}/>
176
+
177
+ <react_native_1.Text selectable style={[styles.systemInfoValue, styles.code]} numberOfLines={1} ellipsizeMode="tail">
178
+ {right}
179
+ </react_native_1.Text>
167
180
  </react_native_1.View>);
168
181
  }
169
182
  const styles = react_native_1.StyleSheet.create({
@@ -198,6 +211,7 @@ const styles = react_native_1.StyleSheet.create({
198
211
  fontWeight: 'bold',
199
212
  },
200
213
  scroll: {
214
+ gap: 12,
201
215
  paddingHorizontal: '5%',
202
216
  paddingVertical: 16,
203
217
  ...react_native_1.Platform.select({
@@ -220,8 +234,13 @@ const styles = react_native_1.StyleSheet.create({
220
234
  borderColor: '#313538',
221
235
  backgroundColor: '#151718',
222
236
  borderRadius: 12,
223
- marginBottom: 12,
224
- overflow: 'hidden',
237
+ borderCurve: 'continuous',
238
+ },
239
+ itemInnerContainer: {
240
+ backgroundColor: '#151718',
241
+ borderRadius: 12,
242
+ borderCurve: 'continuous',
243
+ gap: 12,
225
244
  },
226
245
  itemPressable: {
227
246
  paddingHorizontal: INDENT,
@@ -252,32 +271,43 @@ const styles = react_native_1.StyleSheet.create({
252
271
  borderColor: '#313538',
253
272
  backgroundColor: '#151718',
254
273
  borderRadius: 12,
274
+ gap: 8,
275
+ borderCurve: 'continuous',
255
276
  padding: INDENT,
256
- marginTop: 24,
257
277
  },
258
278
  systemInfoTitle: {
259
279
  color: 'white',
260
280
  fontSize: 18,
261
281
  fontWeight: '600',
262
282
  marginBottom: 12,
283
+ paddingHorizontal: INDENT,
263
284
  },
264
285
  systemInfoItem: {
265
286
  flexDirection: 'row',
266
- justifyContent: 'space-between',
287
+ gap: 8,
267
288
  alignItems: 'center',
268
- paddingVertical: 8,
289
+ flexWrap: 'wrap',
269
290
  },
270
291
  systemInfoLabel: {
271
292
  color: 'white',
272
293
  fontSize: 16,
273
- opacity: 0.7,
294
+ lineHeight: 24,
274
295
  },
275
296
  systemInfoValue: {
276
297
  color: 'white',
277
298
  fontSize: 16,
278
- flex: 1,
279
- textAlign: 'right',
280
- marginLeft: 12,
299
+ opacity: 0.7,
300
+ flexShrink: 1,
301
+ letterSpacing: 0.5,
302
+ },
303
+ code: {
304
+ fontVariant: ['tabular-nums'],
305
+ fontFamily: react_native_1.Platform.select({
306
+ default: `SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace`,
307
+ ios: 'ui-monospace',
308
+ android: 'monospace',
309
+ }),
310
+ fontWeight: '500',
281
311
  },
282
312
  });
283
313
  //# sourceMappingURL=Sitemap.js.map
@@ -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.0",
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",
@@ -78,9 +80,9 @@
78
80
  "@react-navigation/drawer": "^7.3.9",
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": "*",
@@ -128,8 +130,8 @@
128
130
  "tsd": "^0.28.1"
129
131
  },
130
132
  "dependencies": {
131
- "@expo/metro-runtime": "6.0.0-canary-20250811-5c940c0",
132
- "@expo/server": "0.7.0-canary-20250811-5c940c0",
133
+ "@expo/metro-runtime": "6.0.0",
134
+ "@expo/server": "^0.7.0",
133
135
  "@radix-ui/react-slot": "1.2.0",
134
136
  "@react-navigation/bottom-tabs": "^7.3.10",
135
137
  "@react-navigation/native": "^7.1.6",
@@ -150,5 +152,6 @@
150
152
  "shallowequal": "^1.1.0",
151
153
  "use-latest-callback": "^0.2.1",
152
154
  "vaul": "^1.1.2"
153
- }
155
+ },
156
+ "gitHead": "cb7062e2c17d1fb09522834aaaac0e19b766df62"
154
157
  }
@@ -0,0 +1 @@
1
+ {"root":["./src/index.ts"],"version":"5.8.3"}