Skip to content

Commit 7c629f7

Browse files
[PM-21617] Update navigation bar style (#1674)
1 parent d26d4fa commit 7c629f7

File tree

37 files changed

+57
-18
lines changed

37 files changed

+57
-18
lines changed

BitwardenShared/UI/Platform/Application/Extensions/View+Toolbar.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,34 @@ extension View {
212212
saveToolbarButton(action: action)
213213
}
214214
}
215+
216+
/// A `ToolbarContent` that adjusts the navigation bar to display a large title on the leading
217+
/// edge of the navigation bar and hides the centered title. This has the appearance of a large
218+
/// title navigation bar without the extra padding above the title and overall hight similar to
219+
/// an inline navigation bar title.
220+
///
221+
/// - Parameters:
222+
/// - title: The navigation bar's title.
223+
/// - hidden: Whether the navigation bar updates should be hidden.
224+
/// - Returns: A `ToolbarContent` that adjusts the navigation bar to display a large title on
225+
/// the leading edge.
226+
///
227+
@ToolbarContentBuilder
228+
func largeNavigationTitleToolbarItem(_ title: String, hidden: Bool = false) -> some ToolbarContent {
229+
ToolbarItem(placement: .topBarLeading) {
230+
if !hidden {
231+
Text(title)
232+
.styleGuide(.largeTitle, weight: .semibold)
233+
.accessibilityAddTraits(.isHeader)
234+
}
235+
}
236+
237+
ToolbarItem(placement: .principal) {
238+
if !hidden {
239+
// Hide the centered navigation title view with an empty view.
240+
Text("")
241+
.accessibilityHidden(true)
242+
}
243+
}
244+
}
215245
}

BitwardenShared/UI/Platform/Settings/Settings/SettingsView.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@ struct SettingsView: View {
1515
var body: some View {
1616
settingsItems
1717
.scrollView()
18-
.navigationBar(
19-
title: Localizations.settings,
20-
titleDisplayMode: store.state.presentationMode == .preLogin ? .inline : .large
21-
)
18+
.navigationBar(title: Localizations.settings, titleDisplayMode: .inline)
2219
.toolbar {
2320
closeToolbarItem(hidden: store.state.presentationMode != .preLogin) {
2421
store.send(.dismiss)
2522
}
23+
24+
largeNavigationTitleToolbarItem(
25+
Localizations.settings,
26+
hidden: store.state.presentationMode != .tab
27+
)
2628
}
2729
}
2830

735 Bytes
Loading
1.21 KB
Loading
-3.25 KB
Loading
734 Bytes
Loading

BitwardenShared/UI/Platform/Tabs/TabCoordinator.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,23 +128,23 @@ final class TabCoordinator: Coordinator, HasTabNavigator {
128128
rootNavigator.show(child: tabNavigator)
129129

130130
let vaultNavigator = module.makeNavigationController()
131-
vaultNavigator.navigationBar.prefersLargeTitles = true
131+
vaultNavigator.navigationBar.prefersLargeTitles = false
132132
vaultNavigator.navigationBar.accessibilityIdentifier = "MainHeaderBar"
133133
vaultCoordinator = module.makeVaultCoordinator(
134134
delegate: vaultDelegate,
135135
stackNavigator: vaultNavigator
136136
)
137137

138138
let sendNavigator = module.makeNavigationController()
139-
sendNavigator.navigationBar.prefersLargeTitles = true
139+
sendNavigator.navigationBar.prefersLargeTitles = false
140140
sendNavigator.navigationBar.accessibilityIdentifier = "MainHeaderBar"
141141
sendCoordinator = module.makeSendCoordinator(
142142
stackNavigator: sendNavigator
143143
)
144144
sendCoordinator?.start()
145145

146146
let generatorNavigator = module.makeNavigationController()
147-
generatorNavigator.navigationBar.prefersLargeTitles = true
147+
generatorNavigator.navigationBar.prefersLargeTitles = false
148148
generatorNavigator.navigationBar.accessibilityIdentifier = "MainHeaderBar"
149149
// Remove the hairline divider under the navigation bar to make it appear that the segmented
150150
// control is part of the navigation bar.
@@ -156,7 +156,7 @@ final class TabCoordinator: Coordinator, HasTabNavigator {
156156
generatorCoordinator?.start()
157157

158158
let settingsNavigator = module.makeNavigationController()
159-
settingsNavigator.navigationBar.prefersLargeTitles = true
159+
settingsNavigator.navigationBar.prefersLargeTitles = false
160160
settingsNavigator.navigationBar.accessibilityIdentifier = "MainHeaderBar"
161161
let settingsCoordinator = module.makeSettingsCoordinator(
162162
delegate: settingsDelegate,

BitwardenShared/UI/Tools/Generator/Generator/GeneratorView.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ struct GeneratorView: View {
7777
}
7878
.coordinateSpace(name: "generatorView")
7979
.background(Asset.Colors.backgroundPrimary.swiftUIColor)
80-
.navigationBarTitleDisplayMode(store.state.presentationMode == .inPlace ? .inline : .large)
81-
.navigationTitle(Localizations.generator)
80+
.navigationBar(title: Localizations.generator, titleDisplayMode: .inline)
8281
.task { await store.perform(.appeared) }
8382
.onChange(of: focusedFieldKeyPath) { newValue in
8483
store.send(.textFieldFocusChanged(keyPath: newValue))
@@ -96,6 +95,11 @@ struct GeneratorView: View {
9695
}
9796
}
9897

98+
largeNavigationTitleToolbarItem(
99+
Localizations.generator,
100+
hidden: store.state.presentationMode != .tab
101+
)
102+
99103
ToolbarItemGroup(placement: .topBarTrailing) {
100104
if store.state.presentationMode.isSelectButtonVisible {
101105
toolbarButton(Localizations.select) {
-462 Bytes
Loading
-463 Bytes
Loading

0 commit comments

Comments
 (0)