jervis-kanban
| Install | |
|---|---|
npm install jervis-kanban |
|
| Latest Version: | 0.0.0-alpha.8 |
| Vue: | 2 · 3 |
| License: | MIT |
| Last Updated: | Jun 30, 2026 |
| Links: | npm |
jervis-kanban
A full-featured Kanban board component library for Vue 2 & Vue 3
Zero external dependencies (except vue-demi for cross-version compatibility). Pure CSS styling with 30+ CSS custom properties for full theming control.
Features
| Feature | Description |
|---|---|
| Drag & Drop | Cards between columns and swimlanes (native HTML5 API) |
| Columns | Add, edit, delete, collapse, reorder, WIP limits |
| Cards | Full CRUD — title, description, labels, assignees, metadata |
| Swimlanes | Horizontal lanes to group cards, collapsible |
| v-model | Two-way binding on the entire board state |
| Slots | Customize every part — card, column title, actions, empty state |
| RTL | Built-in right-to-left support |
| Theming | 30+ CSS custom properties |
| TypeScript | Fully typed API with exported interfaces |
Installation
npm install jervis-kanban
Quick Start
Global Plugin
import { createApp } from "vue";
import App from "./App.vue";
import JervisKanban from "jervis-kanban";
import "jervis-kanban/dist/style.css";
createApp(App).use(JervisKanban).mount("#app");
Tree-Shakable Import
<script setup lang="ts">
import { ref } from "vue";
import { KanbanBoard } from "jervis-kanban";
import "jervis-kanban/dist/style.css";
import type { KanbanBoardType } from "jervis-kanban";
const board = ref<KanbanBoardType>({
columns: [
{ id: "1", title: "To Do", order: 0, color: "#ef4444" },
{ id: "2", title: "In Progress", order: 1, color: "#f59e0b" },
{ id: "3", title: "Done", order: 2, color: "#22c55e" },
],
cards: [
{ id: "c1", title: "Design mockups", columnId: "1", order: 0 },
{
id: "c2",
title: "Build API",
columnId: "2",
order: 0,
labels: [{ id: "l1", text: "Backend", color: "#6366f1" }],
},
],
swimlanes: [],
});
</script>
<template>
<KanbanBoard v-model="board" @card-move="handleMove" />
</template>
Full documentation → jervis-kanban
API Overview
Props
| Prop | Type | Default | Description |
|---|---|---|---|
v-model |
KanbanBoardType |
{} |
Board state |
canAddColumn |
boolean |
true |
Show add column button |
canEditColumn |
boolean |
true |
Allow column editing |
canDeleteColumn |
boolean |
true |
Allow column deletion |
canAddCard |
boolean |
true |
Show add card button |
canEditCard |
boolean |
true |
Allow card editing |
canDeleteCard |
boolean |
true |
Allow card deletion |
canAddSwimlane |
boolean |
true |
Show add swimlane button |
forwardOnly |
boolean |
false |
Restrict cards to forward-only movement |
columnTitleKey |
string |
"title" |
Which column field to use as display title |
Events
| Event | Payload |
|---|---|
card-click |
KanbanCard |
card-move |
CardMoveEvent |
card-create / card-update / card-delete |
{ cardId, ... } |
column-move / column-create / column-update / column-delete |
{ columnId, ... } |
swimlane-create / swimlane-update / swimlane-delete |
{ swimlaneId, ... } |
Slots
board-header · column-header · add-column · card · column-title · column-actions · add-card · empty · card-form · column-form · swimlane-form
All column slots expose action functions (addCard, editColumn, deleteColumn, toggleCollapse) so you can call any action from any slot.
Form modal slots (card-form, column-form, swimlane-form) let you replace the built-in modals with your own custom forms. They expose isOpen, isEditing, save, and cancel props.
Theming
.my-board {
--jk-color-bg: #0f172a;
--jk-color-surface: #1e293b;
--jk-color-text: #f8fafc;
--jk-color-primary: #818cf8;
--jk-column-width: 320px;
}
See full theming guide for all 30+ CSS variables.
License
MIT
Related Packages
Lily Design System Vue 3 headless kanban board (pointer + keyboard-accessible ca...
Advanced and highly reusable Mobile UI Components built on Vue2 & You can define...
Version History
Pre-releases (7)
| Version | Released | Vue | License |
|---|---|---|---|
| 0.0.0-alpha.8 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.7 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.5 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.4 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.3 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.2 | ^2.7.0 || | MIT | |
| 0.0.0-alpha.1 | ^2.7.0 || | MIT |