Expanded the theming system from 5 to 10 total themes with comprehensive light/dark mode support. Each new theme includes unique color palettes optimized for visibility and WCAG contrast compliance. New Themes: - Lavender: Soft purple with pink accents - Crimson: Bold red with warm highlights - Midnight: Deep navy with sky blue tones - Desert: Warm terracotta and sand palette - Mint: Fresh green with turquoise accents Technical Details: - Created 45 new colorset files (9 colorsets × 5 themes) - Each theme includes Primary, Secondary, Accent, 2 Backgrounds, and 4 Text colors - Dark mode colors use 60-90% lightness for high visibility on dark backgrounds - Consistent text colors across all themes for accessibility - Updated ThemeManager.swift to include all 10 themes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
72 lines
2.1 KiB
Swift
72 lines
2.1 KiB
Swift
import SwiftUI
|
|
|
|
struct MainTabView: View {
|
|
@EnvironmentObject private var themeManager: ThemeManager
|
|
@State private var selectedTab = 0
|
|
@StateObject private var authManager = AuthenticationManager.shared
|
|
var refreshID: UUID
|
|
|
|
var body: some View {
|
|
TabView(selection: $selectedTab) {
|
|
NavigationView {
|
|
ResidencesListView()
|
|
}
|
|
.id(refreshID)
|
|
.tabItem {
|
|
Label("Residences", systemImage: "house.fill")
|
|
}
|
|
.tag(0)
|
|
.accessibilityIdentifier(AccessibilityIdentifiers.Navigation.residencesTab)
|
|
|
|
NavigationView {
|
|
AllTasksView()
|
|
}
|
|
.id(refreshID)
|
|
.tabItem {
|
|
Label("Tasks", systemImage: "checkmark.circle.fill")
|
|
}
|
|
.tag(1)
|
|
.accessibilityIdentifier(AccessibilityIdentifiers.Navigation.tasksTab)
|
|
|
|
NavigationView {
|
|
ContractorsListView()
|
|
}
|
|
.id(refreshID)
|
|
.tabItem {
|
|
Label("Contractors", systemImage: "wrench.and.screwdriver.fill")
|
|
}
|
|
.tag(2)
|
|
.accessibilityIdentifier(AccessibilityIdentifiers.Navigation.contractorsTab)
|
|
|
|
NavigationView {
|
|
DocumentsWarrantiesView(residenceId: nil)
|
|
}
|
|
.id(refreshID)
|
|
.tabItem {
|
|
Label("Documents", systemImage: "doc.text.fill")
|
|
}
|
|
.tag(3)
|
|
.accessibilityIdentifier(AccessibilityIdentifiers.Navigation.documentsTab)
|
|
|
|
NavigationView {
|
|
ProfileTabView()
|
|
}
|
|
.id(refreshID)
|
|
.tabItem {
|
|
Label("Profile", systemImage: "person.fill")
|
|
}
|
|
.tag(4)
|
|
.accessibilityIdentifier(AccessibilityIdentifiers.Navigation.profileTab)
|
|
}
|
|
.tint(Color.appPrimary)
|
|
.onChange(of: authManager.isAuthenticated) { _ in
|
|
selectedTab = 0
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
MainTabView(refreshID: UUID())
|
|
.environmentObject(ThemeManager.shared)
|
|
}
|