expo-router 7.0.0-canary-20251216-6e1f9a7 → 7.0.0-canary-20251223-b83b31e

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 (129) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/color/index.d.ts +44 -0
  3. package/build/color/index.d.ts.map +1 -1
  4. package/build/color/index.js +69 -5
  5. package/build/color/index.js.map +1 -1
  6. package/build/exports.d.ts +1 -0
  7. package/build/exports.d.ts.map +1 -1
  8. package/build/exports.js +3 -1
  9. package/build/exports.js.map +1 -1
  10. package/build/layouts/StackClient.d.ts +3 -3
  11. package/build/layouts/stack-utils/StackHeaderButton.d.ts +77 -2
  12. package/build/layouts/stack-utils/StackHeaderButton.d.ts.map +1 -1
  13. package/build/layouts/stack-utils/StackHeaderButton.js +3 -0
  14. package/build/layouts/stack-utils/StackHeaderButton.js.map +1 -1
  15. package/build/layouts/stack-utils/StackHeaderComponent.d.ts +84 -1
  16. package/build/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
  17. package/build/layouts/stack-utils/StackHeaderComponent.js +54 -1
  18. package/build/layouts/stack-utils/StackHeaderComponent.js.map +1 -1
  19. package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts +107 -3
  20. package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts.map +1 -1
  21. package/build/layouts/stack-utils/StackHeaderLeftRight.js +108 -13
  22. package/build/layouts/stack-utils/StackHeaderLeftRight.js.map +1 -1
  23. package/build/layouts/stack-utils/StackHeaderMenu.d.ts +83 -7
  24. package/build/layouts/stack-utils/StackHeaderMenu.d.ts.map +1 -1
  25. package/build/layouts/stack-utils/StackHeaderMenu.js +14 -4
  26. package/build/layouts/stack-utils/StackHeaderMenu.js.map +1 -1
  27. package/build/layouts/stack-utils/StackHeaderSpacer.d.ts +7 -1
  28. package/build/layouts/stack-utils/StackHeaderSpacer.d.ts.map +1 -1
  29. package/build/layouts/stack-utils/StackHeaderSpacer.js +5 -2
  30. package/build/layouts/stack-utils/StackHeaderSpacer.js.map +1 -1
  31. package/build/layouts/stack-utils/{StackHeaderItem.d.ts → StackHeaderView.d.ts} +18 -5
  32. package/build/layouts/stack-utils/StackHeaderView.d.ts.map +1 -0
  33. package/build/layouts/stack-utils/{StackHeaderItem.js → StackHeaderView.js} +14 -10
  34. package/build/layouts/stack-utils/StackHeaderView.js.map +1 -0
  35. package/build/layouts/stack-utils/index.d.ts +5 -5
  36. package/build/layouts/stack-utils/index.d.ts.map +1 -1
  37. package/build/layouts/stack-utils/index.js +4 -4
  38. package/build/layouts/stack-utils/index.js.map +1 -1
  39. package/build/layouts/stack-utils/shared.d.ts +4 -42
  40. package/build/layouts/stack-utils/shared.d.ts.map +1 -1
  41. package/build/layouts/stack-utils/shared.js +3 -22
  42. package/build/layouts/stack-utils/shared.js.map +1 -1
  43. package/build/link/ExpoLink.d.ts.map +1 -1
  44. package/build/link/ExpoLink.js +1 -8
  45. package/build/link/ExpoLink.js.map +1 -1
  46. package/build/link/elements.d.ts +36 -13
  47. package/build/link/elements.d.ts.map +1 -1
  48. package/build/link/elements.js +14 -5
  49. package/build/link/elements.js.map +1 -1
  50. package/build/link/preview/native.d.ts +12 -1
  51. package/build/link/preview/native.d.ts.map +1 -1
  52. package/build/link/preview/native.js.map +1 -1
  53. package/build/navigationEvents/index.d.ts +36 -0
  54. package/build/navigationEvents/index.d.ts.map +1 -0
  55. package/build/navigationEvents/index.js +53 -0
  56. package/build/navigationEvents/index.js.map +1 -0
  57. package/build/toolbar/elements.d.ts +325 -16
  58. package/build/toolbar/elements.d.ts.map +1 -1
  59. package/build/toolbar/elements.js +130 -12
  60. package/build/toolbar/elements.js.map +1 -1
  61. package/build/toolbar/index.d.ts +38 -6
  62. package/build/toolbar/index.d.ts.map +1 -1
  63. package/build/toolbar/index.js +36 -1
  64. package/build/toolbar/index.js.map +1 -1
  65. package/build/toolbar/native.ios.d.ts.map +1 -1
  66. package/build/toolbar/native.ios.js.map +1 -1
  67. package/build/toolbar/native.types.d.ts +6 -5
  68. package/build/toolbar/native.types.d.ts.map +1 -1
  69. package/build/toolbar/native.types.js.map +1 -1
  70. package/build/useScreens.d.ts.map +1 -1
  71. package/build/useScreens.js +50 -0
  72. package/build/useScreens.js.map +1 -1
  73. package/build/utils/font.d.ts +9 -0
  74. package/build/utils/font.d.ts.map +1 -0
  75. package/build/utils/font.js +20 -0
  76. package/build/utils/font.js.map +1 -0
  77. package/expo-module.config.json +1 -1
  78. package/ios/LinkPreview/LinkPreviewNativeActionView.swift +105 -24
  79. package/ios/LinkPreview/LinkPreviewNativeModule.swift +35 -8
  80. package/ios/LinkPreview/LinkPreviewNativeNavigation.swift +16 -20
  81. package/ios/LinkPreview/LinkPreviewNativePreviewView.swift +1 -8
  82. package/ios/LinkPreview/LinkPreviewNativeView.swift +48 -50
  83. package/ios/LinkPreview/LinkZoomTransition.swift +8 -10
  84. package/ios/RouterViewWithLogger.swift +5 -0
  85. package/ios/Toolbar/RouterFontUtils.swift +50 -0
  86. package/ios/Toolbar/RouterToolbarHostView.swift +41 -17
  87. package/ios/Toolbar/RouterToolbarItemView.swift +30 -13
  88. package/ios/Toolbar/RouterToolbarModule.swift +28 -0
  89. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.aar +0 -0
  90. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.aar.md5 +1 -0
  91. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.aar.sha1 +1 -0
  92. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.aar.sha256 +1 -0
  93. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.aar.sha512 +1 -0
  94. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.module → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.module} +17 -17
  95. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.module.md5 +1 -0
  96. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.module.sha1 +1 -0
  97. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.module.sha256 +1 -0
  98. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.module.sha512 +1 -0
  99. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.pom → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.pom} +1 -1
  100. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.pom.md5 +1 -0
  101. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.pom.sha1 +1 -0
  102. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.pom.sha256 +1 -0
  103. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e.pom.sha512 +1 -0
  104. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  105. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  106. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  107. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  108. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  109. package/package.json +10 -10
  110. package/build/layouts/stack-utils/StackHeaderItem.d.ts.map +0 -1
  111. package/build/layouts/stack-utils/StackHeaderItem.js.map +0 -1
  112. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.aar +0 -0
  113. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.aar.md5 +0 -1
  114. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.aar.sha1 +0 -1
  115. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.aar.sha256 +0 -1
  116. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.aar.sha512 +0 -1
  117. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.module.md5 +0 -1
  118. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.module.sha1 +0 -1
  119. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.module.sha256 +0 -1
  120. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.module.sha512 +0 -1
  121. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.pom.md5 +0 -1
  122. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.pom.sha1 +0 -1
  123. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.pom.sha256 +0 -1
  124. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7.pom.sha512 +0 -1
  125. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7-sources.jar → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar} +0 -0
  126. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7-sources.jar.md5 → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar.md5} +0 -0
  127. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7-sources.jar.sha1 → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar.sha1} +0 -0
  128. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7-sources.jar.sha256 → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar.sha256} +0 -0
  129. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251216-6e1f9a7/expo.modules.router-7.0.0-canary-20251216-6e1f9a7-sources.jar.sha512 → 7.0.0-canary-20251223-b83b31e/expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar.sha512} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"StackHeaderSpacer.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderSpacer.tsx"],"names":[],"mappings":";;;AAyCA,kGAOC;AArCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACI,MAAM,iBAAiB,GAAqC,GAAG,EAAE,CAAC,IAAI,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAE9E,SAAgB,2CAA2C,CACzD,KAA6B;IAE7B,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC","sourcesContent":["import type { NativeStackHeaderItemSpacing } from '@react-navigation/native-stack';\n\nexport interface StackHeaderSpacerProps {\n /**\n * The width of the spacing element.\n *\n * This is typically used to create space between header elements.\n */\n width: number;\n}\n\n/**\n * A spacing helper used inside `Stack.Header.Left` or `Stack.Header.Right` to create\n * empty space between header items.\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Screen() {\n * return (\n * <>\n * <ScreenContent />\n * <Stack.Screen>\n * <Stack.Header>\n * <Stack.Header.Left>\n * <Stack.Header.Button icon=\"arrow.left\" />\n * <Stack.Header.Spacer width={8} />\n * <Stack.Header.Button icon=\"arrow.right\" />\n * </Stack.Header.Left>\n * </Stack.Header>\n * </Stack.Screen>\n * </>\n * );\n * }\n * ```\n *\n * @platform ios\n */\nexport const StackHeaderSpacer: React.FC<StackHeaderSpacerProps> = () => null;\n\nexport function convertStackHeaderSpacerPropsToRNHeaderItem(\n props: StackHeaderSpacerProps\n): NativeStackHeaderItemSpacing {\n return {\n type: 'spacing',\n spacing: props.width,\n };\n}\n"]}
1
+ {"version":3,"file":"StackHeaderSpacer.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderSpacer.tsx"],"names":[],"mappings":";;;AAmDA,kGAWC;AAzCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACI,MAAM,iBAAiB,GAAqC,GAAG,EAAE,CAAC,IAAI,CAAC;AAAjE,QAAA,iBAAiB,qBAAgD;AAE9E,SAAgB,2CAA2C,CAAC,EAC1D,MAAM,EACN,KAAK,GACkB;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC","sourcesContent":["import type { NativeStackHeaderItemSpacing } from '@react-navigation/native-stack';\n\nexport interface StackHeaderSpacerProps {\n /**\n * Whether the spacer should be hidden.\n *\n * @default false\n */\n hidden?: boolean;\n // TODO: implement fluid spacing in react-native-screens\n /**\n * The width of the spacing element.\n *\n * This is typically used to create space between header elements.\n */\n width: number;\n // TODO: implement missing props in react-native-screens\n // hidesSharedBackground?: boolean;\n // sharesBackground?: boolean;\n}\n\n/**\n * A spacing helper used inside `Stack.Header.Left` or `Stack.Header.Right` to create\n * empty space between header items.\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Screen() {\n * return (\n * <>\n * <ScreenContent />\n * <Stack.Screen>\n * <Stack.Header>\n * <Stack.Header.Left>\n * <Stack.Header.Button icon=\"arrow.left\" />\n * <Stack.Header.Spacer width={8} />\n * <Stack.Header.Button icon=\"arrow.right\" />\n * </Stack.Header.Left>\n * </Stack.Header>\n * </Stack.Screen>\n * </>\n * );\n * }\n * ```\n *\n * @platform ios\n */\nexport const StackHeaderSpacer: React.FC<StackHeaderSpacerProps> = () => null;\n\nexport function convertStackHeaderSpacerPropsToRNHeaderItem({\n hidden,\n width,\n}: StackHeaderSpacerProps): NativeStackHeaderItemSpacing | undefined {\n if (hidden) {\n return undefined;\n }\n return {\n type: 'spacing',\n spacing: width,\n };\n}\n"]}
@@ -1,10 +1,23 @@
1
1
  import type { NativeStackHeaderItemCustom } from '@react-navigation/native-stack';
2
- export interface StackHeaderItemProps {
2
+ export interface StackHeaderViewProps {
3
3
  /**
4
4
  * Can be any React node.
5
5
  */
6
6
  children?: NativeStackHeaderItemCustom['element'];
7
- hideSharedBackground?: boolean;
7
+ /**
8
+ * Whether the view should be hidden.
9
+ *
10
+ * @default false
11
+ */
12
+ hidden?: boolean;
13
+ /**
14
+ * Whether to hide the shared background.
15
+ *
16
+ * @see [Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information.
17
+ *
18
+ * @platform iOS 26+
19
+ */
20
+ hidesSharedBackground?: boolean;
8
21
  }
9
22
  /**
10
23
  * A wrapper to render custom content in the header.
@@ -40,6 +53,6 @@ export interface StackHeaderItemProps {
40
53
  *
41
54
  * @platform ios
42
55
  */
43
- export declare const StackHeaderItem: React.FC<StackHeaderItemProps>;
44
- export declare function convertStackHeaderItemPropsToRNHeaderItem(props: StackHeaderItemProps): NativeStackHeaderItemCustom;
45
- //# sourceMappingURL=StackHeaderItem.d.ts.map
56
+ export declare const StackHeaderView: React.FC<StackHeaderViewProps>;
57
+ export declare function convertStackHeaderViewPropsToRNHeaderItem(props: StackHeaderViewProps): NativeStackHeaderItemCustom | undefined;
58
+ //# sourceMappingURL=StackHeaderView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackHeaderView.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAClD;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAGjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAc,CAAC;AAE1E,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,oBAAoB,GAC1B,2BAA2B,GAAG,SAAS,CAgBzC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackHeaderItem = void 0;
4
- exports.convertStackHeaderItemPropsToRNHeaderItem = convertStackHeaderItemPropsToRNHeaderItem;
3
+ exports.StackHeaderView = void 0;
4
+ exports.convertStackHeaderViewPropsToRNHeaderItem = convertStackHeaderViewPropsToRNHeaderItem;
5
5
  /**
6
6
  * A wrapper to render custom content in the header.
7
7
  *
@@ -36,17 +36,21 @@ exports.convertStackHeaderItemPropsToRNHeaderItem = convertStackHeaderItemPropsT
36
36
  *
37
37
  * @platform ios
38
38
  */
39
- const StackHeaderItem = () => null;
40
- exports.StackHeaderItem = StackHeaderItem;
41
- function convertStackHeaderItemPropsToRNHeaderItem(props) {
42
- const { children, ...rest } = props;
39
+ const StackHeaderView = () => null;
40
+ exports.StackHeaderView = StackHeaderView;
41
+ function convertStackHeaderViewPropsToRNHeaderItem(props) {
42
+ if (props.hidden) {
43
+ return undefined;
44
+ }
45
+ const { children, hidesSharedBackground } = props;
43
46
  if (!children) {
44
- console.warn('Stack.Header.Item requires a child element to render custom content in the header.');
47
+ console.warn('Stack.Header.View requires a child element to render custom content in the header.');
45
48
  }
49
+ const element = children ? children : <></>;
46
50
  return {
47
- ...rest,
48
51
  type: 'custom',
49
- element: children ?? <></>,
52
+ element,
53
+ hidesSharedBackground,
50
54
  };
51
55
  }
52
- //# sourceMappingURL=StackHeaderItem.js.map
56
+ //# sourceMappingURL=StackHeaderView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackHeaderView.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderView.tsx"],"names":[],"mappings":";;;AA6DA,8FAkBC;AAtDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACI,MAAM,eAAe,GAAmC,GAAG,EAAE,CAAC,IAAI,CAAC;AAA7D,QAAA,eAAe,mBAA8C;AAE1E,SAAgB,yCAAyC,CACvD,KAA2B;IAE3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,KAAK,CAAC;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CACV,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,qBAAqB;KACtB,CAAC;AACJ,CAAC","sourcesContent":["import type { NativeStackHeaderItemCustom } from '@react-navigation/native-stack';\n\nexport interface StackHeaderViewProps {\n /**\n * Can be any React node.\n */\n children?: NativeStackHeaderItemCustom['element'];\n /**\n * Whether the view should be hidden.\n *\n * @default false\n */\n hidden?: boolean;\n /**\n * Whether to hide the shared background.\n *\n * @see [Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information.\n *\n * @platform iOS 26+\n */\n hidesSharedBackground?: boolean;\n // TODO: implement missing props in react-native-screens\n // separateBackground?: boolean;\n}\n\n/**\n * A wrapper to render custom content in the header.\n *\n * Use as `Stack.Header.Item` to render a custom React element into the header\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n * import { Text } from 'react-native';\n *\n * function CustomHeaderElement() {\n * return <Text>Custom Element</Text>;\n * }\n *\n * function Screen() {\n * return (\n * <>\n * <ScreenContent />\n * <Stack.Screen>\n * <Stack.Header>\n * <Stack.Header.Left>\n * <Stack.Header.Item>\n * <CustomHeaderElement />\n * </Stack.Header.Item>\n * </Stack.Header.Left>\n * </Stack.Header>\n * </Stack.Screen>\n * </>\n * );\n * }\n * ```\n *\n * @platform ios\n */\nexport const StackHeaderView: React.FC<StackHeaderViewProps> = () => null;\n\nexport function convertStackHeaderViewPropsToRNHeaderItem(\n props: StackHeaderViewProps\n): NativeStackHeaderItemCustom | undefined {\n if (props.hidden) {\n return undefined;\n }\n const { children, hidesSharedBackground } = props;\n if (!children) {\n console.warn(\n 'Stack.Header.View requires a child element to render custom content in the header.'\n );\n }\n const element = children ? children : <></>;\n return {\n type: 'custom',\n element,\n hidesSharedBackground,\n };\n}\n"]}
@@ -1,17 +1,17 @@
1
1
  import { StackHeaderBackButton, type StackHeaderBackButtonProps } from './StackHeaderBackButton';
2
2
  import { StackHeaderButton, type StackHeaderButtonProps } from './StackHeaderButton';
3
3
  import { StackHeaderComponent, type StackHeaderProps } from './StackHeaderComponent';
4
- import { StackHeaderItem, type StackHeaderItemProps } from './StackHeaderItem';
5
4
  import { StackHeaderLeft, type StackHeaderLeftProps, StackHeaderRight, type StackHeaderRightProps } from './StackHeaderLeftRight';
6
5
  import { StackHeaderMenu, StackHeaderMenuAction, type StackHeaderMenuActionProps, type StackHeaderMenuProps } from './StackHeaderMenu';
7
6
  import { StackHeaderSearchBar, type StackHeaderSearchBarProps } from './StackHeaderSearchBar';
8
7
  import { StackHeaderSpacer, type StackHeaderSpacerProps } from './StackHeaderSpacer';
9
8
  import { StackHeaderTitle, type StackHeaderTitleProps } from './StackHeaderTitle';
9
+ import { StackHeaderView, type StackHeaderViewProps } from './StackHeaderView';
10
10
  import { StackHeaderBadge, StackHeaderIcon, StackHeaderLabel, type StackHeaderBadgeProps, type StackHeaderIconProps, type StackHeaderLabelProps } from './common-primitives';
11
11
  import type { StackHeaderItemSharedProps } from './shared';
12
12
  export declare const StackHeader: typeof StackHeaderComponent & {
13
- Left: typeof StackHeaderLeft;
14
- Right: typeof StackHeaderRight;
13
+ Left: import("react").FC<StackHeaderLeftProps>;
14
+ Right: import("react").FC<StackHeaderRightProps>;
15
15
  BackButton: typeof StackHeaderBackButton;
16
16
  Title: typeof StackHeaderTitle;
17
17
  SearchBar: typeof StackHeaderSearchBar;
@@ -21,9 +21,9 @@ export declare const StackHeader: typeof StackHeaderComponent & {
21
21
  Icon: import("react").FC<StackHeaderIconProps>;
22
22
  Menu: import("react").FC<StackHeaderMenuProps>;
23
23
  MenuAction: import("react").FC<StackHeaderMenuActionProps>;
24
- Item: import("react").FC<StackHeaderItemProps>;
24
+ View: import("react").FC<StackHeaderViewProps>;
25
25
  Spacer: import("react").FC<StackHeaderSpacerProps>;
26
26
  };
27
- export { StackHeaderBackButton, type StackHeaderBackButtonProps, type StackHeaderProps, StackHeaderLeft, type StackHeaderLeftProps, StackHeaderRight, type StackHeaderRightProps, StackHeaderSearchBar, type StackHeaderSearchBarProps, StackHeaderTitle, type StackHeaderTitleProps, StackHeaderButton, type StackHeaderButtonProps, StackHeaderBadge, type StackHeaderBadgeProps, StackHeaderLabel, type StackHeaderLabelProps, StackHeaderIcon, type StackHeaderIconProps, StackHeaderMenu, type StackHeaderMenuProps, StackHeaderMenuAction, type StackHeaderMenuActionProps, StackHeaderItem, type StackHeaderItemProps, StackHeaderSpacer, type StackHeaderSpacerProps, type StackHeaderItemSharedProps, };
27
+ export { StackHeaderBackButton, type StackHeaderBackButtonProps, type StackHeaderProps, StackHeaderLeft, type StackHeaderLeftProps, StackHeaderRight, type StackHeaderRightProps, StackHeaderSearchBar, type StackHeaderSearchBarProps, StackHeaderTitle, type StackHeaderTitleProps, StackHeaderButton, type StackHeaderButtonProps, StackHeaderBadge, type StackHeaderBadgeProps, StackHeaderLabel, type StackHeaderLabelProps, StackHeaderIcon, type StackHeaderIconProps, StackHeaderMenu, type StackHeaderMenuProps, StackHeaderMenuAction, type StackHeaderMenuActionProps, StackHeaderView, type StackHeaderViewProps, StackHeaderSpacer, type StackHeaderSpacerProps, type StackHeaderItemSharedProps, };
28
28
  export { StackScreen, appendScreenStackPropsToOptions, type StackScreenProps } from './StackScreen';
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CActB,CAAC;AAEH,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,eAAe,EACf,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CActB,CAAC;AAEH,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,eAAe,EACf,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.appendScreenStackPropsToOptions = exports.StackScreen = exports.StackHeaderSpacer = exports.StackHeaderItem = exports.StackHeaderMenuAction = exports.StackHeaderMenu = exports.StackHeaderIcon = exports.StackHeaderLabel = exports.StackHeaderBadge = exports.StackHeaderButton = exports.StackHeaderTitle = exports.StackHeaderSearchBar = exports.StackHeaderRight = exports.StackHeaderLeft = exports.StackHeaderBackButton = exports.StackHeader = void 0;
3
+ exports.appendScreenStackPropsToOptions = exports.StackScreen = exports.StackHeaderSpacer = exports.StackHeaderView = exports.StackHeaderMenuAction = exports.StackHeaderMenu = exports.StackHeaderIcon = exports.StackHeaderLabel = exports.StackHeaderBadge = exports.StackHeaderButton = exports.StackHeaderTitle = exports.StackHeaderSearchBar = exports.StackHeaderRight = exports.StackHeaderLeft = exports.StackHeaderBackButton = exports.StackHeader = void 0;
4
4
  const StackHeaderBackButton_1 = require("./StackHeaderBackButton");
5
5
  Object.defineProperty(exports, "StackHeaderBackButton", { enumerable: true, get: function () { return StackHeaderBackButton_1.StackHeaderBackButton; } });
6
6
  const StackHeaderButton_1 = require("./StackHeaderButton");
7
7
  Object.defineProperty(exports, "StackHeaderButton", { enumerable: true, get: function () { return StackHeaderButton_1.StackHeaderButton; } });
8
8
  const StackHeaderComponent_1 = require("./StackHeaderComponent");
9
- const StackHeaderItem_1 = require("./StackHeaderItem");
10
- Object.defineProperty(exports, "StackHeaderItem", { enumerable: true, get: function () { return StackHeaderItem_1.StackHeaderItem; } });
11
9
  const StackHeaderLeftRight_1 = require("./StackHeaderLeftRight");
12
10
  Object.defineProperty(exports, "StackHeaderLeft", { enumerable: true, get: function () { return StackHeaderLeftRight_1.StackHeaderLeft; } });
13
11
  Object.defineProperty(exports, "StackHeaderRight", { enumerable: true, get: function () { return StackHeaderLeftRight_1.StackHeaderRight; } });
@@ -20,6 +18,8 @@ const StackHeaderSpacer_1 = require("./StackHeaderSpacer");
20
18
  Object.defineProperty(exports, "StackHeaderSpacer", { enumerable: true, get: function () { return StackHeaderSpacer_1.StackHeaderSpacer; } });
21
19
  const StackHeaderTitle_1 = require("./StackHeaderTitle");
22
20
  Object.defineProperty(exports, "StackHeaderTitle", { enumerable: true, get: function () { return StackHeaderTitle_1.StackHeaderTitle; } });
21
+ const StackHeaderView_1 = require("./StackHeaderView");
22
+ Object.defineProperty(exports, "StackHeaderView", { enumerable: true, get: function () { return StackHeaderView_1.StackHeaderView; } });
23
23
  const common_primitives_1 = require("./common-primitives");
24
24
  Object.defineProperty(exports, "StackHeaderBadge", { enumerable: true, get: function () { return common_primitives_1.StackHeaderBadge; } });
25
25
  Object.defineProperty(exports, "StackHeaderIcon", { enumerable: true, get: function () { return common_primitives_1.StackHeaderIcon; } });
@@ -36,7 +36,7 @@ exports.StackHeader = Object.assign(StackHeaderComponent_1.StackHeaderComponent,
36
36
  Icon: common_primitives_1.StackHeaderIcon,
37
37
  Menu: StackHeaderMenu_1.StackHeaderMenu,
38
38
  MenuAction: StackHeaderMenu_1.StackHeaderMenuAction,
39
- Item: StackHeaderItem_1.StackHeaderItem,
39
+ View: StackHeaderView_1.StackHeaderView,
40
40
  Spacer: StackHeaderSpacer_1.StackHeaderSpacer,
41
41
  });
42
42
  var StackScreen_1 = require("./StackScreen");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":";;;AAAA,mEAAiG;AA8C/F,sGA9CO,6CAAqB,OA8CP;AA7CvB,2DAAqF;AAwDnF,kGAxDO,qCAAiB,OAwDP;AAvDnB,iEAAqF;AACrF,uDAA+E;AAkE7E,gGAlEO,iCAAe,OAkEP;AAjEjB,iEAKgC;AAwC9B,gGA5CA,sCAAe,OA4CA;AAEf,iGA5CA,uCAAgB,OA4CA;AAzClB,uDAK2B;AAkDzB,gGAtDA,iCAAe,OAsDA;AAEf,sGAvDA,uCAAqB,OAuDA;AAnDvB,iEAA8F;AAqC5F,qGArCO,2CAAoB,OAqCP;AApCtB,2DAAqF;AAsDnF,kGAtDO,qCAAiB,OAsDP;AArDnB,yDAAkF;AAqChF,iGArCO,mCAAgB,OAqCP;AApClB,2DAO6B;AAiC3B,iGAvCA,oCAAgB,OAuCA;AAIhB,gGA1CA,mCAAe,OA0CA;AAFf,iGAvCA,oCAAgB,OAuCA;AAhCL,QAAA,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,2CAAoB,EAAE;IAC7D,IAAI,EAAE,sCAAe;IACrB,KAAK,EAAE,uCAAgB;IACvB,UAAU,EAAE,6CAAqB;IACjC,KAAK,EAAE,mCAAgB;IACvB,SAAS,EAAE,2CAAoB;IAC/B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,oCAAgB;IACvB,KAAK,EAAE,oCAAgB;IACvB,IAAI,EAAE,mCAAe;IACrB,IAAI,EAAE,iCAAe;IACrB,UAAU,EAAE,uCAAqB;IACjC,IAAI,EAAE,iCAAe;IACrB,MAAM,EAAE,qCAAiB;CAC1B,CAAC,CAAC;AAiCH,6CAAoG;AAA3F,0GAAA,WAAW,OAAA;AAAE,8HAAA,+BAA+B,OAAA","sourcesContent":["import { StackHeaderBackButton, type StackHeaderBackButtonProps } from './StackHeaderBackButton';\nimport { StackHeaderButton, type StackHeaderButtonProps } from './StackHeaderButton';\nimport { StackHeaderComponent, type StackHeaderProps } from './StackHeaderComponent';\nimport { StackHeaderItem, type StackHeaderItemProps } from './StackHeaderItem';\nimport {\n StackHeaderLeft,\n type StackHeaderLeftProps,\n StackHeaderRight,\n type StackHeaderRightProps,\n} from './StackHeaderLeftRight';\nimport {\n StackHeaderMenu,\n StackHeaderMenuAction,\n type StackHeaderMenuActionProps,\n type StackHeaderMenuProps,\n} from './StackHeaderMenu';\nimport { StackHeaderSearchBar, type StackHeaderSearchBarProps } from './StackHeaderSearchBar';\nimport { StackHeaderSpacer, type StackHeaderSpacerProps } from './StackHeaderSpacer';\nimport { StackHeaderTitle, type StackHeaderTitleProps } from './StackHeaderTitle';\nimport {\n StackHeaderBadge,\n StackHeaderIcon,\n StackHeaderLabel,\n type StackHeaderBadgeProps,\n type StackHeaderIconProps,\n type StackHeaderLabelProps,\n} from './common-primitives';\nimport type { StackHeaderItemSharedProps } from './shared';\n\nexport const StackHeader = Object.assign(StackHeaderComponent, {\n Left: StackHeaderLeft,\n Right: StackHeaderRight,\n BackButton: StackHeaderBackButton,\n Title: StackHeaderTitle,\n SearchBar: StackHeaderSearchBar,\n Button: StackHeaderButton,\n Badge: StackHeaderBadge,\n Label: StackHeaderLabel,\n Icon: StackHeaderIcon,\n Menu: StackHeaderMenu,\n MenuAction: StackHeaderMenuAction,\n Item: StackHeaderItem,\n Spacer: StackHeaderSpacer,\n});\n\nexport {\n StackHeaderBackButton,\n type StackHeaderBackButtonProps,\n type StackHeaderProps,\n StackHeaderLeft,\n type StackHeaderLeftProps,\n StackHeaderRight,\n type StackHeaderRightProps,\n StackHeaderSearchBar,\n type StackHeaderSearchBarProps,\n StackHeaderTitle,\n type StackHeaderTitleProps,\n StackHeaderButton,\n type StackHeaderButtonProps,\n StackHeaderBadge,\n type StackHeaderBadgeProps,\n StackHeaderLabel,\n type StackHeaderLabelProps,\n StackHeaderIcon,\n type StackHeaderIconProps,\n StackHeaderMenu,\n type StackHeaderMenuProps,\n StackHeaderMenuAction,\n type StackHeaderMenuActionProps,\n StackHeaderItem,\n type StackHeaderItemProps,\n StackHeaderSpacer,\n type StackHeaderSpacerProps,\n type StackHeaderItemSharedProps,\n};\n\nexport { StackScreen, appendScreenStackPropsToOptions, type StackScreenProps } from './StackScreen';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":";;;AAAA,mEAAiG;AA8C/F,sGA9CO,6CAAqB,OA8CP;AA7CvB,2DAAqF;AAwDnF,kGAxDO,qCAAiB,OAwDP;AAvDnB,iEAAqF;AACrF,iEAKgC;AAyC9B,gGA7CA,sCAAe,OA6CA;AAEf,iGA7CA,uCAAgB,OA6CA;AA1ClB,uDAK2B;AAmDzB,gGAvDA,iCAAe,OAuDA;AAEf,sGAxDA,uCAAqB,OAwDA;AApDvB,iEAA8F;AAsC5F,qGAtCO,2CAAoB,OAsCP;AArCtB,2DAAqF;AAuDnF,kGAvDO,qCAAiB,OAuDP;AAtDnB,yDAAkF;AAsChF,iGAtCO,mCAAgB,OAsCP;AArClB,uDAA+E;AAmD7E,gGAnDO,iCAAe,OAmDP;AAlDjB,2DAO6B;AAiC3B,iGAvCA,oCAAgB,OAuCA;AAIhB,gGA1CA,mCAAe,OA0CA;AAFf,iGAvCA,oCAAgB,OAuCA;AAhCL,QAAA,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,2CAAoB,EAAE;IAC7D,IAAI,EAAE,sCAAe;IACrB,KAAK,EAAE,uCAAgB;IACvB,UAAU,EAAE,6CAAqB;IACjC,KAAK,EAAE,mCAAgB;IACvB,SAAS,EAAE,2CAAoB;IAC/B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,oCAAgB;IACvB,KAAK,EAAE,oCAAgB;IACvB,IAAI,EAAE,mCAAe;IACrB,IAAI,EAAE,iCAAe;IACrB,UAAU,EAAE,uCAAqB;IACjC,IAAI,EAAE,iCAAe;IACrB,MAAM,EAAE,qCAAiB;CAC1B,CAAC,CAAC;AAiCH,6CAAoG;AAA3F,0GAAA,WAAW,OAAA;AAAE,8HAAA,+BAA+B,OAAA","sourcesContent":["import { StackHeaderBackButton, type StackHeaderBackButtonProps } from './StackHeaderBackButton';\nimport { StackHeaderButton, type StackHeaderButtonProps } from './StackHeaderButton';\nimport { StackHeaderComponent, type StackHeaderProps } from './StackHeaderComponent';\nimport {\n StackHeaderLeft,\n type StackHeaderLeftProps,\n StackHeaderRight,\n type StackHeaderRightProps,\n} from './StackHeaderLeftRight';\nimport {\n StackHeaderMenu,\n StackHeaderMenuAction,\n type StackHeaderMenuActionProps,\n type StackHeaderMenuProps,\n} from './StackHeaderMenu';\nimport { StackHeaderSearchBar, type StackHeaderSearchBarProps } from './StackHeaderSearchBar';\nimport { StackHeaderSpacer, type StackHeaderSpacerProps } from './StackHeaderSpacer';\nimport { StackHeaderTitle, type StackHeaderTitleProps } from './StackHeaderTitle';\nimport { StackHeaderView, type StackHeaderViewProps } from './StackHeaderView';\nimport {\n StackHeaderBadge,\n StackHeaderIcon,\n StackHeaderLabel,\n type StackHeaderBadgeProps,\n type StackHeaderIconProps,\n type StackHeaderLabelProps,\n} from './common-primitives';\nimport type { StackHeaderItemSharedProps } from './shared';\n\nexport const StackHeader = Object.assign(StackHeaderComponent, {\n Left: StackHeaderLeft,\n Right: StackHeaderRight,\n BackButton: StackHeaderBackButton,\n Title: StackHeaderTitle,\n SearchBar: StackHeaderSearchBar,\n Button: StackHeaderButton,\n Badge: StackHeaderBadge,\n Label: StackHeaderLabel,\n Icon: StackHeaderIcon,\n Menu: StackHeaderMenu,\n MenuAction: StackHeaderMenuAction,\n View: StackHeaderView,\n Spacer: StackHeaderSpacer,\n});\n\nexport {\n StackHeaderBackButton,\n type StackHeaderBackButtonProps,\n type StackHeaderProps,\n StackHeaderLeft,\n type StackHeaderLeftProps,\n StackHeaderRight,\n type StackHeaderRightProps,\n StackHeaderSearchBar,\n type StackHeaderSearchBarProps,\n StackHeaderTitle,\n type StackHeaderTitleProps,\n StackHeaderButton,\n type StackHeaderButtonProps,\n StackHeaderBadge,\n type StackHeaderBadgeProps,\n StackHeaderLabel,\n type StackHeaderLabelProps,\n StackHeaderIcon,\n type StackHeaderIconProps,\n StackHeaderMenu,\n type StackHeaderMenuProps,\n StackHeaderMenuAction,\n type StackHeaderMenuActionProps,\n StackHeaderView,\n type StackHeaderViewProps,\n StackHeaderSpacer,\n type StackHeaderSpacerProps,\n type StackHeaderItemSharedProps,\n};\n\nexport { StackScreen, appendScreenStackPropsToOptions, type StackScreenProps } from './StackScreen';\n"]}
@@ -1,50 +1,12 @@
1
1
  import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';
2
2
  import { type ReactNode } from 'react';
3
- import { type ColorValue, type ImageSourcePropType, type StyleProp, type TextStyle } from 'react-native';
3
+ import { type ColorValue, type ImageSourcePropType, type StyleProp } from 'react-native';
4
4
  import type { SFSymbol } from 'sf-symbols-typescript';
5
+ import { type BasicTextStyle } from '../../utils/font';
5
6
  export interface StackHeaderItemSharedProps {
6
- /**
7
- * There are two ways to specify the content of the header item:
8
- *
9
- * @example
10
- * ```tsx
11
- * import { Stack } from 'expo-router';
12
- *
13
- * ...
14
- * <Stack.Header.Button>As text passed as children</Stack.Header.Button>
15
- * ```
16
- *
17
- * @example
18
- * ```tsx
19
- * import { Stack } from 'expo-router';
20
- *
21
- * ...
22
- * <Stack.Header.Button>
23
- * <Stack.Header.Icon sf="star.fill" />
24
- * <Stack.Header.Label>As components</Stack.Header.Label>
25
- * <Stack.Header.Badge>3</Stack.Header.Badge>
26
- * </Stack.Header.Button>
27
- * ```
28
- *
29
- * **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only.
30
- */
31
7
  children?: ReactNode;
32
- /**
33
- * Style for the label of the header item.
34
- */
35
- style?: StyleProp<Pick<TextStyle, 'fontFamily' | 'fontSize' | 'fontWeight' | 'color'> & {
36
- /**
37
- * When set to 'transparent', the button will have no background color.
38
- *
39
- * @platform iOS 26+
40
- */
41
- backgroundColor?: 'transparent';
42
- }>;
43
- /**
44
- * Whether to separate the background of this item from other header items.
45
- *
46
- * @default false
47
- */
8
+ style?: StyleProp<BasicTextStyle>;
9
+ hidesSharedBackground?: boolean;
48
10
  separateBackground?: boolean;
49
11
  accessibilityLabel?: string;
50
12
  accessibilityHint?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAKtD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CACf,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG;QACpE;;;;WAIG;QACH,eAAe,CAAC,EAAE,aAAa,CAAC;KACjC,CACF,CAAC;IACF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,IAAI,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAAC;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;CAC1C;AAGD,KAAK,kBAAkB,GAAG,IAAI,CAC5B,2BAA2B,EACzB,OAAO,GACP,YAAY,GACZ,MAAM,GACN,SAAS,GACT,WAAW,GACX,UAAU,GACV,OAAO,GACP,uBAAuB,GACvB,kBAAkB,GAClB,YAAY,GACZ,OAAO,GACP,oBAAoB,GACpB,mBAAmB,CACtB,CAAC;AAEF,wBAAgB,iDAAiD,CAC/D,KAAK,EAAE,0BAA0B,GAChC,kBAAkB,CAsDpB"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAiC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,IAAI,CAAC,EAAE,QAAQ,GAAG,mBAAmB,CAAC;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;CAC1C;AAGD,KAAK,kBAAkB,GAAG,IAAI,CAC5B,2BAA2B,EACzB,OAAO,GACP,YAAY,GACZ,MAAM,GACN,SAAS,GACT,WAAW,GACX,UAAU,GACV,OAAO,GACP,uBAAuB,GACvB,kBAAkB,GAClB,YAAY,GACZ,OAAO,GACP,oBAAoB,GACpB,mBAAmB,CACtB,CAAC;AAEF,wBAAgB,iDAAiD,CAC/D,KAAK,EAAE,0BAA0B,GAChC,kBAAkB,CAmDpB"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertStackHeaderSharedPropsToRNSharedHeaderItem = convertStackHeaderSharedPropsToRNSharedHeaderItem;
4
4
  const react_1 = require("react");
5
- const react_native_1 = require("react-native");
6
5
  const common_primitives_1 = require("./common-primitives");
7
6
  const children_1 = require("../../utils/children");
7
+ const font_1 = require("../../utils/font");
8
8
  function convertStackHeaderSharedPropsToRNSharedHeaderItem(props) {
9
9
  const { children, style, separateBackground, icon, ...rest } = props;
10
10
  const stringChildren = react_1.Children.toArray(children)
@@ -39,18 +39,14 @@ function convertStackHeaderSharedPropsToRNSharedHeaderItem(props) {
39
39
  sharesBackground: !separateBackground,
40
40
  };
41
41
  if (style) {
42
- const { backgroundColor, ...convertedStyle } = convertTextStyleToRNTextStyle(style) ?? {};
42
+ const convertedStyle = (0, font_1.convertTextStyleToRNTextStyle)(style) ?? {};
43
43
  item.labelStyle = convertedStyle;
44
- item.hidesSharedBackground = backgroundColor === 'transparent';
45
- }
46
- else {
47
- item.hidesSharedBackground = false;
48
44
  }
49
45
  if (badgeComponent) {
50
46
  item.badge = {
51
47
  value: badgeComponent.props.children ?? '',
52
48
  };
53
- const badgeStyle = convertTextStyleToRNTextStyle(badgeComponent.props.style);
49
+ const badgeStyle = (0, font_1.convertTextStyleToRNTextStyle)(badgeComponent.props.style);
54
50
  if (badgeStyle) {
55
51
  item.badge.style = badgeStyle;
56
52
  }
@@ -60,19 +56,4 @@ function convertStackHeaderSharedPropsToRNSharedHeaderItem(props) {
60
56
  }
61
57
  return item;
62
58
  }
63
- function convertTextStyleToRNTextStyle(style) {
64
- const flattenedStyle = react_native_1.StyleSheet.flatten(style);
65
- if (!flattenedStyle) {
66
- return undefined;
67
- }
68
- if ('fontWeight' in flattenedStyle) {
69
- return {
70
- ...flattenedStyle,
71
- fontWeight: typeof flattenedStyle.fontWeight === 'number'
72
- ? String(flattenedStyle.fontWeight)
73
- : flattenedStyle.fontWeight,
74
- };
75
- }
76
- return flattenedStyle;
77
- }
78
59
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/shared.ts"],"names":[],"mappings":";;AAyFA,8GAwDC;AAhJD,iCAAiD;AACjD,+CAMsB;AAGtB,2DAA0F;AAC1F,mDAA2D;AA6E3D,SAAgB,iDAAiD,CAC/D,KAAiC;IAEjC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,cAAc,GAAG,gBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC9C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC5C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,QAAQ,EAAE,oCAAgB,CAAC,CAAC;IAC9D,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI;QACxC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;YACpB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;QACvB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,kBAAkB,GACtB,IAAA,8BAAmB,EAAC,QAAQ,EAAE,mCAAe,CAAC,EAAE,KAAK,IAAI,uBAAuB,CAAC;IACnF,MAAM,cAAc,GAAG,IAAA,8BAAmB,EAAC,QAAQ,EAAE,oCAAgB,CAAC,CAAC;IACvE,MAAM,OAAO,GAAwC,CAAC,GAAG,EAAE;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,kBAAkB,CAAC,GAAG;aAC/B,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,kBAAkB,CAAC,EAAE;SAC5B,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,IAAI,GAAuB;QAC/B,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,cAAc;QAC9C,gBAAgB,EAAE,CAAC,kBAAkB;KACtC,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,eAAe,EAAE,GAAG,cAAc,EAAE,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,eAAe,KAAK,aAAa,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;SAC3C,CAAC;QACF,MAAM,UAAU,GAAG,6BAA6B,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,SAAS,6BAA6B,CACpC,KAA2C;IAM3C,MAAM,cAAc,GAAG,yBAAU,CAAC,OAAO,CAAC,KAAK,CAA8B,CAAC;IAC9E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,YAAY,IAAI,cAAc,EAAE,CAAC;QACnC,OAAO;YACL,GAAG,cAAc;YACjB,UAAU,EACR,OAAO,cAAc,CAAC,UAAU,KAAK,QAAQ;gBAC3C,CAAC,CAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAA4B;gBAC/D,CAAC,CAAC,cAAc,CAAC,UAAU;SAChC,CAAC;IACJ,CAAC;IACD,OAAO,cAAmD,CAAC;AAC7D,CAAC","sourcesContent":["import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';\nimport { Children, type ReactNode } from 'react';\nimport {\n StyleSheet,\n type ColorValue,\n type ImageSourcePropType,\n type StyleProp,\n type TextStyle,\n} from 'react-native';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nimport { StackHeaderBadge, StackHeaderIcon, StackHeaderLabel } from './common-primitives';\nimport { getFirstChildOfType } from '../../utils/children';\n\nexport interface StackHeaderItemSharedProps {\n /**\n * There are two ways to specify the content of the header item:\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * ...\n * <Stack.Header.Button>As text passed as children</Stack.Header.Button>\n * ```\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * ...\n * <Stack.Header.Button>\n * <Stack.Header.Icon sf=\"star.fill\" />\n * <Stack.Header.Label>As components</Stack.Header.Label>\n * <Stack.Header.Badge>3</Stack.Header.Badge>\n * </Stack.Header.Button>\n * ```\n *\n * **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only.\n */\n children?: ReactNode;\n /**\n * Style for the label of the header item.\n */\n style?: StyleProp<\n Pick<TextStyle, 'fontFamily' | 'fontSize' | 'fontWeight' | 'color'> & {\n /**\n * When set to 'transparent', the button will have no background color.\n *\n * @platform iOS 26+\n */\n backgroundColor?: 'transparent';\n }\n >;\n /**\n * Whether to separate the background of this item from other header items.\n *\n * @default false\n */\n separateBackground?: boolean;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n disabled?: boolean;\n tintColor?: ColorValue;\n icon?: SFSymbol | ImageSourcePropType;\n /**\n * @default 'plain'\n */\n variant?: 'plain' | 'done' | 'prominent';\n}\n\n// We need to pick these properties, as the SharedHeaderItem is not exported by React Navigation\ntype RNSharedHeaderItem = Pick<\n NativeStackHeaderItemButton,\n | 'label'\n | 'labelStyle'\n | 'icon'\n | 'variant'\n | 'tintColor'\n | 'disabled'\n | 'width'\n | 'hidesSharedBackground'\n | 'sharesBackground'\n | 'identifier'\n | 'badge'\n | 'accessibilityLabel'\n | 'accessibilityHint'\n>;\n\nexport function convertStackHeaderSharedPropsToRNSharedHeaderItem(\n props: StackHeaderItemSharedProps\n): RNSharedHeaderItem {\n const { children, style, separateBackground, icon, ...rest } = props;\n const stringChildren = Children.toArray(children)\n .filter((child) => typeof child === 'string')\n .join('');\n const label = getFirstChildOfType(children, StackHeaderLabel);\n const iconPropConvertedToIcon = props.icon\n ? typeof props.icon === 'string'\n ? { sf: props.icon }\n : { src: props.icon }\n : undefined;\n const iconComponentProps =\n getFirstChildOfType(children, StackHeaderIcon)?.props ?? iconPropConvertedToIcon;\n const badgeComponent = getFirstChildOfType(children, StackHeaderBadge);\n const rnsIcon: NativeStackHeaderItemButton['icon'] = (() => {\n if (!iconComponentProps) {\n return undefined;\n }\n if ('src' in iconComponentProps) {\n return {\n type: 'image',\n source: iconComponentProps.src,\n };\n }\n return {\n type: 'sfSymbol',\n name: iconComponentProps.sf,\n };\n })();\n const item: RNSharedHeaderItem = {\n ...rest,\n label: label?.props.children ?? stringChildren,\n sharesBackground: !separateBackground,\n };\n if (style) {\n const { backgroundColor, ...convertedStyle } = convertTextStyleToRNTextStyle(style) ?? {};\n item.labelStyle = convertedStyle;\n item.hidesSharedBackground = backgroundColor === 'transparent';\n } else {\n item.hidesSharedBackground = false;\n }\n if (badgeComponent) {\n item.badge = {\n value: badgeComponent.props.children ?? '',\n };\n const badgeStyle = convertTextStyleToRNTextStyle(badgeComponent.props.style);\n if (badgeStyle) {\n item.badge.style = badgeStyle;\n }\n }\n if (rnsIcon) {\n item.icon = rnsIcon;\n }\n return item;\n}\n\ntype NumericFontWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n\ntype ConvertedFontWeightType = Exclude<TextStyle['fontWeight'], number> | `${NumericFontWeight}`;\n\nfunction convertTextStyleToRNTextStyle<BaseStyleType extends Pick<TextStyle, 'fontWeight'>>(\n style: StyleProp<BaseStyleType | undefined>\n):\n | (Omit<BaseStyleType, 'fontWeight'> & {\n fontWeight?: ConvertedFontWeightType;\n })\n | undefined {\n const flattenedStyle = StyleSheet.flatten(style) as BaseStyleType | undefined;\n if (!flattenedStyle) {\n return undefined;\n }\n if ('fontWeight' in flattenedStyle) {\n return {\n ...flattenedStyle,\n fontWeight:\n typeof flattenedStyle.fontWeight === 'number'\n ? (String(flattenedStyle.fontWeight) as `${NumericFontWeight}`)\n : flattenedStyle.fontWeight,\n };\n }\n return flattenedStyle as Omit<BaseStyleType, 'fontWeight'>;\n}\n"]}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/shared.ts"],"names":[],"mappings":";;AA2CA,8GAqDC;AA/FD,iCAAiD;AAIjD,2DAA0F;AAC1F,mDAA2D;AAC3D,2CAAsF;AAoCtF,SAAgB,iDAAiD,CAC/D,KAAiC;IAEjC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrE,MAAM,cAAc,GAAG,gBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC9C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC5C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,QAAQ,EAAE,oCAAgB,CAAC,CAAC;IAC9D,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI;QACxC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;YACpB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;QACvB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,kBAAkB,GACtB,IAAA,8BAAmB,EAAC,QAAQ,EAAE,mCAAe,CAAC,EAAE,KAAK,IAAI,uBAAuB,CAAC;IACnF,MAAM,cAAc,GAAG,IAAA,8BAAmB,EAAC,QAAQ,EAAE,oCAAgB,CAAC,CAAC;IACvE,MAAM,OAAO,GAAwC,CAAC,GAAG,EAAE;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,kBAAkB,CAAC,GAAG;aAC/B,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,kBAAkB,CAAC,EAAE;SAC5B,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,IAAI,GAAuB;QAC/B,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,cAAc;QAC9C,gBAAgB,EAAE,CAAC,kBAAkB;KACtC,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,cAAc,GAAG,IAAA,oCAA6B,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;IACnC,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;SAC3C,CAAC;QACF,MAAM,UAAU,GAAG,IAAA,oCAA6B,EAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';\nimport { Children, type ReactNode } from 'react';\nimport { type ColorValue, type ImageSourcePropType, type StyleProp } from 'react-native';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nimport { StackHeaderBadge, StackHeaderIcon, StackHeaderLabel } from './common-primitives';\nimport { getFirstChildOfType } from '../../utils/children';\nimport { convertTextStyleToRNTextStyle, type BasicTextStyle } from '../../utils/font';\n\nexport interface StackHeaderItemSharedProps {\n children?: ReactNode;\n style?: StyleProp<BasicTextStyle>;\n hidesSharedBackground?: boolean;\n separateBackground?: boolean;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n disabled?: boolean;\n tintColor?: ColorValue;\n icon?: SFSymbol | ImageSourcePropType;\n /**\n * @default 'plain'\n */\n variant?: 'plain' | 'done' | 'prominent';\n}\n\n// We need to pick these properties, as the SharedHeaderItem is not exported by React Navigation\ntype RNSharedHeaderItem = Pick<\n NativeStackHeaderItemButton,\n | 'label'\n | 'labelStyle'\n | 'icon'\n | 'variant'\n | 'tintColor'\n | 'disabled'\n | 'width'\n | 'hidesSharedBackground'\n | 'sharesBackground'\n | 'identifier'\n | 'badge'\n | 'accessibilityLabel'\n | 'accessibilityHint'\n>;\n\nexport function convertStackHeaderSharedPropsToRNSharedHeaderItem(\n props: StackHeaderItemSharedProps\n): RNSharedHeaderItem {\n const { children, style, separateBackground, icon, ...rest } = props;\n const stringChildren = Children.toArray(children)\n .filter((child) => typeof child === 'string')\n .join('');\n const label = getFirstChildOfType(children, StackHeaderLabel);\n const iconPropConvertedToIcon = props.icon\n ? typeof props.icon === 'string'\n ? { sf: props.icon }\n : { src: props.icon }\n : undefined;\n const iconComponentProps =\n getFirstChildOfType(children, StackHeaderIcon)?.props ?? iconPropConvertedToIcon;\n const badgeComponent = getFirstChildOfType(children, StackHeaderBadge);\n const rnsIcon: NativeStackHeaderItemButton['icon'] = (() => {\n if (!iconComponentProps) {\n return undefined;\n }\n if ('src' in iconComponentProps) {\n return {\n type: 'image',\n source: iconComponentProps.src,\n };\n }\n return {\n type: 'sfSymbol',\n name: iconComponentProps.sf,\n };\n })();\n const item: RNSharedHeaderItem = {\n ...rest,\n label: label?.props.children ?? stringChildren,\n sharesBackground: !separateBackground,\n };\n if (style) {\n const convertedStyle = convertTextStyleToRNTextStyle(style) ?? {};\n item.labelStyle = convertedStyle;\n }\n if (badgeComponent) {\n item.badge = {\n value: badgeComponent.props.children ?? '',\n };\n const badgeStyle = convertTextStyleToRNTextStyle(badgeComponent.props.style);\n if (badgeStyle) {\n item.badge.style = badgeStyle;\n }\n }\n if (rnsIcon) {\n item.icon = rnsIcon;\n }\n return item;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoLink.d.ts","sourceRoot":"","sources":["../../src/link/ExpoLink.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAMxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAMxC"}
1
+ {"version":3,"file":"ExpoLink.d.ts","sourceRoot":"","sources":["../../src/link/ExpoLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAMxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAMxC"}
@@ -33,12 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  return result;
34
34
  };
35
35
  })();
36
- var __importDefault = (this && this.__importDefault) || function (mod) {
37
- return (mod && mod.__esModule) ? mod : { "default": mod };
38
- };
39
36
  Object.defineProperty(exports, "__esModule", { value: true });
40
37
  exports.ExpoLink = ExpoLink;
41
- const expo_constants_1 = __importDefault(require("expo-constants"));
42
38
  const react_1 = __importStar(require("react"));
43
39
  const BaseExpoRouterLink_1 = require("./BaseExpoRouterLink");
44
40
  const LinkWithPreview_1 = require("./LinkWithPreview");
@@ -55,10 +51,7 @@ function ExpoLink(props) {
55
51
  function ExpoLinkImpl(props) {
56
52
  const isPreview = (0, PreviewRouteContext_1.useIsPreview)();
57
53
  const href = (0, useZoomHref_1.useZoomHref)(props);
58
- const shouldUseLinkWithPreview = process.env.EXPO_OS === 'ios' &&
59
- isLinkWithPreview(props) &&
60
- !isPreview &&
61
- expo_constants_1.default?.expoConfig?.newArchEnabled !== false;
54
+ const shouldUseLinkWithPreview = process.env.EXPO_OS === 'ios' && isLinkWithPreview(props) && !isPreview;
62
55
  if (shouldUseLinkWithPreview) {
63
56
  return <LinkWithPreview_1.LinkWithPreview {...props} href={href} hrefForPreviewNavigation={props.href}/>;
64
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoLink.js","sourceRoot":"","sources":["../../src/link/ExpoLink.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcb,4BAMC;AAlBD,oEAAuC;AACvC,+CAAwD;AAExD,6DAA0D;AAC1D,uDAAoD;AACpD,yCAAmD;AACnD,uEAA6D;AAE7D,oDAAiD;AACjD,sCAAoD;AACpD,gGAA+F;AAE/F,SAAgB,QAAQ,CAAC,KAAgB;IACvC,OAAO,CACL,CAAC,uEAAmC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CACpD;MAAA,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAC1B;IAAA,EAAE,uEAAmC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB;IACpC,MAAM,SAAS,GAAG,IAAA,kCAAY,GAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,MAAM,wBAAwB,GAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK;QAC7B,iBAAiB,CAAC,KAAK,CAAC;QACxB,CAAC,SAAS;QACV,wBAAS,EAAE,UAAU,EAAE,cAAc,KAAK,KAAK,CAAC;IAClD,IAAI,wBAAwB,EAAE,CAAC;QAC7B,OAAO,CAAC,iCAAe,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAG,CAAC;IAC1F,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CACjE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAQ,CAAC,CAC7F,CAAC;QACF,QAAQ,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5E,CAAC;IAED,OAAO,CAAC,uCAAkB,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB;IACzC,MAAM,UAAU,GAAG,IAAA,0BAAoB,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,gBAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC1C,CAAC,KAAK,EAAE,EAAE,CACR,IAAA,sBAAc,EAAC,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAQ,CAAC,CAC3E,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport Constants from 'expo-constants';\nimport React, { Children, isValidElement } from 'react';\n\nimport { BaseExpoRouterLink } from './BaseExpoRouterLink';\nimport { LinkWithPreview } from './LinkWithPreview';\nimport { LinkMenu, LinkPreview } from './elements';\nimport { useIsPreview } from './preview/PreviewRouteContext';\nimport { LinkProps } from './useLinkHooks';\nimport { useZoomHref } from './zoom/useZoomHref';\nimport { shouldLinkExternally } from '../utils/url';\nimport { ZoomTransitionSourceContextProvider } from './zoom/zoom-transition-context-providers';\n\nexport function ExpoLink(props: LinkProps) {\n return (\n <ZoomTransitionSourceContextProvider linkProps={props}>\n <ExpoLinkImpl {...props} />\n </ZoomTransitionSourceContextProvider>\n );\n}\n\nfunction ExpoLinkImpl(props: LinkProps) {\n const isPreview = useIsPreview();\n const href = useZoomHref(props);\n const shouldUseLinkWithPreview =\n process.env.EXPO_OS === 'ios' &&\n isLinkWithPreview(props) &&\n !isPreview &&\n Constants?.expoConfig?.newArchEnabled !== false;\n if (shouldUseLinkWithPreview) {\n return <LinkWithPreview {...props} href={href} hrefForPreviewNavigation={props.href} />;\n }\n let children = props.children;\n if (React.Children.count(props.children) > 1) {\n const arrayChildren = React.Children.toArray(props.children).filter(\n (child) => !isValidElement(child) || (child.type !== LinkPreview && child.type !== LinkMenu)\n );\n children = arrayChildren.length === 1 ? arrayChildren[0] : props.children;\n }\n\n return <BaseExpoRouterLink {...props} href={href} children={children} />;\n}\n\nfunction isLinkWithPreview(props: LinkProps): boolean {\n const isExternal = shouldLinkExternally(String(props.href));\n return Children.toArray(props.children).some(\n (child) =>\n isValidElement(child) &&\n ((!isExternal && child.type === LinkPreview) || child.type === LinkMenu)\n );\n}\n"]}
1
+ {"version":3,"file":"ExpoLink.js","sourceRoot":"","sources":["../../src/link/ExpoLink.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAab,4BAMC;AAjBD,+CAAwD;AAExD,6DAA0D;AAC1D,uDAAoD;AACpD,yCAAmD;AACnD,uEAA6D;AAE7D,oDAAiD;AACjD,sCAAoD;AACpD,gGAA+F;AAE/F,SAAgB,QAAQ,CAAC,KAAgB;IACvC,OAAO,CACL,CAAC,uEAAmC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CACpD;MAAA,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAC1B;IAAA,EAAE,uEAAmC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB;IACpC,MAAM,SAAS,GAAG,IAAA,kCAAY,GAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IAChC,MAAM,wBAAwB,GAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1E,IAAI,wBAAwB,EAAE,CAAC;QAC7B,OAAO,CAAC,iCAAe,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAG,CAAC;IAC1F,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CACjE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,sBAAc,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAQ,CAAC,CAC7F,CAAC;QACF,QAAQ,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5E,CAAC;IAED,OAAO,CAAC,uCAAkB,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB;IACzC,MAAM,UAAU,GAAG,IAAA,0BAAoB,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,gBAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC1C,CAAC,KAAK,EAAE,EAAE,CACR,IAAA,sBAAc,EAAC,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAQ,CAAC,CAC3E,CAAC;AACJ,CAAC","sourcesContent":["'use client';\n\nimport React, { Children, isValidElement } from 'react';\n\nimport { BaseExpoRouterLink } from './BaseExpoRouterLink';\nimport { LinkWithPreview } from './LinkWithPreview';\nimport { LinkMenu, LinkPreview } from './elements';\nimport { useIsPreview } from './preview/PreviewRouteContext';\nimport { LinkProps } from './useLinkHooks';\nimport { useZoomHref } from './zoom/useZoomHref';\nimport { shouldLinkExternally } from '../utils/url';\nimport { ZoomTransitionSourceContextProvider } from './zoom/zoom-transition-context-providers';\n\nexport function ExpoLink(props: LinkProps) {\n return (\n <ZoomTransitionSourceContextProvider linkProps={props}>\n <ExpoLinkImpl {...props} />\n </ZoomTransitionSourceContextProvider>\n );\n}\n\nfunction ExpoLinkImpl(props: LinkProps) {\n const isPreview = useIsPreview();\n const href = useZoomHref(props);\n const shouldUseLinkWithPreview =\n process.env.EXPO_OS === 'ios' && isLinkWithPreview(props) && !isPreview;\n if (shouldUseLinkWithPreview) {\n return <LinkWithPreview {...props} href={href} hrefForPreviewNavigation={props.href} />;\n }\n let children = props.children;\n if (React.Children.count(props.children) > 1) {\n const arrayChildren = React.Children.toArray(props.children).filter(\n (child) => !isValidElement(child) || (child.type !== LinkPreview && child.type !== LinkMenu)\n );\n children = arrayChildren.length === 1 ? arrayChildren[0] : props.children;\n }\n\n return <BaseExpoRouterLink {...props} href={href} children={children} />;\n}\n\nfunction isLinkWithPreview(props: LinkProps): boolean {\n const isExternal = shouldLinkExternally(String(props.href));\n return Children.toArray(props.children).some(\n (child) =>\n isValidElement(child) &&\n ((!isExternal && child.type === LinkPreview) || child.type === LinkMenu)\n );\n}\n"]}
@@ -1,15 +1,17 @@
1
- import React, { type PropsWithChildren } from 'react';
1
+ import React, { type PropsWithChildren, type ReactNode } from 'react';
2
2
  import type { ViewStyle } from 'react-native';
3
3
  import type { SFSymbol } from 'sf-symbols-typescript';
4
4
  export interface LinkMenuActionProps {
5
5
  /**
6
6
  * The title of the menu item.
7
7
  */
8
- title: string;
8
+ children?: ReactNode;
9
9
  /**
10
- * Optional SF Symbol displayed alongside the menu item.
10
+ * If `true`, the menu item will be displayed as destructive.
11
+ *
12
+ * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information.
11
13
  */
12
- icon?: SFSymbol;
14
+ destructive?: boolean;
13
15
  /**
14
16
  * If `true`, the menu item will be disabled and not selectable.
15
17
  *
@@ -17,11 +19,37 @@ export interface LinkMenuActionProps {
17
19
  */
18
20
  disabled?: boolean;
19
21
  /**
20
- * If `true`, the menu item will be displayed as destructive.
22
+ * An elaborated title that explains the purpose of the action.
23
+ */
24
+ discoverabilityLabel?: string;
25
+ /**
26
+ * Whether the menu element should be hidden.
21
27
  *
22
- * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information.
28
+ * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/hidden) for more information.
29
+ *
30
+ * @default false
23
31
  */
24
- destructive?: boolean;
32
+ hidden?: boolean;
33
+ /**
34
+ * SF Symbol displayed alongside the menu item.
35
+ */
36
+ icon?: SFSymbol;
37
+ /**
38
+ * If `true`, the menu item will be displayed as selected.
39
+ */
40
+ isOn?: boolean;
41
+ onPress?: () => void;
42
+ /**
43
+ * An optional subtitle for the menu item.
44
+ *
45
+ * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information.
46
+ */
47
+ subtitle?: string;
48
+ /**
49
+ * The title of the menu item.
50
+ * @deprecated Use `children` prop instead.
51
+ */
52
+ title?: string;
25
53
  /**
26
54
  * If `true`, the menu will be kept presented after the action is selected.
27
55
  *
@@ -31,11 +59,6 @@ export interface LinkMenuActionProps {
31
59
  * @see [Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented) for more information.
32
60
  */
33
61
  unstable_keepPresented?: boolean;
34
- /**
35
- * If `true`, the menu item will be displayed as selected.
36
- */
37
- isOn?: boolean;
38
- onPress: () => void;
39
62
  }
40
63
  /**
41
64
  * This component renders a context menu action for a link.
@@ -54,7 +77,7 @@ export interface LinkMenuProps {
54
77
  /**
55
78
  * Optional SF Symbol displayed alongside the menu item.
56
79
  */
57
- icon?: string;
80
+ icon?: SFSymbol;
58
81
  /**
59
82
  * If `true`, the menu will be displayed as a palette.
60
83
  * This means that the menu will be displayed as one row
@@ -1 +1 @@
1
- {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/link/elements.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAgC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAStD,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,4BAcxD;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqB5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG;IAChF;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,4BAwBlD;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,mSAgBxE"}
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/link/elements.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAA8B,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAWtD,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,4BA0BxD;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqB5C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG;IAChF;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,4BAwBlD;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,mSAgBxE"}
@@ -38,14 +38,15 @@ exports.LinkMenu = void 0;
38
38
  exports.LinkMenuAction = LinkMenuAction;
39
39
  exports.LinkPreview = LinkPreview;
40
40
  exports.LinkTrigger = LinkTrigger;
41
- const non_secure_1 = require("nanoid/non-secure");
42
41
  const react_1 = __importStar(require("react"));
43
42
  const InternalLinkPreviewContext_1 = require("./InternalLinkPreviewContext");
43
+ const primitives_1 = require("../primitives");
44
44
  const HrefPreview_1 = require("./preview/HrefPreview");
45
45
  const PreviewRouteContext_1 = require("./preview/PreviewRouteContext");
46
46
  const native_1 = require("./preview/native");
47
47
  const Slot_1 = require("../ui/Slot");
48
48
  const link_apple_zoom_1 = require("./zoom/link-apple-zoom");
49
+ const children_1 = require("../utils/children");
49
50
  /**
50
51
  * This component renders a context menu action for a link.
51
52
  * It should only be used as a child of `Link.Menu` or `LinkMenu`.
@@ -55,12 +56,20 @@ const link_apple_zoom_1 = require("./zoom/link-apple-zoom");
55
56
  * @platform ios
56
57
  */
57
58
  function LinkMenuAction(props) {
58
- const identifier = (0, react_1.useMemo)(() => (0, non_secure_1.nanoid)(), []);
59
+ const identifier = (0, react_1.useId)();
59
60
  if ((0, PreviewRouteContext_1.useIsPreview)() || process.env.EXPO_OS !== 'ios' || !(0, react_1.use)(InternalLinkPreviewContext_1.InternalLinkPreviewContext)) {
60
61
  return null;
61
62
  }
62
- const { unstable_keepPresented, onPress, ...rest } = props;
63
- return (<native_1.NativeLinkPreviewAction {...rest} onSelected={onPress} keepPresented={unstable_keepPresented} identifier={identifier}/>);
63
+ const { unstable_keepPresented, onPress, children, title, ...rest } = props;
64
+ const areChildrenString = typeof children === 'string';
65
+ const label = areChildrenString
66
+ ? children
67
+ : (0, children_1.getFirstChildOfType)(children, primitives_1.Label)?.props.children;
68
+ const iconComponent = !props.icon && !areChildrenString ? (0, children_1.getFirstChildOfType)(children, primitives_1.Icon) : undefined;
69
+ const icon = props.icon ??
70
+ (iconComponent?.props && 'sf' in iconComponent.props ? iconComponent.props.sf : undefined);
71
+ const sf = typeof icon === 'string' ? icon : undefined;
72
+ return (<native_1.NativeLinkPreviewAction {...rest} identifier={identifier} icon={sf} title={label ?? title ?? ''} keepPresented={unstable_keepPresented} onSelected={() => onPress?.()}/>);
64
73
  }
65
74
  /**
66
75
  * Groups context menu actions for a link.
@@ -81,7 +90,7 @@ function LinkMenuAction(props) {
81
90
  * @platform ios
82
91
  */
83
92
  const LinkMenu = (props) => {
84
- const identifier = (0, react_1.useMemo)(() => (0, non_secure_1.nanoid)(), []);
93
+ const identifier = (0, react_1.useId)();
85
94
  if ((0, PreviewRouteContext_1.useIsPreview)() || process.env.EXPO_OS !== 'ios' || !(0, react_1.use)(InternalLinkPreviewContext_1.InternalLinkPreviewContext)) {
86
95
  return null;
87
96
  }