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
Your self-sovereign identity wallet powered by WebAssembly
@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()
How Motr Works
A next-generation wallet built on WebAuthn and WASM
@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()
Ready to Begin?
Create a new wallet or sign in to an existing one
or
Scan QR Code
Already have a passkey registered on another device? Use QR code to sync your wallet.
Back to How It Works
}
// WelcomeFooter renders the network status and links footer
templ WelcomeFooter() {
@welcomeStyles()
Sonr Network: Operational
Learn about Sonr
|
Documentation
}
// FeatureItem renders a feature highlight with icon
templ FeatureItem(icon string, variant string, title string, description string) {
{ title }
{ description }
}
// InfoCallout renders an informational callout box
templ InfoCallout(icon string, title string, description string) {
{ title }
{ description }
}
// welcomeStyles contains the CSS specific to the welcome page
templ welcomeStyles() {
}