Implement custom 5-color design system across entire iOS app

Apply consistent branding colors (BlueGreen, Cerulean, BrightAmber, PrimaryScarlet,
cream backgrounds) to all screens, components, buttons, icons, and text throughout
the app. Update all Form/List views with proper list row backgrounds to ensure
visual consistency with card-based layouts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-11-21 07:58:01 -06:00
parent a4ba6794d5
commit a2b81a244b
70 changed files with 920 additions and 417 deletions

View File

@@ -28,14 +28,16 @@ struct JoinResidenceView: View {
Text("Enter Share Code")
} footer: {
Text("Enter the 6-character code shared with you to join a residence")
.foregroundColor(.secondary)
.foregroundColor(Color.appTextSecondary)
}
.listRowBackground(Color.appBackgroundSecondary)
if let error = viewModel.errorMessage {
Section {
Text(error)
.foregroundColor(.red)
.foregroundColor(Color.appError)
}
.listRowBackground(Color.appBackgroundSecondary)
}
Section {
@@ -54,7 +56,11 @@ struct JoinResidenceView: View {
}
.disabled(shareCode.count != 6 || viewModel.isLoading)
}
.listRowBackground(Color.appBackgroundSecondary)
}
.listStyle(.plain)
.scrollContentBackground(.hidden)
.background(Color.appBackgroundPrimary)
.navigationTitle("Join Residence")
.navigationBarTitleDisplayMode(.inline)
.toolbar {

View File

@@ -17,7 +17,7 @@ struct ManageUsersView: View {
var body: some View {
NavigationView {
ZStack {
Color(.systemGroupedBackground)
Color.appBackgroundPrimary
.ignoresSafeArea()
if isLoading {
@@ -63,6 +63,9 @@ struct ManageUsersView: View {
}
}
}
.listStyle(.plain)
.scrollContentBackground(.hidden)
.background(Color.appBackgroundPrimary)
.navigationTitle("Manage Users")
.navigationBarTitleDisplayMode(.inline)
.toolbar {

View File

@@ -30,9 +30,9 @@ struct ResidenceDetailView: View {
var body: some View {
ZStack {
Color(.systemGroupedBackground)
Color.appBackgroundPrimary
.ignoresSafeArea()
mainContent
}
.navigationBarTitleDisplayMode(.inline)
@@ -174,7 +174,7 @@ private extension ResidenceDetailView {
ProgressView()
Text("Loading residence...")
.font(.subheadline)
.foregroundColor(.secondary)
.foregroundColor(Color.appTextSecondary)
}
}
@@ -209,7 +209,7 @@ private extension ResidenceDetailView {
ProgressView("Loading tasks...")
} else if let tasksError = tasksError {
Text("Error loading tasks: \(tasksError)")
.foregroundColor(.red)
.foregroundColor(Color.appError)
.padding()
}
}
@@ -266,7 +266,7 @@ private extension ResidenceDetailView {
showDeleteConfirmation = true
} label: {
Image(systemName: "trash")
.foregroundStyle(.red)
.foregroundStyle(Color.appError)
}
.accessibilityIdentifier(AccessibilityIdentifiers.Residence.deleteButton)
}

View File

@@ -10,7 +10,7 @@ struct ResidencesListView: View {
var body: some View {
ZStack {
Color(.systemGroupedBackground)
Color.appBackgroundPrimary
.ignoresSafeArea()
if viewModel.myResidences == nil && viewModel.isLoading {
@@ -19,7 +19,7 @@ struct ResidencesListView: View {
.scaleEffect(1.2)
Text("Loading properties...")
.font(.body)
.foregroundColor(Color(.secondaryLabel))
.foregroundColor(Color.appTextSecondary)
}
} else if let response = viewModel.myResidences {
if response.residences.isEmpty {
@@ -37,10 +37,10 @@ struct ResidencesListView: View {
VStack(alignment: .leading, spacing: AppSpacing.xxs) {
Text("Your Properties")
.font(.title3.weight(.semibold))
.foregroundColor(Color(.label))
.foregroundColor(Color.appTextPrimary)
Text("\(response.residences.count) \(response.residences.count == 1 ? "property" : "properties")")
.font(.callout)
.foregroundColor(Color(.secondaryLabel))
.foregroundColor(Color.appTextSecondary)
}
Spacer()
}
@@ -75,7 +75,7 @@ struct ResidencesListView: View {
}) {
Image(systemName: "person.badge.plus")
.font(.system(size: 18, weight: .semibold))
.foregroundColor(.blue)
.foregroundColor(Color.appPrimary)
}
Button(action: {
@@ -83,7 +83,7 @@ struct ResidencesListView: View {
}) {
Image(systemName: "plus.circle.fill")
.font(.system(size: 22, weight: .semibold))
.foregroundColor(.blue)
.foregroundColor(Color.appPrimary)
}
.accessibilityIdentifier(AccessibilityIdentifiers.Residence.addButton)
}