ios: right-align user bubbles on iPad #7

Merged
buzzert merged 4 commits from codex/ios-right-align-user-bubbles into master 2026-05-03 00:20:25 +00:00
5 changed files with 31 additions and 5 deletions
Showing only changes of commit 90278020f5 - Show all commits

View File

@@ -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()
}

View File

@@ -10,6 +10,7 @@ extension Theme {
.text {
FontFamily(.custom("Inter"))
FontSize(15)
ForegroundColor(SybilTheme.text)
}
.code {
FontFamilyVariant(.monospaced)

View File

@@ -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

View File

@@ -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(

View File

@@ -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: [