import { useState } from "react"; import { ArrowUp, ArrowDown, Minus, AlertTriangle } from "lucide-react"; import { cn } from "../lib/utils"; import { priorityColor, priorityColorDefault } from "../lib/status-colors"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; const priorityConfig: Record = { critical: { icon: AlertTriangle, color: priorityColor.critical ?? priorityColorDefault, label: "Critical" }, high: { icon: ArrowUp, color: priorityColor.high ?? priorityColorDefault, label: "High" }, medium: { icon: Minus, color: priorityColor.medium ?? priorityColorDefault, label: "Medium" }, low: { icon: ArrowDown, color: priorityColor.low ?? priorityColorDefault, label: "Low" }, }; const allPriorities = ["critical", "high", "medium", "low"]; interface PriorityIconProps { priority: string; onChange?: (priority: string) => void; className?: string; showLabel?: boolean; } export function PriorityIcon({ priority, onChange, className, showLabel }: PriorityIconProps) { const [open, setOpen] = useState(false); const config = priorityConfig[priority] ?? priorityConfig.medium!; const Icon = config.icon; const icon = ( ); if (!onChange) return showLabel ? {icon}{config.label} : icon; const trigger = showLabel ? ( ) : icon; return ( {trigger} {allPriorities.map((p) => { const c = priorityConfig[p]!; const PIcon = c.icon; return ( ); })} ); }