iOS: Kassenzettel in den Scannen-Tab, Markenblau statt System-Blau, weisse Kacheln, luftigere Pruefen-Liste
- Kassenzettel-Kachel vom Listen- in den Scannen-Tab verschoben (passt thematisch). - App-Akzent auf Markenblau (#3F51B5/#7C8AE8, wie Web/App-Icon) via .tint; alle Color.accentColor -> Color.marke. System-Blau verschwindet. - Kachel-Buttons/Links auf .buttonStyle(.plain): weisse Schrift/Symbole statt getoentem Blau. - Kassenzettel-Pruefen-Liste: je Artikel eine eigene Section (insetGrouped) mit Artikel/Menge/Lagerort in eigenen Zeilen - klar gruppiert, nicht mehr gequetscht. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -99,14 +99,25 @@ struct HomeView: View {
|
||||
.tabItem { Label("Verwaltung", systemImage: "gearshape") }
|
||||
}
|
||||
}
|
||||
.tint(Color.marke)
|
||||
}
|
||||
}
|
||||
|
||||
extension Color {
|
||||
/// Markenblau (wie App-Icon und Web-Akzent) statt des System-Blaus.
|
||||
static let marke = Color(UIColor { trait in
|
||||
trait.userInterfaceStyle == .dark
|
||||
? UIColor(red: 0.486, green: 0.541, blue: 0.910, alpha: 1) // #7C8AE8
|
||||
: UIColor(red: 0.247, green: 0.318, blue: 0.710, alpha: 1) // #3F51B5
|
||||
})
|
||||
}
|
||||
|
||||
/// Die beiden Kacheln, die frueher die Startseite waren.
|
||||
struct ScanTabView: View {
|
||||
@EnvironmentObject private var router: Router
|
||||
@EnvironmentObject private var session: Session
|
||||
@State private var showNew = false
|
||||
@State private var showKassenzettel = false
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
@@ -132,6 +143,13 @@ struct ScanTabView: View {
|
||||
subtitle: "Barcode/QR scannen und nur ansehen",
|
||||
systemImage: "doc.text.magnifyingglass")
|
||||
}
|
||||
Button {
|
||||
showKassenzettel = true
|
||||
} label: {
|
||||
ActionTile(title: "Kassenzettel",
|
||||
subtitle: "Bon fotografieren und Lebensmittel einlagern",
|
||||
systemImage: "doc.text.viewfinder")
|
||||
}
|
||||
// Ohne Barcode: gerade bei Gegenstaenden (Kleidung, Werkzeug) gibt
|
||||
// es keinen Code zum Scannen. Deshalb hier ein offensichtlicher Weg.
|
||||
if session.isAdmin {
|
||||
@@ -152,8 +170,10 @@ struct ScanTabView: View {
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.padding()
|
||||
.navigationTitle("Scannen")
|
||||
.fullScreenCover(isPresented: $showKassenzettel) { KassenzettelView() }
|
||||
.sheet(isPresented: $showNew) {
|
||||
NavigationStack {
|
||||
ProductFormView(prefillBarcode: nil, groupId: nil) { _ in
|
||||
@@ -166,8 +186,6 @@ struct ScanTabView: View {
|
||||
}
|
||||
|
||||
struct ListsTabView: View {
|
||||
@State private var kassenzettelAn = false
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
VStack(spacing: 16) {
|
||||
@@ -215,18 +233,11 @@ struct ListsTabView: View {
|
||||
ActionTile(title: "Verlauf", subtitle: "Wer hat wann was ein- und ausgelagert",
|
||||
systemImage: "clock.arrow.circlepath")
|
||||
}
|
||||
Button {
|
||||
kassenzettelAn = true
|
||||
} label: {
|
||||
ActionTile(title: "Kassenzettel", subtitle: "Bon fotografieren und Lebensmittel einlagern",
|
||||
systemImage: "doc.text.viewfinder")
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
Spacer()
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.padding()
|
||||
.navigationTitle("Listen")
|
||||
.fullScreenCover(isPresented: $kassenzettelAn) { KassenzettelView() }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -242,7 +253,7 @@ struct CompactTile: View {
|
||||
Image(systemName: systemImage)
|
||||
.font(.title2)
|
||||
.frame(width: 44, height: 44)
|
||||
.background(Color.accentColor.opacity(0.15))
|
||||
.background(Color.marke.opacity(0.15))
|
||||
.clipShape(RoundedRectangle(cornerRadius: 10))
|
||||
Text(title).font(.headline)
|
||||
}
|
||||
@@ -264,7 +275,7 @@ struct ActionTile: View {
|
||||
Image(systemName: systemImage)
|
||||
.font(.title2)
|
||||
.frame(width: 44, height: 44)
|
||||
.background(Color.accentColor.opacity(0.15))
|
||||
.background(Color.marke.opacity(0.15))
|
||||
.clipShape(RoundedRectangle(cornerRadius: 10))
|
||||
VStack(alignment: .leading, spacing: 2) {
|
||||
Text(title).font(.headline)
|
||||
|
||||
Reference in New Issue
Block a user