The Kanban component provides styled primitives for building task boards. Compose columns, cards, headers, counts, descriptions, and footers while keeping task state and drag behavior under your control.
Preview
Backlog
2Improve empty states
Add guidance and a primary action.
Keyboard shortcuts
Document the global command menu.
In progress
1Billing settings
Build the subscription management view.
Done
1Accessibility audit
Review focus order and contrast.
Usage
Installation
$ npx shadcn@latest add https://spark-ui-olive.vercel.app/r/kanban.json
Basic Example
import {
Kanban,
KanbanCard,
KanbanCardTitle,
KanbanColumn,
KanbanColumnContent,
KanbanColumnHeader,
KanbanColumnTitle,
} from "@/components/kanban";
export function Board() {
return (
<Kanban>
<KanbanColumn>
<KanbanColumnHeader>
<KanbanColumnTitle>Backlog</KanbanColumnTitle>
</KanbanColumnHeader>
<KanbanColumnContent>
<KanbanCard draggable>
<KanbanCardTitle>Write documentation</KanbanCardTitle>
</KanbanCard>
</KanbanColumnContent>
</KanbanColumn>
</Kanban>
);
}
Properties
All Kanban primitives accept the standard HTML attributes for their rendered element, including className and native drag event handlers.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | — | Additional CSS classes for any Kanban primitive. |
draggable | boolean | false | Enables native dragging when applied to KanbanCard. |
data-over | boolean | false | Highlights a KanbanColumn as the active drop target. |