import SwiftUI struct LoginView: View { @Binding var root: RootFlow @Binding var selectedTab: MainTab let tokenStore: TokenStore @Binding var appState: AppState @Environment(\.colorScheme) var colorScheme let navigate: (Route) -> Void @ViewBuilder private var logoImage: some View { #if os(Android) SwiftUI.Image("pedifoods") .resizable() #else SwiftUI.Image("pedifoods") .resizable() #endif } @ViewBuilder private var pinHeroImage: some View { #if os(Android) SwiftUI.Image(colorScheme == .dark ? "pin_image_app_dark" : "pin_image_app") .resizable() #else SwiftUI.Image("pin_image_app") .resizable() #endif } var body: some View { GeometryReader { geo in let heroHeight = max(360, geo.size.height * 0.44) ZStack(alignment: .top) { (colorScheme == .dark ? Color.black : AppColors.backgroundLight) .ignoresSafeArea() pinHeroImage .scaledToFill() .frame(height: heroHeight + 80) .offset(y: -60) .mask( LinearGradient( colors: [.black, .black, .black.opacity(0.0)], startPoint: .top, endPoint: .bottom ) ) VStack(spacing: 18) { Spacer().frame(height: heroHeight - 100) logoImage .scaledToFit() .frame(height: 180) Text("Descubra lorem ipsum ba bla") .font(AppTypography.heading1) .foregroundStyle(colorScheme == .dark ? AppColors.textInverse : AppColors.textPrimary) .multilineTextAlignment(.leading) .frame(maxWidth: .infinity, alignment: .leading) .padding(.horizontal, 28) Spacer().frame(height: 40) Button { navigate(.loginEmail) } label: { PrimaryButtonLabel(title: "ENTRAR") } .padding(.horizontal, 28) .tint(AppColors.tertiary) HStack(spacing: 6) { Text("Não tem conta ainda?") .foregroundStyle(colorScheme == .dark ? AppColors.textInverse.opacity(0.9) : AppColors.textPrimary) Button("Criar conta") { navigate(.registration) } .foregroundStyle(AppColors.primary) } .font(AppTypography.body) Spacer().frame(height: 12) } } .ignoresSafeArea() } } }