struct OnboardingWelcomeView: View { let onNext: () -> Void @State private var showingWelcomeText = false @State private var showingTitleText = false @State private var showingDescriptionText = false var body: some View { VStack { Text("Welcome to") .font(.title) .opacity(showingWelcomeText ? 1 : 0) .offset(y: showingWelcomeText ? 0 : 50) .animation(.spring(response: 0.4, dampingFraction: 0.4, blendDuration: 0.6), value: showingWelcomeText) Text("Redacted") .opacity(showingTitleText ? 1 : 0) .offset(y: showingTitleText ? 0 : 50) .animation(.spring(response: 0.4, dampingFraction: 0.4, blendDuration: 1.0), value: showingTitleText) Text("The ultimate companion for minipainters") .opacity(showingDescriptionText ? 0.5 : 0) .offset(y: showingDescriptionText ? 0 : 50) .animation(.spring(response: 0.5, dampingFraction: 0.6), value: showingDescriptionText) } .onAppear { withAnimation { showingWelcomeText = true } DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { withAnimation { showingTitleText = true } } DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { withAnimation { showingDescriptionText = true } } } } }