"use client" import { useRef } from "react" import { Plus, User, X } from "lucide-react" import { toast } from "sonner" import { ContactAvatar } from "@/components/gmail/contacts/contact-avatar" import { readAvatarFromFile } from "@/lib/contact-avatar" import { cn } from "@/lib/utils" import { CONTACTS_PAGE_AVATAR_ADD_BADGE_CLASS, CONTACTS_PAGE_AVATAR_PLACEHOLDER_LARGE_CLASS, CONTACTS_PANEL_AVATAR_PLACEHOLDER_CLASS, } from "@/lib/contacts-chrome-classes" interface ContactAvatarPickerProps { avatarUrl?: string displayName: string email?: string onChange: (avatarUrl: string | undefined) => void variant?: "panel" | "page" className?: string } export function ContactAvatarPicker({ avatarUrl, displayName, email, onChange, variant = "panel", className, }: ContactAvatarPickerProps) { const fileRef = useRef(null) const isPage = variant === "page" async function handleFileChange(e: React.ChangeEvent) { const file = e.target.files?.[0] e.target.value = "" if (!file) return try { const dataUrl = await readAvatarFromFile(file) onChange(dataUrl) } catch (err) { toast.error(err instanceof Error ? err.message : "Impossible d'ajouter la photo.") } } function openPicker() { fileRef.current?.click() } function removePhoto(e: React.MouseEvent) { e.stopPropagation() onChange(undefined) } const hasPhoto = !!avatarUrl || !!displayName return (
) }