"""Top header — brand mark + Generation + Preset + chrome nav.
Linear-inspired: hairline border, 13px nav labels, restrained type, light pill CTA.
NOTE: NO `gr.Radio` for chrome. Preset uses two `gr.Button`s with active class
flipped via state in app.py. Generation stays as `gr.Dropdown`.
"""
from __future__ import annotations
import gradio as gr
def build_header() -> dict:
with gr.Row(elem_id="ws-header", elem_classes=["ws-header-row"]):
# ── Brand mark ────────────────────────────────────────────────────
with gr.Column(scale=1, min_width=240, elem_classes=["ws-chrome-col", "ws-brand-col"]):
# Brand + hamburger live together so the mobile drawer trigger
# sits naturally to the left of the monogram. The hamburger is
# hidden via CSS on desktop (≥1024px); click is wired in the
# nav-JS block in app.py (no Gradio event handler).
gr.HTML(
"""