Reading experience:
- Body text #CECECE (dark) / #1A1916 (light) — was near-invisible #4A4A4A
- 30pt heavy headline, 17pt body at 8.5pt line-spacing
- Skeleton pulse loading state replaces dark spinner box
- Hero image fades in on load (0.3s ease-in)
- Orange reading progress bar (2pt) below nav bar
- Max reading width 680pt for iPad legibility
Appearance:
- AppearanceMode enum (system/light/dark) in Theme.swift
- @AppStorage("appearanceMode") applied once in JarvisApp root
- Appearance picker (Picker in Menu) in reader toolbar
- Removed .preferredColorScheme(.dark) from all 12 child views
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
810 B
Swift
34 lines
810 B
Swift
// RootTabView.swift
|
|
|
|
import SwiftUI
|
|
|
|
struct RootTabView: View {
|
|
@EnvironmentObject var store: StoryStore
|
|
|
|
var body: some View {
|
|
TabView {
|
|
SignalFeedView()
|
|
.tabItem {
|
|
Label("Today", systemImage: "square.grid.2x2")
|
|
}
|
|
|
|
LatestView()
|
|
.tabItem {
|
|
Label("Latest", systemImage: "newspaper")
|
|
}
|
|
|
|
SavedView()
|
|
.tabItem {
|
|
Label("Saved", systemImage: "bookmark")
|
|
}
|
|
|
|
SearchView()
|
|
.tabItem {
|
|
Label("Search", systemImage: "magnifyingglass")
|
|
}
|
|
}
|
|
.tint(Color("KisaniOrange"))
|
|
.task { await store.loadStories(refresh: true) }
|
|
}
|
|
}
|