"use client"; import { useMemo } from "react"; import { ArrowDown, ArrowUp, ChevronDown, Columns3, Filter, List, Plus, SlidersHorizontal, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useIssueStore } from "@/features/issues/store"; import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { Popover, PopoverTrigger, PopoverContent, } from "@/components/ui/popover"; import { Switch } from "@/components/ui/switch"; 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, SORT_OPTIONS, CARD_PROPERTY_OPTIONS, } from "@/features/issues/stores/view-store"; export function IssuesHeader() { const viewMode = useIssueViewStore((s) => s.viewMode); const statusFilters = useIssueViewStore((s) => s.statusFilters); const priorityFilters = useIssueViewStore((s) => s.priorityFilters); const sortBy = useIssueViewStore((s) => s.sortBy); const sortDirection = useIssueViewStore((s) => s.sortDirection); const cardProperties = useIssueViewStore((s) => s.cardProperties); const setViewMode = useIssueViewStore((s) => s.setViewMode); const toggleStatusFilter = useIssueViewStore((s) => s.toggleStatusFilter); const togglePriorityFilter = useIssueViewStore((s) => s.togglePriorityFilter); const setSortBy = useIssueViewStore((s) => s.setSortBy); const setSortDirection = useIssueViewStore((s) => s.setSortDirection); const toggleCardProperty = useIssueViewStore((s) => s.toggleCardProperty); const clearFilters = useIssueViewStore((s) => s.clearFilters); const allIssues = useIssueStore((s) => s.issues); const filteredCount = useMemo(() => { return allIssues.filter((i) => { if (statusFilters.length > 0 && !statusFilters.includes(i.status)) return false; if ( priorityFilters.length > 0 && !priorityFilters.includes(i.priority) ) return false; return true; }).length; }, [allIssues, statusFilters, priorityFilters]); const sortLabel = SORT_OPTIONS.find((o) => o.value === sortBy)?.label ?? "Manual"; const hasActiveFilters = statusFilters.length > 0 || priorityFilters.length > 0; return (