Files
Sybil-2/ios/Packages/Sybil/Sources/Sybil/SplitView.swift

43 lines
1.3 KiB
Swift
Raw Normal View History

2026-02-19 22:38:45 -08:00
import SwiftUI
2026-02-20 00:09:02 -08:00
public struct SplitView: View {
@State private var viewModel = SybilViewModel()
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
2026-05-02 17:10:32 -07:00
@MainActor public init() {
2026-05-02 16:23:00 -07:00
SybilFontRegistry.registerIfNeeded()
2026-05-02 17:10:32 -07:00
SybilTheme.applySystemAppearance()
2026-05-02 16:23:00 -07:00
}
2026-02-20 00:09:02 -08:00
2026-02-19 22:38:45 -08:00
public var body: some View {
2026-02-20 00:09:02 -08:00
ZStack {
SybilTheme.backgroundGradient
.ignoresSafeArea()
if viewModel.isCheckingSession {
ProgressView("Checking session…")
.tint(SybilTheme.primary)
.foregroundStyle(SybilTheme.textMuted)
} else if !viewModel.isAuthenticated {
SybilConnectionView(viewModel: viewModel)
.padding()
} else if horizontalSizeClass == .compact {
SybilPhoneShellView(viewModel: viewModel)
} else {
NavigationSplitView {
SybilSidebarView(viewModel: viewModel)
} detail: {
SybilWorkspaceView(viewModel: viewModel)
}
.navigationSplitViewStyle(.balanced)
.tint(SybilTheme.primary)
}
}
2026-05-02 16:23:00 -07:00
.font(.sybil(.body))
2026-05-02 17:10:32 -07:00
.preferredColorScheme(.dark)
2026-02-20 00:09:02 -08:00
.task {
await viewModel.bootstrap()
}
2026-02-19 22:38:45 -08:00
}
}