From 74871545c758af9ce0e8ecccda6a70c84d6c00a5 Mon Sep 17 00:00:00 2001 From: zenchantlive Date: Fri, 13 Feb 2026 12:35:17 -0800 Subject: [PATCH] Add epic filter to kanban board - Add epicId filter to KanbanFilterOptions - Filter issues by parent epic when epicId is set - Add epic dropdown to kanban controls with title-first format - Pass epics list from kanban page to controls --- src/components/kanban/kanban-controls.tsx | 16 ++++++++++++++++ src/components/kanban/kanban-page.tsx | 1 + src/lib/kanban.ts | 11 +++++++++++ 3 files changed, 28 insertions(+) diff --git a/src/components/kanban/kanban-controls.tsx b/src/components/kanban/kanban-controls.tsx index 8a8f511..9cb9d4c 100644 --- a/src/components/kanban/kanban-controls.tsx +++ b/src/components/kanban/kanban-controls.tsx @@ -3,12 +3,14 @@ import { motion } from 'framer-motion'; import type { KanbanFilterOptions, KanbanStats } from '../../lib/kanban'; +import type { BeadIssue } from '../../lib/types'; import { StatPill } from '../shared/stat-pill'; interface KanbanControlsProps { filters: KanbanFilterOptions; stats: KanbanStats; + epics: BeadIssue[]; onFiltersChange: (filters: KanbanFilterOptions) => void; onNextActionable: () => void; nextActionableFeedback?: string | null; @@ -17,6 +19,7 @@ interface KanbanControlsProps { export function KanbanControls({ filters, stats, + epics, onFiltersChange, onNextActionable, nextActionableFeedback = null, @@ -34,6 +37,19 @@ export function KanbanControls({ placeholder="Search by id/title/labels" className={`${inputClass} w-full sm:min-w-[18rem] sm:flex-1`} /> +