"use client" import { useState } from "react" import { Star, Reply, Forward, MoreVertical, Printer, Trash2, Mail, Ban, ShieldAlert, Fish, Flag, SlidersHorizontal, Languages, Download, Code2, MessageCircleWarning, ChevronDown, TriangleAlert, } from "lucide-react" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip" import { cn } from "@/lib/utils" import { avatarColor, cleanSenderName, senderInitial } from "@/lib/sender-display" import { MailDateText } from "@/components/gmail/mail-date-text" import { ContactHoverCard } from "@/components/gmail/contact-hover-card" import { EmailViewDetailsPopover } from "@/components/gmail/email-view/email-view-details-popover" import type { MessageHeaderDetails } from "@/lib/mail-message-header-details" import { MAIL_ICON_BTN, MAIL_MENU_SURFACE_WIDE_CLASS, MAIL_TOOLTIP_CONTENT_CLASS, } from "@/lib/mail-chrome-classes" const MESSAGE_MORE_MENU_CLASS = MAIL_MENU_SURFACE_WIDE_CLASS const MENU_ICON_CLASS = "size-[18px] shrink-0 text-muted-foreground" export interface EmailViewMessageToolbarProps { sender: string senderEmail: string headerDetails: MessageHeaderDetails dateIso: string isSpam: boolean isLast: boolean starred: boolean onToggleStar?: () => void onCollapse?: () => void onPrintConversation?: () => void onReply?: () => void onForward?: () => void detailsOpen?: boolean onDetailsOpenChange?: (open: boolean) => void messageId: string } export function EmailViewMessageToolbar({ sender, senderEmail, headerDetails, dateIso, isSpam, isLast, starred, onToggleStar, onCollapse, onPrintConversation, onReply, onForward, detailsOpen, onDetailsOpenChange, messageId, }: EmailViewMessageToolbarProps) { const name = cleanSenderName(sender) const [internalDetailsOpen, setInternalDetailsOpen] = useState(false) const detailsIsOpen = detailsOpen ?? internalDetailsOpen const setDetailsIsOpen = onDetailsOpenChange ?? setInternalDetailsOpen return ( <>
{ setDetailsIsOpen(false) onCollapse?.() } : undefined } > {isSpam ? (
) : (
{senderInitial(name)}
)}
e.stopPropagation() : undefined} className="inline min-w-0 max-w-full align-baseline" > {name} {senderEmail ? ( <{senderEmail}> ) : null}
{onToggleStar ? ( ) : ( )} Répondre { onReply?.() }} > Répondre { onForward?.() }} > Transférer Supprimer Marquer comme non lus à partir d'ici Bloquer « {name} » Signaler comme spam Signaler comme hameçonnage Signaler un contenu illégal Filtrer les messages similaires Traduire { onPrintConversation?.() }} > Imprimer Télécharger le message Afficher l'original Partager pour aider à améliorer Google
) }