feat(dashboard): generic <ToolCard> — header/pill/duration/caret #991
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!991
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/960"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Generic
<ToolCard>primitive every tool widget can compose into, matching Vercel AI ElementsToolergonomics with Tokyo Night styling.Test plan
just qagreen (28 new Vitest tests pass: 6 snapshots perToolCallState, open/closed policy per state, click-to-toggle x2, pill labels, target chip, duration, data-attrs)output-error) and approvals (approval-requested,output-denied) render open by defaultoutput-available) render collapsed by defaultinput-streaming,input-available) render open with spinner pillprefers-reduced-motionsuppresses rotation animation<button>— caret uses<Button variant="ghost">Closes #960
All ACs met, CI green, 28 tests pass.
Nit: the caret
<Button iconOnly>serialises as a self-closing<button />in every snapshot — no<ChevronRight>SVG inside. The interaction tests prove the button works, so this is likely a jsdom/Lucide serialisation quirk rather than a runtime regression, but worth a quick visual spot-check in the browser to confirm the chevron actually renders.