Add HTML on-device UI preview for flasher catalog.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
59
firmware/cyd/media/preview.html
Normal file
59
firmware/cyd/media/preview.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>POMO</title>
|
||||
<style>
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
html,body{width:100%;height:100%;overflow:hidden;background:#000}
|
||||
.bezel{width:100%;height:100%;display:grid;place-items:center;background:#1a1408}
|
||||
.screen{width:320px;height:240px;background:#0A1016;color:#EAF0F6;font:12px/1.2 system-ui,sans-serif;
|
||||
position:relative;overflow:hidden;transform-origin:center;transform:scale(var(--s,1))}
|
||||
.title{position:absolute;left:12px;top:4px;color:#E85D4C;font-size:20px;font-weight:700}
|
||||
.chip{position:absolute;right:12px;top:8px;color:#7A8B9C}
|
||||
.pm{position:absolute;left:12px;top:32px;width:40px;height:44px;border:0;border-radius:8px;background:#243140;color:#EAF0F6;font-size:18px}
|
||||
.pp{left:auto;right:12px}
|
||||
.timer{position:absolute;left:0;right:0;top:34px;text-align:center;font-size:28px;font-weight:700;color:#4FC3F7}
|
||||
.status{position:absolute;left:0;right:0;top:74px;text-align:center;color:#7A8B9C}
|
||||
.presets{position:absolute;left:12px;right:12px;top:94px;display:flex;gap:6px}
|
||||
.presets button{flex:1;height:30px;border:0;border-radius:6px;background:#15202C;color:#EAF0F6;font-weight:600}
|
||||
.presets button.on{background:#1E3A4A}
|
||||
.snd{position:absolute;left:12px;top:134px;color:#7A8B9C}
|
||||
.sndrow{position:absolute;left:68px;right:12px;top:128px;display:flex;gap:4px;align-items:center}
|
||||
.sndrow button{height:28px;border:0;border-radius:6px;background:#15202C;color:#EAF0F6;min-width:32px}
|
||||
.sndrow .name{flex:1;height:28px;border-radius:6px;background:#15202C;display:grid;place-items:center}
|
||||
.vol{position:absolute;left:12px;top:164px;color:#7A8B9C}
|
||||
.slider{position:absolute;left:52px;right:56px;top:168px;height:14px;border-radius:4px;background:#1C2A38;overflow:hidden}
|
||||
.slider>i{display:block;height:100%;width:40%;background:#3DDC97}
|
||||
.volpct{position:absolute;right:12px;top:164px}
|
||||
.audio{position:absolute;left:12px;top:188px;color:#7A8B9C;font-size:11px}
|
||||
.acts{position:absolute;left:12px;right:12px;bottom:10px;display:flex;gap:8px}
|
||||
.acts button{flex:1;height:32px;border:0;border-radius:8px;font-weight:700;color:#EAF0F6}
|
||||
.start{background:#1A4A6E}.reset{background:#243140}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="bezel"><div class="screen" id="s">
|
||||
<div class="title">POMO</div><div class="chip">TF OK</div>
|
||||
<button class="pm" type="button">-</button>
|
||||
<div class="timer">05:00</div>
|
||||
<button class="pm pp" type="button">+</button>
|
||||
<div class="status">5m - READY</div>
|
||||
<div class="presets">
|
||||
<button type="button">1</button><button type="button">3</button>
|
||||
<button class="on" type="button">5</button><button type="button">10</button>
|
||||
<button type="button">Set</button>
|
||||
</div>
|
||||
<div class="snd">SOUND</div>
|
||||
<div class="sndrow"><button type="button"><</button><div class="name">Alarm</div><button type="button">></button></div>
|
||||
<div class="vol">VOL</div><div class="slider"><i></i></div><div class="volpct">40%</div>
|
||||
<div class="audio">Speaker OFF</div>
|
||||
<div class="acts"><button class="start" type="button">START</button><button class="reset" type="button">RESET</button></div>
|
||||
</div></div>
|
||||
<script>
|
||||
(function(){function fit(){var s=document.getElementById('s');var r=s.parentElement.getBoundingClientRect();
|
||||
s.style.setProperty('--s',Math.min(r.width/320,r.height/240));}
|
||||
fit();addEventListener('resize',fit);})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,6 +2,9 @@
|
||||
"boardId": "esp32-2432s028",
|
||||
"name": "CYD Pomodoro",
|
||||
"summary": "Landscape Pomodoro timer with touch, speaker, and TF status",
|
||||
"description": "Presets 1/3/5/10 minutes, custom duration, alarm sound picker, volume slider on GPIO26. SoftSPI touch calibrated.",
|
||||
"tags": ["pomodoro", "touch", "speaker", "timer"]
|
||||
"description": "Presets 1/3/5/10 minutes, custom duration, alarm sound picker, volume slider on GPIO26.",
|
||||
"tags": ["pomodoro", "touch", "speaker", "timer"],
|
||||
"media": {
|
||||
"preview": "media/preview.html"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user