"use client"; import { Pencil } from "lucide-react"; import { cn } from "@/lib/utils"; import type { PlacementPostStatus } from "@/lib/types/api"; import { PLACEMENT_POST_STATUSES, getPlacementPostStatusIcon, getPlacementPostStatusColor, canEditPostStatus, } from "@/lib/config/placement-columns"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Button } from "@/components/ui/button"; interface PlacementPostStatusSelectorProps { status: PlacementPostStatus | null; isEditing: boolean; canEdit: boolean; onEdit: () => void; onChange: (status: PlacementPostStatus) => void; onCloseEdit: () => void; } export function PlacementPostStatusSelector({ status, isEditing, canEdit, onEdit, onChange, onCloseEdit, }: PlacementPostStatusSelectorProps) { if (!status) { return —; } const canEditThisStatus = canEdit && canEditPostStatus(status); const StatusIcon = getPlacementPostStatusIcon(status); const statusColor = getPlacementPostStatusColor(status); if (isEditing && canEditThisStatus) { return ( !open && onCloseEdit()}> {status} {PLACEMENT_POST_STATUSES.map((s) => { const Icon = getPlacementPostStatusIcon(s); const color = getPlacementPostStatusColor(s); const isSelected = s === status; return ( { onChange(s); onCloseEdit(); }} > {s} ); })} ); } return ( {status} {canEditThisStatus && } ); }