From 90278020f52e16c255517ad5cf45888d6e2997a1 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Sat, 2 May 2026 17:10:32 -0700 Subject: [PATCH] ios: pin Sybil navigation theme --- .../Sybil/Sources/Sybil/SplitView.swift | 4 +++- .../Sources/Sybil/SybilMarkdownTheme.swift | 1 + .../Sources/Sybil/SybilPhoneShellView.swift | 4 ++-- .../Sybil/Sources/Sybil/SybilSidebarView.swift | 9 +++++++-- .../Sybil/Sources/Sybil/SybilTheme.swift | 18 ++++++++++++++++++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/ios/Packages/Sybil/Sources/Sybil/SplitView.swift b/ios/Packages/Sybil/Sources/Sybil/SplitView.swift index 8bb6681..ab909f7 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SplitView.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SplitView.swift @@ -4,8 +4,9 @@ public struct SplitView: View { @State private var viewModel = SybilViewModel() @Environment(\.horizontalSizeClass) private var horizontalSizeClass - public init() { + @MainActor public init() { SybilFontRegistry.registerIfNeeded() + SybilTheme.applySystemAppearance() } public var body: some View { @@ -33,6 +34,7 @@ public struct SplitView: View { } } .font(.sybil(.body)) + .preferredColorScheme(.dark) .task { await viewModel.bootstrap() } diff --git a/ios/Packages/Sybil/Sources/Sybil/SybilMarkdownTheme.swift b/ios/Packages/Sybil/Sources/Sybil/SybilMarkdownTheme.swift index 582342c..db10a5b 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SybilMarkdownTheme.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SybilMarkdownTheme.swift @@ -10,6 +10,7 @@ extension Theme { .text { FontFamily(.custom("Inter")) FontSize(15) + ForegroundColor(SybilTheme.text) } .code { FontFamilyVariant(.monospaced) diff --git a/ios/Packages/Sybil/Sources/Sybil/SybilPhoneShellView.swift b/ios/Packages/Sybil/Sources/Sybil/SybilPhoneShellView.swift index 8dde7e7..05bc963 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SybilPhoneShellView.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SybilPhoneShellView.swift @@ -30,8 +30,8 @@ struct SybilPhoneShellView: View { .navigationTitle("") .navigationBarTitleDisplayMode(.inline) .toolbar { - ToolbarItem(placement: .principal) { - SybilWordmark(size: 19) + ToolbarItem(placement: .topBarLeading) { + SybilWordmark(size: 18) } } .navigationDestination(for: PhoneRoute.self) { route in diff --git a/ios/Packages/Sybil/Sources/Sybil/SybilSidebarView.swift b/ios/Packages/Sybil/Sources/Sybil/SybilSidebarView.swift index 567e435..12d7611 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SybilSidebarView.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SybilSidebarView.swift @@ -18,8 +18,6 @@ struct SybilSidebarView: View { var body: some View { VStack(spacing: 0) { VStack(alignment: .leading, spacing: 14) { - SybilWordmark(size: 31) - VStack(spacing: 10) { sidebarActionButton( title: "New chat", @@ -174,6 +172,13 @@ struct SybilSidebarView: View { .padding(10) } .background(SybilTheme.panelGradient) + .navigationTitle("") + .navigationBarTitleDisplayMode(.inline) + .toolbar { + ToolbarItem(placement: .topBarLeading) { + SybilWordmark(size: 18) + } + } } private func sidebarActionButton( diff --git a/ios/Packages/Sybil/Sources/Sybil/SybilTheme.swift b/ios/Packages/Sybil/Sources/Sybil/SybilTheme.swift index 8d8fbc1..a8162d4 100644 --- a/ios/Packages/Sybil/Sources/Sybil/SybilTheme.swift +++ b/ios/Packages/Sybil/Sources/Sybil/SybilTheme.swift @@ -1,6 +1,7 @@ import CoreText import Foundation import SwiftUI +import UIKit enum SybilFontRegistry { static func registerIfNeeded() { @@ -78,6 +79,23 @@ enum SybilTheme { static let userBubble = Color(red: 0.29, green: 0.13, blue: 0.65) static let danger = Color(red: 0.96, green: 0.32, blue: 0.40) + @MainActor static func applySystemAppearance() { + let navAppearance = UINavigationBarAppearance() + navAppearance.configureWithOpaqueBackground() + navAppearance.backgroundColor = UIColor(red: 0.02, green: 0.02, blue: 0.05, alpha: 1) + navAppearance.shadowColor = UIColor(red: 0.24, green: 0.20, blue: 0.38, alpha: 0.9) + navAppearance.titleTextAttributes = [ + .foregroundColor: UIColor(red: 0.96, green: 0.94, blue: 1.0, alpha: 1) + ] + navAppearance.largeTitleTextAttributes = navAppearance.titleTextAttributes + + UINavigationBar.appearance().prefersLargeTitles = false + UINavigationBar.appearance().standardAppearance = navAppearance + UINavigationBar.appearance().compactAppearance = navAppearance + UINavigationBar.appearance().scrollEdgeAppearance = navAppearance + UINavigationBar.appearance().compactScrollEdgeAppearance = navAppearance + } + static var backgroundGradient: LinearGradient { LinearGradient( colors: [