Login: Pitch-Karte ausklappbar + Züchter/Sitting, Icon mit sichtbarem Pfad
- icon_transparent.py: pur-weiße Pixel werden zu #C4843A umgefärbt — der
GPS-Pfad zwischen Pin und Hund ist jetzt auf jedem Hintergrund sichtbar
- LoginView Pitch jetzt als ausklappbare Karte ('Tippen für Details')
mit spring-Animation
- Sechs Punkte statt vier: Gassi-Touren, Hunde-Community, Tagebuch & Impfpass,
Verifizierte Züchter (rosette), Giftköder-Alarm, Hundesitting (house.fill)
This commit is contained in:
parent
4ee84d5a1a
commit
f1b3ff4035
2 changed files with 43 additions and 7 deletions
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
|
@ -5,6 +5,7 @@ struct LoginView: View {
|
||||||
|
|
||||||
@State private var email = ""
|
@State private var email = ""
|
||||||
@State private var password = ""
|
@State private var password = ""
|
||||||
|
@State private var pitchExpanded = false
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
|
|
@ -37,16 +38,51 @@ struct LoginView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Pitch (für Neue)
|
// MARK: - Pitch (für Neue, ausklappbar)
|
||||||
|
|
||||||
private var pitch: some View {
|
private var pitch: some View {
|
||||||
VStack(alignment: .leading, spacing: 14) {
|
VStack(spacing: 0) {
|
||||||
feature(icon: "map.fill", title: "Gassi-Touren aufzeichnen", subtitle: "GPS-Tracking auch im Hintergrund — mit Pause, Live Activity und HealthKit-Sync.")
|
Button {
|
||||||
feature(icon: "person.2.fill", title: "Hunde-Community", subtitle: "Gassi-Treffen, Tierärzte und Orte in deiner Nähe.")
|
withAnimation(.spring(response: 0.35, dampingFraction: 0.85)) {
|
||||||
feature(icon: "book.fill", title: "Tagebuch & Impfpass", subtitle: "Alles rund um deinen Hund an einem Ort.")
|
pitchExpanded.toggle()
|
||||||
feature(icon: "exclamationmark.shield.fill", title: "Giftköder-Alarm", subtitle: "Warnungen aus deiner Region direkt aufs iPhone.")
|
}
|
||||||
|
} label: {
|
||||||
|
HStack(spacing: 12) {
|
||||||
|
Image(systemName: "info.circle.fill")
|
||||||
|
.foregroundStyle(Color.accentColor)
|
||||||
|
VStack(alignment: .leading, spacing: 2) {
|
||||||
|
Text("Was bietet banyaro.app?")
|
||||||
|
.font(.subheadline.bold())
|
||||||
|
.foregroundStyle(.primary)
|
||||||
|
Text(pitchExpanded ? "Tippen zum Einklappen" : "Tippen für Details")
|
||||||
|
.font(.caption)
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
|
Spacer()
|
||||||
|
Image(systemName: "chevron.down")
|
||||||
|
.font(.callout.bold())
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
.rotationEffect(.degrees(pitchExpanded ? 180 : 0))
|
||||||
|
}
|
||||||
|
.padding(18)
|
||||||
|
.contentShape(Rectangle())
|
||||||
|
}
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
|
||||||
|
if pitchExpanded {
|
||||||
|
VStack(alignment: .leading, spacing: 14) {
|
||||||
|
Divider()
|
||||||
|
feature(icon: "map.fill", title: "Gassi-Touren aufzeichnen", subtitle: "GPS-Tracking auch im Hintergrund — mit Pause, Live Activity und HealthKit-Sync.")
|
||||||
|
feature(icon: "person.2.fill", title: "Hunde-Community", subtitle: "Gassi-Treffen, Tierärzte und Orte in deiner Nähe.")
|
||||||
|
feature(icon: "book.fill", title: "Tagebuch & Impfpass", subtitle: "Alles rund um deinen Hund an einem Ort.")
|
||||||
|
feature(icon: "rosette", title: "Verifizierte Züchter", subtitle: "Züchter-Profile, aktuelle Würfe und Welpen-Vermittlung — kein Hinterhof.")
|
||||||
|
feature(icon: "exclamationmark.shield.fill", title: "Giftköder-Alarm", subtitle: "Warnungen aus deiner Region direkt aufs iPhone.")
|
||||||
|
feature(icon: "house.fill", title: "Hundesitting", subtitle: "Sitter und Sitter-Suche in deiner Nähe — mit Bewertungen.")
|
||||||
|
}
|
||||||
|
.padding(.horizontal, 18)
|
||||||
|
.padding(.bottom, 18)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.padding(18)
|
|
||||||
.frame(maxWidth: .infinity, alignment: .leading)
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
.background(.background.secondary, in: RoundedRectangle(cornerRadius: 16))
|
.background(.background.secondary, in: RoundedRectangle(cornerRadius: 16))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue