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.
44 lines
1.3 KiB
TypeScript
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`}
|
|
/>
|
|
);
|
|
}
|