package views import ( "nebula/components" "nebula/layouts" ) var welcomeSteps = []string{"Welcome", "Learn", "Get Started"} // WelcomePage renders the full onboarding page with the specified step templ WelcomePage(currentStep int) { @layouts.CenteredCard("Welcome") {
@components.OnboardingStepper(currentStep, welcomeSteps)
@WelcomeStepContent(currentStep)
} } // WelcomeStepContent renders the content for a specific step (used for HTMX partials) templ WelcomeStepContent(step int) { switch step { case 1: @WelcomeStep1() case 2: @WelcomeStep2() case 3: @WelcomeStep3() } } // WelcomeStepWithStepper renders step content with OOB stepper update for HTMX 4 templ WelcomeStepWithStepper(step int) { @WelcomeStepContent(step)
@components.OnboardingStepper(step, welcomeSteps)
} // WelcomeStep1 - Initial welcome screen with features templ WelcomeStep1() { @welcomeStyles()

Welcome to Sonr

@FeatureItem("shield-check", "security", "Passwordless Security", "Authenticate with biometrics or hardware keys - no passwords to remember or steal") @FeatureItem("bolt", "speed", "WASM-Powered", "Wallet runs entirely in your browser - fast, secure, and always available") @FeatureItem("user-shield", "privacy", "You Own Your Data", "Self-sovereign identity means your keys never leave your device")
Learn More
} // WelcomeStep2 - How Motr Works explanation templ WelcomeStep2() { @welcomeStyles()
@InfoCallout("microchip", "WebAssembly Runtime", "Your wallet logic runs as compiled Go code in a secure WASM sandbox, directly in your browser.") @InfoCallout("fingerprint", "Passkey Authentication", "Use Face ID, Touch ID, or hardware security keys. Your biometrics stay on your device.") @InfoCallout("network-wired", "Decentralized Identity", "Connect to any app with OpenID Connect - you control what data to share.") @InfoCallout("key", "Multi-Chain Support", "One wallet for Sonr, Ethereum, Cosmos, Bitcoin and more via IBC.")
Back Get Started
} // WelcomeStep3 - Action selection (Create/Sign In) templ WelcomeStep3() { @welcomeStyles()
or Scan QR Code Back to How It Works
} // WelcomeFooter renders the network status and links footer templ WelcomeFooter() { @welcomeStyles()
Learn about Sonr | Documentation
} // FeatureItem renders a feature highlight with icon templ FeatureItem(icon string, variant string, title string, description string) {
} // InfoCallout renders an informational callout box templ InfoCallout(icon string, title string, description string) {
} // welcomeStyles contains the CSS specific to the welcome page templ welcomeStyles() { }