"use client"; import { ChevronDown, Columns3, List, Plus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { useModalStore } from "@/features/modals"; import { ALL_STATUSES, STATUS_CONFIG, PRIORITY_ORDER, PRIORITY_CONFIG, } from "@/features/issues/config"; import { StatusIcon, PriorityIcon } from "@/features/issues/components"; import { useIssueViewStore } from "@/features/issues/stores/view-store"; function formatFilterLabel( prefix: string, selected: string[], configMap: Record ) { if (selected.length === 0) return `${prefix}: All`; if (selected.length === 1) { const key = selected[0]; if (key) return `${prefix}: ${configMap[key]?.label ?? key}`; } return `${prefix}: ${selected.length} selected`; } export function IssuesHeader() { const viewMode = useIssueViewStore((s) => s.viewMode); const statusFilters = useIssueViewStore((s) => s.statusFilters); const priorityFilters = useIssueViewStore((s) => s.priorityFilters); const setViewMode = useIssueViewStore((s) => s.setViewMode); const toggleStatusFilter = useIssueViewStore((s) => s.toggleStatusFilter); const togglePriorityFilter = useIssueViewStore((s) => s.togglePriorityFilter); return (
{/* Status filter */} {formatFilterLabel("Status", statusFilters, STATUS_CONFIG)} } /> Status useIssueViewStore.setState({ statusFilters: [] }) } > All {ALL_STATUSES.map((s) => ( toggleStatusFilter(s)} > {STATUS_CONFIG[s].label} ))} {/* Priority filter */} {formatFilterLabel("Priority", priorityFilters, PRIORITY_CONFIG)} } /> Priority useIssueViewStore.setState({ priorityFilters: [] }) } > All {PRIORITY_ORDER.map((p) => ( togglePriorityFilter(p)} > {PRIORITY_CONFIG[p].label} ))}
{/* View toggle */} {viewMode === "board" ? : } } /> View setViewMode("board")}> Board setViewMode("list")}> List {/* New issue */}
); }