Files
2026-07-17 02:10:08 +08:00

85 lines
2.7 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>LED Output</title>
<link rel="stylesheet" href="/static/output/styles.css" />
</head>
<body>
<main id="outputApp" class="viewport" v-cloak>
<section
ref="wall"
id="wall"
class="wall"
:class="[`theme-${activeView}`, `motion-${motionMode}`, `focus-${focusTarget}`, { pulse: pulseActive }]"
>
<canvas ref="motionCanvas" id="motionCanvas" class="motion-canvas"></canvas>
<div class="grid-layer"></div>
<div class="scan-layer"></div>
<header class="screen-header">
<div>
<p class="eyebrow">Synchronized LED Wall Platform</p>
<h1>{{ sceneTitle }}</h1>
</div>
<div class="header-metrics">
<strong>{{ clockText }}</strong>
<span>v{{ state?.version || 0 }}</span>
<em>{{ tile?.id || "--" }} / {{ isPreview ? "PREVIEW" : "OUTPUT" }}</em>
</div>
</header>
<section
v-for="scene in sceneDefinitions"
:key="scene.id"
class="scene"
:class="{ active: activeView === scene.id }"
:data-view="scene.id"
>
<div class="hero-copy">
<span>{{ scene.kicker }}</span>
<h2>{{ scene.headline }}</h2>
<p>{{ scene.copy }}</p>
</div>
<div class="metric-grid">
<article v-for="metric in scene.metrics" :key="metric.label" class="metric-card">
<span>{{ metric.label }}</span>
<strong>{{ metric.value }}</strong>
<small>{{ metric.trend }}</small>
</article>
</div>
<div class="visual-stage">
<div class="route-field">
<i v-for="line in scene.lines" :key="line" :class="['route-line', line]"></i>
</div>
<div
v-for="node in scene.nodes"
:key="node.id"
class="stage-node"
:class="node.tone"
:style="{ left: node.x + 'px', top: node.y + 'px' }"
>
<span>{{ node.label }}</span>
<strong>{{ node.value }}</strong>
</div>
</div>
<aside class="event-rail">
<article v-for="event in scene.events" :key="event.title" class="event-card">
<span>{{ event.time }}</span>
<strong>{{ event.title }}</strong>
<small>{{ event.detail }}</small>
</article>
</aside>
</section>
</section>
<aside ref="hud" id="hud" class="hud">{{ hudText }}</aside>
</main>
<script src="/static/vendor/vue.global.prod.js"></script>
<script src="/static/output/main.js"></script>
</body>
</html>