Skip to content

KanbanBoard

beta

A pipeline board: columns of cards that move between stages by pointer drag, by a Move control on each card, or by keyboard alone, with counts, empty columns and a work-in-progress limit

OrchestrationInteractive/Storybook ↗
import { KanbanBoard } from "@danagraph/design-system/patterns"
Loading demo…

Props

columnsrequired
Type { id: string; title: string; limit?: number }[]Default —

Stages in order; limit is a work-in-progress limit shown as n / limit and flagged, not enforced

cardsrequired
Type { id: string; columnId: string; title: string; description?: string; meta?: string }[]Default —

Controlled; order within a column is array order, and a card whose columnId matches no column is not rendered

onMoverequired
Type (move: { cardId: string; toColumnId: string; toIndex: number }) => voidDefault —

Called for every move by pointer, Move control or keyboard; apply it there with applyKanbanMove(cards, move). The announcement and the return of focus follow that update, so a move refused or applied later is silent

label
Type stringDefault "Board"

Accessible name of the board

Accessibility

  • The board is a labelled group; each column is a section labelled by its heading and its cards are an ordered list
  • Every card is focusable: Alt with left or right moves it to the end of the previous or next column, Alt with up or down moves it one position
  • Each card has a Move control listing the columns, for screen readers and anyone who does not drag
  • After a move focus is on the moved card and a polite live region states the column and position
  • Over a limit the column reads OVER LIMIT in words; colour is never the only signal
semantictypebordersurface
Design Rationale

This component was designed to express:

Explore Related

Was this helpful?