Kanban

A composable drag-and-drop task board styled to match shadcn/ui.

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

2

Improve empty states

Add guidance and a primary action.

DesignAK

Keyboard shortcuts

Document the global command menu.

DocsMP

In progress

1

Billing settings

Build the subscription management view.

FeatureJL

Done

1

Accessibility audit

Review focus order and contrast.

A11ySC

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.

PropTypeDefaultDescription
classNamestringAdditional CSS classes for any Kanban primitive.
draggablebooleanfalseEnables native dragging when applied to KanbanCard.
data-overbooleanfalseHighlights a KanbanColumn as the active drop target.