"use client" import { useEffect, useMemo, useState } from "react" import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import type { FullContact } from "@/lib/contacts/types" import { CONTACT_BULK_EDIT_FIELDS, collectBulkFieldSuggestions, getContactBulkFieldValue, type ContactBulkEditField, } from "@/lib/contacts/bulk-edit-fields" import { CONTACTS_FIELD_CLASS, CONTACTS_MENU_SURFACE_CLASS, CONTACTS_MUTED_TEXT, CONTACTS_PRIMARY_BTN_CLASS, } from "@/lib/contacts-chrome-classes" import { cn } from "@/lib/utils" interface ContactsBulkEditDialogProps { open: boolean onOpenChange: (open: boolean) => void contacts: FullContact[] onApply: (field: ContactBulkEditField, value: string) => void isApplying?: boolean } export function ContactsBulkEditDialog({ open, onOpenChange, contacts, onApply, isApplying = false, }: ContactsBulkEditDialogProps) { const [field, setField] = useState("company") const [value, setValue] = useState("") const suggestions = useMemo( () => collectBulkFieldSuggestions(contacts, field), [contacts, field], ) const mixedValues = useMemo(() => { const values = new Set( contacts.map((c) => getContactBulkFieldValue(c, field)).filter(Boolean), ) return values.size > 1 }, [contacts, field]) useEffect(() => { if (!open) { setField("company") setValue("") return } if (suggestions.length === 1) { setValue(suggestions[0]!) } else { setValue("") } }, [open, field, suggestions]) const isNotes = field === "notes" const canApply = contacts.length > 0 function handleApply() { if (!canApply) return onApply(field, value) onOpenChange(false) } return ( Édition de masse

{contacts.length} contact{contacts.length > 1 ? "s" : ""} sélectionné {contacts.length > 1 ? "s" : ""}

{isNotes ? (