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.
51 lines
1.2 KiB
CSS
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;
|
|
}
|