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.
- package/android/build.gradle +2 -2
- package/build/color/index.d.ts +44 -0
- package/build/color/index.d.ts.map +1 -1
- package/build/color/index.js +69 -5
- package/build/color/index.js.map +1 -1
- package/build/exports.d.ts +1 -0
- package/build/exports.d.ts.map +1 -1
- package/build/exports.js +3 -1
- package/build/exports.js.map +1 -1
- package/build/layouts/StackClient.d.ts +3 -3
- package/build/layouts/stack-utils/StackHeaderButton.d.ts +77 -2
- package/build/layouts/stack-utils/StackHeaderButton.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderButton.js +3 -0
- package/build/layouts/stack-utils/StackHeaderButton.js.map +1 -1
- package/build/layouts/stack-utils/StackHeaderComponent.d.ts +84 -1
- package/build/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderComponent.js +54 -1
- package/build/layouts/stack-utils/StackHeaderComponent.js.map +1 -1
- package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts +107 -3
- package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderLeftRight.js +108 -13
- package/build/layouts/stack-utils/StackHeaderLeftRight.js.map +1 -1
- package/build/layouts/stack-utils/StackHeaderMenu.d.ts +83 -7
- package/build/layouts/stack-utils/StackHeaderMenu.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderMenu.js +14 -4
- package/build/layouts/stack-utils/StackHeaderMenu.js.map +1 -1
- package/build/layouts/stack-utils/StackHeaderSpacer.d.ts +7 -1
- package/build/layouts/stack-utils/StackHeaderSpacer.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderSpacer.js +5 -2
- package/build/layouts/stack-utils/StackHeaderSpacer.js.map +1 -1
- package/build/layouts/stack-utils/{StackHeaderItem.d.ts → StackHeaderView.d.ts} +18 -5
- package/build/layouts/stack-utils/StackHeaderView.d.ts.map +1 -0
- package/build/layouts/stack-utils/{StackHeaderItem.js → StackHeaderView.js} +14 -10
- package/build/layouts/stack-utils/StackHeaderView.js.map +1 -0
- package/build/layouts/stack-utils/index.d.ts +5 -5
- package/build/layouts/stack-utils/index.d.ts.map +1 -1
- package/build/layouts/stack-utils/index.js +4 -4
- package/build/layouts/stack-utils/index.js.map +1 -1
- package/build/layouts/stack-utils/shared.d.ts +4 -42
- package/build/layouts/stack-utils/shared.d.ts.map +1 -1
- package/build/layouts/stack-utils/shared.js +3 -22
- package/build/layouts/stack-utils/shared.js.map +1 -1
- package/build/link/ExpoLink.d.ts.map +1 -1
- package/build/link/ExpoLink.js +1 -8
- package/build/link/ExpoLink.js.map +1 -1
- package/build/link/elements.d.ts +36 -13
- package/build/link/elements.d.ts.map +1 -1
- package/build/link/elements.js +14 -5
- package/build/link/elements.js.map +1 -1
- package/build/link/preview/native.d.ts +12 -1
- package/build/link/preview/native.d.ts.map +1 -1
- package/build/link/preview/native.js.map +1 -1
- package/build/navigationEvents/index.d.ts +36 -0
- package/build/navigationEvents/index.d.ts.map +1 -0
- package/build/navigationEvents/index.js +53 -0
- package/build/navigationEvents/index.js.map +1 -0
- package/build/toolbar/elements.d.ts +325 -16
- package/build/toolbar/elements.d.ts.map +1 -1
- package/build/toolbar/elements.js +130 -12
- package/build/toolbar/elements.js.map +1 -1
- package/build/toolbar/index.d.ts +38 -6
- package/build/toolbar/index.d.ts.map +1 -1
- package/build/toolbar/index.js +36 -1
- package/build/toolbar/index.js.map +1 -1
- package/build/toolbar/native.ios.d.ts.map +1 -1
- package/build/toolbar/native.ios.js.map +1 -1
- package/build/toolbar/native.types.d.ts +6 -5
- package/build/toolbar/native.types.d.ts.map +1 -1
- package/build/toolbar/native.types.js.map +1 -1
- package/build/useScreens.d.ts.map +1 -1
- package/build/useScreens.js +50 -0
- package/build/useScreens.js.map +1 -1
- package/build/utils/font.d.ts +9 -0
- package/build/utils/font.d.ts.map +1 -0
- package/build/utils/font.js +20 -0
- package/build/utils/font.js.map +1 -0
- package/expo-module.config.json +1 -1
- package/ios/LinkPreview/LinkPreviewNativeActionView.swift +105 -24
- package/ios/LinkPreview/LinkPreviewNativeModule.swift +35 -8
- package/ios/LinkPreview/LinkPreviewNativeNavigation.swift +16 -20
- package/ios/LinkPreview/LinkPreviewNativePreviewView.swift +1 -8
- package/ios/LinkPreview/LinkPreviewNativeView.swift +48 -50
- package/ios/LinkPreview/LinkZoomTransition.swift +8 -10
- package/ios/RouterViewWithLogger.swift +5 -0
- package/ios/Toolbar/RouterFontUtils.swift +50 -0
- package/ios/Toolbar/RouterToolbarHostView.swift +41 -17
- package/ios/Toolbar/RouterToolbarItemView.swift +30 -13
- package/ios/Toolbar/RouterToolbarModule.swift +28 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
- package/package.json +10 -10
- package/build/layouts/stack-utils/StackHeaderItem.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderItem.js.map +0 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- /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
- /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
- /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
- /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
- /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
|
@@ -2,16 +2,12 @@ import ExpoModulesCore
|
|
|
2
2
|
import RNScreens
|
|
3
3
|
import UIKit
|
|
4
4
|
|
|
5
|
-
class RouterToolbarHostView:
|
|
5
|
+
class RouterToolbarHostView: RouterViewWithLogger, LinkPreviewMenuUpdatable {
|
|
6
6
|
// Mutable map of toolbar items
|
|
7
7
|
var toolbarItemsArray: [String] = []
|
|
8
8
|
var toolbarItemsMap: [String: RouterToolbarItemView] = [:]
|
|
9
9
|
var menuItemsMap: [String: LinkPreviewNativeActionView] = [:]
|
|
10
10
|
|
|
11
|
-
required init(appContext: AppContext? = nil) {
|
|
12
|
-
super.init(appContext: appContext)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
11
|
private func addRouterToolbarItemAtIndex(
|
|
16
12
|
_ item: RouterToolbarItemView,
|
|
17
13
|
index: Int
|
|
@@ -56,6 +52,7 @@ class RouterToolbarHostView: ExpoView, LinkPreviewMenuUpdatable {
|
|
|
56
52
|
if let item = toolbarItemsMap[$0] {
|
|
57
53
|
return item.barButtonItem
|
|
58
54
|
}
|
|
55
|
+
// TODO: Extract this logic to separate function
|
|
59
56
|
if let menu = menuItemsMap[$0] {
|
|
60
57
|
let item = UIBarButtonItem(
|
|
61
58
|
title: menu.title,
|
|
@@ -65,10 +62,35 @@ class RouterToolbarHostView: ExpoView, LinkPreviewMenuUpdatable {
|
|
|
65
62
|
)
|
|
66
63
|
// Otherwise, the menu items will be reversed in the toolbar
|
|
67
64
|
item.preferredMenuElementOrder = .fixed
|
|
65
|
+
if #available(iOS 26.0, *) {
|
|
66
|
+
if let hidesSharedBackground = menu.hidesSharedBackground {
|
|
67
|
+
item.hidesSharedBackground = hidesSharedBackground
|
|
68
|
+
}
|
|
69
|
+
if let sharesBackground = menu.sharesBackground {
|
|
70
|
+
item.sharesBackground = sharesBackground
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if let titleStyle = menu.titleStyle {
|
|
74
|
+
RouterFontUtils.setTitleStyle(fromConfig: titleStyle, for: item)
|
|
75
|
+
}
|
|
76
|
+
item.isHidden = menu.routerHidden
|
|
77
|
+
item.isEnabled = !menu.disabled
|
|
78
|
+
if let accessibilityLabel = menu.accessibilityLabelForMenu {
|
|
79
|
+
item.accessibilityLabel = accessibilityLabel
|
|
80
|
+
} else {
|
|
81
|
+
item.accessibilityLabel = menu.title
|
|
82
|
+
}
|
|
83
|
+
if let accessibilityHint = menu.accessibilityHintForMenu {
|
|
84
|
+
item.accessibilityHint = accessibilityHint
|
|
85
|
+
}
|
|
86
|
+
item.tintColor = menu.customTintColor
|
|
87
|
+
if let style = menu.barButtonItemStyle {
|
|
88
|
+
item.style = style
|
|
89
|
+
}
|
|
68
90
|
return item
|
|
69
91
|
}
|
|
70
|
-
|
|
71
|
-
"[expo-router] Warning: Could not find toolbar item or menu for identifier \($0)"
|
|
92
|
+
logger?.warn(
|
|
93
|
+
"[expo-router] Warning: Could not find toolbar item or menu for identifier \($0). This is most likely a bug in expo-router."
|
|
72
94
|
)
|
|
73
95
|
return nil
|
|
74
96
|
}, animated: true)
|
|
@@ -76,16 +98,15 @@ class RouterToolbarHostView: ExpoView, LinkPreviewMenuUpdatable {
|
|
|
76
98
|
false, animated: true)
|
|
77
99
|
return
|
|
78
100
|
}
|
|
79
|
-
} else {
|
|
80
|
-
print(
|
|
81
|
-
"[expo-router] Warning: Could not find owning UIViewController for RouterToolbarHostView")
|
|
82
101
|
}
|
|
83
102
|
}
|
|
84
103
|
|
|
85
104
|
override func mountChildComponentView(_ childComponentView: UIView, index: Int) {
|
|
86
105
|
if let toolbarItem = childComponentView as? RouterToolbarItemView {
|
|
87
106
|
if toolbarItem.identifier.isEmpty {
|
|
88
|
-
|
|
107
|
+
logger?.warn(
|
|
108
|
+
"[expo-router] RouterToolbarItemView identifier is empty. This is most likely a bug in expo-router."
|
|
109
|
+
)
|
|
89
110
|
return
|
|
90
111
|
}
|
|
91
112
|
addRouterToolbarItemAtIndex(toolbarItem, index: index)
|
|
@@ -93,8 +114,8 @@ class RouterToolbarHostView: ExpoView, LinkPreviewMenuUpdatable {
|
|
|
93
114
|
menu.parentMenuUpdatable = self
|
|
94
115
|
addMenuToolbarItemAtIndex(menu, index: index)
|
|
95
116
|
} else {
|
|
96
|
-
|
|
97
|
-
"
|
|
117
|
+
logger?.warn(
|
|
118
|
+
"[expo-router] Unknown child component view (\(childComponentView)) mounted to RouterToolbarHost. This is most likely a bug in expo-router."
|
|
98
119
|
)
|
|
99
120
|
}
|
|
100
121
|
updateToolbarItems()
|
|
@@ -103,19 +124,22 @@ class RouterToolbarHostView: ExpoView, LinkPreviewMenuUpdatable {
|
|
|
103
124
|
override func unmountChildComponentView(_ childComponentView: UIView, index: Int) {
|
|
104
125
|
if let toolbarItem = childComponentView as? RouterToolbarItemView {
|
|
105
126
|
if toolbarItem.identifier.isEmpty {
|
|
106
|
-
|
|
127
|
+
logger?.warn(
|
|
128
|
+
"[expo-router] RouterToolbarItemView identifier is empty. This is most likely a bug in expo-router."
|
|
129
|
+
)
|
|
107
130
|
return
|
|
108
131
|
}
|
|
109
132
|
removeToolbarItemWithId(toolbarItem.identifier)
|
|
110
133
|
} else if let menu = childComponentView as? LinkPreviewNativeActionView {
|
|
111
134
|
if menu.identifier.isEmpty {
|
|
112
|
-
|
|
135
|
+
logger?.warn(
|
|
136
|
+
"[expo-router] Menu identifier is empty. This is most likely a bug in expo-router.")
|
|
113
137
|
return
|
|
114
138
|
}
|
|
115
139
|
removeToolbarItemWithId(menu.identifier)
|
|
116
140
|
} else {
|
|
117
|
-
|
|
118
|
-
"
|
|
141
|
+
logger?.warn(
|
|
142
|
+
"[expo-router] Unknown child component view (\(childComponentView)) unmounted from RouterToolbarHost. This is most likely a bug in expo-router."
|
|
119
143
|
)
|
|
120
144
|
}
|
|
121
145
|
updateToolbarItems()
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import ExpoModulesCore
|
|
2
|
-
import React
|
|
3
2
|
import UIKit
|
|
4
3
|
|
|
5
|
-
class RouterToolbarItemView:
|
|
4
|
+
class RouterToolbarItemView: RouterViewWithLogger {
|
|
6
5
|
var identifier: String = ""
|
|
7
6
|
@ReactiveProp var type: ItemType?
|
|
8
7
|
@ReactiveProp var title: String?
|
|
@@ -18,6 +17,10 @@ class RouterToolbarItemView: ExpoView {
|
|
|
18
17
|
@ReactiveProp var selected: Bool = false
|
|
19
18
|
@ReactiveProp var possibleTitles: Set<String>?
|
|
20
19
|
@ReactiveProp var badgeConfiguration: BadgeConfiguration?
|
|
20
|
+
@ReactiveProp var titleStyle: TitleStyle?
|
|
21
|
+
@ReactiveProp var routerAccessibilityLabel: String?
|
|
22
|
+
@ReactiveProp var routerAccessibilityHint: String?
|
|
23
|
+
@ReactiveProp var disabled: Bool = false
|
|
21
24
|
|
|
22
25
|
var host: RouterToolbarHostView?
|
|
23
26
|
|
|
@@ -50,6 +53,9 @@ class RouterToolbarItemView: ExpoView {
|
|
|
50
53
|
if let tintColor = customTintColor {
|
|
51
54
|
item.tintColor = tintColor
|
|
52
55
|
}
|
|
56
|
+
if let titleStyle {
|
|
57
|
+
RouterFontUtils.setTitleStyle(fromConfig: titleStyle, for: item)
|
|
58
|
+
}
|
|
53
59
|
}
|
|
54
60
|
if #available(iOS 26.0, *) {
|
|
55
61
|
item.hidesSharedBackground = hidesSharedBackground
|
|
@@ -67,6 +73,13 @@ class RouterToolbarItemView: ExpoView {
|
|
|
67
73
|
item.isHidden = routerHidden
|
|
68
74
|
}
|
|
69
75
|
item.isSelected = selected
|
|
76
|
+
if let routerAccessibilityLabel = routerAccessibilityLabel {
|
|
77
|
+
item.accessibilityLabel = routerAccessibilityLabel
|
|
78
|
+
}
|
|
79
|
+
if let routerAccessibilityHint = routerAccessibilityHint {
|
|
80
|
+
item.accessibilityHint = routerAccessibilityHint
|
|
81
|
+
}
|
|
82
|
+
item.isEnabled = !disabled
|
|
70
83
|
if #available(iOS 26.0, *) {
|
|
71
84
|
if let badgeConfig = badgeConfiguration {
|
|
72
85
|
var badge = UIBarButtonItem.Badge.indicator()
|
|
@@ -81,17 +94,14 @@ class RouterToolbarItemView: ExpoView {
|
|
|
81
94
|
}
|
|
82
95
|
if badgeConfig.fontFamily != nil || badgeConfig.fontSize != nil
|
|
83
96
|
|| badgeConfig.fontWeight != nil {
|
|
84
|
-
let font =
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
variant: nil,
|
|
91
|
-
scaleMultiplier: 1.0)
|
|
97
|
+
let font = RouterFontUtils.convertTitleStyleToFont(
|
|
98
|
+
TitleStyle(
|
|
99
|
+
fontFamily: badgeConfig.fontFamily,
|
|
100
|
+
fontSize: badgeConfig.fontSize,
|
|
101
|
+
fontWeight: badgeConfig.fontWeight
|
|
102
|
+
))
|
|
92
103
|
badge.font = font
|
|
93
104
|
}
|
|
94
|
-
// TODO: Find out why this does not work
|
|
95
105
|
item.badge = badge
|
|
96
106
|
}
|
|
97
107
|
}
|
|
@@ -105,8 +115,8 @@ class RouterToolbarItemView: ExpoView {
|
|
|
105
115
|
|
|
106
116
|
override func mountChildComponentView(_ childComponentView: UIView, index: Int) {
|
|
107
117
|
if customView != nil {
|
|
108
|
-
|
|
109
|
-
"[expo-router]
|
|
118
|
+
logger?.warn(
|
|
119
|
+
"[expo-router] RouterToolbarItemView can only have one child view. This is most likely a bug in expo-router."
|
|
110
120
|
)
|
|
111
121
|
return
|
|
112
122
|
}
|
|
@@ -138,6 +148,13 @@ struct BadgeConfiguration: Equatable {
|
|
|
138
148
|
var fontWeight: String?
|
|
139
149
|
}
|
|
140
150
|
|
|
151
|
+
struct TitleStyle: Equatable {
|
|
152
|
+
var fontFamily: String?
|
|
153
|
+
var fontSize: Double?
|
|
154
|
+
var fontWeight: String?
|
|
155
|
+
var color: UIColor?
|
|
156
|
+
}
|
|
157
|
+
|
|
141
158
|
@propertyWrapper
|
|
142
159
|
struct ReactiveProp<Value: Equatable> {
|
|
143
160
|
private var value: Value
|
|
@@ -57,6 +57,18 @@ public class RouterToolbarModule: Module {
|
|
|
57
57
|
(view: RouterToolbarItemView, config: BadgeConfigurationRecord?) in
|
|
58
58
|
view.badgeConfiguration = config?.toBadgeConfiguration()
|
|
59
59
|
}
|
|
60
|
+
Prop("titleStyle") { (view: RouterToolbarItemView, style: TitleStyleRecord?) in
|
|
61
|
+
view.titleStyle = style?.toTitleStyle()
|
|
62
|
+
}
|
|
63
|
+
Prop("accessibilityLabel") { (view: RouterToolbarItemView, accessibilityLabel: String?) in
|
|
64
|
+
view.accessibilityLabel = accessibilityLabel
|
|
65
|
+
}
|
|
66
|
+
Prop("accessibilityHint") { (view: RouterToolbarItemView, accessibilityHint: String?) in
|
|
67
|
+
view.accessibilityHint = accessibilityHint
|
|
68
|
+
}
|
|
69
|
+
Prop("disabled") { (view: RouterToolbarItemView, disabled: Bool?) in
|
|
70
|
+
view.disabled = disabled ?? false
|
|
71
|
+
}
|
|
60
72
|
|
|
61
73
|
Events("onSelected")
|
|
62
74
|
}
|
|
@@ -100,3 +112,19 @@ struct BadgeConfigurationRecord: Record {
|
|
|
100
112
|
)
|
|
101
113
|
}
|
|
102
114
|
}
|
|
115
|
+
|
|
116
|
+
struct TitleStyleRecord: Record {
|
|
117
|
+
@Field var fontFamily: String?
|
|
118
|
+
@Field var fontSize: Double?
|
|
119
|
+
@Field var fontWeight: String?
|
|
120
|
+
@Field var color: UIColor?
|
|
121
|
+
|
|
122
|
+
func toTitleStyle() -> TitleStyle {
|
|
123
|
+
return TitleStyle(
|
|
124
|
+
fontFamily: fontFamily,
|
|
125
|
+
fontSize: fontSize,
|
|
126
|
+
fontWeight: fontWeight,
|
|
127
|
+
color: color
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
8c916bee60640e0b60daed543761abd9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5fa5e3051c154802f07905f47f18a306d7262425
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.router",
|
|
5
5
|
"module": "expo.modules.router",
|
|
6
|
-
"version": "7.0.0-canary-
|
|
6
|
+
"version": "7.0.0-canary-20251223-b83b31e",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
28
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
29
|
-
"size":
|
|
30
|
-
"sha512": "
|
|
31
|
-
"sha256": "
|
|
32
|
-
"sha1": "
|
|
33
|
-
"md5": "
|
|
27
|
+
"name": "expo.modules.router-7.0.0-canary-20251223-b83b31e.aar",
|
|
28
|
+
"url": "expo.modules.router-7.0.0-canary-20251223-b83b31e.aar",
|
|
29
|
+
"size": 13665,
|
|
30
|
+
"sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
|
|
31
|
+
"sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
|
|
32
|
+
"sha1": "5fa5e3051c154802f07905f47f18a306d7262425",
|
|
33
|
+
"md5": "8c916bee60640e0b60daed543761abd9"
|
|
34
34
|
}
|
|
35
35
|
]
|
|
36
36
|
},
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
],
|
|
61
61
|
"files": [
|
|
62
62
|
{
|
|
63
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
64
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
65
|
-
"size":
|
|
66
|
-
"sha512": "
|
|
67
|
-
"sha256": "
|
|
68
|
-
"sha1": "
|
|
69
|
-
"md5": "
|
|
63
|
+
"name": "expo.modules.router-7.0.0-canary-20251223-b83b31e.aar",
|
|
64
|
+
"url": "expo.modules.router-7.0.0-canary-20251223-b83b31e.aar",
|
|
65
|
+
"size": 13665,
|
|
66
|
+
"sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
|
|
67
|
+
"sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
|
|
68
|
+
"sha1": "5fa5e3051c154802f07905f47f18a306d7262425",
|
|
69
|
+
"md5": "8c916bee60640e0b60daed543761abd9"
|
|
70
70
|
}
|
|
71
71
|
]
|
|
72
72
|
},
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
},
|
|
81
81
|
"files": [
|
|
82
82
|
{
|
|
83
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
84
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
83
|
+
"name": "expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar",
|
|
84
|
+
"url": "expo.modules.router-7.0.0-canary-20251223-b83b31e-sources.jar",
|
|
85
85
|
"size": 2318,
|
|
86
86
|
"sha512": "9864add8e93e3c0a9a9c930aaed67016b15054c3fafd59a0bd3a5402d7cdc5827be84c22c2c137f3e5acb4e39270d9bfb9ca3fe11234458d4f2e0d4c78747f48",
|
|
87
87
|
"sha256": "d5dff6259e86de721fc0f07fe740a5e18088e19b76738719b0a6f94caef06224",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ab80616c366d0071d9d96071df1d8b54
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
f8a3e12f108de77455f6194d1235057fe3bfd242
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3b9f7564b9434b424d7a623c3f10175fe5657680c52dbd8e108eac5fd9adcd3e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
09cb0020c7eeaef845fe7c52a8fefac3225d8afd12d7cc162cef4efd92aebb0c18be600c748cd953d6447b63ef63ab0aed844ac486cc2f8e391298d55b8ab4be
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<modelVersion>4.0.0</modelVersion>
|
|
10
10
|
<groupId>expo.modules.router</groupId>
|
|
11
11
|
<artifactId>expo.modules.router</artifactId>
|
|
12
|
-
<version>7.0.0-canary-
|
|
12
|
+
<version>7.0.0-canary-20251223-b83b31e</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.router</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1b60d677576b778126ad102d0ab2ef14
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
74e088b3cd0062c93ecad90743bdd97fb6e1ce9e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c13e7578b30b90ef59c0fd130ab800262e2fda67235b97e3c568a12983bcf794
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
c321f92895b53d8d5e3e142f8dd69499e4b42b6c281c61eade79775de6a3357e75e96f2936a595a41bbe484e22d921cfc51afab1313b7a29144d10efa5179ba8
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>expo.modules.router</groupId>
|
|
4
4
|
<artifactId>expo.modules.router</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>7.0.0-canary-
|
|
7
|
-
<release>7.0.0-canary-
|
|
6
|
+
<latest>7.0.0-canary-20251223-b83b31e</latest>
|
|
7
|
+
<release>7.0.0-canary-20251223-b83b31e</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>7.0.0-canary-
|
|
9
|
+
<version>7.0.0-canary-20251223-b83b31e</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20251223153337</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
9c8ae8fb77072b90906f286d15f6e53f
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7a3eefae0cda2474676727908158cf3ba05d25bd
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
6fb5bb2f365acc0c8f814d933f3225471ede23ccd394d1688bd28f5b48a75e00
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
cd68ca26ba6472608fe2574607710dd2c39b53cb321b346c65428fd6947e1dfb164917ea612cd0e400ecfb66b68a895591d4977f2586ab94049df87b5b0b5dc2
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-router",
|
|
3
|
-
"version": "7.0.0-canary-
|
|
3
|
+
"version": "7.0.0-canary-20251223-b83b31e",
|
|
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",
|
|
@@ -83,14 +83,13 @@
|
|
|
83
83
|
"expo"
|
|
84
84
|
],
|
|
85
85
|
"peerDependencies": {
|
|
86
|
-
"@expo/metro-runtime": "6.2.0-canary-
|
|
87
|
-
"@expo/log-box": "0.0.13-canary-
|
|
86
|
+
"@expo/metro-runtime": "6.2.0-canary-20251223-b83b31e",
|
|
87
|
+
"@expo/log-box": "0.0.13-canary-20251223-b83b31e",
|
|
88
88
|
"@react-navigation/drawer": "^7.7.2",
|
|
89
89
|
"@testing-library/react-native": ">= 12.0.0",
|
|
90
|
-
"expo": "55.0.0-canary-
|
|
91
|
-
"expo-constants": "18.1.0-canary-
|
|
92
|
-
"expo-linking": "8.0.
|
|
93
|
-
"expo-symbols": "1.1.0-canary-20251216-6e1f9a7",
|
|
90
|
+
"expo": "55.0.0-canary-20251223-b83b31e",
|
|
91
|
+
"expo-constants": "18.1.0-canary-20251223-b83b31e",
|
|
92
|
+
"expo-linking": "8.0.12-canary-20251223-b83b31e",
|
|
94
93
|
"react": "*",
|
|
95
94
|
"react-dom": "*",
|
|
96
95
|
"react-native": "*",
|
|
@@ -135,8 +134,8 @@
|
|
|
135
134
|
"react-server-dom-webpack": "~19.0.3"
|
|
136
135
|
},
|
|
137
136
|
"dependencies": {
|
|
138
|
-
"@expo/metro-runtime": "6.2.0-canary-
|
|
139
|
-
"@expo/schema-utils": "0.1.9-canary-
|
|
137
|
+
"@expo/metro-runtime": "6.2.0-canary-20251223-b83b31e",
|
|
138
|
+
"@expo/schema-utils": "0.1.9-canary-20251223-b83b31e",
|
|
140
139
|
"@radix-ui/react-slot": "1.2.0",
|
|
141
140
|
"@radix-ui/react-tabs": "^1.1.12",
|
|
142
141
|
"@react-navigation/bottom-tabs": "^7.7.3",
|
|
@@ -145,7 +144,8 @@
|
|
|
145
144
|
"client-only": "^0.0.1",
|
|
146
145
|
"debug": "^4.3.4",
|
|
147
146
|
"escape-string-regexp": "^4.0.0",
|
|
148
|
-
"expo-server": "1.0.6-canary-
|
|
147
|
+
"expo-server": "1.0.6-canary-20251223-b83b31e",
|
|
148
|
+
"expo-symbols": "1.1.0-canary-20251223-b83b31e",
|
|
149
149
|
"fast-deep-equal": "^3.1.3",
|
|
150
150
|
"invariant": "^2.2.4",
|
|
151
151
|
"nanoid": "^3.3.8",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderItem.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderItem.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,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAc,CAAC;AAE1E,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,oBAAoB,GAC1B,2BAA2B,CAY7B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderItem.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderItem.tsx"],"names":[],"mappings":";;;AA8CA,8FAcC;AAlDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACI,MAAM,eAAe,GAAmC,GAAG,EAAE,CAAC,IAAI,CAAC;AAA7D,QAAA,eAAe,mBAA8C;AAE1E,SAAgB,yCAAyC,CACvD,KAA2B;IAE3B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CACV,oFAAoF,CACrF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ,IAAI,EAAE,GAAG;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import type { NativeStackHeaderItemCustom } from '@react-navigation/native-stack';\n\nexport interface StackHeaderItemProps {\n /**\n * Can be any React node.\n */\n children?: NativeStackHeaderItemCustom['element'];\n hideSharedBackground?: 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 StackHeaderItem: React.FC<StackHeaderItemProps> = () => null;\n\nexport function convertStackHeaderItemPropsToRNHeaderItem(\n props: StackHeaderItemProps\n): NativeStackHeaderItemCustom {\n const { children, ...rest } = props;\n if (!children) {\n console.warn(\n 'Stack.Header.Item requires a child element to render custom content in the header.'\n );\n }\n return {\n ...rest,\n type: 'custom',\n element: children ?? <></>,\n };\n}\n"]}
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e14cd08df62d96cb4ea6521e778ecf1d
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
66c7762b33a455cfeb2d1819cdaf409620f43ba8
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
089d182f36875a201ad1b30b44d39812cd5155af987f3d33cd5eef8542103c82
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
f51bd2a6d3fcc9075dbf99d66f77162d530586d0793d68e109a55f6edfbe4ff98bc9c9c5d587d0feec99807b6ae94a729232000e89f840278b21f4d423caa520
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
80fdefaa1629fc12b129e2adef5cf067
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
de645d00e6ac280a0ddd46096c05b523fe335fc3
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
088e98b8d749b887b4f9120c2604c9ebf79ab7217eda10ca9fcdede3f9e5115c
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
d9665917800ec6a62bc4b9adaffb0aac3cf6534c3499fff8ff8d4d3fa5bdd199832a4ca51feebd86d2f1d1f3a86e13cd260ae8fa9c29ae33ad22f5013e8c71e7
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3ef2f993d44e8fefed3d3f623050a4fa
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
46cf342cdd49165e0326fdd2e445f5967a2ff08f
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
b81eb244de8bf9e2b92d1143b503a3f69001a89ae4676e16c980ab76ced8f3f4
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ebe337d50192acd4ef69978915e08d3b51ad7e4078a52bb498de32bfae043866bbbc4cacff17af781deaec0b65e7e6a0a1496aab395dd4cba3634ca931efcca3
|
|
File without changes
|
|
File without changes
|