"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3769],{12197:(e,s,t)=>{t.d(s,{a:()=>n});var a=t(91356);function n(){let[e,s]=a.useState(void 0);return a.useEffect(()=>{let e=window.matchMedia("(max-width: 767px)"),t=()=>{s(window.innerWidth<768)};return e.addEventListener("change",t),s(window.innerWidth<768),()=>e.removeEventListener("change",t)},[]),!!e}},13769:(e,s,t)=>{t.d(s,{d:()=>s1});var a=t(4208),n=t(91356),l=t(58113),r=t(12197),i=t(1022),c=t(93497),o=t(9519),d=t(12325),m=t(20911),u=t(20945),h=t(14410),x=t(66378),p=t(81847),f=t(61764),j=t(78606),b=t(78199),g=t(61554),v=t(51551),N=t(55883),y=t(80936),w=t(78699),C=t(95421),k=t(97053),S=t(45328),A=t(80964);function $({open:e,overlay:s,onToggle:t,onClose:r,currentView:E,activeLabelId:L,onNavigate:Y,onHome:R,onCreateContact:I,onBulkCreate:z,onSelectLabel:D}){let{contacts:T}=(0,y.D)(),F=(0,n.useDeferredValue)(T),V=(0,w.Y)(e=>e.ignoredMergePairs),{data:M}=(0,C.OH)(),P=(0,n.useMemo)(()=>F.length<2?0:(0,k.m6)(F,new Set(V)).length,[F,V]),{suggestions:B}=(0,C.kH)(),q=M?.other_contacts??0,O=M?.ignored??0,U=M?.blocked??0,K=P+B.length,X=(0,S.w)(e=>e.labelRows),Q=(0,S.w)(e=>e.addLabelRowFromSidebar),[W,G]=(0,n.useState)(""),[H,Z]=(0,n.useState)(!1),J=(0,n.useMemo)(()=>X.filter(e=>!1!==e.enabled).map(e=>({label:e,count:T.filter(s=>s.labels?.includes(e.id)).length})).sort((e,s)=>s.count-e.count||e.label.label.localeCompare(s.label.label,"fr")),[X,T]);function ee(){let e=W.trim();e&&(Q(e),G(""),Z(!1))}return s||e?(0,a.jsxs)("aside",{className:(0,l.cn)(N.Ml,s?(0,l.cn)("fixed inset-y-0 left-0 z-50 shadow-xl",e?"translate-x-0":"-translate-x-full pointer-events-none"):"relative"),"aria-hidden":s&&!e,children:[(0,a.jsxs)("div",{className:"flex h-16 items-center gap-2 px-4",children:[(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:"h-10 w-10 rounded-full text-muted-foreground hover:bg-accent",onClick:function(){s&&e?r():t()},"aria-label":e?"Fermer le menu":"Ouvrir le menu",children:(0,a.jsx)(i.A,{className:"h-5 w-5"})}),(0,a.jsx)(A.L,{onClick:R??(()=>Y("contacts"))})]}),(0,a.jsx)("div",{className:"px-3 pb-3",children:(0,a.jsxs)(v.rI,{children:[(0,a.jsx)(v.ty,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",className:N.NY,children:[(0,a.jsx)(c.A,{className:"h-5 w-5 text-primary"}),(0,a.jsx)("span",{className:N.GW,children:"Cr\xe9er un contact"}),(0,a.jsx)(o.A,{className:(0,l.cn)("h-4 w-4",N.av)})]})}),(0,a.jsxs)(v.SQ,{align:"start","data-contacts-menu-surface":!0,className:(0,l.cn)("w-56",N.XF),children:[(0,a.jsxs)(v._2,{onClick:I,children:[(0,a.jsx)(d.A,{className:"mr-2 h-4 w-4"}),"Cr\xe9er un contact"]}),(0,a.jsxs)(v._2,{onClick:z,children:[(0,a.jsx)(m.A,{className:"mr-2 h-4 w-4"}),"Cr\xe9er plusieurs contacts"]})]})]})}),(0,a.jsxs)("nav",{className:"flex-1 overflow-y-auto px-2",children:[(0,a.jsx)(_,{icon:(0,a.jsx)(m.A,{className:"h-5 w-5"}),label:"Contacts",count:T.length,active:"contacts"===E,onClick:()=>Y("contacts")}),(0,a.jsx)(_,{icon:(0,a.jsx)(u.A,{className:"h-5 w-5"}),label:"Fr\xe9quents",active:"frequent"===E,onClick:()=>Y("frequent")}),(0,a.jsx)(_,{icon:(0,a.jsx)(d.A,{className:"h-5 w-5"}),label:"Autres contacts",badge:q>0?q:void 0,active:"other"===E,onClick:()=>Y("other")}),(0,a.jsx)(_,{icon:(0,a.jsx)(h.A,{className:"h-5 w-5"}),label:"Bloqu\xe9s",count:U>0?U:void 0,active:"blocked"===E,onClick:()=>Y("blocked")}),(0,a.jsx)(_,{icon:(0,a.jsx)(x.A,{className:"h-5 w-5"}),label:"Ignor\xe9s",count:O>0?O:void 0,active:"ignored"===E,onClick:()=>Y("ignored")}),(0,a.jsx)("div",{className:"my-2 border-t border-border"}),(0,a.jsx)("p",{className:(0,l.cn)("px-3 py-2 text-xs font-medium",N.YS),children:"Corriger et g\xe9rer"}),(0,a.jsx)(_,{icon:(0,a.jsx)(p.A,{className:"h-5 w-5"}),label:"Fusionner et corriger",badge:K>0?K:void 0,active:"merge"===E,onClick:()=>Y("merge")}),(0,a.jsx)(_,{icon:(0,a.jsx)(f.A,{className:"h-5 w-5"}),label:"Importer",active:"import"===E,onClick:()=>Y("import")}),(0,a.jsx)(_,{icon:(0,a.jsx)(j.A,{className:"h-5 w-5"}),label:"Corbeille",active:"trash"===E,onClick:()=>Y("trash")}),(0,a.jsx)("div",{className:"my-2 border-t border-border"}),(0,a.jsxs)("div",{className:"flex items-center gap-3 px-3 py-2",children:[(0,a.jsx)("p",{className:(0,l.cn)("min-w-0 flex-1 text-xs font-medium",N.YS),children:"Libell\xe9s"}),(0,a.jsx)("div",{className:"flex w-6 shrink-0 justify-center",children:(0,a.jsx)("button",{type:"button",onClick:()=>Z(!0),className:"rounded-full p-1 text-muted-foreground hover:bg-accent","aria-label":"Ajouter un libell\xe9",children:(0,a.jsx)(c.A,{className:"h-4 w-4"})})})]}),H&&(0,a.jsxs)("div",{className:"flex items-center gap-1 px-3 pb-2",children:[(0,a.jsx)("input",{type:"text",value:W,onChange:e=>G(e.target.value),onKeyDown:e=>"Enter"===e.key&&ee(),placeholder:"Nom du libell\xe9",className:(0,l.cn)("flex-1",N.Qn),autoFocus:!0}),(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:ee,children:(0,a.jsx)(c.A,{className:"h-4 w-4"})})]}),J.map(({label:e,count:s})=>(0,a.jsx)(_,{icon:(0,a.jsx)(b.A,{className:"h-5 w-5"}),label:e.label,count:s,active:"label"===E&&L===e.id,onClick:()=>D?.(e.id)},e.id))]})]}):null}function _({icon:e,label:s,count:t,badge:n,active:r,onClick:i}){return(0,a.jsxs)("button",{type:"button",onClick:i,className:(0,l.cn)("flex w-full items-center gap-3 rounded-full px-3 py-2 text-sm transition-colors",r?N.Qo:N.vK),children:[(0,a.jsx)("span",{className:r?"text-mail-nav-selected":N.av,children:e}),(0,a.jsx)("span",{className:"flex-1 truncate text-left",children:s}),void 0!==n&&(0,a.jsx)("span",{className:"flex h-5 min-w-5 items-center justify-center rounded-full bg-[#ea4335] px-1.5 text-[11px] font-medium text-white",children:n}),void 0!==t&&(0,a.jsx)("span",{className:(0,l.cn)("flex w-6 shrink-0 justify-center text-xs tabular-nums",N.YS),children:t})]})}var E=t(30957),L=t(12551),Y=t(88477),R=t(49845);function I({searchQuery:e,onSearchChange:s,sidebarOpen:t,onOpenSidebar:n}){return(0,a.jsxs)("header",{className:"flex h-16 shrink-0 items-center gap-2 border-b border-border bg-mail-surface px-3 sm:gap-4 sm:px-6",children:[!t&&(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-10 w-10 shrink-0 rounded-full",N.o7),onClick:n,"aria-label":"Ouvrir le menu",children:(0,a.jsx)(i.A,{className:"h-5 w-5"})}),(0,a.jsx)("div",{className:"flex min-w-0 flex-1 items-center",children:(0,a.jsxs)("div",{className:N.sV,children:[(0,a.jsx)(E.A,{className:"h-5 w-5 shrink-0 text-muted-foreground"}),(0,a.jsx)("input",{type:"text",value:e,onChange:e=>s(e.target.value),placeholder:"Rechercher",className:N.xu}),e&&(0,a.jsx)("button",{type:"button",onClick:()=>s(""),className:"rounded-full p-1 hover:bg-accent","aria-label":"Effacer la recherche",children:(0,a.jsx)(L.A,{className:"h-4 w-4 text-muted-foreground"})})]})}),(0,a.jsx)(Y._,{className:"shrink-0 pl-1 sm:pl-4",settingsHref:`${R.gH}/accounts`})]})}var z=t(5312),D=t(43786),T=t(5675),F=t(71809),V=t(65879),M=t(30925),P=t(2395),B=t(57669),q=t(7651);function O(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function U(e){return e.replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\n/g,"\\n")}function K(e){return/[",\n\r]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function X(e){let s=["BEGIN:VCARD","VERSION:3.0"],t=e.lastName??"",a=e.firstName??"",n=e.middleName??"",l=e.namePrefix??"",r=e.nameSuffix??"";s.push(`N:${U(t)};${U(a)};${U(n)};${U(l)};${U(r)}`);let i=(0,q.t)(e)||e.emails[0]?.value||e.phones[0]?.value;for(let t of(i&&s.push(`FN:${U(i)}`),e.emails))t.value.trim()&&s.push(`EMAIL;TYPE=${U(t.label||"INTERNET")}:${U(t.value.trim())}`);for(let t of e.phones)t.value.trim()&&s.push(`TEL;TYPE=${U(t.label||"VOICE")}:${U(t.value.trim())}`);if(e.company?.trim()){let t=e.jobTitle?.trim()?`${U(e.company.trim())};${U(e.jobTitle.trim())}`:U(e.company.trim());s.push(`ORG:${t}`)}else e.jobTitle?.trim()&&s.push(`TITLE:${U(e.jobTitle.trim())}`);if(e.department?.trim()&&s.push(`X-ABLabel:${U(e.department.trim())}`),e.birthday?.month&&e.birthday?.day){let t=e.birthday.year??1900,a=String(e.birthday.month).padStart(2,"0"),n=String(e.birthday.day).padStart(2,"0");s.push(`BDAY:${t}${a}${n}`)}return e.notes?.trim()&&s.push(`NOTE:${U(e.notes.trim())}`),s.push("END:VCARD"),s.join("\r\n")}function Q(e,s,t){let a=new Blob([e],{type:t}),n=URL.createObjectURL(a),l=document.createElement("a");l.href=n,l.download=s,l.click(),URL.revokeObjectURL(n)}var W=t(83984);let G={checkbox:"40px",name:"minmax(0px, 2fr)",email:"minmax(0px, 2fr)",phone:"minmax(0px, 1.5fr)",job:"minmax(0px, 1.5fr)",labels:"minmax(0px, 1fr)"},H=["checkbox","name"],Z={name:"Nom",email:"E-mail",phone:"Num\xe9ro de t\xe9l\xe9phone",job:"Fonction et entreprise",labels:"Libell\xe9s"};function J(e,s){return e.includes(s)}var ee=t(56630),es=t(35019),et=t(68183),ea=t(84834),en=t(13746),el=t(20848);function er({checked:e}){return(0,a.jsx)("span",{"aria-hidden":!0,className:(0,l.cn)("pointer-events-none inline-flex size-4 shrink-0 items-center justify-center rounded-[2.5px] border-[1.5px] border-[#c2c2c2] bg-transparent",!0===e&&"border-[#0b57d0] bg-[#0b57d0] text-white","indeterminate"===e&&"border-[#0b57d0] bg-[#0b57d0] text-white"),children:!0===e?(0,a.jsx)(es.A,{className:"size-3 stroke-[2.5] text-white"}):"indeterminate"===e?(0,a.jsx)(et.A,{className:"size-3 stroke-[2.5] text-white"}):null})}function ei({query:e,onQueryChange:s,labelRows:t,resolveLabelVisual:r,Item:i,getLabelPresence:o,onToggleLabel:d,onCreateLabel:m,listClassName:u,searchAutoFocus:h=!0}){let x=(0,n.useRef)(null);(0,n.useLayoutEffect)(()=>{if(!h)return;let e=0,s=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>{x.current?.focus({preventScroll:!0})})});return()=>{cancelAnimationFrame(s),e&&cancelAnimationFrame(e)}},[h]);let p=e.trim().toLowerCase(),f=t.filter(e=>!1!==e.enabled),j=f.filter(e=>0===p.length||e.label.toLowerCase().includes(p)),b=e.trim(),g=f.some(e=>e.label.toLowerCase()===b.toLowerCase()),v=b.length>0&&!g;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"shrink-0 border-b border-[#eceff1] p-2",onPointerDown:e=>e.stopPropagation(),children:(0,a.jsx)(en.p,{ref:x,value:e,onChange:e=>s(e.target.value),placeholder:"Rechercher ou cr\xe9er un libell\xe9…","aria-label":"Rechercher ou cr\xe9er un libell\xe9",className:"h-8 border-[#dadce0] text-sm shadow-none",autoComplete:"off",onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation()})}),(0,a.jsxs)("div",{className:(0,l.cn)("min-h-0 overflow-y-auto py-1",u??"max-h-52"),children:[v?(0,a.jsxs)(i,{onSelect:e=>{e.preventDefault(),m(b)},children:[(0,a.jsx)(c.A,{className:"size-[18px] shrink-0 text-[#0b57d0]",strokeWidth:1.5}),(0,a.jsxs)("span",{className:"min-w-0 flex-1 text-[#0b57d0]",children:["Cr\xe9er le libell\xe9 \xab ",b," \xbb"]})]}):null,j.map(e=>{let s=o(e.id);return(0,a.jsxs)(i,{onSelect:s=>{s.preventDefault(),d(e.id)},children:[(0,a.jsx)(er,{checked:"all"===s||"some"===s&&"indeterminate"}),e.icon?(0,a.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center",children:(0,a.jsx)(ea.In,{icon:e.icon,className:"size-[18px] shrink-0 text-[#5f6368]","aria-hidden":!0})}):(0,a.jsx)(el.b,{visual:r(e.id)}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.label})]},e.id)}),0!==j.length||v?null:(0,a.jsx)("div",{className:"px-3 py-2 text-sm text-[#5f6368]",children:"Aucun libell\xe9 correspondant"})]})]})}var ec=t(18166),eo=t(84956),ed=t(89342);let em=[{id:"company",label:"Entreprise"},{id:"department",label:"Service"},{id:"jobTitle",label:"Poste"},{id:"website",label:"Site web"},{id:"notes",label:"Notes"}];function eu(e,s){let t=e[s];return"string"==typeof t?t.trim():""}function eh({open:e,onOpenChange:s,contacts:t,onApply:r,isApplying:i=!1}){let[c,o]=(0,n.useState)("company"),[d,m]=(0,n.useState)(""),u=(0,n.useMemo)(()=>(function(e,s){let t=new Set,a=[];for(let n of e){let e=eu(n,s);if(!e)continue;let l=e.toLowerCase();t.has(l)||(t.add(l),a.push(e))}return a.sort((e,s)=>e.localeCompare(s,"fr"))})(t,c),[t,c]),h=(0,n.useMemo)(()=>new Set(t.map(e=>eu(e,c)).filter(Boolean)).size>1,[t,c]);(0,n.useEffect)(()=>{if(!e){o("company"),m("");return}1===u.length?m(u[0]):m("")},[e,c,u]);let x="notes"===c,p=t.length>0;return(0,a.jsx)(ec.lG,{open:e,onOpenChange:s,children:(0,a.jsxs)(ec.Cf,{className:"sm:max-w-md",children:[(0,a.jsxs)(ec.c7,{children:[(0,a.jsx)(ec.L3,{children:"\xc9dition de masse"}),(0,a.jsxs)("p",{className:(0,l.cn)("text-sm",N.YS),children:[t.length," contact",t.length>1?"s":""," s\xe9lectionn\xe9",t.length>1?"s":""]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-foreground",children:"Propri\xe9t\xe9"}),(0,a.jsxs)(ed.l6,{value:c,onValueChange:e=>o(e),children:[(0,a.jsx)(ed.bq,{className:N.Qn,children:(0,a.jsx)(ed.yv,{})}),(0,a.jsx)(ed.gC,{"data-contacts-menu-surface":!0,className:N.XF,children:em.map(e=>(0,a.jsx)(ed.eb,{value:e.id,children:e.label},e.id))})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-foreground",children:"Nouvelle valeur"}),x?(0,a.jsx)(eo.T,{value:d,onChange:e=>m(e.target.value),placeholder:h?"Valeurs mixtes dans la s\xe9lection…":"Notes…",className:(0,l.cn)(N.Qn,"min-h-24 resize-y")}):(0,a.jsx)(en.p,{value:d,onChange:e=>m(e.target.value),placeholder:h?"Valeurs mixtes dans la s\xe9lection…":"Nouvelle valeur…",className:N.Qn})]}),u.length>0&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:"Valeurs pr\xe9sentes dans la s\xe9lection"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:u.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>m(e),className:(0,l.cn)("max-w-full truncate rounded-full border border-border px-2.5 py-1 text-xs text-foreground transition-colors hover:bg-muted",d===e&&"border-primary bg-primary/10"),children:e},e))})]})]}),(0,a.jsxs)(ec.Es,{children:[(0,a.jsx)(g.$,{type:"button",variant:"outline",onClick:()=>s(!1),children:"Annuler"}),(0,a.jsx)(g.$,{type:"button",className:N.NC,disabled:!p||i,onClick:function(){p&&(r(c,d),s(!1))},children:"Appliquer"})]})]})})}var ex=t(84417),ep=t(45800);function ef({open:e,onOpenChange:s,contacts:t,onMerge:r,isMerging:i=!1}){let c=(0,n.useMemo)(()=>(0,ep.SP)(t),[t]),[o,d]=(0,n.useState)(c?.id??"");(0,n.useEffect)(()=>{e&&d(c?.id??t[0]?.id??"")},[e,c,t]);let m=(0,n.useMemo)(()=>o?(0,ep.B6)(t,o):null,[t,o]),u=t.length>=2&&!!o&&!!m?.primary.etag;return(0,a.jsx)(ec.lG,{open:e,onOpenChange:s,children:(0,a.jsxs)(ec.Cf,{className:"sm:max-w-md",children:[(0,a.jsxs)(ec.c7,{children:[(0,a.jsx)(ec.L3,{children:"Fusionner les contacts"}),(0,a.jsxs)("p",{className:(0,l.cn)("text-sm",N.YS),children:[t.length," contacts s\xe9lectionn\xe9s → 1 contact. Les autres seront supprim\xe9s apr\xe8s fusion."]})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Contact principal"}),(0,a.jsx)(ex.z,{value:o,onValueChange:d,className:"gap-2",children:t.map(e=>{let s=(0,q.t)(e)||e.emails[0]?.value||e.phones[0]?.value||"Contact sans nom";return(0,a.jsxs)("label",{className:(0,l.cn)("flex cursor-pointer items-center gap-3 rounded-lg border border-border px-3 py-2 transition-colors hover:bg-muted/50",o===e.id&&"border-primary bg-primary/5"),children:[(0,a.jsx)(ex.C,{value:e.id,id:`merge-primary-${e.id}`}),(0,a.jsx)(W.q,{contact:e,size:"xs"}),(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block truncate text-sm text-foreground",children:s}),e.emails[0]?.value&&(0,a.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.emails[0].value})]})]},e.id)})}),m&&(0,a.jsxs)("div",{className:(0,l.cn)("rounded-lg border border-border px-3 py-2 text-sm",N.YS),children:[(0,a.jsx)("p",{className:"font-medium text-foreground",children:"R\xe9sultat fusionn\xe9"}),(0,a.jsxs)("ul",{className:"mt-1.5 space-y-0.5",children:[(0,a.jsxs)("li",{children:[m.merged.emails.length," e-mail",m.merged.emails.length>1?"s":""]}),(0,a.jsxs)("li",{children:[m.merged.phones.length," t\xe9l\xe9phone",m.merged.phones.length>1?"s":""]}),(m.merged.labels?.length??0)>0&&(0,a.jsxs)("li",{children:[m.merged.labels.length," libell\xe9",m.merged.labels.length>1?"s":""]})]})]}),!m?.primary.etag&&(0,a.jsx)("p",{className:"text-sm text-destructive",children:"Version du contact principal inconnue. Rechargez la liste avant de fusionner."})]}),(0,a.jsxs)(ec.Es,{children:[(0,a.jsx)(g.$,{type:"button",variant:"outline",onClick:()=>s(!1),children:"Annuler"}),(0,a.jsx)(g.$,{type:"button",className:N.NC,disabled:!u||i,onClick:()=>r(o),children:"Fusionner"})]})]})})}var ej=t(39927),eb=t(89032),eg=t(83233),ev=t(38584),eN=t(29491),ey=t(10165),ew=t(84398);function eC(e,s){return e.labels?.includes(s)??!1}let ek=["name","email","phone","job","labels"];function eS({view:e,searchQuery:s,activeLabelId:t,onOpenContact:r}){let i,c,o,d,m,u,x,p,f,C,k,A,{visibleColumns:$,columnLabels:_}=function(){let[e,s]=(0,n.useState)(H);return(0,n.useLayoutEffect)(()=>{let e=()=>{var e;let t;return s((e=window.innerWidth,t=["checkbox","name"],e>=640&&t.push("email"),e>=768&&t.push("phone"),e>=1024&&t.push("job","labels"),t))};e();let t=window.matchMedia("(min-width: 640px)"),a=window.matchMedia("(min-width: 768px)"),n=window.matchMedia("(min-width: 1024px)");return t.addEventListener("change",e),a.addEventListener("change",e),n.addEventListener("change",e),()=>{t.removeEventListener("change",e),a.removeEventListener("change",e),n.removeEventListener("change",e)}},[]),{visibleColumns:e,columnLabels:Z}}(),E={gridTemplateColumns:$.map(e=>G[e]).join(" ")},{contacts:L,bookId:Y,isLoading:R,isError:I,error:U,refetch:W}=(0,y.D)(),es=(0,w.Y)(e=>e.softDeleteContact),et=(0,P.d0)(),ea=(0,P.QW)(),[en,el]=(0,n.useState)(()=>new Set),[er,ec]=(0,n.useState)(""),[eo,ed]=(0,n.useState)(!1),[em,eu]=(0,n.useState)(!1),ex=(0,n.useRef)(null),{getLabelPresence:ep,toggleLabelOnContacts:e_,createAndApplyLabel:eE,blockContacts:eL,applyBulkField:eY,resolveLabelVisualById:eR,isUpdating:eI}=(i=(0,ej.jE)(),c=(0,P.LU)(),o=(0,ew.j)(e=>e.blockSenders),d=(0,S.w)(e=>e.labelRows),m=(0,S.w)(e=>e.addLabelRowFromSidebar),u=(0,n.useCallback)(async e=>{let s=(0,ev.RK)(i,e);if(s.etag)return s;let t=(0,ey.Y)(s);try{let e=await (0,eN.JH)(t);(0,ev.Ce)(i,t,e),s=(0,ev.RK)(i,{...s,etag:e.etag,path:e.path??s.path})}catch{return null}return s.etag?s:null},[i]),x=(0,n.useCallback)(async(e,s)=>{let t=await u(e);if(!t?.etag)return!1;let a=(0,ev.oM)(i,t),n=(0,eg._l)(a,t,{bulkField:s?.bulkField,bulkValue:s?.bulkValue,patchLabels:s?.patchLabels});return await c.mutateAsync({path:(0,ey.Y)(t),etag:t.etag,contact:n,skipInvalidation:s?.skipInvalidation}),!0},[i,u,c]),p=(0,n.useCallback)((e,s)=>{if(0===e.length)return"none";let t=0;for(let a of e)eC(a,s)&&t++;return 0===t?"none":t===e.length?"all":"some"},[]),f=(0,n.useCallback)(async(e,s,t)=>{let a=0,n=0,l=0;for(let r of e){let e=s((0,ev.RK)(i,r));try{await x(e,{...t,skipInvalidation:!0})?l++:a++}catch{n++}}return await i.invalidateQueries({queryKey:["contacts"]}),{skipped:a,failed:n,updated:l}},[x,i]),C=(0,n.useCallback)(async(e,s)=>{if(0===e.length)return;let t="all"!==p(e,s),a=e.filter(e=>{let a=eC(e,s);return t?!a:a}),{skipped:n,failed:l,updated:r}=await f(a,e=>{let a,n;return a=e.labels??[],n=t?a.includes(s)?a:[...a,s]:a.filter(e=>e!==s),{...e,labels:n.length?n:void 0,updatedAt:Date.now()}},{patchLabels:!0});(0!==r||0!==n||0!==l)&&(l>0&&eb.oR.error(`${l} mise${l>1?"s":""} \xe0 jour \xe9chou\xe9e${l>1?"s":""}`),n>0&&eb.oR.warning(`${n} contact${n>1?"s":""} ignor\xe9${n>1?"s":""} (version inconnue)`))},[p,f]),k=(0,n.useCallback)(async(e,s)=>{m(s);let t=S.w.getState().labelRows.find(e=>e.label.toLowerCase()===s.trim().toLowerCase());t&&await C(e,t.id)},[m,C]),A=(0,n.useCallback)(e=>{let s=e.flatMap(e=>e.emails.map(e=>e.value)).filter(Boolean);0===s.length?eb.oR.error("Aucune adresse e-mail \xe0 bloquer dans la s\xe9lection"):(o(s),eb.oR.success(`${s.length} adresse${s.length>1?"s":""} bloqu\xe9e${s.length>1?"s":""}`))},[o]),{getLabelPresence:p,toggleLabelOnContacts:C,createAndApplyLabel:k,blockContacts:A,applyBulkField:(0,n.useCallback)(async(e,s,t)=>{let a=e.map(e=>{let a;return a=t.trim(),{...e,[s]:a||void 0,updatedAt:Date.now()}}),{skipped:n,failed:l,updated:r}=await f(a,e=>e,{bulkField:s,bulkValue:t});r>0&&eb.oR.success(`${r} contact${r>1?"s":""} mis \xe0 jour`),l>0&&eb.oR.error(`${l} mise${l>1?"s":""} \xe0 jour \xe9chou\xe9e${l>1?"s":""}`),n>0&&eb.oR.warning(`${n} contact${n>1?"s":""} ignor\xe9${n>1?"s":""} (version inconnue)`)},[f]),resolveLabelVisualById:(0,n.useCallback)(e=>{let s=d.find(s=>s.id===e);return s?.icon?{kind:"iconify",icon:s.icon}:s?.color?{kind:"dot",colorClass:s.color}:{kind:"dot",colorClass:"bg-gray-400"}},[d]),isUpdating:c.isPending}),ez=(0,n.useMemo)(()=>{let a=L;return"frequent"===e?a=[...L].filter(e=>(e.interactionCount??0)>0).sort((e,s)=>(s.interactionCount??0)-(e.interactionCount??0)):"other"===e?a=L.filter(e=>!0===e.isOtherContact):"label"===e&&t&&(a=L.filter(e=>e.labels?.includes(t))),s.trim()?a=(0,B.w)(a,s):"frequent"!==e&&(a=[...a].sort((e,s)=>{let t=(0,q.t)(e)||e.emails[0]?.value||"",a=(0,q.t)(s)||s.emails[0]?.value||"";return t.localeCompare(a,"fr")})),a},[L,e,s,t]),eD=(0,n.useMemo)(()=>new Set(ez.map(e=>e.id)),[ez]),eT=(0,n.useMemo)(()=>ez.map(e=>e.id),[ez]),eF=(0,n.useMemo)(()=>ez.filter(e=>en.has(e.id)),[ez,en]),eV=eF.length,eM=ez.length>0&&ez.every(e=>en.has(e.id)),eP=ez.some(e=>en.has(e.id))&&!eM;(0,n.useEffect)(()=>{el(new Set),ex.current=null},[e,t]),(0,n.useEffect)(()=>{el(e=>{let s=new Set([...e].filter(e=>eD.has(e)));return s.size===e.size?e:s})},[eD]);let eB=(0,S.w)(e=>e.labelRows),eq=(0,n.useMemo)(()=>eB.filter(e=>!1!==e.enabled),[eB]),eO=t?eB.find(e=>e.id===t)?.label:null,eU="frequent"===e?"Contacts fr\xe9quents":"other"===e?"Autres contacts":"label"===e&&eO?eO:`Contacts (${L.length})`;function eK(e){let s=ex.current;null==s?el(new Set([e])):function(e,s){let t=eT.indexOf(e),a=eT.indexOf(s);if(-1===t||-1===a)return;let n=Math.min(t,a),l=Math.max(t,a);el(new Set(eT.slice(n,l+1)))}(s,e),ex.current=e}function eX(e){e?(el(new Set(ez.map(e=>e.id))),ex.current=ez[0]?.id??null):(el(new Set),ex.current=null)}return(0,a.jsxs)("div",{className:"px-3 py-4 sm:px-6",children:[(0,a.jsxs)("div",{className:N.rb,children:[(0,a.jsxs)("div",{className:N.oz,children:[(0,a.jsx)("h1",{className:(0,l.cn)("min-w-0 flex-1 truncate text-xl font-normal sm:text-2xl",N.NS),children:eU}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[eV>0&&(0,a.jsxs)("span",{"aria-live":"polite",className:(0,l.cn)("mr-1 hidden text-sm whitespace-nowrap sm:inline",N.YS),children:[eV," s\xe9lectionn\xe9",eV>1?"s":""]}),eV>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(g.$,{type:"button",variant:"ghost",size:"sm",className:(0,l.cn)("hidden h-9 rounded-full px-3 sm:inline-flex",N.o7),onClick:()=>ed(!0),children:[(0,a.jsx)(z.A,{className:"mr-1.5 h-4 w-4"}),"\xc9dition de masse"]}),(0,a.jsxs)(g.$,{type:"button",variant:"ghost",size:"sm",className:(0,l.cn)("hidden h-9 rounded-full px-3 sm:inline-flex",N.o7),disabled:eV<2,onClick:()=>eu(!0),children:[(0,a.jsx)(D.A,{className:"mr-1.5 h-4 w-4"}),"Fusionner"]}),(0,a.jsxs)(v.rI,{onOpenChange:e=>{e||ec("")},children:[(0,a.jsx)(v.ty,{asChild:!0,children:(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-9 w-9 rounded-full",N.o7),"aria-label":"Ajouter ou retirer des libell\xe9s",children:(0,a.jsx)(b.A,{className:"h-5 w-5"})})}),(0,a.jsx)(v.SQ,{align:"end","data-contacts-menu-surface":!0,className:(0,l.cn)(N.XF,"flex max-h-72 min-w-[260px] flex-col overflow-hidden p-0 py-0"),children:(0,a.jsx)(ei,{query:er,onQueryChange:ec,labelRows:eq,resolveLabelVisual:eR,Item:v._2,getLabelPresence:e=>ep(eF,e),onToggleLabel:e=>e_(eF,e),onCreateLabel:e=>{eE(eF,e),ec("")}})})]})]}),(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-9 w-9 rounded-full",N.o7),onClick:()=>(function(e,s="Contacts"){let t=e.map(e=>{let s=O((0,q.t)(e)||e.emails[0]?.value||e.phones[0]?.value||"—"),t=O(e.emails[0]?.value??""),a=O(e.phones[0]?.value??""),n=O([e.jobTitle,e.company].filter(Boolean).join(", "));return`${s}${t}${a}${n}`}).join(""),a=` ${O(s)}

${O(s)} (${e.length})

${t}
Nom E-mail T\xe9l\xe9phone Fonction et entreprise
`,n=window.open("","_blank","noopener,noreferrer");n?(n.document.write(a),n.document.close(),n.focus(),n.onload=()=>{n.print()},setTimeout(()=>n.print(),250)):window.alert("Impossible d'ouvrir la fen\xeatre d'impression. V\xe9rifiez les pop-ups bloqu\xe9es.")})(ez,eU),"aria-label":"Imprimer",children:(0,a.jsx)(T.A,{className:"h-5 w-5"})}),(0,a.jsxs)(v.rI,{children:[(0,a.jsx)(v.ty,{asChild:!0,children:(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-9 w-9 rounded-full disabled:opacity-40",N.o7),disabled:0===eV,"aria-label":"Exporter la s\xe9lection",children:(0,a.jsx)(F.A,{className:"h-5 w-5"})})}),(0,a.jsxs)(v.SQ,{align:"end","data-contacts-menu-surface":!0,className:(0,l.cn)("w-52",N.XF),children:[(0,a.jsx)(v._2,{onClick:function(){if(0===eV)return;let e=1===eV?`${eA(eF[0])}.vcf`:"contacts.vcf";!function(e,s="contacts.vcf"){Q(e.map(X).join("\r\n"),s,"text/vcard;charset=utf-8")}(eF,e)},children:"Exporter au format vCard (.vcf)"}),(0,a.jsx)(v._2,{onClick:function(){if(0===eV)return;let e=1===eV?`${eA(eF[0])}.csv`:"contacts.csv";!function(e,s="contacts.csv"){Q(["Name,Email,Phone,Company,Job Title,Notes",...e.map(e=>[(0,q.t)(e),e.emails.map(e=>e.value).join("; "),e.phones.map(e=>e.value).join("; "),e.company??"",e.jobTitle??"",e.notes??""].map(K).join(","))].join("\r\n"),s,"text/csv;charset=utf-8")}(eF,e)},children:"Exporter au format CSV (.csv)"})]})]}),(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-9 w-9 rounded-full disabled:opacity-40",N.o7),disabled:0===eV,onClick:function(){if(0!==eV){for(let e of eF)es(e,"Supprim\xe9 manuellement"),et.mutate({path:e.id});el(new Set)}},"aria-label":"Supprimer la s\xe9lection",children:(0,a.jsx)(j.A,{className:"h-5 w-5"})}),(0,a.jsxs)(v.rI,{children:[(0,a.jsx)(v.ty,{asChild:!0,children:(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-9 w-9 rounded-full",N.o7),"aria-label":"Plus d'actions",children:(0,a.jsx)(V.A,{className:"h-5 w-5"})})}),(0,a.jsxs)(v.SQ,{align:"end","data-contacts-menu-surface":!0,className:(0,l.cn)("w-56 overflow-visible",N.XF),children:[eV>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(v.lv,{children:[(0,a.jsxs)(v.nV,{className:"[&>svg:last-child]:text-muted-foreground",children:[(0,a.jsx)(b.A,{className:"mr-2 h-4 w-4 text-muted-foreground"}),"Ajouter / Retirer des libell\xe9s"]}),(0,a.jsx)(v.M5,{"data-contacts-menu-surface":!0,className:(0,l.cn)(N.XF,"flex max-h-72 min-w-[260px] flex-col overflow-hidden p-0 py-0"),children:(0,a.jsx)(ei,{query:er,onQueryChange:ec,labelRows:eq,resolveLabelVisual:eR,Item:v._2,getLabelPresence:e=>ep(eF,e),onToggleLabel:e=>e_(eF,e),onCreateLabel:e=>{eE(eF,e),ec("")}})})]}),(0,a.jsxs)(v._2,{onClick:()=>ed(!0),children:[(0,a.jsx)(z.A,{className:"mr-2 h-4 w-4 text-muted-foreground"}),"\xc9dition de masse"]}),(0,a.jsxs)(v._2,{onClick:()=>eu(!0),disabled:eV<2,children:[(0,a.jsx)(D.A,{className:"mr-2 h-4 w-4 text-muted-foreground"}),"Fusionner"]}),(0,a.jsxs)(v._2,{onClick:()=>eL(eF),children:[(0,a.jsx)(h.A,{className:"mr-2 h-4 w-4 text-muted-foreground"}),"Bloquer"]}),(0,a.jsx)(v.mB,{})]}),(0,a.jsx)(v._2,{onClick:()=>eX(!0),disabled:0===ez.length,children:"Tout s\xe9lectionner"}),(0,a.jsx)(v._2,{onClick:()=>el(new Set),disabled:0===eV,children:"D\xe9s\xe9lectionner tout"})]})]})]})]}),(0,a.jsxs)("div",{className:N._L,style:E,children:[J($,"checkbox")&&(0,a.jsx)("span",{className:N.Io,children:(0,a.jsx)(M.S,{checked:!!eM||!!eP&&"indeterminate",onCheckedChange:e=>eX(!0===e),"aria-label":"Tout s\xe9lectionner"})}),ek.map(e=>J($,e)?(0,a.jsx)("span",{className:"flex min-h-8 items-center",children:_[e]},e):null)]})]}),ez.map(e=>(0,a.jsx)(e$,{contact:e,visibleColumns:$,gridStyle:E,selected:en.has(e.id),onToggleSelect:s=>{var t;return t=e.id,void(el(e=>{let a=new Set(e);return s?a.add(t):a.delete(t),a}),ex.current=t)},onRowClick:s=>(function(e,s){if(s.shiftKey){s.preventDefault(),eK(e);return}if(s.metaKey||s.ctrlKey){s.preventDefault(),el(s=>{let t=new Set(s);return t.has(e)?t.delete(e):t.add(e),t}),ex.current=e;return}r(e)})(e.id,s),onCheckboxClickCapture:s=>{var t;return t=e.id,void(s.shiftKey&&(s.preventDefault(),s.stopPropagation(),eK(t)))}},e.id)),(R||I)&&(0,a.jsx)(ee.d,{isLoading:R,isError:I,error:U,onRetry:W}),!R&&!I&&0===ez.length&&(0,a.jsx)("div",{className:"py-12 text-center text-sm text-muted-foreground",children:"Aucun contact trouv\xe9"}),(0,a.jsx)(eh,{open:eo,onOpenChange:ed,contacts:eF,onApply:(e,s)=>eY(eF,e,s),isApplying:eI}),(0,a.jsx)(ef,{open:em,onOpenChange:eu,contacts:eF,onMerge:function(e){Y?eF.length<2||ea.mutate({bookId:Y,contacts:eF,primaryId:e},{onSuccess:()=>{eb.oR.success("Contacts fusionn\xe9s"),eu(!1),el(new Set)},onError:e=>{let s=e instanceof Error&&e.message?e.message:"Impossible de fusionner ces contacts";eb.oR.error(s)}}):eb.oR.error("Carnet de contacts introuvable")},isMerging:ea.isPending})]})}function eA(e){return((0,q.t)(e)||e.emails[0]?.value||"contact").replace(/[/\\?%*:|"<>]/g,"-").trim()||"contact"}function e$({contact:e,visibleColumns:s,gridStyle:t,selected:n,onToggleSelect:r,onRowClick:i,onCheckboxClickCapture:c}){let o=(0,q.t)(e)||e.emails[0]?.value||e.phones[0]?.value||"?",d=(0,S.w)(e=>e.labelRows);return(0,a.jsxs)("div",{role:"button",tabIndex:0,onClick:i,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),i(e))},className:(0,l.cn)(N.lT,"cursor-pointer",n&&"bg-mail-nav-selected"),style:t,children:[J(s,"checkbox")&&(0,a.jsx)("span",{className:"flex h-10 w-10 shrink-0 cursor-pointer items-center justify-center rounded-full hover:bg-muted/60 -m-1",onClick:e=>e.stopPropagation(),onClickCapture:c,onKeyDown:e=>e.stopPropagation(),children:(0,a.jsx)(M.S,{checked:n,onCheckedChange:e=>r(!0===e),"aria-label":`S\xe9lectionner ${o}`})}),J(s,"name")&&(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-2 sm:gap-3",children:[(0,a.jsx)(W.q,{contact:e,name:o,size:"xs"}),(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block truncate text-foreground",children:o}),!J(s,"email")&&e.emails[0]?.value&&(0,a.jsx)("span",{className:"block truncate text-xs text-muted-foreground",children:e.emails[0].value})]})]}),J(s,"email")&&(0,a.jsx)("span",{className:"truncate text-foreground",children:e.emails[0]?.value||""}),J(s,"phone")&&(0,a.jsx)("span",{className:"truncate text-foreground",children:e.phones[0]?.value||""}),J(s,"job")&&(0,a.jsx)("span",{className:"truncate text-foreground",children:[e.jobTitle,e.company].filter(Boolean).join(", ")}),J(s,"labels")&&(0,a.jsx)("span",{className:"flex flex-wrap gap-1",children:e.labels?.map(e=>{let s=d.find(s=>s.id===e);return s?(0,a.jsx)("span",{className:"inline-flex rounded border border-border px-1.5 py-0.5 text-[11px] text-foreground",children:s.label},e):null})})]})}var e_=t(604),eE=t(26362),eL=t(99833),eY=t(8534),eR=t(13084),eI=t(62500),ez=t(98111),eD=t(80622),eT=t(36735),eF=t(33825),eV=t(41817),eM=t(55133),eP=t(3424);let eB=["janvier","f\xe9vrier","mars","avril","mai","juin","juillet","ao\xfbt","septembre","octobre","novembre","d\xe9cembre"];function eq({contactId:e,onBack:s,onEdit:t}){var r;let i,{contacts:c}=(0,y.D)(),o=(0,w.Y)(e=>e.softDeleteContact),d=(0,P.d0)(),m=(0,S.w)(e=>e.labelRows),{data:u}=(0,C.Y0)(),[h,x]=(0,n.useState)(!1),p=c.find(s=>s.id===e),f=(0,eM._)(u);if(!p)return(0,a.jsx)("div",{className:(0,l.cn)("flex h-full items-center justify-center text-sm",N.YS),children:"Contact introuvable"});let b=(0,q.t)(p)||p.emails[0]?.value||p.phones[0]?.value||"?",v=p.emails[0]?.value;return(0,a.jsxs)("div",{className:"mx-auto max-w-3xl px-6 py-8 text-foreground",children:[(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:N.UM,onClick:s,children:(0,a.jsx)(e_.A,{className:"h-5 w-5"})}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",className:"mr-1 hidden rounded-full sm:inline-flex",onClick:()=>x(!0),disabled:!f,title:f?void 0:"Configurez un fournisseur LLM dans les r\xe9glages contacts",children:[(0,a.jsx)(eE.A,{className:"mr-1.5 h-4 w-4 text-amber-500"}),"Am\xe9lioration IA"]}),(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:N.UM,children:(0,a.jsx)(eL.A,{className:"h-5 w-5"})}),(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:N.UM,onClick:()=>{var e;let s;return e=p,s=((0,q.t)(e)||e.emails[0]?.value||"contact").replace(/[/\\?%*:|"<>]/g,"-").trim()||"contact",void Q(X(e),`${s}.vcf`,"text/vcard;charset=utf-8")},"aria-label":"T\xe9l\xe9charger la fiche contact",children:(0,a.jsx)(F.A,{className:"h-5 w-5"})}),(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:N.UM,onClick:()=>t(e),children:(0,a.jsx)(z.A,{className:"h-5 w-5"})}),(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:N.UM,onClick:function(){p&&o(p,"Supprim\xe9 manuellement"),d.mutate({path:e}),s()},children:(0,a.jsx)(j.A,{className:"h-5 w-5"})})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-6 pb-6",children:[(0,a.jsx)(W.q,{contact:p,name:b,size:"xl"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:(0,l.cn)("text-3xl",N.NS),children:b}),p.company&&(0,a.jsxs)("p",{className:(0,l.cn)("mt-1 text-base",N.YS),children:[p.jobTitle?`${p.jobTitle} — `:"",p.company]}),p.labels&&p.labels.length>0&&(0,a.jsx)("div",{className:"mt-2 flex flex-wrap gap-1",children:p.labels.map(e=>{let s=m.find(s=>s.id===e);return s?(0,a.jsxs)("span",{className:N.cI,children:[(0,a.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${s.color}`}),s.label]},e):null})})]})]}),(0,a.jsx)("div",{className:"mb-4 sm:hidden",children:(0,a.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",className:"w-full rounded-full",onClick:()=>x(!0),disabled:!f,title:f?void 0:"Configurez un fournisseur LLM dans les r\xe9glages contacts",children:[(0,a.jsx)(eE.A,{className:"mr-1.5 h-4 w-4 text-amber-500"}),"Am\xe9lioration IA"]})}),v&&(0,a.jsxs)("div",{className:(0,l.cn)("flex items-center gap-2 py-4",N.Se),children:[(0,a.jsxs)("button",{type:"button",className:N.MZ,children:[(0,a.jsx)(eY.A,{className:"h-4 w-4"}),"Envoyer un e-mail"]}),(0,a.jsx)("button",{type:"button",className:N.mQ,children:(0,a.jsx)(eR.A,{className:"h-4 w-4"})}),(0,a.jsx)("button",{type:"button",className:N.mQ,children:(0,a.jsx)(eI.A,{className:"h-4 w-4"})})]}),(0,a.jsxs)("div",{className:(0,l.cn)("space-y-1 pt-4",N.Se),children:[p.emails.length>0&&(0,a.jsx)(eO,{icon:(0,a.jsx)(eY.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:p.emails.map((e,s)=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm text-primary",children:e.value}),(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:e.label})]},s))}),p.phones.length>0&&(0,a.jsx)(eO,{icon:(0,a.jsx)(ez.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:p.phones.map((e,s)=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm text-primary",children:e.value}),(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:e.label})]},s))}),p.company&&(0,a.jsx)(eO,{icon:(0,a.jsx)(eD.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:(0,l.cn)("text-sm",N.NS),children:p.company}),p.department&&(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:p.department}),p.jobTitle&&(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:p.jobTitle})]})}),p.addresses&&p.addresses.length>0&&(0,a.jsx)(eO,{icon:(0,a.jsx)(eT.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:p.addresses.map((e,s)=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:(0,l.cn)("text-sm",N.NS),children:[e.street,[e.postalCode,e.city].filter(Boolean).join(" "),e.region,e.country].filter(Boolean).join(", ")}),(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:e.label})]},s))}),p.birthday&&(p.birthday.day||p.birthday.month)&&(0,a.jsx)(eO,{icon:(0,a.jsx)(eF.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:(0,a.jsx)("p",{className:(0,l.cn)("text-sm",N.NS),children:(r=p.birthday,i=[],r.day&&i.push(String(r.day)),r.month&&i.push(eB[r.month-1]??""),r.year&&i.push(String(r.year)),i.join(" "))})}),p.notes&&(0,a.jsx)(eO,{icon:(0,a.jsx)(eV.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:(0,a.jsx)("p",{className:(0,l.cn)("whitespace-pre-wrap text-sm",N.NS),children:p.notes})})]}),(0,a.jsx)(eP.Z,{contact:p,open:h,onOpenChange:x})]})}function eO({icon:e,children:s}){return(0,a.jsxs)("div",{className:"flex gap-4 py-3",children:[(0,a.jsx)("div",{className:"flex w-6 shrink-0 pt-0.5",children:e}),(0,a.jsx)("div",{className:"flex-1 space-y-2",children:s})]})}var eU=t(93323),eK=t(8442),eX=t(40743),eQ=t(86466),eW=t(30758),eG=t(85569),eH=t(2259);let eZ=["Janvier","F\xe9vrier","Mars","Avril","Mai","Juin","Juillet","Ao\xfbt","Septembre","Octobre","Novembre","D\xe9cembre"],eJ=["Domicile","Travail","Autre"],e0=["Mobile","Domicile","Travail"],e1=["Domicile","Travail","Autre"],e5=eK.Ik({street:eK.Yj().optional().default(""),city:eK.Yj().optional().default(""),region:eK.Yj().optional().default(""),postalCode:eK.Yj().optional().default(""),country:eK.Yj().optional().default(""),label:eK.Yj().default("Domicile")}),e2=eK.Ik({namePrefix:eK.Yj().optional().default(""),firstName:eK.Yj().optional().default(""),middleName:eK.Yj().optional().default(""),lastName:eK.Yj().optional().default(""),nameSuffix:eK.Yj().optional().default(""),phoneticFirstName:eK.Yj().optional().default(""),phoneticLastName:eK.Yj().optional().default(""),company:eK.Yj().optional().default(""),department:eK.Yj().optional().default(""),jobTitle:eK.Yj().optional().default(""),emails:eK.YO(eK.Ik({value:eK.Yj(),label:eK.Yj()})),phones:eK.YO(eK.Ik({value:eK.Yj(),label:eK.Yj()})),addresses:eK.YO(e5),birthday:eK.Ik({day:eK.bz().optional(),month:eK.bz().optional(),year:eK.bz().optional()}).optional(),notes:eK.Yj().optional().default(""),labels:eK.YO(eK.Yj()).optional().default([]),avatarUrl:eK.Yj().optional()});function e4({mode:e,contactId:s,onBack:t,onSaved:r}){let{contacts:i,bookId:d}=(0,y.D)(),m=(0,P.oH)(),u=(0,P.LU)(),h=(0,S.w)(e=>e.labelRows),x=h.filter(e=>!1!==e.enabled),[p,f]=(0,n.useState)(!1),[j,b]=(0,n.useState)(!1),[v,w]=(0,n.useState)(!1),C="edit"===e?i.find(e=>e.id===s):null,{register:k,handleSubmit:A,control:$,watch:_,reset:E,setValue:Y,formState:{isDirty:R}}=(0,eU.mN)({resolver:(0,eX.u)(e2),defaultValues:{namePrefix:"",firstName:"",middleName:"",lastName:"",nameSuffix:"",phoneticFirstName:"",phoneticLastName:"",company:"",department:"",jobTitle:"",emails:[{value:"",label:"Domicile"}],phones:[{value:"",label:"Mobile"}],addresses:[],birthday:{day:void 0,month:void 0,year:void 0},notes:"",labels:[],avatarUrl:void 0}}),{fields:I,append:z,remove:D}=(0,eU.jz)({control:$,name:"emails"}),{fields:T,append:F,remove:V}=(0,eU.jz)({control:$,name:"phones"}),{fields:M,append:B,remove:q}=(0,eU.jz)({control:$,name:"addresses"});(0,n.useEffect)(()=>{C&&((C.namePrefix||C.middleName||C.nameSuffix||C.phoneticFirstName||C.phoneticLastName)&&b(!0),C.department&&w(!0),E({namePrefix:C.namePrefix??"",firstName:C.firstName,middleName:C.middleName??"",lastName:C.lastName,nameSuffix:C.nameSuffix??"",phoneticFirstName:C.phoneticFirstName??"",phoneticLastName:C.phoneticLastName??"",company:C.company??"",department:C.department??"",jobTitle:C.jobTitle??"",emails:C.emails.length?C.emails:[{value:"",label:"Domicile"}],phones:C.phones.length?C.phones:[{value:"",label:"Mobile"}],addresses:C.addresses??[],birthday:C.birthday??{day:void 0,month:void 0,year:void 0},notes:C.notes??"",labels:C.labels??[],avatarUrl:C.avatarUrl}))},[C,E]);let O=_("firstName"),U=_("lastName"),K=_("emails"),X=_("avatarUrl"),Q=_("labels")??[],W=`${O??""} ${U??""}`.trim(),G=R||"create"===e&&!!(O?.trim()||U?.trim()||K?.some(e=>e.value?.trim())),H=(0,n.useCallback)(e=>{Y("labels",Q.includes(e)?Q.filter(s=>s!==e):[...Q,e],{shouldDirty:!0})},[Q,Y]);return(0,a.jsxs)("form",{onSubmit:A(function(t){let a={namePrefix:t.namePrefix||void 0,firstName:t.firstName??"",middleName:t.middleName||void 0,lastName:t.lastName??"",nameSuffix:t.nameSuffix||void 0,phoneticFirstName:t.phoneticFirstName||void 0,phoneticLastName:t.phoneticLastName||void 0,company:t.company||void 0,department:t.department||void 0,jobTitle:t.jobTitle||void 0,emails:t.emails.filter(e=>e.value),phones:t.phones.filter(e=>e.value),addresses:t.addresses.filter(e=>e.street||e.city||e.region||e.postalCode||e.country),birthday:t.birthday?.day||t.birthday?.month||t.birthday?.year?t.birthday:void 0,notes:t.notes||void 0,labels:t.labels?.length?t.labels:void 0,avatarUrl:t.avatarUrl||void 0};if("create"===e){let e=crypto.randomUUID(),s={id:e,...a,firstName:a.firstName??"",lastName:a.lastName??"",emails:a.emails??[],phones:a.phones??[],createdAt:Date.now(),updatedAt:Date.now()};m.mutate({bookId:d,contact:(0,eg.h0)(s)},{onSuccess:s=>{r(s?.uid??e)},onError:e=>{let s=e instanceof Error&&e.message?e.message:"Impossible d'enregistrer le contact";eb.oR.error(s)}})}else if(s&&C){let e={id:s,path:C.path,etag:C.etag,...a,firstName:a.firstName??"",lastName:a.lastName??"",emails:a.emails??[],phones:a.phones??[],createdAt:C.createdAt,updatedAt:Date.now()};if(!C.etag)return void eb.oR.error("Impossible d'enregistrer : version du contact inconnue. Rechargez la liste.");u.mutate({path:(0,ey.Y)(e),etag:C.etag,contact:(0,eg.h0)(e)},{onSuccess:()=>r(s),onError:e=>{let s=e instanceof Error&&e.message?e.message:"Impossible d'enregistrer les modifications";eb.oR.error(s)}})}}),className:"mx-auto max-w-2xl px-6 py-8",children:[(0,a.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:N.UM,onClick:t,children:(0,a.jsx)(e_.A,{className:"h-5 w-5"})}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:"h-10 w-10 rounded-full",onClick:()=>f(e=>!e),children:(0,a.jsx)(eL.A,{className:(0,l.cn)("h-5 w-5",p?"fill-yellow-400 text-yellow-400":N._w)})}),(0,a.jsx)("button",{type:"submit",disabled:!G,className:N.cY,children:"Enregistrer"})]})]}),(0,a.jsx)("div",{className:"mb-6 flex flex-col items-center",children:(0,a.jsx)(eH.y,{variant:"page",avatarUrl:X,displayName:W,email:K?.find(e=>e.value?.trim())?.value,onChange:e=>Y("avatarUrl",e,{shouldDirty:!0})})}),(0,a.jsxs)("div",{className:"mb-6 flex flex-wrap items-center justify-center gap-1.5",children:[Q.map(e=>{let s=h.find(s=>s.id===e);return(0,a.jsxs)("span",{className:N.Th,children:[s&&(0,a.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${s.color}`}),s?.label??e,(0,a.jsx)("button",{type:"button",onClick:()=>H(e),className:"text-muted-foreground hover:text-foreground",children:(0,a.jsx)(L.A,{className:"h-3 w-3"})})]},e)}),(0,a.jsxs)(eG.AM,{children:[(0,a.jsx)(eG.Wv,{asChild:!0,children:(0,a.jsxs)("button",{type:"button",className:N.qL,children:[(0,a.jsx)(c.A,{className:"h-3 w-3"})," Libell\xe9"]})}),(0,a.jsxs)(eG.hl,{"data-contacts-menu-surface":!0,className:(0,l.cn)("w-52 p-1",N.XF),align:"center",children:[(0,a.jsx)("p",{className:(0,l.cn)("px-2 py-1.5 text-xs font-medium",N.YS),children:"Libell\xe9s"}),(0,a.jsx)("div",{className:"max-h-48 overflow-y-auto",children:x.map(e=>{let s=Q.includes(e.id);return(0,a.jsxs)("button",{type:"button",onClick:()=>H(e.id),className:N.Iz,children:[(0,a.jsx)("span",{className:`h-2.5 w-2.5 shrink-0 rounded-full ${e.color}`}),(0,a.jsx)("span",{className:"flex-1 truncate",children:e.label}),s&&(0,a.jsx)(es.A,{className:"h-3.5 w-3.5 text-primary"})]},e.id)})})]})]})]}),(0,a.jsxs)(e3,{icon:(0,a.jsx)(eQ.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:[j&&(0,a.jsx)(e8,{label:"Titre (M., Mme...)",...k("namePrefix")}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(e8,{label:"Pr\xe9nom",...k("firstName")})}),(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-8 w-8 shrink-0 rounded-full",N.BP),onClick:()=>b(e=>!e),children:j?(0,a.jsx)(eW.A,{className:"h-4 w-4"}):(0,a.jsx)(o.A,{className:"h-4 w-4"})})]}),j&&(0,a.jsx)(e8,{label:"Deuxi\xe8me pr\xe9nom",...k("middleName")}),(0,a.jsx)(e8,{label:"Nom",...k("lastName")}),j&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e8,{label:"Suffixe (Jr., Sr...)",...k("nameSuffix")}),(0,a.jsx)(e8,{label:"Pr\xe9nom phon\xe9tique",...k("phoneticFirstName")}),(0,a.jsx)(e8,{label:"Nom phon\xe9tique",...k("phoneticLastName")})]})]}),(0,a.jsxs)(e3,{icon:(0,a.jsx)(eD.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:[(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(e8,{label:"Entreprise",...k("company")})}),(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-8 w-8 shrink-0 rounded-full",N.BP),onClick:()=>w(e=>!e),children:v?(0,a.jsx)(eW.A,{className:"h-4 w-4"}):(0,a.jsx)(o.A,{className:"h-4 w-4"})})]}),v&&(0,a.jsx)(e8,{label:"Service",...k("department")}),(0,a.jsx)(e8,{label:"Fonction",...k("jobTitle")})]}),(0,a.jsxs)(e3,{icon:(0,a.jsx)(eY.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:[I.map((e,s)=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(e8,{label:"E-mail",type:"email",...k(`emails.${s}.value`)})}),I.length>1&&(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-8 w-8 shrink-0 rounded-full",N.BP),onClick:()=>D(s),children:(0,a.jsx)(L.A,{className:"h-3.5 w-3.5"})})]}),(0,a.jsx)(eU.xI,{control:$,name:`emails.${s}.label`,render:({field:e})=>(0,a.jsx)(e7,{value:e.value,onValueChange:e.onChange,options:eJ.map(e=>({value:e,label:e}))})})]},e.id)),(0,a.jsx)(e6,{onClick:()=>z({value:"",label:"Domicile"}),children:"Ajouter une adresse e-mail"})]}),(0,a.jsxs)(e3,{icon:(0,a.jsx)(ez.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:[T.map((e,s)=>(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded text-sm",children:"\uD83C\uDDEB\uD83C\uDDF7"}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(e8,{label:"T\xe9l\xe9phone",type:"tel",...k(`phones.${s}.value`)})}),T.length>1&&(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-8 w-8 shrink-0 rounded-full",N.BP),onClick:()=>V(s),children:(0,a.jsx)(L.A,{className:"h-3.5 w-3.5"})})]}),(0,a.jsx)(eU.xI,{control:$,name:`phones.${s}.label`,render:({field:e})=>(0,a.jsx)(e7,{value:e.value,onValueChange:e.onChange,options:e0.map(e=>({value:e,label:e}))})})]},e.id)),(0,a.jsx)(e6,{onClick:()=>F({value:"",label:"Mobile"}),children:"Ajouter un num\xe9ro de t\xe9l\xe9phone"})]}),(0,a.jsxs)(e3,{icon:(0,a.jsx)(eT.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:[M.map((e,s)=>(0,a.jsxs)("div",{className:N.dn,children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(eU.xI,{control:$,name:`addresses.${s}.label`,render:({field:e})=>(0,a.jsx)(e7,{value:e.value,onValueChange:e.onChange,options:e1.map(e=>({value:e,label:e}))})}),(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"icon",className:(0,l.cn)("h-7 w-7 shrink-0 rounded-full",N.BP),onClick:()=>q(s),children:(0,a.jsx)(L.A,{className:"h-3.5 w-3.5"})})]}),(0,a.jsx)(e8,{label:"Rue",...k(`addresses.${s}.street`)}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("div",{className:"w-24",children:(0,a.jsx)(e8,{label:"Code postal",...k(`addresses.${s}.postalCode`)})}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(e8,{label:"Ville",...k(`addresses.${s}.city`)})})]}),(0,a.jsx)(e8,{label:"R\xe9gion / Province",...k(`addresses.${s}.region`)}),(0,a.jsx)(e8,{label:"Pays",...k(`addresses.${s}.country`)})]},e.id)),(0,a.jsx)(e6,{onClick:()=>B({street:"",city:"",region:"",postalCode:"",country:"",label:"Domicile"}),children:"Ajouter une adresse"})]}),(0,a.jsx)(e3,{icon:(0,a.jsx)(eF.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:(0,a.jsxs)("div",{className:"flex items-stretch gap-2",children:[(0,a.jsx)("div",{className:"w-[72px]",children:(0,a.jsx)(e8,{label:"Jour",type:"number",min:1,max:31,...k("birthday.day",{valueAsNumber:!0})})}),(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(eU.xI,{control:$,name:"birthday.month",render:({field:e})=>(0,a.jsx)(e7,{value:e.value?String(e.value):"",onValueChange:s=>e.onChange(s?Number(s):void 0),options:eZ.map((e,s)=>({value:String(s+1),label:e})),placeholder:"Mois"})})}),(0,a.jsx)("div",{className:"w-24",children:(0,a.jsx)(e8,{label:"Ann\xe9e",type:"number",min:1900,max:2100,...k("birthday.year",{valueAsNumber:!0})})})]})}),(0,a.jsx)(e3,{icon:(0,a.jsx)(eV.A,{className:(0,l.cn)("h-5 w-5",N._w)}),children:(0,a.jsx)(e9,{label:"Notes",...k("notes")})}),(0,a.jsx)("div",{className:"h-12"})]})}function e3({icon:e,children:s}){return(0,a.jsxs)("div",{className:"flex gap-4 py-3",children:[(0,a.jsx)("div",{className:"flex w-6 shrink-0 pt-2",children:e}),(0,a.jsx)("div",{className:"flex-1 space-y-2",children:s})]})}function e6({onClick:e,children:s}){return(0,a.jsxs)("button",{type:"button",onClick:e,className:(0,l.cn)("flex items-center gap-2 py-1",N.Dw,"hover:text-primary/80"),children:[(0,a.jsx)(c.A,{className:"h-4 w-4"}),s]})}let e8=(0,n.forwardRef)(function({label:e,className:s,defaultValue:t,...r},i){let c=(0,n.useId)(),[o,d]=(0,n.useState)(!1),[m,u]=(0,n.useState)(()=>!!t),h=(0,n.useRef)(null);(0,n.useEffect)(()=>{h.current&&h.current.value&&u(!0)});let x=(0,n.useCallback)(e=>{h.current=e,"function"==typeof i?i(e):i&&(i.current=e),e&&e.value&&u(!0)},[i]);return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{ref:x,id:c,...r,defaultValue:t,className:(0,l.cn)(N.mI,s),onFocus:e=>{d(!0),r.onFocus?.(e)},onBlur:e=>{d(!1),u(!!e.target.value),r.onBlur?.(e)},onChange:e=>{u(!!e.target.value),r.onChange?.(e)}}),(0,a.jsx)("label",{htmlFor:c,className:(0,l.cn)(N.mB,o||m?"top-0.5 px-0.5 text-[10px] leading-tight":"top-[11px] text-sm",o?"text-primary":"text-muted-foreground"),children:e})]})}),e9=(0,n.forwardRef)(function({label:e,className:s,...t},r){let i=(0,n.useId)(),[c,o]=(0,n.useState)(!1),[d,m]=(0,n.useState)(!1),u=(0,n.useRef)(null);(0,n.useEffect)(()=>{u.current&&u.current.value&&m(!0)});let h=(0,n.useCallback)(e=>{u.current=e,"function"==typeof r?r(e):r&&(r.current=e),e&&e.value&&m(!0)},[r]);return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("textarea",{ref:h,id:i,rows:3,...t,className:(0,l.cn)(N.AT,s),onFocus:e=>{o(!0),t.onFocus?.(e)},onBlur:e=>{o(!1),m(!!e.target.value),t.onBlur?.(e)},onChange:e=>{m(!!e.target.value),t.onChange?.(e)}}),(0,a.jsx)("label",{htmlFor:i,className:(0,l.cn)(N.mB,c||d?"top-1 px-0.5 text-[10px] leading-tight":"top-2.5 text-sm",c?"text-primary":"text-muted-foreground"),children:e})]})});function e7({value:e,onValueChange:s,options:t,placeholder:n}){return(0,a.jsxs)(ed.l6,{value:e,onValueChange:s,children:[(0,a.jsx)(ed.bq,{className:N.Op,children:(0,a.jsx)(ed.yv,{placeholder:n??"Choisir..."})}),(0,a.jsx)(ed.gC,{"data-contacts-menu-surface":!0,className:N.XF,children:t.map(e=>(0,a.jsx)(ed.eb,{value:e.value,children:e.label},e.value))})]})}var se=t(91505),ss=t(35724),st=t(86471);function sa(e,s){return e&&"object"==typeof e&&"key"in e?String(e.key??s):String(s)}function sn({children:e,className:s,footer:t,animateEnter:r=!0}){let i=n.Children.toArray(e),c=function(e){let s=(0,n.useRef)(new Set),[t,a]=(0,n.useState)(()=>new Set),l=e.map(sa).join("\0");return(0,n.useEffect)(()=>{let t=e.map(sa),n=new Set(t),l=t.filter(e=>!s.current.has(e));for(let e of t)s.current.add(e);for(let e of[...s.current])n.has(e)||s.current.delete(e);if(0===l.length)return;a(new Set(l));let r=window.setTimeout(()=>a(new Set),360);return()=>window.clearTimeout(r)},[l,e]),t}(i),[o]=(0,st.Q)({duration:140,easing:"ease-out"}),d=(0,n.useMemo)(()=>i.map((e,s)=>{let t=(0,n.isValidElement)(e)&&null!=e.key?String(e.key):String(s);return(0,a.jsx)("div",{className:(0,l.cn)("min-w-0",r&&c.has(t)&&N.ys),children:e},t)}),[i,c,r]);return(0,a.jsxs)("div",{className:(0,l.cn)(N.oW,s),children:[(0,a.jsx)("div",{ref:o,className:"grid grid-cols-1 items-start gap-5 lg:grid-cols-2",children:d}),t]})}function sl({children:e,className:s}){return(0,a.jsx)("div",{className:(0,l.cn)("min-w-0",s),children:e})}function sr({children:e,className:s,sentinelRef:t}){return(0,a.jsx)("div",{ref:t,className:(0,l.cn)(N.ko,s),children:e})}var si=t(56747);function sc(){let{suggestions:e,isLoading:s}=(0,C.kH)(),t=(0,C.rJ)(),r=(0,C.oi)(),{contacts:i}=(0,y.D)(),c=(0,P.LU)(),[o,d]=(0,n.useState)(null),m=(0,n.useMemo)(()=>{let s=new Map;for(let t of e){let e=t.target_contact_uid??t.profile_id??t.id,a=s.get(e)??[];a.push(t),s.set(e,a)}return[...s.entries()]},[e]);async function u(e){if("enrich_contact"===e.suggestion_type&&e.target_contact_uid){let s=i.find(s=>s.id===e.target_contact_uid);if(s){let t=sd(s,e);await c.mutateAsync({path:(0,ey.Y)(s),etag:s.etag,contact:t})}}await t.mutateAsync(e.id)}async function h(e,s){d(e);try{let e=s[0];if("enrich_contact"===e.suggestion_type&&e.target_contact_uid){let t=i.find(s=>s.id===e.target_contact_uid);if(t){let e=function(e,s){let t={},a="";for(let n of s){let s=sd(e,n);s.full_name&&(t.full_name=s.full_name),s.org&&(t.org=s.org),s.phone&&(t.phone=s.phone),s.email&&(t.email=s.email),s.raw_vcard&&s.raw_vcard!==t.raw_vcard&&(a+=s.raw_vcard.replace(/^BEGIN:VCARD[\s\S]*?VERSION:3\.0\n/,"").replace(/\nEND:VCARD$/,"\n"))}if(a){let s=`BEGIN:VCARD VERSION:3.0 FN:${e.firstName} ${e.lastName} `;t.raw_vcard=`${s}${a}END:VCARD`}return t}(t,s);await c.mutateAsync({path:(0,ey.Y)(t),etag:t.etag,contact:e})}}for(let e of s)await t.mutateAsync(e.id)}finally{d(null)}}let x=t.isPending||c.isPending;return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-4 flex items-center justify-between",children:(0,a.jsxs)("h3",{className:N.U1,children:["Ajouter des coordonn\xe9es (",e.length,")"]})}),s&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Chargement…"}),!s&&0===e.length&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Aucune suggestion disponible. Analysez vos e-mails depuis \xab Autres contacts \xbb pour d\xe9tecter des coordonn\xe9es dans les signatures."}),(0,a.jsx)(sn,{children:m.map(([e,s])=>(0,a.jsx)(sl,{children:(0,a.jsx)(so,{suggestions:s,contacts:i,onAccept:u,onAcceptAll:()=>h(e,s),onReject:e=>r.mutate(e),busy:x,acceptingAll:o===e})},e))})]})}function so({suggestions:e,contacts:s,onAccept:t,onAcceptAll:n,onReject:r,busy:i,acceptingAll:c}){let o=e[0],d=o.profile,m=o.target_contact_uid?s.find(e=>e.id===o.target_contact_uid):null,u=m?`${m.firstName} ${m.lastName}`.trim()||m.emails[0]?.value:d?(0,ss.ZB)(d):"Contact sugg\xe9r\xe9",h=e.map(e=>({id:e.id,fieldKey:e.field_path,value:e.suggested_value}));return(0,a.jsxs)("div",{className:N.uX,children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:(0,l.cn)("text-sm font-medium leading-tight",N.NS),children:u}),"enrich_contact"===o.suggestion_type&&(0,a.jsxs)("p",{className:(0,l.cn)("text-[11px]",N.YS),children:["Enrichissement \xb7 ",e.length," champ",e.length>1?"s":""]})]}),(0,a.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:(0,a.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",onClick:n,disabled:i,className:"h-9 rounded-full px-4 text-xs sm:text-sm",children:[c?(0,a.jsx)(se.A,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,a.jsx)(es.A,{className:"mr-1.5 h-3.5 w-3.5"}),"Tout ajouter"]})})]}),(0,a.jsx)(si.u,{items:h,dismissible:!0,onRemove:e=>r(e)}),(0,a.jsxs)("details",{className:"mt-2",children:[(0,a.jsx)("summary",{className:(0,l.cn)("cursor-pointer text-[11px]",N.YS),children:"G\xe9rer champ par champ"}),(0,a.jsx)("ul",{className:"mt-2 space-y-1",children:e.map(e=>(0,a.jsxs)("li",{className:N.q$,children:[(0,a.jsxs)("span",{className:(0,l.cn)("min-w-0 truncate text-xs",N.NS),children:[(0,a.jsxs)("span",{className:N.YS,children:[ss.XY[e.field_path]??e.field_path," :"]})," ",e.suggested_value]}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>r(e.id),className:"rounded-full p-1 text-muted-foreground hover:bg-accent","aria-label":"Ignorer",children:(0,a.jsx)(L.A,{className:"h-3.5 w-3.5"})}),(0,a.jsxs)(g.$,{size:"sm",onClick:()=>t(e),disabled:i,className:"h-7 rounded-full px-2.5 text-[11px]",children:[(0,a.jsx)(es.A,{className:"mr-1 h-3 w-3"}),"Accepter"]})]})]},e.id))})]})]})}function sd(e,s){let{field_path:t,suggested_value:a}=s;switch(t){case"full_name":return{full_name:a};case"company":return{org:a};case"job_title":return{raw_vcard:sm(e,"TITLE",a)};case"phones":return{phone:a};case"emails":return{email:a};case"social_profiles":var n,l,r;let i;return{raw_vcard:(n=e,l=(s.suggested_label||"other").toLowerCase(),r=a,i=`BEGIN:VCARD VERSION:3.0 FN:${n.firstName} ${n.lastName} `,`${i}X-SOCIALPROFILE;TYPE=${"x"===l?"twitter":l}:${r} END:VCARD`)};default:return{raw_vcard:sm(e,t.toUpperCase(),a)}}}function sm(e,s,t){let a=`BEGIN:VCARD VERSION:3.0 FN:${e.firstName} ${e.lastName} `;return`${a}${s}:${t} END:VCARD`}let su={email:"M\xeame adresse e-mail",phone:"M\xeame num\xe9ro de t\xe9l\xe9phone",name:"Nom similaire"};function sh(){let[e,s]=(0,n.useState)("merge"),{contacts:t,bookId:r}=(0,y.D)(),i=(0,w.Y)(e=>e.ignoredMergePairs),c=(0,w.Y)(e=>e.ignoreMergePair),o=(0,P.q0)(),d=(0,n.useMemo)(()=>(0,k.m6)(t,new Set(i)),[t,i]),{suggestions:m}=(0,C.kH)(),[u,h]=(0,n.useState)(!1),[x,p]=(0,n.useState)(null);async function f(){if(!r)return void eb.oR.error("Carnet de contacts introuvable");if(0!==d.length){h(!0);try{for(let e of d)e.contactA.etag&&await o.mutateAsync({bookId:r,contactA:e.contactA,contactB:e.contactB});eb.oR.success("Doublons fusionn\xe9s")}catch(s){let e=s instanceof Error&&s.message?s.message:"Impossible de fusionner tous les doublons";eb.oR.error(e)}finally{h(!1)}}}return(0,a.jsxs)("div",{className:"px-6 py-6 text-foreground",children:[(0,a.jsxs)("div",{className:N.VC,children:[(0,a.jsx)("div",{className:N.VE,children:(0,a.jsx)("span",{className:"text-2xl",children:"\uD83E\uDDF9"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:(0,l.cn)("text-base font-medium",N.NS),children:"Des m\xe9thodes simples pour nettoyer vos contacts"}),(0,a.jsx)("p",{className:(0,l.cn)("mt-1 text-sm",N.YS),children:"Obtenez de l'aide pour fusionner les contacts en double, ajouter des informations utiles, et bien encore"})]})]}),(0,a.jsxs)("div",{className:"mb-6 flex gap-2",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>s("merge"),className:"merge"===e?N.MS:N.vR,children:["Fusionner les doublons",d.length>0&&(0,a.jsxs)("span",{className:"ml-2 text-xs",children:["(",d.length,")"]})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>s("coordinates"),className:"coordinates"===e?N.MS:N.vR,children:["Ajouter des coordonn\xe9es",m.length>0&&(0,a.jsxs)("span",{className:"ml-2 text-xs",children:["(",m.length,")"]})]})]}),"merge"===e&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsxs)("h3",{className:N.U1,children:["Fusionner les doublons (",d.length,")"]}),d.length>0&&(0,a.jsx)(g.$,{onClick:f,disabled:u,className:N.NC,children:u?"Fusion…":"Tout fusionner"})]}),0===d.length&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Aucun doublon d\xe9tect\xe9"}),(0,a.jsx)(sn,{children:d.map(e=>{let s=(0,k.kG)(e.contactA.id,e.contactB.id);return(0,a.jsx)(sl,{children:(0,a.jsx)(sx,{suggestion:e,merging:x===s,onMerge:()=>{!r?eb.oR.error("Carnet de contacts introuvable"):!e.contactA.etag?eb.oR.error("Impossible de fusionner : version du contact inconnue. Rechargez la liste."):(p((0,k.kG)(e.contactA.id,e.contactB.id)),o.mutate({bookId:r,contactA:e.contactA,contactB:e.contactB},{onSuccess:()=>eb.oR.success("Contacts fusionn\xe9s"),onError:e=>{let s=e instanceof Error&&e.message?e.message:"Impossible de fusionner ces contacts";eb.oR.error(s)},onSettled:()=>p(null)}))},onIgnore:()=>{c(e.contactA.id,e.contactB.id)}})},s)})})]}),"coordinates"===e&&(0,a.jsx)(sc,{})]})}function sx({suggestion:e,merging:s,onMerge:t,onIgnore:n}){let{contactA:r,contactB:i,reason:c}=e;return(0,a.jsxs)("div",{className:(0,l.cn)(N.uX,"overflow-hidden"),children:[(0,a.jsx)("p",{className:(0,l.cn)("mb-3 text-xs font-medium",N.YS),children:su[c]}),(0,a.jsxs)("div",{className:"grid min-w-0 gap-4 sm:grid-cols-2",children:[(0,a.jsx)(sp,{contact:r}),(0,a.jsx)(sp,{contact:i})]}),(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap items-center justify-end gap-3",children:[(0,a.jsx)("button",{type:"button",onClick:n,disabled:s,className:N.Tu,children:"Ignorer"}),(0,a.jsx)(g.$,{onClick:t,disabled:s,className:N.NC,children:s?"Fusion…":"Fusionner"})]})]})}function sp({contact:e}){let s=(0,q.t)(e)||e.emails[0]?.value||"?";return(0,a.jsxs)("div",{className:"flex min-w-0 items-start gap-3 overflow-hidden",children:[(0,a.jsx)(W.q,{contact:e,name:s,size:"sm"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1 overflow-hidden",children:[(0,a.jsx)("p",{className:(0,l.cn)("truncate text-sm font-medium",N.NS),title:s,children:s}),e.emails[0]&&(0,a.jsx)("p",{className:(0,l.cn)("truncate text-xs",N.YS),title:e.emails[0].value,children:e.emails[0].value}),e.phones[0]&&(0,a.jsxs)("p",{className:(0,l.cn)("truncate text-xs",N.YS),title:`${e.phones[0].value} (${e.phones[0].label})`,children:[e.phones[0].value," (",e.phones[0].label,")"]})]})]})}var sf=t(90773),sj=t(70259),sb=t(9958);function sg(e,s,t,a,n){let l=a.trim();if(!l)return;let r=function(e,s){let t=s.trim();if("emails"===e)return`emails:${t.toLowerCase()}`;if("phones"===e){let e=t.replace(/\D/g,"");return e.length>=6?`phones:${e}`:`phones:${t.toLowerCase()}`}return"addresses"===e?`addresses:${t.toLowerCase()}`:`${e}:${t.toLowerCase()}`}(t,l);if(!s.has(r)){var i;s.add(r),e.push({id:(i="emails"===t?l.toLowerCase():l,`${t}::${i}`),label:n,fieldKey:t,value:l,removed:!1})}}function sv(e,s,t,a){let n=t?.trim();n&&sg(e,a,s,n,ss.XY[s]??s)}function sN(e,s,t,a){for(let n of t??[]){let t=n.value?.trim();if(!t)continue;let l=n.label?` (${n.label})`:"";sg(e,a,s,t,`${ss.XY[s]??s}${l}`)}}function sy(e){let s=e.profile??e.profiles?.[0];if(!s)return[];let t=s.enriched_data,a=new Set,n=[];for(let e of(sv(n,"first_name",t?.first_name,a),sv(n,"last_name",t?.last_name,a),sv(n,"company",t?.company,a),sv(n,"department",t?.department,a),sv(n,"job_title",t?.job_title,a),sv(n,"website",t?.website,a),sN(n,"social_profiles",t?.social_profiles,a),sv(n,"notes",t?.notes,a),sN(n,"emails",t?.emails,a),sN(n,"phones",t?.phones,a),t?.addresses??[])){let s=[e.street,e.city,e.region,e.postal_code,e.country].map(e=>e?.trim()).filter(Boolean);0!==s.length&&sg(n,a,"addresses",s.join(", "),e.label?`${ss.XY.addresses} (${e.label})`:ss.XY.addresses)}for(let t of e.profiles??[s]){for(let e of t.all_emails??[]){let s=e.email?.trim();s&&sg(n,a,"emails",s,ss.XY.emails)}let e=t.primary_email?.trim();e&&sg(n,a,"emails",e,ss.XY.emails)}return n}function sw(e){let s=ss.XY[e.fieldKey]??e.fieldKey;if(e.label.startsWith(s)){let t=e.label.slice(s.length).trim();if(t.startsWith("(")&&t.endsWith(")"))return t.slice(1,-1)}return"Autre"}let sC="h-9 min-w-0 w-full rounded-full px-3 text-sm font-medium sm:w-auto sm:flex-none",sk=(0,l.cn)("mx-auto h-9 w-auto min-w-0 px-3 text-sm font-medium text-destructive underline-offset-4","bg-transparent shadow-none hover:bg-transparent hover:text-destructive/90 hover:underline","dark:bg-transparent dark:hover:bg-transparent sm:mx-0 sm:flex-none","[&_svg]:text-destructive"),sS="mr-1.5 h-3.5 w-3.5 shrink-0",sA=(0,n.memo)(function({group:e,mode:s="suggest",busy:t=!1,addBusy:r=!1,onAdd:i,onEnrich:c,onIgnore:o,onBlock:m,onRemove:u}){let x,p=e.profile??e.profiles?.[0],[f,b]=(0,n.useState)(()=>sy(e));(0,n.useEffect)(()=>{b(sy(e))},[e.group_key,e.profile?.id,e.profile_ids?.[0],e.profile?.enrichment_status,e.profile?.enriched_data]);let v=(0,n.useMemo)(()=>f.map(e=>({id:e.id,fieldKey:e.fieldKey,value:e.value,removed:e.removed})),[f]);if(!p)return null;let y=e.display_name||(0,ss.ZB)(p),w=0===(x=p.detected_in_accounts??[]).length?"":x.map(e=>{let s=e.account_name||e.account_email;return`${s} (${e.message_count} msg)`}).join(", "),C=(e.profiles?.length??1)>1,k=(p.signatures?.length??0)>0,S="enriching"===p.enrichment_status,A=k&&"enriched"!==p.enrichment_status;function $(){return function(e,s){if(!e)throw Error("profile is required to build contact");let t=(0,ss.wT)(e),a=s.filter(e=>!e.removed),n=e=>a.find(s=>s.fieldKey===e)?.value,l=n("first_name"),r=n("last_name");l&&(t.firstName=l),r&&(t.lastName=r),n("company")&&(t.company=n("company")),n("department")&&(t.department=n("department")),n("job_title")&&(t.jobTitle=n("job_title")),n("website")&&(t.website=n("website")),n("notes")&&(t.notes=n("notes"));let i=s.some(e=>"social_profiles"===e.fieldKey),c=a.filter(e=>"social_profiles"===e.fieldKey).map(e=>({value:e.value,label:sw(e)}));i&&(t.socialProfiles=c.length>0?c:void 0);let o=s.some(e=>"emails"===e.fieldKey),d=a.filter(e=>"emails"===e.fieldKey).map(e=>({value:e.value,label:sw(e)}));o&&(t.emails=d);let m=s.some(e=>"phones"===e.fieldKey),u=a.filter(e=>"phones"===e.fieldKey).map(e=>({value:e.value,label:sw(e)}));m&&(t.phones=u);let h=s.some(e=>"addresses"===e.fieldKey),x=a.filter(e=>"addresses"===e.fieldKey).map(e=>{var s,t;let a;return s=e.value,t=sw(e),(a=s.split(",").map(e=>e.trim()).filter(Boolean)).length>=5?{street:a[0],city:a[1],region:a[2],postalCode:a[3],country:a.slice(4).join(", "),label:t}:{street:s,label:t}});return h&&(t.addresses=x.length>0?x:void 0),t}(p,f)}return(0,a.jsxs)("div",{className:N.uX,children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3",children:[(0,a.jsx)(W.q,{name:y,email:p.primary_email,size:"sm"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,a.jsx)("p",{className:(0,l.cn)("truncate text-sm font-medium leading-tight",N.NS),children:y}),S&&(0,a.jsx)(se.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-amber-500 dark:text-amber-400","aria-label":"Enrichissement IA en cours"}),"enriched"===p.enrichment_status&&(0,a.jsx)(eE.A,{className:"h-3.5 w-3.5 shrink-0 text-amber-500 dark:text-amber-400","aria-label":"Coordonn\xe9es enrichies par IA"}),"blocked"===s&&(0,a.jsx)("span",{className:(0,l.cn)("shrink-0 text-[10px] font-medium",N.YS),children:"\xb7 bloqu\xe9"}),"ignored"===s&&(0,a.jsx)("span",{className:(0,l.cn)("shrink-0 text-[10px] font-medium",N.YS),children:"\xb7 ignor\xe9"})]}),C?(0,a.jsxs)("p",{className:(0,l.cn)("text-xs",N.YS),children:[e.profile_ids?.length??0," adresses e-mail regroup\xe9es"]}):(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:e.primary_email}),w&&(0,a.jsx)("p",{className:(0,l.cn)("mt-0.5 line-clamp-2 text-xs",N.YS),children:w})]})]}),"suggest"===s&&o&&(0,a.jsx)(g.$,{type:"button",variant:"ghost",size:"sm",onClick:o,disabled:t,className:"h-8 shrink-0 rounded-full px-2.5 text-xs text-muted-foreground hover:text-foreground",children:"Ignorer"})]}),(0,a.jsx)(si.u,{items:v,denseGrid:"suggest"===s,editable:"suggest"===s||"ignored"===s||"blocked"===s,onRemove:function(e){b(s=>s.map(s=>s.id===e?{...s,removed:!0}:s))},onValueChange:function(e,s){b(t=>t.map(t=>t.id===e?{...t,value:s,removed:!1}:t))}}),p.signatures&&p.signatures.length>0&&"suggest"===s&&(0,a.jsxs)("details",{className:"mt-2",children:[(0,a.jsxs)("summary",{className:(0,l.cn)("cursor-pointer text-[11px]",N.YS),children:[p.signatures.length," signature",p.signatures.length>1?"s":""]}),(0,a.jsx)("pre",{className:(0,l.cn)("mt-1 max-h-24 overflow-auto text-[11px] whitespace-pre-wrap",N.cB),children:p.signatures[0].signature_text})]}),"suggest"===s&&(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:justify-end",children:[A&&(0,a.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",onClick:c,disabled:S||t,className:sC,"aria-label":"Enrichissement IA \xe0 partir des signatures",children:[S?(0,a.jsx)(se.A,{className:(0,l.cn)(sS,"animate-spin")}):(0,a.jsx)(eE.A,{className:sS}),"Enrichissement IA"]}),(0,a.jsxs)(g.$,{type:"button",variant:"link",size:"sm",onClick:m,disabled:t||!m,className:sk,children:[(0,a.jsx)(h.A,{className:sS}),"Bloquer"]}),(0,a.jsxs)(g.$,{type:"button",size:"sm",onClick:()=>i?.($),disabled:t||!i,className:(0,l.cn)(N.NC,sC),children:[r?(0,a.jsx)(se.A,{className:(0,l.cn)(sS,"animate-spin")}):(0,a.jsx)(d.A,{className:sS}),"Ajouter aux contacts"]})]}),("ignored"===s||"blocked"===s)&&(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:justify-end",children:[u&&(0,a.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",onClick:u,disabled:t,className:sC,children:[(0,a.jsx)(j.A,{className:sS}),"Supprimer"]}),i&&(0,a.jsxs)(g.$,{type:"button",size:"sm",onClick:()=>i($),disabled:t,className:(0,l.cn)(N.NC,sC),children:[r?(0,a.jsx)(se.A,{className:(0,l.cn)(sS,"animate-spin")}):(0,a.jsx)(d.A,{className:sS}),"Ajouter aux contacts"]})]})]})});function s$({searchQuery:e}){let s=(0,n.useDeferredValue)(e.trim()),{bookId:t}=(0,y.D)(),{data:r}=(0,C.OH)(),{data:i}=(0,C.LX)(),c=null!=i&&("running"===i.status||"pending"===i.status),{data:o,isLoading:d,refetch:m,fetchNextPage:u,hasNextPage:h,isFetchingNextPage:x}=(0,C.HX)(!c,s),p=(0,n.useMemo)(()=>(0,C.zH)(o),[o]),f=(0,n.useRef)(null),j=(0,C.r6)(),b=(0,C.Lr)(),v=(0,C.XW)(),w=(0,C.l2)(),k=(0,C.Qn)(),S=(0,C.wP)(),A=(0,ew.j)(e=>e.blockSenders),$=(0,n.useRef)(!1),[_,E]=(0,n.useState)(()=>new Set),Y=(0,n.useCallback)(e=>{E(s=>{if(s.has(e))return s;let t=new Set(s);return t.add(e),t})},[]),R=(0,n.useCallback)(e=>{E(s=>{if(!s.has(e))return s;let t=new Set(s);return t.delete(e),t})},[]);(0,n.useEffect)(()=>{(!$.current||c)&&(c||null!=i||($.current=!0,m()))},[c,i,m]),(0,n.useEffect)(()=>{c&&($.current=!1)},[c]);let I=(0,n.useMemo)(()=>p.map(e=>(0,sb.Df)(e)).filter(e=>null!=e).filter(ss.MT).filter(e=>!_.has((0,sb.qD)(e))),[p,_]),z=e.trim()!==s,D=s?o?.pages[0]?.total??I.length:r?.other_contacts??o?.pages[0]?.total??I.length,T=s?String(I.length):h?`${I.length} / ${D}`:String(I.length),F=(0,n.useCallback)(()=>{h&&!x&&u()},[h,x,u]);!function({sentinelRef:e,hasNextPage:s,isFetchingNextPage:t,onLoadMore:a,maxAutoLoads:l=1,scrollRootSelector:r="main.overflow-y-auto"}){let i=(0,n.useRef)(0),c=(0,n.useRef)(!1);(0,n.useEffect)(()=>{s&&(i.current=0,c.current=!1)},[s]),(0,n.useEffect)(()=>{let s=document.querySelector(r)??e.current?.closest("main");if(!s)return;let t=()=>{s.scrollTop>40&&(c.current=!0)};return s.addEventListener("scroll",t,{passive:!0}),()=>s.removeEventListener("scroll",t)},[r,e]),(0,n.useEffect)(()=>{let n=e.current;if(!n||!s)return;let o=document.querySelector(r)??n.closest("main"),d=new IntersectionObserver(([e])=>{!e?.isIntersecting||t||(c.current||!(i.current>=l))&&(i.current+=1,a())},{root:o instanceof Element?o:null,rootMargin:"160px",threshold:0});return d.observe(n),()=>d.disconnect()},[e,s,t,a,r,l])}({sentinelRef:f,hasNextPage:!!h,isFetchingNextPage:x,onLoadMore:F,maxAutoLoads:1});let V=S.isPending&&"string"==typeof S.variables?S.variables:null,M=i?.progress_percent??0,P=i?(0,C.l1)(i):null;return(0,a.jsxs)("div",{className:"px-6 py-6 text-foreground",children:[(0,a.jsxs)("div",{className:(0,l.cn)(N.VC,"flex flex-col gap-4"),children:[(0,a.jsxs)("div",{className:"flex w-full items-center gap-4",children:[(0,a.jsx)("div",{className:N.VE,children:(0,a.jsx)("span",{className:"text-2xl",children:"\uD83D\uDCEC"})}),(0,a.jsx)("h2",{className:(0,l.cn)("min-w-0 flex-1 text-base font-medium",N.NS),children:"Contacts d\xe9tect\xe9s dans vos e-mails"}),(0,a.jsxs)("div",{className:"flex shrink-0 flex-col items-stretch gap-2",children:[(0,a.jsxs)(g.$,{onClick:function(){c||j.mutate(t)},disabled:c||j.isPending,className:N.NC,children:[c||j.isPending?(0,a.jsx)(se.A,{className:"mr-2 h-4 w-4 animate-spin"}):(0,a.jsx)(sf.A,{className:"mr-2 h-4 w-4"}),c?"Analyse en cours…":(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"sm:hidden",children:"Analyser"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Analyser toutes les bo\xeetes"})]})]}),c&&(0,a.jsxs)(g.$,{variant:"outline",size:"sm",onClick:()=>b.mutate(),disabled:b.isPending,children:[b.isPending?(0,a.jsx)(se.A,{className:"mr-2 h-4 w-4 animate-spin"}):(0,a.jsx)(L.A,{className:"mr-2 h-4 w-4"}),"Annuler"]})]})]}),(0,a.jsx)("p",{className:(0,l.cn)("w-full text-sm",N.YS),children:"Analyse compl\xe8te de toutes vos bo\xeetes mail. Les listes de diffusion, e-mails jetables et exp\xe9diteurs spam sont exclus."}),i?.status==="failed"&&i.error_message&&(0,a.jsx)("p",{className:"w-full text-xs text-destructive",children:i.error_message}),c&&P&&i&&(0,a.jsxs)("div",{className:"w-full space-y-2",children:[(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:P}),(0,a.jsx)(sj.k,{value:Math.min(100,M),className:"h-2 w-full"})]})]}),(0,a.jsx)("div",{className:"mb-4 flex items-center justify-between",children:(0,a.jsxs)("h3",{className:N.U1,children:["Suggestions (",T,")"]})}),d&&!c&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:z?"Recherche…":"Chargement…"}),!d&&0===I.length&&!c&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:s?"Aucun contact ne correspond \xe0 votre recherche.":"Aucun contact d\xe9tect\xe9. Lancez une analyse pour scanner tous vos messages."}),(0,a.jsx)(sn,{footer:h||x?(0,a.jsx)(sr,{sentinelRef:f,children:x?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(se.A,{className:"h-5 w-5 animate-spin text-muted-foreground"}),(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:"Chargement…"})]}):(0,a.jsx)("p",{className:(0,l.cn)("text-xs",N.YS),children:s?`${I.length} sur ${D} r\xe9sultats`:`${I.length} sur ${D} affich\xe9s`})}):null,children:I.map(e=>{let s=e.profile?.id??e.profile_ids[0];if(!s)return null;let n=(0,sb.qD)(e);return(0,a.jsx)(sl,{children:(0,a.jsx)(sA,{group:e,mode:"suggest",busy:s===V,onAdd:s=>(function(e,s){let a=e.profile?.id??e.profile_ids[0];if(!a||!t)return;let n=(0,sb.qD)(e);Y(n),v.mutate({bookId:t,profileId:a,contact:(0,eg.h0)(s())},{onError:()=>R(n)})})(e,s),onEnrich:()=>S.mutate(s),onIgnore:()=>{let t;Y(t=(0,sb.qD)(e)),w.mutate(s,{onError:()=>R(t)})},onBlock:()=>{let t,a;return t=(0,sb.qD)(e),void((a=(0,C.M2)(e)).length&&A(a),Y(t),k.mutate(s,{onSuccess:e=>{e.emails?.length&&A(e.emails)},onError:()=>R(t)}))}})},n)})})]})}var s_=t(86669);function sE({searchQuery:e}){let{bookId:s}=(0,y.D)(),{data:t=[],isLoading:r}=(0,C.FK)(),i=(0,C.XW)(),c=(0,C.KL)(),[o,d]=(0,n.useState)(()=>new Set),m=(0,n.useCallback)(e=>{d(s=>{if(s.has(e))return s;let t=new Set(s);return t.add(e),t})},[]),u=(0,n.useCallback)(e=>{d(s=>{if(!s.has(e))return s;let t=new Set(s);return t.delete(e),t})},[]),h=(0,n.useMemo)(()=>{let s=t.filter(e=>!o.has(e.id)),a=e.trim().toLowerCase();return a?s.filter(e=>(0,ss.ZB)(e).toLowerCase().includes(a)||e.primary_email.toLowerCase().includes(a)):s},[t,e,o]),x=i.isPending&&"string"==typeof i.variables?.profileId?i.variables.profileId:null;return(0,a.jsxs)("div",{className:"px-6 py-6 text-foreground",children:[(0,a.jsx)("h2",{className:(0,l.cn)("mb-2 text-base font-medium",N.NS),children:"Ignor\xe9s"}),(0,a.jsx)("p",{className:(0,l.cn)("mb-6 text-sm",N.YS),children:"Ces exp\xe9diteurs ne sont pas dans vos contacts et ne seront plus sugg\xe9r\xe9s. Vous pouvez les ajouter \xe0 votre carnet ou les supprimer d\xe9finitivement."}),(0,a.jsxs)("h3",{className:(0,l.cn)("mb-4",N.U1),children:[h.length," contact",1!==h.length?"s":""]}),r&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Chargement…"}),!r&&0===h.length&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Aucun contact ignor\xe9."}),(0,a.jsx)(sn,{children:h.map(e=>(0,a.jsx)(sl,{children:(0,a.jsx)(sA,{group:{group_key:e.id,profile_ids:[e.id],display_name:(0,ss.ZB)(e),primary_email:e.primary_email,message_count:e.message_count,profile:e,profiles:[e]},mode:"ignored",addBusy:x===e.id,busy:c.isPending&&c.variables===e.id,onAdd:t=>{s&&((0,s_.flushSync)(()=>m(e.id)),requestAnimationFrame(()=>{i.mutate({bookId:s,profileId:e.id,contact:(0,eg.h0)(t())},{onError:()=>u(e.id)})}))},onRemove:()=>{var s;return s=e.id,void((0,s_.flushSync)(()=>m(s)),requestAnimationFrame(()=>{c.mutate(s,{onError:()=>u(s)})}))}})},e.id))})]})}function sL({searchQuery:e}){let{bookId:s}=(0,y.D)(),{data:t=[],isLoading:r}=(0,C.fc)(),i=(0,C.XW)(),c=(0,C.KL)(),o=(0,ew.j)(e=>e.unblockSender),[d,m]=(0,n.useState)(()=>new Set),u=(0,n.useCallback)(e=>{m(s=>{if(s.has(e))return s;let t=new Set(s);return t.add(e),t})},[]),h=(0,n.useCallback)(e=>{m(s=>{if(!s.has(e))return s;let t=new Set(s);return t.delete(e),t})},[]),x=(0,n.useMemo)(()=>{let s=t.filter(e=>!d.has(e.id)),a=e.trim().toLowerCase();return a?s.filter(e=>(0,ss.ZB)(e).toLowerCase().includes(a)||e.primary_email.toLowerCase().includes(a)):s},[t,e,d]),p=i.isPending&&"string"==typeof i.variables?.profileId?i.variables.profileId:null;return(0,a.jsxs)("div",{className:"px-6 py-6 text-foreground",children:[(0,a.jsx)("h2",{className:(0,l.cn)("mb-2 text-base font-medium",N.NS),children:"Bloqu\xe9s"}),(0,a.jsx)("p",{className:(0,l.cn)("mb-6 text-sm",N.YS),children:"Ces exp\xe9diteurs sont trait\xe9s comme ind\xe9sirables : pas de suggestion, contenus distants bloqu\xe9s dans les e-mails. Vous pouvez les ajouter \xe0 votre carnet ou les supprimer d\xe9finitivement."}),(0,a.jsxs)("h3",{className:(0,l.cn)("mb-4",N.U1),children:[x.length," exp\xe9diteur",1!==x.length?"s":""]}),r&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Chargement…"}),!r&&0===x.length&&(0,a.jsx)("p",{className:(0,l.cn)("py-8 text-center text-sm",N.YS),children:"Aucun exp\xe9diteur bloqu\xe9."}),(0,a.jsx)(sn,{children:x.map(e=>(0,a.jsx)(sl,{children:(0,a.jsx)(sA,{group:{group_key:e.id,profile_ids:[e.id],display_name:(0,ss.ZB)(e),primary_email:e.primary_email,message_count:e.message_count,profile:e,profiles:[e]},mode:"blocked",addBusy:p===e.id,busy:c.isPending&&c.variables===e.id,onAdd:t=>{s&&((0,s_.flushSync)(()=>u(e.id)),o(e.primary_email),requestAnimationFrame(()=>{i.mutate({bookId:s,profileId:e.id,contact:(0,eg.h0)(t())},{onError:()=>h(e.id)})}))},onRemove:()=>{(0,s_.flushSync)(()=>u(e.id)),o(e.primary_email),requestAnimationFrame(()=>{c.mutate(e.id,{onError:()=>h(e.id)})})}})},e.id))})]})}var sY=t(81596);function sR(){let{deletedContacts:e,restoreContact:s,emptyTrash:t}=(0,w.Y)(),n=(0,P.d0)();return(0,a.jsxs)("div",{className:"px-6 py-4 text-foreground",children:[e.length>0&&(0,a.jsxs)("div",{className:N.ax,children:[(0,a.jsx)("p",{className:"text-sm text-foreground",children:"Les contacts qui sont dans la corbeille depuis plus de 30 jours seront supprim\xe9s d\xe9finitivement"}),(0,a.jsx)("button",{type:"button",onClick:t,className:(0,l.cn)("shrink-0",N.Tu),children:"Vider la corbeille"})]}),(0,a.jsxs)("h1",{className:(0,l.cn)("mb-4",N.ic),children:["Corbeille (",e.length,")"]}),0===e.length&&(0,a.jsx)("p",{className:(0,l.cn)("py-12 text-center text-sm",N.YS),children:"La corbeille est vide"}),e.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:(0,l.cn)("grid grid-cols-[minmax(0,2fr)_minmax(0,2fr)_minmax(0,1fr)_40px] gap-2",N._L),children:[(0,a.jsx)("span",{children:"Nom"}),(0,a.jsx)("span",{children:"Raison du placement dans la corbeille"}),(0,a.jsx)("span",{children:"Date de suppression"}),(0,a.jsx)("span",{})]}),e.map(e=>{let{contact:t,deletedAt:r,reason:i}=e,c=(0,q.t)(t)||t.emails[0]?.value||"?";return(0,a.jsxs)("div",{className:(0,l.cn)("grid grid-cols-[minmax(0,2fr)_minmax(0,2fr)_minmax(0,1fr)_40px] items-center gap-2 py-3 text-sm",N.lT),children:[(0,a.jsxs)("span",{className:"flex items-center gap-3",children:[(0,a.jsx)(W.q,{contact:t,name:c,size:"xs"}),(0,a.jsx)("span",{className:(0,l.cn)("truncate",N.NS),children:c})]}),(0,a.jsx)("span",{className:(0,l.cn)("truncate",N.YS),children:i}),(0,a.jsx)("span",{className:N.YS,children:new Date(r).toLocaleDateString("fr-FR",{day:"numeric",month:"short"})}),(0,a.jsxs)(v.rI,{children:[(0,a.jsx)(v.ty,{asChild:!0,children:(0,a.jsx)(g.$,{variant:"ghost",size:"icon",className:(0,l.cn)("h-8 w-8 rounded-full",N.o7),children:(0,a.jsx)(V.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(v.SQ,{align:"end","data-contacts-menu-surface":!0,className:N.XF,children:[(0,a.jsxs)(v._2,{onClick:()=>s(t.id),children:[(0,a.jsx)(sY.A,{className:"mr-2 h-4 w-4"}),"Restaurer"]}),(0,a.jsxs)(v._2,{onClick:()=>n.mutate({path:t.id}),className:"text-red-600 focus:text-red-600",children:[(0,a.jsx)(j.A,{className:"mr-2 h-4 w-4"}),"Supprimer d\xe9finitivement"]})]})]})]},t.id)})]})]})}var sI=t(62228),sz=t(97150);function sD(e){let s=e.trim();return s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")?s.slice(1,-1).trim():s}function sT(e){let s=[],t="",a=!1;for(let n=0;n0?t[t.length-1]+=e.slice(1):t.push(e);return t}(e),t=[],a=[],n=!1;for(let e of s){let s=e.trim().toUpperCase();if("BEGIN:VCARD"===s){n=!0,a=[];continue}if("END:VCARD"===s){if(n){let e=function(e){let s,t,a,n,l="",r="",i=[],c=[];for(let o of e){let e=function(e){let s=e.indexOf(":");if(-1===s)return null;let t=e.slice(0,s),a=e.slice(s+1).trim();return{key:t.split(";")[0].toUpperCase(),rawKey:t,value:a}}(o);if(!e||!e.value)continue;let{key:d,rawKey:m,value:u}=e;switch(d){case"FN":{let e=(0,sI.VT)(u);l||r||(l=e.firstName,r=e.lastName);break}case"N":{let e=u.split(";");r=e[0]?.trim()??"",l=e[1]?.trim()??"";break}case"EMAIL":i.push({value:u,label:"personal"});break;case"TEL":c.push({value:u,label:"mobile"});break;case"ORG":{let[e,a]=u.split(";");s=e?.trim()||void 0,t=a?.trim()||void 0;break}case"NOTE":a=u;break;case"PHOTO":n=(0,sz._c)(m,u)??n}}return l||r||0!==i.length||0!==c.length?{firstName:l,lastName:r,company:s,jobTitle:t,emails:i,phones:c,notes:a,avatarUrl:n}:null}(a);e&&t.push(e)}n=!1,a=[];continue}n&&a.push(e)}return t}function sV(e,s){let t=e.map(e=>e.toLowerCase().trim());for(let e of s){let s=t.indexOf(e);if(s>=0)return s}for(let e=0;et[e].includes(s)))return e;return -1}function sM(e){let s=e.split(/\r?\n/).filter(e=>e.trim());if(0===s.length)return[];let t=sT(s[0]),a=sV(t,["name","nom","full name","display name"]),n=sV(t,["email","e-mail","mail"]),l=sV(t,["phone","telephone","tel","mobile"]),r=sV(t,["first name","pr\xe9nom","prenom","firstname"]),i=sV(t,["last name","nom","lastname"]),c=sV(t,["company","organisation","organization","entreprise"]),o=a>=0||n>=0||l>=0||r>=0,d=o?s.slice(1):s,m=[];for(let e of d){let s,t=sT(e);if(t.every(e=>!e.trim()))continue;let d="",u="";if(o){if(r>=0&&(d=t[r]?.trim()??""),i>=0&&(u=t[i]?.trim()??""),a>=0&&!d&&!u){let e=(0,sI.VT)(t[a]??"");d=e.firstName,u=e.lastName}c>=0&&(s=t[c]?.trim()||void 0)}else if(1===t.length){let e=t[0];if(e.includes("@")){m.push({firstName:"",lastName:"",emails:[{value:e.trim(),label:"personal"}],phones:[]});continue}let s=(0,sI.VT)(e);d=s.firstName,u=s.lastName}else{let e=(0,sI.VT)(t[0]??"");d=e.firstName,u=e.lastName}let h=o&&n>=0&&t[n]?.trim()?[{value:t[n].trim(),label:"personal"}]:!o&&t[1]?.includes("@")?[{value:t[1].trim(),label:"personal"}]:[],x=o&&l>=0&&t[l]?.trim()?[{value:t[l].trim(),label:"mobile"}]:!o&&t[2]?.trim()?[{value:t[2].trim(),label:"mobile"}]:!o&&t[1]?.trim()&&!t[1].includes("@")?[{value:t[1].trim(),label:"mobile"}]:[];(d||u||0!==h.length||0!==x.length)&&m.push({firstName:d,lastName:u,company:s,emails:h,phones:x})}return m}async function sP(e){let s=await e.text(),t=e.name.toLowerCase();return t.endsWith(".vcf")||t.endsWith(".vcard")?sF(s):t.endsWith(".csv")?sM(s):s.includes("BEGIN:VCARD")?sF(s):sM(s)}function sB({open:e,onOpenChange:s,onOpenImport:t}){let[r,i]=(0,n.useState)(""),c=(0,P.oH)(),{bookId:o}=(0,y.D)();return(0,a.jsx)(ec.lG,{open:e,onOpenChange:s,children:(0,a.jsxs)(ec.Cf,{className:"sm:max-w-md",children:[(0,a.jsx)(ec.c7,{children:(0,a.jsx)(ec.L3,{children:"Cr\xe9er plusieurs contacts"})}),(0,a.jsxs)("div",{className:"space-y-4 py-2",children:[(0,a.jsx)("p",{className:(0,l.cn)("text-sm",N.YS),children:"Ajoutez des noms, des adresses e-mail ou les deux"}),(0,a.jsx)("textarea",{value:r,onChange:e=>i(e.target.value),placeholder:"Exemples : Andrea Fisher, weaver.blake98@gmail.com, Elisa Beckett ",className:N.Ot}),(0,a.jsxs)("p",{className:(0,l.cn)("text-xs",N.YS),children:["Vous avez un fichier CSV ou vCard ?"," ",(0,a.jsx)("button",{type:"button",className:"cursor-pointer text-primary hover:underline",onClick:()=>{s(!1),t?.()},children:"Importez les contacts."})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-3",children:[(0,a.jsx)(g.$,{variant:"ghost",onClick:()=>s(!1),className:N.Tu,children:"Non, ne rien faire"}),(0,a.jsx)(g.$,{onClick:function(){let e=function(e){let s=[],t="",a=!1;for(let n=0;n]+)>$/),a=t?t[2].trim():s.includes("@")?s:"",n=t?t[1].trim():a&&!s.includes("@")?"":s,{firstName:l,lastName:r}=(0,sI.VT)(n);return l||r||a?{firstName:l,lastName:r,emails:a?[{value:a,label:"personal"}]:[],phones:[]}:null}(e);s&&n.push(s)}return n}(r);if(0!==e.length){for(let s of e){let e={id:crypto.randomUUID(),createdAt:Date.now(),updatedAt:Date.now(),...s,firstName:s.firstName??"",lastName:s.lastName??"",emails:s.emails??[],phones:s.phones??[]};c.mutate({bookId:o,contact:(0,eg.h0)(e)})}i(""),s(!1)}},disabled:!r.trim(),className:"text-sm font-medium",children:"Cr\xe9er"})]})]})})}var sq=t(65153),sO=t(11458),sU=t(94927);function sK(e){return{full_name:`${e.firstName} ${e.lastName}`.trim()||e.emails[0]?.value||void 0,email:e.emails[0]?.value,phone:e.phones[0]?.value,org:e.company}}async function sX(e,s){let t=0,a=[];for(let n=0;n({value:e,label:"personal"})),phones:e.phones.map(e=>({value:e,label:"mobile"}))}}async function sH(){let e=await (0,sQ.l)("plugin:ulti-core|contacts_fetch");if(!e)throw Error("contacts_unavailable");return e.map(sG)}var sZ=t(10093);function sJ({open:e,onOpenChange:s}){let t=(0,n.useRef)(null),r=(0,ej.jE)(),{bookId:i}=(0,y.D)(),[c,o]=(0,n.useState)(null),[d,m]=(0,n.useState)(0),[u,h]=(0,n.useState)(null),[x,p]=(0,n.useState)(!1),[f,j]=(0,n.useState)(null);function b(e){!e&&(o(null),m(0),h(null),p(!1),j(null),t.current&&(t.current.value="")),s(e)}async function v(e){let s=e.target.files?.[0];if(s){h(null),o(s);try{let e=await sP(s);m(e.length),0===e.length&&h("Aucun contact trouv\xe9 dans ce fichier.")}catch{h("Impossible de lire ce fichier."),m(0)}}}async function w(e){if(0===e.length)return void h("Aucun contact \xe0 importer.");p(!0),h(null),j(null);try{let{created:s,failed:t}=await sX(i,e.map(sK));(0,sZ.yZ)(i),r.invalidateQueries({queryKey:["contacts",i]}),t.length>0?j(`${s} import\xe9(s), ${t.length} en \xe9chec.`):b(!1)}catch{h("L'import a \xe9chou\xe9. V\xe9rifiez le format du fichier.")}finally{p(!1)}}async function C(){if(c&&0!==d)try{let e=await sP(c);await w(e)}catch{h("L'import a \xe9chou\xe9. V\xe9rifiez le format du fichier.")}}async function k(){p(!0),h(null);try{let e=await sH();await w(e)}catch(s){let e=s instanceof Error?s.message:"device_error";h("contacts_unavailable"===e||e.includes("denied")?"Acc\xe8s aux contacts du t\xe9l\xe9phone refus\xe9.":"Impossible de lire les contacts du t\xe9l\xe9phone."),p(!1)}}return(0,a.jsx)(ec.lG,{open:e,onOpenChange:b,children:(0,a.jsxs)(ec.Cf,{className:"sm:max-w-md",children:[(0,a.jsx)(ec.c7,{children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(ec.L3,{children:"Importer des contacts"}),(0,a.jsx)(sq.A,{className:(0,l.cn)("h-5 w-5",N._w)})]})}),(0,a.jsxs)("div",{className:"space-y-4 py-2",children:[(0,a.jsxs)("p",{className:(0,l.cn)("text-sm",N.NS),children:["Pour commencer, s\xe9lectionnez un fichier.",(0,a.jsx)("br",{}),"Utilisez le format CSV ou vCard (.vcf)."]}),(0,a.jsx)(g.$,{type:"button",onClick:function(){t.current?.click()},className:N.NC,children:"S\xe9lectionner un fichier"}),(0,sW.oX)()&&(0,a.jsxs)(g.$,{type:"button",variant:"outline",onClick:()=>void k(),disabled:x,className:"w-full gap-2",children:[(0,a.jsx)(sO.A,{className:"h-4 w-4"}),"Importer depuis le t\xe9l\xe9phone"]}),(0,a.jsx)("input",{ref:t,type:"file",accept:".csv,.vcf,.vcard,text/vcard,text/csv",className:"hidden",onChange:v}),c&&d>0&&(0,a.jsxs)("p",{className:(0,l.cn)("text-sm",N.NS),children:[d," contact",d>1?"s":""," pr\xeat",d>1?"s":""," \xe0 importer depuis"," ",(0,a.jsx)("span",{className:"font-medium",children:c.name})]}),f&&(0,a.jsx)("p",{className:"text-sm text-amber-600",children:f}),u&&(0,a.jsx)("p",{className:"text-sm text-red-600",children:u}),(0,a.jsxs)("p",{className:(0,l.cn)("text-xs",N.YS),children:["Vous essayez de sauvegarder les contacts de votre mobile ?",(0,a.jsx)("br",{}),(0,a.jsx)("span",{className:"cursor-pointer text-primary",children:"Voici comment les synchroniser."})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-3",children:[(0,a.jsx)(g.$,{type:"button",variant:"ghost",onClick:()=>b(!1),className:N.Tu,children:"Non, ne rien faire"}),(0,a.jsx)(g.$,{type:"button",onClick:C,disabled:!c||0===d||x,className:"text-sm font-medium",children:x?"Importation…":"Importer"})]})]})})}var s0=t(12646);function s1(){let e=(0,r.a)(),[s,t]=(0,n.useState)("contacts"),[i,c]=(0,n.useState)(null),[o,d]=(0,n.useState)(null),[m,u]=(0,n.useState)(""),[h,x]=(0,n.useState)(!1),[p,f]=(0,n.useState)(!1),[j,b]=(0,n.useState)(!1);(0,n.useEffect)(()=>{u("")},[s,o]),(0,n.useEffect)(()=>{e?b(!1):b(!0)},[e]);let g=(0,n.useCallback)(()=>b(!1),[]),v=(0,n.useCallback)(()=>b(!0),[]),y=(0,n.useCallback)(()=>b(e=>!e),[]);function w(e){c(e),t("detail")}function C(){c(null),t("contacts")}return(0,a.jsxs)("div",{"data-contacts-app":!0,"data-contacts-panel":!0,className:(0,l.cn)("ultimail-app relative flex h-dvh max-h-dvh overflow-hidden",N.OL),children:[e&&j&&(0,a.jsx)("button",{type:"button","aria-label":"Fermer le menu",className:"absolute inset-0 z-40 bg-black/20",onClick:g}),(0,a.jsx)($,{open:j,overlay:e,onToggle:y,onClose:g,currentView:s,activeLabelId:o,onNavigate:function(s){if("import"===s){x(!0),e&&g();return}t(s),e&&g()},onHome:function(){c(null),d(null),u(""),t("contacts"),e&&g()},onCreateContact:function(){c(null),t("create"),e&&g()},onBulkCreate:()=>f(!0),onSelectLabel:function(s){d(s),t("label"),e&&g()}}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,a.jsx)(I,{searchQuery:m,onSearchChange:u,sidebarOpen:j,onOpenSidebar:v}),(0,a.jsxs)("main",{className:"min-h-0 flex-1 overflow-y-auto",children:[("contacts"===s||"frequent"===s||"label"===s)&&(0,a.jsx)(eS,{view:s,searchQuery:m,activeLabelId:o,onOpenContact:w}),"other"===s&&(0,a.jsx)(s$,{searchQuery:m}),"ignored"===s&&(0,a.jsx)(sE,{searchQuery:m}),"blocked"===s&&(0,a.jsx)(sL,{searchQuery:m}),"detail"===s&&i&&(0,a.jsx)(eq,{contactId:i,onBack:C,onEdit:function(e){c(e),t("edit")}}),"create"===s&&(0,a.jsx)(e4,{mode:"create",onBack:C,onSaved:e=>w(e)}),"edit"===s&&i&&(0,a.jsx)(e4,{mode:"edit",contactId:i,onBack:()=>w(i),onSaved:e=>w(e)}),"merge"===s&&(0,a.jsx)(sh,{}),"trash"===s&&(0,a.jsx)(sR,{})]})]}),(0,a.jsx)(sJ,{open:h,onOpenChange:x}),(0,a.jsx)(sB,{open:p,onOpenChange:f,onOpenImport:()=>x(!0)}),(0,a.jsx)(s0.H,{})]})}},70259:(e,s,t)=>{t.d(s,{k:()=>r});var a=t(4208);t(91356);var n=t(84687),l=t(58113);function r({className:e,value:s,...t}){return(0,a.jsx)(n.bL,{"data-slot":"progress",className:(0,l.cn)("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",e),...t,children:(0,a.jsx)(n.C1,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:`translateX(-${100-(s||0)}%)`}})})}},84417:(e,s,t)=>{t.d(s,{C:()=>c,z:()=>i});var a=t(4208);t(91356);var n=t(99632),l=t(12837),r=t(58113);function i({className:e,...s}){return(0,a.jsx)(n.bL,{"data-slot":"radio-group",className:(0,r.cn)("grid gap-3",e),...s})}function c({className:e,...s}){return(0,a.jsx)(n.q7,{"data-slot":"radio-group-item",className:(0,r.cn)("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 cursor-pointer rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...s,children:(0,a.jsx)(n.C1,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:(0,a.jsx)(l.A,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}},84956:(e,s,t)=>{t.d(s,{T:()=>l});var a=t(4208);t(91356);var n=t(58113);function l({className:e,...s}){return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,n.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...s})}}}]);