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:
rene 2026-05-30 11:46:41 +02:00
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

Before After
Before After

View file

@ -5,6 +5,7 @@ struct LoginView: View {
@State private var email = ""
@State private var password = ""
@State private var pitchExpanded = false
var body: some View {
ScrollView {
@ -37,16 +38,51 @@ struct LoginView: View {
}
}
// MARK: - Pitch (für Neue)
// MARK: - Pitch (für Neue, ausklappbar)
private var pitch: some View {
VStack(alignment: .leading, spacing: 14) {
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: "exclamationmark.shield.fill", title: "Giftköder-Alarm", subtitle: "Warnungen aus deiner Region direkt aufs iPhone.")
VStack(spacing: 0) {
Button {
withAnimation(.spring(response: 0.35, dampingFraction: 0.85)) {
pitchExpanded.toggle()
}
} 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)
.background(.background.secondary, in: RoundedRectangle(cornerRadius: 16))
}