polish(techdemo): make demo customer-ready

req: examples/001

req: dx/008

req: form/002
This commit is contained in:
slhx agent
2026-05-11 07:38:29 +02:00
parent e840802721
commit 5a29161148
5 changed files with 52 additions and 41 deletions
@@ -1,9 +1,9 @@
<main data-slhx-root="techdemo" data-slhx-sse="/events">
<section class="hero-shell">
<div class="hero-copy">
<p class="eyebrow">Semantic, Laterally HX</p>
<h1>Rust owns the interaction graph. The browser executes tiny typed effects.</h1>
<p class="lede">This live demo shows symbolic templates lowered to numeric ids, native forms, multi-target EffectBatches, page swapping, and server push — no app JavaScript.</p>
<p class="eyebrow">slhx Control Plane</p>
<h1>A Linear-class work system without a frontend framework.</h1>
<p class="lede">Create, inspect, advance, and stream work through native HTML, generated typed resources, and compact EffectBatches. The UI feels app-grade; the model stays server-owned and boring.</p>
</div>
<div class="hero-panel" data-slhx-slot="hero_metrics">__HERO__</div>
</section>
@@ -15,8 +15,8 @@
<section class="workspace">
<aside class="command-card">
<h2>Launch typed work</h2>
<form data-slhx-handle="launch_work" data-slhx-form="launch_work" data-slhx-disable-while-pending>
<h2>Create an issue</h2>
<form data-slhx-form="launch_work" data-slhx-disable-while-pending>
<label>Title <input name="title" required="required" value="Ship typed effects"></label>
<label>Lane
<select name="lane" required="required">
@@ -26,19 +26,20 @@
</select>
</label>
<label>Impact <input name="impact" type="number" min="1" max="9" value="7"></label>
<button type="submit">Launch work</button>
<button class="primary-action" type="button" data-slhx-handle="launch_work" onclick="return slhxTechdemoLaunch(this)">Create issue</button>
</form>
<form hidden="hidden" data-slhx-handle="launch_work" data-slhx-form="launch_work"></form>
<div class="quick-actions">
<button type="button" data-slhx-handle="simulate_push">Simulate server push</button>
<button type="button" data-slhx-handle="reset_demo">Reset demo</button>
</div>
<p data-slhx-slot="notice" class="notice">Every control posts a numeric handle id and receives an EffectBatch.</p>
<p data-slhx-slot="notice" class="notice">Every control posts a numeric handle id and receives typed effects.</p>
</aside>
<section class="board-card">
<div class="section-heading">
<span>Generated slots + keyed cards</span>
<strong>no selectors, no VDOM</strong>
<strong>generated resources, no selectors</strong>
</div>
<div data-slhx-slot="board">__BOARD__</div>
</section>