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:
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user