diff --git a/frontend/packages/agent/src/agent.css b/frontend/packages/agent/src/agent.css index 9f142959..646a9442 100644 --- a/frontend/packages/agent/src/agent.css +++ b/frontend/packages/agent/src/agent.css @@ -319,53 +319,10 @@ h2, h3 { background: color-mix(in srgb, var(--purple) 6%, transparent); } -/* Header pill — inbox / loose-ends triggers. Compact, count-prominent. - Filled to match every OTHER chip in `.agent-header-pills` - (StatusChips' alive/state/model/effort/pause, MetaNav's 🔗 trigger — - all `@hive/shared`'s `Badge`, an `.ui-badge` filled pill) — no - `hive-pill` on the markup any more (its bordered/transparent shape - is what made this one read as visually distinct from its neighbours; - values below are `.ui-badge`/`.ui-badge-interactive`'s own, not a - new shape). `display: inline-flex` (not Badge's default) for the - icon+label+count row this component alone needs. */ -.header-pill { - background: var(--purple-dim); - border: none; - border-radius: 1em; - padding: 0.15em 0.6em; - min-height: 2.75em; - padding-inline: 0.8em; - color: var(--fg); - font-family: inherit; - display: inline-flex; - align-items: center; - gap: 0.4em; - cursor: pointer; - transition: background 0.15s ease, color 0.15s ease; -} -.header-pill:hover { - background: var(--border); -} -.header-pill-icon { font-size: 1.05em; line-height: 1; } -.header-pill-label { color: var(--muted); } -.header-pill-count { - background: var(--purple-dim); - color: var(--purple); - border-radius: 999px; - padding: 0 0.5em; - min-width: 1.6em; - text-align: center; - font-weight: bold; - font-variant-numeric: tabular-nums; -} -.header-pill-inbox .header-pill-count { - background: color-mix(in srgb, var(--amber) 18%, transparent); - color: var(--amber); -} -.header-pill-todos .header-pill-count { - background: color-mix(in srgb, var(--green) 18%, transparent); - color: var(--green); -} +/* Header pill (inbox / loose-ends triggers) — no CSS of its own any + more. `HeaderPill.tsx` renders `@hive/shared`'s `Badge` directly now + (mara: "cant we reuse the badge component") instead of a hand-styled + pill matched to Badge's own values; nothing left to override here. */ .agent-main { position: absolute; diff --git a/frontend/packages/agent/src/components/HeaderPill.tsx b/frontend/packages/agent/src/components/HeaderPill.tsx index 7a701de4..deea92eb 100644 --- a/frontend/packages/agent/src/components/HeaderPill.tsx +++ b/frontend/packages/agent/src/components/HeaderPill.tsx @@ -1,10 +1,15 @@ // — the inbox/todos flyout triggers in the header's right -// cluster. Reuses agent.css's existing `.header-pill…` rules (loaded -// globally), styled to match `@hive/shared`'s filled `Badge` pill — -// every other chip in the same cluster is one — not the bordered -// `.hive-pill` shape (mara: "inbox badge looks different from all the -// other ones"). Hidden (renders nothing) at count 0, matching the old -// page's `pill.hidden = count === 0`. +// cluster. A thin wrapper over `@hive/shared`'s `Badge` (icon+label+ +// value+onClick already covers this shape exactly) rather than a +// bespoke pill — mara, reviewing the first cut of this (a hand-styled +// `.header-pill` matched to `Badge`'s own CSS values rather than the +// component itself): "cant we reuse the badge component". Only two +// things this wrapper still owns: hiding at count 0 (`pill.hidden = +// count === 0` in the old page) and picking the inbox/todos tone so +// the count reads amber/green like it always has (`Badge`'s `tone` +// colours the value, which here is the count). +import { Badge, type BadgeTone } from '@hive/shared/badge.js'; + export interface HeaderPillProps { kind: 'inbox' | 'todos'; icon: string; @@ -13,15 +18,21 @@ export interface HeaderPillProps { onClick: () => void; } +const TONE: Record = { + inbox: 'warning', + todos: 'positive', +}; + export function HeaderPill({ kind, icon, label, count, onClick }: HeaderPillProps) { if (count === 0) return null; return ( - + ); }