hyperhive/frontend/packages/agent/src/components/HeaderPill.tsx
atlas 39b95c2ede treefmt: apply prettier
Pure `nix fmt` output from the commit before this one — no hand edits.
203 files: 52 md, 42 tsx, 32 js, 32 css, 21 ts, 13 html, 8 json, 3 mjs.

Reproduce with `nix develop -c nix fmt` on the parent commit; the result
should be byte-identical to this tree.

None of the 13 `.prettierignore` entries appears here — verified by
intersecting the changed-file list against the ignore file, with a
control proving the intersection finds a match when one exists.
2026-09-02 15:25:07 +02:00

44 lines
1.3 KiB
TypeScript

// <HeaderPill> — the inbox/todos flyout triggers in the header's right
// 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;
label: string;
count: number;
onClick: () => void;
}
const TONE: Record<HeaderPillProps["kind"], BadgeTone> = {
inbox: "warning",
todos: "positive",
};
export function HeaderPill({
kind,
icon,
label,
count,
onClick,
}: HeaderPillProps) {
if (count === 0) return null;
return (
<Badge
icon={icon}
label={label}
value={count}
tone={TONE[kind]}
onClick={onClick}
title={`open ${label} flyout`}
/>
);
}