Kanban Phase 5: UI Optimization
Overview
Optimize the desktop workspace kanban UI to match vibe-kanban's polished interface exactly, using our Viben Design System.
Reference Implementation
- Source:
/Users/lxy/Documents/GitHub/others/vibe-kanban/frontend/src/components - Key files:
tasks/TaskKanbanBoard.tsx,tasks/TaskCard.tsx,tasks/TaskCardHeader.tsx,ui/shadcn-io/kanban/index.tsx
Feature Specifications
F34: Column Layout Optimization
Goal: Match vibe-kanban's column grid layout and sticky header styling
Implementation:
- Use
auto-cols-[minmax(200px,400px)]for column sizing - Add
inline-grid grid-flow-collayout - Sticky headers with background gradient:
linear-gradient(hsl(var(${color}) / 0.03), hsl(var(${color}) / 0.03)) - Column separator with
divide-x border-x - Proper
min-h-full items-stretchfor full height columns
Location: @viben/kanban - Update KanbanProvider and KanbanHeader components
F35: Card UI Enhancement
Goal: Match vibe-kanban card styling with improved typography
Implementation:
- Card with
p-3 border-b flex-col space-y-2 - Title:
font-light text-sm line-clamp-2 - Description:
text-sm text-secondary-foregroundwith 130 char truncation - Selected card:
ring-2 ring-secondary-foreground ring-inset - Dragging state:
cursor-grabbingwith z-index 1000
Location: @viben/kanban - Update KanbanCard component
F36: Header Component Redesign
Goal: Match vibe-kanban's compact header with status dot
Implementation:
- Sticky header with
sticky top-0 z-20 - Status dot indicator:
h-2 w-2 rounded-fullwith column color - Compact add button:
variant="ghost"with tooltip - Border style:
border-b border-dashed - Background with column color tint
Location: @viben/kanban - Update KanbanHeader component
F37: TaskCardContent Redesign
Goal: Improve desktop card content layout to match vibe-kanban
Implementation:
- Header row with avatar + title + action icons
- Title with
line-clamp-2 font-light text-sm - Description truncation at 130 characters
- Status indicators (running spinner, failed icon)
- Parent task link button
Location: apps/desktop - Update TaskCardContent component
F38: Drag System Enhancement
Goal: Match vibe-kanban's smooth drag experience
Implementation:
- PointerSensor with
activationConstraint: { distance: 8 } rectIntersectioncollision detection- Custom
restrictToFirstScrollableAncestormodifier with right padding - Transform style:
translateX/Yfor smooth movement - Drop zone highlight:
outline-primarywhenisOver
Location: @viben/kanban - Update KanbanProvider and drag system
F39: Empty State Polish
Goal: Add polished empty states matching vibe-kanban
Implementation:
- Empty column indicator
- "No tasks" card with CTA button
- "No search results" message
- Consistent padding and spacing
Location: apps/desktop - Add empty state components
F40: Filter Bar Toolbar Enhancement
Goal: Improve toolbar layout and styling
Implementation:
- Toolbar with view switcher, separator, filter, separator, sort
- Consistent
h-6 w-px bg-borderseparators - Background:
bg-muted/30withborder-b - Responsive gap and flex-wrap
Location: apps/desktop - Update filter/sort bar layout
Build Verification
After all changes:
pnpm --filter @viben/kanban build
pnpm --filter @viben/desktop typecheck
Files to Modify
packages/kanban/src/kanban.tsx- Column layout, card, header updatesapps/desktop/src/pages/workspace-kanban.tsx- TaskCardContent, toolbar, empty statesapps/desktop/src/components/workspace/TaskDetailPanel.tsx- Panel styling if needed
Success Criteria
- Column layout matches vibe-kanban exactly
- Cards have proper typography and spacing
- Drag experience is smooth with correct constraints
- Empty states are polished
- All builds pass without errors