Session Item
The row an agent session lives in: status dot, title, time, unread count — and on hover, a card with live status, branch, and next actions, so you can check on an agent without leaving the thread you're in.
tsx
import { SessionItem } from "@/registry/seam/ui/session-item"
export default function SessionItemDemo() {
return (
<div className="bg-muted/40 w-72 rounded-lg border p-2">
<SessionItem title="fix-auth-redirect" status="waiting" time="2m" />
<SessionItem
title="migrate-billing-webhooks"
status="working"
time="now"
active
/>
<SessionItem title="model-picker-component" status="ready" time="18m" />
<SessionItem title="bump-dependencies" status="done" time="1h" />
<SessionItem title="flaky-e2e-hunt" status="error" time="3h" />
</div>
)
}bunx --bun @seamui/cli@latest add session-itemNotes
- The row wears
Button(ghost, row-shaped): press depth, haptic tap, focus ring, and disabled handling come from the foundation.data-activerenders it as the embossed key risen from the sidebar well. SessionCardis layout only — the hover wiring ispreview-card(see the example), so on touch you can put the identical card in a popover instead (hover → long-press, per the native contract).- No nested interactive elements in the row; the branch chip's copy action lives on the card. Unread announces as “3 unread”; the status dot stays decorative next to the visible title.
- Pure props in (
title,status,time,unread,active),onClickout — no transport or router coupling.
Press feedback, reduced motion, and haptics follow the global policy — see Motion and Haptics.