hyperhive/frontend/packages/swarm-ui/src/pages/ComponentsPage.css
iris 62cc0620c8 Add Badge + Dropdown Preact components, demo on swarm-ui /components
New shared Preact primitives for the per-agent terminal redesign:

- Badge (@hive/shared/badge.js): a labelled status pill. Plain <span>
  when static (e.g. "alive"), a real <button> with a disclosure caret
  when given onClick (e.g. opens a Dropdown, or toggles itself in
  place). Same component either way so a status row reads as one
  consistent set of badges regardless of which are interactive.
- Dropdown (@hive/shared/dropdown.js): a small option list anchored
  directly under whatever opened it (no portal, no native <dialog> —
  see the file comment for why). Closes on outside click or Escape.

This is the fix for the design guide's own named anti-example: the
agent page's model/effort pickers live in the overflow menu while the
current model/effort only show as a disconnected chip. Badge+Dropdown
composed together is that control moved inline, next to what it shows.

Demoed on swarm-ui's /components page: all Badge tones, a label-prefixed
badge, an interactive badge that opens a Dropdown (model-picker shape),
and an interactive badge that toggles itself (pause/resume shape).

Both packages build + tsc --noEmit clean.
2026-08-28 13:21:49 +02:00

51 lines
1.2 KiB
CSS

/* <ComponentsPage> layout — a plain vertical stack of sections, each a
labelled grid of samples. No new colour vars: reuses the same
base16 slots (../theme.css) every other component draws from, so
this page can't drift from the palette it's demonstrating. */
.components-intro {
margin: 0 0 1.5em;
color: var(--muted);
}
.components-intro code {
color: var(--fg);
}
.components-section {
margin-bottom: 2em;
}
.components-section:last-child {
margin-bottom: 0;
}
.components-section-title {
margin: 0 0 0.75em;
font-size: 0.9em;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--muted);
}
.components-section-body {
display: flex;
flex-direction: column;
gap: 1em;
}
.components-chip-row {
display: flex;
flex-wrap: wrap;
gap: 1em;
}
.components-sample {
display: flex;
flex-direction: column;
gap: 0.4em;
}
.components-sample-label {
font-size: 0.8em;
color: var(--muted);
}
/* Anchor for a Badge + the Dropdown it opens (@hive/shared) — Dropdown
positions `absolute` against this box, see Dropdown.css's file-top
comment. */
.components-badge-anchor {
position: relative;
display: inline-block;
}