"use client"; import { AuditorFlag, FlagSeverity } from "@/types"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { HelpTip } from "@/components/ui/help-tip"; import { Eye, CheckCircle, Send, Clock } from "lucide-react"; import Link from "next/link"; interface FlaggedItemProps { flag: AuditorFlag; onResolve?: (flagId: string) => void; onReportToCeo?: (flag: AuditorFlag) => void; } const severityColors: Record = { [FlagSeverity.INFO]: "bg-blue-100 text-blue-700", [FlagSeverity.WARNING]: "bg-yellow-100 text-yellow-700", [FlagSeverity.URGENT]: "bg-red-100 text-red-700", }; const severityEmoji: Record = { [FlagSeverity.INFO]: "\uD83D\uDFE2", [FlagSeverity.WARNING]: "\uD83D\uDFE1", [FlagSeverity.URGENT]: "\uD83D\uDD34", }; function formatTime(timestamp: string): string { const date = new Date(timestamp); const now = new Date(); const diffMs = now.getTime() - date.getTime(); const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); if (diffHours < 1) return "< 1h ago"; if (diffHours < 24) return `${diffHours}h ago`; const diffDays = Math.floor(diffHours / 24); return `${diffDays}d ago`; } export function FlaggedItem({ flag, onResolve, onReportToCeo, }: FlaggedItemProps) { const isResolved = !!flag.resolved_at; return (
{severityEmoji[flag.severity]}
{flag.title} {flag.severity} {flag.category} {isResolved && ( Resolved )}

{flag.description}

{formatTime(flag.created_at)} {flag.related_task_id && ( Task #{flag.related_task_id.slice(0, 8)} )}
{!isResolved && (
{flag.related_task_id && ( )} {flag.severity === FlagSeverity.URGENT && ( )}
)}
); }