Kanban Agent Tasks
A support-agent swimlane kanban board: each row is an agent with an avatar, and tickets move across Queue, Active, Waiting, and Resolved columns. Every card shows a colored priority dot and the customer's name, and can be dragged to a different column within its own row. Built with TypeScript, shadcn/ui Avatar, native HTML5 drag-and-drop, and Tailwind CSS.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, avatar-initials dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/kanban-agent-tasks.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/kanban/kanban1.tsx instead.
Usage
The file also exports kanban1Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Kanban1, kanban1Demo } from "@/components/blocks/kanban/kanban1"; export default function Page() { return <Kanban1 {...kanban1Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| agents | Agent[] | none | One swimlane row per agent, rendered top to bottom in array order. |
| tickets | Ticket[] | none | All tickets across every agent and column. The board's own drag state is seeded from this array on mount. |
| className | string | none | Extra classes for the outer section element. |
Types
type Agent = { id: string; name: string }; type Priority = "urgent" | "high" | "normal"; type Ticket = { id: string; agentId: string; customer: string; subject: string; priority: Priority; column: "queue" | "active" | "waiting" | "resolved"; };
Behavior notes
- Dragging a card and dropping it on a different column cell in the same agent row genuinely updates that ticket's column via client state; the `tickets` prop only seeds the board's initial state on mount, matching every other stateful block in this catalog.
- Dragging uses plain HTML5 drag events (draggable, onDragStart/onDragOver/onDrop) with no external drag-and-drop library, so it responds to mouse and touch-emulated drag but has no keyboard equivalent.
- A card can only be dropped into a column within its own agent's row; there is no cross-agent reassignment.
- The four columns (Queue, Active, Waiting, Resolved) are a fixed list in the component, not a prop, the same way dashboard blocks fix their tab lists in code.
- Priority maps to a fixed dot color (urgent: red, high: amber, normal: blue) via a lookup table in the component, not a themeable prop.
- Every avatar renders initials only; there is no photo field, matching this batch's placeholder-only imagery convention.
Frequently asked questions
Related components
Team Sprint Kanban
Swimlane grid for sprint planning
Sprint Capacity Kanban
Progress-heavy capacity board
Agile Board Kanban
Full drag-and-drop agile board
Resource Matrix Kanban
Resource allocation grid view
Project Planner Kanban
Split-panel project management