diff --git a/docs/cards-redesign-demo-v2.html b/docs/cards-redesign-demo-v2.html new file mode 100644 index 0000000..59bbe58 --- /dev/null +++ b/docs/cards-redesign-demo-v2.html @@ -0,0 +1,1420 @@ + + +
+ + +v2 drops the parallel "patchbay rail" I sketched in v1 and adopts the existing .mod-head / .mod-leds / .mod-metrics / .mod-patch / .mod-btn classes from dashboard.css verbatim. Same instrument-style numerics, same recessed LED clusters, same patch indicator. Entity cards inherit dashboard polish; nothing new gets invented.
.module mirrors .dashboard-target:has(.mod-head) down to padding and the always-on left stripe at 0.6→1.0 opacity..mod-badge replaces my v1 top rail. Channel-tinted mono caps pill at the top-left of .mod-id — exactly the dashboard pattern, no extra band needed..mod-leds recessed cluster next to the title — multiple dots in a hairline bezel, real-hardware feel. Single LED card-types use one dot in the same bezel.var(--font-display). Big Shoulders Display, 2rem, 800-weight, tabular-nums. Already bundled in fonts/big-shoulders-display-latin.woff2 and only used on dashboard + perf cards today..mod-patch footer label on every card: PATCHED · OUT-1, STREAMING, OFFLINE, STANDBY, ARMED, PRESET, READY. Channel-colored dot on the left, mono caps state label — the strongest "this is rack hardware" cue..mod-btn with text labels for primary/secondary actions in the footer (START / STOP / EDIT). Tertiary square .mod-btn-icon variant for settings..mod-badge__color dot leads every .mod-badge — channel-tinted by default, fills with the user's picked color when overridden. Click to open the picker. Lives with the type label it tints, not in a destructive cluster.Duplicate / Hide card / ─── / Delete. One control, isolated, touch-and-keyboard accessible — and easily extended (Move to section, Export) without re-cramping the corner..card-meta + .stream-card-prop → single .chip system with three modifiers: default, .chip--link for crosslinks, .chip--tag for tag pills, .chip--err for error states. Filter chains use chips + .chain-arrow separators..mod-metrics (numeric readouts) ·
+ .mod-chips (qualitative metadata, crosslinks, filter chains) ·
+ .mod-preview (gradient strip / asset thumb / live LED preview).
+ Plus optional .mod-fader (LED targets) and .mod-desc (descriptions)..mod-badge at top-left..mod-leds 1–3 LED bezel..mod-btn with text labels for state-changing actions; icon variant kept for settings/edit only..mod-patch footer indicator on every card..mod-* rules already exist in dashboard.css. The entity-card variant just needs .card:has(.mod-head) / .template-card:has(.mod-head) selectors that copy .dashboard-target:has(.mod-head)'s padding/layout — or alias all three to a shared .module class.wrapCard() in card-colors.ts already handles the wrapper, color stripe, and corner actions. Add an optional second signature: wrapCard({ mod: { badge, name, meta, leds, metrics, chips, preview, fader, patch, primaryAction } }) that emits the dashboard markup. Existing content/actions path stays for incremental migration.create*Card() swaps its hand-rolled .card-header + .card-subtitle + .stream-card-props for the structured mod options. Localised, low-risk, can ship one card type per PR.[data-has-color="1"], .card-running gate on the ::before stripe so the channel signal becomes ambient. Single line change.Every entity is a module in a virtual rack. The channel system you already built — dormant on most cards today — becomes the primary identity signal: type, status, and "live" state read at a glance.
+Captured 3 days ago — warm tungsten cast on every fixture for a 19:00 unwind.
+Reusable capture preset for screen sources. 3 engine options pre-configured.
+data-device-id · signal · rail LED · OUTdata-target-id · signal · rail TARGET · OUTdata-ha-target-id · signal · rail HA · OUTdata-css-id · signal · rail STRIP · MAPPED/COMPOSITE/MATH/EVENTdata-cspt-id · signal · rail TPL · STRIPdata-pattern-template-id · signal · rail TPL · PATTERNdata-stream-id · cyan · rail SCREEN/IMG/VIDEO · INdata-template-id · cyan · rail TPL · CAPTUREdata-pp-template-id · cyan · rail TPL · POST-FXdata-id · cyan · rail HA · INdata-id · cyan · rail MQTT · INdata-id · cyan · rail WX · INdata-id · cyan · rail VALUE · HA/MQTT/MATH/SCHEDULEdata-id · magenta · rail AUDIO · INdata-id · magenta · rail FFT · INdata-audio-template-id · magenta · rail TPL · AUDIOdata-apt-id · magenta · rail TPL · FFTdata-automation-id · violet · rail SCENE · LOGICdata-scene-id · violet · rail SCENE · PRESETdata-sync-clock-id · violet · rail CLK · GENdata-gi-id · amber · rail GAME · <type>data-id · signal · rail PALETTEdata-id · cyan · rail ASSET · IMG/AUD/VID--ch-* palette becomes a top-edge bar with a silkscreened type label (LED · OUT, FFT · IN). Every card carries its identity; running cards just brighten rather than reveal.health-dot can be reused — only its glow needs lifting.card-meta badges. Three recessed cells with Pixels / FPS / Lat — tabular-nums, bordered hairline, faint inner shadow. Scannable in one fixation..chip, .chip--link, .chip--tag) replaces the parallel .card-meta + .stream-card-prop styles. Crosslinks tint to the channel color on hover instead of generic gray.<input type="range">.feTurbulence SVG inlined; 4–5% opacity. Ends the "every dark UI is a flat black rectangle" feeling without costing performance.