use livevue_rs::RenderContext; use maud::{html, Markup}; /// Second page component: a simple "About" page. /// /// This exists specifically to exercise: /// - The `tree` signal page routing (resolve_root match arm) /// - SPA-like navigation via tree signal mutation /// - Round-trip: TodoList → About → TodoList without full page reload /// /// In a real app this might show user info, settings, etc. pub async fn about(_cx: &mut RenderContext) -> anyhow::Result { Ok(html! { div.about-page { h1 { "About LiveVue.rs" } nav { button.nav-link data-on:click="$tree = {page: 'TodoList'}; @post('/render')" { "Todos" } " | " span.nav-current { "About" } } div.about-content { p { "LiveVue.rs is a reactive server-side rendering framework for Rust. " "The server renders full-page HTML on every state change. " "DataStar morphs it into the DOM." } p { "The architectural bet: " strong { "full rerender is cheap" } ", so skip diffing, skip partial updates, skip client-side state management." } h2 { "v0 Status" } ul { li { "Single process, single node" } li { "SQLite for storage" } li { "Subscription keys collected (Phase 2 seam)" } li { "No cache, no auth, no WAL consumer" } } } } }) }