refactor(techdemo): use generated render helpers throughout

Route shell, architecture, inspector, hero, activity, and live-feed rendering through generated render_html helpers, removing the last local render_template bridge from the techdemo page composition path.

req: component/003

req: view/001

req: html_safety/002
This commit is contained in:
slhx agent
2026-06-01 22:50:01 +02:00
parent 749ecb1778
commit edd804a505
+16 -23
View File
@@ -143,7 +143,7 @@ struct AppShell {
#[derive(Hemplate)]
#[hemplate = "partials"]
struct InspectorPanel {
selected: String,
selected: SafeHtml,
spotlight: String,
}
@@ -460,8 +460,8 @@ fn page_html(demo: &DemoState) -> String {
fn shell(body: String) -> String {
// Explicit full-page shell composition boundary for already-rendered hemplate fragments.
// req: html_safety/002 req: view/001
render_template(&AppShell { body: SafeHtml::trusted(body) })
// req: html_safety/002 req: view/001 req: component/003
ui::app_shell::render_html(&AppShell { body: SafeHtml::trusted(body) }).into_string()
}
fn hero_view(demo: &DemoState) -> HeroMetrics {
@@ -478,8 +478,8 @@ fn hero_view(demo: &DemoState) -> HeroMetrics {
}
fn render_hero(demo: &DemoState) -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&hero_view(demo))
// req: html_safety/002 req: view/001 req: component/003
ui::render_html(&hero_view(demo))
}
fn board_view(demo: &DemoState) -> BoardLanes {
@@ -534,8 +534,8 @@ fn activity_view(demo: &DemoState) -> ActivityFeed {
}
fn render_activity(demo: &DemoState) -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&activity_view(demo))
// req: html_safety/002 req: view/001 req: component/003
ui::render_html(&activity_view(demo))
}
fn inspector_view(demo: &DemoState) -> InspectorPanel {
@@ -544,9 +544,9 @@ fn inspector_view(demo: &DemoState) -> InspectorPanel {
.selected_id
.and_then(|id| demo.work.iter().find(|item| item.id == id));
let selected = selected.map_or_else(
|| render_template(&InspectorEmpty),
|| ui::render_html(&InspectorEmpty),
|item| {
render_template(&InspectorSelected {
ui::render_html(&InspectorSelected {
title: item.title.clone(),
lane: LANES[item.lane].1,
stage: item.stage.label(),
@@ -561,28 +561,28 @@ fn inspector_view(demo: &DemoState) -> InspectorPanel {
}
fn render_inspector(demo: &DemoState) -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&inspector_view(demo))
// req: html_safety/002 req: view/001 req: component/003
ui::render_html(&inspector_view(demo))
}
fn architecture_hero() -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&ArchitectureHero)
ui::render_html(&ArchitectureHero)
}
fn architecture_board() -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&ArchitectureBoard)
ui::render_html(&ArchitectureBoard)
}
fn architecture_inspector() -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&ArchitectureInspector)
ui::render_html(&ArchitectureInspector)
}
fn architecture_activity() -> SafeHtml {
// req: html_safety/002 req: view/001
slhx::render_html(&ArchitectureActivity)
ui::render_html(&ArchitectureActivity)
}
fn render_control_center(page: ControlCenter) -> String {
@@ -590,13 +590,6 @@ fn render_control_center(page: ControlCenter) -> String {
ui::render_html(&page).into_string()
}
fn render_template(template: &impl Hemplate) -> String {
let mut html = String::new();
template
.render_into(&mut html)
.expect("techdemo hemplate partial renders");
html
}
#[cfg(test)]
mod tests {
@@ -712,7 +705,7 @@ mod tests {
// req: html_safety/002 req: view/001 req: test/005
#[test]
fn live_feed_payload_is_rendered_by_a_hemplate_view() {
let html = slhx::render_html(&LiveFeed { tick: 7 });
let html = ui::render_html(&LiveFeed { tick: 7 });
let document = Html::parse_fragment(html.as_str());
let row = document
.select(&selector(".live-row"))