# @pixpilot/shadcn-kanban

> Accessible drag-and-drop Kanban board built with shadcn/ui and dnd-kit.

Latest version **1.1.1** (published 2026-09-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install @pixpilot/shadcn-kanban
pnpm add @pixpilot/shadcn-kanban
yarn add @pixpilot/shadcn-kanban
bun add @pixpilot/shadcn-kanban
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2026-09-24 |
| First published | 2026-09-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 153.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 3 |
| Author | m.doaie |
| Maintainers | pixpilot-org, cyrus-d |
| Keywords | kanban, board, drag-and-drop, dnd-kit, shadcn, react |

## Links

- npm: https://www.npmjs.com/package/@pixpilot/shadcn-kanban
- Repository: https://github.com/pixpilot/shadcn-components
- Issues: https://github.com/pixpilot/shadcn-components/issues
- npm.io page: https://npm.io/package/@pixpilot/shadcn-kanban

## Dependencies (6)

- [lucide-react](https://npm.io/package/lucide-react.md) 1.26.0
- [@dnd-kit/core](https://npm.io/package/@dnd-kit/core.md) ^6.3.1
- [@dnd-kit/sortable](https://npm.io/package/@dnd-kit/sortable.md) ^10.0.0
- [@dnd-kit/utilities](https://npm.io/package/@dnd-kit/utilities.md) ^3.2.2
- [@pixpilot/shadcn-ui](https://npm.io/package/@pixpilot/shadcn-ui.md) 3.17.6
- [@tanstack/react-virtual](https://npm.io/package/@tanstack/react-virtual.md) ^3.13.23

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 1.1.1 (latest) — 2026-09-24
- 1.1.0 — 2026-09-23
- 1.0.0 — 2026-09-23
- 0.2.0 — 2026-09-23
- 0.0.0 — 2026-09-20

## README

# @pixpilot/shadcn-kanban

A generic, controlled Kanban board with drag-and-drop powered by
[`@dnd-kit`](https://dndkit.com), built on
[`@pixpilot/shadcn-ui`](../shadcn-ui). It owns dragging, column reordering,
filtering and paging; you own the data.

## Install

```bash
pnpm add @pixpilot/shadcn-kanban
```

## Usage

```tsx
import { KanbanBoard } from '@pixpilot/shadcn-kanban';

<KanbanBoard
  columns={[
    { id: 'todo', title: 'To Do' },
    { id: 'done', title: 'Done' },
  ]}
  items={items}
  onChange={(event) => setItems(event.items)}
/>;
```

The board is **controlled**: it renders the `items` prop and never mutates your
data. A drop produces a `KanbanChangeEvent` carrying the full reordered array —
assign `event.items` back to your state and the board settles.

## Documentation

| Document                                               | Covers                                                         |
| ------------------------------------------------------ | -------------------------------------------------------------- |
| [docs/README.md](./docs/README.md)                     | Overview, layout contract and generics                         |
| [docs/api.md](./docs/api.md)                           | Every prop, type and callback                                  |
| [docs/drag-and-drop.md](./docs/drag-and-drop.md)       | How the drag state machine works, and why it is built this way |
| [docs/filters.md](./docs/filters.md)                   | Per-column filters, board-side and parent-side                 |
| [docs/infinite-scroll.md](./docs/infinite-scroll.md)   | Loading a column's items a page at a time                      |
| [docs/virtualization.md](./docs/virtualization.md)     | Mounting only the cards near a column's scroll window          |
| [docs/touch-and-mobile.md](./docs/touch-and-mobile.md) | Hold-to-drag on touch, and columns as a swipeable slider       |

## On a phone

Out of the box, and without any prop:

- **Swiping wins over dragging.** A card only becomes draggable after the finger
  has rested on it for 250 ms, and rings while it is held. Anything shorter
  stays a scroll, so reaching for the next column no longer drags a card along
  with it.
- **Columns behave like a slider.** Below the `sm` breakpoint each column is a
  CSS scroll-snap child roughly a screen wide, so a swipe moves exactly one
  column and settles with the platform's own momentum.

Both are tunable — `touch` and `columnSnap` — and both are off the table for
mouse and keyboard, which are unchanged. See
[docs/touch-and-mobile.md](./docs/touch-and-mobile.md).

## License

MIT

---
_Source: https://npm.io/package/@pixpilot/shadcn-kanban · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
