{% extends "base.html" %} {% from "components/status_badge.html" import status_badge %} {% block title %}Style Guide · Energizados{% endblock %} {% block app_title %}Style Guide{% endblock %} {% block content %} {# ============================================================ Intro ============================================================ #}

Design System

static/css/app.css · tokens & components

Living documentation of the web console design system. Every swatch and sample below is rendered with the real var(--app-*) tokens — no hardcoded colors. Toggle the light/dark switch in the topbar and the entire page re-themes in place: swatches, components, and the displayed token values all follow.

{# ============================================================ Colors ============================================================ #}

Colors

brand · neutrals · semantic

Each chip's background is the token itself (var(--app-*)), so it tracks the active theme. The value shown is the live computed hex.

Brand · indigo

{% set brand_tokens = [ ('--app-primary', 'base'), ('--app-primary-400', 'lighter'), ('--app-primary-600', 'darker'), ('--app-primary-700', 'darkest') ] %} {% for token, note in brand_tokens %}
{{ token }} {{ note }} —
{% endfor %}

A comma-separated --app-primary-rgb triple is also defined for rgba() composition (not a standalone color).

Neutrals

{% set neutral_tokens = [ ('--app-bg', 'page background'), ('--app-surface', 'cards / panels'), ('--app-surface-2', 'raised / inset'), ('--app-text', 'body text'), ('--app-muted', 'secondary text'), ('--app-border', 'dividers') ] %} {% for token, note in neutral_tokens %}
{{ token }} {{ note }} —
{% endfor %}

Semantic

{% set semantic_tokens = [ ('--app-success', 'success / ok'), ('--app-warning', 'warning / queued'), ('--app-danger', 'danger / failed') ] %} {% for token, note in semantic_tokens %}
{{ token }} {{ note }} —
{% endfor %}
{# ============================================================ Typography ============================================================ #}

Typography

Inter (UI) · monospace (code/IDs)

Sans — --app-font-sans (Inter)

Heading level 1

Heading level 2

Heading level 3

Body text — the quick brown fox jumps over the lazy dog while the electricity meter records consumption for twelve months.

Small / caption text for secondary detail.


Mono — --app-font-mono

train-20240101_120000 · AUC=0.8523 · F1=0.7810

etl:
  sample:
    enabled: true
    custom_class: "energizados.etl.pipeline.SourceETL"
{# ============================================================ Scale — spacing / radius / shadow ============================================================ #}

Scale

spacing · radius · shadow

Spacing — --app-space-1 … --app-space-6

{% set spaces = [ ('--app-space-1', '0.25rem'), ('--app-space-2', '0.5rem'), ('--app-space-3', '0.75rem'), ('--app-space-4', '1rem'), ('--app-space-5', '1.5rem'), ('--app-space-6', '2rem') ] %} {% for token, rem in spaces %}
{{ token }} {{ rem }}
{% endfor %}

Radius — --app-radius-sm / md / lg

{% set radii = [ ('--app-radius-sm', '0.25rem'), ('--app-radius-md', '0.5rem'), ('--app-radius-lg', '0.75rem') ] %} {% for token, rem in radii %}
{{ token }} {{ rem }}
{% endfor %}

Shadow — --app-shadow-sm / md

--app-shadow-sm
--app-shadow-md
{# ============================================================ Components ============================================================ #}

Components

live examples

Buttons & spinner

Loading…

Status badges (status_badge macro)

{{ status_badge('queued') }} {{ status_badge('running') }} {{ status_badge('success') }} {{ status_badge('partial') }} {{ status_badge('failed') }} {{ status_badge('aborted') }}

Metric row

AUC 0.8523
F1 0.7810
Runs 42

Empty state

No runs yet. Enqueue a job to see results here.

Card with header & compact table

Recent runs

View all
RunStatusAUC
train-20240712_0915 {{ status_badge('success') }} 0.8523
train-20240711_1430 {{ status_badge('failed') }} —
etl-20240712_0800 {{ status_badge('running') }} —
{% endblock %} {% block extra_head %} {% endblock %} {% block extra_scripts %} {% endblock %}