import { Avatar, AvatarFallback, AvatarImage, } from "@/registry/ui/avatar" import { Button } from "@/registry/ui/button" import { Calendar } from "@/registry/ui/calendar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/registry/ui/dropdown-menu" import { Label } from "@/registry/ui/label" import { Popover, PopoverContent, PopoverTrigger, } from "@/registry/ui/popover" import { ScrollArea } from "@/registry/ui/scroll-area" import { Separator } from "@/registry/ui/separator" import { Switch } from "@/registry/ui/switch" import { Textarea } from "@/registry/ui/textarea" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/registry/ui/tooltip" import { addDays, addHours, format, nextSaturday } from "date-fns" import DOMPurify from 'dompurify' import { Archive, ArchiveX, Clock, Forward, MoreVertical, Reply, ReplyAll, Trash2, } from "lucide-react" import { Mail } from "../data" interface MailDisplayProps { mail: Mail | null } export function MailDisplay({ mail }: MailDisplayProps) { const today = new Date() const sanitizeAndRenderHTML = (htmlContent: string) => { const cleanHTML = DOMPurify.sanitize(htmlContent, { ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'u', 'a', 'ul', 'ol', 'li', 'blockquote', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div'], ALLOWED_ATTR: ['href', 'target', 'class', 'style'], ALLOWED_URI_REGEXP: /^(?:(?:https?|mailto):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i }) return { __html: cleanHTML } } const renderEmailContent = (content: string) => { if (/<[a-z][\s\S]*>/i.test(content)) { return (
) } return (